diff --git a/_maps/RandomRuins/JungleRuins/jungle_demon.dmm b/_maps/RandomRuins/JungleRuins/jungle_demon.dmm index adbb037af38c..523c618d2244 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_demon.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_demon.dmm @@ -515,7 +515,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/suit_storage_unit/inherit, /obj/item/tank/internals/oxygen/red, -/obj/item/clothing/suit/space/hardsuit/syndi, +/obj/item/clothing/suit/space/hardsuit/syndi/ramzi, /obj/item/clothing/mask/gas/syndicate, /turf/open/floor/plasteel/dark, /area/ruin/powered) diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_starfurycrash.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_starfurycrash.dmm index 00a0e830f8c2..bc8616028058 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_starfurycrash.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_starfurycrash.dmm @@ -637,7 +637,7 @@ /area/overmap_encounter/planetoid/cave/explored) "KT" = ( /obj/structure/safe/floor, -/obj/item/clothing/suit/space/hardsuit/syndi, +/obj/item/clothing/suit/space/hardsuit/syndi/ramzi, /obj/item/documents/syndicate, /turf/open/floor/plating{ icon_state = "panelscorched"; diff --git a/_maps/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/onehalf.dmm index d613f4bcf8f8..ed19285b586e 100644 --- a/_maps/RandomRuins/SpaceRuins/onehalf.dmm +++ b/_maps/RandomRuins/SpaceRuins/onehalf.dmm @@ -920,7 +920,7 @@ /obj/structure/safe/floor, /obj/item/tank/internals/oxygen/red, /obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/suit/space/hardsuit/syndi, +/obj/item/clothing/suit/space/hardsuit/syndi/ramzi, /obj/item/reagent_containers/food/drinks/bottle/rum, /obj/item/reagent_containers/food/drinks/bottle/rum, /obj/item/folder/syndicate/mining, diff --git a/_maps/shuttles/independent/independent_halftrack.dmm b/_maps/shuttles/independent/independent_halftrack.dmm index f82d26ffd66d..50988838c657 100644 --- a/_maps/shuttles/independent/independent_halftrack.dmm +++ b/_maps/shuttles/independent/independent_halftrack.dmm @@ -200,16 +200,16 @@ /obj/machinery/airalarm/directional/south, /obj/machinery/firealarm/directional/west, /obj/structure/closet/crate/secure/weapon, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g/beanbag, +/obj/item/ammo_box/a12g/beanbag, +/obj/item/ammo_box/a12g/beanbag, +/obj/item/ammo_box/a12g/beanbag, +/obj/item/ammo_box/a12g/beanbag, /obj/effect/turf_decal/box/red, /turf/open/floor/plasteel/dark, /area/ship/security) diff --git a/_maps/shuttles/independent/independent_mudskipper.dmm b/_maps/shuttles/independent/independent_mudskipper.dmm index 4c67eadac91e..e3ff8985e3d1 100644 --- a/_maps/shuttles/independent/independent_mudskipper.dmm +++ b/_maps/shuttles/independent/independent_mudskipper.dmm @@ -171,6 +171,10 @@ dir = 8 }, /obj/effect/turf_decal/corner/transparent/neutral, +/obj/machinery/light_switch{ + pixel_y = 23; + pixel_x = -3 + }, /turf/open/floor/plasteel/dark, /area/ship/bridge) "dQ" = ( @@ -970,7 +974,7 @@ "uW" = ( /obj/machinery/door/airlock/grunge{ name = "Bridge"; - req_one_access_txt = "7" + req_one_access_txt = "20" }, /obj/effect/turf_decal/industrial/warning, /obj/effect/turf_decal/industrial/warning{ @@ -1058,6 +1062,11 @@ /obj/structure/dresser, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 22; + pixel_y = -6 + }, /turf/open/floor/wood/walnut{ icon_state = "wood-broken7" }, diff --git a/_maps/shuttles/minutemen/minutemen_cepheus.dmm b/_maps/shuttles/minutemen/minutemen_cepheus.dmm index 9686aff53035..0a77ee2ca4ed 100644 --- a/_maps/shuttles/minutemen/minutemen_cepheus.dmm +++ b/_maps/shuttles/minutemen/minutemen_cepheus.dmm @@ -4108,15 +4108,9 @@ /obj/item/ammo_box/magazine/m45{ pixel_x = 6 }, -/obj/item/storage/box/rubbershot{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/item/ammo_box/a12g/rubbershot, /obj/item/ammo_box/magazine/cm15_mag, -/obj/item/storage/box/rubbershot{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/item/ammo_box/a12g/rubbershot, /turf/open/floor/plasteel/tech/grid, /area/ship/security) "RN" = ( diff --git a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm index dae3f0a86b96..46bd016425f1 100644 --- a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm +++ b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm @@ -300,7 +300,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/industrial/outline, -/obj/item/storage/box/lethalshot, +/obj/item/ammo_box/a12g, /obj/item/ammo_box/c10mm, /turf/open/floor/mineral/plastitanium, /area/ship/security/armory) diff --git a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm index 6c14c9503772..7914b314998c 100644 --- a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm +++ b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm @@ -3719,9 +3719,9 @@ /obj/item/ammo_casing/caseless/rocket, /obj/item/ammo_casing/caseless/rocket/hedp, /obj/item/ammo_casing/caseless/rocket/hedp, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/lethalshot, -/obj/item/storage/box/lethalshot, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g, +/obj/item/ammo_box/a12g, /obj/item/gun/ballistic/rocketlauncher, /obj/item/gun/ballistic/automatic/ebr, /obj/item/gun/ballistic/automatic/ebr{ diff --git a/code/datums/mapgen/planetary/BeachGenerator.dm b/code/datums/mapgen/planetary/BeachGenerator.dm index ca1d70b929fa..7999d76f3a11 100644 --- a/code/datums/mapgen/planetary/BeachGenerator.dm +++ b/code/datums/mapgen/planetary/BeachGenerator.dm @@ -119,7 +119,7 @@ /mob/living/simple_animal/butterfly = 4, /mob/living/simple_animal/hostile/retaliate/poison/snake = 5, - /mob/living/simple_animal/hostile/poison/bees/toxin = 3, + /mob/living/simple_animal/hostile/poison/bees = 3, ) mob_spawn_chance = 2 feature_spawn_chance = 0.1 diff --git a/code/datums/mapgen/planetary/JungleGenerator.dm b/code/datums/mapgen/planetary/JungleGenerator.dm index dd5635d4841f..45ae4a7120cc 100644 --- a/code/datums/mapgen/planetary/JungleGenerator.dm +++ b/code/datums/mapgen/planetary/JungleGenerator.dm @@ -228,7 +228,7 @@ ) mob_spawn_chance = 1 mob_spawn_list = list( - /mob/living/simple_animal/hostile/poison/bees/toxin = 1, + /mob/living/simple_animal/hostile/poison/bees = 1, /mob/living/simple_animal/hostile/mushroom = 1, /mob/living/simple_animal/pet/dog/corgi/capybara = 1 ) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index dfe049f83953..2335ba7254f0 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -1512,6 +1512,15 @@ /obj/item/stock_parts/capacitor = 2 ) +/obj/item/circuitboard/machine/printer + name = "Poster Printer (Machine Board)" + build_path = /obj/machinery/printer + req_components = list( + /obj/item/stock_parts/scanning_module = 2, + /obj/item/stock_parts/micro_laser = 1, + /obj/item/stock_parts/manipulator = 2, + ) + /obj/item/circuitboard/machine/coffeemaker name = "Modello 3 Coffeemaker" build_path = /obj/machinery/coffeemaker diff --git a/code/game/objects/structures/printer.dm b/code/game/objects/structures/printer.dm new file mode 100644 index 000000000000..c4c1abea9cf7 --- /dev/null +++ b/code/game/objects/structures/printer.dm @@ -0,0 +1,185 @@ +/obj/machinery/printer + name = "poster printer" + desc = "Used to print out various posters using toner cartridges." + icon = 'icons/obj/printer.dmi' + icon_state = "printer" + density = TRUE + power_channel = AREA_USAGE_EQUIP + max_integrity = 100 + pass_flags = PASSTABLE + circuit = /obj/item/circuitboard/machine/printer + var/busy = FALSE + var/datum/weakref/loaded_item_ref + var/datum/weakref/printed_poster + var/obj/item/toner/toner_cartridge + var/poster_type + +/obj/machinery/printer/Initialize() + . = ..() + toner_cartridge = new(src) + +/obj/machinery/printer/update_overlays() + . = ..() + if(panel_open) + . += mutable_appearance(icon, "printer_panel") + var/obj/item/loaded = loaded_item_ref?.resolve() + var/obj/item/poster = printed_poster?.resolve() + if(loaded) + . += mutable_appearance(icon, "contain_paper") + if(poster) + . += mutable_appearance(icon, "contain_poster") + +/obj/machinery/printer/screwdriver_act(mob/living/user, obj/item/screwdriver) + . = ..() + default_deconstruction_screwdriver(user, icon_state, icon_state, screwdriver) + update_icon() + return TRUE + +/obj/machinery/printer/Destroy() + QDEL_NULL(toner_cartridge) + QDEL_NULL(loaded_item_ref) + QDEL_NULL(printed_poster) + return ..() + +/obj/machinery/printer/attackby(obj/item/item, mob/user, params) + if(panel_open) + if(is_wire_tool(item)) + wires.interact(user) + return + if(can_load_item(item)) + if(!loaded_item_ref?.resolve()) + loaded_item_ref = WEAKREF(item) + item.forceMove(src) + update_icon() + return + else if(istype(item, /obj/item/toner)) + if(toner_cartridge) + to_chat(user, "[src] already has a toner cartridge inserted. Remove that one first.") + return + item.forceMove(src) + toner_cartridge = item + to_chat(user, "You insert [item] into [src].") + else return ..() + +/obj/machinery/printer/proc/can_load_item(obj/item/item) + if(busy) + return FALSE //no loading the printer if there's already a print job happening! + if(!istype(item, /obj/item/paper)) + return FALSE + if(!istype(item, /obj/item/stack)) + return TRUE + var/obj/item/stack/stack_item = item + return stack_item.amount == 1 + +/obj/machinery/printer/ui_data(mob/user) + var/list/data = list() + data["has_paper"] = !!loaded_item_ref?.resolve() + data["has_poster"] = !!printed_poster?.resolve() + + if(toner_cartridge) + data["has_toner"] = TRUE + data["current_toner"] = toner_cartridge.charges + data["max_toner"] = toner_cartridge.max_charges + data["has_enough_toner"] = has_enough_toner() + else + data["has_toner"] = FALSE + data["has_enough_toner"] = FALSE + + return data + +/obj/machinery/printer/proc/has_enough_toner() + return toner_cartridge.charges >= 1 + +/obj/machinery/printer/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "PosterPrinter") + ui.open() + +/obj/machinery/printer/ui_act(action, list/params) + . = ..() + if(.) + return + var/obj/item/poster = printed_poster?.resolve() + var/obj/item/loaded = loaded_item_ref?.resolve() + switch(action) + if("remove") + if(!loaded) + return + loaded.forceMove(drop_location()) + loaded_item_ref = null + update_icon() + return TRUE + if("remove_poster") + if(!poster) + to_chat(usr, span_warning("No poster! waddaheeeeell")) + return + if(busy) + to_chat(usr, span_warning("[src] is still printing your poster! Please wait until it is finished.")) + return FALSE + poster.forceMove(drop_location()) + printed_poster = null + update_icon() + return TRUE + if("choose_type") + poster_type = params["poster_type"] + return TRUE + if("print") + if(busy) + to_chat(usr, span_warning("[src] is currently busy printing a poster. Please wait until it is finished.")) + return FALSE + if(toner_cartridge.charges - 1 < 0) + to_chat(usr, span_warning("There is not enough toner in [src] to print the poster, please replace the cartridge.")) + return FALSE + if(!loaded) + to_chat(usr, span_warning("[src] has no paper in it! Please insert a sheet of paper.")) + return FALSE + if(!poster_type) + to_chat(usr, span_warning("[src] has no poster type selected! Please select a type first!")) + return FALSE + if(poster) + to_chat(usr, span_warning("[src] ejects its current poster before printing a new one.")) + poster.forceMove(drop_location()) + printed_poster = null + update_icon() + print_poster() + return TRUE + if("remove_toner") + if(issilicon(usr) || (ishuman(usr) && !usr.put_in_hands(toner_cartridge))) + toner_cartridge.forceMove(drop_location()) + toner_cartridge = null + return TRUE + +/obj/machinery/printer/proc/print_poster() + busy = TRUE + loaded_item_ref = null + playsound(src, 'sound/items/poster_being_created.ogg', 20, FALSE) + toner_cartridge.charges -= 1 + icon_state = "print" + var/mutable_appearance/overlay = mutable_appearance(icon, "print_poster") + overlays += overlay + update_icon() + addtimer(CALLBACK(src, PROC_REF(print_complete), overlay), 2.6 SECONDS) + +/obj/machinery/printer/proc/print_complete(mutable_appearance/remove_overlay) + icon_state = "printer" + overlays -= remove_overlay + switch(poster_type) + if("Syndicate") + var/obj/item/poster/random_contraband/poster = new() + printed_poster = WEAKREF(poster) + if("SolGov") + var/obj/item/poster/random_solgov/poster = new() + printed_poster = WEAKREF(poster) + if("Nanotrasen") + var/obj/item/poster/random_official/poster = new() + printed_poster = WEAKREF(poster) + if("RILENA") + var/obj/item/poster/random_rilena/poster = new() + printed_poster = WEAKREF(poster) + if("Nanotrasen (Retro)") + var/obj/item/poster/random_retro/poster = new() + printed_poster = WEAKREF(poster) + update_icon() + busy = FALSE + poster_type = null diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index aa153b233c46..517a51982e7f 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -423,8 +423,8 @@ //Ramzi Syndie suit /obj/item/clothing/head/helmet/space/hardsuit/syndi/ramzi name = "rusted-red hardsuit helmet" - desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Gorlex Marauders." - alt_desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in combat mode. Manufactured by Gorlex Marauders." + desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Ramzi Clique." + alt_desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in combat mode. Manufactured by Ramzi Clique." icon_state = "hardsuit1-ramzi" item_state = "hardsuit1-ramzi" hardsuit_type = "ramzi" @@ -432,8 +432,8 @@ /obj/item/clothing/suit/space/hardsuit/syndi/ramzi name = "rusted-red hardsuit" - desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Gorlex Marauders." - alt_desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in combat mode. Manufactured by Gorlex Marauders." + desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Ramzi Clique." + alt_desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in combat mode. Manufactured by Ramzi Clique." icon_state = "hardsuit1-ramzi" item_state = "hardsuit1-ramzi" hardsuit_type = "ramzi" @@ -452,7 +452,6 @@ icon_state = "hardsuit1-sbg" item_state = "hardsuit1-sbg" hardsuit_type = "sbg" - armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90) /obj/item/clothing/suit/space/hardsuit/syndi/sbg name = "beige-red hardsuit" @@ -464,10 +463,6 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/sbg lightweight = 1 jetpack = null - armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90) - combat_slowdown = 0 - jetpack = null - //Hardliner Syndie suit /obj/item/clothing/head/helmet/space/hardsuit/syndi/hl @@ -477,7 +472,6 @@ icon_state = "hardsuit1-hl" item_state = "hardsuit1-hl" hardsuit_type = "hl" - armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90) /obj/item/clothing/suit/space/hardsuit/syndi/hl name = "white-red hardsuit" @@ -489,9 +483,6 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/hl lightweight = 1 jetpack = null - armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90) - combat_slowdown = 0 - jetpack = null //Elite Syndie suit @@ -530,28 +521,6 @@ /obj/item/clothing/suit/space/hardsuit/syndi/elite/debug helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/debug -//The Owl Hardsuit -/obj/item/clothing/head/helmet/space/hardsuit/syndi/owl - name = "owl hardsuit helmet" - desc = "A dual-mode advanced helmet designed for any crime-fighting situation. It is in travel mode." - alt_desc = "A dual-mode advanced helmet designed for any crime-fighting situation. It is in combat mode." - icon_state = "hardsuit0-owl" - item_state = "s_helmet" - hardsuit_type = "owl" - visor_flags_inv = 0 - visor_flags = 0 - on = FALSE - full_retraction = TRUE - -/obj/item/clothing/suit/space/hardsuit/syndi/owl - name = "owl hardsuit" - desc = "A dual-mode advanced hardsuit designed for any crime-fighting situation. It is in travel mode." - alt_desc = "A dual-mode advanced hardsuit designed for any crime-fighting situation. It is in combat mode." - icon_state = "hardsuit1-owl" - item_state = "s_suit" - hardsuit_type = "owl" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl - //Cybersun Hardsuit /obj/item/clothing/suit/space/hardsuit/syndi/cybersun name = "neutron-star combat hardsuit" diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index c8265205cac5..71de02b3ca1c 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -341,7 +341,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += "