diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index ccab5ad61135a..1b3a75680d870 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -148,8 +148,7 @@ /turf/open/floor/wood, /area/ruin/powered/beach) "aE" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder, +/obj/machinery/griddle, /turf/open/floor/wood, /area/ruin/powered/beach) "aF" = ( @@ -160,13 +159,11 @@ /turf/open/floor/wood, /area/ruin/powered/beach) "aH" = ( -/obj/structure/table, /obj/machinery/light{ dir = 1 }, -/obj/item/book/manual/wiki/barman_recipes, -/obj/item/reagent_containers/food/drinks/shaker, -/obj/item/reagent_containers/glass/rag, +/obj/structure/table, +/obj/machinery/reagentgrinder, /turf/open/floor/wood, /area/ruin/powered/beach) "aI" = ( @@ -239,6 +236,7 @@ /area/ruin/powered/beach) "aX" = ( /obj/structure/closet/secure_closet/freezer/meat/open, +/obj/item/reagent_containers/food/condiment/enzyme, /turf/open/floor/wood, /area/ruin/powered/beach) "aY" = ( @@ -592,6 +590,13 @@ /obj/effect/turf_decal/sand, /turf/open/floor/pod/dark, /area/ruin/powered/beach) +"NQ" = ( +/obj/structure/table/wood, +/obj/item/book/manual/wiki/barman_recipes, +/obj/item/reagent_containers/food/drinks/shaker, +/obj/item/reagent_containers/glass/rag, +/turf/open/floor/wood, +/area/ruin/powered/beach) "QS" = ( /obj/effect/turf_decal/sand, /obj/machinery/light{ @@ -1043,7 +1048,7 @@ at ax hY aC -aP +NQ aW aK sy diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 61e05c1584277..4615925df47f9 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -17,23 +17,6 @@ "aai" = ( /turf/closed/wall/r_wall, /area/security/prison) -"aaq" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/iron/dark, -/area/storage/tech) "aaF" = ( /obj/machinery/light/small{ dir = 1 @@ -182,13 +165,6 @@ /obj/item/stack/cable_coil/random, /turf/open/space, /area/space/nearstation) -"acC" = ( -/obj/structure/chair/fancy/sofa/old/right{ - color = "#742925" - }, -/obj/effect/landmark/start/detective, -/turf/open/floor/wood, -/area/security/detectives_office) "acO" = ( /obj/structure/lattice/catwalk/over, /obj/structure/cable/yellow{ @@ -2096,30 +2072,6 @@ }, /turf/open/floor/iron, /area/storage/primary) -"aDc" = ( -/obj/item/stack/sheet/glass, -/obj/structure/table/glass, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/item/stock_parts/matter_bin, -/obj/item/stock_parts/matter_bin, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/stock_parts/scanning_module{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/stock_parts/scanning_module, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/science/lab) "aDg" = ( /obj/machinery/biogenerator, /turf/open/floor/iron, @@ -4882,10 +4834,6 @@ dir = 8 }, /area/engine/atmos) -"aZm" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/iron, -/area/hallway/secondary/exit) "aZp" = ( /obj/structure/rack, /obj/item/electronics/apc, @@ -7750,6 +7698,13 @@ /obj/effect/turf_decal/tile/blue/fourcorners/contrasted, /turf/open/floor/iron, /area/hallway/primary/central) +"bwm" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/iron, +/area/science/mixing) "bww" = ( /obj/structure/cable/yellow{ icon_state = "0-2" @@ -8797,6 +8752,21 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) +"bFP" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port) "bFQ" = ( /obj/structure/sign/warning/nosmoking{ pixel_x = -32 @@ -14255,16 +14225,6 @@ /obj/machinery/cell_charger, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"clB" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/obj/machinery/camera/autoname{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/solars/port/aft) "clE" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -16410,6 +16370,12 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"cCn" = ( +/obj/structure/table/reinforced, +/obj/structure/displaycase/forsale/kitchen, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/bar) "cCo" = ( /obj/machinery/gateway{ dir = 6 @@ -18040,6 +18006,22 @@ /obj/item/stack/sheet/mineral/plasma/five, /turf/open/floor/iron, /area/quartermaster/exploration_dock) +"cRw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/east, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8; + name = "output gas connector port" + }, +/obj/machinery/portable_atmospherics/canister, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "cRG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/structure/cable/yellow{ @@ -18689,22 +18671,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/primary/central) -"dgZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/security/checkpoint/auxiliary) "dhN" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -20090,16 +20056,6 @@ }, /turf/open/floor/iron/dark, /area/security/execution/transfer) -"dKy" = ( -/obj/structure/closet/secure_closet/hop, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/wood, -/area/crew_quarters/heads/hop) "dKA" = ( /obj/effect/turf_decal/tile/dark_blue{ dir = 8 @@ -20501,24 +20457,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/quartermaster/storage) -"dSG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8; - name = "output gas connector port" - }, -/obj/machinery/portable_atmospherics/canister, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "dSJ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 @@ -21290,6 +21228,15 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/hallway/primary/aft) +"elv" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/obj/effect/turf_decal/trimline/dark_blue/filled/line, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/dark, +/area/bridge) "elC" = ( /obj/structure/chair/wood/normal{ dir = 1 @@ -21406,6 +21353,16 @@ /obj/machinery/light/small, /turf/open/floor/carpet, /area/vacant_room/office) +"ent" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/crew_quarters/heads/cmo) "enz" = ( /turf/open/floor/iron/techmaint, /area/crew_quarters/fitness) @@ -21742,13 +21699,6 @@ }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai_upload) -"etR" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/aisat/hallway) "etZ" = ( /obj/structure/table/glass, /obj/item/storage/belt/medical, @@ -21765,6 +21715,18 @@ /obj/machinery/gateway/centerstation, /turf/open/floor/engine, /area/gateway) +"euk" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/xenoartifact_console{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/science/misc_lab) "euG" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -22285,6 +22247,10 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/quartermaster/exploration_prep) +"eEZ" = ( +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/chapel/main) "eFB" = ( /obj/machinery/computer/station_alert, /obj/effect/turf_decal/tile/yellow/fourcorners/contrasted, @@ -22818,15 +22784,6 @@ /obj/effect/turf_decal/stripes/closeup, /turf/open/floor/iron/techmaint, /area/security/prison) -"eQJ" = ( -/obj/structure/noticeboard{ - pixel_y = 26 - }, -/obj/structure/chair/fancy/sofa/old/left{ - color = "#742925" - }, -/turf/open/floor/wood, -/area/security/detectives_office) "eRh" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -22917,6 +22874,14 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/quartermaster/miningdock) +"eSr" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) "eSA" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/condiment/flour, @@ -23563,12 +23528,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/aft) -"fhS" = ( -/obj/structure/chair/fancy/comfy{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/hallway/secondary/entry) "fhT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 @@ -24134,19 +24093,22 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/white, /area/medical/virology) -"ftT" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 32 +"fub" = ( +/obj/structure/closet/secure_closet/security/med, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/obj/machinery/light{ - dir = 1 +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 }, -/obj/effect/turf_decal/siding/thinplating_new, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 +/obj/machinery/camera/autoname{ + dir = 9 }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, /turf/open/floor/iron, -/area/crew_quarters/dorms) +/area/security/checkpoint/medical) "ful" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -24463,6 +24425,23 @@ }, /turf/open/floor/engine/o2, /area/engine/atmos) +"fCz" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "barShutters"; + name = "bar shutters"; + pixel_x = 4; + pixel_y = 28 + }, +/obj/machinery/light_switch{ + pixel_x = -6; + pixel_y = 26 + }, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/bar) "fCK" = ( /obj/machinery/power/solar{ id = "auxsolareast"; @@ -25124,6 +25103,14 @@ }, /turf/open/floor/iron/dark, /area/tcommsat/computer) +"fTY" = ( +/obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/crew_quarters/dorms) "fUp" = ( /obj/machinery/light{ dir = 1 @@ -25495,12 +25482,6 @@ }, /turf/open/floor/carpet/grimy, /area/chapel/office) -"gby" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/iron, -/area/quartermaster/office) "gbR" = ( /obj/machinery/holopad, /turf/open/floor/iron/white, @@ -25896,14 +25877,6 @@ /obj/effect/turf_decal/stripes/closeup, /turf/open/floor/prison, /area/security/prison) -"gkV" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/turf/open/floor/iron/dark, -/area/security/execution/transfer) "glg" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -27078,16 +27051,6 @@ }, /turf/open/floor/iron, /area/construction/mining/aux_base) -"gNO" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/cable/yellow, -/turf/open/floor/iron/white/corner, -/area/hallway/secondary/entry) "gOf" = ( /obj/effect/landmark/start/station_engineer, /obj/effect/turf_decal/stripes/corner{ @@ -27533,12 +27496,6 @@ /obj/effect/turf_decal/bot/left, /turf/open/floor/iron/dark, /area/security/execution/transfer) -"hbt" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = -30 - }, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/bar) "hbA" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -28468,23 +28425,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) -"hzw" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/port) "hzA" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 @@ -29601,6 +29541,10 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"hWn" = ( +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/bar) "hWw" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -29754,6 +29698,20 @@ /obj/machinery/ecto_sniffer, /turf/open/floor/iron/white, /area/science/robotics/lab) +"hYz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/security/checkpoint/auxiliary) "hYG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -30218,6 +30176,12 @@ /obj/item/stack/sheet/iron/fifty, /turf/open/floor/iron/dark, /area/engine/engineering) +"ijd" = ( +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/white/side{ + dir = 9 + }, +/area/science/research) "ijs" = ( /obj/machinery/door/airlock/public/glass{ name = "Chapel" @@ -31450,6 +31414,16 @@ }, /turf/open/floor/iron/dark, /area/bridge) +"iKr" = ( +/obj/machinery/light, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/item/book/manual/wiki/sopengineering, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron, +/area/engine/break_room) "iKv" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -31488,20 +31462,6 @@ /obj/effect/spawner/structure/window/reinforced/prison, /turf/open/floor/plating, /area/security/prison) -"iLs" = ( -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/xenoartifact_console{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/science/misc_lab) "iLQ" = ( /obj/machinery/airalarm{ dir = 4; @@ -31563,6 +31523,17 @@ }, /turf/open/floor/wood, /area/vacant_room/office) +"iNJ" = ( +/obj/structure/rack, +/obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted, +/obj/item/storage/firstaid/regular, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/obj/machinery/light_switch{ + pixel_y = -26 + }, +/turf/open/floor/iron/techmaint, +/area/gateway) "iNO" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; @@ -31873,6 +31844,17 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) +"iUu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/auto_name/east, +/turf/open/floor/iron, +/area/crew_quarters/locker) "iVg" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 @@ -32045,15 +32027,6 @@ }, /turf/open/floor/iron, /area/crew_quarters/fitness) -"iXX" = ( -/obj/structure/closet, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/plating, -/area/maintenance/disposal) "iXY" = ( /obj/structure/chair/office{ dir = 1 @@ -32217,6 +32190,12 @@ }, /turf/open/floor/iron, /area/hallway/secondary/service) +"jbk" = ( +/obj/machinery/telecomms/receiver/preset_exploration, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/quartermaster/exploration_dock) "jbn" = ( /obj/machinery/light_switch{ pixel_x = -28 @@ -36788,15 +36767,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"laq" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/iron, -/area/science/mixing) "lbh" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall/r_wall, @@ -37090,6 +37060,11 @@ }, /turf/open/floor/iron, /area/engine/atmos) +"liE" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/aisat/hallway) "liI" = ( /obj/machinery/button/door{ id = "ViroA"; @@ -37204,17 +37179,6 @@ /obj/machinery/atmospherics/pipe/layer_manifold, /turf/open/floor/plating, /area/hallway/secondary/entry) -"ljV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/cable/yellow, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/turf/open/floor/iron/freezer, -/area/crew_quarters/toilet/locker) "ljZ" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -38640,6 +38604,12 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) +"lPG" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/security/execution/transfer) "lPH" = ( /obj/structure/dresser, /turf/open/floor/carpet/orange, @@ -40596,24 +40566,6 @@ }, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) -"mOL" = ( -/obj/structure/closet/secure_closet/security/med, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/obj/machinery/camera/autoname{ - dir = 9 - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/turf/open/floor/iron, -/area/security/checkpoint/medical) "mOX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 @@ -41300,6 +41252,14 @@ }, /turf/open/floor/iron/white, /area/science/mixing) +"nbG" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/chair, +/turf/open/floor/iron/dark, +/area/ai_monitored/turret_protected/aisat_interior) "nbZ" = ( /obj/effect/turf_decal/tile/dark_blue, /turf/open/floor/iron, @@ -41928,27 +41888,6 @@ }, /turf/open/floor/prison/dark, /area/security/execution/transfer) -"npW" = ( -/obj/machinery/disposal/bin, -/obj/structure/sign/plaques/deempisi{ - pixel_x = -28; - pixel_y = -4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "barShutters"; - name = "bar shutters"; - pixel_x = 4; - pixel_y = 28 - }, -/obj/machinery/light_switch{ - pixel_x = -6; - pixel_y = 26 - }, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/bar) "nqq" = ( /obj/machinery/camera/motion{ c_tag = "AI Upload Chamber - External"; @@ -42368,6 +42307,15 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/science/mixing) +"nyq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/cable/yellow, +/obj/machinery/power/apc/auto_name/east, +/turf/open/floor/iron/freezer, +/area/crew_quarters/toilet/locker) "nyw" = ( /obj/structure/cable/yellow{ icon_state = "0-8" @@ -43667,6 +43615,16 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) +"obc" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/iron/dark, +/area/hallway/secondary/command) "obi" = ( /obj/structure/sign/poster/official/random{ pixel_y = -32 @@ -44033,6 +43991,21 @@ /obj/item/reagent_containers/glass/rag, /turf/open/floor/iron/cafeteria_red, /area/crew_quarters/bar) +"ojg" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/obj/machinery/power/apc/auto_name/east, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/iron/dark, +/area/storage/tech) "ojl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -45215,14 +45188,6 @@ }, /turf/open/floor/iron, /area/engine/engineering) -"oRr" = ( -/obj/machinery/telecomms/receiver/preset_exploration, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/quartermaster/exploration_dock) "oRK" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 @@ -45563,6 +45528,28 @@ }, /turf/open/floor/carpet, /area/quartermaster/exploration_prep) +"pam" = ( +/obj/item/stack/sheet/glass, +/obj/structure/table/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/stock_parts/scanning_module{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/stock_parts/scanning_module, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white, +/area/science/lab) "pan" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/northleft{ @@ -46067,19 +46054,6 @@ }, /turf/open/floor/iron/white, /area/medical/virology) -"ppQ" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted, -/obj/item/storage/firstaid/regular, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/obj/machinery/light_switch{ - pixel_y = -26 - }, -/turf/open/floor/iron/techmaint, -/area/gateway) "pqp" = ( /obj/machinery/camera/autoname{ dir = 8 @@ -46587,19 +46561,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"pAX" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/power/port_gen/pacman, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat/service) "pAZ" = ( /obj/structure/table, /obj/item/surgicaldrill, @@ -47352,6 +47313,13 @@ }, /turf/open/floor/iron, /area/crew_quarters/locker) +"pQd" = ( +/obj/structure/closet, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plating, +/area/maintenance/disposal) "pQr" = ( /obj/structure/cable/yellow{ icon_state = "0-8" @@ -49089,13 +49057,6 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron, /area/vacant_room/commissary) -"qIB" = ( -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/bar) "qJm" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -49757,6 +49718,13 @@ }, /turf/open/floor/iron, /area/quartermaster/sorting) +"qYp" = ( +/obj/machinery/light/small, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/bar) "qYK" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -50633,10 +50601,6 @@ /obj/item/reagent_containers/food/drinks/flask/det, /turf/open/floor/carpet/green, /area/security/detectives_office) -"rpr" = ( -/obj/machinery/light/small, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/bar) "rpN" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 @@ -52430,6 +52394,17 @@ }, /turf/open/floor/carpet/red, /area/crew_quarters/dorms) +"scs" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/port_gen/pacman, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/service) "scX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -53241,6 +53216,18 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) +"suK" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/structure/noticeboard{ + pixel_y = 26 + }, +/obj/structure/chair/fancy/sofa/old/left{ + color = "#742925" + }, +/turf/open/floor/wood, +/area/security/detectives_office) "suU" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -54129,6 +54116,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"sKt" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/cable/yellow, +/turf/open/floor/iron/white/corner, +/area/hallway/secondary/entry) "sKx" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -54159,6 +54154,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/security/main) +"sLr" = ( +/obj/structure/chair/fancy/sofa/old/right{ + color = "#742925" + }, +/obj/effect/landmark/start/detective, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood, +/area/security/detectives_office) "sMt" = ( /obj/structure/sink{ dir = 8; @@ -54206,16 +54209,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/hallway/primary/central) -"sNi" = ( -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/chair, -/turf/open/floor/iron/dark, -/area/ai_monitored/turret_protected/aisat_interior) "sNm" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/carpet/green, @@ -55548,6 +55541,10 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/iron, /area/hallway/primary/starboard) +"trd" = ( +/obj/machinery/digital_clock, +/turf/closed/wall, +/area/hallway/secondary/exit) "trl" = ( /obj/structure/table, /obj/machinery/camera/autoname{ @@ -56389,18 +56386,6 @@ }, /turf/open/floor/iron/techmaint, /area/storage/tech) -"tEM" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/iron/dark, -/area/hallway/secondary/command) "tFe" = ( /obj/machinery/door/firedoor, /turf/open/floor/iron, @@ -58328,6 +58313,14 @@ }, /turf/open/floor/iron, /area/quartermaster/storage) +"uyq" = ( +/obj/structure/closet/secure_closet/hop, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/hop) "uyT" = ( /obj/structure/chair/fancy, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ @@ -58438,13 +58431,6 @@ }, /turf/open/floor/iron, /area/security/checkpoint/supply) -"uBy" = ( -/obj/effect/spawner/randomarcade{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/turf/open/floor/prison, -/area/security/prison) "uCp" = ( /obj/structure/table, /obj/structure/window/reinforced{ @@ -58573,6 +58559,12 @@ }, /turf/open/floor/iron/white, /area/medical/virology) +"uGy" = ( +/obj/structure/sign/plaques/deempisi{ + pixel_y = -28 + }, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/bar) "uGA" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -59302,6 +59294,13 @@ }, /turf/open/floor/iron, /area/hallway/primary/fore) +"uZe" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/quartermaster/office) "uZo" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -60134,6 +60133,16 @@ }, /turf/open/floor/iron, /area/crew_quarters/theatre) +"vwU" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/effect/turf_decal/siding/thinplating_new, +/turf/open/floor/iron, +/area/crew_quarters/dorms) "vwZ" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -60157,18 +60166,6 @@ /obj/item/shovel/spade, /turf/open/floor/iron, /area/hallway/secondary/service) -"vxz" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/crew_quarters/heads/cmo) "vyz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 @@ -60214,6 +60211,20 @@ }, /turf/open/floor/iron/white, /area/medical/cryo) +"vAe" = ( +/obj/item/radio/intercom{ + pixel_y = 20 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/vending/medical{ + pixel_x = -2 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/white, +/area/medical/medbay/lobby) "vAh" = ( /obj/machinery/door/window{ name = "SMES Chamber"; @@ -60227,6 +60238,13 @@ }, /turf/open/floor/iron/dark, /area/engine/gravity_generator) +"vAE" = ( +/obj/effect/spawner/randomarcade{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/prison, +/area/security/prison) "vBe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 @@ -61145,19 +61163,6 @@ }, /turf/open/floor/iron/grid/steel, /area/ai_monitored/turret_protected/ai_upload) -"vVO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/turf/open/floor/iron, -/area/crew_quarters/locker) "vWb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/structure/cable/yellow{ @@ -61721,15 +61726,6 @@ }, /turf/open/floor/iron/dark, /area/security/courtroom) -"wjg" = ( -/obj/machinery/light, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/clothing/glasses/meson, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/item/book/manual/wiki/sopengineering, -/turf/open/floor/iron, -/area/engine/break_room) "wji" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -61959,19 +61955,6 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) -"wnP" = ( -/obj/item/radio/intercom{ - pixel_y = 20 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/vending/medical{ - pixel_x = -2 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron/white, -/area/medical/medbay/lobby) "wnQ" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -64228,11 +64211,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/quartermaster/exploration_prep) -"xpH" = ( -/obj/structure/table/reinforced, -/obj/structure/displaycase/forsale/kitchen, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/bar) "xqa" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 @@ -65505,6 +65483,13 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) +"xRB" = ( +/obj/structure/chair/fancy/comfy{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/carpet, +/area/hallway/secondary/entry) "xRN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -78994,7 +78979,7 @@ azD azD azD lMl -gNO +sKt aFG mQN ayl @@ -80542,7 +80527,7 @@ aHy ayl loh nBU -fhS +xRB vJi nBU jPx @@ -80792,7 +80777,7 @@ amC alU pSV hua -dgZ +hYz fLd qvR aBI @@ -80818,7 +80803,7 @@ beO beZ bje bkC -iXX +pQd beO aaa aaa @@ -82351,7 +82336,7 @@ vwZ hgc hNY vlj -hzw +bFP vlj nrz ngR @@ -83635,7 +83620,7 @@ aQN aQN xIt vmV -ljV +nyq jAB jzB fkM @@ -85950,7 +85935,7 @@ aQW aQW aQN ugj -vVO +iUu wuZ rqX xVS @@ -86000,7 +85985,7 @@ bHE cfw cgB ewu -clB +eSr cfw aag aag @@ -90071,7 +90056,7 @@ cNG ebc xxk aZK -gby +uZe bbR bqt cBq @@ -92056,7 +92041,7 @@ pLE sNN vZK kNn -gkV +lPG acZ cEo aHK @@ -92341,7 +92326,7 @@ pNh mBn cPf kKO -uBy +vAE acd ivE bpn @@ -93662,7 +93647,7 @@ bjz hEA bmr rPD -dKy +uyq bmo olu bmo @@ -94197,7 +94182,7 @@ byU bCs tpu qWt -aaq +ojg gGm iIx vDe @@ -94464,7 +94449,7 @@ vZz bJu osw cmX -ppQ +iNJ ayG bCq bCq @@ -94941,7 +94926,7 @@ uHS vSj grf lCw -nmS +elv aTQ ifm vGV @@ -95461,7 +95446,7 @@ gef eXz cMU lDI -tEM +obc ifH hCs mmm @@ -97474,7 +97459,7 @@ iiK flQ ikG aiX -acC +sLr bAJ vkO kzV @@ -97731,7 +97716,7 @@ aiX aiX aiX aiX -eQJ +suK nRu fPz gzH @@ -97818,7 +97803,7 @@ caA nCY sJB bZw -wjg +iKr ctR ccn fWY @@ -98261,7 +98246,7 @@ arf fLe hqH arf -sIK +fTY sbv kSu ooz @@ -99032,7 +99017,7 @@ arf arf arf arf -ftT +vwU sbv eOe fqi @@ -102647,13 +102632,13 @@ aJC aJC aJC aJC -xpH +cCn gEU sAL mvz mvz ikR -hbt +hWn aJC aYV iGe @@ -102903,14 +102888,14 @@ aKQ aLU aNu aJC -npW +fCz fRF fRF dWa fRF lLK jOB -qIB +uGy aJC aYV cuf @@ -103167,7 +103152,7 @@ fRF fRF tAG fRF -rpr +qYp aJC aYV cuf @@ -103243,7 +103228,7 @@ cua cua omb gWx -sNi +nbG qwN cuA cuA @@ -103256,7 +103241,7 @@ rrE jfI rrE hNs -etR +liE jfI rrE rrE @@ -103430,7 +103415,7 @@ aYV cuf nEu uwZ -wnP +vAe qjW qjW qjW @@ -103695,7 +103680,7 @@ bok btZ pVe xaA -mOL +fub btZ eJE ucP @@ -104276,7 +104261,7 @@ cvc cvc qLr xXU -pAX +scs cvc cvk cvk @@ -105024,7 +105009,7 @@ cfj qwH cmZ vOh -dSG +cRw fGe fkS cqs @@ -107315,7 +107300,7 @@ pnv hZm lPA pWy -vxz +ent dPm bWj lwA @@ -112154,7 +112139,7 @@ daL nGk ruS aFw -aFz +eEZ aFz aRR aTe @@ -112692,7 +112677,7 @@ bpX kUF brm kfz -bBD +ijd bvf bBD bBD @@ -114485,7 +114470,7 @@ bhF xNj fHf dpp -aDc +pam wRV bpO eHS @@ -114515,7 +114500,7 @@ bUo bNq bEC pKk -iLs +euk lRv bSc bTl @@ -115527,7 +115512,7 @@ fZi kch uUy uUy -laq +bwm glg xxW bKa @@ -115757,9 +115742,9 @@ aPq ffm aPs aPq -aZm -aMZ -aZm +aNa +trd +aNa aPq ecE scX @@ -118858,7 +118843,7 @@ aaa xkR rKw eQc -oRr +jbk gQd wOv pqr diff --git a/_maps/map_files/CorgStation/CorgStation.dmm b/_maps/map_files/CorgStation/CorgStation.dmm index ea6161c73c61c..3c7715cd8a3bd 100644 --- a/_maps/map_files/CorgStation/CorgStation.dmm +++ b/_maps/map_files/CorgStation/CorgStation.dmm @@ -5065,13 +5065,6 @@ }, /turf/open/floor/iron/white, /area/science/xenobiology) -"boO" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/crew_quarters/bar) "bpn" = ( /obj/machinery/atmospherics/pipe/simple/general/hidden, /obj/effect/turf_decal/tile/neutral/opposingcorners, @@ -10660,6 +10653,14 @@ }, /turf/open/floor/iron/dark, /area/engine/engine_room) +"djm" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/engine/engineering) "djA" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -13948,6 +13949,16 @@ /obj/machinery/advanced_airlock_controller/directional/east, /turf/open/floor/plating, /area/medical/virology) +"enx" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/hallway/primary/central) "enz" = ( /obj/machinery/door/airlock/external{ name = "Transport Airlock" @@ -17401,6 +17412,13 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/maintenance/department/science) +"fyd" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/quartermaster/storage) "fye" = ( /obj/machinery/light/small{ dir = 8 @@ -18136,13 +18154,6 @@ }, /turf/open/floor/iron, /area/medical/morgue) -"fKw" = ( -/obj/machinery/light, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron, -/area/engine/engineering) "fKx" = ( /turf/open/floor/plating, /area/maintenance/port/central) @@ -18198,12 +18209,6 @@ }, /turf/open/floor/iron/freezer, /area/security/prison) -"fLt" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/iron/dark, -/area/quartermaster/storage) "fLv" = ( /obj/machinery/gateway{ dir = 5 @@ -23226,6 +23231,14 @@ }, /turf/open/floor/iron/dark, /area/maintenance/department/chapel/monastery) +"htt" = ( +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/hallway/secondary/exit) "htA" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -25288,6 +25301,22 @@ /obj/item/radio, /turf/open/floor/iron/dark, /area/security/main) +"iap" = ( +/obj/machinery/camera/autoname, +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/item/radio/intercom{ + frequency = 1423; + name = "Interrogation Intercom"; + pixel_y = 21 + }, +/turf/open/floor/iron, +/area/security/brig) "iaD" = ( /obj/structure/grille, /turf/closed/wall/r_wall, @@ -26433,15 +26462,6 @@ }, /turf/open/floor/wood, /area/maintenance/port) -"irR" = ( -/obj/structure/chair, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, -/turf/open/floor/iron, -/area/hallway/primary/central) "isl" = ( /obj/structure/table/glass, /obj/item/stack/sheet/iron/fifty, @@ -31104,6 +31124,11 @@ }, /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) +"jVN" = ( +/obj/effect/turf_decal/tile/purple, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/white, +/area/science/research) "jVV" = ( /obj/structure/window/reinforced/spawner/west, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ @@ -31656,13 +31681,6 @@ }, /turf/open/floor/iron, /area/engine/storage) -"kgg" = ( -/obj/machinery/vending/medical, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/lobby) "kgh" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -32562,6 +32580,14 @@ "ksE" = ( /turf/open/floor/circuit/green, /area/engine/gravity_generator) +"ksG" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/dark, +/area/chapel/main/monastery) "ksO" = ( /obj/structure/chair/office/light{ dir = 8 @@ -34138,21 +34164,6 @@ /obj/effect/spawner/room/tenxten, /turf/open/floor/plating, /area/maintenance/starboard/secondary) -"kVR" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/west{ - pixel_x = -24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/machinery/camera/autoname{ - dir = 4 - }, -/turf/open/floor/carpet/royalblue, -/area/crew_quarters/theatre) "kVV" = ( /obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 1 @@ -44976,6 +44987,14 @@ }, /turf/open/floor/iron, /area/hydroponics) +"opK" = ( +/obj/machinery/vending/medical, +/obj/machinery/vending/medical, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/medical/medbay/lobby) "opS" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/drone, @@ -47402,6 +47421,21 @@ }, /turf/open/floor/iron, /area/engine/engine_room) +"piU" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/west{ + pixel_x = -24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/camera/autoname{ + dir = 4 + }, +/turf/open/floor/carpet/royalblue, +/area/crew_quarters/theatre) "piY" = ( /obj/structure/table/reinforced, /obj/machinery/light{ @@ -50075,6 +50109,12 @@ }, /turf/open/floor/iron, /area/hallway/primary/aft) +"qdF" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/turf/open/floor/carpet/royalblue, +/area/crew_quarters/theatre) "qdG" = ( /obj/item/crowbar/red, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -50554,14 +50594,6 @@ /obj/item/storage/toolbox/mechanical, /turf/open/floor/iron/dark, /area/engine/storage) -"qmt" = ( -/obj/effect/spawner/randomvend/cola, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/lobby) "qmJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -52211,16 +52243,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/science/xenobiology) -"qNp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/iron, -/area/security/brig) "qNr" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible, /turf/open/floor/iron/dark, @@ -55730,6 +55752,14 @@ /obj/effect/turf_decal/tile/blue/anticorner/contrasted, /turf/open/floor/iron, /area/hallway/primary/central) +"rVM" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/wood, +/area/crew_quarters/bar) "rVS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -57892,6 +57922,15 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/engine/storage) +"sGm" = ( +/obj/effect/spawner/randomvend/cola, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white, +/area/medical/medbay/lobby) "sGn" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -63068,6 +63107,17 @@ }, /turf/open/floor/iron/white, /area/medical/storage) +"uqH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/security/brig) "uqS" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -68319,12 +68369,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/cmo) -"vXY" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/turf/open/floor/carpet/royalblue, -/area/crew_quarters/theatre) "vYc" = ( /obj/machinery/light, /obj/effect/turf_decal/tile/yellow{ @@ -71783,23 +71827,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) -"xfY" = ( -/obj/machinery/camera/autoname{ - network = list("ss13","security") - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/item/radio/intercom{ - frequency = 1423; - name = "Interrogation Intercom"; - pixel_y = 21 - }, -/turf/open/floor/iron, -/area/security/brig) "xgn" = ( /obj/structure/window/reinforced/spawner{ dir = 8 @@ -94169,7 +94196,7 @@ fSz gwG ahW eGl -gHL +ksG vqg qqc gHL @@ -97932,7 +97959,7 @@ dEa wXZ ces hYd -fKw +djm amI pFF lXu @@ -102384,8 +102411,8 @@ mmp fHv rdA mQA -kVR -vXY +piU +qdF glo fpf aQQ @@ -104707,7 +104734,7 @@ guQ hAT gKS pIk -rnt +htt bOf qyv wIF @@ -105925,7 +105952,7 @@ dWH jpk jDg ipY -jpk +jVN jpk aKt nwP @@ -109825,7 +109852,7 @@ xXn oRy tSP flm -boO +rVM fhO fhO fhO @@ -110567,8 +110594,8 @@ lrx uQJ ehY xVh -xVx -irR +vJi +enx eIz ouI boA @@ -112585,7 +112612,7 @@ tTo tTo tTo tTo -xfY +iap wod kpV cUn @@ -112842,7 +112869,7 @@ sim umx thk tTo -qNp +uqH vvb veZ rZs @@ -114408,7 +114435,7 @@ sNC tSC kEQ iDL -qmt +sGm vvO bOi iDL @@ -115179,7 +115206,7 @@ sNC xRS iBX iDL -kgg +opK btd btd btd @@ -118249,7 +118276,7 @@ oeF ivK lhX aWM -fLt +fyd eWf sCf eWf diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 7de1e97e0fac8..5e59cd31e112b 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -1565,12 +1565,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/hallway/secondary/entry) -"akL" = ( -/obj/machinery/vending/clothing, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/hallway/secondary/entry) "akM" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/bot, @@ -6557,6 +6551,13 @@ "aKV" = ( /turf/closed/wall, /area/security/prison) +"aLa" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/obj/machinery/fax/bridge, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/dark, +/area/bridge) "aLb" = ( /obj/item/wrench, /obj/effect/turf_decal/stripes/line{ @@ -31679,6 +31680,13 @@ }, /turf/open/floor/iron, /area/maintenance/port/fore) +"dJC" = ( +/obj/machinery/vending/clothing, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/hallway/secondary/entry) "dJG" = ( /obj/structure/chair, /obj/effect/decal/cleanable/dirt, @@ -32168,6 +32176,16 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/science/storage) +"dMg" = ( +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/obj/structure/chair/fancy/bench/right{ + dir = 1 + }, +/turf/open/floor/iron, +/area/security/prison) "dMr" = ( /obj/structure/chair/stool, /turf/open/floor/prison, @@ -33343,13 +33361,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) -"dXN" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/hallway/secondary/exit/departure_lounge) "dYc" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -33873,9 +33884,6 @@ /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, /area/maintenance/port/aft) -"ecz" = ( -/turf/open/floor/iron/dark, -/area/chapel/main) "ecF" = ( /obj/machinery/camera{ c_tag = "Departures - Port"; @@ -35010,6 +35018,17 @@ }, /turf/open/floor/iron, /area/maintenance/port/fore) +"epc" = ( +/obj/structure/chair/stool/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron, +/area/crew_quarters/bar/atrium) "epk" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -35603,6 +35622,17 @@ }, /turf/open/floor/iron, /area/hallway/secondary/service) +"ewS" = ( +/obj/machinery/holopad, +/obj/machinery/light, +/obj/machinery/camera{ + c_tag = "Chapel - Aft"; + dir = 1; + name = "chapel camera" + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/carpet/grimy, +/area/chapel/main) "exc" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 @@ -36558,12 +36588,6 @@ }, /turf/open/floor/iron, /area/engine/storage_shared) -"eNB" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/turf/open/floor/prison, -/area/security/prison) "eNJ" = ( /obj/item/radio/intercom{ pixel_x = -28; @@ -36744,6 +36768,14 @@ }, /turf/open/floor/iron, /area/medical/patients_rooms) +"eQl" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/turf_decal/delivery, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/hallway/secondary/exit/departure_lounge) "eQt" = ( /obj/structure/cable/yellow{ icon_state = "0-4" @@ -36955,6 +36987,19 @@ }, /turf/open/floor/iron, /area/hallway/secondary/entry) +"eUE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white, +/area/science/research) "eUM" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -40903,13 +40948,6 @@ }, /turf/open/floor/plating, /area/security/checkpoint/medical) -"gmT" = ( -/obj/structure/chair/fancy/bench/right, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/security/prison) "gnF" = ( /obj/machinery/light_switch{ pixel_x = 26; @@ -50605,6 +50643,13 @@ /obj/structure/girder, /turf/open/floor/plating, /area/maintenance/aft) +"jId" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/medical/medbay/lobby) "jIo" = ( /obj/structure/disposalpipe/segment{ dir = 2 @@ -61146,6 +61191,16 @@ }, /turf/open/floor/iron, /area/construction/mining/aux_base) +"nfA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/engine/break_room) "nfZ" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 @@ -64868,22 +64923,6 @@ }, /turf/open/floor/iron, /area/ai_monitored/security/armory) -"orD" = ( -/obj/structure/noticeboard{ - desc = "A board for remembering the fallen of the station."; - dir = 1; - name = "memorial board"; - pixel_y = -32 - }, -/obj/machinery/holopad, -/obj/machinery/light, -/obj/machinery/camera{ - c_tag = "Chapel - Aft"; - dir = 1; - name = "chapel camera" - }, -/turf/open/floor/carpet/grimy, -/area/chapel/main) "orI" = ( /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom{ @@ -67005,12 +67044,6 @@ /mob/living/basic/cockroach, /turf/open/floor/plating, /area/maintenance/port) -"peV" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, -/obj/machinery/fax/bridge, -/turf/open/floor/iron/dark, -/area/bridge) "peY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor, @@ -68452,12 +68485,6 @@ }, /turf/open/floor/iron, /area/crew_quarters/bar/atrium) -"pGA" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/iron, -/area/medical/medbay/lobby) "pGC" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 @@ -68512,6 +68539,21 @@ /obj/machinery/light/small, /turf/open/floor/iron/freezer, /area/security/prison) +"pHp" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/newscaster{ + pixel_x = -32 + }, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/fax/cargo, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/quartermaster/office) "pHy" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -70996,13 +71038,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron, /area/engine/atmos) -"qvl" = ( -/obj/structure/chair/fancy/bench/right, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/security/prison) "qwa" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -76995,6 +77030,12 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/storage/tech) +"swg" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/turf/open/floor/prison, +/area/security/prison) "swh" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -82808,19 +82849,6 @@ }, /turf/open/floor/iron, /area/security/main) -"uDx" = ( -/obj/item/radio/intercom{ - pixel_x = 26 - }, -/obj/structure/chair/stool/bar{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron, -/area/crew_quarters/bar/atrium) "uDH" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -88085,20 +88113,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/starboard) -"wmz" = ( -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/newscaster{ - pixel_x = -32 - }, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/fax/cargo, -/turf/open/floor/iron, -/area/quartermaster/office) "wmE" = ( /obj/machinery/airalarm{ dir = 8; @@ -88948,6 +88962,15 @@ }, /turf/open/floor/iron, /area/maintenance/aft) +"wCn" = ( +/obj/structure/noticeboard{ + desc = "A board for remembering the fallen of the station."; + dir = 1; + name = "memorial board"; + pixel_y = -32 + }, +/turf/open/floor/iron/dark, +/area/chapel/main) "wCo" = ( /obj/structure/table/reinforced, /obj/machinery/recharger, @@ -94174,6 +94197,15 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/science/xenobiology) +"ygO" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/structure/chair/fancy/bench/left{ + dir = 1 + }, +/turf/open/floor/iron, +/area/security/prison) "ygX" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, @@ -118520,7 +118552,7 @@ pvf bxE iBx bzg -bGl +nfA mTm bGl bHW @@ -127307,7 +127339,7 @@ cMY cMY cMY cMY -xDg +eUE fjQ gPv cOR @@ -128634,7 +128666,7 @@ dZR dZk dWN dZk -ecz +wCn dTA dUu dTw @@ -129405,7 +129437,7 @@ vFF lBG xfp hNX -orD +ewS dTA oes edS @@ -132627,7 +132659,7 @@ lrd erE aHE fag -uDx +epc wmE rOT rOT @@ -132739,8 +132771,8 @@ gEI mIR xUd vpZ -dXN -dYH +eQl +dST dZp vpZ bFn @@ -133375,8 +133407,8 @@ aaa aaO pjz hPl -akL -aaO +dJC +abf bPv ano eDD @@ -134175,7 +134207,7 @@ rkO hqP rwP aFe -wmz +pHp mNG aXg poY @@ -134457,7 +134489,7 @@ bYc esA rMZ yaH -peV +aLa bKH rdd mUt @@ -137324,7 +137356,7 @@ jlI tUL ffv vlB -pGA +jId ats cjk pFX @@ -144747,10 +144779,10 @@ amO oMz kMh vjt -qvl +dMg aFm hll -eNB +swg mkq fab aFm @@ -145004,7 +145036,7 @@ kkr uCU ofj dLy -gmT +ygO hwA nZc ueX diff --git a/_maps/map_files/EchoStation/EchoStation.dmm b/_maps/map_files/EchoStation/EchoStation.dmm index 7e48b86fc012e..0163bd4ffc432 100644 --- a/_maps/map_files/EchoStation/EchoStation.dmm +++ b/_maps/map_files/EchoStation/EchoStation.dmm @@ -104,6 +104,17 @@ }, /turf/open/floor/iron/tech/grid, /area/ai_monitored/turret_protected/ai_upload) +"acj" = ( +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/table, +/obj/item/kitchen/rollingpin{ + pixel_x = -6; + pixel_y = -1 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "acC" = ( /obj/machinery/light{ dir = 4 @@ -119,32 +130,6 @@ }, /turf/open/floor/engine, /area/science/explab) -"acD" = ( -/obj/machinery/button/door{ - id = "meetingshutter"; - name = "Privacy Shutter Control"; - pixel_x = 26; - pixel_y = 2 - }, -/obj/structure/filingcabinet{ - pixel_x = 8 - }, -/obj/structure/filingcabinet{ - pixel_x = -8 - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 5 - }, -/obj/machinery/light_switch{ - pixel_x = 35; - pixel_y = 2 - }, -/obj/structure/sign/painting/library{ - pixel_x = 1; - pixel_y = 29 - }, -/turf/open/floor/iron/dark, -/area/bridge/meeting_room) "acU" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/iron/tech, @@ -172,25 +157,6 @@ /obj/structure/flora/rock, /turf/open/floor/plating/asteroid/basalt/planetary, /area/asteroid/paradise) -"adV" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/two, -/obj/item/paicard, -/turf/open/floor/plating, -/area/maintenance/department/chapel) -"aea" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/structure/chair/fancy/bench{ - layer = 2.5 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/security/prison) "aej" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/structure/sign/warning/vacuum{ @@ -219,6 +185,13 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/science/mixing) +"aeN" = ( +/obj/effect/landmark/start/cook, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "aeV" = ( /obj/structure/railing/corner{ dir = 1 @@ -237,14 +210,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/engine, /area/science/mixing/chamber) -"afd" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "afq" = ( /obj/structure/sign/departments/minsky/engineering/telecommmunications{ pixel_x = -32 @@ -269,6 +234,13 @@ "afw" = ( /turf/closed/wall, /area/crew_quarters/kitchen) +"afy" = ( +/obj/item/paicard{ + pixel_x = 5; + pixel_y = 1 + }, +/turf/open/floor/plating, +/area/quartermaster/warehouse) "afA" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 @@ -278,16 +250,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) -"afQ" = ( -/obj/machinery/computer/security/mining, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/iron, -/area/bridge) "agi" = ( /obj/structure/closet/secure_closet/hop, /obj/item/modular_computer/tablet/pda, @@ -308,24 +270,6 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/hop) -"agu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/poddoor{ - id = "engstorage"; - name = "Engineering Secure Storage Lockdown" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/engine/engineering) "agI" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 @@ -398,16 +342,6 @@ }, /turf/open/floor/iron, /area/crew_quarters/heads/hop) -"ahC" = ( -/obj/structure/lattice/catwalk/over, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/closet/firecloset/full, -/turf/open/openspace, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "ahQ" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/stripes/line{ @@ -438,23 +372,6 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) -"ait" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 5 - }, -/obj/structure/closet/firecloset/full, -/obj/effect/turf_decal/bot, -/obj/item/extinguisher/advanced{ - pixel_x = -1; - pixel_y = -2 - }, -/turf/open/floor/iron/dark, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "aiv" = ( /obj/structure/table/reinforced, /obj/item/xenoartifact_labeler{ @@ -517,6 +434,10 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/fitness/recreation) +"aiU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "aja" = ( /obj/machinery/computer/cargo/request, /obj/effect/turf_decal/tile/brown/half/contrasted{ @@ -788,20 +709,6 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) -"amn" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/showroomfloor, -/area/crew_quarters/cryopods) "amw" = ( /obj/effect/turf_decal/tile/dark_green/fourcorners/contrasted, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -893,6 +800,18 @@ }, /turf/open/openspace, /area/ai_monitored/turret_protected/aisat/maint) +"aof" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 1; + initialize_directions = 1 + }, +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = -30 + }, +/turf/open/floor/iron/tech, +/area/engine/engineering) "aog" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 1; @@ -1281,6 +1200,15 @@ /obj/item/lightreplacer, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) +"atE" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "aua" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input, /obj/machinery/sparker/toxmix{ @@ -1351,6 +1279,15 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/crew_quarters/dorms) +"avs" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/machinery/camera/autoname{ + dir = 8; + network = list("ss13","engine") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "avD" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plating/airless, @@ -1413,28 +1350,19 @@ "awE" = ( /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) -"awV" = ( -/obj/structure/table, -/obj/item/stock_parts/micro_laser, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/capacitor, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/micro_laser/high, -/obj/item/paicard{ - pixel_x = 17; - pixel_y = 1 - }, -/turf/open/floor/iron/dark, -/area/engine/atmos) "axa" = ( /obj/structure/girder, /turf/open/floor/plating, /area/maintenance/department/engine) +"axc" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_one_access_txt = "12;5"; + security_level = 6 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/medical/central) "axj" = ( /obj/effect/landmark/blobstart, /turf/open/floor/plating, @@ -1583,21 +1511,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/science/xenobiology) -"azx" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/vending/clothing, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/crew_quarters/dorms) "azy" = ( /obj/structure/table/optable{ pixel_y = 7 @@ -1664,20 +1577,6 @@ }, /turf/open/floor/wood, /area/hallway/secondary/service) -"aAb" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "aAh" = ( /obj/effect/turf_decal/bot, /obj/structure/extinguisher_cabinet{ @@ -1862,6 +1761,16 @@ /obj/item/pool/rubber_ring, /turf/open/floor/plating/beach/water, /area/asteroid/paradise/surface/water) +"aDi" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "aDn" = ( /obj/effect/turf_decal/tile/dark_green/fourcorners/contrasted, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -1898,54 +1807,6 @@ "aEM" = ( /turf/closed/wall/r_wall, /area/science/server) -"aEU" = ( -/obj/item/radio/intercom{ - freerange = 1; - name = "Common Channel"; - pixel_x = 29; - pixel_y = 6 - }, -/obj/item/radio/intercom{ - freerange = 1; - listening = 0; - name = "Custom Channel"; - pixel_x = 29; - pixel_y = 35 - }, -/obj/item/radio/intercom{ - freerange = 1; - frequency = 1447; - name = "Private Channel"; - pixel_x = 29; - pixel_y = 20 - }, -/obj/effect/landmark/start/ai, -/obj/machinery/button/door{ - id = "AI Chamber entrance shutters"; - name = "AI Chamber Lockdown"; - pixel_x = -25; - pixel_y = 8; - req_access_txt = "16" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/button/door{ - id = "AIwindows"; - name = "AI View Blast doors"; - pixel_x = -38; - pixel_y = 8; - req_access_txt = "19" - }, -/obj/machinery/button/door{ - id = "AI Core shutters"; - name = "AI Core Shutters Toggle"; - pixel_x = -38; - pixel_y = -3; - req_access_txt = "16" - }, -/turf/open/floor/circuit/red, -/area/ai_monitored/turret_protected/ai) "aFj" = ( /obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /obj/effect/mapping_helpers/airlock/locked, @@ -1967,24 +1828,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/plating, /area/science/xenobiology) -"aFA" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "aFL" = ( /obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ alpha = 180; @@ -2043,13 +1886,6 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/iron, /area/maintenance/department/science/central) -"aFW" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/machinery/deepfryer, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "aGd" = ( /obj/structure/stairs{ dir = 4 @@ -2170,20 +2006,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, /area/maintenance/department/chapel) -"aIQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/power/rad_collector, -/turf/open/floor/iron/dark, -/area/engine/engineering) "aIR" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/flora/ausbushes/fullgrass, @@ -2194,11 +2016,6 @@ }, /turf/open/floor/grass/no_border, /area/bridge) -"aJb" = ( -/obj/structure/table, -/obj/item/paicard, -/turf/open/floor/iron/dark, -/area/maintenance/department/crew_quarters/dorms) "aJe" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 4 @@ -2293,6 +2110,17 @@ }, /turf/open/floor/iron/tech, /area/science/mixing/chamber) +"aJD" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/apc/auto_name/north{ + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/maintenance/department/cargo) "aJO" = ( /obj/item/radio/intercom{ pixel_x = -1; @@ -2355,19 +2183,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/engine, /area/science/explab) -"aKB" = ( -/obj/machinery/door/airlock/security/glass{ - id_tag = "outerbrig"; - name = "Brig"; - req_access_txt = "2" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/firedoor, -/turf/open/floor/prison/dark, -/area/security/prison) "aKC" = ( /obj/structure/dresser, /obj/item/camera{ @@ -2397,24 +2212,6 @@ /obj/effect/landmark/start/botanist, /turf/open/floor/iron, /area/hydroponics) -"aKI" = ( -/obj/effect/turf_decal/trimline/dark/warning{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/item/radio/intercom{ - pixel_x = -32; - pixel_y = -3 - }, -/turf/open/floor/iron/dark, -/area/engineering/hallway{ - name = "Engineering Viewing Platform" - }) "aLc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -2682,6 +2479,17 @@ /obj/effect/spawner/room/fivexfour, /turf/open/floor/plating, /area/maintenance/department/science/central) +"aQs" = ( +/obj/structure/reflector/box{ + anchored = 1; + dir = 1 + }, +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "aQv" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/beach/sand, @@ -2877,10 +2685,24 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet/orange, /area/crew_quarters/dorms) +"aSF" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "aSN" = ( /obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/medical/surgery) +"aST" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "aSX" = ( /turf/closed/wall, /area/crew_quarters/heads/hor) @@ -2912,6 +2734,21 @@ /obj/effect/landmark/start/security_officer, /turf/open/floor/iron/dark, /area/security/brig) +"aUc" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "aUf" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -3010,6 +2847,22 @@ }, /turf/open/floor/iron/dark, /area/security/detectives_office) +"aVM" = ( +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/security/brig) "aVS" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/firecloset/full, @@ -3020,6 +2873,13 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"aWb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/effect/landmark/start/cook, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "aWm" = ( /obj/effect/turf_decal/tile/purple/fourcorners/contrasted, /obj/effect/decal/cleanable/dirt/dust, @@ -3034,6 +2894,24 @@ }, /turf/open/floor/iron/white, /area/science/lab) +"aWp" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "aWy" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 5 @@ -3054,6 +2932,16 @@ }, /turf/open/floor/iron, /area/maintenance/department/eva) +"aXp" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/iron, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "aXq" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -3081,12 +2969,6 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/ai) -"aXZ" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "aYa" = ( /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, @@ -3231,20 +3113,6 @@ }, /turf/open/floor/iron/tech, /area/engine/engineering) -"bcT" = ( -/obj/structure/chair/stool/bar{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 1; - pixel_y = -35 - }, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/cafeteria) "bdh" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 @@ -3322,6 +3190,10 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) +"bfz" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "bfI" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -3363,6 +3235,21 @@ dir = 10 }, /area/asteroid/paradise/surface/water) +"bgu" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 29; + pixel_y = -3 + }, +/turf/open/floor/iron/white, +/area/crew_quarters/fitness/recreation) "bgS" = ( /turf/closed/wall, /area/security/prison/shielded) @@ -3386,29 +3273,25 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) -"bhE" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/lootdrop/grille_or_trash, -/turf/open/floor/iron, -/area/maintenance/department/science/xenobiology) -"bhN" = ( -/obj/structure/cable{ - icon_state = "1-2" +"bhy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/rnd/production/techfab/department/cargo, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ +/obj/machinery/light{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - name = "Atmos to Loop" - }, -/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/quartermaster/storage) +"bhE" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/iron, -/area/engine/engineering) +/area/maintenance/department/science/xenobiology) "bhX" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -3462,44 +3345,6 @@ /obj/structure/sign/warning/radiation/rad_area, /turf/closed/wall/r_wall/rust, /area/engine/engineering) -"biX" = ( -/obj/machinery/turretid{ - control_area = "/area/ai_monitored/turret_protected/ai"; - icon_state = "control_stun"; - name = "AI Chamber turret control"; - pixel_x = -1; - pixel_y = 33 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/camera/autoname{ - dir = 6; - network = list("aiupload") - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/iron/tech/grid, -/area/ai_monitored/turret_protected/aisat_interior) -"bja" = ( -/obj/effect/turf_decal/siding/white{ - alpha = 100 - }, -/obj/structure/flora/ausbushes/ywflowers, -/obj/machinery/light{ - dir = 1 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 1; - pixel_y = 26 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/crew_quarters/dorms) "bjl" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -3623,24 +3468,6 @@ /obj/structure/sign/departments/minsky/security/command, /turf/closed/wall/r_wall, /area/bridge/meeting_room) -"bns" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "bnW" = ( /obj/structure/table/reinforced, /obj/item/storage/box/flashbangs{ @@ -3731,20 +3558,6 @@ /obj/item/pool/pool_noodle, /turf/open/floor/iron/white, /area/crew_quarters/fitness/recreation) -"boR" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "32" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/engine) "boV" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 8 @@ -3773,60 +3586,12 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"bpq" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/openspace, -/area/hydroponics) "bpM" = ( /obj/structure/sink/kitchen{ pixel_y = 28 }, /turf/open/floor/plating, /area/maintenance/department/chapel) -"bpT" = ( -/obj/structure/table/reinforced, -/obj/item/clipboard{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/paper/monitorkey{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/folder/yellow, -/obj/item/toy/figure/ce{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/item/stamp/chief_engineer{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 5 - }, -/obj/machinery/camera/autoname{ - dir = 8; - network = list("ss13","engine") - }, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Chief Engineer's Desk"; - departmentType = 4; - name = "Chief Engineer RC"; - pixel_x = 32; - pixel_y = 31 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/carpet/royalblue, -/area/crew_quarters/heads/chief) "bqg" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt/dust, @@ -3889,6 +3654,19 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/medical/medbay/central) +"bqq" = ( +/obj/machinery/door/airlock/hatch{ + name = "MiniSat Access"; + req_one_access_txt = "32;19" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/tech/grid, +/area/ai_monitored/turret_protected/aisat_interior) "bqy" = ( /obj/item/kirbyplants/random, /obj/structure/extinguisher_cabinet{ @@ -3957,26 +3735,6 @@ }, /turf/open/floor/iron, /area/security/brig) -"btq" = ( -/obj/machinery/light, -/obj/machinery/firealarm/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/table, -/obj/item/food/dough{ - pixel_x = 4 - }, -/obj/item/food/dough{ - pixel_y = 2; - pixel_x = 9 - }, -/obj/item/reagent_containers/food/condiment/enzyme{ - pixel_x = -5; - pixel_y = 9 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "btw" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, @@ -4024,23 +3782,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/captain) -"btU" = ( -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -31; - pixel_y = -3 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/science/server) "bum" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -4189,10 +3930,31 @@ /obj/structure/lattice, /turf/open/openspace, /area/maintenance/department/crew_quarters/bar) +"bxD" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/structure/table, +/obj/item/flashlight/flare{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/extinguisher/advanced{ + pixel_x = -8; + pixel_y = 2 + }, +/turf/open/floor/iron, +/area/engine/atmos) "bxE" = ( /obj/structure/railing/corner, /turf/open/floor/iron/sepia, /area/quartermaster/storage) +"bxR" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "bxZ" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/space_heater, @@ -4359,6 +4121,11 @@ /obj/structure/railing/corner, /turf/open/floor/iron/techmaint/planetary, /area/asteroid/paradise/surface) +"bBQ" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/flora/rock, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "bCq" = ( /obj/machinery/door/window/brigdoor/southright{ dir = 4; @@ -4380,21 +4147,6 @@ /obj/effect/spawner/room/fivexthree, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/maint) -"bCL" = ( -/obj/item/storage/secure/safe{ - pixel_x = 37; - pixel_y = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname, -/obj/item/radio/intercom{ - dir = 1; - pixel_y = 29 - }, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "bCM" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -4484,22 +4236,14 @@ "bEo" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/power/apc/auto_name/north{ - pixel_y = 24 + icon_state = "4-8" }, -/obj/structure/cable/yellow{ - icon_state = "0-2" +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/maintenance/department/science/xenobiology) "bEu" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -4544,39 +4288,27 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/engine/engineering) -"bFJ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "1-32" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/closet/emcloset/anchored, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/engine/atmos) "bFY" = ( /obj/machinery/atmospherics/miner/station/n2o, /obj/machinery/atmospherics/pipe/simple/green/hidden, /turf/open/floor/engine/n2o, /area/engine/atmos) -"bGr" = ( -/obj/structure/table/reinforced, -/obj/structure/desk_bell{ - pixel_x = -8; - pixel_y = 9 +"bGl" = ( +/obj/machinery/power/compressor{ + comp_id = "incineratorturbineLeft"; + dir = 1; + luminosity = 2 }, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 1 +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/machinery/airalarm/directional/north, -/obj/item/paicard{ - pixel_x = 5; - pixel_y = 1 +/obj/structure/cable, +/obj/machinery/camera/autoname{ + dir = 4; + network = list("ss13, engine") }, -/turf/open/floor/iron/dark, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) +/turf/open/floor/engine/vacuum, +/area/maintenance/disposal/incinerator) "bGD" = ( /obj/effect/turf_decal/sand/plating, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -4746,16 +4478,6 @@ }, /turf/open/floor/engine/n2, /area/engine/atmos) -"bKr" = ( -/obj/structure/reflector/box{ - anchored = 1; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "bKy" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -4786,21 +4508,6 @@ }, /turf/open/floor/prison, /area/security/prison) -"bLd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2; - pixel_y = 17 - }, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/science/research) "bLn" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -4810,6 +4517,20 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"bLZ" = ( +/obj/effect/turf_decal/siding/white{ + alpha = 100 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/white, +/area/crew_quarters/fitness/recreation) "bMd" = ( /obj/effect/decal/cleanable/shreds, /turf/open/floor/plating/airless, @@ -4987,11 +4708,6 @@ dir = 4 }, /area/science/research) -"bOu" = ( -/obj/structure/flora/rock/pile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "bPb" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/tile/purple, @@ -5045,6 +4761,31 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) +"bRk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/power/smes, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/item/radio/intercom{ + pixel_x = 33; + pixel_y = -2 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) +"bSm" = ( +/obj/item/radio/intercom{ + broadcasting = 1; + canhear_range = 6; + dir = 8; + name = "Station Intercom (Court)"; + pixel_x = 33; + pixel_y = -4 + }, +/turf/open/floor/plating, +/area/vacant_room/office) "bSF" = ( /obj/machinery/meter{ target_layer = 4 @@ -5100,22 +4841,6 @@ dir = 1 }, /area/asteroid/paradise/surface/water) -"bTy" = ( -/obj/effect/decal/cleanable/food/flour, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "bTY" = ( /obj/machinery/power/emitter/welded, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, @@ -5153,6 +4878,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/wood, /area/crew_quarters/cafeteria) +"bUT" = ( +/obj/structure/sign/directions/supply{ + dir = 8; + pixel_y = 10 + }, +/turf/closed/wall, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "bVa" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -5160,6 +4894,33 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/maintenance/department/bridge) +"bVi" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + alpha = 180; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) +"bVS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/spawner/randomarcade{ + dir = 1 + }, +/obj/structure/railing, +/obj/effect/turf_decal/siding/white, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "bVU" = ( /obj/effect/spawner/room/tenxfive, /turf/open/floor/plating, @@ -5262,13 +5023,6 @@ }, /turf/open/floor/plating, /area/hydroponics) -"bYW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/obj/effect/landmark/start/cook, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "bZe" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -5280,11 +5034,12 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/hor) -"bZw" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/paicard, -/turf/open/floor/iron, -/area/maintenance/department/medical/central) +"bZl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/tech/grid, +/area/ai_monitored/turret_protected/aisat_interior) "bZH" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -5358,6 +5113,19 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"cbl" = ( +/obj/machinery/camera/autoname, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 1; + pixel_y = 23 + }, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/iron, +/area/janitor) "cbm" = ( /turf/closed/mineral/random/air, /area/quartermaster/storage) @@ -5393,11 +5161,6 @@ /obj/effect/turf_decal/stripes/closeup, /turf/open/floor/plating, /area/crew_quarters/heads/captain) -"ccq" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "cdq" = ( /obj/structure/window/plasma/reinforced{ dir = 4 @@ -5451,16 +5214,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"cej" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 5 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "cel" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/power/apc/auto_name/west{ @@ -5549,13 +5302,13 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) -"chk" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/openspace, -/area/maintenance/department/security/brig) +"cfw" = ( +/obj/structure/stairs, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/pod/dark, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "chG" = ( /turf/open/floor/plating/beach/coastline_b{ dir = 8 @@ -5585,24 +5338,6 @@ /obj/structure/sign/poster/random, /turf/closed/wall, /area/storage/primary) -"ciC" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 5 - }, -/obj/structure/table, -/obj/effect/turf_decal/tile/yellow/fourcorners/contrasted{ - alpha = 230; - color = "#edaa0c" - }, -/obj/item/clothing/gloves/color/black, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/gloves/color/black{ - pixel_x = 3; - pixel_y = 7 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/engine/atmos) "ciD" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/maintenance/two, @@ -5621,12 +5356,6 @@ }, /turf/open/floor/plating/asteroid/planetary, /area/crew_quarters/dorms) -"cjE" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "cjG" = ( /obj/structure/chair/fancy/sofa/old/right{ dir = 4 @@ -5947,6 +5676,16 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/ai_upload) +"crU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/mob/living/simple_animal/pet/cat{ + desc = "He demands you let him sleep"; + name = "Sir Fluffington McWhiskerface the Third, Esquire, Purveyor of Mischief and Master of Naps" + }, +/turf/open/floor/wood, +/area/asteroid/paradise/surface) "crW" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -6085,20 +5824,6 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) -"cwj" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/structure/bed/dogbed/runtime, -/mob/living/simple_animal/pet/cat/Runtime{ - pixel_y = 4 - }, -/obj/item/toy/plush/runtime{ - pixel_x = -6; - pixel_y = 1 - }, -/turf/open/floor/carpet/blue, -/area/crew_quarters/heads/cmo) "cwk" = ( /obj/effect/turf_decal/siding/dark/corner, /obj/effect/turf_decal/trimline/yellow/corner{ @@ -6246,6 +5971,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/crew_quarters/dorms) +"czn" = ( +/obj/machinery/door/firedoor, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/openspace, +/area/maintenance/department/medical/central) "czv" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark, @@ -6300,15 +6032,15 @@ }, /turf/open/floor/carpet/red, /area/medical/exam_room) -"cAV" = ( -/obj/machinery/chem_dispenser/drinks/beer, -/obj/structure/table, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/airalarm{ - pixel_y = 28 +"cAy" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/machinery/light/small{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/crew_quarters/kitchen) +/obj/item/paicard, +/turf/open/floor/plating, +/area/hallway/secondary/service) "cBs" = ( /obj/machinery/holopad, /obj/effect/turf_decal/stripes/line, @@ -6333,11 +6065,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/central) -"cBT" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "cCz" = ( /obj/structure/sign/departments/minsky/security/security, /turf/closed/wall/r_wall, @@ -6347,6 +6074,15 @@ /obj/effect/turf_decal/bot, /turf/open/floor/wood, /area/crew_quarters/heads/captain) +"cDv" = ( +/obj/structure/table/wood, +/obj/item/screwdriver, +/obj/item/hatchet, +/obj/item/paicard, +/turf/open/floor/iron, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "cDx" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -6500,6 +6236,24 @@ /obj/effect/turf_decal/siding/wideplating/dark, /turf/open/floor/carpet/blue, /area/bridge/meeting_room) +"cFN" = ( +/obj/structure/table, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/micro_laser/high, +/obj/item/stock_parts/micro_laser/high, +/obj/item/stock_parts/micro_laser/high, +/obj/item/stock_parts/micro_laser/high, +/obj/item/paicard{ + pixel_x = 17; + pixel_y = 1 + }, +/turf/open/floor/iron/dark, +/area/engine/atmos) "cFP" = ( /obj/structure/flora/grass/jungle, /turf/open/floor/plating/asteroid/basalt/planetary, @@ -6588,6 +6342,12 @@ }, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) +"cJm" = ( +/obj/machinery/camera/autoname{ + network = list("ss13","rd") + }, +/turf/open/openspace, +/area/science/explab) "cJP" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/door/airlock/engineering{ @@ -6612,6 +6372,14 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) +"cJR" = ( +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "cKi" = ( /obj/structure/table/reinforced, /obj/item/aiModule/supplied/freeform, @@ -6772,6 +6540,20 @@ }, /turf/open/floor/plating/dirt/planetary, /area/asteroid/paradise/surface) +"cPh" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) +"cPw" = ( +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plating, +/area/maintenance/department/medical/central) "cQe" = ( /obj/structure/stairs{ dir = 8 @@ -6824,6 +6606,40 @@ }, /turf/open/floor/iron, /area/security/brig) +"cRw" = ( +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "medbay" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/door/airlock/medical/glass{ + emergency = 1; + id_tag = "MedbayFoyer"; + name = "Medbay"; + req_one_access_txt = "5" + }, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "cSb" = ( /obj/machinery/door/poddoor/shutters/radiation/preopen{ id = "engsm"; @@ -7031,66 +6847,28 @@ "cXI" = ( /turf/open/floor/iron, /area/maintenance/department/eva) -"cXQ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/oil/slippery, -/turf/open/floor/plating/airless, -/area/science/mixing) -"cYs" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted{ - alpha = 180 - }, -/obj/effect/turf_decal/loading_area{ - dir = 4; - pixel_y = -1 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hopqueue"; - name = "HoP Queue Shutters" - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/button/door{ - id = "hopqueue"; - name = "Queue Shutter Control"; - pixel_y = -36; - req_access_txt = "57" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +"cXJ" = ( /obj/item/radio/intercom{ dir = 1; - pixel_x = 1; - pixel_y = -27 - }, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) -"cYy" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 + pixel_x = -31; + pixel_y = -3 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 +/turf/open/floor/plating/beach/sand, +/area/asteroid/paradise/surface/sand) +"cXM" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, +/obj/structure/table, +/obj/item/pickaxe, +/obj/machinery/firealarm/directional/north, /turf/open/floor/iron, -/area/quartermaster/sorting) -"cYG" = ( -/obj/machinery/camera/autoname{ - dir = 2; - network = list("ss13","rd") - }, -/turf/open/openspace, -/area/science/explab) +/area/engine/atmos) +"cXQ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/plating/airless, +/area/science/mixing) "cYK" = ( /obj/effect/turf_decal/tile/black/opposingcorners{ dir = 1 @@ -7172,15 +6950,6 @@ "dbm" = ( /turf/open/floor/engine, /area/engine/supermatter) -"dbB" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_one_access_txt = "63;34" - }, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/security/brig) "dbD" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -7191,44 +6960,10 @@ /obj/structure/flora/grass/jungle, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) -"dca" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 6 - }, -/obj/structure/dresser, -/obj/item/candle{ - pixel_x = 6; - pixel_y = 12 - }, -/obj/item/radio/intercom{ - pixel_y = -29 - }, -/turf/open/floor/carpet/orange, -/area/quartermaster/qm) -"dci" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/curtain/directional{ - dir = 2 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/quartermaster/qm) "dcZ" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/dock/drydock, /area/quartermaster/storage) -"ddc" = ( -/obj/structure/chair/stool/bar{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 32 - }, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/cafeteria) "ddj" = ( /obj/structure/disposalpipe/segment{ dir = 2 @@ -7262,6 +6997,21 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"deq" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted{ + alpha = 180 + }, +/obj/machinery/fax/bridge, +/obj/item/toy/plush/renault{ + pixel_x = 5; + pixel_y = 3 + }, +/turf/open/floor/iron/dark, +/area/bridge) "dev" = ( /obj/machinery/telecomms/bus/preset_three, /obj/effect/turf_decal/stripes/closeup, @@ -7289,21 +7039,6 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"dfc" = ( -/obj/machinery/camera/autoname{ - dir = 2 - }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 1; - pixel_y = 23 - }, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/iron, -/area/janitor) "dfi" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -7440,15 +7175,6 @@ }, /turf/open/floor/iron, /area/storage/primary) -"dih" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/cable/yellow{ - icon_state = "8-16" - }, -/turf/open/floor/pod/dark, -/area/maintenance/department/engine) "dii" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -7468,11 +7194,12 @@ }, /turf/open/floor/plating/asteroid/planetary, /area/crew_quarters/dorms) -"dji" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +"diS" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/item/paicard, +/turf/open/floor/plating, +/area/maintenance/department/bridge) "djm" = ( /turf/open/openspace, /area/crew_quarters/heads/hor) @@ -7523,6 +7250,17 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/white, /area/science/lab) +"dkP" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/evac, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "dkR" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted, /obj/structure/reagent_dispensers/water_cooler, @@ -7563,43 +7301,6 @@ }, /turf/open/floor/iron, /area/engine/atmos) -"dmu" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/medical/central) -"dmz" = ( -/obj/effect/turf_decal/siding/white{ - alpha = 100 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/crew_quarters/fitness/recreation) -"dmI" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/turf/open/floor/iron/tech, -/area/science/mixing/chamber) "dmN" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7782,17 +7483,6 @@ "dur" = ( /turf/closed/wall, /area/bridge) -"dux" = ( -/obj/structure/reflector/box{ - anchored = 1; - dir = 1 - }, -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "duC" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -8181,6 +7871,12 @@ }, /turf/open/floor/wood, /area/vacant_room/office) +"dEU" = ( +/obj/machinery/nuclearbomb/selfdestruct, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/security/nuke_storage) "dFk" = ( /obj/structure/chair/office/light, /obj/effect/turf_decal/tile/dark_blue/opposingcorners{ @@ -8268,6 +7964,23 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) +"dHA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Atmos to Loop" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/engine/engineering) "dHB" = ( /obj/item/clothing/glasses/welding{ pixel_x = 5 @@ -8304,11 +8017,6 @@ /obj/structure/railing, /turf/open/floor/iron, /area/science/robotics) -"dHC" = ( -/obj/structure/lattice/catwalk/over, -/obj/machinery/firealarm/directional/east, -/turf/open/openspace, -/area/maintenance/department/engine/atmos) "dHS" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/small{ @@ -8349,23 +8057,6 @@ }, /turf/open/openspace, /area/ai_monitored/turret_protected/aisat/maint) -"dIr" = ( -/obj/structure/flora/ausbushes/leafybush{ - max_integrity = 20 - }, -/obj/structure/flora/ausbushes/fullgrass{ - max_integrity = 20 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/grass/no_border, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "dIK" = ( /turf/open/floor/plating/airless, /area/science/mixing) @@ -8417,11 +8108,6 @@ }, /turf/open/floor/dock/drydock, /area/quartermaster/storage) -"dKE" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/tech, -/area/engine/engineering) "dLt" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/tile/purple{ @@ -8616,20 +8302,6 @@ /obj/effect/decal/cleanable/blood/gibs/down, /turf/open/floor/plating/dirt/planetary, /area/asteroid/paradise/surface/grass) -"dRo" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - alpha = 180; - dir = 2 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "dRp" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/asteroid/basalt/planetary, @@ -8671,6 +8343,21 @@ }, /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) +"dSc" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/turf/open/floor/iron/tech/grid, +/area/ai_monitored/turret_protected/aisat_interior) "dSe" = ( /obj/structure/reflector/box, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, @@ -8782,14 +8469,6 @@ }, /turf/open/floor/iron/dark, /area/storage/tech) -"dVh" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "dVA" = ( /obj/effect/turf_decal/bot, /obj/structure/closet/secure_closet/freezer/meat{ @@ -8861,6 +8540,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/tech, /area/engine/atmos) +"dXH" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/engine/atmos) "dXI" = ( /turf/closed/wall, /area/engine/supermatter) @@ -8900,22 +8587,6 @@ "ebd" = ( /turf/open/floor/iron, /area/science/misc_lab) -"ebk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/engine/engineering) "ebn" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/flora/ausbushes/fullgrass, @@ -8974,16 +8645,6 @@ }, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) -"edF" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/machinery/griddle, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "eec" = ( /obj/structure/railing, /turf/open/openspace, @@ -9177,18 +8838,27 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"eiD" = ( -/obj/machinery/power/compressor{ - comp_id = "incineratorturbineRight"; - dir = 1; - luminosity = 2 +"eiN" = ( +/obj/structure/railing/corner{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "0-2" +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 }, -/obj/structure/cable, -/turf/open/floor/engine/vacuum, -/area/maintenance/disposal/incinerator) +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "eiO" = ( /obj/machinery/gateway{ dir = 1 @@ -9226,21 +8896,6 @@ }, /turf/open/floor/iron/grid/steel, /area/hydroponics) -"ejL" = ( -/obj/structure/table/reinforced, -/obj/item/storage/pill_bottle/dice{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/item/toy/plush/nukeplushie{ - pixel_x = -11; - pixel_y = 9 - }, -/turf/open/floor/prison, -/area/security/prison) "ejN" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -9306,31 +8961,24 @@ }, /turf/open/floor/iron/white, /area/science/research) -"elm" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "elx" = ( /obj/structure/sign/departments/minsky/research/research, /turf/closed/wall/r_wall, /area/science/research) +"elK" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "emp" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -9372,33 +9020,26 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) -"eol" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = -9; - pixel_y = 2 +"eop" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/freezer/kitchen{ + req_access = null; + req_one_access_txt = "28;25;35" }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -2; - pixel_y = 2 +/obj/item/storage/box/ingredients/fruity{ + pixel_x = 4; + pixel_y = 6 }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) -"eom" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/item/storage/box/ingredients/vegetarian{ + pixel_x = -1; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 +/obj/item/storage/box/ingredients/wildcard{ + pixel_x = -5; + pixel_y = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) +/turf/open/floor/iron/freezer, +/area/crew_quarters/kitchen/coldroom) "eoQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -9713,13 +9354,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"exV" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "eyh" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -9867,24 +9501,21 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) -"eBa" = ( -/obj/item/clothing/gloves/color/yellow, -/obj/effect/turf_decal/stripes/line, +"eAX" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/vending/clothing, /obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname{ - network = list("ss13","engine") +/obj/structure/disposalpipe/segment{ + dir = 2 }, -/obj/structure/closet/secure_closet/atmospherics{ - anchored = 1; - req_access = null; - req_one_access_txt = "11" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 }, -/obj/item/radio/intercom{ - pixel_x = -1; - pixel_y = 29 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 }, -/turf/open/floor/iron, -/area/engine/atmos) +/turf/open/floor/plating/asteroid/planetary, +/area/crew_quarters/dorms) "eBh" = ( /obj/structure/railing/corner, /obj/effect/decal/cleanable/dirt/dust, @@ -9953,10 +9584,48 @@ }, /turf/open/floor/iron/freezer, /area/crew_quarters/kitchen/coldroom) +"eCn" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Atmos to Loop" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/engine/engineering) +"eCq" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Office"; + req_access_txt = 0; + req_one_access_txt = "1;4" + }, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "eCB" = ( /obj/effect/spawner/room/fivexfour, /turf/open/floor/plating, /area/maintenance/department/medical/central) +"eDg" = ( +/obj/effect/turf_decal/siding/white{ + alpha = 100 + }, +/obj/structure/flora/ausbushes/ywflowers, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 1; + pixel_y = 26 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/crew_quarters/dorms) "eDk" = ( /obj/machinery/atmospherics/pipe/multiz/layer4{ dir = 8 @@ -10103,6 +9772,15 @@ }, /turf/open/floor/iron/dark, /area/security/brig) +"eGO" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/medical/central) "eHa" = ( /obj/machinery/telecomms/bus/preset_four, /obj/effect/turf_decal/stripes/closeup{ @@ -10119,6 +9797,13 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) +"eHe" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "eHB" = ( /obj/effect/turf_decal/bot, /obj/machinery/washing_machine, @@ -10337,23 +10022,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"eNV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/iron, -/area/hallway/secondary/service) "eOa" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -10372,6 +10040,20 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/engine/engineering) +"eOH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/sand/plating, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/iron, +/area/crew_quarters/dorms) "eOM" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -10486,14 +10168,6 @@ /obj/item/clothing/glasses/hud/security/sunglasses, /turf/open/floor/carpet/red, /area/security/detectives_office) -"eQB" = ( -/obj/structure/sink/kitchen{ - pixel_y = 22 - }, -/turf/open/floor/iron/dark, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "eQF" = ( /obj/effect/turf_decal/bot, /obj/structure/table, @@ -10522,17 +10196,16 @@ }, /turf/open/floor/iron/dark, /area/science/robotics) -"eQW" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_one_access_txt = "1;4" +"eSh" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 +/obj/item/radio/intercom{ + dir = 1; + pixel_y = -35 }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) +/turf/open/floor/iron, +/area/security/brig) "eSq" = ( /obj/effect/landmark/blobstart, /turf/open/floor/plating, @@ -10572,6 +10245,19 @@ }, /turf/open/floor/wood/broken, /area/crew_quarters/cafeteria) +"eTK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) +"eUf" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/camera/autoname{ + dir = 8 + }, +/obj/machinery/gibber, +/turf/open/floor/iron/freezer, +/area/crew_quarters/kitchen/coldroom) "eUg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -10598,6 +10284,16 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/captain/private) +"eUC" = ( +/obj/structure/chair/fancy/sofa/old/left{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "eUY" = ( /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/planetary, @@ -10685,6 +10381,21 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) +"eWv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "1-16" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/chapel) "eWC" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -10807,29 +10518,6 @@ }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) -"eZo" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Cryogenic Lounge" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/showroomfloor, -/area/crew_quarters/cryopods) "eZt" = ( /turf/closed/wall/rust, /area/science/xenobiology) @@ -10902,6 +10590,28 @@ }, /turf/open/floor/iron/dark, /area/storage/primary) +"fbs" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/obj/machinery/light, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/sorting/mail{ + dir = 8; + sortType = 14 + }, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = -31 + }, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/science/lab) "fbA" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/delivery, @@ -10956,6 +10666,19 @@ }, /turf/open/floor/iron, /area/maintenance/department/science/xenobiology) +"fdd" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/turf/open/floor/iron/tech, +/area/science/mixing/chamber) "fdh" = ( /turf/open/openspace, /area/ai_monitored/turret_protected/aisat/maint) @@ -10994,6 +10717,35 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, /area/maintenance/department/science/xenobiology) +"feI" = ( +/obj/structure/rack, +/obj/item/electronics/firelock{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/electronics/airalarm, +/obj/item/electronics/apc{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/electronics/firealarm{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/multitool, +/obj/item/clothing/gloves/color/yellow, +/obj/effect/spawner/lootdrop/techstorage/engineering, +/obj/effect/spawner/lootdrop/techstorage/engineering, +/obj/item/radio/intercom{ + pixel_y = 23 + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/light_switch{ + pixel_x = 23; + pixel_y = 23 + }, +/turf/open/floor/iron/dark, +/area/storage/tech) "ffv" = ( /obj/effect/turf_decal/siding/wideplating/terracotta{ dir = 8 @@ -11049,6 +10801,15 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/captain) +"fgF" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/eva) "fgO" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/corner, @@ -11095,6 +10856,17 @@ /obj/item/gun/ballistic/revolver/russian, /turf/open/floor/iron/dark, /area/security/nuke_storage) +"fhR" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/iron/dark/side{ + dir = 5 + }, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "fhV" = ( /obj/structure/closet/toolcloset, /obj/effect/turf_decal/bot, @@ -11136,6 +10908,15 @@ }, /turf/open/floor/iron/tech, /area/engine/atmos) +"fib" = ( +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/plating, +/area/maintenance/department/crew_quarters/dorms) +"fic" = ( +/obj/structure/lattice/catwalk/over, +/obj/machinery/firealarm/directional/east, +/turf/open/openspace, +/area/maintenance/department/engine/atmos) "fiu" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/door/airlock/maintenance_hatch{ @@ -11147,6 +10928,25 @@ }, /turf/open/floor/iron, /area/maintenance/department/engine) +"fiC" = ( +/obj/structure/table/reinforced, +/obj/item/storage/pill_bottle/dice{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/item/toy/plush/nukeplushie{ + pixel_x = -11; + pixel_y = 9 + }, +/turf/open/floor/prison, +/area/security/prison) +"fiF" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/turf/closed/mineral/random/air, +/area/asteroid/paradise) "fiN" = ( /obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ alpha = 180; @@ -11192,6 +10992,18 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/iron, /area/maintenance/department/science/xenobiology) +"fjt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/engine/engineering) "fkk" = ( /obj/item/trash/semki, /turf/open/floor/plating/beach/sand, @@ -11277,21 +11089,6 @@ }, /turf/open/floor/iron/dark, /area/medical/morgue) -"fnA" = ( -/obj/machinery/telecomms/relay/preset/auto, -/obj/machinery/door/window/northleft{ - name = "Engi Desk"; - req_one_access_txt = "32;19" - }, -/obj/structure/window/reinforced/survival_pod, -/obj/structure/cable/yellow, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "fnC" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -11327,21 +11124,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/theatre/backstage) -"fpo" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - alpha = 180; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "fpu" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -11431,6 +11213,19 @@ }, /turf/open/floor/iron/dark, /area/bridge) +"fqC" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/crew_quarters/dorms) "fqM" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/closet/toolcloset, @@ -11515,6 +11310,25 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) +"fsF" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) +"fsU" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 1; + initialize_directions = 1 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/tech, +/area/engine/engineering) "fta" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 4 @@ -11584,13 +11398,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"fuG" = ( -/obj/structure/stairs{ - dir = 1 - }, -/obj/structure/fans/tiny, -/turf/open/floor/pod/dark, -/area/maintenance/department/engine/atmos) "fuJ" = ( /obj/structure/cable/yellow{ icon_state = "0-2" @@ -11749,14 +11556,6 @@ "fyA" = ( /turf/closed/wall, /area/science/robotics) -"fyH" = ( -/obj/machinery/nuclearbomb/selfdestruct{ - base_icon_state = null - }, -/turf/open/floor/circuit/green{ - luminosity = 2 - }, -/area/security/nuke_storage) "fzp" = ( /obj/structure/table/reinforced, /obj/effect/spawner/lootdrop/maintenance, @@ -11855,6 +11654,18 @@ /obj/machinery/telecomms/server/presets/medical, /turf/open/floor/circuit/green/telecomms/mainframe, /area/tcommsat/server) +"fBU" = ( +/obj/structure/stairs, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_x = -15; + pixel_y = -31 + }, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/pod/dark, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "fBW" = ( /obj/structure/closet/crate/medical, /obj/effect/spawner/lootdrop/ruinloot/medical, @@ -11950,13 +11761,19 @@ }, /turf/open/floor/engine/co2, /area/engine/atmos) -"fDH" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +"fEe" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/crew_quarters/cryopods) "fEs" = ( /obj/structure/closet/secure_closet/personal, /obj/effect/turf_decal/bot, @@ -11998,22 +11815,17 @@ /obj/machinery/fax/eng, /turf/open/floor/iron, /area/engine/engineering) -"fFT" = ( -/obj/structure/dresser, -/obj/item/flashlight/lamp/green{ - pixel_x = -4; - pixel_y = 14 - }, -/obj/item/toy/plush/lisa{ - pixel_x = 5; - pixel_y = 15 - }, -/turf/open/floor/carpet/blue, -/area/crew_quarters/heads/hop) "fFU" = ( /obj/effect/spawner/room/threexfive, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"fFZ" = ( +/obj/structure/sign/painting/library{ + pixel_x = 1; + pixel_y = 29 + }, +/turf/open/openspace, +/area/crew_quarters/kitchen) "fGn" = ( /obj/machinery/door/airlock/vault{ name = "Vault Door"; @@ -12264,33 +12076,9 @@ /obj/item/crowbar/red, /turf/open/floor/wood, /area/vacant_room/office) -"fMW" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "fMX" = ( /turf/closed/wall, /area/crew_quarters/dorms) -"fNb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 6 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "fNN" = ( /obj/structure/chair/fancy/bench/pew/left{ dir = 1 @@ -12323,19 +12111,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/science/mixing) -"fOE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_y = 28 - }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_y = 23 - }, -/obj/item/paicard, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) "fOH" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ @@ -12391,23 +12166,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/maintenance/department/science/central) -"fPA" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 4 - }, -/obj/structure/table, -/obj/effect/turf_decal/tile/yellow/fourcorners/contrasted{ - alpha = 230; - color = "#edaa0c" - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/belt/utility, -/obj/item/t_scanner, -/obj/item/radio/intercom{ - pixel_y = 29 - }, -/turf/open/floor/iron, -/area/engine/atmos) "fPV" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -12473,6 +12231,20 @@ /obj/machinery/suit_storage_unit/mining/eva, /turf/open/floor/iron/dark, /area/quartermaster/storage) +"fQH" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "fQP" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -12571,6 +12343,15 @@ }, /turf/open/floor/iron/white, /area/science/lab) +"fSH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/curtain/directional, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/quartermaster/qm) "fSJ" = ( /obj/machinery/shower{ dir = 8; @@ -12661,16 +12442,6 @@ /obj/machinery/light, /turf/open/floor/iron/dark, /area/engine/atmos) -"fUl" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/vending/dinnerware, -/obj/machinery/requests_console{ - department = "Kitchen"; - departmentType = 2; - pixel_y = 30 - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/kitchen) "fUG" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -12823,27 +12594,12 @@ /obj/structure/fence, /turf/open/floor/plating/grass, /area/asteroid/paradise/surface) -"fYp" = ( -/obj/structure/noticeboard{ - name = "bounty list"; - pixel_x = 1; - pixel_y = 33 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname{ - dir = 4; - network = list("ss13","cargo") - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/iron/sepia, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) +"fXo" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "fYK" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -12885,6 +12641,22 @@ }, /turf/open/floor/plating, /area/maintenance/department/bridge) +"fZl" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/holopad, +/obj/effect/turf_decal/box, +/turf/open/floor/iron, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "fZm" = ( /obj/machinery/computer/bounty{ dir = 4 @@ -12920,14 +12692,22 @@ }, /turf/open/floor/iron, /area/security/brig) -"fZB" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "fZR" = ( /turf/closed/wall, /area/maintenance/department/chapel) +"fZX" = ( +/obj/item/reagent_containers/food/drinks/shaker{ + pixel_x = -8; + pixel_y = 2 + }, +/obj/structure/table/wood, +/obj/machinery/reagentgrinder{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) "fZY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -13014,25 +12794,6 @@ slowdown = 0 }, /area/asteroid/paradise/surface) -"gbZ" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/northright{ - dir = 2; - icon_state = "right"; - name = "Engi Desk"; - req_one_access_txt = "32;19" - }, -/obj/item/toy/figure/engineer{ - pixel_x = 3; - pixel_y = -1 - }, -/obj/machinery/door/poddoor/preopen{ - id = "Engidesk"; - name = "engineering security door" - }, -/turf/open/floor/iron/dark, -/area/engine/engineering) "gcq" = ( /obj/machinery/light_switch{ pixel_x = 25; @@ -13169,16 +12930,6 @@ }, /turf/open/floor/plating, /area/security/brig) -"gez" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/kitchen) "geB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -13210,6 +12961,24 @@ }, /turf/open/floor/iron/dark, /area/storage/primary) +"gfK" = ( +/obj/structure/urinal{ + dir = 1; + pixel_x = 1; + pixel_y = 33 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -31; + pixel_y = -2 + }, +/turf/open/floor/iron/freezer, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "gfQ" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -13243,49 +13012,6 @@ "ggs" = ( /turf/closed/wall/rust, /area/maintenance/department/engine) -"ggt" = ( -/obj/structure/table/reinforced, -/obj/item/storage/fancy/donut_box{ - name = "Emergency donut box"; - pixel_x = -2; - pixel_y = 15 - }, -/obj/item/gun/energy/e_gun/dragnet{ - pixel_x = -2; - pixel_y = 1 - }, -/obj/item/beacon/nettingportal, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ - alpha = 180; - color = "#DE3A3A" - }, -/obj/machinery/camera/motion{ - c_tag = "Armory - Internal"; - dir = 4; - network = list("ss13","security") - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -11 - }, -/turf/open/floor/iron/dark, -/area/ai_monitored/security/armory) -"ggA" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/turf/open/floor/iron, -/area/quartermaster/sorting) "ghc" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -13363,6 +13089,20 @@ "giS" = ( /turf/open/floor/plating/asteroid/planetary, /area/engine/atmos) +"giU" = ( +/obj/structure/chair/stool/bar{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 1; + pixel_y = -35 + }, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/cafeteria) "gjn" = ( /obj/machinery/newscaster{ pixel_x = 31; @@ -13521,25 +13261,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/eva) -"glP" = ( -/obj/effect/spawner/structure/window, -/obj/structure/curtain/directional{ - color = "#ACD1E9"; - dir = 2; - icon_state = "bathroom-open"; - icon_type = "bathroom" - }, -/turf/open/floor/plating, -/area/medical/surgery) -"glR" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "1-32" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/crew_quarters/bar) "gmf" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/table, @@ -13612,27 +13333,6 @@ }, /turf/open/floor/iron, /area/security/execution/education) -"gmv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/door/poddoor{ - id = "engstorage"; - name = "Engineering Secure Storage Lockdown" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/engine/engineering) "gmU" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -13745,10 +13445,6 @@ }, /turf/open/floor/iron/tech/grid, /area/ai_monitored/turret_protected/aisat_interior) -"gpm" = ( -/obj/structure/lattice, -/turf/open/openspace, -/area/maintenance/department/security/brig) "gpR" = ( /obj/machinery/telecomms/processor/preset_one, /obj/effect/turf_decal/stripes/line{ @@ -13807,6 +13503,11 @@ }, /turf/open/floor/pod/dark, /area/bridge/meeting_room) +"grQ" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "grS" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -13842,6 +13543,15 @@ }, /turf/open/floor/iron/dark, /area/bridge) +"gth" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/closet/secure_closet/genpop, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/dark, +/area/security/prison) "gtH" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/grille_or_trash, @@ -13903,28 +13613,6 @@ }, /turf/open/floor/iron/sepia, /area/quartermaster/warehouse) -"gvF" = ( -/obj/effect/spawner/lootdrop/aimodule_harmless, -/obj/effect/spawner/lootdrop/aimodule_harmless, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/flasher{ - id = "AI"; - pixel_x = -1; - pixel_y = 32 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/spawner/lootdrop/aimodule_harmless, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/table/reinforced, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai_upload) "gvQ" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/scrubber/huge, @@ -13933,6 +13621,33 @@ }, /turf/open/floor/iron/dark, /area/science/mixing) +"gwb" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + alpha = 180; + dir = 1 + }, +/obj/machinery/camera/autoname{ + dir = 4; + network = list("ss13","security") + }, +/obj/machinery/button/door{ + id = "armory"; + name = "Armory Shutter Toggle"; + pixel_x = -32; + pixel_y = 1; + req_access_txt = "3" + }, +/obj/structure/bed/dogbed/walter, +/mob/living/simple_animal/pet/dog/bullterrier/walter{ + density = 0; + dir = 1 + }, +/obj/item/stack/sheet/bone{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/open/floor/iron/dark, +/area/security/warden) "gwg" = ( /obj/structure/filingcabinet/chestdrawer, /obj/effect/turf_decal/bot, @@ -14003,19 +13718,6 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) -"gxb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/obj/machinery/turretid{ - control_area = "/area/ai_monitored/turret_protected/ai_upload"; - icon_state = "control_stun"; - name = "AI Upload turret control"; - pixel_x = -33; - pixel_y = 2 - }, -/turf/open/floor/iron/tech/grid, -/area/ai_monitored/turret_protected/aisat_interior) "gyq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -14150,13 +13852,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/aisat/foyer) -"gBe" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/lattice, -/turf/open/openspace, -/area/maintenance/department/security/brig) "gBj" = ( /obj/machinery/door/window/brigdoor{ dir = 4; @@ -14171,6 +13866,31 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/rust, /area/science/test_area) +"gBS" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) +"gCg" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/northright{ + dir = 2; + name = "Engi Desk"; + req_one_access_txt = "32;19" + }, +/obj/item/toy/figure/engineer{ + pixel_x = 3; + pixel_y = -1 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Engidesk"; + name = "engineering security door" + }, +/turf/open/floor/iron/dark, +/area/engine/engineering) "gCM" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/small, @@ -14202,6 +13922,11 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron/white, /area/medical/medbay/central) +"gDk" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "gDp" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/side{ @@ -14330,6 +14055,13 @@ }, /turf/open/floor/iron, /area/medical/genetics/cloning) +"gFG" = ( +/obj/structure/lattice/catwalk/over, +/obj/machinery/firealarm/directional/east, +/turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "gFM" = ( /obj/effect/turf_decal/tile/purple/fourcorners/contrasted, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -14449,16 +14181,69 @@ }, /turf/open/floor/iron/dark, /area/teleporter) -"gJk" = ( -/obj/structure/flora/ausbushes/sparsegrass, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 +"gJg" = ( +/obj/item/radio/intercom{ + freerange = 1; + name = "Common Channel"; + pixel_x = 29; + pixel_y = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ +/obj/item/radio/intercom{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_x = 29; + pixel_y = 35 + }, +/obj/item/radio/intercom{ + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_x = 29; + pixel_y = 20 + }, +/obj/effect/landmark/start/ai, +/obj/machinery/button/door{ + id = "AI Chamber entrance shutters"; + name = "AI Chamber Lockdown"; + pixel_x = -25; + pixel_y = 8; + req_access_txt = "16" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/button/door{ + id = "AIwindows"; + name = "AI View Blast doors"; + pixel_x = -38; + pixel_y = 8; + req_access_txt = "19" + }, +/obj/machinery/button/door{ + id = "AI Core shutters"; + name = "AI Core Shutters Toggle"; + pixel_x = -38; + pixel_y = -3; + req_access_txt = "16" + }, +/turf/open/floor/circuit/red, +/area/ai_monitored/turret_protected/ai) +"gJt" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + alpha = 180 + }, +/turf/open/floor/iron/dark/corner{ dir = 8 }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "gJv" = ( /obj/structure/ladder, /turf/open/floor/pod/dark, @@ -14584,6 +14369,13 @@ /obj/item/storage/belt/utility/full/engi, /turf/open/floor/iron, /area/engine/engineering) +"gNq" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "gNr" = ( /obj/effect/turf_decal/evac/evac_big{ dir = 4 @@ -14792,6 +14584,13 @@ slowdown = 0 }, /area/asteroid/paradise/surface) +"gRo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "gRN" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -14811,6 +14610,11 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/carpet/royalblack, /area/vacant_room/office) +"gSq" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "gSt" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -14914,18 +14718,6 @@ }, /turf/open/floor/plating, /area/security/brig) -"gVY" = ( -/obj/structure/flora/junglebush/b{ - max_integrity = 20 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/grass/no_border, -/area/medical/storage) "gWa" = ( /turf/open/floor/grass/no_border, /area/hallway/primary/aft{ @@ -14964,15 +14756,6 @@ /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, /area/maintenance/department/medical/central) -"gWS" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/sand/plating, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/iron/techmaint/planetary, -/area/asteroid/paradise/surface) "gWU" = ( /obj/machinery/door/poddoor/shutters/radiation/preopen{ id = "engsm"; @@ -15030,6 +14813,17 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) +"gXk" = ( +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + alpha = 180 + }, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "gXn" = ( /obj/structure/cable{ icon_state = "1-2" @@ -15176,6 +14970,15 @@ }, /turf/open/floor/plating/dirt/planetary, /area/asteroid/paradise/surface/grass) +"haF" = ( +/obj/structure/chair/stool/bar{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 32 + }, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/cafeteria) "haI" = ( /obj/structure/sign/directions/security{ dir = 1; @@ -15413,86 +15216,29 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"hif" = ( +/obj/structure/cable/yellow{ + icon_state = "4-32" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/medical/central) "hig" = ( /obj/structure/flora/grass/jungle/b, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) -"hiA" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "hiB" = ( /turf/closed/wall, /area/asteroid/paradise) -"hjO" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/closet/wardrobe/grey, -/obj/effect/turf_decal/bot, -/obj/machinery/light, -/obj/item/paicard, -/turf/open/floor/iron, -/area/crew_quarters/dorms) "hjU" = ( /turf/open/openspace, /area/science/mixing) -"hkO" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_y = -33 - }, -/turf/open/floor/iron/dark, -/area/engine/engineering) "hkP" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/plasma, /turf/open/floor/iron, /area/engine/engineering) -"hkT" = ( -/obj/structure/rack, -/obj/item/electronics/firelock{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/electronics/airalarm, -/obj/item/electronics/apc{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/electronics/firealarm{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/item/multitool, -/obj/item/clothing/gloves/color/yellow, -/obj/effect/spawner/lootdrop/techstorage/engineering, -/obj/effect/spawner/lootdrop/techstorage/engineering, -/obj/item/radio/intercom{ - pixel_y = 23 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/light_switch{ - pixel_x = 23; - pixel_y = 23 - }, -/turf/open/floor/iron/dark, -/area/storage/tech) "hkV" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners{ dir = 8 @@ -15541,12 +15287,6 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/airless, /area/science/test_area) -"hnA" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "hnY" = ( /obj/structure/sign/departments/minsky/research/research, /turf/closed/wall/r_wall, @@ -15768,6 +15508,11 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/science/central) +"hts" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "htB" = ( /obj/machinery/door/airlock/medical/glass{ name = "Chemistry Lab"; @@ -15786,6 +15531,27 @@ }, /turf/open/floor/iron/white, /area/medical/apothecary) +"htC" = ( +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = 31; + pixel_y = -2 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/quartermaster/sorting) "htV" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/door/airlock/maintenance_hatch{ @@ -15795,14 +15561,6 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) -"huA" = ( -/obj/structure/sign/directions/engineering{ - pixel_y = 10 - }, -/turf/closed/wall, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "huR" = ( /obj/structure/lattice, /obj/structure/railing{ @@ -15817,6 +15575,28 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/bridge) +"hvh" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/light{ + light_color = "#7AC3FF" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "hvu" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -16053,35 +15833,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/engine/engineering) -"hAr" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/flora/rock, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) -"hAw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/small, -/obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ - alpha = 180; - color = "#DE3A3A" - }, -/obj/machinery/flasher{ - id = "brigentryaux"; - pixel_y = -38; - range = 3 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 1; - pixel_y = -28 - }, -/turf/open/floor/iron, -/area/security/brig) "hAB" = ( /obj/structure/altar_of_gods, /obj/item/flashlight/lantern{ @@ -16099,6 +15850,19 @@ /obj/structure/barricade/wooden, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) +"hAU" = ( +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + alpha = 180 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "hAV" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 @@ -16190,6 +15954,11 @@ }, /turf/open/floor/iron, /area/maintenance/department/engine) +"hCx" = ( +/obj/structure/flora/rock/pile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "hCL" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -16266,6 +16035,15 @@ }, /turf/open/floor/plating, /area/hallway/secondary/service) +"hGc" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/techmaint/planetary, +/area/asteroid/paradise/surface) "hGe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 @@ -16282,6 +16060,15 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) +"hGq" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/lootdrop/glowstick/lit, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/cable/yellow{ + icon_state = "2-16" + }, +/turf/open/floor/pod/dark, +/area/maintenance/department/eva) "hGN" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -16326,17 +16113,6 @@ }, /turf/open/indestructible/sound/pool, /area/crew_quarters/fitness/recreation) -"hIZ" = ( -/obj/structure/railing{ - dir = 9 - }, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "hJA" = ( /obj/structure/window/reinforced, /turf/open/floor/engine, @@ -16408,13 +16184,12 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/iron/dark, /area/security/detectives_office) -"hKZ" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{ - dir = 4; - piping_layer = 4 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +"hLc" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/item/paicard, +/turf/open/floor/plating, +/area/maintenance/department/chapel) "hLr" = ( /obj/structure/table/wood, /obj/item/folder/yellow{ @@ -16596,6 +16371,23 @@ }, /turf/open/floor/iron/sepia, /area/quartermaster/storage) +"hRD" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/structure/chair/fancy/bench{ + layer = 2.5 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 1; + pixel_y = 32 + }, +/turf/open/floor/iron, +/area/security/prison) "hRI" = ( /obj/structure/ladder, /obj/structure/railing{ @@ -16687,6 +16479,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"hTd" = ( +/obj/structure/flora/rock/pile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "hTi" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -16703,11 +16502,36 @@ }, /turf/open/floor/iron, /area/maintenance/department/chapel) +"hTq" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = 32; + pixel_y = -2 + }, +/turf/open/floor/iron/dark, +/area/engineering/hallway{ + name = "Engineering Viewing Platform" + }) "hTE" = ( /obj/machinery/telecomms/message_server/preset, /obj/effect/turf_decal/stripes/closeup, /turf/open/floor/circuit/green/telecomms/mainframe, /area/tcommsat/server) +"hTM" = ( +/obj/structure/closet/cardboard, +/obj/effect/spawner/lootdrop/maintenance/four, +/obj/item/melee/flyswatter, +/obj/item/paicard, +/turf/open/floor/iron, +/area/maintenance/department/science/central) "hTN" = ( /obj/effect/turf_decal/siding/dark{ dir = 8 @@ -16735,6 +16559,36 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) +"hUe" = ( +/obj/effect/spawner/structure/window, +/obj/structure/curtain/directional{ + color = "#ACD1E9"; + icon_state = "bathroom-open"; + icon_type = "bathroom" + }, +/turf/open/floor/plating, +/area/medical/surgery) +"hUj" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "hUk" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -16748,21 +16602,6 @@ /obj/structure/grille/broken, /turf/open/floor/iron, /area/ai_monitored/turret_protected/aisat/maint) -"hUJ" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted{ - alpha = 180 - }, -/obj/machinery/fax/bridge, -/obj/item/toy/plush/renault{ - pixel_x = 5; - pixel_y = 3 - }, -/turf/open/floor/iron/dark, -/area/bridge) "hUO" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -16801,22 +16640,6 @@ }, /turf/open/floor/plating/airless, /area/science/mixing) -"hXU" = ( -/obj/machinery/nanite_program_hub, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science RC"; - pixel_y = 30; - receive_ore_updates = 1 - }, -/obj/machinery/camera/autoname{ - dir = 2; - network = list("ss13","rd") - }, -/turf/open/floor/iron, -/area/science/research) "hYe" = ( /obj/effect/turf_decal/siding/yellow, /obj/effect/turf_decal/trimline/yellow/warning, @@ -16996,6 +16819,18 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/rust, /area/science/mixing) +"icQ" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/quartermaster/sorting) "idf" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/grille_or_trash, @@ -17025,6 +16860,14 @@ }, /turf/open/floor/iron, /area/medical/medbay/central) +"idv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/iron, +/area/maintenance/department/engine) "idO" = ( /obj/machinery/portable_atmospherics/pump, /obj/effect/turf_decal/bot, @@ -17045,15 +16888,23 @@ }, /turf/open/floor/iron/dark, /area/medical/medbay/central) -"ifk" = ( +"ifm" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/obj/machinery/shieldgen, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = -31 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor{ + id = "engstorage"; + name = "Engineering Secure Storage Lockdown" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, /area/engine/engineering) "ifA" = ( /turf/open/openspace, @@ -17123,35 +16974,6 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) -"igk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "8-16" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/cable/yellow{ - icon_state = "8-32" - }, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/bridge) -"igs" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = 4; - pixel_y = 9 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Chefwindow"; - name = "Chef window" - }, -/obj/item/toy/figure/chef{ - pixel_y = -1; - pixel_x = -4 - }, -/turf/open/floor/iron/white, -/area/crew_quarters/kitchen) "igz" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/modular_computer/console/preset/curator, @@ -17185,24 +17007,6 @@ "ihL" = ( /turf/closed/wall/r_wall/rust, /area/maintenance/disposal/incinerator) -"ihN" = ( -/obj/structure/urinal{ - dir = 1; - pixel_x = 1; - pixel_y = 33 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -31; - pixel_y = -2 - }, -/turf/open/floor/iron/freezer, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "iil" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners{ dir = 8 @@ -17292,10 +17096,6 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/cafeteria) -"ijW" = ( -/obj/machinery/camera/autoname, -/turf/open/openspace, -/area/crew_quarters/kitchen) "ikr" = ( /obj/structure/railing{ dir = 1 @@ -17399,6 +17199,20 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/white, /area/crew_quarters/heads/hor) +"inI" = ( +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "2-32" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/security/brig) "inZ" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -17412,13 +17226,17 @@ }, /turf/open/floor/carpet/royalblue, /area/crew_quarters/heads/captain) -"ion" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 +"iox" = ( +/obj/structure/closet/emcloset/anchored, +/obj/structure/railing{ + dir = 10 }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "ioR" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -17455,24 +17273,6 @@ }, /turf/open/openspace, /area/security/brig) -"ipG" = ( -/obj/structure/sign/directions/science{ - dir = 4; - pixel_y = 10 - }, -/turf/closed/wall, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) -"irk" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - initialize_directions = 1 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/tech, -/area/engine/engineering) "irp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -17600,43 +17400,15 @@ }, /turf/open/floor/plating/asteroid/planetary, /area/crew_quarters/dorms) -"ivf" = ( -/obj/effect/turf_decal/tile/dark_green/fourcorners/contrasted, -/mob/living/simple_animal/hostile/retaliate/frog{ - attacked_sound = 'sound/effects/huuu.ogg'; - dir = 8; - name = "Larry"; - pixel_y = 12; - stepped_sound = null - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/turf/open/floor/iron, -/area/hydroponics) -"ivO" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "8-32" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/science/central) "iwb" = ( /turf/closed/wall/r_wall, /area/maintenance/department/engine/atmos) -"iwg" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12"; - security_level = 6 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) +"iwl" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "iwn" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ @@ -17688,6 +17460,25 @@ }, /turf/open/floor/iron, /area/bridge/meeting_room) +"ixf" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) "ixz" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -17695,25 +17486,10 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/dock/drydock, /area/quartermaster/storage) -"ixD" = ( -/obj/structure/chair, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 32; - pixel_y = 3 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) +"iya" = ( +/obj/effect/turf_decal/sand/plating, +/turf/closed/mineral/random/air, +/area/asteroid/paradise) "iyb" = ( /obj/effect/turf_decal/tile/black/opposingcorners{ dir = 1 @@ -17732,15 +17508,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/iron/dark, /area/ai_monitored/security/armory) -"iyq" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "iyS" = ( /turf/closed/wall, /area/medical/exam_room) +"izd" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "izj" = ( /turf/closed/wall, /area/science/misc_lab) @@ -17753,15 +17528,13 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) -"iAk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/lootdrop/glowstick/lit, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/cable/yellow{ - icon_state = "2-16" +"izt" = ( +/obj/structure/railing{ + dir = 5 }, -/turf/open/floor/pod/dark, -/area/maintenance/department/eva) +/obj/structure/lattice, +/turf/open/openspace, +/area/maintenance/department/security/brig) "iAI" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -17781,6 +17554,19 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) +"iAM" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/structure/chair/fancy/bench{ + layer = 2.5 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron, +/area/security/prison) "iAN" = ( /obj/structure/chair/office{ dir = 1 @@ -17797,6 +17583,13 @@ /obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) +"iBP" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/maintenance/department/crew_quarters/dorms) "iBU" = ( /obj/item/kirbyplants/random, /obj/structure/disposalpipe/segment{ @@ -17812,16 +17605,24 @@ /obj/structure/frame/machine, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"iDj" = ( -/obj/structure/flora/rock/pile, -/turf/closed/mineral/random/air, -/area/asteroid/paradise) "iDI" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/plating/asteroid/basalt/planetary, /area/science/misc_lab) +"iEa" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/trimline/dark_blue/filled/line, +/obj/structure/railing/corner, +/obj/item/storage/secure/safe/caps_spare{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/iron/dark, +/area/bridge/meeting_room) "iEh" = ( /obj/machinery/firealarm/directional/east, /obj/structure/fireplace, @@ -17878,6 +17679,20 @@ /obj/structure/cable/yellow, /turf/open/floor/plating, /area/crew_quarters/heads/hor) +"iFx" = ( +/obj/machinery/computer/cloning, +/obj/effect/turf_decal/bot, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/north{ + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/iron, +/area/medical/genetics/cloning) "iGq" = ( /turf/closed/wall/rust, /area/quartermaster/warehouse) @@ -17989,18 +17804,36 @@ }, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) -"iJz" = ( -/obj/effect/mapping_helpers/airlock/unres{ +"iJe" = ( +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 32; + pixel_y = 29 + }, +/turf/open/floor/iron/dark/corner{ dir = 8 }, -/obj/machinery/door/airlock/medical/glass{ - name = "kitchen"; - req_one_access_txt = "28;25;35" +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) +"iJL" = ( +/obj/machinery/light_switch{ + pixel_x = 25; + pixel_y = -25 }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/dark, -/area/crew_quarters/kitchen) +/obj/machinery/light, +/obj/item/kirbyplants/random, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/crew_quarters/cryopods) "iKu" = ( /obj/machinery/door/airlock/public/glass{ name = "Cryogenic Lounge" @@ -18120,19 +17953,17 @@ /obj/item/bluespace_capsule, /turf/open/floor/plating, /area/vacant_room/office) -"iMF" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +"iMI" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 5 }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 +/obj/machinery/suit_storage_unit/mining/eva, +/obj/machinery/light_switch{ + pixel_x = 23; + pixel_y = -9 }, -/turf/open/floor/iron, -/area/maintenance/department/science/xenobiology) +/turf/open/floor/carpet/orange, +/area/quartermaster/qm) "iNk" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/airless, @@ -18174,21 +18005,6 @@ }, /turf/open/floor/iron, /area/janitor) -"iNP" = ( -/obj/machinery/light_switch{ - pixel_x = 25; - pixel_y = -25 - }, -/obj/machinery/light, -/obj/item/kirbyplants/random, -/obj/machinery/camera/autoname{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/crew_quarters/cryopods) "iOA" = ( /obj/machinery/conveyor{ id = "QMLoad2" @@ -18201,6 +18017,16 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) +"iOV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/science/central) "iPs" = ( /obj/effect/turf_decal/siding/dark, /obj/effect/turf_decal/siding/dark{ @@ -18221,16 +18047,20 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/hop) -"iPM" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/flora/ausbushes/sparsegrass, +"iPK" = ( +/obj/structure/flora/ausbushes/ywflowers, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) +"iPP" = ( +/obj/structure/sign/directions/engineering{ + pixel_y = 10 + }, +/turf/closed/wall, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "iQa" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 @@ -18249,6 +18079,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/chapel) +"iQo" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/openspace, +/area/maintenance/department/security/brig) "iQq" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/evac, @@ -18256,15 +18093,6 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) -"iQS" = ( -/obj/item/radio/intercom{ - pixel_x = -31; - pixel_y = -2 - }, -/turf/open/openspace, -/area/engineering/hallway{ - name = "Engineering Viewing Platform" - }) "iRc" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -18362,12 +18190,6 @@ /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron, /area/security/brig) -"iTH" = ( -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) "iTL" = ( /obj/item/radio/intercom{ pixel_y = 30 @@ -18601,24 +18423,6 @@ /obj/machinery/atmospherics/components/unary/thermomachine/heater/on, /turf/open/floor/iron, /area/engine/atmos) -"iZm" = ( -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ - dir = 8; - node1_concentration = 0.79; - node2_concentration = 0.21; - piping_layer = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/structure/window/plasma/reinforced{ - dir = 1 - }, -/turf/open/floor/iron, -/area/engine/atmos) "iZu" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -18637,6 +18441,14 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"iZO" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/wardrobe/pink, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/sand/plating, +/obj/item/paicard, +/turf/open/floor/iron, +/area/crew_quarters/dorms) "iZV" = ( /turf/closed/wall, /area/ai_monitored/turret_protected/aisat/foyer) @@ -18675,6 +18487,20 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"jaF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/power/rad_collector, +/turf/open/floor/iron/dark, +/area/engine/engineering) "jaK" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 @@ -18699,6 +18525,22 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/crew_quarters/cafeteria) +"jcz" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 29; + pixel_y = -2 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "jdh" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -18710,14 +18552,6 @@ slowdown = 0 }, /area/asteroid/paradise/surface) -"jdF" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/engine/atmos) "jdU" = ( /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /obj/structure/cable/yellow{ @@ -18755,27 +18589,6 @@ dir = 8 }, /area/science/lab) -"jfL" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "jfU" = ( /obj/machinery/door/airlock/medical{ name = "Psychologist"; @@ -18842,15 +18655,6 @@ /obj/structure/girder, /turf/open/floor/plating, /area/maintenance/department/chapel) -"jji" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet, -/obj/machinery/light/small, -/obj/effect/spawner/lootdrop/maintenance/four, -/obj/item/paicard, -/turf/open/floor/iron, -/area/maintenance/department/medical/morgue) "jjj" = ( /obj/structure/noticeboard{ desc = "A board for remembering the fallen of the station."; @@ -18887,27 +18691,6 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) -"jkr" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) -"jks" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "jkx" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -18985,6 +18768,12 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/atmos) +"jmP" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "jmY" = ( /turf/open/floor/plating/beach/coastline_b, /area/asteroid/paradise/surface/water) @@ -19075,6 +18864,10 @@ }, /turf/open/openspace, /area/maintenance/department/security/brig) +"joL" = ( +/obj/structure/flora/rock/pile, +/turf/closed/mineral/random/air, +/area/asteroid/paradise) "jpU" = ( /obj/structure/railing/corner{ dir = 4 @@ -19101,18 +18894,6 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) -"jqF" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line, -/obj/structure/railing/corner, -/obj/item/storage/secure/safe/caps_spare{ - pixel_x = 5; - pixel_y = -32 - }, -/turf/open/floor/iron/dark, -/area/bridge/meeting_room) "jqN" = ( /obj/item/bikehorn{ pixel_x = -3; @@ -19249,31 +19030,6 @@ }, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) -"jsK" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "jsW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ @@ -19345,21 +19101,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/dorms) -"juB" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/obj/structure/table, -/obj/item/flashlight/flare{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/extinguisher/advanced{ - pixel_x = -8; - pixel_y = 2 - }, -/turf/open/floor/iron, -/area/engine/atmos) "jwj" = ( /obj/machinery/light{ dir = 8 @@ -19636,16 +19377,6 @@ /obj/effect/decal/cleanable/glass, /turf/open/floor/plating/rust, /area/science/test_area) -"jCI" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/computer/camera_advanced/xenobio, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 32; - pixel_y = -3 - }, -/turf/open/floor/iron/grid/steel, -/area/science/xenobiology) "jDq" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -19955,19 +19686,6 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) -"jIP" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/crew_quarters/dorms) "jJH" = ( /obj/structure/chair/stool{ dir = 4 @@ -19978,20 +19696,6 @@ dir = 9 }, /area/asteroid/paradise/surface) -"jJJ" = ( -/obj/structure/flora/ausbushes/ywflowers{ - max_integrity = 20 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/grass/no_border, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "jJL" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted{ alpha = 180 @@ -20047,21 +19751,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"jKJ" = ( -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 4 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 32; - pixel_y = 29 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "jKK" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 @@ -20151,19 +19840,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/maint) -"jLT" = ( -/obj/structure/chair/fancy/sofa/old/left{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/machinery/vending/wallmed{ - pixel_y = 31; - products = list(/obj/item/stack/medical/gauze = 4, /obj/item/reagent_containers/hypospray/medipen = 6, /obj/item/reagent_containers/hypospray/medipen/dexalin = 3, /obj/item/reagent_containers/glass/bottle/epinephrine = 2, /obj/item/reagent_containers/glass/bottle/charcoal = 2) - }, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) "jLX" = ( /obj/effect/spawner/structure/window, /obj/machinery/door/poddoor/shutters/preopen{ @@ -20263,6 +19939,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/security/execution/education) +"jOz" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/tech, +/area/engine/engineering) "jOC" = ( /obj/item/radio/intercom{ pixel_x = 33; @@ -20281,19 +19962,6 @@ }, /turf/open/floor/iron/dark, /area/bridge/meeting_room) -"jOM" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/power/apc/auto_name/north{ - pixel_y = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/iron, -/area/maintenance/department/cargo) "jOP" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -20385,14 +20053,10 @@ }, /turf/open/floor/iron/dark, /area/bridge) -"jRM" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/wardrobe/pink, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/sand/plating, -/obj/item/paicard, -/turf/open/floor/iron, -/area/crew_quarters/dorms) +"jRN" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "jSm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -20460,6 +20124,17 @@ }, /turf/open/floor/iron/grid/steel, /area/science/mixing) +"jUk" = ( +/obj/effect/landmark/start/assistant, +/obj/structure/cable/yellow{ + icon_state = "2-32" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "jUp" = ( /obj/machinery/portable_atmospherics/pump, /obj/effect/turf_decal/bot{ @@ -20545,6 +20220,34 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/central) +"jWf" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) +"jWk" = ( +/obj/structure/cable/yellow{ + icon_state = "2-16" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/pod/dark, +/area/maintenance/department/crew_quarters/dorms) +"jWl" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = 32; + pixel_y = -2 + }, +/turf/open/floor/iron/dark, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "jWU" = ( /obj/effect/turf_decal/tile/blue/half{ dir = 1 @@ -20635,6 +20338,18 @@ }, /turf/open/floor/iron, /area/ai_monitored/turret_protected/aisat/maint) +"jYE" = ( +/obj/machinery/power/compressor{ + comp_id = "incineratorturbineRight"; + dir = 1; + luminosity = 2 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable, +/turf/open/floor/engine/vacuum, +/area/maintenance/disposal/incinerator) "jYR" = ( /obj/effect/turf_decal/siding/dark, /obj/effect/turf_decal/siding/dark{ @@ -20710,20 +20425,6 @@ }, /turf/open/floor/iron/freezer, /area/crew_quarters/kitchen/coldroom) -"kam" = ( -/obj/structure/table, -/obj/item/geiger_counter{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/toy/plush/plushvar{ - pixel_x = -2; - pixel_y = 9 - }, -/turf/open/floor/iron/dark, -/area/engineering/hallway{ - name = "Engineering Viewing Platform" - }) "kao" = ( /obj/structure/chair/office/light{ dir = 1 @@ -20737,6 +20438,24 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/iron/dark, /area/engine/engineering) +"kax" = ( +/obj/structure/chair/fancy/sofa/old/left{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/turf_decal/siding/white, +/obj/structure/railing{ + layer = 3 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 29; + pixel_y = -3 + }, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "kbq" = ( /obj/structure/sign/warning/radiation/rad_area, /turf/closed/wall/r_wall, @@ -20777,11 +20496,26 @@ }, /turf/open/floor/iron/sepia, /area/quartermaster/warehouse) -"kcU" = ( -/obj/structure/lattice/catwalk/over, -/obj/machinery/firealarm/directional/north, -/turf/open/openspace, -/area/maintenance/department/security/brig) +"kcD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/machinery/computer/security/telescreen/entertainment{ + network = list("thunder","court","public"); + pixel_x = -1; + pixel_y = 31 + }, +/obj/machinery/light{ + dir = 1; + light_color = "#7AC3FF" + }, +/obj/item/storage/crayons{ + pixel_x = 3; + pixel_y = 4 + }, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "kcX" = ( /obj/machinery/computer/security/mining{ dir = 4 @@ -20831,14 +20565,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"keI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/cable/yellow{ - icon_state = "8-16" - }, -/turf/open/floor/pod/dark, -/area/maintenance/department/science/xenobiology) "keO" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -20857,15 +20583,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/asteroid/basalt/planetary, /area/quartermaster/storage) -"kfb" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "kfl" = ( /turf/closed/wall/r_wall, /area/bridge/meeting_room) @@ -20883,6 +20600,15 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) +"kgq" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/numbers/two_nine{ + pixel_y = 16 + }, +/turf/open/floor/iron/dark/side, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "kgt" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/fence/cut{ @@ -20921,21 +20647,6 @@ "khs" = ( /turf/closed/wall/rust, /area/science/lab) -"kie" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark/warning{ - dir = 8 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/engineering/hallway{ - name = "Engineering Viewing Platform" - }) "kiz" = ( /obj/effect/decal/cleanable/greenglow, /turf/open/floor/plating/dirt/jungle/wasteland, @@ -20971,6 +20682,24 @@ /obj/structure/cable/yellow, /turf/open/floor/plating, /area/ai_monitored/security/armory) +"klc" = ( +/obj/item/clothing/gloves/color/yellow, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/autoname{ + network = list("ss13","engine") + }, +/obj/structure/closet/secure_closet/atmospherics{ + anchored = 1; + req_access = null; + req_one_access_txt = "11" + }, +/obj/item/radio/intercom{ + pixel_x = -1; + pixel_y = 29 + }, +/turf/open/floor/iron, +/area/engine/atmos) "klh" = ( /obj/structure/flora/ausbushes/lavendergrass, /obj/effect/decal/cleanable/dirt, @@ -21020,17 +20749,6 @@ slowdown = 0 }, /area/asteroid/paradise/surface) -"klO" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = -31 - }, -/turf/open/floor/iron, -/area/engine/atmos) "kmg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -21050,6 +20768,16 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) +"kmz" = ( +/obj/structure/lattice/catwalk/over, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/closet/firecloset/full, +/turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "kmN" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/siding/wood{ @@ -21064,6 +20792,11 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /turf/open/floor/carpet/purple, /area/crew_quarters/cafeteria) +"kmO" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "kmS" = ( /obj/effect/turf_decal/tile/purple/half/contrasted, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -21078,23 +20811,6 @@ }, /turf/open/floor/iron, /area/security/brig) -"kmY" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/light_switch{ - pixel_x = 23; - pixel_y = -23 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre/backstage) "knd" = ( /obj/structure/table/reinforced, /obj/item/aiModule/reset, @@ -21169,26 +20885,6 @@ /obj/machinery/light/small, /turf/open/floor/iron, /area/maintenance/department/chapel) -"koq" = ( -/obj/machinery/computer/security/telescreen/minisat{ - dir = 4; - pixel_x = -32 - }, -/obj/structure/table/wood, -/obj/machinery/light{ - dir = 8 - }, -/obj/item/storage/secure/briefcase{ - layer = 3; - pixel_x = 15; - pixel_y = 8 - }, -/obj/item/storage/lockbox/medal{ - pixel_x = -1; - pixel_y = 1 - }, -/turf/open/floor/carpet/royalblue, -/area/crew_quarters/heads/captain) "koJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -21391,6 +21087,24 @@ }, /turf/open/floor/iron/dark, /area/security/execution/education) +"ktf" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "kti" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/status_display/evac{ @@ -21448,28 +21162,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/quartermaster/sorting) -"kuF" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - alpha = 180; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "kuW" = ( /turf/closed/wall/r_wall/rust, /area/science/xenobiology) @@ -21574,6 +21266,16 @@ }, /turf/open/floor/iron, /area/maintenance/department/security/brig) +"kyr" = ( +/obj/machinery/door/window/brigdoor/northright{ + id = "Cell 1"; + name = "Cell 1"; + req_access_txt = "1" + }, +/obj/effect/turf_decal/delivery, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/prison/dark, +/area/security/prison) "kyv" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/stripes/line{ @@ -21687,6 +21389,15 @@ }, /turf/open/floor/iron/white, /area/science/research) +"kAQ" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/camera/autoname, +/obj/machinery/vending/games{ + pixel_y = -1 + }, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "kAS" = ( /obj/machinery/atmospherics/components/unary/cryo_cell{ piping_layer = 2 @@ -21798,42 +21509,6 @@ /obj/structure/fence/cut/large, /turf/open/floor/plating/dirt/planetary, /area/asteroid/paradise/surface/grass) -"kCw" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/engine/engineering) -"kCL" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_one_access_txt = "4;1" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/security/brig) "kCM" = ( /turf/open/floor/plating, /area/quartermaster/warehouse) @@ -21866,21 +21541,6 @@ /obj/structure/reagent_dispensers/cooking_oil, /turf/open/floor/iron/freezer, /area/crew_quarters/kitchen/coldroom) -"kEs" = ( -/obj/machinery/computer/turbine_computer{ - dir = 1; - id = "incineratorturbineLeft"; - name = "gas turbine left control computer" - }, -/obj/structure/sign/warning/nosmoking{ - pixel_x = 1; - pixel_y = -32 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/iron/dark, -/area/maintenance/disposal/incinerator) "kEO" = ( /obj/structure/sign/warning/securearea{ pixel_y = 32 @@ -21906,12 +21566,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, /area/maintenance/department/bridge) -"kFt" = ( -/obj/structure/flora/rock, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "kFx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -21956,14 +21610,6 @@ }, /turf/open/floor/plating, /area/science/robotics) -"kGQ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-32" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/medical/central) "kHm" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -21990,31 +21636,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) -"kHE" = ( -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/door/airlock/medical/glass{ - emergency = 1; - id_tag = "MedbayFoyer"; - name = "Medbay"; - req_one_access_txt = "5" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "medbay" - }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "kHF" = ( /obj/machinery/portable_atmospherics/canister/plasma, /obj/effect/turf_decal/delivery, @@ -22062,26 +21683,6 @@ }, /turf/open/floor/noslip/standard, /area/quartermaster/storage) -"kIp" = ( -/obj/item/toy/plush/moth/firewatch, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) -"kIR" = ( -/obj/machinery/power/compressor{ - comp_id = "incineratorturbineLeft"; - dir = 1; - luminosity = 2 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/cable, -/obj/machinery/camera/autoname{ - dir = 4; - network = list("ss13, engine") - }, -/turf/open/floor/engine/vacuum, -/area/maintenance/disposal/incinerator) "kJA" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -22096,6 +21697,23 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) +"kJL" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/light_switch{ + pixel_x = 23; + pixel_y = -23 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre/backstage) "kJM" = ( /obj/structure/ladder, /obj/structure/railing{ @@ -22103,11 +21721,6 @@ }, /turf/open/floor/pod/dark, /area/maintenance/department/science/xenobiology) -"kJR" = ( -/obj/structure/flora/grass/jungle/b, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "kJV" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -22175,17 +21788,6 @@ "kLU" = ( /turf/open/floor/iron, /area/engine/atmos) -"kMe" = ( -/obj/effect/landmark/start/assistant, -/obj/structure/cable/yellow{ - icon_state = "2-32" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "kMG" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -22222,6 +21824,22 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/science/lab) +"kNq" = ( +/obj/effect/decal/cleanable/food/flour, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "kND" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -22264,6 +21882,21 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) +"kPn" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 8 + }, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/dark, +/area/engineering/hallway{ + name = "Engineering Viewing Platform" + }) "kPr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -22289,25 +21922,6 @@ }, /turf/open/floor/iron/dark, /area/storage/tech) -"kPY" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/landmark/start/quartermaster, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "kQc" = ( /obj/structure/table/reinforced, /obj/machinery/firealarm/directional/east, @@ -22389,19 +22003,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark, /area/security/brig) -"kTy" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/railing/corner, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/lattice/catwalk/over, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/cable/yellow{ - icon_state = "4-32" - }, -/turf/open/openspace, -/area/asteroid/paradise/surface) "kTG" = ( /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, @@ -22616,6 +22217,15 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/central) +"laf" = ( +/obj/machinery/chem_dispenser/drinks/beer, +/obj/structure/table, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/machinery/airalarm{ + pixel_y = 28 + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "lai" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/effect/turf_decal/bot{ @@ -22651,6 +22261,15 @@ /obj/structure/lattice/catwalk/over, /turf/open/floor/plating, /area/science/mixing) +"laO" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/cable/yellow{ + icon_state = "8-16" + }, +/turf/open/floor/pod/dark, +/area/maintenance/department/engine) "lbc" = ( /obj/structure/table, /obj/item/reagent_containers/glass/bucket, @@ -22666,24 +22285,6 @@ /obj/item/kitchen/rollingpin, /turf/open/floor/iron, /area/hallway/secondary/service) -"lbu" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -30; - pixel_y = -2 - }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "lbA" = ( /obj/structure/disposalpipe/segment{ dir = 2 @@ -22701,20 +22302,18 @@ /obj/structure/cable, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/foyer) -"lcl" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ - dir = 8 +"lcs" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/item/radio/intercom{ - pixel_x = 32; - pixel_y = -2 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/quartermaster/sorting) "lcQ" = ( /obj/effect/landmark/start/cyborg, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -22769,12 +22368,6 @@ /obj/machinery/chem_master, /turf/open/floor/iron, /area/medical/apothecary) -"lep" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, -/obj/item/paicard, -/turf/open/floor/plating, -/area/maintenance/department/bridge) "leF" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -22877,20 +22470,6 @@ }, /turf/open/floor/engine, /area/ai_monitored/turret_protected/ai) -"lgR" = ( -/obj/effect/turf_decal/sand/plating, -/turf/closed/mineral/random/air, -/area/asteroid/paradise) -"lhb" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2; - pixel_y = 16 - }, -/turf/open/floor/iron/dark/side, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "lhc" = ( /obj/structure/railing{ dir = 8 @@ -22912,17 +22491,6 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) -"lhf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/iron/dark, -/area/engine/engineering) "lhn" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/effect/landmark/start/security_officer, @@ -23095,6 +22663,9 @@ /obj/item/stack/rods/five, /turf/open/floor/iron, /area/engine/atmos) +"llQ" = ( +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "llS" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 1 @@ -23253,6 +22824,23 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) +"lpc" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 5 + }, +/obj/structure/closet/firecloset/full, +/obj/effect/turf_decal/bot, +/obj/item/extinguisher/advanced{ + pixel_x = -1; + pixel_y = -2 + }, +/turf/open/floor/iron/dark, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "lpZ" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/asteroid/planetary, @@ -23291,20 +22879,6 @@ }, /turf/open/floor/iron, /area/janitor) -"lrB" = ( -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "2-32" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/security/brig) "lrR" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "cmoshutter"; @@ -23313,21 +22887,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/crew_quarters/heads/cmo) -"lsb" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plating, -/area/maintenance/department/medical/central) -"lsf" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/table, -/obj/item/kitchen/rollingpin{ - pixel_x = -6; - pixel_y = -1 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "lsj" = ( /obj/structure/lattice/catwalk/over, /turf/open/openspace, @@ -23354,22 +22913,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/engine) -"lsM" = ( -/obj/machinery/computer/cloning{ - dir = 2 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/north{ - pixel_y = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/iron, -/area/medical/genetics/cloning) "ltd" = ( /obj/structure/lattice/catwalk/over, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -23451,16 +22994,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/iron, /area/maintenance/department/medical/morgue) -"luz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/mob/living/simple_animal/pet/cat{ - desc = "He demands you let him sleep"; - name = "Sir Fluffington McWhiskerface the Third, Esquire, Purveyor of Mischief and Master of Naps" - }, -/turf/open/floor/wood, -/area/asteroid/paradise/surface) "luF" = ( /turf/open/floor/iron, /area/maintenance/department/medical/morgue) @@ -23468,23 +23001,6 @@ /obj/structure/bookcase/random/adult, /turf/open/floor/plating, /area/vacant_room/office) -"lvm" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/docking_port/stationary{ - dir = 4; - dwidth = 9; - height = 14; - id = "emergency_home"; - name = "EchoStation emergency evac bay"; - width = 21 - }, -/turf/open/floor/sepia/planetary{ - slowdown = 0 - }, -/area/asteroid/paradise/surface) "lvL" = ( /obj/structure/window/reinforced{ dir = 1; @@ -23500,6 +23016,18 @@ }, /turf/open/floor/iron/freezer, /area/crew_quarters/kitchen/coldroom) +"lvV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "lwh" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -23522,6 +23050,21 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/hydroponics) +"lxl" = ( +/obj/machinery/nanite_program_hub, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science RC"; + pixel_y = 30; + receive_ore_updates = 1 + }, +/obj/machinery/camera/autoname{ + network = list("ss13","rd") + }, +/turf/open/floor/iron, +/area/science/research) "lxo" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance/two, @@ -23582,6 +23125,13 @@ /obj/item/plunger, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) +"lyE" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/openspace, +/area/maintenance/department/security/brig) "lyG" = ( /obj/effect/turf_decal/caution/stand_clear, /obj/effect/turf_decal/stripes/line, @@ -23612,26 +23162,40 @@ /obj/machinery/space_heater, /turf/open/floor/iron, /area/maintenance/department/engine) -"lzs" = ( -/obj/structure/disposalpipe/junction{ - dir = 1 +"lzD" = ( +/obj/effect/spawner/lootdrop/aimodule_harmless, +/obj/effect/spawner/lootdrop/aimodule_harmless, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = -1; + pixel_y = 32 }, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - alpha = 180; - dir = 2 +/obj/structure/cable{ + icon_state = "2-8" }, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) -"lzV" = ( -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) +/obj/effect/spawner/lootdrop/aimodule_harmless, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/table/reinforced, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai_upload) "lAn" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/girder, /turf/open/floor/plating, /area/engine/atmos) +"lAq" = ( +/obj/item/radio/intercom{ + pixel_x = -31; + pixel_y = -2 + }, +/turf/open/openspace, +/area/engineering/hallway{ + name = "Engineering Viewing Platform" + }) "lAt" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ @@ -23653,14 +23217,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) -"lAM" = ( -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/cable/yellow{ - icon_state = "2-32" - }, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/science/central) "lAN" = ( /turf/closed/wall/mineral/wood, /area/asteroid/paradise/surface) @@ -23683,6 +23239,12 @@ /obj/effect/spawner/lootdrop/glowstick/lit, /turf/open/floor/iron, /area/maintenance/department/bridge) +"lBT" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "lBZ" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -23845,22 +23407,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, /area/quartermaster/sorting) -"lFn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "lFC" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/stripes/line{ @@ -23880,6 +23426,13 @@ /obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"lFQ" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{ + dir = 4; + piping_layer = 4 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "lGc" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/space_heater, @@ -23992,20 +23545,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/bridge) -"lJv" = ( -/obj/structure/flora/ausbushes/sunnybush{ - max_integrity = 20 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/grass/no_border, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "lJE" = ( /obj/structure/table/wood, /obj/item/wrench, @@ -24145,6 +23684,22 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron, /area/medical/surgery) +"lPe" = ( +/obj/machinery/light_switch{ + pixel_x = 25; + pixel_y = 26 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) "lPu" = ( /obj/structure/railing{ dir = 4 @@ -24187,17 +23742,6 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/cafeteria) -"lQf" = ( -/obj/machinery/seed_extractor, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/firealarm/directional/east, -/obj/structure/sign/poster/official/moth1{ - pixel_y = -32 - }, -/turf/open/floor/iron/grid/steel, -/area/hydroponics) "lQi" = ( /turf/open/floor/carpet/purple, /area/crew_quarters/dorms) @@ -24325,14 +23869,6 @@ }, /turf/open/floor/carpet/purple, /area/vacant_room/office) -"lTJ" = ( -/obj/effect/dummy/lighting_obj{ - light_color = "#e6762c"; - light_power = 2; - light_range = 9 - }, -/turf/open/lava/smooth, -/area/asteroid/paradise) "lTW" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -24358,23 +23894,6 @@ }, /turf/open/floor/prison, /area/security/prison) -"lUg" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/chair/office/light{ - dir = 1; - pixel_y = 3 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/grid/steel, -/area/science/xenobiology) "lUh" = ( /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, @@ -24408,16 +23927,6 @@ }, /turf/open/floor/iron/dark, /area/storage/primary) -"lUX" = ( -/obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ - alpha = 180; - color = "#DE3A3A" - }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -32 - }, -/turf/open/floor/iron/dark, -/area/security/brig) "lVq" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 @@ -24578,27 +24087,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) -"lZZ" = ( -/mob/living/simple_animal/kalo{ - desc = "The Perma brig's cute grass snake."; - icon = 'icons/mob/animal.dmi'; - icon_dead = "snake_dead"; - icon_living = "snake"; - icon_state = "snake"; - name = "Hugel" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/prison, -/area/security/prison) -"mam" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "man" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -24783,15 +24271,22 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/maintenance/department/bridge) -"mgw" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12"; - security_level = 6 +"mgp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/lattice/catwalk/over, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/numbers/two_nine{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "mgK" = ( /obj/structure/railing, /turf/open/openspace, @@ -24818,6 +24313,38 @@ /obj/structure/cable/yellow, /turf/open/floor/iron/showroomfloor, /area/crew_quarters/cryopods) +"mgY" = ( +/obj/effect/turf_decal/siding/white{ + alpha = 100; + dir = 5 + }, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/ppflowers, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = -31 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/crew_quarters/dorms) +"mhe" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet, +/obj/machinery/light/small, +/obj/effect/spawner/lootdrop/maintenance/four, +/obj/item/paicard, +/turf/open/floor/iron, +/area/maintenance/department/medical/morgue) +"mht" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/maintenance/department/cargo) "mhI" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -24853,24 +24380,11 @@ }, /turf/open/floor/iron/grid/steel, /area/bridge) -"miM" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark/warning{ - dir = 8 - }, -/obj/item/radio/intercom{ - pixel_x = 32; - pixel_y = -2 - }, +"mit" = ( +/obj/structure/table, +/obj/item/paicard, /turf/open/floor/iron/dark, -/area/engineering/hallway{ - name = "Engineering Viewing Platform" - }) +/area/maintenance/department/crew_quarters/dorms) "mjt" = ( /obj/machinery/portable_atmospherics/canister, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -24878,6 +24392,11 @@ }, /turf/open/floor/iron/tech, /area/science/mixing) +"mjw" = ( +/obj/structure/lattice/catwalk/over, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "mjZ" = ( /obj/machinery/flasher{ id = "AI"; @@ -24956,19 +24475,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall/r_wall, /area/security/brig) -"mlP" = ( -/obj/structure/flora/ausbushes/ywflowers{ - max_integrity = 20 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/floor/grass/no_border, -/area/medical/storage) "mma" = ( /obj/item/toy/beach_ball/holoball, /obj/effect/turf_decal/bot, @@ -24999,13 +24505,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) -"mne" = ( -/obj/structure/stairs, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/pod/dark, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) +"mmJ" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "mni" = ( /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/basalt/planetary, @@ -25268,6 +24774,29 @@ /obj/effect/spawner/lootdrop/costume, /turf/open/floor/iron/dark, /area/maintenance/department/crew_quarters/dorms) +"mwP" = ( +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/ai"; + icon_state = "control_stun"; + name = "AI Chamber turret control"; + pixel_x = -1; + pixel_y = 33 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/camera/autoname{ + dir = 6; + network = list("aiupload") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/iron/tech/grid, +/area/ai_monitored/turret_protected/aisat_interior) "mxd" = ( /obj/structure/sign/departments/minsky/research/robotics, /turf/closed/wall, @@ -25282,6 +24811,16 @@ /obj/structure/flora/grass/jungle/b, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) +"mxy" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/machinery/vending/dinnerware, +/obj/machinery/requests_console{ + department = "Kitchen"; + departmentType = 2; + pixel_y = 30 + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "mxG" = ( /obj/structure/barricade/wooden, /turf/open/floor/plating, @@ -25376,6 +24915,28 @@ }, /turf/open/floor/circuit, /area/gateway) +"mAj" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + alpha = 180; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "mAk" = ( /obj/structure/flora/ausbushes/ppflowers, /obj/structure/window/reinforced{ @@ -25432,15 +24993,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/chapel) -"mBY" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_one_access_txt = "12;5"; - security_level = 6 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/medical/central) "mCk" = ( /obj/machinery/air_sensor/atmos/nitrous_tank, /obj/machinery/atmospherics/pipe/layer_manifold/visible, @@ -25475,10 +25027,6 @@ }, /turf/open/floor/wood, /area/vacant_room/office) -"mDP" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "mDY" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/turf_decal/bot, @@ -25515,16 +25063,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/engine/atmos) -"mFc" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Security Office"; - req_access_txt = 0; - req_one_access_txt = "1;4" - }, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) "mFq" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -25607,6 +25145,18 @@ }, /turf/open/floor/iron/dark, /area/bridge/meeting_room) +"mFT" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "mGI" = ( /obj/structure/cable{ icon_state = "1-2" @@ -25633,6 +25183,13 @@ }, /turf/open/floor/iron, /area/maintenance/department/bridge) +"mGS" = ( +/obj/structure/flora/rock/pile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "mHK" = ( /obj/machinery/keycard_auth{ pixel_x = 33; @@ -25691,16 +25248,17 @@ }, /turf/open/floor/wood, /area/crew_quarters/cafeteria) -"mIy" = ( -/obj/structure/lattice/catwalk/over, -/obj/structure/railing{ - dir = 4 +"mIF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 }, -/obj/structure/closet/emcloset, -/turf/open/openspace, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "mIN" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 @@ -25795,13 +25353,6 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) -"mLM" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/machinery/processor, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "mLQ" = ( /obj/machinery/atmospherics/pipe/layer_manifold/visible, /obj/effect/decal/cleanable/dirt, @@ -25842,6 +25393,16 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) +"mMw" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = -33 + }, +/turf/open/floor/iron/dark, +/area/engine/engineering) "mMZ" = ( /obj/machinery/atmospherics/components/binary/valve, /obj/machinery/button/ignition/incinerator/toxmix{ @@ -26000,6 +25561,43 @@ }, /turf/open/floor/plating, /area/medical/morgue) +"mRe" = ( +/obj/machinery/button/flasher{ + id = "brigentryaux"; + pixel_x = 5; + pixel_y = -37 + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "outerbrig"; + name = "Brig Exterior Doors Control"; + normaldoorcontrol = 1; + pixel_x = -6; + pixel_y = -25; + req_access_txt = "63" + }, +/obj/machinery/button/door{ + id = "brigentrance"; + name = "Brig Lockdown Control"; + pixel_x = 6; + pixel_y = -25; + req_access_txt = "63" + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + alpha = 180; + dir = 8 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -32; + pixel_y = -28 + }, +/obj/machinery/computer/crew{ + dir = 4; + req_one_access = list(5,4,3) + }, +/turf/open/floor/iron/dark, +/area/security/warden) "mRH" = ( /obj/structure/bookcase/random/adult, /obj/machinery/newscaster{ @@ -26096,6 +25694,10 @@ /obj/machinery/computer/pandemic, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) +"mUB" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "mVd" = ( /obj/structure/railing{ dir = 1 @@ -26228,43 +25830,6 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/iron, /area/maintenance/department/science/central) -"mYn" = ( -/obj/structure/chair/fancy/sofa/old/left{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/effect/turf_decal/siding/white, -/obj/structure/railing{ - layer = 3 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 29; - pixel_y = -3 - }, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) -"mYq" = ( -/obj/machinery/holopad{ - pixel_x = 16; - pixel_y = 16 - }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "mYL" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance/two, @@ -26379,21 +25944,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/department/science/central) -"ncz" = ( -/obj/effect/turf_decal/trimline/dark/warning{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/engineering/hallway{ - name = "Engineering Viewing Platform" - }) "ncA" = ( /obj/effect/turf_decal/caution/stand_clear, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -26412,6 +25962,34 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) +"ncK" = ( +/obj/machinery/holopad{ + pixel_x = 16; + pixel_y = 16 + }, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/medical/medbay/central) +"ncM" = ( +/obj/structure/reagent_dispensers/beerkeg{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/open/floor/plating/beach/coastline_t{ + dir = 9 + }, +/area/asteroid/paradise/surface) "ncT" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -26481,6 +26059,13 @@ }, /turf/open/floor/prison/dark, /area/security/prison) +"neA" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "neD" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -26573,30 +26158,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/quartermaster/storage) -"nip" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/rack, -/obj/effect/spawner/lootdrop/techstorage/command, -/obj/effect/turf_decal/delivery, -/obj/item/radio/intercom{ - pixel_y = 29 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/camera/motion{ - c_tag = "Technical Storage"; - dir = 8; - name = "motion-sensitive Technical Storage"; - network = list("ss13","engine") - }, -/turf/open/floor/iron/techmaint/planetary, -/area/storage/tech) "niw" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -26646,21 +26207,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/cafeteria) -"nlf" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/firealarm/directional/north, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron, -/area/science/research) "nlo" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 @@ -26700,6 +26246,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/vacant_room/office) +"nmp" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/siding/dark/corner, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron/dark/corner, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "nmz" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -26799,27 +26357,6 @@ dir = 1 }, /area/science/research) -"non" = ( -/obj/machinery/requests_console{ - department = "Cargo Bay"; - departmentType = 2; - pixel_x = 31; - pixel_y = -2 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/quartermaster/sorting) "noU" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -26933,18 +26470,6 @@ }, /turf/open/floor/iron/dark, /area/security/warden) -"nrD" = ( -/obj/structure/stairs, -/obj/structure/sign/directions/evac{ - dir = 4; - pixel_x = -15; - pixel_y = -31 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/pod/dark, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "nrQ" = ( /turf/closed/wall/mineral/titanium/survival/nodiagonal, /area/hallway/primary/fore{ @@ -27089,22 +26614,6 @@ /obj/item/airlock_painter/decal, /turf/open/floor/iron, /area/maintenance/department/chapel) -"nxu" = ( -/obj/item/beacon{ - pixel_y = 3 - }, -/obj/effect/turf_decal/numbers, -/obj/structure/railing{ - dir = 6 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/iron/techmaint/planetary, -/area/asteroid/paradise/surface) "nxK" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/clothing/under/suit/burgundy, @@ -27121,6 +26630,46 @@ }, /turf/open/floor/iron, /area/hydroponics) +"nyu" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/paper/monitorkey{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/folder/yellow, +/obj/item/toy/figure/ce{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/item/stamp/chief_engineer{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 5 + }, +/obj/machinery/camera/autoname{ + dir = 8; + network = list("ss13","engine") + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Engineer's Desk"; + departmentType = 4; + name = "Chief Engineer RC"; + pixel_x = 32; + pixel_y = 31 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/carpet/royalblue, +/area/crew_quarters/heads/chief) "nyB" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -27206,6 +26755,24 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) +"nzU" = ( +/obj/effect/turf_decal/tile/black/opposingcorners{ + dir = 1 + }, +/obj/machinery/suit_storage_unit/rd, +/obj/effect/turf_decal/bot, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/item/toy/plush/slimeplushie{ + pixel_x = -1; + pixel_y = 7 + }, +/turf/open/floor/iron/white, +/area/crew_quarters/heads/hor) "nzZ" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line, /obj/structure/railing, @@ -27240,6 +26807,20 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/disposal/incinerator) +"nAF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/sand/plating, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -31; + pixel_y = -3 + }, +/turf/open/floor/iron, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "nBs" = ( /obj/structure/flora/rock/pile, /turf/open/floor/iron/techmaint/planetary, @@ -27276,23 +26857,32 @@ "nEl" = ( /turf/open/floor/iron, /area/maintenance/department/chapel) -"nEB" = ( +"nEN" = ( +/obj/structure/stairs{ + dir = 1 + }, +/obj/structure/fans/tiny, +/turf/open/floor/pod/dark, +/area/maintenance/department/engine/atmos) +"nEW" = ( +/obj/machinery/computer/security/telescreen/minisat{ + dir = 4; + pixel_x = -32 + }, /obj/structure/table/wood, -/obj/item/screwdriver, -/obj/item/hatchet, -/obj/item/paicard, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) -"nED" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/light{ + dir = 8 }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) +/obj/item/storage/secure/briefcase{ + pixel_x = 15; + pixel_y = 8 + }, +/obj/item/storage/lockbox/medal{ + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor/carpet/royalblue, +/area/crew_quarters/heads/captain) "nEX" = ( /obj/structure/bed, /obj/item/bedsheet/dorms, @@ -27311,13 +26901,6 @@ }, /turf/open/floor/iron, /area/security/brig) -"nFA" = ( -/obj/machinery/door/firedoor, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/openspace, -/area/maintenance/department/medical/central) "nFM" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -27368,26 +26951,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron/white, /area/science/xenobiology) -"nGR" = ( -/obj/structure/sign/poster/random{ - pixel_x = 31 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table/wood, -/obj/item/storage/crayons{ - pixel_x = 3; - pixel_y = 7 - }, -/obj/item/camera{ - pixel_y = -9 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 2; - pixel_y = 29 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria) "nHd" = ( /obj/structure/closet/emcloset/anchored, /turf/open/floor/plating, @@ -27440,6 +27003,20 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/security/armory) +"nHV" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "32" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/engine) "nId" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt/dust, @@ -27530,28 +27107,31 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) -"nJD" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 +"nJX" = ( +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 }, -/turf/open/floor/iron, -/area/maintenance/department/engine) -"nJM" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small{ - dir = 1 +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron, -/area/maintenance/department/engine) -"nKa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/machinery/door/airlock/medical/glass{ + emergency = 1; + id_tag = "MedbayFoyer"; + name = "Medbay"; + req_one_access_txt = "5" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "medbay" + }, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "nKc" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -27607,24 +27187,14 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) -"nMa" = ( -/obj/machinery/airalarm/directional/north{ - dir = 1; - pixel_y = -23 - }, -/mob/living/simple_animal/bot/mulebot{ - home_destination = "QM #3"; - suffix = "#3" - }, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; - location = "QM #3" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/quartermaster/warehouse) +"nLv" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "nMm" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -27662,6 +27232,26 @@ /obj/machinery/computer/prisoner/management, /turf/open/floor/iron, /area/bridge) +"nOu" = ( +/obj/machinery/light, +/obj/machinery/firealarm/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/table, +/obj/item/food/dough{ + pixel_x = 4 + }, +/obj/item/food/dough{ + pixel_y = 2; + pixel_x = 9 + }, +/obj/item/reagent_containers/food/condiment/enzyme{ + pixel_x = -5; + pixel_y = 9 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "nOx" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -27679,12 +27269,6 @@ /obj/structure/flora/rock/pile, /turf/open/floor/iron/techmaint/planetary, /area/asteroid/paradise/surface) -"nPp" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "nPz" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/space_heater, @@ -27768,11 +27352,6 @@ }, /turf/open/floor/iron/dark, /area/security/warden) -"nSz" = ( -/obj/structure/lattice/catwalk/over, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) "nSF" = ( /obj/machinery/vending/wallmed{ pixel_x = -6; @@ -27829,12 +27408,6 @@ /obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/bar) -"nTN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/tech/grid, -/area/ai_monitored/turret_protected/aisat_interior) "nTR" = ( /obj/effect/spawner/room/threexthree, /turf/open/floor/plating, @@ -27856,6 +27429,13 @@ /obj/structure/barricade/wooden, /turf/open/floor/iron, /area/maintenance/department/chapel) +"nVd" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/cardboard, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/item/paicard, +/turf/open/floor/iron, +/area/ai_monitored/turret_protected/aisat/maint) "nVe" = ( /obj/structure/window/plasma/reinforced{ dir = 8 @@ -27919,18 +27499,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/engine/engineering) -"nWN" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/siding/dark/corner, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron/dark/corner, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "nXa" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -27980,26 +27548,11 @@ }, /turf/open/floor/plating, /area/maintenance/department/chapel) -"nYI" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/structure/lattice, -/turf/open/openspace, -/area/maintenance/department/security/brig) "nYL" = ( /turf/open/openspace, /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"nYY" = ( -/obj/machinery/computer/security/hos, -/obj/item/toy/plush/carpplushie{ - pixel_x = 5; - pixel_y = 17 - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/heads/hos) "nZB" = ( /obj/structure/stairs, /turf/open/floor/pod/dark, @@ -28010,26 +27563,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/maintenance/department/medical/central) -"nZP" = ( -/obj/effect/turf_decal/bot, -/obj/structure/closet/secure_closet/freezer/kitchen{ - req_access = null; - req_one_access_txt = "28;25;35" - }, -/obj/item/storage/box/ingredients/fruity{ - pixel_x = 4; - pixel_y = 6 - }, -/obj/item/storage/box/ingredients/vegetarian{ - pixel_x = -1; - pixel_y = 4 - }, -/obj/item/storage/box/ingredients/wildcard{ - pixel_x = -5; - pixel_y = 8 - }, -/turf/open/floor/iron/freezer, -/area/crew_quarters/kitchen/coldroom) "oam" = ( /turf/closed/wall/r_wall, /area/teleporter) @@ -28095,6 +27628,23 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/plating, /area/engine/engineering) +"obC" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = 32 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "ocx" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 10 @@ -28112,18 +27662,18 @@ /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) -"ocM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, +"ocS" = ( /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "4-8" }, -/turf/open/floor/plating, -/area/maintenance/department/science/central) +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/quartermaster/sorting) "odM" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/small{ @@ -28184,6 +27734,26 @@ }, /turf/open/floor/iron/grid/steel, /area/hydroponics) +"oga" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = -31 + }, +/turf/open/floor/iron, +/area/engine/atmos) +"ogp" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_one_access_txt = "63;34" + }, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/brig) "ogJ" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes/corner, @@ -28235,20 +27805,29 @@ dir = 1 }, /area/science/lab) +"oiK" = ( +/obj/machinery/airalarm/directional/north{ + dir = 1; + pixel_y = -23 + }, +/mob/living/simple_animal/bot/mulebot{ + home_destination = "QM #3"; + suffix = "#3" + }, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + dir = 8; + freq = 1400; + location = "QM #3" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/quartermaster/warehouse) "oiS" = ( /obj/structure/closet/crate/freezer/surplus_limbs, /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/medical/morgue) -"oiV" = ( -/obj/structure/sign/directions/supply{ - dir = 8; - pixel_y = 10 - }, -/turf/closed/wall, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "ojw" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/sand/plating, @@ -28274,6 +27853,22 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) +"okn" = ( +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ + dir = 8; + piping_layer = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/structure/window/plasma/reinforced{ + dir = 1 + }, +/turf/open/floor/iron, +/area/engine/atmos) "okx" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -28346,18 +27941,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"omt" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/quartermaster/sorting) "omN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 @@ -28407,6 +27990,17 @@ }, /turf/open/floor/iron/dark, /area/bridge) +"onC" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "8-32" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/bridge) "ool" = ( /obj/docking_port/stationary{ dheight = 1; @@ -28573,6 +28167,14 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) +"oqF" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/cable/yellow{ + icon_state = "8-16" + }, +/turf/open/floor/pod/dark, +/area/maintenance/department/science/xenobiology) "oqZ" = ( /obj/machinery/atmospherics/components/unary/heat_exchanger{ dir = 1 @@ -28625,6 +28227,16 @@ /obj/structure/table/wood/fancy, /turf/open/floor/wood, /area/chapel/office) +"orB" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Office"; + req_access_txt = 0; + req_one_access_txt = "1;4" + }, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/security/brig) "orD" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -28669,30 +28281,6 @@ }, /turf/open/floor/iron, /area/ai_monitored/turret_protected/aisat/maint) -"osM" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "packageSort2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/door/window/northleft{ - dir = 2; - req_access_txt = "50" - }, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/quartermaster/sorting) "osP" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, @@ -28706,10 +28294,30 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/security/armory) +"ote" = ( +/obj/machinery/telecomms/relay/preset/auto, +/obj/machinery/door/window/northleft{ + name = "Engi Desk"; + req_one_access_txt = "32;19" + }, +/obj/structure/window/reinforced/survival_pod, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "oth" = ( /obj/structure/sign/warning/explosives, /turf/closed/wall, /area/science/mixing) +"otq" = ( +/obj/structure/lattice/catwalk/over, +/obj/machinery/firealarm/directional/east, +/turf/open/openspace, +/area/maintenance/department/security/brig) "otr" = ( /obj/machinery/computer/med_data/laptop{ dir = 1; @@ -28729,18 +28337,6 @@ }, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) -"otv" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/obj/machinery/vending/donksofttoyvendor, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) "otW" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, @@ -28855,6 +28451,25 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) +"ovX" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/sand/plating, +/obj/machinery/light, +/obj/item/radio/intercom{ + dir = 1; + pixel_y = -35 + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"owG" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12"; + security_level = 6 + }, +/obj/structure/lattice/catwalk/over, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "owJ" = ( /obj/structure/disposalpipe/segment, /obj/structure/reagent_dispensers/water_cooler, @@ -28889,6 +28504,12 @@ /obj/machinery/light, /turf/open/floor/iron/dark, /area/engine/atmos) +"oxs" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/openspace, +/area/hydroponics) "oxy" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 @@ -28920,25 +28541,25 @@ /obj/machinery/portable_atmospherics/canister, /turf/open/floor/iron/tech, /area/engine/atmos) -"oyl" = ( -/obj/effect/turf_decal/siding/white{ - alpha = 100; - dir = 5 - }, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/ppflowers, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = -31 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/crew_quarters/dorms) "oyV" = ( /obj/structure/cable/yellow{ icon_state = "4-8" }, /turf/open/floor/plating, /area/maintenance/department/medical/central) +"ozb" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood, +/area/chapel/main) "ozj" = ( /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/planetary, @@ -28974,6 +28595,14 @@ /obj/structure/ladder, /turf/open/floor/pod/dark, /area/ai_monitored/turret_protected/aisat/maint) +"ozM" = ( +/obj/effect/turf_decal/bot, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/kitchenspike, +/turf/open/floor/iron/freezer, +/area/crew_quarters/kitchen/coldroom) "ozO" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -29079,6 +28708,17 @@ }, /turf/open/floor/iron/grid/steel, /area/hydroponics) +"oCj" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "oCE" = ( /turf/open/openspace, /area/engine/atmos) @@ -29103,6 +28743,21 @@ "oEl" = ( /turf/closed/wall/r_wall, /area/security/detectives_office) +"oEv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/hallway/secondary/service) "oEx" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted, /obj/machinery/light, @@ -29127,13 +28782,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) -"oEM" = ( -/obj/effect/landmark/start/cook, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "oEZ" = ( /obj/structure/sign/departments/medbay/alt2, /turf/closed/wall, @@ -29480,37 +29128,6 @@ }, /turf/open/floor/iron, /area/science/misc_lab) -"oMi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door/incinerator_vent_atmos_aux{ - pixel_x = 24; - pixel_y = 8; - req_one_access = null; - req_one_access_txt = "11" - }, -/obj/machinery/button/door/incinerator_vent_atmos_main{ - pixel_x = 24; - pixel_y = -8; - req_one_access = null; - req_one_access_txt = "11" - }, -/obj/machinery/button/ignition/incinerator/atmos{ - pixel_x = 38; - pixel_y = -7 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/computer/turbine_computer{ - dir = 1; - id = "incineratorturbineRight"; - name = "gas turbine right control computer" - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "oMm" = ( /obj/machinery/power/emitter/welded{ dir = 8 @@ -29542,10 +29159,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/pod/dark, /area/maintenance/department/medical/morgue) -"oMP" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/turf/closed/mineral/random/air, -/area/asteroid/paradise) "oMQ" = ( /obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ alpha = 180; @@ -29563,16 +29176,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/security/brig) -"oMU" = ( -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/engine/engineering) "oNe" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -29591,6 +29194,10 @@ slowdown = 0 }, /area/asteroid/paradise/surface) +"oNh" = ( +/obj/structure/bonfire, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "oNp" = ( /obj/effect/turf_decal/siding/white{ alpha = 100; @@ -29602,6 +29209,25 @@ /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/planetary, /area/crew_quarters/dorms) +"oNr" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/landmark/start/quartermaster, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "oNs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 1 @@ -29643,31 +29269,24 @@ /obj/effect/spawner/room/threexthree, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"oNJ" = ( -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = 7; - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/security/brig) -"oNZ" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "oOr" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/crew_quarters/dorms) +"oOA" = ( +/obj/effect/turf_decal/tile/dark_green/fourcorners/contrasted, +/mob/living/simple_animal/hostile/retaliate/frog{ + attacked_sound = 'sound/effects/huuu.ogg'; + dir = 8; + name = "Larry"; + pixel_y = 12; + stepped_sound = null + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/iron, +/area/hydroponics) "oOM" = ( /obj/structure/cable, /obj/machinery/blackbox_recorder, @@ -29739,25 +29358,6 @@ }, /turf/open/floor/plating, /area/maintenance/disposal/incinerator) -"oQf" = ( -/obj/effect/turf_decal/stripes/line, -/obj/item/radio/intercom{ - dir = 1; - pixel_y = 29 - }, -/obj/machinery/computer/med_data/laptop{ - pixel_x = 4; - pixel_y = 2; - req_one_access = null; - req_one_access_txt = "1;4" - }, -/obj/structure/table, -/obj/item/paicard{ - pixel_x = -14; - pixel_y = 2 - }, -/turf/open/floor/iron, -/area/security/brig) "oQk" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/grille/broken, @@ -29863,26 +29463,6 @@ }, /turf/open/floor/iron/white, /area/science/research) -"oUu" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - alpha = 180; - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -30; - pixel_y = -2 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "oUH" = ( /obj/structure/table/optable{ name = "Forensics Operating Table" @@ -29968,11 +29548,6 @@ }, /turf/open/floor/engine, /area/engine/supermatter) -"oWJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/closed/mineral/random/air, -/area/asteroid/paradise) "oXd" = ( /obj/structure/railing{ dir = 9 @@ -29989,15 +29564,6 @@ "oXe" = ( /turf/closed/wall, /area/maintenance/department/medical/central) -"oXB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/closet/secure_closet/genpop, -/obj/effect/turf_decal/bot, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/security/prison) "oXZ" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -30015,6 +29581,26 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/tech, /area/engine/engineering) +"oYO" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + alpha = 180; + dir = 8 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -30; + pixel_y = -2 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "oYP" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 @@ -30211,13 +29797,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/hydroponics) -"pbz" = ( -/obj/structure/flora/rock/pile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "pcu" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 @@ -30290,6 +29869,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) +"pdw" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "pdR" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/grille_or_trash, @@ -30308,32 +29894,6 @@ }, /turf/open/floor/plating/grass, /area/asteroid/paradise/surface) -"pee" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/holopad, -/obj/effect/turf_decal/box, -/turf/open/floor/iron, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) -"peI" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "External Gas to Loop" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/engine/engineering) "pfb" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/evac, @@ -30341,32 +29901,19 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) -"pfd" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/table/wood, -/obj/machinery/computer/security/telescreen/entertainment{ - network = list("thunder","court","public"); - pixel_x = -1; - pixel_y = 31 - }, -/obj/machinery/light{ - dir = 1; - light_color = "#7AC3FF" - }, -/obj/item/storage/crayons{ - pixel_x = 3; - pixel_y = 4 - }, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) "pfN" = ( /obj/structure/window/reinforced{ dir = 1 }, /turf/open/floor/engine, /area/science/xenobiology) +"pgy" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "pgO" = ( /obj/structure/railing/corner{ dir = 4 @@ -30452,33 +29999,6 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron/dark, /area/medical/morgue) -"pjQ" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 2; - initialize_directions = 2; - piping_layer = 4 - }, -/obj/machinery/camera/autoname{ - dir = 6; - network = list("ss13","medbay") - }, -/obj/machinery/power/apc/auto_name/north{ - pixel_y = 24 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/machinery/vending/wallmed{ - pixel_x = -32 - }, -/turf/open/floor/iron/grid/steel, -/area/medical/medbay/central) "pjU" = ( /obj/item/kirbyplants/random{ pixel_x = -6; @@ -30504,15 +30024,6 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/security/armory) -"pkm" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/camera/autoname, -/obj/machinery/vending/games{ - pixel_y = -1 - }, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) "pkH" = ( /obj/machinery/chem_master/condimaster, /obj/structure/railing{ @@ -30601,32 +30112,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/atmos) -"poF" = ( -/obj/machinery/door/window{ - base_state = "leftsecure"; - dir = 8; - icon_state = "leftsecure"; - name = "Primary AI Core Access"; - obj_integrity = 300; - req_access_txt = "16" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "AI Core shutters"; - name = "AI Core Shutter" - }, -/obj/effect/turf_decal/delivery, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/turretid{ - control_area = "/area/ai_monitored/turret_protected/ai"; - icon_state = "control_stun"; - name = "AI Chamber turret control"; - pixel_x = -1; - pixel_y = 29 - }, -/turf/open/floor/engine, -/area/ai_monitored/turret_protected/ai) "poV" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted, /obj/structure/table_frame, @@ -30874,26 +30359,18 @@ }, /turf/open/floor/engine/o2, /area/engine/atmos) +"pvC" = ( +/obj/effect/turf_decal/numbers/two_nine, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/engine/engineering) "pvV" = ( /obj/machinery/iv_drip, /turf/open/floor/iron/grid/steel, /area/medical/patients_rooms) -"pwr" = ( -/obj/machinery/light_switch{ - pixel_x = 25; - pixel_y = 26 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads/captain) "pwy" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/closet/crate/miningcar{ @@ -30946,20 +30423,6 @@ "pxs" = ( /turf/closed/mineral/bscrystal, /area/quartermaster/storage) -"pxD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/power/smes, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/item/radio/intercom{ - pixel_x = 33; - pixel_y = -2 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "pxO" = ( /obj/structure/table, /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, @@ -31018,11 +30481,6 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) -"pzR" = ( -/obj/structure/lattice/catwalk/over, -/obj/machinery/firealarm/directional/east, -/turf/open/openspace, -/area/maintenance/department/security/brig) "pAb" = ( /obj/structure/railing, /turf/open/floor/plating/asteroid/planetary, @@ -31135,13 +30593,6 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) -"pBY" = ( -/obj/item/paicard{ - pixel_x = 5; - pixel_y = 1 - }, -/turf/open/floor/plating, -/area/quartermaster/warehouse) "pCa" = ( /obj/machinery/door/airlock/engineering/glass/critical{ heat_proof = 1; @@ -31158,51 +30609,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/wood, /area/chapel/main) -"pCI" = ( -/obj/machinery/airalarm/all_access{ - dir = 8; - pixel_x = 24 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = 5; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = 5; - pixel_y = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/camera/autoname{ - dir = 8; - network = list("ss13","engine") - }, -/obj/effect/loot_jobscale/medical/burn_kit{ - pixel_x = -6; - pixel_y = 10 - }, -/obj/item/storage/toolbox/emergency{ - pixel_x = 3; - pixel_y = -1 - }, -/obj/item/extinguisher/advanced{ - pixel_x = -8; - pixel_y = 2 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "pCT" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -31236,6 +30642,25 @@ dir = 4 }, /area/medical/genetics/cloning) +"pDD" = ( +/obj/effect/turf_decal/stripes/line, +/obj/item/radio/intercom{ + dir = 1; + pixel_y = 29 + }, +/obj/machinery/computer/med_data/laptop{ + pixel_x = 4; + pixel_y = 2; + req_one_access = null; + req_one_access_txt = "1;4" + }, +/obj/structure/table, +/obj/item/paicard{ + pixel_x = -14; + pixel_y = 2 + }, +/turf/open/floor/iron, +/area/security/brig) "pEf" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -31299,6 +30724,48 @@ }, /turf/open/floor/iron/dark, /area/security/brig) +"pFZ" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/table, +/obj/effect/turf_decal/siding/white{ + dir = 9 + }, +/obj/item/storage/box/papersack{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/storage/box/papersack{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/storage/box/papersack{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/storage/box/papersack{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/storage/box/papersack{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/storage/box/papersack{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/storage/box/papersack{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/food/grown/apple{ + pixel_x = 11; + pixel_y = -6 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "pGn" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/disposalpipe/segment{ @@ -31306,29 +30773,16 @@ }, /turf/open/floor/iron, /area/maintenance/department/bridge) -"pGp" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = -31 - }, -/mob/living/simple_animal/bot/mulebot{ - beacon_freq = 1400; - home_destination = "QM #1"; - suffix = "#1" - }, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; - location = "QM #1" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/quartermaster/warehouse) "pGA" = ( /obj/effect/decal/cleanable/blood/old, /obj/item/hatchet, /turf/open/floor/plating/dirt/planetary, /area/asteroid/paradise/surface) +"pGB" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "pHe" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/door/airlock/maintenance_hatch{ @@ -31429,40 +30883,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) -"pII" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) -"pIN" = ( -/obj/structure/stairs{ - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 2; - pixel_y = 29 - }, -/turf/open/floor/pod/dark, -/area/crew_quarters/cafeteria) -"pJt" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/quartermaster/sorting) "pKj" = ( /obj/structure/flora/rock/pile, /obj/effect/turf_decal/sand/plating, @@ -31530,28 +30950,6 @@ }, /turf/open/floor/iron/dark, /area/storage/tech) -"pLg" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - alpha = 180; - dir = 2 - }, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) -"pLi" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - initialize_directions = 1 - }, -/obj/effect/turf_decal/bot, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = -30 - }, -/turf/open/floor/iron/tech, -/area/engine/engineering) "pLv" = ( /obj/effect/turf_decal/siding/white{ alpha = 100; @@ -31581,6 +30979,30 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) +"pLT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/small, +/obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ + alpha = 180; + color = "#DE3A3A" + }, +/obj/machinery/flasher{ + id = "brigentryaux"; + pixel_y = -38; + range = 3 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 1; + pixel_y = -28 + }, +/turf/open/floor/iron, +/area/security/brig) "pMc" = ( /obj/structure/lattice/catwalk/over, /obj/structure/railing{ @@ -31590,21 +31012,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"pMh" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "pMt" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -31664,15 +31071,6 @@ "pMW" = ( /turf/closed/wall/r_wall/rust, /area/maintenance/department/engine) -"pMX" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/iron, -/area/maintenance/department/crew_quarters/dorms) "pMY" = ( /obj/structure/chair, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -31772,19 +31170,6 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) -"pQt" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/sink/kitchen{ - desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; - name = "old sink"; - pixel_y = 28 - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/kitchen) -"pQG" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/openspace, -/area/asteroid/paradise) "pRW" = ( /obj/structure/chair/office{ dir = 4 @@ -31836,24 +31221,6 @@ "pSY" = ( /turf/open/floor/plating, /area/maintenance/department/chapel) -"pTi" = ( -/obj/structure/table, -/obj/item/stock_parts/subspace/treatment, -/obj/item/stock_parts/subspace/treatment, -/obj/item/stock_parts/subspace/treatment, -/obj/item/stock_parts/subspace/treatment, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/item/book/manual/wiki/tcomms{ - pixel_x = 17; - pixel_y = 4 - }, -/obj/item/radio/intercom{ - pixel_y = 28 - }, -/turf/open/floor/iron/dark, -/area/engine/atmos) "pTv" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, @@ -31909,6 +31276,17 @@ /obj/structure/filingcabinet, /turf/open/floor/wood, /area/medical/exam_room) +"pUm" = ( +/obj/machinery/conveyor{ + id = "QMLoad2" + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -30; + pixel_y = -2 + }, +/turf/open/floor/iron/dark, +/area/quartermaster/storage) "pUo" = ( /obj/machinery/atmospherics/pipe/multiz/layer4{ dir = 1 @@ -31951,14 +31329,37 @@ }, /turf/open/floor/iron, /area/crew_quarters/kitchen/coldroom) -"pVH" = ( -/obj/item/radio/intercom{ +"pUZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door/incinerator_vent_atmos_aux{ + pixel_x = 24; + pixel_y = 8; + req_one_access = null; + req_one_access_txt = "11" + }, +/obj/machinery/button/door/incinerator_vent_atmos_main{ + pixel_x = 24; + pixel_y = -8; + req_one_access = null; + req_one_access_txt = "11" + }, +/obj/machinery/button/ignition/incinerator/atmos{ + pixel_x = 38; + pixel_y = -7 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/computer/turbine_computer{ dir = 1; - pixel_x = -31; - pixel_y = -3 + id = "incineratorturbineRight"; + name = "gas turbine right control computer" }, -/turf/open/floor/plating/beach/sand, -/area/asteroid/paradise/surface/sand) +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "pVO" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 9 @@ -31978,18 +31379,15 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/maint) -"pWH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/spawner/randomarcade{ - dir = 1 +"pWG" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12"; + security_level = 6 }, -/obj/structure/railing, -/obj/effect/turf_decal/siding/white, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "pWN" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/glowstick/lit, @@ -32092,10 +31490,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/maintenance/department/engine) -"pXZ" = ( -/obj/effect/decal/cleanable/food/egg_smudge, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "pYd" = ( /turf/open/floor/wood/broken, /area/hallway/secondary/service) @@ -32135,11 +31529,34 @@ name = "mainframe floor" }, /area/tcommsat/server) +"pYO" = ( +/obj/machinery/computer/security/mining, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/bridge) "pZC" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/maintenance/department/science/central) +"pZI" = ( +/obj/structure/flora/ausbushes/sunnybush, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/grass/no_border, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "qah" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -32347,6 +31764,12 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) +"qeO" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "qfj" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -32396,17 +31819,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"qgq" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "qgB" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood{ @@ -32419,6 +31831,15 @@ }, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) +"qgW" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "1-32" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/crew_quarters/bar) "qgY" = ( /turf/closed/wall/r_wall, /area/maintenance/department/eva) @@ -32472,6 +31893,21 @@ "qhT" = ( /turf/closed/wall/r_wall, /area/maintenance/department/security/brig) +"qiO" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_x = -8; + pixel_y = 15 + }, +/obj/item/reagent_containers/glass/beaker{ + pixel_x = 6; + pixel_y = 3 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "qjd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/fancy/comfy{ @@ -32490,6 +31926,11 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) +"qjq" = ( +/obj/structure/flora/grass/jungle/b, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "qjF" = ( /obj/structure/railing{ dir = 8 @@ -32575,17 +32016,6 @@ /obj/structure/fans/tiny, /turf/open/floor/iron/techmaint/planetary, /area/science/mixing) -"qlK" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "1-16" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/maintenance/department/medical/morgue) "qmd" = ( /obj/structure/railing{ dir = 4 @@ -32611,6 +32041,14 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/eva) +"qnE" = ( +/obj/structure/flora/junglebush/c, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "qnK" = ( /obj/machinery/power/apc/auto_name/south{ pixel_y = -24 @@ -32689,17 +32127,6 @@ "qpS" = ( /turf/closed/mineral/random/air, /area/maintenance/disposal) -"qqn" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "qrb" = ( /obj/machinery/requests_console{ department = "Science"; @@ -32733,27 +32160,6 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) -"qsi" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/light{ - light_color = "#7AC3FF" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "qsx" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/power/apc/auto_name/north{ @@ -32931,6 +32337,10 @@ /obj/structure/chair/office, /turf/open/floor/iron/dark, /area/engine/atmos) +"qwk" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/medical/central) "qwA" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -33033,6 +32443,12 @@ }, /turf/open/floor/wood, /area/crew_quarters/theatre/backstage) +"qza" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "qzd" = ( /obj/structure/ladder, /obj/effect/turf_decal/stripes/line{ @@ -33121,6 +32537,10 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/engine/engineering) +"qBR" = ( +/obj/structure/lattice, +/turf/open/openspace, +/area/maintenance/department/security/brig) "qCg" = ( /turf/open/floor/plating/beach/deep_water, /area/asteroid/paradise/surface/water) @@ -33179,39 +32599,9 @@ }, /turf/open/floor/iron, /area/engine/engineering) -"qFt" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname{ - dir = 8 - }, -/obj/machinery/gibber, -/turf/open/floor/iron/freezer, -/area/crew_quarters/kitchen/coldroom) "qFF" = ( /turf/open/floor/wood, /area/crew_quarters/heads/captain) -"qFN" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/obj/machinery/light, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail{ - dir = 8; - sortType = 14 - }, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = -31 - }, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/science/lab) "qGg" = ( /turf/closed/wall, /area/maintenance/department/engine/atmos) @@ -33280,6 +32670,17 @@ /obj/structure/table/wood, /turf/open/floor/wood/broken, /area/vacant_room/office) +"qId" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "8-32" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/science/central) "qIX" = ( /obj/docking_port/stationary{ dwidth = 3; @@ -33362,6 +32763,21 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) +"qKE" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/chair/office/light{ + dir = 1; + pixel_y = 3 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/landmark/start/scientist, +/turf/open/floor/iron/grid/steel, +/area/science/xenobiology) "qKI" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/effect/turf_decal/bot{ @@ -33481,6 +32897,15 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/engine/engineering) +"qOn" = ( +/obj/structure/table/wood, +/obj/item/soap/nanotrasen, +/obj/item/paicard{ + pixel_x = -6; + pixel_y = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/cafeteria) "qOu" = ( /obj/item/target, /obj/effect/turf_decal/stripes/line, @@ -33511,6 +32936,21 @@ dir = 8 }, /turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) +"qQk" = ( +/obj/item/storage/secure/safe{ + pixel_x = 37; + pixel_y = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/camera/autoname, +/obj/item/radio/intercom{ + dir = 1; + pixel_y = 29 + }, +/turf/open/floor/iron, /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) @@ -33706,10 +33146,6 @@ /obj/structure/railing, /turf/open/floor/iron, /area/bridge) -"qUk" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/medical/central) "qUr" = ( /obj/effect/turf_decal/stripes/line, /obj/item/kirbyplants/random, @@ -33934,6 +33370,13 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) +"qYC" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/security/brig) "qYU" = ( /obj/machinery/computer/bounty{ dir = 1 @@ -34083,13 +33526,6 @@ }, /turf/open/floor/iron, /area/security/brig) -"rcs" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "rcE" = ( /obj/structure/lattice/catwalk/over, /obj/machinery/modular_computer/console/preset/engineering{ @@ -34146,10 +33582,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, /area/medical/morgue) -"reu" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "reS" = ( /obj/structure/railing/corner, /obj/effect/decal/cleanable/dirt/dust, @@ -34312,13 +33744,32 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/fitness/recreation) -"riO" = ( -/obj/structure/flora/ausbushes/sparsegrass, -/obj/structure/flora/ausbushes/lavendergrass, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) +"riT" = ( +/obj/machinery/button/door{ + id = "meetingshutter"; + name = "Privacy Shutter Control"; + pixel_x = 26; + pixel_y = 2 + }, +/obj/structure/filingcabinet{ + pixel_x = 8 + }, +/obj/structure/filingcabinet{ + pixel_x = -8 + }, +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 5 + }, +/obj/machinery/light_switch{ + pixel_x = 35; + pixel_y = 2 + }, +/obj/structure/sign/painting/library{ + pixel_x = 1; + pixel_y = 29 + }, +/turf/open/floor/iron/dark, +/area/bridge/meeting_room) "rjh" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -34330,6 +33781,21 @@ }, /turf/open/floor/iron, /area/engine/engineering) +"rjj" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "rjD" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -34351,6 +33817,14 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) +"rjX" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/box, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "rkg" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -34397,22 +33871,6 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/airless, /area/science/mixing) -"rku" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 29; - pixel_y = -2 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "rkz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 @@ -34561,16 +34019,35 @@ /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /turf/open/floor/iron/dark, /area/science/mixing) -"rnW" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 +"rnO" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 8 }, /obj/structure/cable/yellow{ - icon_state = "0-8" + icon_state = "2-4" }, -/turf/open/floor/iron, -/area/maintenance/department/engine) +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-16" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/effect/landmark/start/station_engineer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/dark/visible{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/engine/atmos) "roc" = ( /obj/structure/table/reinforced, /obj/item/paper_bin{ @@ -34617,6 +34094,10 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"roL" = ( +/obj/item/toy/plush/moth/firewatch, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "roN" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, @@ -34774,25 +34255,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"rsj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "quarantineshutters"; - name = "isolation shutters" - }, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Medbay Maintenance"; - req_access_txt = "5" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/maintenance/department/medical/central) "rsH" = ( /obj/effect/turf_decal/numbers{ dir = 1 @@ -34900,19 +34362,20 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) -"ruK" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/disposalpipe/segment{ - dir = 4 +"ruO" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/dresser, +/obj/item/candle{ + pixel_x = 6; + pixel_y = 12 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 +/obj/item/radio/intercom{ + pixel_y = -29 }, -/turf/open/floor/iron/showroomfloor, -/area/crew_quarters/cryopods) +/turf/open/floor/carpet/orange, +/area/quartermaster/qm) "ruX" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -34959,6 +34422,19 @@ /obj/item/chair, /turf/open/floor/plating/airless, /area/science/test_area) +"rwG" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/railing/corner, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/lattice/catwalk/over, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/cable/yellow{ + icon_state = "4-32" + }, +/turf/open/openspace, +/area/asteroid/paradise/surface) "rxd" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, @@ -34992,12 +34468,10 @@ /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) "ryh" = ( -/obj/structure/flora/ausbushes/sparsegrass, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) +/obj/structure/lattice/catwalk/over, +/obj/machinery/firealarm/directional/north, +/turf/open/openspace, +/area/maintenance/department/security/brig) "ryA" = ( /obj/machinery/power/apc/auto_name/south{ pixel_y = -24 @@ -35008,6 +34482,20 @@ /obj/structure/cable/yellow, /turf/open/floor/iron, /area/janitor) +"rzg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/numbers/two_nine, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/engine/engineering) "rzI" = ( /obj/structure/lattice/catwalk/over, /obj/structure/railing/corner{ @@ -35027,6 +34515,27 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"rzP" = ( +/obj/item/kirbyplants/random, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -30; + pixel_y = -2 + }, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) +"rzV" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "rAh" = ( /obj/structure/table/glass, /obj/item/retractor{ @@ -35089,30 +34598,6 @@ luminosity = 2 }, /area/ai_monitored/turret_protected/ai) -"rBu" = ( -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Access"; - req_one_access_txt = "32;19" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/layer_manifold, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/tech/grid, -/area/ai_monitored/turret_protected/aisat_interior) -"rBL" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/evac, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "rBM" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, @@ -35133,14 +34618,6 @@ }, /turf/open/floor/plating/asteroid/basalt/planetary, /area/quartermaster/storage) -"rCQ" = ( -/obj/effect/turf_decal/bot, -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/kitchenspike, -/turf/open/floor/iron/freezer, -/area/crew_quarters/kitchen/coldroom) "rDl" = ( /obj/structure/chair/office/light{ dir = 4 @@ -35158,6 +34635,22 @@ }, /turf/open/floor/iron, /area/bridge) +"rDI" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/firealarm/directional/north, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron, +/area/science/research) "rDX" = ( /obj/effect/turf_decal/tile/purple/fourcorners/contrasted, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -35168,6 +34661,13 @@ }, /turf/open/floor/iron/white, /area/science/lab) +"rEg" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/numbers, +/turf/open/floor/iron, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "rEh" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -35189,18 +34689,14 @@ }, /turf/open/floor/iron/dark, /area/security/brig) -"rEo" = ( -/obj/item/radio/intercom{ - broadcasting = 1; - canhear_range = 6; - dir = 8; - listening = 1; - name = "Station Intercom (Court)"; - pixel_x = 33; - pixel_y = -4 +"rEz" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small{ + dir = 1 }, -/turf/open/floor/plating, -/area/vacant_room/office) +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/maintenance/department/engine) "rEC" = ( /obj/structure/window/reinforced{ dir = 1 @@ -35221,16 +34717,6 @@ /obj/structure/flora/ausbushes/ywflowers, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) -"rEU" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "rEV" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -35349,53 +34835,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"rGO" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) -"rGX" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/table, -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, -/obj/item/storage/box/papersack{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/item/storage/box/papersack{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/item/storage/box/papersack{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/item/storage/box/papersack{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/item/storage/box/papersack{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/item/storage/box/papersack{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/storage/box/papersack{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/food/grown/apple{ - pixel_x = 11; - pixel_y = -6 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "rHi" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -26 @@ -35563,6 +35002,16 @@ }, /turf/open/floor/plating/grass, /area/asteroid/paradise/surface) +"rKV" = ( +/obj/docking_port/stationary{ + dwidth = 12; + height = 69; + id = "whiteship_home"; + name = "Auxiliary Dock"; + width = 25 + }, +/turf/open/floor/plating/dirt/planetary, +/area/asteroid/paradise/surface/grass) "rLa" = ( /obj/structure/stairs, /obj/structure/extinguisher_cabinet{ @@ -35588,14 +35037,6 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) -"rLD" = ( -/obj/structure/flora/junglebush/c, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "rLL" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -35707,18 +35148,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"rOE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/iron, -/area/maintenance/department/cargo) "rOI" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/fence/post{ @@ -35728,13 +35157,6 @@ dir = 1 }, /area/asteroid/paradise/surface) -"rPg" = ( -/obj/structure/sign/painting/library{ - pixel_x = 1; - pixel_y = 29 - }, -/turf/open/openspace, -/area/crew_quarters/kitchen) "rPj" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -35798,12 +35220,6 @@ slowdown = 0 }, /area/asteroid/paradise/surface) -"rQQ" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "rRc" = ( /obj/structure/table, /obj/effect/turf_decal/siding/wood{ @@ -35934,42 +35350,29 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/tcommsat/computer) -"rVG" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/sand/plating, -/obj/structure/flora/rock/pile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) +"rWj" = ( +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -33; + pixel_y = -36 + }, +/obj/structure/disposalpipe/trunk/multiz/down{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/item/book/manual/wiki/cooking_to_serve_man, +/obj/item/book/manual/wiki/barman_recipes{ + pixel_x = 4; + pixel_y = -4 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "rWp" = ( /obj/effect/spawner/room/fivexfour, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"rWq" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/solarpanel_small, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) -"rWs" = ( -/obj/effect/turf_decal/tile/black/opposingcorners{ - dir = 1 - }, -/obj/machinery/suit_storage_unit/rd, -/obj/effect/turf_decal/bot, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/item/toy/plush/slimeplushie{ - pixel_x = -1; - pixel_y = 7 - }, -/turf/open/floor/iron/white, -/area/crew_quarters/heads/hor) "rWV" = ( /obj/structure/ladder, /obj/effect/turf_decal/stripes/line{ @@ -36023,6 +35426,26 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/hydroponics) +"rYe" = ( +/obj/structure/sign/poster/random{ + pixel_x = 31 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table/wood, +/obj/item/storage/crayons{ + pixel_x = 3; + pixel_y = 7 + }, +/obj/item/camera{ + pixel_y = -9 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 2; + pixel_y = 29 + }, +/turf/open/floor/wood, +/area/crew_quarters/cafeteria) "rYh" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -36313,6 +35736,21 @@ }, /turf/open/floor/plating, /area/maintenance/department/bridge) +"sew" = ( +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/dark, +/area/engineering/hallway{ + name = "Engineering Viewing Platform" + }) "sff" = ( /obj/structure/rack, /obj/item/crowbar/red, @@ -36416,48 +35854,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/chapel) -"sid" = ( -/obj/structure/chair/fancy/comfy{ - color = "#596479" - }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/effect/landmark/start/captain, -/obj/machinery/light{ - dir = 1 - }, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = 27 - }, -/turf/open/floor/carpet/blue, -/area/bridge/meeting_room) -"sif" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red/half/contrasted{ - alpha = 180 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/machinery/recharger{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = 10 - }, -/turf/open/floor/iron/dark, -/area/security/warden) "sip" = ( /obj/machinery/camera/autoname{ dir = 4; @@ -36490,6 +35886,30 @@ }, /turf/open/floor/iron, /area/engine/atmos) +"siH" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/window/northleft{ + dir = 2; + req_access_txt = "50" + }, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/quartermaster/sorting) "siO" = ( /obj/machinery/door/airlock/public/glass{ name = "Chapel" @@ -36528,14 +35948,6 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) -"sjd" = ( -/obj/structure/railing, -/obj/structure/lattice, -/obj/machinery/firealarm/directional/west, -/turf/open/openspace, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "sjC" = ( /obj/item/book/granter/spell/smoke/lesser{ pixel_x = -4; @@ -36594,19 +36006,6 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) -"sky" = ( -/obj/item/kirbyplants/random, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -30; - pixel_y = -2 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "skF" = ( /obj/machinery/newscaster{ pixel_y = -31 @@ -36709,31 +36108,9 @@ }, /turf/open/floor/iron/dark, /area/chapel/office) -"smX" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_x = -1; - pixel_y = 30 - }, -/turf/open/floor/iron, -/area/engine/atmos) "snu" = ( /turf/closed/wall, /area/crew_quarters/cryopods) -"snM" = ( -/obj/structure/flora/junglebush/c, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "snW" = ( /obj/structure/girder, /turf/open/floor/plating, @@ -36778,11 +36155,6 @@ /obj/structure/flora/ausbushes/sparsegrass, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) -"soQ" = ( -/obj/structure/flora/ausbushes/sparsegrass, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "spj" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -36834,20 +36206,6 @@ "srJ" = ( /turf/closed/wall/r_wall, /area/crew_quarters/heads/hop) -"srK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/sand/plating, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -31; - pixel_y = -3 - }, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "ssi" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -36859,6 +36217,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/maintenance/department/bridge) +"ssr" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/paicard, +/turf/open/floor/iron, +/area/maintenance/department/medical/central) "ssw" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/tech, @@ -36902,15 +36265,6 @@ }, /turf/open/floor/iron, /area/engine/engineering) -"suj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "suk" = ( /obj/structure/chair/office/light{ dir = 4 @@ -36930,44 +36284,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) -"svk" = ( -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "medbay" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/airlock/medical/glass{ - emergency = 1; - id_tag = "MedbayFoyer"; - name = "Medbay"; - req_one_access_txt = "5" +"svv" = ( +/obj/effect/dummy/lighting_obj{ + light_color = "#e6762c"; + light_power = 2; + light_range = 9 }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) -"svB" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, +/turf/open/lava/smooth, /area/asteroid/paradise) "svO" = ( /obj/structure/chair{ @@ -37189,6 +36512,12 @@ "sDa" = ( /turf/closed/wall, /area/maintenance/disposal) +"sDH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/wood, +/area/crew_quarters/cafeteria) "sEk" = ( /obj/effect/turf_decal/siding/white{ alpha = 100; @@ -37228,36 +36557,6 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) -"sEO" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 29; - pixel_y = -3 - }, -/turf/open/floor/iron/white, -/area/crew_quarters/fitness/recreation) -"sEP" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "1-16" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/chapel) "sFa" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 @@ -37328,6 +36627,16 @@ }, /turf/open/floor/iron, /area/maintenance/department/bridge) +"sGK" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "sGX" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/sepia, @@ -37459,6 +36768,15 @@ /obj/machinery/space_heater, /turf/open/floor/iron, /area/maintenance/department/bridge) +"sKV" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/structure/sink/kitchen{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "old sink"; + pixel_y = 28 + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "sLb" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/sepia/planetary{ @@ -37577,6 +36895,16 @@ "sNi" = ( /turf/open/floor/plating/beach/water, /area/asteroid/paradise/surface/water) +"sNp" = ( +/obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ + alpha = 180; + color = "#DE3A3A" + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = -32 + }, +/turf/open/floor/iron/dark, +/area/security/brig) "sNq" = ( /obj/machinery/airalarm/directional/west, /obj/structure/cable/yellow{ @@ -37667,21 +36995,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"sPN" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "sQG" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -37827,13 +37140,6 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/heads/hos) -"sUv" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/cardboard, -/obj/effect/spawner/lootdrop/maintenance/two, -/obj/item/paicard, -/turf/open/floor/iron, -/area/ai_monitored/turret_protected/aisat/maint) "sUS" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/camera/autoname{ @@ -37846,20 +37152,18 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"sUZ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/sand/plating, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 +"sVh" = ( +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 +/obj/machinery/door/airlock/medical/glass{ + name = "kitchen"; + req_one_access_txt = "28;25;35" }, -/turf/open/floor/iron, -/area/crew_quarters/dorms) +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "sVn" = ( /obj/effect/turf_decal/trimline/yellow, /obj/structure/cable/yellow{ @@ -37916,25 +37220,6 @@ "sWe" = ( /turf/open/floor/iron, /area/maintenance/department/science/xenobiology) -"sWk" = ( -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -33; - pixel_y = -36 - }, -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 4 - }, -/obj/structure/rack, -/obj/item/stack/package_wrap, -/obj/item/hand_labeler, -/obj/item/book/manual/wiki/cooking_to_serve_man, -/obj/item/book/manual/wiki/barman_recipes{ - pixel_x = 4; - pixel_y = -4 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "sWl" = ( /obj/structure/filingcabinet/chestdrawer, /mob/living/simple_animal/parrot/Poly, @@ -37954,6 +37239,27 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/security/brig) +"sWy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id = "engstorage"; + name = "Engineering Secure Storage Lockdown" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/engine/engineering) "sWD" = ( /obj/machinery/gateway{ dir = 6 @@ -38011,6 +37317,25 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) +"sXY" = ( +/obj/structure/noticeboard{ + name = "bounty list"; + pixel_x = 1; + pixel_y = 33 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/autoname{ + dir = 4; + network = list("ss13","cargo") + }, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron/sepia, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "sYf" = ( /obj/machinery/computer/cryopod{ pixel_y = -27 @@ -38082,6 +37407,24 @@ }, /turf/open/floor/prison, /area/security/prison) +"sZb" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -31 + }, +/mob/living/simple_animal/bot/mulebot{ + beacon_freq = 1400; + home_destination = "QM #1"; + suffix = "#1" + }, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + dir = 8; + freq = 1400; + location = "QM #1" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/quartermaster/warehouse) "tae" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/sand/plating, @@ -38120,46 +37463,11 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) -"taE" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "taR" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/engine/atmos) -"taW" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-16" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/effect/landmark/start/station_engineer, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/dark/visible{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/engine/atmos) "taZ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -38328,6 +37636,23 @@ }, /turf/open/floor/prison, /area/security/prison) +"tfh" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 9; + height = 14; + id = "emergency_home"; + name = "EchoStation emergency evac bay"; + width = 21 + }, +/turf/open/floor/sepia/planetary{ + slowdown = 0 + }, +/area/asteroid/paradise/surface) "tfl" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -38367,27 +37692,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/tech, /area/engine/engineering) -"tfJ" = ( -/obj/machinery/power/smes{ - charge = 5e+006; - name = "ai power storage unit" - }, -/obj/machinery/flasher{ - id = "AI"; - name = "Meatbag Pacifier"; - pixel_x = 23; - pixel_y = 22 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/item/toy/plush/lizardplushie{ - layer = 5; - pixel_x = 1; - pixel_y = 14 - }, -/turf/open/floor/circuit/red, -/area/ai_monitored/turret_protected/ai) "tfQ" = ( /obj/machinery/atmospherics/components/binary/pump/layer4{ dir = 4; @@ -38509,6 +37813,19 @@ }, /turf/open/floor/iron/grid/steel, /area/hydroponics) +"tih" = ( +/mob/living/simple_animal/kalo{ + desc = "The Perma brig's cute grass snake."; + icon_dead = "snake_dead"; + icon_living = "snake"; + icon_state = "snake"; + name = "Hugel" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/prison, +/area/security/prison) "tio" = ( /obj/structure/railing{ dir = 8 @@ -38568,6 +37885,11 @@ /mob/living/simple_animal/slime, /turf/open/floor/engine, /area/science/xenobiology) +"tjf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/closed/mineral/random/air, +/area/asteroid/paradise) "tju" = ( /obj/structure/railing/corner{ dir = 1 @@ -38636,6 +37958,31 @@ }, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) +"tkD" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/red/half/contrasted{ + alpha = 180 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/machinery/recharger{ + pixel_x = 7; + pixel_y = 3 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = 10 + }, +/turf/open/floor/iron/dark, +/area/security/warden) "tkJ" = ( /turf/open/floor/iron/dark/side{ dir = 6 @@ -38690,6 +38037,33 @@ /obj/structure/stairs, /turf/open/floor/pod/dark, /area/science/mixing) +"tlH" = ( +/obj/machinery/computer/cargo/request{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 3; + name = "Engineering RC"; + pixel_x = -32; + pixel_y = -1 + }, +/obj/machinery/camera/autoname{ + dir = 4; + network = list("ss13","engine") + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = -30 + }, +/turf/open/floor/iron, +/area/engine/engineering) "tlK" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -38764,6 +38138,34 @@ "tmO" = ( /turf/closed/wall/r_wall, /area/chapel/office) +"tnA" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/grass/no_border, +/area/medical/storage) +"tnI" = ( +/obj/structure/chair/fancy/comfy{ + color = "#596479" + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/effect/landmark/start/captain, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = 27 + }, +/turf/open/floor/carpet/blue, +/area/bridge/meeting_room) "tnQ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/purple/visible, @@ -38797,15 +38199,6 @@ }, /turf/open/floor/grass/no_border, /area/medical/storage) -"tok" = ( -/obj/structure/reagent_dispensers/beerkeg{ - pixel_x = 6; - pixel_y = -6 - }, -/turf/open/floor/plating/beach/coastline_t{ - dir = 9 - }, -/area/asteroid/paradise/surface) "top" = ( /obj/structure/stairs{ dir = 4 @@ -38822,14 +38215,6 @@ /obj/effect/spawner/room/threexfive, /turf/open/floor/plating, /area/maintenance/department/science/central) -"toN" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "tpg" = ( /obj/structure/sign/painting/library{ pixel_y = 32 @@ -38878,16 +38263,6 @@ }, /turf/open/floor/engine, /area/security/nuke_storage) -"tpF" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Security Office"; - req_access_txt = 0; - req_one_access_txt = "1;4" - }, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/security/brig) "tpH" = ( /obj/structure/grille/broken, /turf/open/floor/plating, @@ -38956,6 +38331,15 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"trB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "trC" = ( /obj/structure/table, /obj/item/clipboard, @@ -39026,6 +38410,14 @@ }, /turf/open/floor/plating, /area/security/prison) +"tss" = ( +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/cable/yellow{ + icon_state = "2-32" + }, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/science/central) "tst" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -39085,6 +38477,14 @@ }, /turf/open/floor/iron/dark, /area/security/brig) +"ttC" = ( +/obj/structure/railing, +/obj/structure/lattice, +/obj/machinery/firealarm/directional/west, +/turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "ttD" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -39162,6 +38562,22 @@ /obj/machinery/atmospherics/pipe/simple/green/hidden, /turf/open/floor/engine/plasma, /area/engine/atmos) +"tvm" = ( +/obj/item/beacon{ + pixel_y = 3 + }, +/obj/effect/turf_decal/numbers, +/obj/structure/railing{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/iron/techmaint/planetary, +/area/asteroid/paradise/surface) "twd" = ( /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/basalt/planetary, @@ -39236,19 +38652,6 @@ }, /turf/open/floor/carpet/green, /area/vacant_room/office) -"txL" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "txR" = ( /obj/structure/closet/secure_closet/personal, /turf/open/floor/iron, @@ -39304,17 +38707,6 @@ "tzP" = ( /turf/closed/wall/r_wall/rust, /area/science/research) -"tzS" = ( -/obj/structure/closet/emcloset/anchored, -/obj/structure/railing{ - dir = 10 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "tzT" = ( /obj/item/trash/syndi_cakes, /turf/open/floor/plating/beach/sand, @@ -39328,6 +38720,31 @@ }, /turf/open/floor/iron/dark, /area/medical/morgue) +"tAz" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "tAG" = ( /obj/machinery/door/airlock/hatch{ name = "MiniSat Teleporter"; @@ -39409,6 +38826,24 @@ /obj/effect/spawner/lootdrop/glowstick/lit, /turf/open/floor/iron, /area/maintenance/department/medical/central) +"tBT" = ( +/obj/structure/table/reinforced, +/obj/structure/desk_bell{ + pixel_x = -8; + pixel_y = 9 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/obj/item/paicard{ + pixel_x = 5; + pixel_y = 1 + }, +/turf/open/floor/iron/dark, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "tCf" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 @@ -39457,21 +38892,6 @@ }, /turf/open/floor/iron/white/side, /area/science/research) -"tCZ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/porta_turret/ai{ - dir = 4 - }, -/turf/open/floor/iron/tech/grid, -/area/ai_monitored/turret_protected/aisat_interior) "tDp" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -39502,6 +38922,17 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/bridge) +"tDT" = ( +/obj/machinery/seed_extractor, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/firealarm/directional/east, +/obj/structure/sign/poster/official/moth1{ + pixel_y = -32 + }, +/turf/open/floor/iron/grid/steel, +/area/hydroponics) "tEl" = ( /obj/machinery/door/airlock/science{ name = "Toxins Lab"; @@ -39549,6 +38980,19 @@ /obj/structure/sign/departments/minsky/research/dorms, /turf/closed/wall, /area/crew_quarters/dorms) +"tFM" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/camera/autoname{ + network = list("ss13","security") + }, +/obj/item/kirbyplants/random, +/obj/structure/sink/kitchen{ + pixel_y = 22 + }, +/turf/open/floor/iron, +/area/security/brig) "tFV" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -39682,6 +39126,21 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"tIw" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/camera/autoname{ + network = list("aiupload") + }, +/obj/machinery/firealarm/directional/north, +/turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "tII" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/bot, @@ -39694,8 +39153,10 @@ /obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) -"tIN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +"tIP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 6 + }, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) "tJa" = ( @@ -39740,6 +39201,24 @@ /obj/effect/turf_decal/trimline/yellow, /turf/open/floor/iron/white, /area/science/lab) +"tJv" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -30; + pixel_y = -2 + }, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "tJw" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/condiment/saltshaker{ @@ -40206,6 +39685,16 @@ }, /turf/open/floor/iron/dark, /area/security/brig) +"tST" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "tSZ" = ( /obj/item/reagent_containers/food/condiment/peppermill{ pixel_y = 25 @@ -40258,6 +39747,15 @@ }, /turf/open/floor/iron/dark, /area/security/warden) +"tTn" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + alpha = 180 + }, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "tTt" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -40280,23 +39778,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/chapel) -"tTT" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/structure/chair/fancy/bench{ - layer = 2.5 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = 1; - pixel_y = 32 - }, -/turf/open/floor/iron, -/area/security/prison) "tUh" = ( /obj/structure/cable{ icon_state = "2-8" @@ -40315,6 +39796,18 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) +"tUs" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/obj/machinery/vending/donksofttoyvendor, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "tUu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 @@ -40408,22 +39901,13 @@ }, /turf/open/floor/wood, /area/vacant_room/office) -"tVM" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/trunk{ +"tVK" = ( +/obj/effect/turf_decal/siding/white{ dir = 1 }, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - alpha = 180; - dir = 2 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) +/obj/machinery/deepfryer, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "tVY" = ( /turf/open/floor/iron/sepia, /area/quartermaster/storage) @@ -40444,6 +39928,23 @@ }, /turf/open/floor/iron, /area/medical/surgery) +"tWu" = ( +/obj/machinery/atmospherics/pipe/multiz/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/multiz/layer2{ + dir = 1 + }, +/obj/machinery/light/small, +/obj/machinery/status_display/evac{ + pixel_y = -32 + }, +/obj/structure/cable/yellow{ + icon_state = "1-16" + }, +/obj/effect/turf_decal/trimline/yellow, +/turf/open/floor/pod/dark, +/area/maintenance/department/science/central) "tWx" = ( /obj/structure/lattice/catwalk/over, /obj/structure/railing{ @@ -40509,33 +40010,6 @@ "tYd" = ( /turf/closed/wall, /area/janitor) -"tYp" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - alpha = 180; - dir = 1 - }, -/obj/machinery/camera/autoname{ - dir = 4; - network = list("ss13","security") - }, -/obj/machinery/button/door{ - id = "armory"; - name = "Armory Shutter Toggle"; - pixel_x = -32; - pixel_y = 1; - req_access_txt = "3" - }, -/obj/structure/bed/dogbed/walter, -/mob/living/simple_animal/pet/dog/bullterrier/walter{ - density = 0; - dir = 1 - }, -/obj/item/stack/sheet/bone{ - pixel_x = 6; - pixel_y = -6 - }, -/turf/open/floor/iron/dark, -/area/security/warden) "tYu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -40545,23 +40019,21 @@ }, /turf/open/floor/wood, /area/crew_quarters/cafeteria) -"tYC" = ( -/obj/machinery/door/window/brigdoor/northright{ - id = "Cell 1"; - name = "Cell 1"; - req_access_txt = "1" +"tYX" = ( +/obj/machinery/light{ + dir = 1 }, -/obj/effect/turf_decal/delivery, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/prison/dark, -/area/security/prison) -"tZd" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_x = -1; + pixel_y = 30 + }, +/turf/open/floor/iron, +/area/engine/atmos) "tZz" = ( /obj/structure/railing{ dir = 1 @@ -40624,6 +40096,16 @@ }, /turf/open/floor/carpet/red, /area/crew_quarters/theatre/backstage) +"udq" = ( +/obj/structure/flora/junglebush/b, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/grass/no_border, +/area/medical/storage) "udr" = ( /obj/structure/railing/corner{ dir = 1 @@ -40796,33 +40278,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/tcommsat/computer) -"uiv" = ( -/obj/machinery/computer/cargo/request{ - dir = 4 - }, -/obj/machinery/requests_console{ - department = "Engineering"; - departmentType = 3; - name = "Engineering RC"; - pixel_x = -32; - pixel_y = -1 - }, -/obj/machinery/camera/autoname{ - dir = 4; - network = list("ss13","engine") - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = -30 - }, -/turf/open/floor/iron, -/area/engine/engineering) "uiA" = ( /obj/effect/turf_decal/tile/purple{ dir = 4 @@ -40886,6 +40341,32 @@ }, /turf/open/floor/iron, /area/medical/storage) +"ujM" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/conveyor_switch/oneway{ + dir = 1; + id = "packageSort2" + }, +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/obj/effect/landmark/start/cargo_technician, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/quartermaster/sorting) "ujX" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -40905,6 +40386,23 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/chief) +"ukz" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = 4; + pixel_y = 9 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Chefwindow"; + name = "Chef window" + }, +/obj/item/toy/figure/chef{ + pixel_y = -1; + pixel_x = -4 + }, +/turf/open/floor/iron/white, +/area/crew_quarters/kitchen) "ukS" = ( /obj/effect/turf_decal/siding/dark{ dir = 6 @@ -40964,13 +40462,12 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) -"umL" = ( -/obj/effect/landmark/start/cook, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/cable/yellow{ - icon_state = "4-8" +"umB" = ( +/obj/effect/decal/cleanable/generic, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/cafeteria, /area/crew_quarters/kitchen) "unj" = ( /obj/structure/closet/secure_closet/medical3, @@ -41018,6 +40515,25 @@ }, /turf/open/floor/iron, /area/bridge) +"unI" = ( +/obj/structure/sign/directions/science{ + dir = 4; + pixel_y = 10 + }, +/turf/closed/wall, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) +"unO" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/machinery/griddle, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "uoe" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -41049,13 +40565,6 @@ }, /turf/open/floor/iron/dark, /area/security/brig) -"uoB" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/kitchen) "uoF" = ( /obj/machinery/light/small{ dir = 4 @@ -41302,15 +40811,6 @@ }, /turf/open/floor/iron/white, /area/science/lab) -"utq" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/department/eva) "utK" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating/dirt/planetary, @@ -41344,24 +40844,6 @@ dir = 8 }, /area/bridge) -"uvf" = ( -/obj/docking_port/stationary{ - dir = 1; - dwidth = 12; - height = 69; - id = "whiteship_home"; - name = "Auxiliary Dock"; - width = 25 - }, -/turf/open/floor/plating/dirt/planetary, -/area/asteroid/paradise/surface/grass) -"uvk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/numbers, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "uvZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 1 @@ -41375,6 +40857,11 @@ }, /turf/open/floor/iron/dark, /area/bridge/meeting_room) +"uwc" = ( +/obj/structure/cable/yellow, +/obj/effect/turf_decal/box, +/turf/open/floor/plating, +/area/asteroid/paradise/surface) "uwd" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted{ alpha = 180 @@ -41406,6 +40893,32 @@ }, /turf/open/floor/plating, /area/maintenance/department/chapel) +"uwJ" = ( +/obj/machinery/door/window{ + base_state = "leftsecure"; + dir = 8; + icon_state = "leftsecure"; + name = "Primary AI Core Access"; + obj_integrity = 300; + req_access_txt = "16" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "AI Core shutters"; + name = "AI Core Shutter" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/ai"; + icon_state = "control_stun"; + name = "AI Chamber turret control"; + pixel_x = -1; + pixel_y = 29 + }, +/turf/open/floor/engine, +/area/ai_monitored/turret_protected/ai) "uwN" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -41422,17 +40935,12 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/grid/steel, /area/medical/medbay/central) -"uxA" = ( -/obj/machinery/conveyor{ - id = "QMLoad2" - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -30; - pixel_y = -2 - }, -/turf/open/floor/iron/dark, -/area/quartermaster/storage) +"uxz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "uxB" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -41633,6 +41141,28 @@ }, /turf/open/floor/iron, /area/science/lab) +"uEq" = ( +/obj/machinery/light_switch{ + pixel_x = 24 + }, +/obj/structure/bed/double, +/obj/item/bedsheet/double/captain, +/obj/item/disk/nuclear{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/item/toy/plush/beeplushie{ + pixel_x = -2; + pixel_y = -3 + }, +/turf/open/floor/carpet/blue, +/area/crew_quarters/heads/captain/private) "uEs" = ( /obj/structure/closet/firecloset/full, /obj/machinery/light/small{ @@ -41777,17 +41307,6 @@ dir = 1 }, /area/science/research) -"uHR" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "8-32" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/bridge) "uIx" = ( /obj/effect/turf_decal/tile/dark_green{ dir = 1 @@ -41801,16 +41320,16 @@ /obj/item/reagent_containers/food/drinks/shaker, /turf/open/floor/iron, /area/hallway/secondary/service) -"uIH" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/light{ - dir = 8 +"uIW" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/camera_advanced/xenobio, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 32; + pixel_y = -3 }, -/obj/machinery/power/port_gen/pacman, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) +/turf/open/floor/iron/grid/steel, +/area/science/xenobiology) "uJm" = ( /obj/structure/table/wood/fancy/blue, /obj/item/radio/intercom{ @@ -41858,21 +41377,13 @@ luminosity = 2 }, /area/security/nuke_storage) -"uKn" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/structure/table, -/obj/machinery/reagentgrinder{ - pixel_x = -8; - pixel_y = 15 - }, -/obj/item/reagent_containers/glass/beaker{ - pixel_x = 6; - pixel_y = 3 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) +"uKf" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "uKq" = ( /obj/effect/turf_decal/bot, /obj/item/robot_suit, @@ -41890,13 +41401,6 @@ /obj/item/stock_parts/subspace/crystal, /turf/open/floor/iron/dark, /area/engine/atmos) -"uKV" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "uLf" = ( /obj/effect/turf_decal/sand/plating, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -41951,6 +41455,18 @@ /obj/structure/closet/firecloset/full, /turf/open/floor/iron, /area/maintenance/department/cargo) +"uMm" = ( +/obj/structure/cable/yellow{ + icon_state = "1-16" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/turf/open/floor/pod/dark, +/area/maintenance/department/medical/morgue) "uMJ" = ( /obj/machinery/computer/xenoartifact_console, /obj/effect/turf_decal/bot, @@ -42012,6 +41528,47 @@ }, /turf/open/floor/prison/dark, /area/security/prison) +"uNL" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/crew_quarters/cryopods) +"uNV" = ( +/obj/structure/lattice/catwalk/over, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) +"uOs" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ + dir = 4 + }, +/obj/structure/table, +/obj/effect/turf_decal/tile/yellow/fourcorners/contrasted{ + alpha = 230; + color = "#edaa0c" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/belt/utility, +/obj/item/t_scanner, +/obj/item/radio/intercom{ + pixel_y = 29 + }, +/turf/open/floor/iron, +/area/engine/atmos) "uOJ" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, @@ -42124,6 +41681,17 @@ }, /turf/open/floor/iron, /area/security/execution/education) +"uRE" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_one_access_txt = "1;4" + }, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "uRN" = ( /obj/item/clothing/gloves/color/yellow, /obj/effect/turf_decal/stripes/line{ @@ -42327,6 +41895,25 @@ }, /turf/open/indestructible/sound/pool, /area/crew_quarters/fitness/recreation) +"uUH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/power/apc/auto_name/north{ + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) "uUK" = ( /obj/effect/turf_decal/stripes/end{ dir = 1 @@ -42383,6 +41970,16 @@ }, /turf/open/floor/pod/dark, /area/science/lab) +"uWl" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + alpha = 180; + dir = 1 + }, +/obj/structure/closet/firecloset/full, +/turf/open/floor/iron/dark/corner, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "uWx" = ( /obj/structure/chair/office{ dir = 4 @@ -42450,6 +42047,26 @@ }, /turf/open/floor/wood, /area/chapel/office) +"uXI" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/closet/wardrobe/grey, +/obj/effect/turf_decal/bot, +/obj/machinery/light, +/obj/item/paicard, +/turf/open/floor/iron, +/area/crew_quarters/dorms) +"uYb" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/grass/no_border, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "uYr" = ( /turf/open/floor/plating/beach/coastline_t{ dir = 6 @@ -42575,6 +42192,24 @@ /obj/structure/sign/warning/explosives/alt, /turf/open/floor/plating/dirt/planetary, /area/asteroid/paradise/surface) +"vcM" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "vcX" = ( /obj/structure/railing/corner{ dir = 8 @@ -42628,6 +42263,19 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) +"vdC" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "vet" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -42686,6 +42334,13 @@ }, /turf/open/floor/plating, /area/quartermaster/warehouse) +"vgi" = ( +/obj/structure/stairs{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/pod/dark, +/area/engine/engineering) "vgv" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/crate, @@ -42771,6 +42426,13 @@ }, /turf/open/floor/iron/sepia, /area/quartermaster/storage) +"viX" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "vjc" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -42780,6 +42442,10 @@ }, /turf/open/floor/prison/dark, /area/security/prison) +"vjo" = ( +/obj/machinery/camera/autoname, +/turf/open/openspace, +/area/crew_quarters/kitchen) "vjB" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -43072,20 +42738,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/maintenance/department/medical/morgue) -"vrF" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "vst" = ( /obj/effect/turf_decal/trimline/white/corner{ dir = 4 @@ -43155,11 +42807,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/central) -"vtO" = ( -/obj/structure/cable/yellow, -/obj/effect/turf_decal/box, -/turf/open/floor/plating, -/area/asteroid/paradise/surface) "vuh" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box, @@ -43175,6 +42822,49 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) +"vuo" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/solarpanel_small, +/turf/open/floor/iron, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) +"vuE" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 5 + }, +/obj/structure/table, +/obj/effect/turf_decal/tile/yellow/fourcorners/contrasted{ + alpha = 230; + color = "#edaa0c" + }, +/obj/item/clothing/gloves/color/black, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/gloves/color/black{ + pixel_x = 3; + pixel_y = 7 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron, +/area/engine/atmos) +"vvo" = ( +/obj/structure/table, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/book/manual/wiki/tcomms{ + pixel_x = 17; + pixel_y = 4 + }, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/open/floor/iron/dark, +/area/engine/atmos) "vvr" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, @@ -43229,6 +42919,18 @@ /obj/structure/fans/tiny, /turf/open/floor/iron/dark, /area/security/prison) +"vwq" = ( +/obj/structure/dresser, +/obj/item/flashlight/lamp/green{ + pixel_x = -4; + pixel_y = 14 + }, +/obj/item/toy/plush/lisa{ + pixel_x = 5; + pixel_y = 15 + }, +/turf/open/floor/carpet/blue, +/area/crew_quarters/heads/hop) "vwV" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -43420,6 +43122,11 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/hor) +"vFg" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/maintenance/department/engine) "vFx" = ( /obj/structure/closet/secure_closet/chemical, /obj/item/storage/box/pillbottles, @@ -43464,18 +43171,6 @@ }, /turf/open/floor/iron/sepia, /area/quartermaster/storage) -"vGO" = ( -/obj/item/reagent_containers/food/drinks/shaker{ - pixel_x = -8; - pixel_y = 2 - }, -/obj/structure/table/wood, -/obj/machinery/reagentgrinder{ - pixel_x = 6; - pixel_y = 6 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads/captain) "vHe" = ( /obj/effect/turf_decal/loading_area{ dir = 1; @@ -43592,6 +43287,10 @@ }, /turf/closed/wall, /area/vacant_room/office) +"vLy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/openspace, +/area/asteroid/paradise) "vLP" = ( /turf/closed/wall/r_wall, /area/storage/tech) @@ -43633,13 +43332,6 @@ /obj/structure/railing/corner, /turf/open/floor/iron/sepia, /area/quartermaster/storage) -"vMy" = ( -/obj/structure/lattice/catwalk/over, -/obj/machinery/firealarm/directional/east, -/turf/open/openspace, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "vMK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 @@ -43674,6 +43366,36 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron, /area/science/explab) +"vPr" = ( +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box{ + name = "Emergency donut box"; + pixel_x = -2; + pixel_y = 15 + }, +/obj/item/gun/energy/e_gun/dragnet{ + pixel_x = -2; + pixel_y = 1 + }, +/obj/item/beacon/nettingportal, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ + alpha = 180; + color = "#DE3A3A" + }, +/obj/machinery/camera/motion{ + c_tag = "Armory - Internal"; + dir = 4; + network = list("ss13","security") + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -11 + }, +/turf/open/floor/iron/dark, +/area/ai_monitored/security/armory) "vPx" = ( /obj/structure/railing, /obj/structure/lattice, @@ -43712,15 +43434,16 @@ "vQN" = ( /turf/open/openspace, /area/medical/medbay/central) -"vRc" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - alpha = 180; - dir = 1 +"vQZ" = ( +/obj/structure/railing{ + dir = 9 }, /obj/structure/closet/firecloset/full, -/turf/open/floor/iron/dark/corner, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" }) "vRv" = ( /obj/structure/table/reinforced, @@ -43822,19 +43545,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, /area/medical/morgue) -"vTn" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - network = list("ss13","security") - }, -/obj/item/kirbyplants/random, -/obj/structure/sink/kitchen{ - pixel_y = 22 - }, -/turf/open/floor/iron, -/area/security/brig) "vTw" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -43890,32 +43600,6 @@ }, /turf/open/floor/iron, /area/security/prison) -"vUr" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/conveyor_switch/oneway{ - dir = 1; - id = "packageSort2" - }, -/obj/effect/turf_decal/loading_area{ - dir = 1 - }, -/obj/effect/landmark/start/cargo_technician, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/quartermaster/sorting) "vVo" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -43938,10 +43622,6 @@ }, /turf/open/floor/iron, /area/engine/engineering) -"vVC" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "vVE" = ( /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt/dust, @@ -44018,6 +43698,12 @@ }, /turf/open/floor/iron, /area/janitor) +"vWm" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/flora/rock/pile, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/techmaint/planetary, +/area/asteroid/paradise/surface) "vWB" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/sand/plating, @@ -44029,25 +43715,6 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) -"vWY" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/quartermaster/sorting) "vXg" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -44073,6 +43740,32 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) +"vYe" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) +"vYl" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/structure/bed/dogbed/runtime, +/mob/living/simple_animal/pet/cat/Runtime{ + pixel_y = 4 + }, +/obj/item/toy/plush/runtime{ + pixel_x = -6; + pixel_y = 1 + }, +/turf/open/floor/carpet/blue, +/area/crew_quarters/heads/cmo) "vYB" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /obj/item/kirbyplants/random, @@ -44087,11 +43780,6 @@ }, /turf/open/floor/iron, /area/bridge) -"vZa" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "vZe" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/fence/post{ @@ -44099,15 +43787,51 @@ }, /turf/open/floor/plating/grass, /area/asteroid/paradise/surface) -"vZG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 9 +"vZI" = ( +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = 5; + pixel_y = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/camera/autoname{ + dir = 8; + network = list("ss13","engine") + }, +/obj/effect/loot_jobscale/medical/burn_kit{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/storage/toolbox/emergency{ + pixel_x = 3; + pixel_y = -1 + }, +/obj/item/extinguisher/advanced{ + pixel_x = -8; + pixel_y = 2 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "waf" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -44182,13 +43906,19 @@ }, /turf/open/floor/plating/asteroid/planetary, /area/crew_quarters/dorms) -"wbY" = ( -/obj/effect/decal/cleanable/generic, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +"wbv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/ai_upload"; + icon_state = "control_stun"; + name = "AI Upload turret control"; + pixel_x = -33; + pixel_y = 2 + }, +/turf/open/floor/iron/tech/grid, +/area/ai_monitored/turret_protected/aisat_interior) "wbZ" = ( /obj/structure/musician/piano{ icon_state = "piano" @@ -44280,20 +44010,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) -"wdM" = ( -/obj/structure/filingcabinet, -/obj/item/folder/documents, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/iron/dark, -/area/security/nuke_storage) "wdQ" = ( /obj/structure/fireplace, /obj/structure/bed/dogbed, @@ -44407,6 +44123,35 @@ /obj/effect/landmark/start/warden, /turf/open/floor/iron/dark, /area/security/warden) +"wgt" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "8-16" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/cable/yellow{ + icon_state = "8-32" + }, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/bridge) +"wgL" = ( +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -31; + pixel_y = -3 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/science/server) "wgZ" = ( /obj/item/storage/pill_bottle/dice, /obj/effect/turf_decal/siding/wood{ @@ -44520,6 +44265,21 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) +"wiQ" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = -9; + pixel_y = 2 + }, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -2; + pixel_y = 2 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "wjm" = ( /obj/structure/railing{ dir = 4 @@ -44607,18 +44367,6 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/heads/hop) -"wkU" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 9 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "wli" = ( /obj/machinery/door/airlock/engineering/glass{ name = "Engineering Foyer"; @@ -44682,10 +44430,24 @@ /obj/item/storage/backpack/satchel/flat/treasure, /turf/open/floor/plating/beach/sand, /area/asteroid/paradise/surface/sand) -"wmU" = ( -/obj/structure/bonfire, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) +"wnk" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "wnT" = ( /turf/open/floor/dock/drydock, /area/quartermaster/storage) @@ -44777,13 +44539,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"wqL" = ( -/obj/structure/flora/rock/pile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "wrb" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ alpha = 180; @@ -44830,11 +44585,6 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/sorting) -"wsd" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/flora/rock/pile, -/turf/open/floor/iron/techmaint/planetary, -/area/asteroid/paradise/surface) "wsA" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -44968,6 +44718,17 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/iron, /area/ai_monitored/turret_protected/aisat/maint) +"wxC" = ( +/obj/structure/closet/firecloset/full, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "wyg" = ( /obj/effect/turf_decal/tile/purple/half/contrasted, /obj/structure/disposalpipe/junction{ @@ -45099,20 +44860,6 @@ }, /turf/open/floor/iron, /area/hydroponics) -"wAQ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - name = "Atmos to Loop" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/engine/engineering) "wAY" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/sand/plating, @@ -45120,6 +44867,10 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/techmaint/planetary, /area/asteroid/paradise/surface) +"wBy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/mineral/random/air, +/area/asteroid/paradise) "wBT" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance/two, @@ -45144,15 +44895,6 @@ }, /turf/open/floor/iron, /area/security/prison) -"wDa" = ( -/obj/structure/table/wood, -/obj/item/soap/nanotrasen, -/obj/item/paicard{ - pixel_x = -6; - pixel_y = 2 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria) "wDb" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -45225,6 +44967,13 @@ }, /turf/open/floor/prison/dark, /area/security/prison) +"wEe" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/sand/plating, +/obj/structure/flora/rock/pile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "wEs" = ( /obj/item/radio/intercom{ dir = 1; @@ -45296,6 +45045,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"wFM" = ( +/obj/structure/flora/junglebush/c, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "wGp" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt/dust, @@ -45353,6 +45109,18 @@ }, /turf/open/floor/pod/dark, /area/crew_quarters/heads/hor) +"wHD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/dark, +/area/quartermaster/storage) "wHO" = ( /obj/structure/window/reinforced{ dir = 1 @@ -45382,6 +45150,19 @@ /obj/structure/cable/yellow, /turf/open/floor/plating, /area/storage/tech) +"wIQ" = ( +/obj/structure/flora/ausbushes/leafybush, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/grass/no_border, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "wIV" = ( /obj/structure/chair{ dir = 1 @@ -45444,6 +45225,26 @@ }, /turf/open/floor/wood, /area/crew_quarters/cafeteria) +"wMn" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/light_switch{ + pixel_x = 23; + pixel_y = 23 + }, +/turf/open/floor/wood, +/area/crew_quarters/cafeteria) "wMw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -45566,16 +45367,6 @@ /obj/machinery/photocopier, /turf/open/floor/iron/dark, /area/bridge/meeting_room) -"wOw" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_y = -35 - }, -/turf/open/floor/iron, -/area/security/brig) "wOF" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -45851,6 +45642,19 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/central) +"wVz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_y = 28 + }, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_y = 23 + }, +/obj/item/paicard, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "wVI" = ( /obj/effect/turf_decal/delivery, /obj/machinery/portable_atmospherics/canister/oxygen, @@ -45898,6 +45702,19 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/department/science/central) +"wXo" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/firedoor, +/turf/open/floor/prison/dark, +/area/security/prison) "wXA" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, @@ -46019,27 +45836,46 @@ /turf/open/floor/iron, /area/science/mixing) "xbA" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 5 +/obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted{ + alpha = 180 }, -/obj/machinery/suit_storage_unit/mining/eva, -/obj/machinery/light_switch{ - pixel_x = 23; - pixel_y = -9 +/obj/effect/turf_decal/loading_area{ + dir = 4; + pixel_y = -1 }, -/turf/open/floor/carpet/orange, -/area/quartermaster/qm) +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "hopqueue"; + name = "Queue Shutter Control"; + pixel_y = -36; + req_access_txt = "57" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 1; + pixel_y = -27 + }, +/turf/open/floor/iron, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "xbL" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow, /turf/open/floor/plating, /area/security/warden) -"xce" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "xck" = ( /obj/structure/closet/secure_closet/detective, /obj/item/storage/box/evidence{ @@ -46116,6 +45952,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron/dark, /area/maintenance/disposal/incinerator) +"xdb" = ( +/obj/effect/landmark/start/cook, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "xdp" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 @@ -46137,6 +45981,21 @@ }, /turf/open/floor/iron/grid/steel, /area/bridge) +"xdH" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "xdL" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, @@ -46148,23 +46007,6 @@ /obj/structure/signpost, /turf/open/floor/plating/grass, /area/asteroid/paradise/surface) -"xeI" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 5; - pixel_y = 32 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "xfd" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -46253,6 +46095,16 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) +"xhE" = ( +/obj/structure/reflector/box{ + anchored = 1; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "xiu" = ( /obj/effect/turf_decal/trimline/white/line{ dir = 1 @@ -46266,6 +46118,25 @@ }, /turf/open/floor/prison/dark, /area/security/prison) +"xiv" = ( +/obj/structure/chair, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 32; + pixel_y = 3 + }, +/turf/open/floor/iron/dark/side{ + dir = 5 + }, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "xiB" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, @@ -46329,28 +46200,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/science/robotics) -"xja" = ( -/obj/machinery/light_switch{ - pixel_x = 24 - }, -/obj/structure/bed/double, -/obj/item/bedsheet/double/captain, -/obj/item/disk/nuclear{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/item/toy/plush/beeplushie{ - pixel_x = -2; - pixel_y = -3 - }, -/turf/open/floor/carpet/blue, -/area/crew_quarters/heads/captain/private) "xjg" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/stripes/line, @@ -46499,6 +46348,16 @@ }, /turf/open/floor/iron/tech/grid, /area/ai_monitored/turret_protected/ai_upload) +"xne" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "External Gas to Loop" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark, +/area/engine/engineering) "xnh" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/grille_or_trash, @@ -46594,6 +46453,21 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) +"xpn" = ( +/obj/machinery/computer/turbine_computer{ + dir = 1; + id = "incineratorturbineLeft"; + name = "gas turbine left control computer" + }, +/obj/structure/sign/warning/nosmoking{ + pixel_x = 1; + pixel_y = -32 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/iron/dark, +/area/maintenance/disposal/incinerator) "xpp" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -46624,36 +46498,6 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) -"xpE" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/sand/plating, -/obj/machinery/light, -/obj/item/radio/intercom{ - dir = 1; - pixel_y = -35 - }, -/turf/open/floor/plating, -/area/quartermaster/storage) -"xpF" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/light_switch{ - pixel_x = 23; - pixel_y = 23 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria) "xpI" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 @@ -46785,23 +46629,6 @@ /obj/effect/landmark/start/captain, /turf/open/floor/carpet/royalblue, /area/crew_quarters/heads/captain) -"xsl" = ( -/obj/machinery/atmospherics/pipe/multiz/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/multiz/layer2{ - dir = 1 - }, -/obj/machinery/light/small, -/obj/machinery/status_display/evac{ - pixel_y = -32 - }, -/obj/structure/cable/yellow{ - icon_state = "1-16" - }, -/obj/effect/turf_decal/trimline/yellow, -/turf/open/floor/pod/dark, -/area/maintenance/department/science/central) "xsH" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -46816,6 +46643,16 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, /area/maintenance/department/medical/morgue) +"xtb" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "1-32" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/closet/emcloset/anchored, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/engine/atmos) "xty" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -46919,6 +46756,35 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/qm) +"xvQ" = ( +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = -32; + pixel_y = -3 + }, +/turf/open/floor/iron/dark, +/area/engineering/hallway{ + name = "Engineering Viewing Platform" + }) +"xwe" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "xwm" = ( /obj/machinery/teleport/station, /obj/effect/turf_decal/stripes/line{ @@ -47091,6 +46957,26 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"xBc" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_one_access_txt = "4;1" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/brig) "xBP" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -47104,17 +46990,18 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/fitness/recreation) -"xBS" = ( -/obj/structure/closet/cardboard, -/obj/effect/spawner/lootdrop/maintenance/four, -/obj/item/melee/flyswatter, -/obj/item/paicard, -/turf/open/floor/iron, -/area/maintenance/department/science/central) "xBU" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/iron, /area/ai_monitored/turret_protected/aisat/maint) +"xCw" = ( +/obj/machinery/computer/security/hos, +/obj/item/toy/plush/carpplushie{ + pixel_x = 5; + pixel_y = 17 + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/heads/hos) "xCy" = ( /obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ alpha = 180; @@ -47177,21 +47064,6 @@ /obj/machinery/atmospherics/pipe/layer_manifold/visible, /turf/open/floor/engine/airless, /area/engine/atmos) -"xDK" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/camera/autoname{ - network = list("aiupload") - }, -/obj/machinery/firealarm/directional/north, -/turf/open/openspace, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "xDX" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -47208,14 +47080,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/medical/morgue) -"xEn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria) "xEo" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -47241,6 +47105,28 @@ /obj/structure/closet/emcloset/anchored, /turf/open/floor/iron, /area/maintenance/department/bridge) +"xFT" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/command, +/obj/effect/turf_decal/delivery, +/obj/item/radio/intercom{ + pixel_y = 29 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/camera/motion{ + c_tag = "Technical Storage"; + dir = 8; + name = "motion-sensitive Technical Storage"; + network = list("ss13","engine") + }, +/turf/open/floor/iron/techmaint/planetary, +/area/storage/tech) "xGl" = ( /obj/effect/turf_decal/siding/white{ alpha = 100 @@ -47357,15 +47243,6 @@ }, /turf/open/floor/iron, /area/medical/apothecary) -"xIw" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/item/paicard, -/turf/open/floor/plating, -/area/hallway/secondary/service) "xIO" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -47415,16 +47292,19 @@ /obj/effect/spawner/room/threexthree, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"xJF" = ( -/obj/structure/closet/firecloset/full, -/obj/structure/railing{ - dir = 6 +"xJE" = ( +/obj/structure/table, +/obj/item/geiger_counter{ + pixel_x = 6; + pixel_y = 3 }, -/turf/open/floor/iron/dark/side{ - dir = 6 +/obj/item/toy/plush/plushvar{ + pixel_x = -2; + pixel_y = 9 }, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" +/turf/open/floor/iron/dark, +/area/engineering/hallway{ + name = "Engineering Viewing Platform" }) "xJJ" = ( /obj/item/radio/intercom{ @@ -47473,28 +47353,45 @@ /obj/structure/ore_box, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) -"xKs" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 +"xKF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 6 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) -"xKB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 +/obj/effect/turf_decal/numbers/two_nine{ + pixel_y = 17 }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/trunk{ +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/science/research) +"xKQ" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/iron, +/area/quartermaster/sorting) +"xKZ" = ( +/obj/structure/filingcabinet, +/obj/item/folder/documents, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, /turf/open/floor/iron/dark, -/area/quartermaster/storage) +/area/security/nuke_storage) "xLc" = ( /obj/item/paper/guides/jobs/medical/morgue, /obj/effect/turf_decal/bot, @@ -47528,6 +47425,13 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/engine/atmos) +"xMQ" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/processor, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "xMR" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/stripes/line{ @@ -47606,18 +47510,6 @@ /obj/effect/spawner/randomvend/cola, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) -"xQn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "xQu" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -47636,6 +47528,12 @@ }, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) +"xQV" = ( +/obj/structure/flora/rock, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "xRe" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -47687,6 +47585,25 @@ }, /turf/open/floor/iron/white, /area/science/lab) +"xRD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "quarantineshutters"; + name = "isolation shutters" + }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Medbay Maintenance"; + req_access_txt = "5" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/maintenance/department/medical/central) "xRJ" = ( /obj/machinery/door/poddoor/shutters/radiation/preopen{ id = "engsm"; @@ -47820,22 +47737,6 @@ }, /turf/open/floor/engine/o2, /area/engine/atmos) -"xUV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/rnd/production/techfab/department/cargo, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/quartermaster/storage) "xVa" = ( /obj/machinery/gateway{ dir = 9 @@ -47913,47 +47814,6 @@ }, /turf/open/floor/wood/broken, /area/crew_quarters/cafeteria) -"xWB" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/mineral/random/air, -/area/asteroid/paradise) -"xWK" = ( -/obj/machinery/button/flasher{ - id = "brigentryaux"; - pixel_x = 5; - pixel_y = -37 - }, -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "outerbrig"; - name = "Brig Exterior Doors Control"; - normaldoorcontrol = 1; - pixel_x = -6; - pixel_y = -25; - req_access_txt = "63" - }, -/obj/machinery/button/door{ - id = "brigentrance"; - name = "Brig Lockdown Control"; - pixel_x = 6; - pixel_y = -25; - req_access_txt = "63" - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - alpha = 180; - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -32; - pixel_y = -28 - }, -/obj/machinery/computer/crew{ - dir = 4; - req_one_access = list(5,4,3) - }, -/turf/open/floor/iron/dark, -/area/security/warden) "xXi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -48033,6 +47893,22 @@ }, /turf/open/floor/iron/white, /area/science/xenobiology) +"xZX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/engine/engineering) "yaq" = ( /turf/closed/wall/rust, /area/science/server) @@ -48137,6 +48013,29 @@ }, /turf/open/floor/plating/asteroid/basalt/planetary, /area/quartermaster/storage) +"ycF" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Cryogenic Lounge" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/crew_quarters/cryopods) "ydE" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/sand/plating, @@ -48158,15 +48057,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) -"yeh" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/structure/table, -/obj/item/pickaxe, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/engine/atmos) "yet" = ( /turf/open/floor/plating/beach/coastline_b{ dir = 1 @@ -48196,12 +48086,56 @@ slowdown = 0 }, /area/asteroid/paradise/surface) +"yeS" = ( +/obj/structure/stairs{ + dir = 8 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 2; + pixel_y = 29 + }, +/turf/open/floor/pod/dark, +/area/crew_quarters/cafeteria) "yeZ" = ( /obj/effect/turf_decal/numbers{ dir = 1 }, /turf/open/floor/iron, /area/maintenance/department/security/brig) +"yfd" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + piping_layer = 4 + }, +/obj/machinery/camera/autoname{ + dir = 6; + network = list("ss13","medbay") + }, +/obj/machinery/power/apc/auto_name/north{ + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/vending/wallmed{ + pixel_x = -32 + }, +/turf/open/floor/iron/grid/steel, +/area/medical/medbay/central) +"yfP" = ( +/obj/structure/sink/kitchen{ + pixel_y = 22 + }, +/turf/open/floor/iron/dark, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "yfW" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/decal/cleanable/dirt/dust, @@ -48216,6 +48150,16 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) +"ygN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/machinery/shieldgen, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = -31 + }, +/turf/open/floor/iron, +/area/engine/engineering) "ygZ" = ( /obj/item/clothing/suit/ianshirt, /obj/item/bedsheet/ian, @@ -48229,14 +48173,6 @@ /obj/item/clothing/suit/hooded/ian_costume, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/hop) -"yhp" = ( -/obj/structure/cable/yellow{ - icon_state = "2-16" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/effect/spawner/lootdrop/grille_or_trash, -/turf/open/floor/pod/dark, -/area/maintenance/department/crew_quarters/dorms) "yib" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -48261,11 +48197,36 @@ /obj/structure/table_frame, /turf/open/floor/iron, /area/engine/atmos) +"yjb" = ( +/obj/effect/decal/cleanable/food/egg_smudge, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "yjX" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plating, /area/engine/supermatter) +"ykt" = ( +/obj/machinery/power/smes{ + charge = 5e+006; + name = "ai power storage unit" + }, +/obj/machinery/flasher{ + id = "AI"; + name = "Meatbag Pacifier"; + pixel_x = 23; + pixel_y = 22 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/item/toy/plush/lizardplushie{ + layer = 5; + pixel_x = 1; + pixel_y = 14 + }, +/turf/open/floor/circuit/red, +/area/ai_monitored/turret_protected/ai) "ykL" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -48306,15 +48267,6 @@ }, /turf/open/floor/plating, /area/ai_monitored/security/armory) -"yma" = ( -/obj/structure/flora/ausbushes/fullgrass, -/obj/machinery/camera/autoname{ - dir = 8; - network = list("ss13","engine") - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) (1,1,1) = {" rGh @@ -56202,21 +56154,21 @@ cKs wuy hig wuy -xpE +ovX iGq wCc kYy -pBY +afy rXp faZ uli uli -fPA +uOs aUf hpP fCo gaj -ciC +vuE uli uli uli @@ -56464,7 +56416,7 @@ gDX xpJ kcv oTt -pGp +sZb faZ xUB dtx @@ -56978,7 +56930,7 @@ oHX gvg fBW mcO -nMa +oiK hZi fAb drz @@ -57459,7 +57411,7 @@ rPT rPT rBM rPT -iTH +fib alK pDi vhU @@ -57470,7 +57422,7 @@ iaR vhU iaR iaR -jOM +aJD vnY wzb cbm @@ -57496,7 +57448,7 @@ hbl uli mgL bKc -iZm +okn cnW qdc tIa @@ -58003,7 +57955,7 @@ wnT dcZ maU lEu -rOE +mht ehf wzb jOo @@ -58529,7 +58481,7 @@ gOe sKx grS dao -klO +oga tHO uli tHO @@ -58742,7 +58694,7 @@ xyS kOc gXA hFP -eNV +oEv jtr vhT dzD @@ -58756,8 +58708,8 @@ oMA xBP iKu jZh -amn -iNP +uNL +iJL wKG uLU cmd @@ -58792,7 +58744,7 @@ blO cFP jiG oqZ -lTJ +svv bXA vqI vqI @@ -58997,7 +58949,7 @@ rPT uVy eZJ oRp -xIw +cAy wDf wys wys @@ -59010,10 +58962,10 @@ cmy itk pLv aiR -sEO +bgu vhU ejN -ruK +fEe tKq sWT sWT @@ -59270,7 +59222,7 @@ iaR vhU vhU ppS -eZo +ycF ppS sWT wrA @@ -59288,19 +59240,19 @@ kjC wSM jAN iOA -uxA +pUm rmX lEu jOo jOo jOo vgG -yeh +cXM lly fia ycz hAX -juB +bxD vgG nXA ozj @@ -59514,7 +59466,7 @@ wys mOA bWw eHY -nZP +eop weD pkH wys @@ -59527,8 +59479,8 @@ noh nKV wbp qka -jIP -oyl +fqC +mgY pNv fvh vpE @@ -59784,12 +59736,12 @@ pld dbb aew jJR -sUZ -azx -vWY -osM -vUr -omt +eOH +eAX +ixf +siH +ujM +icQ sWT mIY qZA @@ -59821,7 +59773,7 @@ oPT urT uCw hGZ -kIR +bGl ibg mTL gNG @@ -59839,7 +59791,7 @@ rNv vDt sLz sLz -hKZ +lFQ blO jsp jsp @@ -60026,8 +59978,8 @@ tqL jES wys vht -rCQ -qFt +ozM +eUf mbl lvL wys @@ -60042,11 +59994,11 @@ oNp sjW plL orO -jRM +iZO bKy qQv -cYy -pJt +lcs +ocS kuj duC eog @@ -60083,20 +60035,20 @@ ihL ihL cFP xqU -xKs -fDH -cjE -oNZ -cjE -cjE -mam -dVh -dVh -jks -nKa -tZd -nKa -vZG +xwe +uKf +fXo +bxR +fXo +fXo +gRo +nLv +nLv +uxz +eTK +neA +eTK +aST xqU jsp jsp @@ -60290,7 +60242,7 @@ eqi wys ePw lSv -dmz +bLZ omN qSK tII @@ -60299,11 +60251,11 @@ bMN ltJ gOP gYZ -hjO +uXI pNv kGw -ggA -non +xKQ +htC guS pHJ gdE @@ -60320,12 +60272,12 @@ eVD wqg fGn vnd -fyH +dEU cBs hBl eJz -eBa -taW +klc +rnO hGe teA hwr @@ -60335,12 +60287,12 @@ ufL eZf lmF tUh -eiD +jYE ibg tRR mFt cEu -suj +trB dwq taZ wsA @@ -60353,7 +60305,7 @@ vqI qnY sLz blO -iyq +jmP sLz sLz jsp @@ -60552,7 +60504,7 @@ fMX fMX qbW vhU -bja +eDg hPk gOP oPC @@ -60587,7 +60539,7 @@ dms nAD xxk csL -kEs +xpn dzW ihL ihL @@ -60597,7 +60549,7 @@ kEO fhM xgK rNv -gJk +fsF cEk ozj sLz @@ -60824,8 +60776,8 @@ dlh rru viT bdN -xKB -xUV +wHD +bhy cfv xoc gWp @@ -60833,7 +60785,7 @@ jPg qrl pjs uly -wdM +xKZ pIl ptb roc @@ -60842,9 +60794,9 @@ gHW aAY gHW pyW -pxD -pCI -oMi +bRk +vZI +pUZ ihL xgK nXA @@ -60854,7 +60806,7 @@ cEk mVg sLz xTD -pII +mIF sXg cEk vqI @@ -61106,12 +61058,12 @@ dzW sXB lRK nXA -fNb -yma -rVG -kJR -bOu -wkU +tIP +avs +wEe +qjq +hCx +mFT sLz vqI vqI @@ -61333,12 +61285,12 @@ fMX fMX fMX fMX -fYp +sXY exx ncA oxy mkQ -dci +fSH qzd moy cVl @@ -61368,7 +61320,7 @@ lCS lCS mVg cEk -pbz +mGS blO vqI vqI @@ -61564,7 +61516,7 @@ vqI vqI eXB cjH -yhp +jWk sBt nHi eiO @@ -61608,7 +61560,7 @@ wML amy pWS iNo -ebk +rzg cTC upw oNv @@ -61625,7 +61577,7 @@ apY biV sXB blO -ion +viX xqU hJN vqI @@ -61853,19 +61805,19 @@ qaK lxu rjG ueV -xbA +iMI wEx caC -dca +ruO mev -hkT +feI tNX cii vLP -nip +xFT oeh vLP -top +vgi mVd uGZ udt @@ -61882,7 +61834,7 @@ gPs idO lCS hJN -snM +wFM ozj cEk vqI @@ -62079,7 +62031,7 @@ vqI vqI eXB nAc -pMX +iBP nHi nHi nHi @@ -62125,7 +62077,7 @@ vLP top lts tpi -wAQ +eCn aIx fMC bFF @@ -62136,10 +62088,10 @@ qzg nad hsv tVm -dKE +jOz lCS ndX -ion +viX xqU fPc vqI @@ -62359,7 +62311,7 @@ xQN qMM dqm ndg -sky +rzP rQd aQK slF @@ -62367,7 +62319,7 @@ hCL quH aji gSL -lbu +tJv qKB gMn sNq @@ -62377,7 +62329,7 @@ rZv qvz sCr wVR -uiv +tlH pVY pVY vVo @@ -62396,7 +62348,7 @@ wzE gPs lCS eGc -rcs +mmJ ycy xqU vqI @@ -62602,7 +62554,7 @@ eXB xsH hhu hhu -pIN +yeS eYg hyZ tov @@ -62640,7 +62592,7 @@ rZf oFu gEa wWC -hkO +mMw dXI dXI ifQ @@ -62653,7 +62605,7 @@ uTP uGP sXB cFP -afd +rzV wyw sLz vqI @@ -62858,7 +62810,7 @@ rWp eXB kef hhu -otv +tUs dGA djy kNX @@ -62875,16 +62827,16 @@ lCP niw cvt dNV -xJF +wxC gWa gWa vdf -qqn +fhR dvw pfb pqi pqi -oiV +bUT fqg qdV vTN @@ -62907,10 +62859,10 @@ hBg baq tfH jhN -irk +fsU sXB cEk -ryh +gNq ccl vqI vqI @@ -63116,7 +63068,7 @@ eXB gLd weN kOu -xEn +sDH bUA jaK jst @@ -63138,13 +63090,13 @@ rFo gWa eWh ggo -lhb +kgq pqi pqi -huA -eQB +iPP +yfP ept -pee +fZl tlK qbd mEl @@ -63167,7 +63119,7 @@ rbv gPs mAp sLz -dux +aQs cEk vqI vqI @@ -63372,7 +63324,7 @@ rPT tqL sUW hhu -pkm +kAQ qti qti wLS @@ -63389,16 +63341,16 @@ dqm niw mcX ezq -tzS +iox gWa gWa gWa -hIZ +vQZ uqn pfb pqi pqi -ipG +unI gkG vQL xVj @@ -63421,10 +63373,10 @@ vmu baq fzZ jhN -pLi +aof lCS vqI -wqL +hTd vqI vqI vqI @@ -63660,7 +63612,7 @@ rLR gRN jSm gzS -gbZ +gCg uWx kaw gNi @@ -63668,7 +63620,7 @@ fFu pHp gEa wWC -peI +xne dXI dXI ocx @@ -63681,7 +63633,7 @@ uTP uGP sXB vqI -rLD +qnE rNv vqI vqI @@ -63915,7 +63867,7 @@ oIi oIi qRc pMV -lcl +jWl dPx sCr wNN @@ -63938,7 +63890,7 @@ nAy sfW sXB xqU -uKV +eHe vph vqI vqI @@ -64181,11 +64133,11 @@ pVY dta kXQ fZY -bhN +dHA gYA gYA wpu -kCw +xZX aje taA ePy @@ -64195,7 +64147,7 @@ oYA gPs mAp rET -iPM +sGK cEk vqI vqI @@ -64451,8 +64403,8 @@ xGG bTY dSe oby -tIN -bKr +aiU +xhE vqI vqI vqI @@ -64702,7 +64654,7 @@ bfI bfI bfI oLo -oMU +pvC eGr cnk gPs @@ -64912,7 +64864,7 @@ aVf iCD oxK aVV -aJb +mit eXB okk bwI @@ -65207,8 +65159,8 @@ sXB sXB pVY pVY -agu -gmv +ifm +sWy pVY pVY iUP @@ -65464,8 +65416,8 @@ nKW sXB hqu ihA -lhf -aIQ +fjt +jaF dHS vpm sXB @@ -65709,8 +65661,8 @@ iti eZt mNH hJA -jCI -lUg +uIW +qKE fSJ mZk mNH @@ -65723,7 +65675,7 @@ qtl dWg gGH gla -ifk +ygN sXB jsp jsp @@ -65956,7 +65908,7 @@ gkU cVj lfq heR -hXU +lxl uWI fKa wyg @@ -66222,7 +66174,7 @@ xql uHM hNR vnh -btU +wgL gkj thD thD @@ -66471,12 +66423,12 @@ loD pCT tzP tzP -nlf +rDI rRE eYE jKL moU -bLd +xKF jkp hyN qmz @@ -66720,7 +66672,7 @@ lUm pzQ loD tOz -rEo +bSm txF iLL eIe @@ -66749,7 +66701,7 @@ euN tdh xHX eIc -boR +nHV eIc xHX eIc @@ -67239,7 +67191,7 @@ saM nCa saM kJM -iMF +bEo vet kyK saM @@ -67261,8 +67213,8 @@ lsH hCs hzQ btw -nJM -rnW +rEz +idv oRo woV lyU @@ -67507,7 +67459,7 @@ fjp xmA orX rll -nJD +vFg woV wwk euN @@ -67515,7 +67467,7 @@ wBT woV hzQ woV -dih +laO axa ggs kRL @@ -67553,7 +67505,7 @@ vqI vqI vqI vqI -vZa +gDk mVg klh vqI @@ -67750,7 +67702,7 @@ lUm lUm lUm iUZ -keI +oqF saM saM iUZ @@ -67811,7 +67763,7 @@ vqI vqI vqI mKz -aXZ +iPK sLz qnY vqI @@ -68068,8 +68020,8 @@ vqI vqI vqI blO -oWJ -xWB +tjf +wBy lZV sLz vqI @@ -68322,11 +68274,11 @@ vqI vqI vqI vqI -vZa +gDk vqI mVg -hAr -xWB +bBQ +wBy qnY ycy sLz @@ -68836,7 +68788,7 @@ vqI vqI vqI vqI -reu +mUB klh wsA vqI @@ -69091,12 +69043,12 @@ vqI vqI vqI vqI -mDP -mDP +bfz +bfz vqI cEk qnY -oMP +fiF sLz xqU sLz @@ -69349,13 +69301,13 @@ vqI vqI fPc klh -svB +pGB sLz mKz lZV rNv sLz -kIp +roL bXA vqI vqI @@ -69602,7 +69554,7 @@ vqI vqI vqI vqI -mDP +bfz blO pdu xSk @@ -69613,7 +69565,7 @@ sLz ycy sLz bXA -lTJ +svv vqI vqI cEk @@ -70120,10 +70072,10 @@ vqI vqI vqI vqI -nPp +qza ycy xSk -fZB +hts sLz rNv sLz @@ -70379,7 +70331,7 @@ vqI vqI vqI vqI -vVC +jRN cEk rNv nve @@ -70639,7 +70591,7 @@ vqI vqI vqI vqI -vVC +jRN sLz sLz rNv @@ -70901,7 +70853,7 @@ vqI vqI rNv rNv -vVC +jRN vqI vqI vqI @@ -122490,7 +122442,7 @@ xsQ sHr xsQ kQw -bEo +uUH cDx vry mQR @@ -122499,7 +122451,7 @@ vTg vDJ ble hqw -fuG +nEN sNT eZI eZI @@ -122510,7 +122462,7 @@ eZI eZI eZI eZI -jdF +dXH aAW iwI eOP @@ -122748,7 +122700,7 @@ eWL tGT tGT kND -qlK +uMm vcY hqw pjN @@ -122762,7 +122714,7 @@ pTV eZI nqP eZI -dHC +fic eZI nqP eZI @@ -122779,9 +122731,9 @@ iwI iwI iwI tHO -pTi +vvo cno -awV +cFN tHO aPC lai @@ -123253,7 +123205,7 @@ kQw oAv fgj wak -jji +mhe kQw bxt bsw @@ -123533,9 +123485,9 @@ mIW vlt lUe lGG -tYC +kyr baQ -aKB +wXo rUJ wCp rKN @@ -123793,7 +123745,7 @@ sYf sRD sRD sRD -aea +iAM xwF rSK nst @@ -124050,7 +124002,7 @@ kdn ghV xiu sRD -tTT +hRD eEe lob sRD @@ -124301,7 +124253,7 @@ epj xYT bGO aBO -ejL +fiC tfg vjc rHl @@ -124547,9 +124499,9 @@ bDD eXn xgH xgH -gVY +udq tob -mlP +tnA aaz uld oyg @@ -124814,7 +124766,7 @@ ozT tFb xYT bEe -lZZ +tih aNk rjD rtK @@ -124834,7 +124786,7 @@ nfX hoN pnn vgG -smX +tYX kLU eHd cny @@ -125081,7 +125033,7 @@ sRD xab tml vPP -oXB +gth qHP gJG gmt @@ -125309,7 +125261,7 @@ kct kct kct kct -bpq +oxs rpH rGq wMY @@ -125317,7 +125269,7 @@ rSE bDD gyO ttY -pjQ +yfd qJT jLG xPe @@ -125561,11 +125513,11 @@ kKq wqd suO afw -rPg -rGX -eol -mLM -cej +fFZ +pFZ +wiQ +xMQ +aDi bDD bDD tNz @@ -125578,7 +125530,7 @@ kAS hyo iIO pcu -qsi +hvh jME jME dqV @@ -125818,11 +125770,11 @@ dGh liG eyu clO -ijW -edF -pXZ -oEM -sWk +vjo +unO +yjb +aeN +rWj jrU hUk ofU @@ -125861,7 +125813,7 @@ hdJ vqE tIJ mEU -bFJ +xtb vpJ eeB fje @@ -126074,12 +126026,12 @@ eyu ksj oBi afw -pQt -gez -pMh -nED -xQn -bTy +sKV +tST +xdH +rjX +lvV +kNq lwX jXQ lWU @@ -126092,7 +126044,7 @@ mBp uxt qxQ mIN -jfL +hUj htB ptj hns @@ -126331,12 +126283,12 @@ eyu dGh lxo afw -fUl -umL -uKn -lzV -wbY -btq +mxy +xdb +qiO +llQ +umB +nOu bDD ejD tuz @@ -126348,8 +126300,8 @@ ttY jLp ntA ttY -kHE -svk +nJX +cRw jME apg wUl @@ -126363,9 +126315,9 @@ vsW xvB wxq vqE -vTn +tFM bMW -wOw +eSh oEl bvY cnX @@ -126589,11 +126541,11 @@ bvO esW afw epO -uoB -aFW -lzV -bYW -lsf +pdw +tVK +llQ +aWb +acj thc nRX oBX @@ -126606,7 +126558,7 @@ iTe dFk bqp tSb -mYq +ncK bMe mtO rDl @@ -126845,17 +126797,17 @@ eyu uXi ssT afw -cAV +laf gcq swh -igs +ukz vsM cEM bDD tks nye -ivf -lQf +oOA +tDT bDD vVE ttY @@ -126863,7 +126815,7 @@ byq tND kQc jxa -jkr +aUc ueO leg tOU @@ -126891,11 +126843,11 @@ oEl gZh pQk uNe -ncz +sew eMV eMV afq -aKI +xvQ eMV xiW skf @@ -127100,14 +127052,14 @@ vqI vqI eyu hvu -glR +qgW afw afw -iJz +sVh afw -ddc +haF kAa -bcT +giU bDD lRO oHV @@ -127119,8 +127071,8 @@ ttY jLp jLp ttY -xeI -vrF +obC +elK oEZ nkb nkb @@ -127134,7 +127086,7 @@ bPo vHu ueV vqE -oNJ +aVM qao iTA oEl @@ -127377,7 +127329,7 @@ xpy xpy oCL xWj -hiA +wnk wxm gDp oRV @@ -127401,7 +127353,7 @@ xlw oEl fVb wlW -iQS +lAq tle mAS ifA @@ -127616,7 +127568,7 @@ kTG sxD fCF hhu -jLT +eUC sMK eEc uoe @@ -127634,23 +127586,23 @@ sfL rFm rFm dme -jsK -fMW -aFA -rBL -rEU -sPN -lFn -txL -nWN -bns -kPY -elm -eom -qgq -fpo -kuF -vRc +tAz +vcM +ktf +dkP +cPh +rjj +mgp +vdC +nmp +aWp +oNr +eiN +vYe +oCj +bVi +mAj +uWl cCz oEl jlR @@ -127873,8 +127825,8 @@ kAk vdv gMh hhu -pfd -fOE +kcD +wVz fsb jeo oLK @@ -127893,10 +127845,10 @@ rId rId rId rId -ait +lpc rql cHd -aAb +fQH qYc oqs eWf @@ -127911,7 +127863,7 @@ anK wSm waG hxh -oUu +oYO wli wTQ uyo @@ -128908,7 +128860,7 @@ jeo oLK xIO olO -mYn +kax gyy gyy gyy @@ -128942,7 +128894,7 @@ ddQ ddQ tPD hsN -bpT +nyu vJG aoH oru @@ -129211,7 +129163,7 @@ cwk gwZ gwZ iHy -kam +xJE kBd voA ifA @@ -129422,7 +129374,7 @@ bkx pKl xIO tov -pWH +bVS gyy gyy pqE @@ -129666,7 +129618,7 @@ vqI vqI vqI tYd -dfc +cbl fvg xko ukZ @@ -129704,9 +129656,9 @@ qjF dOv cZZ fgO -pLg -lzs -tVM +tTn +gXk +gJt lOf ajB ajB @@ -129945,7 +129897,7 @@ ald neX tTb tTb -toN +cJR tTb tTb tTb @@ -129956,9 +129908,9 @@ jKp xXi ygB aIl -rku +jcz xrZ -kfb +atE iBU bnn eyQ @@ -129967,7 +129919,7 @@ itO ajB eFt aqw -koq +nEW thd ajB mLo @@ -130204,7 +130156,7 @@ pNI pNI sSJ cea -jKJ +iJe iSf iSf hKp @@ -130222,7 +130174,7 @@ cDz oLi cDz ajB -vGO +fZX xsj wJA inZ @@ -130479,7 +130431,7 @@ gEk vDP iwM ajB -pwr +lPe btR mZW bAc @@ -130489,9 +130441,9 @@ tRH vJn xHy uNe -kie +kPn utb -miM +hTq hTN utb utb @@ -130701,9 +130653,9 @@ gEP ijF uwN sIv -kmY +kJL foz -xpF +wMn bZH fPV kmN @@ -130765,7 +130717,7 @@ vqI vqI vqI vqI -rGO +aSF mVg xSk cEk @@ -130960,12 +130912,12 @@ fbS qVb xoR gEP -nGR +rYe gik sru kwK tov -wDa +qOn sSJ pCc nXm @@ -131022,11 +130974,11 @@ vqI mVg qnY wsA -aXZ +iPK klh lZV -svB -xce +pGB +lBT xqU vqI vqI @@ -131227,7 +131179,7 @@ sSJ sSJ jDU sSJ -auJ +ozb nje baE baE @@ -131250,7 +131202,7 @@ piY qzt jTj iEP -jqF +iEa ajB ajB ajB @@ -131541,7 +131493,7 @@ ycy xqU sLz vqI -lgR +iya sLz ycy vqI @@ -131752,7 +131704,7 @@ ffQ ouZ xRu nlo -qFN +fbs gMG tiS tiS @@ -131760,7 +131712,7 @@ gMG gMG pcP kfl -sid +tnI alW hLr cFp @@ -132014,7 +131966,7 @@ uiA aKG aKG ylg -xBS +hTM nwu kfl aWy @@ -132057,7 +132009,7 @@ vqI vqI vqI vqI -hnA +jWf rNv vqI vqI @@ -132244,12 +132196,12 @@ hrC dGK fZR evs -adV +hLc nxt fZR xVu rHO -sEP +eWv eKX czE sjC @@ -132274,7 +132226,7 @@ kNj tpM evR kfl -acD +riT wOh jOC jZG @@ -132282,7 +132234,7 @@ xtQ hyc mSE aKC -xja +uEq oqn mSE mSE @@ -132575,7 +132527,7 @@ fPc rNv cEk sLz -iDj +joL vqI vqI vqI @@ -132804,7 +132756,7 @@ jGk qSC fqb fqb -lep +diS aCm vqI vqI @@ -132830,7 +132782,7 @@ vqI vqI adG ycy -exV +gBS vDt sLz sLz @@ -133051,7 +133003,7 @@ liR xSM hdM aCm -igk +wgt tDF xCQ dnZ @@ -133076,7 +133028,7 @@ vqI vqI vqI vqI -reu +mUB wsA sLz sLz @@ -133286,7 +133238,7 @@ olN olN olN wQI -lAM +tss uWZ rZM aAV @@ -133856,7 +133808,7 @@ vqI vqI vqI vqI -dji +gSq sLz bvw vqI @@ -134112,7 +134064,7 @@ vqI vqI vqI vqI -lgR +iya ycy vqI bvw @@ -134880,7 +134832,7 @@ vqI vqI fPc sLz -svB +pGB ycy ycy bvw @@ -135095,7 +135047,7 @@ aRY aTx mMZ aJe -dmI +fdd mjt aqu gXz @@ -187773,7 +187725,7 @@ oXe oXe oXe oXe -dmu +eGO oXe oXe oXe @@ -188029,13 +187981,13 @@ btO xMl mXm xMl -mBY +axc xdL tOf btO pdR kWE -nFA +czn lPu lPu lPu @@ -188284,7 +188236,7 @@ xMl tfd oXe ouX -kGQ +hif fmH oXe btO @@ -188292,16 +188244,16 @@ pdR xdL mXm xMl -qUk -mgw +qwk +owG aiK kVV -pzR +otq aiK aiK aiK aiK -iwg +pWG tAg rKg lRg @@ -188545,7 +188497,7 @@ gmU lwh oXe btO -lsb +cPw lUh tBy btO @@ -188554,7 +188506,7 @@ gEN mxG gEN qhT -eQW +uRE qhT qhT vqE @@ -188801,7 +188753,7 @@ tst pMt uhc uhc -rsj +xRD uhc uhc uhc @@ -188812,14 +188764,14 @@ tAg tAg qhT aiK -gBe -gpm +iQo +qBR aoM jij jij jij vqE -lrB +inI nXa fUT pPE @@ -189069,8 +189021,8 @@ rbV tAg qhT aiK -nYI -chk +izt +lyE aoM jij jij @@ -189303,7 +189255,7 @@ rFF oXe oXe nPz -bZw +ssr tOf tOf tOf @@ -189316,7 +189268,7 @@ iej uhc sUS jUT -glP +hUe xpI xjt rAh @@ -189325,7 +189277,7 @@ qhT qhT qhT qhT -kcU +ryh aiK aiK vqE @@ -189592,7 +189544,7 @@ jij fLS hKm bnW -ggt +vPr xNi nHO fLS @@ -189830,7 +189782,7 @@ svO uhc lVB dxG -glP +hUe kyT btC uSY @@ -189854,7 +189806,7 @@ pio fwf fLS vqE -kCL +xBc vqE vqE vqE @@ -190356,7 +190308,7 @@ pub vsU joF vqE -oQf +pDD bdh ndU tth @@ -190862,14 +190814,14 @@ usq vQN jHd aiK -mFc +eCq shD shD shD shD shD shD -tpF +orB aQg aTZ ozO @@ -191124,13 +191076,13 @@ jor xNh jor shD -nSz +mjw shD vqE qvD xMB jxX -lUX +sNp fLS ylY pKk @@ -191361,7 +191313,7 @@ gVA gVA gVA kxf -lsM +iFx iEq erZ mcZ @@ -191397,7 +191349,7 @@ ipx bkW pNf nyO -bHH +qYC vqE vqE vqE @@ -192400,11 +192352,11 @@ qwF aPh stJ liZ -cwj +vYl tdN bqm oFa -nYY +xCw mWc llS cty @@ -192418,10 +192370,10 @@ dkt oKL wQG qxp -tYp +gwb sIH fUW -xWK +mRe wQG ias jGg @@ -192683,7 +192635,7 @@ nrw ufV kmU rck -dbB +ogp eFI qns nmR @@ -192932,14 +192884,14 @@ eXG lDt wQG lnK -sif +tkD jzn tTh hED jFz gos hsz -hAw +pLT vqE akG xnh @@ -193180,7 +193132,7 @@ nYL nYL nYL nYL -sjd +ttC frz frz uEN @@ -193421,7 +193373,7 @@ jNd rHi soL gim -gvF +lzD lOG cKi ajZ @@ -193449,13 +193401,13 @@ nYL nYL wSx wwE -bGr +tBT jLf bMB opx csB rLa -mne +cfw fgP cXI aWJ @@ -193684,7 +193636,7 @@ gim xnb gim gim -xDK +tIw sJH nYL nYL @@ -193930,14 +193882,14 @@ fdh hbs aEi aEi -poF +uwJ aEi ceR gMP aya aEi -biX -gxb +mwP +wbv rvJ awE vyq @@ -194186,17 +194138,17 @@ rcQ fdh fdh dpV -aEU +gJg hpO aXM -tfJ +ykt lYF nhs sfC rsU -tCZ +dSc gjO -rBu +bqq roj eOr frz @@ -194223,13 +194175,13 @@ hAh koS sgc uGu -lJv -jJJ -dIr +pZI +uYb +wIQ xUk nbj -iAk -utq +hGq +fgF qgY qgY qgY @@ -194451,7 +194403,7 @@ fHo aZm aEi mik -nTN +bZl gpl awE pDe @@ -194733,7 +194685,7 @@ nYL nYL nYL gUx -ixD +xiv bbd mpj nSK @@ -194994,10 +194946,10 @@ wwE tsf jdU bYh -dRo +hAU ceg nZB -nrD +fBU oam oam rNg @@ -195242,7 +195194,7 @@ frz pEG frz frz -vMy +gFG xWg eMh gyq @@ -195252,7 +195204,7 @@ cRd iKY amM qgj -cYs +xbA oam oam oam @@ -195488,7 +195440,7 @@ ohi ohi gMG lXL -rWs +nzU wlj vqp vES @@ -196014,7 +195966,7 @@ xWg alf jRL bgn -hUJ +deq oPm dry wFx @@ -196525,7 +196477,7 @@ fah aSX gXD xWg -afQ +pYO jRL geB fJc @@ -196821,7 +196773,7 @@ sLz ycy sLz bvw -pQG +vLy sLz sLz vqI @@ -197009,7 +196961,7 @@ gVA gVA bEB xjy -sUv +nVd rFF rZM rZM @@ -197075,10 +197027,10 @@ bvw bvw bvw ycy -fZB +hts sLz rNv -pQG +vLy bvw sLz blO @@ -197597,11 +197549,11 @@ bvw bvw sLz blO -rQQ +iwl rNv cEk sLz -soQ +grQ xUr sLz vqI @@ -197785,7 +197737,7 @@ rFF rFF rca sld -ivO +qId olN olN qLe @@ -197822,7 +197774,7 @@ oNu uhU lVQ srJ -fFT +vwq ade uJm srJ @@ -198103,7 +198055,7 @@ bvw bvw vqI vqI -wmU +oNh pdu lZV sLz @@ -198312,7 +198264,7 @@ sld wSN tte aPc -cYG +cJm fJp fJp aPc @@ -198566,8 +198518,8 @@ olN pZC tUu vtn -ocM -xsl +iOV +tWu aPc fJp fJp @@ -198587,7 +198539,7 @@ opN tDF kFj sKD -uHR +onC tDF xCQ fMh @@ -199133,7 +199085,7 @@ pdu rNv qnY sLz -xWB +wBy sLz sLz bvw @@ -199387,9 +199339,9 @@ vqI vqI blO rNv -svB +pGB lZV -ccq +izd rNv sLz bvw @@ -199632,8 +199584,8 @@ vqI vqI vqI blO -ccq -taE +izd +qeO sLz xSk pdu @@ -199645,7 +199597,7 @@ vqI qnY sLz nve -kFt +xQV blO sLz sLz @@ -200409,7 +200361,7 @@ blO ccl mVg sLz -fZB +hts cEk cEk cEk @@ -200657,13 +200609,13 @@ vqI vqI vqI vqI -xWB +wBy pdu xTD xSk -cBT +kmO sLz -cBT +kmO ozj blO sLz @@ -201462,7 +201414,7 @@ bvw bvw bvw xqU -svB +pGB vqI vqI vqI @@ -201719,7 +201671,7 @@ bvw bvw sLz sLz -svB +pGB vqI vqI vqI @@ -202480,11 +202432,11 @@ vqI sLz blO klh -riO -cBT +pgy +kmO mVg blO -oMP +fiF sLz qnY sLz @@ -253033,7 +252985,7 @@ lAN lAN lAN lAN -luz +crU xxa wVV yli @@ -255906,7 +255858,7 @@ kxS kxS kxS kxS -uvf +rKV kxS kxS kxS @@ -258992,7 +258944,7 @@ nYL nYL sip qPX -srK +nAF pbk tDr aqa @@ -259502,7 +259454,7 @@ nrQ eKj eMx mpI -ahC +kmz ehT ehT exJ @@ -259755,7 +259707,7 @@ dvc dvc dvc nrQ -ihN +gfK wbl hib gHf @@ -259763,11 +259715,11 @@ frz frz frz esO -uvk -kMe -fnA -gWS -vtO +rEg +jUk +ote +hGc +uwc lDZ kqB lea @@ -260016,7 +259968,7 @@ sTM rtT dfi nrQ -mIy +uNV pMc pMc hpx @@ -261046,8 +260998,8 @@ dvc dvc nrQ aGW -rWq -uIH +vuo +aXp hsh txR trd @@ -261306,7 +261258,7 @@ lJE csX rGM csX -nEB +cDv nrQ kqB bIK @@ -261560,7 +261512,7 @@ dvc dvc nrQ nrQ -bCL +qQk pbk pbk fxY @@ -261822,7 +261774,7 @@ uVJ uVJ nrQ trd -wsd +vWm hfK ggb bIK @@ -262073,7 +262025,7 @@ sNi pBm csW cIX -pVH +cXJ apP xNL xNL @@ -264103,7 +264055,7 @@ uXr uXr uSL crW -kTy +rwG uDA erN bMS @@ -264360,7 +264312,7 @@ uXr uXr uXr bBH -nxu +tvm uDA erN jmY @@ -266698,7 +266650,7 @@ sNi sNi yet kiZ -tok +ncM lyK tzT apP @@ -267728,7 +267680,7 @@ yli yli kyv loj -lvm +tfh xVE ojC lFC diff --git a/_maps/map_files/FlandStation/FlandStation.dmm b/_maps/map_files/FlandStation/FlandStation.dmm index 8dbf4af27ce4d..e6be8750e2e96 100644 --- a/_maps/map_files/FlandStation/FlandStation.dmm +++ b/_maps/map_files/FlandStation/FlandStation.dmm @@ -9023,6 +9023,19 @@ "cnM" = ( /turf/closed/wall/r_wall, /area/teleporter) +"cnU" = ( +/obj/machinery/disposal/bin, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/trunk, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/hallway/primary/port) "cnW" = ( /obj/structure/table/wood, /obj/item/clothing/mask/cigarette/cigar/cohiba{ @@ -11653,6 +11666,20 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/iron/grid/steel, /area/medical/virology) +"cVO" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/spawner/randomarcade, +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/line, +/turf/open/floor/prison, +/area/security/prison) "cVS" = ( /turf/open/floor/iron/dark/side{ dir = 5 @@ -15360,6 +15387,11 @@ }, /turf/open/floor/iron/sepia, /area/engine/break_room) +"dVz" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "dVE" = ( /obj/structure/table/reinforced, /obj/item/stack/package_wrap, @@ -17538,17 +17570,6 @@ }, /turf/open/floor/engine, /area/engine/engine_room) -"eCc" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/delivery, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/bridge) "eCd" = ( /obj/structure/table/wood, /obj/effect/landmark/event_spawn, @@ -22202,6 +22223,21 @@ }, /turf/open/floor/iron/dark, /area/hallway/primary/fore) +"fFK" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/item/kirbyplants/random, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood, +/area/crew_quarters/bar/atrium) "fFR" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/open/floor/grass, @@ -31539,6 +31575,10 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/maintenance/port/aft) +"hZv" = ( +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/carpet/grimy, +/area/chapel/main) "hZG" = ( /obj/structure/sign/map/left{ desc = "A framed outdated, yet detailed picture of the station. there's even the permanent prison wing in the bottom left!"; @@ -41228,13 +41268,6 @@ }, /turf/open/floor/plating, /area/quartermaster/sorting) -"kuV" = ( -/obj/effect/turf_decal/guideline/guideline_in_arrow_con/red{ - dir = 5 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/iron, -/area/hallway/primary/fore) "kvb" = ( /obj/machinery/door/airlock{ id_tag = "sec Toilet 2"; @@ -55668,15 +55701,6 @@ dir = 5 }, /area/crew_quarters/fitness/recreation) -"ogW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/turf/open/floor/iron, -/area/hallway/secondary/entry) "ohn" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -56915,21 +56939,6 @@ }, /turf/open/floor/iron/dark, /area/bridge/showroom/corporate) -"oAU" = ( -/obj/effect/turf_decal/trimline/red/filled/warning{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/turf/open/floor/iron, -/area/security/main) "oAX" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -62805,13 +62814,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/freezer, /area/crew_quarters/kitchen/coldroom) -"qdE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/iron, -/area/hallway/secondary/exit/departure_lounge) "qdH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -63461,6 +63463,20 @@ }, /turf/open/floor/iron, /area/janitor) +"qlP" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/newscaster{ + pixel_x = -28; + pixel_y = 1 + }, +/turf/open/floor/iron/techmaint, +/area/crew_quarters/locker) "qmc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -65746,6 +65762,17 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/medical/cryo) +"qPt" = ( +/obj/effect/turf_decal/trimline/purple/filled/line, +/obj/effect/turf_decal/trimline/purple/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/grid/steel, +/area/science/research) "qPA" = ( /obj/effect/decal/cleanable/glass, /obj/structure/cable/yellow{ @@ -66545,20 +66572,6 @@ }, /turf/open/floor/carpet/grimy, /area/crew_quarters/locker) -"rbb" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/spawner/randomarcade, -/obj/effect/turf_decal{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/turf/open/floor/prison, -/area/security/prison) "rbg" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -67296,6 +67309,10 @@ dir = 8 }, /area/hallway/primary/central) +"rlr" = ( +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white, +/area/medical/medbay/lobby) "rlu" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -68974,18 +68991,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) -"rGm" = ( -/obj/machinery/disposal/bin, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark, -/area/hallway/primary/port) "rGy" = ( /turf/closed/wall, /area/medical/virology) @@ -70155,6 +70160,15 @@ }, /turf/open/floor/iron/techmaint, /area/medical/morgue) +"rSM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/turf/open/floor/iron, +/area/hallway/secondary/entry) "rSR" = ( /obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 @@ -71835,6 +71849,16 @@ /obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/ai_upload) +"spk" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/obj/machinery/status_display/ai{ + pixel_x = -32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/techmaint, +/area/crew_quarters/locker) "spl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -72210,16 +72234,6 @@ /obj/structure/sign/departments/minsky/medical/medical2, /turf/closed/wall/r_wall, /area/crew_quarters/heads/cmo) -"suV" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/obj/machinery/status_display/ai{ - pixel_x = -32 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/techmaint, -/area/crew_quarters/locker) "sve" = ( /obj/structure/cable{ icon_state = "1-2" @@ -72674,20 +72688,6 @@ }, /turf/open/floor/iron/sepia, /area/maintenance/department/engine) -"sAF" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 22 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/wood, -/area/crew_quarters/bar/atrium) "sAO" = ( /obj/effect/turf_decal/guideline/guideline_out_arrow_con/blue{ dir = 9 @@ -75170,20 +75170,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/sepia, /area/engine/engineering) -"thX" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/newscaster{ - pixel_x = -28; - pixel_y = 1 - }, -/turf/open/floor/iron/techmaint, -/area/crew_quarters/locker) "thZ" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 4 @@ -76825,15 +76811,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/sepia, /area/engine/engineering) -"tEr" = ( -/obj/machinery/computer/cargo/request{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/quartermaster/office) "tEB" = ( /obj/machinery/door/airlock/engineering{ name = "Auxiliary Construction Storage"; @@ -77171,6 +77148,18 @@ }, /turf/open/floor/engine, /area/engine/supermatter) +"tKq" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/sepia, +/area/engine/break_room) "tKt" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -77645,13 +77634,6 @@ }, /turf/open/floor/iron/dark, /area/security/brig) -"tPH" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/techmaint, -/area/crew_quarters/locker) "tPJ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -78784,6 +78766,14 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/port) +"ueP" = ( +/obj/effect/turf_decal/guideline/guideline_in_arrow_con/red{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/hallway/primary/fore) "ueW" = ( /obj/effect/turf_decal/siding/dark, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -83286,17 +83276,6 @@ "vhU" = ( /turf/closed/wall, /area/medical/apothecary) -"vib" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave{ - pixel_x = -2; - pixel_y = 5 - }, -/obj/item/radio/intercom{ - pixel_x = -28 - }, -/turf/open/floor/iron/sepia, -/area/engine/break_room) "vie" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 @@ -89373,6 +89352,16 @@ }, /turf/open/floor/vault, /area/engine/engine_room) +"wzY" = ( +/obj/machinery/computer/cargo/request{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/dark, +/area/quartermaster/office) "wAi" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -92104,6 +92093,14 @@ }, /turf/open/floor/iron/techmaint, /area/science/research) +"xeo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/hallway/secondary/exit/departure_lounge) "xew" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -92672,6 +92669,22 @@ /obj/effect/turf_decal/stripes/closeup, /turf/open/floor/iron/techmaint, /area/engine/atmos) +"xjq" = ( +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/red/corner{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron, +/area/security/main) "xju" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 26 @@ -94063,6 +94076,13 @@ /obj/machinery/advanced_airlock_controller/directional/north, /turf/open/floor/iron/dark, /area/quartermaster/miningdock) +"xzK" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/techmaint, +/area/crew_quarters/locker) "xzN" = ( /obj/machinery/light/small, /turf/open/floor/plating, @@ -94451,6 +94471,18 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"xDl" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/dark, +/area/bridge) "xDn" = ( /obj/structure/closet/bombcloset/security, /obj/effect/turf_decal/bot, @@ -113065,7 +113097,7 @@ xTE tkJ taV tLB -ogW +rSM okR gjq bOE @@ -113284,7 +113316,7 @@ hII jhy bSV vdu -qdE +xeo nMw nMw rVV @@ -119416,7 +119448,7 @@ uDP uDP oSV woq -hQe +hZv hQe oWH edq @@ -119717,7 +119749,7 @@ mib mib wOF vqH -sAF +fFK iVu iVu iVu @@ -122307,7 +122339,7 @@ ceL ulN hmI xTG -rGm +cnU uOq avq xTR @@ -123351,7 +123383,7 @@ paE vLj rLO tCK -tEr +wzY vxm qkS iix @@ -126123,7 +126155,7 @@ xop tNk xyb iLD -ppz +rlr lkI ppz lkI @@ -130506,7 +130538,7 @@ tul lhU xDg fDx -oAU +xjq rgq ugD nFX @@ -132555,7 +132587,7 @@ kdR jjj tbg iOh -kuV +ueP gwQ wrM kpl @@ -133868,7 +133900,7 @@ nWr nWr nWr nWr -rbb +cVO cLL qer wSA @@ -133902,7 +133934,7 @@ wtm mjN tyI odo -bmp +qPt kQd rAR wyr @@ -140826,7 +140858,7 @@ euM usS xkQ qNK -vib +tKq sVS ykQ hop @@ -141527,7 +141559,7 @@ dAq eaP yeb yeb -eCc +xDl sJB eTP teE @@ -142853,7 +142885,7 @@ wtw usA tIH wtw -eOX +dVz oqC qDo oxb @@ -145419,9 +145451,9 @@ wDO toK uir xSF -suV -thX -tPH +spk +qlP +xzK wDO uVi fmY diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 6d9777691fd90..42b84155b02b5 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -5277,10 +5277,6 @@ "awV" = ( /turf/closed/wall/r_wall/rust, /area/crew_quarters/heads/chief) -"awW" = ( -/obj/structure/sign/warning/securearea, -/turf/closed/wall, -/area/engine/break_room) "awX" = ( /turf/closed/wall/r_wall, /area/crew_quarters/heads/chief) @@ -15052,6 +15048,12 @@ }, /turf/open/floor/iron, /area/bridge) +"bCi" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/components/unary/cryo_cell, +/turf/open/floor/iron/dark, +/area/medical/cryo) "bCm" = ( /obj/machinery/light/small{ dir = 1 @@ -18668,10 +18670,6 @@ }, /turf/open/floor/iron/dark, /area/hallway/secondary/exit/departure_lounge) -"bWM" = ( -/obj/structure/sign/departments/cargo, -/turf/closed/wall, -/area/hallway/secondary/exit/departure_lounge) "bWO" = ( /obj/machinery/status_display/ai, /turf/closed/wall, @@ -23417,6 +23415,18 @@ broken = 1 }, /area/maintenance/aft) +"cuO" = ( +/obj/effect/spawner/randomarcade, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/wood{ + dir = 1; + layer = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/security/prison) "cuP" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, @@ -28690,6 +28700,22 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/janitor) +"cRQ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/security/main) "cRX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, @@ -28819,18 +28845,6 @@ }, /turf/open/floor/iron/dark, /area/hallway/primary/aft) -"cUA" = ( -/obj/item/kirbyplants{ - icon_state = "plant-05" - }, -/obj/machinery/light, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/hallway/secondary/exit/departure_lounge) "cUK" = ( /obj/machinery/modular_computer/console/preset/research{ dir = 8 @@ -29651,6 +29665,19 @@ }, /turf/open/floor/iron/freezer, /area/medical/virology) +"dkj" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2"; + name = "on ramp" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/dark, +/area/quartermaster/storage) "dkl" = ( /obj/structure/chair/fancy/comfy{ color = "#354562" @@ -30104,21 +30131,6 @@ /obj/effect/spawner/mail/maintloot, /turf/open/floor/plating, /area/maintenance/port/aft) -"drj" = ( -/obj/effect/turf_decal/bot, -/obj/structure/closet/secure_closet/personal, -/obj/item/storage/backpack, -/obj/item/storage/backpack/satchel, -/obj/item/clothing/suit/hooded/wintercoat, -/obj/item/clothing/shoes/winterboots, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/locker) "drH" = ( /obj/structure/table/wood, /obj/effect/turf_decal/stripes/corner, @@ -33328,13 +33340,6 @@ }, /turf/closed/wall, /area/quartermaster/warehouse) -"ewl" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/dark/opposingcorners, -/obj/machinery/atmospherics/components/unary/cryo_cell, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/medical/cryo) "ewC" = ( /obj/effect/turf_decal/bot, /obj/machinery/washing_machine, @@ -37566,22 +37571,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/science/mixing) -"fRR" = ( -/obj/machinery/light, -/obj/structure/chair/fancy/sofa/corp/right{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/iron/showroomfloor, -/area/medical/medbay/lobby) "fRS" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red/opposingcorners, @@ -37637,26 +37626,6 @@ }, /turf/open/floor/iron/dark, /area/bridge) -"fSX" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 25 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/security/warden) "fTc" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -38036,21 +38005,6 @@ burnt = 1 }, /area/maintenance/solars/starboard/fore) -"fZy" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/security/main) "fZK" = ( /obj/machinery/camera{ c_tag = "Starboard Hallway Planters"; @@ -40191,6 +40145,21 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/engine/gravity_generator) +"gPB" = ( +/obj/machinery/light, +/obj/structure/extinguisher_cabinet{ + pixel_x = 24 + }, +/obj/structure/chair/fancy/sofa/old/right{ + color = "#742925"; + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/dark, +/area/crew_quarters/bar/atrium) "gPD" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 @@ -44574,6 +44543,18 @@ broken = 1 }, /area/quartermaster/warehouse) +"ily" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "ceprivate"; + name = "Chief Engineer's Privacy Shutters" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/turf/open/floor/iron/dark, +/area/engine/break_room) "ilA" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -47525,6 +47506,17 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron, /area/hallway/primary/central) +"jjN" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/engine/break_room) "jjT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -51061,6 +51053,14 @@ }, /turf/open/floor/iron, /area/hallway/primary/fore) +"knS" = ( +/obj/effect/spawner/randomarcade, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/security/prison) "koq" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -51706,18 +51706,6 @@ }, /turf/open/floor/iron/dark, /area/security/main) -"kAD" = ( -/obj/effect/spawner/randomarcade, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/wood{ - dir = 1; - layer = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood, -/area/security/prison) "kBa" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 @@ -53324,12 +53312,6 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/hallway/secondary/exit/departure_lounge) -"lgL" = ( -/obj/effect/turf_decal/tile/dark/opposingcorners, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/components/unary/cryo_cell, -/turf/open/floor/iron/dark, -/area/medical/cryo) "lgN" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -54384,20 +54366,6 @@ }, /turf/open/floor/iron/dark, /area/science/mixing) -"lxn" = ( -/obj/structure/table, -/obj/item/folder, -/obj/item/nanite_scanner{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/nanite_remote, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/turf/open/floor/iron/dark, -/area/science/research) "lxx" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -55052,6 +55020,22 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/kitchen) +"lHZ" = ( +/obj/machinery/digital_clock/directional/north, +/obj/machinery/camera{ + c_tag = "Medbay Lobby"; + name = "medical camera"; + network = list("ss13","medical"); + dir = 6 + }, +/obj/item/kirbyplants{ + icon_state = "plant-08" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/iron/dark, +/area/medical/medbay/lobby) "lIC" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -58299,20 +58283,6 @@ }, /turf/open/floor/iron/dark, /area/science/explab) -"mNG" = ( -/obj/machinery/light, -/obj/structure/extinguisher_cabinet{ - pixel_x = 24 - }, -/obj/structure/chair/fancy/sofa/old/right{ - color = "#742925"; - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/bar/atrium) "mOe" = ( /obj/structure/chair/wood{ dir = 4 @@ -62276,21 +62246,6 @@ burnt = 1 }, /area/maintenance/port) -"oiB" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2"; - name = "on ramp" - }, -/obj/structure/sign/poster/contraband/red_rum{ - pixel_y = -32 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/quartermaster/storage) "oiC" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 @@ -62470,21 +62425,6 @@ /obj/effect/turf_decal/tile/purple/half/contrasted, /turf/open/floor/iron/showroomfloor, /area/maintenance/department/science) -"okT" = ( -/obj/machinery/camera{ - c_tag = "Medbay Lobby"; - name = "medical camera"; - network = list("ss13","medical"); - dir = 6 - }, -/obj/item/kirbyplants{ - icon_state = "plant-08" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/medical/medbay/lobby) "olb" = ( /obj/structure/closet/radiation, /obj/structure/grille/broken, @@ -67677,6 +67617,13 @@ }, /turf/open/floor/iron/dark, /area/vacant_room/commissary) +"pUD" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/machinery/atmospherics/components/unary/cryo_cell, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/medical/cryo) "pUV" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -69552,16 +69499,6 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/showroomfloor, /area/engine/atmos) -"qDM" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/effect/turf_decal/box, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron, -/area/engine/break_room) "qDN" = ( /obj/machinery/sleeper{ dir = 8 @@ -70250,6 +70187,19 @@ }, /turf/open/floor/iron/dark, /area/lawoffice) +"qON" = ( +/obj/item/kirbyplants{ + icon_state = "plant-05" + }, +/obj/machinery/light, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/hallway/secondary/exit/departure_lounge) "qOW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -74603,22 +74553,6 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/heads/hos) -"sri" = ( -/obj/item/kirbyplants{ - icon_state = "plant-21" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/bridge) "srJ" = ( /obj/structure/sign/poster/official/random{ pixel_y = -32 @@ -74732,14 +74666,6 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/heads/hor) -"stT" = ( -/obj/effect/spawner/randomarcade, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood, -/area/security/prison) "stY" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/effect/turf_decal/box/corners{ @@ -75893,6 +75819,10 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/quartermaster/qm) +"sOt" = ( +/obj/structure/sign/departments/cargo, +/turf/closed/wall/rust, +/area/hallway/secondary/exit/departure_lounge) "sOC" = ( /obj/effect/turf_decal/bot, /obj/machinery/holopad, @@ -77633,6 +77563,23 @@ }, /turf/open/floor/iron/dark, /area/science/storage) +"tsd" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/security/warden) "tsf" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes/line, @@ -78213,6 +78160,29 @@ burnt = 1 }, /area/maintenance/port) +"tBU" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/personal, +/obj/item/storage/backpack, +/obj/item/storage/backpack/satchel, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/shoes/winterboots, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/north, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/locker) "tCc" = ( /obj/effect/turf_decal/stripes/corner, /obj/effect/decal/cleanable/dirt, @@ -79028,6 +78998,23 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron, /area/engine/atmos) +"tTi" = ( +/obj/item/kirbyplants{ + icon_state = "plant-21" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron, +/area/bridge) "tTH" = ( /obj/structure/closet/secure_closet/CMO, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ @@ -80027,6 +80014,21 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron/freezer, /area/medical/virology) +"uoA" = ( +/obj/structure/table, +/obj/item/folder, +/obj/item/nanite_scanner{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/nanite_remote, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/science/research) "uoB" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 @@ -83755,6 +83757,23 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/crew_quarters/bar) +"vzz" = ( +/obj/machinery/light, +/obj/structure/chair/fancy/sofa/corp/right{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/medical/medbay/lobby) "vzF" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -111413,7 +111432,7 @@ qbn dNk gZF dku -fZy +cRQ uKZ mln qVt @@ -111615,7 +111634,7 @@ gHb imK xEQ aNG -lgL +bCi uPx uxI pHq @@ -111872,7 +111891,7 @@ hVA fWr qhY aNG -ewl +pUD fbp ixg qti @@ -113202,7 +113221,7 @@ lDt lDt lDt lDt -stT +knS wDE gMx uyd @@ -113459,7 +113478,7 @@ pou rLg gUQ lDt -kAD +cuO nZE gMx sgL @@ -113724,7 +113743,7 @@ aat nUh lyL qPH -fSX +tsd fQt gGZ iiL @@ -113938,7 +113957,7 @@ fCB tdo ttH prh -fRR +vzz aQW dpR yak @@ -114726,7 +114745,7 @@ asv fhb nkk afe -drj +tBU sNW sWl xiQ @@ -114961,7 +114980,7 @@ aNn tKV aNn nYU -okT +lHZ gKL ibY fYR @@ -121154,7 +121173,7 @@ jzA sYf hxn vWs -sri +tTi bnP atj avV @@ -127858,11 +127877,11 @@ xkp kBA bOj awL -bKp +ily ckm bKp -awW -qDM +aIg +jjN cox oaH axb @@ -128078,7 +128097,7 @@ sZl ges wCW rtn -mNG +gPB bwi ajt bmA @@ -130377,7 +130396,7 @@ rnc rFl udv aZv -lxn +uoA qwl pHY hYK @@ -132465,7 +132484,7 @@ uJI bkZ hiM xdp -oiB +dkj bjF bEg gKQ @@ -134024,8 +134043,8 @@ xxq bSn vyF xOT -cUA -bWM +qON +bOc bPe bZC bPe @@ -134543,7 +134562,7 @@ cJO jol pxZ iHt -bRF +sOt mjb mjb bTT diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index ee4b234b07be9..3c536a9f247d1 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -7859,6 +7859,25 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) +"aZn" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=14.9-CrewQuarters-Central"; + location = "14.8-Dorms-Lockers" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron, +/area/crew_quarters/dorms) "aZo" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -17190,6 +17209,11 @@ }, /turf/open/floor/iron/dark/corner, /area/engine/atmos) +"bZZ" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/bar) "cak" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 4 @@ -21560,10 +21584,6 @@ }, /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) -"cOs" = ( -/obj/machinery/status_display/ai, -/turf/closed/wall, -/area/hallway/secondary/exit/departure_lounge) "cOF" = ( /obj/structure/table, /obj/item/storage/box/bodybags{ @@ -22363,15 +22383,6 @@ /obj/item/storage/box/lights/mixed, /turf/open/floor/plating, /area/maintenance/starboard) -"cTy" = ( -/obj/structure/chair/fancy/comfy{ - color = "#666666"; - dir = 4 - }, -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/chapel/main) "cTF" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -26647,25 +26658,6 @@ }, /turf/open/floor/iron, /area/hallway/secondary/entry) -"edV" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/rack, -/obj/item/rollerbed{ - pixel_x = -2 - }, -/obj/item/rollerbed{ - pixel_x = 1; - pixel_y = 3 - }, -/obj/item/rollerbed{ - pixel_x = 5; - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/lobby) "eed" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/effect/mapping_helpers/airlock/abandoned, @@ -27372,6 +27364,21 @@ }, /turf/open/floor/iron/cafeteria_red, /area/crew_quarters/bar) +"euL" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron, +/area/hallway/primary/port) "evf" = ( /obj/machinery/camera/motion{ c_tag = "Armory - External"; @@ -29229,6 +29236,12 @@ }, /turf/open/floor/iron, /area/medical/break_room) +"fkj" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/turf/open/floor/prison, +/area/security/prison) "fkk" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -33816,6 +33829,10 @@ }, /turf/open/floor/iron, /area/crew_quarters/fitness/recreation) +"gZE" = ( +/obj/machinery/digital_clock/directional, +/turf/closed/wall, +/area/hallway/secondary/exit/departure_lounge) "gZS" = ( /obj/machinery/button/door{ id = "prisonereducation"; @@ -35296,6 +35313,22 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/crew_quarters/kitchen) +"hEE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/security/brig) "hEL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 @@ -37578,6 +37611,12 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/aft) +"iAj" = ( +/obj/item/radio/intercom{ + pixel_x = 26 + }, +/turf/closed/wall/r_wall, +/area/security/main) "iAm" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -41109,6 +41148,16 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) +"jTa" = ( +/obj/structure/chair/fancy/comfy{ + color = "#666666"; + dir = 4 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/chapel{ + dir = 1 + }, +/area/chapel/main) "jTi" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -41306,6 +41355,26 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/maintenance/port) +"jZh" = ( +/obj/machinery/airalarm/directional/north, +/obj/structure/rack, +/obj/item/rollerbed{ + pixel_x = -2 + }, +/obj/item/rollerbed{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/item/rollerbed{ + pixel_x = 5; + pixel_y = 8 + }, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/white, +/area/medical/medbay/lobby) "jZk" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/structure/disposalpipe/segment, @@ -41414,24 +41483,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/maintenance/starboard) -"kau" = ( -/obj/machinery/firealarm{ - pixel_y = 28 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/security/brig) "kaJ" = ( /obj/structure/table, /obj/item/paicard, @@ -42577,24 +42628,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/teleporter) -"kwF" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Central Primary Hallway - Fore - Port Corner"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/hallway/primary/central) "kwI" = ( /obj/item/reagent_containers/spray/plantbgone{ pixel_y = 3 @@ -44195,12 +44228,6 @@ }, /turf/open/floor/iron/white, /area/science/research) -"kZa" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/turf/open/floor/prison, -/area/security/prison) "kZi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 @@ -44477,20 +44504,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/storage/tools) -"lge" = ( -/obj/effect/spawner/randomarcade, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 32 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) "lhn" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -44818,11 +44831,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"loR" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/turf/open/floor/iron/dark, -/area/bridge) "lpd" = ( /obj/structure/lattice/catwalk/over, /turf/open/floor/plating, @@ -46656,6 +46664,12 @@ /obj/structure/sign/departments/minsky/medical/medical2, /turf/closed/wall, /area/medical/medbay/lobby) +"mdn" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/dark, +/area/bridge) "mdo" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -47431,6 +47445,25 @@ }, /turf/open/floor/iron, /area/construction/mining/aux_base) +"muy" = ( +/obj/machinery/power/apc/highcap/five_k{ + areastring = "/area/security/warden"; + dir = 8; + name = "Brig Control APC"; + pixel_x = -1; + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/iron/showroomfloor, +/area/security/main) "muG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 @@ -52373,6 +52406,21 @@ /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, /area/storage/primary) +"ohr" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Central Primary Hallway - Fore - Port Corner"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/hallway/primary/central) "oid" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 @@ -52397,25 +52445,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) -"oiE" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/power/apc/highcap/five_k{ - areastring = "/area/security/warden"; - dir = 8; - name = "Brig Control APC"; - pixel_x = -1; - pixel_y = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/turf/open/floor/iron/showroomfloor, -/area/security/main) "ojf" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -53354,6 +53383,13 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) +"oym" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/white/corner, +/area/hallway/secondary/entry) "oyE" = ( /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /obj/structure/bodycontainer/morgue, @@ -54561,24 +54597,6 @@ /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, /area/storage/primary) -"oYe" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=14.9-CrewQuarters-Central"; - location = "14.8-Dorms-Lockers" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/crew_quarters/dorms) "oYx" = ( /obj/structure/table, /obj/item/food/grown/wheat, @@ -60705,20 +60723,6 @@ }, /turf/open/floor/iron, /area/hydroponics) -"rsJ" = ( -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/hallway/primary/port) "rti" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -65286,6 +65290,13 @@ /obj/machinery/smartfridge/chemistry, /turf/closed/wall/r_wall, /area/medical/chemistry) +"tjf" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/iron, +/area/hallway/primary/central) "tjn" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -72589,6 +72600,15 @@ }, /turf/open/floor/iron, /area/crew_quarters/fitness/recreation) +"vZR" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/poddoor/preopen{ + id = "Engineering"; + name = "Engineering Security Doors" + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/engine/break_room) "vZX" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -74886,6 +74906,19 @@ }, /turf/open/floor/iron/white, /area/science/xenobiology) +"wPN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white, +/area/science/research) "wQf" = ( /obj/machinery/door/airlock/maintenance{ name = "Chapel Maintenance"; @@ -75351,6 +75384,16 @@ /obj/item/canvas/twentythree_twentythree, /turf/open/floor/iron, /area/storage/art) +"xao" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron, +/area/security/brig) "xaq" = ( /obj/structure/flora/junglebush/b, /obj/structure/window/reinforced, @@ -76180,6 +76223,20 @@ }, /turf/open/floor/iron, /area/hallway/primary/port) +"xnt" = ( +/obj/effect/spawner/randomarcade, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "xnK" = ( /obj/structure/filingcabinet/chestdrawer, /obj/machinery/airalarm{ @@ -93007,7 +93064,7 @@ nFP kwY bqd bsp -bnM +oym bnM ndx bzw @@ -100706,7 +100763,7 @@ pbu aJN lhv dne -rsJ +euL lCe tgo bff @@ -101220,7 +101277,7 @@ mtX aJO piG gmp -kwF +ohr nTn cKI hMh @@ -101452,7 +101509,7 @@ gUG oTw eNL srs -kZa +fkj aax nWv aaa @@ -101552,7 +101609,7 @@ cLa cLa cPJ gPS -cTy +jTa cRn cOS cMI @@ -101735,7 +101792,7 @@ aVR nml rJh bqA -bqA +tjf bqA bqA iAp @@ -103565,7 +103622,7 @@ aZa jfB bSS bSS -edV +jZh iqK tDc vXT @@ -105084,7 +105141,7 @@ kLu bkE bmy bor -loR +mdn bsU bsU bsU @@ -105402,7 +105459,7 @@ cLr cMf cMU cNN -cOs +gZE cOW cMU cPS @@ -107099,7 +107156,7 @@ vRS fDl fsC aqa -oiE +muy sMC vQY tPv @@ -107612,7 +107669,7 @@ aeq jai eRX kFN -aqa +iAj jXZ dkt uqm @@ -107622,7 +107679,7 @@ yen ajD dZc ulX -lQt +xao ahB ahB kGn @@ -108135,7 +108192,7 @@ tlO wnE ajD ajD -kau +hEE awq gCn aiq @@ -109486,7 +109543,7 @@ nnT ckg clH bZn -jKR +wPN ioY sYS fgQ @@ -113575,7 +113632,7 @@ qaI xTu kJK foE -blf +bZZ kmk ujJ duS @@ -114056,7 +114113,7 @@ aGJ mWQ sXR fbN -oYe +aZn qpm rDe jtP @@ -115623,7 +115680,7 @@ alq boY khd bmP -lge +xnt jDS etX cii @@ -120241,7 +120298,7 @@ toh hGd dgz aBI -byK +vZR uUo rUa pcp diff --git a/_maps/map_files/RadStation/RadStation.dmm b/_maps/map_files/RadStation/RadStation.dmm index 2c6cbec8a9542..36d5f89e9307c 100644 --- a/_maps/map_files/RadStation/RadStation.dmm +++ b/_maps/map_files/RadStation/RadStation.dmm @@ -5867,15 +5867,6 @@ lighting_overlay_colour = "#DDE6FF"; power_light = 0 }) -"bVQ" = ( -/obj/structure/sign/directions/medical{ - dir = 8; - pixel_y = -6 - }, -/turf/closed/wall/r_wall, -/area/security/main{ - name = "Security Locker Room" - }) "bWa" = ( /obj/structure/lattice/catwalk/over, /obj/machinery/door/airlock/maintenance_hatch{ @@ -7481,6 +7472,17 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/iron, /area/maintenance/department/security) +"cuH" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/guideline/guideline_edge/purple{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white/side, +/area/science/research) "cuM" = ( /obj/structure/sign/poster/official/random{ pixel_x = -32 @@ -13005,14 +13007,6 @@ }, /turf/open/floor/iron/white, /area/medical/virology) -"edl" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/hallway/primary/fore) "edv" = ( /obj/effect/turf_decal/guideline/guideline_out/brown{ dir = 8 @@ -13819,15 +13813,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/aft) -"erj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/computer/rdconsole/production{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/engine/engineering) "ero" = ( /obj/effect/landmark/blobstart, /turf/open/floor/iron, @@ -22895,16 +22880,6 @@ /obj/machinery/smartfridge/chemistry/preloaded, /turf/closed/wall, /area/medical/apothecary) -"gXP" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 4 - }, -/obj/machinery/dish_drive{ - pixel_y = 10 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "gYa" = ( /obj/machinery/photocopier, /obj/effect/turf_decal/bot, @@ -31534,6 +31509,19 @@ }, /turf/open/floor/plating, /area/security/checkpoint/science) +"jPL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/guideline/guideline_edge/red{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/security/brig) "jPV" = ( /obj/structure/lattice/catwalk, /obj/item/wrench, @@ -31785,6 +31773,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/iron/tech, /area/engine/atmos) +"jTr" = ( +/obj/effect/spawner/randomarcade{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/prison) "jTQ" = ( /obj/effect/turf_decal/loading_area{ dir = 1 @@ -32831,16 +32828,6 @@ }, /turf/open/floor/iron, /area/engine/engine_room) -"klr" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/turf_decal/guideline/guideline_edge/purple{ - dir = 1 - }, -/turf/open/floor/iron/white/side, -/area/science/research) "klu" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 @@ -36641,24 +36628,6 @@ }, /turf/open/floor/iron, /area/medical/apothecary) -"lxd" = ( -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science RC"; - pixel_y = 30; - receive_ore_updates = 1 - }, -/obj/machinery/camera/autoname{ - dir = 2; - network = list("ss13","rd") - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/fourcorners/contrasted, -/turf/open/floor/iron/dark, -/area/science/nanite) "lxi" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -39555,6 +39524,18 @@ /obj/structure/sign/warning/nosmoking/circle, /turf/closed/wall/r_wall, /area/engine/storage) +"mtE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/camera/autoname{ + dir = 4 + }, +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/cafeteria) "mtI" = ( /turf/open/floor/holofloor/plating, /area/holodeck/prison) @@ -42330,6 +42311,16 @@ /area/security/main{ name = "Security Locker Room" }) +"njD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/computer/rdconsole/production{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/dark, +/area/engine/engineering) "njS" = ( /obj/machinery/smartfridge/chemistry/virology/preloaded, /obj/machinery/button/door{ @@ -42843,6 +42834,23 @@ /obj/structure/table, /turf/open/floor/iron, /area/engine/break_room) +"nqJ" = ( +/obj/machinery/camera/autoname{ + network = list("ss13","rd") + }, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science RC"; + pixel_y = 30; + receive_ore_updates = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/fourcorners/contrasted, +/turf/open/floor/iron/dark, +/area/science/nanite) "nqQ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -44568,15 +44576,6 @@ }, /turf/closed/wall/r_wall, /area/engine/atmos) -"nQr" = ( -/obj/effect/spawner/randomarcade{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood, -/area/security/prison) "nQt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 @@ -64710,6 +64709,15 @@ }, /turf/open/floor/iron/white, /area/medical/genetics) +"ujj" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/hallway/primary/fore) "ujy" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -68004,18 +68012,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/dorms) -"vkF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - dir = 4 - }, -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/cafeteria) "vkS" = ( /obj/effect/turf_decal/tile/dark_blue{ alpha = 180; @@ -69067,6 +69063,20 @@ name = "mainframe floor" }, /area/tcommsat/server) +"vDo" = ( +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "MailConv" + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/dark, +/area/quartermaster/office) "vDs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 @@ -69163,6 +69173,15 @@ }, /turf/open/floor/iron/tech/grid, /area/engine/gravity_generator) +"vDU" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/hallway/secondary/exit/departure_lounge) "vDZ" = ( /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark, @@ -69546,6 +69565,17 @@ dir = 9 }, /area/science/research) +"vKD" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/machinery/dish_drive{ + pixel_y = 10 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "vLA" = ( /obj/structure/disposalpipe/segment{ dir = 2 @@ -71388,6 +71418,11 @@ }, /turf/open/floor/iron, /area/maintenance/department/science) +"wnU" = ( +/obj/effect/turf_decal/tile/blue/fourcorners/contrasted, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white, +/area/medical/sleeper) "wod" = ( /obj/effect/landmark/start/assistant, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -71986,14 +72021,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/engine/atmos) -"wBJ" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/hallway/secondary/exit/departure_lounge) "wBN" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -75523,19 +75550,6 @@ dir = 1 }, /area/hallway/secondary/exit/departure_lounge) -"xFT" = ( -/obj/machinery/conveyor/inverted{ - dir = 5; - id = "MailConv" - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/iron/dark, -/area/quartermaster/office) "xGh" = ( /obj/structure/table, /obj/item/assembly/signaler{ @@ -98275,7 +98289,7 @@ pOq vxS kgg sNa -xFT +vDo jut bAQ eQu @@ -103397,8 +103411,8 @@ rtX aAF dDS fhl -bVQ -jXu +hBK +jPL wxK rgL sOM @@ -104996,7 +105010,7 @@ qie qie qie qie -klr +cuH eAx pzV uUA @@ -107304,7 +107318,7 @@ pMZ mZq oFg sSc -lxd +nqJ sbe wAA ffm @@ -108280,7 +108294,7 @@ xJA wnJ iUx xtF -nQr +jTr oiw pxh gdY @@ -109129,7 +109143,7 @@ kwh cnX ulz ikR -erj +njD rxR txH mwr @@ -109546,7 +109560,7 @@ vND twm qxi bOq -edl +ujj jUc jUc dCe @@ -113699,7 +113713,7 @@ nXc eLi fdq cnr -vkF +mtE iqV dJr iFN @@ -115020,7 +115034,7 @@ deZ poJ deE cvC -req +wnU iqw bWm qkw @@ -116523,7 +116537,7 @@ nVz bka cYQ eeJ -gXP +vKD diN cCP cNU @@ -118081,7 +118095,7 @@ tpI ouQ qfC xCv -wBJ +vDU vwm cJN oXG diff --git a/beestation.dme b/beestation.dme index c7f5f129a5834..1baf4c7af978d 100644 --- a/beestation.dme +++ b/beestation.dme @@ -196,7 +196,8 @@ #include "code\__DEFINES\dcs\helpers.dm" #include "code\__DEFINES\dcs\signals.dm" #include "code\__DEFINES\dcs\signals\signals_area.dm" -#include "code\__DEFINES\dcs\signals\signals_atom.dm" +#include "code\__DEFINES\dcs\signals\signals_atom\signals_atom.dm" +#include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_attack.dm" #include "code\__DEFINES\dcs\signals\signals_global.dm" #include "code\__DEFINES\dcs\signals\signals_lighting.dm" #include "code\__DEFINES\dcs\signals\signals_movable.dm" @@ -212,6 +213,7 @@ #include "code\__DEFINES\dcs\signals\signals_mob\signals_human.dm" #include "code\__DEFINES\dcs\signals\signals_mob\signals_living.dm" #include "code\__DEFINES\dcs\signals\signals_mob\signals_mob.dm" +#include "code\__DEFINES\dcs\signals\signals_mob\signals_mobattack.dm" #include "code\__DEFINES\dcs\signals\signals_mob\signals_silicon.dm" #include "code\__DEFINES\dcs\signals\signals_mob\signals_simplemob.dm" #include "code\__DEFINES\dcs\signals\signals_mob\signals_xenobiology.dm" @@ -223,6 +225,7 @@ #include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_food.dm" #include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_grenade.dm" #include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_implant.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_itemattack.dm" #include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_item.dm" #include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_organs.dm" #include "code\__DEFINES\dcs\signals\signals_obj\signals_machine\signals_airlock.dm" @@ -306,6 +309,7 @@ #include "code\_globalvars\regexes.dm" #include "code\_globalvars\religion.dm" #include "code\_globalvars\soul_glimmer.dm" +#include "code\_globalvars\time_vars.dm" #include "code\_globalvars\traits.dm" #include "code\_globalvars\turf.dm" #include "code\_globalvars\xenoartifact.dm" @@ -484,6 +488,7 @@ #include "code\controllers\subsystem\processing\ai_behaviors.dm" #include "code\controllers\subsystem\processing\ai_controllers.dm" #include "code\controllers\subsystem\processing\clock_component.dm" +#include "code\controllers\subsystem\processing\digital_clock.dm" #include "code\controllers\subsystem\processing\fastprocess.dm" #include "code\controllers\subsystem\processing\fields.dm" #include "code\controllers\subsystem\processing\fluids.dm" @@ -889,6 +894,7 @@ #include "code\datums\mood_events\drink_events.dm" #include "code\datums\mood_events\drug_events.dm" #include "code\datums\mood_events\generic_negative_events.dm" +#include "code\datums\mood_events\generic_neutral_events.dm" #include "code\datums\mood_events\generic_positive_events.dm" #include "code\datums\mood_events\mood_event.dm" #include "code\datums\mood_events\needs_events.dm" @@ -1070,6 +1076,7 @@ #include "code\game\machinery\cryopod.dm" #include "code\game\machinery\dance_machine.dm" #include "code\game\machinery\defibrillator_mount.dm" +#include "code\game\machinery\digital_clock.dm" #include "code\game\machinery\dish_drive.dm" #include "code\game\machinery\dna_scanner.dm" #include "code\game\machinery\doppler_array.dm" @@ -1709,8 +1716,8 @@ #include "code\game\turfs\open\space\transit.dm" #include "code\modules\actionspeed\_actionspeed_modifier.dm" #include "code\modules\actionspeed\modifiers\base.dm" -#include "code\modules\actionspeed\modifiers\mood.dm" #include "code\modules\actionspeed\modifiers\race.dm" +#include "code\modules\actionspeed\modifiers\hunger.dm" #include "code\modules\actionspeed\modifiers\status_effects.dm" #include "code\modules\admin\admin.dm" #include "code\modules\admin\admin_fax_panel.dm" @@ -3681,9 +3688,16 @@ #include "code\modules\recycling\disposal\pipe.dm" #include "code\modules\recycling\disposal\pipe_sorting.dm" #include "code\modules\relay\relay.dm" -#include "code\modules\religion\religion_sects.dm" -#include "code\modules\religion\religion_structures.dm" -#include "code\modules\religion\rites.dm" +#include "code\modules\religion\_religion_sects.dm" +#include "code\modules\religion\_religion_structures.dm" +#include "code\modules\religion\_rites.dm" +#include "code\modules\religion\sects\candle_sect.dm" +#include "code\modules\religion\sects\carp_sect.dm" +#include "code\modules\religion\sects\necro_sect.dm" +#include "code\modules\religion\sects\plant_sect.dm" +#include "code\modules\religion\sects\puritan_sect.dm" +#include "code\modules\religion\sects\shadow_sect.dm" +#include "code\modules\religion\sects\techno_sect.dm" #include "code\modules\requests\request.dm" #include "code\modules\requests\request_manager.dm" #include "code\modules\research\designs.dm" diff --git a/code/__DEFINES/actionspeed_modification.dm b/code/__DEFINES/actionspeed_modification.dm index 40fbd3fe26dcc..7354ac44a3eb7 100644 --- a/code/__DEFINES/actionspeed_modification.dm +++ b/code/__DEFINES/actionspeed_modification.dm @@ -1,2 +1,2 @@ //ids -#define ACTIONSPEED_ID_SANITY "sanity_component" +#define ACTIONSPEED_ID_SATIETY "nutrition" diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index a2f42354530be..033b608bfe17e 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -62,22 +62,32 @@ #define STOP_REACTIONS 2 // Pressure limits. -#define HAZARD_HIGH_PRESSURE 550 //! This determines at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant) -#define WARNING_HIGH_PRESSURE 325 //! This determines when the orange pressure icon is displayed (it is 0.7 * HAZARD_HIGH_PRESSURE) -#define WARNING_LOW_PRESSURE 50 //! This is when the gray low pressure icon is displayed. (it is 2.5 * HAZARD_LOW_PRESSURE) -#define HAZARD_LOW_PRESSURE 20 //! This is when the black ultra-low pressure icon is displayed. (This one is set as a constant) - -#define TEMPERATURE_DAMAGE_COEFFICIENT 1.5 //! This is used in handle_temperature_damage() for humans, and in reagents that affect body temperature. Temperature damage is multiplied by this amount. - -#define BODYTEMP_NORMAL 310.15 //! The natural temperature for a body -#define BODYTEMP_AUTORECOVERY_DIVISOR 11 //! This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. This is applied each tick, so long as the mob is alive. -#define BODYTEMP_AUTORECOVERY_MINIMUM 12 //! Minimum amount of kelvin moved toward 310K per tick. So long as abs(310.15 - bodytemp) is more than 50. +/// This determins at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant) +#define HAZARD_HIGH_PRESSURE 550 +/// This determins when the orange pressure icon is displayed (it is 0.7 * HAZARD_HIGH_PRESSURE) +#define WARNING_HIGH_PRESSURE 325 +/// This is when the gray low pressure icon is displayed. (it is 2.5 * HAZARD_LOW_PRESSURE) +#define WARNING_LOW_PRESSURE 50 +/// This is when the black ultra-low pressure icon is displayed. (This one is set as a constant) +#define HAZARD_LOW_PRESSURE 20 + +/// This is used in handle_temperature_damage() for humans, and in reagents that affect body temperature. Temperature damage is multiplied by this amount. +#define TEMPERATURE_DAMAGE_COEFFICIENT 1.5 + +/// The natural temperature for a body +#define BODYTEMP_NORMAL 310.15 +/// This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. This is applied each tick, so long as the mob is alive. +#define BODYTEMP_AUTORECOVERY_DIVISOR 14 +/// Minimum amount of kelvin moved toward 310K per tick. So long as abs(310.15 - bodytemp) is more than 50. +#define BODYTEMP_AUTORECOVERY_MINIMUM 6 ///Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is lower than their body temperature. Make it lower to lose bodytemp faster. #define BODYTEMP_COLD_DIVISOR 15 /// Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to gain bodytemp faster. #define BODYTEMP_HEAT_DIVISOR 15 -#define BODYTEMP_COOLING_MAX -100 //! The maximum number of degrees that your body can cool in 1 tick, due to the environment, when in a cold area. -#define BODYTEMP_HEATING_MAX 30 //! The maximum number of degrees that your body can heat up in 1 tick, due to the environment, when in a hot area. +/// The maximum number of degrees that your body can cool in 1 tick, due to the environment, when in a cold area. +#define BODYTEMP_COOLING_MAX -30 +/// The maximum number of degrees that your body can heat up in 1 tick, due to the environment, when in a hot area. +#define BODYTEMP_HEATING_MAX 30 /// The body temperature limit the human body can take before it starts taking damage from heat. /// This also affects how fast the body normalises it's temperature when hot. @@ -87,7 +97,22 @@ /// This also affects how fast the body normalises it's temperature when cold. /// 270k is about -3c, that is below freezing and would hurt over time. #define BODYTEMP_COLD_DAMAGE_LIMIT (BODYTEMP_NORMAL - 40) - +/// The body temperature limit the human body can take before it will take wound damage. +#define BODYTEMP_HEAT_WOUND_LIMIT (BODYTEMP_NORMAL + 90) // 400.5 k + +// Body temperature warning icons +/// The temperature the red icon is displayed. +#define BODYTEMP_HEAT_WARNING_3 (BODYTEMP_HEAT_DAMAGE_LIMIT + 360) //+700k +/// The temperature the orange icon is displayed. +#define BODYTEMP_HEAT_WARNING_2 (BODYTEMP_HEAT_DAMAGE_LIMIT + 120) //460K +/// The temperature the yellow icon is displayed. +#define BODYTEMP_HEAT_WARNING_1 (BODYTEMP_HEAT_DAMAGE_LIMIT) //340K +/// The temperature the light green icon is displayed. +#define BODYTEMP_COLD_WARNING_1 (BODYTEMP_COLD_DAMAGE_LIMIT) //270k +/// The temperature the cyan icon is displayed. +#define BODYTEMP_COLD_WARNING_2 (BODYTEMP_COLD_DAMAGE_LIMIT - 70) //200k +/// The temperature the blue icon is displayed. +#define BODYTEMP_COLD_WARNING_3 (BODYTEMP_COLD_DAMAGE_LIMIT - 150) //120k #define SPACE_HELM_MIN_TEMP_PROTECT 2.0 //! what min_cold_protection_temperature is set to for space-helmet quality headwear. MUST NOT BE 0. #define SPACE_HELM_MAX_TEMP_PROTECT 1500 //! Thermal insulation works both ways /Malkevin diff --git a/code/__DEFINES/bodyparts.dm b/code/__DEFINES/bodyparts.dm index a17da968ca9af..149dbfd74c225 100644 --- a/code/__DEFINES/bodyparts.dm +++ b/code/__DEFINES/bodyparts.dm @@ -1,4 +1,5 @@ -#define IS_ORGANIC_LIMB(A) (A.bodytype & BODYTYPE_ORGANIC) +#define IS_ORGANIC_LIMB(A) (A && (A.bodytype & BODYTYPE_ORGANIC)) +#define IS_ROBOTIC_LIMB(A) (A && (A.bodytype & BODYTYPE_ROBOTIC)) #define BODYZONE_STYLE_DEFAULT 0 #define BODYZONE_STYLE_MEDICAL 1 diff --git a/code/__DEFINES/cooldowns.dm b/code/__DEFINES/cooldowns.dm index 6db88cc37d951..b4f215fb28b8d 100644 --- a/code/__DEFINES/cooldowns.dm +++ b/code/__DEFINES/cooldowns.dm @@ -28,6 +28,7 @@ //INDEXES #define COOLDOWN_BORG_SELF_REPAIR "borg_self_repair" #define COOLDOWN_LARRYKNIFE "larry_knife" +#define COOLDOWN_CLOCK_WMCHIMES "clock_westminister" //circuit cooldowns diff --git a/code/__DEFINES/dcs/signals/signals_atom.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom.dm similarity index 87% rename from code/__DEFINES/dcs/signals/signals_atom.dm rename to code/__DEFINES/dcs/signals/signals_atom/signals_atom.dm index 18c0e97b8ed38..74d1457ccd7ce 100644 --- a/code/__DEFINES/dcs/signals/signals_atom.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom.dm @@ -5,12 +5,6 @@ // /atom signals ///from base of atom/proc/Initialize(mapload): sent any time a new atom is created #define COMSIG_ATOM_CREATED "atom_created" -///! from base of atom/attackby(): (/obj/item, /mob/living, params) -#define COMSIG_PARENT_ATTACKBY "atom_attackby" - ///! Return this in response if you don't want afterattack to be called - #define COMPONENT_NO_AFTERATTACK 1 -///! from base of atom/attack_hulk(): (/mob/living/carbon/human) -#define COMSIG_ATOM_HULK_ATTACK "hulk_attack" /// from base of atom/examine(): (/mob, list/examine_text) #define COMSIG_PARENT_EXAMINE "atom_examine" /// from base of atom/get_examine_name(): (/mob, list/overrides) @@ -20,8 +14,6 @@ #define EXAMINE_POSITION_BEFORE (1<<1) //End positions #define COMPONENT_EXNAME_CHANGED (1<<0) -//from base of atom/attack_basic_mob(): (/mob/user) -#define COMSIG_ATOM_ATTACK_BASIC_MOB "attack_basic_mob" /// from base of [/atom/proc/update_appearance]: (updates) #define COMSIG_ATOM_UPDATE_APPEARANCE "atom_update_appearance" @@ -133,24 +125,6 @@ /// called when an atom stops orbiting another atom: (atom) #define COMSIG_ATOM_ORBIT_STOP "atom_orbit_stop" -///////////////// -/* Attack signals. They should share the returned flags, to standardize the attack chain. */ -/// tool_act -> pre_attack -> target.attackby (item.attack) -> afterattack - ///Ends the attack chain. If sent early might cause posterior attacks not to happen. - #define COMPONENT_CANCEL_ATTACK_CHAIN (1<<0) - ///Skips the specific attack step, continuing for the next one to happen. - #define COMPONENT_SKIP_ATTACK (1<<1) - -///! from base of atom/attack_ghost(): (mob/dead/observer/ghost) -#define COMSIG_ATOM_ATTACK_GHOST "atom_attack_ghost" -///! from base of atom/attack_hand(): (mob/user) -#define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" -///! from base of atom/attack_paw(): (mob/user) -#define COMSIG_ATOM_ATTACK_PAW "atom_attack_paw" - //works on all 3. - #define COMPONENT_NO_ATTACK_HAND 1 -///! from base of atom/animal_attack(): (/mob/user) -#define COMSIG_ATOM_ATTACK_ANIMAL "attack_animal" ///This signal return value bitflags can be found in __DEFINES/misc.dm ///called for each movable in a turf contents on /turf/attempt_z_impact(): (atom/movable/A, levels) #define COMSIG_ATOM_INTERCEPT_Z_FALL "movable_intercept_z_impact" diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm new file mode 100644 index 0000000000000..91094391ed1d1 --- /dev/null +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm @@ -0,0 +1,27 @@ +// Atom attack signals. Format: +// When the signal is called: (signal arguments) +// All signals send the source datum of the signal as the first argument + +///from base of atom/attackby(): (/obj/item, /mob/living, params) +#define COMSIG_PARENT_ATTACKBY "atom_attackby" +///Return this in response if you don't want afterattack to be called + #define COMPONENT_NO_AFTERATTACK (1<<0) +///from base of atom/attack_hulk(): (/mob/living/carbon/human) +#define COMSIG_ATOM_HULK_ATTACK "hulk_attack" +///from base of atom/animal_attack(): (/mob/user) +#define COMSIG_ATOM_ATTACK_ANIMAL "attack_animal" +//from base of atom/attack_basic_mob(): (/mob/user) +#define COMSIG_ATOM_ATTACK_BASIC_MOB "attack_basic_mob" + +/* Attack signals. They should share the returned flags, to standardize the attack chain. */ +/// tool_act -> pre_attack -> target.attackby (item.attack) -> afterattack + ///Ends the attack chain. If sent early might cause posterior attacks not to happen. + #define COMPONENT_CANCEL_ATTACK_CHAIN (1<<0) + ///Skips the specific attack step, continuing for the next one to happen. + #define COMPONENT_SKIP_ATTACK (1<<1) +///from base of atom/attack_ghost(): (mob/dead/observer/ghost) +#define COMSIG_ATOM_ATTACK_GHOST "atom_attack_ghost" +///from base of atom/attack_hand(): (mob/user) +#define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" +///from base of atom/attack_paw(): (mob/user) +#define COMSIG_ATOM_ATTACK_PAW "atom_attack_paw" diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_human.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_human.dm index 4d951dcbfe563..9c57150679f92 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_human.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_human.dm @@ -3,8 +3,6 @@ // All signals send the source datum of the signal as the first argument // /mob/living/carbon/human signals -#define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" //! from mob/living/carbon/human/UnarmedAttack(): (atom/target) -#define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" //! from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker) #define COMSIG_HUMAN_DISARM_HIT "human_disarm_hit" //! Hit by successful disarm attack (mob/living/carbon/human/attacker,zone_targeted) #define COMSIG_HUMAN_ATTACKED "carbon_attacked" //hit by something that checks shields. diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob.dm index aa45c9cd1ce71..0ef03a089e156 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob.dm @@ -34,17 +34,11 @@ #define COMSIG_MOB_RECEIVE_ARTIFACT "mob_receive_artifact" // #define COMPONENT_BLOCK_ARTIFACT 1 #define COMSIG_MOB_HUD_CREATED "mob_hud_created" //! from base of mob/create_mob_hud(): () -#define COMSIG_MOB_ATTACK_HAND "mob_attack_hand" //! from base of #define COMSIG_MOB_ATTACK_HAND_TURF "mob_attack_hand_turf" //! from base of turf/attack_hand #define COMSIG_MOB_HAND_ATTACKED "mob_hand_attacked" //! from base of -#define COMSIG_MOB_ITEM_ATTACK "mob_item_attack" //! from base of /obj/item/attack(): (mob/M, mob/user) - #define COMPONENT_ITEM_NO_ATTACK 1 -#define COMSIG_MOB_ITEM_ATTACKBY "mob_item_attackby" //! from base of /obj/item/attack(): (mob/user, src) #define COMSIG_MOB_EQUIPPED_ITEM "mob_equipped_item" //! from base of /item/equipped(): (/mob/user, /obj/item, slot) #define COMSIG_MOB_DROPPED_ITEM "mob_dropped_item" //! from base of /item/dropped(): (/mob/user, /obj/item, loc) #define COMSIG_MOB_APPLY_DAMGE "mob_apply_damage" //! from base of /mob/living/proc/apply_damage(): (damage, damagetype, def_zone) -#define COMSIG_MOB_ITEM_AFTERATTACK "mob_item_afterattack" //! from base of obj/item/afterattack(): (atom/target, mob/user, proximity_flag, click_parameters) -#define COMSIG_MOB_ATTACK_RANGED "mob_attack_ranged" //! from base of mob/RangedAttack(): (atom/A, params) #define COMSIG_MOB_THROW "mob_throw" //! from base of /mob/throw_item(): (atom/target) #define COMSIG_MOB_UPDATE_SIGHT "mob_update_sight" //! from base of /mob/update_sight(): () #define COMSIG_MOB_EXAMINATE "mob_examinate" //from base of /mob/verb/examinate(): (atom/target) diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mobattack.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mobattack.dm new file mode 100644 index 0000000000000..3748b57a5271d --- /dev/null +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mobattack.dm @@ -0,0 +1,20 @@ +// Format: +// When the signal is called: (signal arguments) +// All signals send the source datum of the signal as the first argument + +/* Attack signals. They should share the returned flags, to standardize the attack chain. */ + +///from base of atom/attack_hand(): (mob/user) +#define COMSIG_MOB_ATTACK_HAND "mob_attack_hand" +///from base of /obj/item/attack(): (mob/M, mob/user) +#define COMSIG_MOB_ITEM_ATTACK "mob_item_attack" +///from base of obj/item/afterattack(): (atom/target, mob/user, proximity_flag, click_parameters) +#define COMSIG_MOB_ITEM_AFTERATTACK "mob_item_afterattack" +///from base of obj/item/attack_qdeleted(): (atom/target, mob/user, proxiumity_flag, click_parameters) +#define COMSIG_MOB_ITEM_ATTACK_QDELETED "mob_item_attack_qdeleted" +///from base of mob/RangedAttack(): (atom/A, params) +#define COMSIG_MOB_ATTACK_RANGED "mob_attack_ranged" +///from mob/living/carbon/human/UnarmedAttack(): (atom/target, proximity) +#define COMSIG_HUMAN_EARLY_UNARMED_ATTACK "human_early_unarmed_attack" +///from mob/living/carbon/human/UnarmedAttack(): (atom/target, proximity) +#define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_clothing.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_clothing.dm index 9e654a2b7da0e..06e9484c867ca 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_clothing.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_clothing.dm @@ -3,4 +3,6 @@ // All signals send the source datum of the signal as the first argument // /obj/item/clothing signals -#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //! from base of obj/item/clothing/shoes/proc/step_action(): () + +///from [/mob/living/carbon/human/Move]: () +#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm index fbed54f2b0d97..2f74eb1b263fa 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm @@ -3,14 +3,6 @@ // All signals send the source datum of the signal as the first argument // /obj/item signals -#define COMSIG_ITEM_ATTACK "item_attack" //! from base of obj/item/attack(): (/mob/living/target, /mob/living/user) -#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //! from base of obj/item/attack_self(): (/mob) - #define COMPONENT_NO_INTERACT 1 -#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //! from base of obj/item/attack_obj(): (/obj, /mob) - #define COMPONENT_NO_ATTACK_OBJ 1 -#define COMSIG_ITEM_PRE_ATTACK "item_pre_attack" //! from base of obj/item/pre_attack(): (atom/target, mob/user, params) - #define COMPONENT_NO_ATTACK 1 -#define COMSIG_ITEM_AFTERATTACK "item_afterattack" //! from base of obj/item/afterattack(): (atom/target, mob/user, proximity_flag, params) ///from base of obj/item/equipped(): (/mob/equipper, slot) #define COMSIG_ITEM_EQUIPPED "item_equip" ///from base of obj/item/on_grind(): ()) diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_itemattack.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_itemattack.dm new file mode 100644 index 0000000000000..dc127a0a0714f --- /dev/null +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_itemattack.dm @@ -0,0 +1,19 @@ +// Format: +// When the signal is called: (signal arguments) +// All signals send the source datum of the signal as the first argument + +/* Attack signals. They should share the returned flags, to standardize the attack chain. */ +///from base of obj/item/attack(): (/mob/living/target, /mob/living/user) +#define COMSIG_ITEM_ATTACK "item_attack" + +#define COMSIG_MOB_ITEM_ATTACKBY "item_attackby" +///from base of obj/item/attack_self(): (/mob) +#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" +///from base of obj/item/attack_obj(): (/obj, /mob) +#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" +///from base of obj/item/pre_attack(): (atom/target, mob/user, params) +#define COMSIG_ITEM_PRE_ATTACK "item_pre_attack" +///from base of obj/item/afterattack(): (atom/target, mob/user, params) +#define COMSIG_ITEM_AFTERATTACK "item_afterattack" +///from base of obj/item/attack_qdeleted(): (atom/target, mob/user, params) +#define COMSIG_ITEM_ATTACK_QDELETED "item_attack_qdeleted" diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index c6262b0f6dbcf..1f660c1218ef2 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -207,7 +207,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define ismecha(A) (istype(A, /obj/mecha)) -#define ismopable(A) (A.layer <= HIGH_SIGIL_LAYER) //If something can be cleaned by floor-cleaning devices such as mops or clean bots +#define ismopable(A) (A && (A.layer <= HIGH_SIGIL_LAYER)) //If something can be cleaned by floor-cleaning devices such as mops or clean bots #define isorgan(A) (istype(A, /obj/item/organ)) diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index e17898c697df3..7cacff57a2a97 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -1,56 +1,3 @@ - -#define ENGSEC (1<<0) - -#define CAPTAIN (1<<0) -#define HOS (1<<1) -#define WARDEN (1<<2) -#define DETECTIVE (1<<3) -#define OFFICER (1<<4) -#define CHIEF (1<<5) -#define ENGINEER (1<<6) -#define ATMOSTECH (1<<7) -#define ROBOTICIST (1<<8) -#define AI_JF (1<<9) -#define CYBORG (1<<10) -#define BRIG_PHYS (1<<11) -#define DEPUTY (1<<12) - - -#define MEDSCI (1<<1) - -#define RD_JF (1<<0) -#define SCIENTIST (1<<1) -#define EXPLORATION_CREW (1<<2) -#define CHEMIST (1<<3) -#define CMO_JF (1<<4) -#define DOCTOR (1<<5) -#define GENETICIST (1<<6) -#define VIROLOGIST (1<<7) -#define PARAMEDIC (1<<8) - - -#define CIVILIAN (1<<2) - -#define HOP (1<<0) -#define BARTENDER (1<<1) -#define BOTANIST (1<<2) -#define COOK (1<<3) -#define JANITOR (1<<4) -#define CURATOR (1<<5) -#define QUARTERMASTER (1<<6) -#define CARGOTECH (1<<7) -#define MINER (1<<8) -#define LAWYER (1<<9) -#define CHAPLAIN (1<<10) -#define CLOWN (1<<11) -#define MIME (1<<12) -#define ASSISTANT (1<<13) -#define GIMMICK (1<<14) -#define BARBER (1<<15) -#define MAGICIAN (1<<16) -#define PSYCHIATRIST (1<<17) -#define CELEBRITY (1<<18) - #define JOB_AVAILABLE 0 #define JOB_UNAVAILABLE_GENERIC 1 #define JOB_UNAVAILABLE_BANNED 2 diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm index 4e2b67c790696..0bd415d1b3466 100644 --- a/code/__DEFINES/movespeed_modification.dm +++ b/code/__DEFINES/movespeed_modification.dm @@ -6,10 +6,44 @@ #define MOVE_CONFLICT_JETPACK "JETPACK" //ids -#define MOVESPEED_ID_SANITY "sanity_component" +#define MOVESPEED_ID_VISIBLE_HUNGER "VISIBLE_HUNGER" #define MOVESPEED_ID_MOB_GRAB_STATE "mob_grab_state" #define MOVESPEED_ID_MOB_WALK_RUN "mob_walk_run" +#define MOVESPEED_ID_SLIME_STATUS "SLIME_STATUS" + +#define MOVESPEED_ID_LIVING_TURF_SPEEDMOD "LIVING_TURF_SPEEDMOD" +#define MOVESPEED_ID_LIVING_LIMBLESS "LIVING_LIMBLESS" + +#define MOVESPEED_ID_CARBON_SOFTCRIT "CARBON_SOFTCRIT" +#define MOVESPEED_ID_CARBON_OLDSPEED "CARBON_DEPRECATED_SPEED" +#define MOVESPEED_ID_CARBON_CRAWLING "CARBON_CRAWLING" + +#define MOVESPEED_ID_DNA_VAULT "DNA_VAULT" + +#define MOVESPEED_ID_YELLOW_ORB "YELLOW_ORB" + +#define MOVESPEED_ID_TARFOOT "TARFOOT" + +#define MOVESPEED_ID_SEPIA "SEPIA" +#define MOVESPEED_ID_SLIME_SEPIA "SLIME_SEPIA" // slime transforming sepia crossbreed + +#define MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD "MONKEY_REAGENT_SPEEDMOD" +#define MOVESPEED_ID_MONKEY_TEMPERATURE_SPEEDMOD "MONKEY_TEMPERATURE_SPEEDMOD" +#define MOVESPEED_ID_MONKEY_HEALTH_SPEEDMOD "MONKEY_HEALTH_SPEEDMOD" + +#define MOVESPEED_ID_CHANGELING_MUSCLES "CHANGELING_MUSCLES" + +#define MOVESPEED_ID_BASIC_MOB_VARSPEED "BASIC_MOB_VARSPEED_MODIFIER" +#define MOVESPEED_ID_SIMPLEMOB_VARSPEED "SIMPLEMOB_VARSPEED_MODIFIER" +#define MOVESPEED_ID_ADMIN_VAREDIT "ADMIN_VAREDIT_MODIFIER" + +#define MOVESPEED_ID_PAI_SPACEWALK_SPEEDMOD "PAI_SPACEWALK_MODIFIER" + +#define MOVESPEED_ID_PHOBIA "TRAUMA_PHOBIA" + +#define MOVESPEED_ID_SPECIES "SPECIES_SPEED_MOD" +#define MOVESPEED_ID_SNAIL_CRAWL "SNAIL_CRAWL_SPEED_MOD" #define MOVESPEED_ID_CYBER_THRUSTER "CYBER_IMPLANT_THRUSTER" #define MOVESPEED_ID_JETPACK "JETPACK" diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 71a3f315fac28..17fd243d2adf0 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -716,6 +716,20 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) . = pick(ais) return . +/** + * Used to get the amount of change between two body temperatures + * + * When passed the difference between two temperatures returns the amount of change to temperature to apply. + * The change rate should be kept at a low value tween 0.16 and 0.02 for optimal results. + * vars: + * * temp_diff (required) The differance between two temperatures + * * change_rate (optional)(Default: 0.06) The rate of range multiplyer + */ +/proc/get_temp_change_amount(temp_diff, change_rate = 0.06) + if(temp_diff < 0) + return (log((temp_diff * -1) * change_rate + 1) * BODYTEMP_AUTORECOVERY_DIVISOR) * -1 + return log(temp_diff * change_rate + 1) * BODYTEMP_AUTORECOVERY_DIVISOR + //// Generalised helper proc for letting mobs rename themselves. Used to be clname() and ainame() /mob/proc/apply_pref_name(preference_type, client/C) if(!C) diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 787e0f705c702..012085514f552 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -11,7 +11,7 @@ /proc/gameTimestamp(format = "hh:mm:ss", wtime=null) if(!wtime) wtime = world.time - return time2text(wtime, format, 0) + return time2text(wtime - GLOB.timezoneOffset, format) /// Returns the station time in deciseconds /proc/station_time(display_only = FALSE, wtime=world.time) @@ -19,7 +19,7 @@ /// Returns the station time in hh:mm:ss /proc/station_time_timestamp(format = "hh:mm:ss", wtime) - return time2text(station_time(TRUE, wtime), format, 0) + return time2text(station_time(TRUE, wtime), format) /proc/station_time_debug(force_set) if(isnum_safe(force_set)) diff --git a/code/_globalvars/time_vars.dm b/code/_globalvars/time_vars.dm new file mode 100644 index 0000000000000..cc830721145c0 --- /dev/null +++ b/code/_globalvars/time_vars.dm @@ -0,0 +1,6 @@ + +/// The difference betwen midnight (of the host computer) and 0 world.ticks. +GLOBAL_VAR_INIT(timezoneOffset, 0) + +GLOBAL_VAR_INIT(year, time2text(world.realtime,"YYYY")) +GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 37ea04ee9d918..a13f706c0df79 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -29,15 +29,15 @@ adj += S.nextmove_adjust() next_move = world.time + ((num + adj)*mod) -/* - Before anything else, defer these calls to a per-mobtype handler. This allows us to - remove istype() spaghetti code, but requires the addition of other handler procs to simplify it. - - Alternately, you could hardcode every mob's variation in a flat ClickOn() proc; however, - that's a lot of code duplication and is hard to maintain. - - Note that this proc can be overridden, and is in the case of screen objects. -*/ +/** + * Before anything else, defer these calls to a per-mobtype handler. This allows us to + * remove istype() spaghetti code, but requires the addition of other handler procs to simplify it. + * + * Alternately, you could hardcode every mob's variation in a flat [/mob/proc/ClickOn] proc; however, + * that's a lot of code duplication and is hard to maintain. + * + * Note that this proc can be overridden, and is in the case of screen objects. + */ /atom/Click(location,control,params) if(flags_1 & INITIALIZED_1) SEND_SIGNAL(src, COMSIG_CLICK, location, control, params, usr) @@ -51,19 +51,19 @@ if(flags_1 & INITIALIZED_1) usr.MouseWheelOn(src, delta_x, delta_y, params) -/* - Standard mob ClickOn() - Handles exceptions: Buildmode, middle click, modified clicks, mech actions - - After that, mostly just check your state, check whether you're holding an item, - check whether you're adjacent to the target, then pass off the click to whoever - is receiving it. - The most common are: - * mob/UnarmedAttack(atom,adjacent) - used here only when adjacent, with no item in hand; in the case of humans, checks gloves - * atom/attackby(item,user) - used only when adjacent - * item/afterattack(atom,user,adjacent,params) - used both ranged and adjacent - * mob/RangedAttack(atom,params) - used only ranged, only used for tk and laser eyes but could be changed -*/ +/** + * Standard mob ClickOn() + * Handles exceptions: Buildmode, middle click, modified clicks, mech actions + * + * After that, mostly just check your state, check whether you're holding an item, + * check whether you're adjacent to the target, then pass off the click to whoever + * is receiving it. + * The most common are: + * * [mob/proc/UnarmedAttack] (atom,adjacent) - used here only when adjacent, with no item in hand; in the case of humans, checks gloves + * * [atom/proc/attackby] (item,user) - used only when adjacent + * * [obj/item/proc/afterattack] (atom,user,adjacent,params) - used both ranged and adjacent + * * [mob/proc/RangedAttack] (atom,params) - used only ranged, only used for tk and laser eyes but could be changed + */ /mob/proc/ClickOn( atom/A, params ) if(world.time <= next_click) return @@ -161,7 +161,7 @@ else RangedAttack(A,params) -//Is the atom obscured by a PREVENT_CLICK_UNDER_1 object above it +/// Is the atom obscured by a PREVENT_CLICK_UNDER_1 object above it /atom/proc/IsObscured() SHOULD_BE_PURE(TRUE) if(!isturf(loc)) //This only makes sense for things directly on turfs for now @@ -180,9 +180,11 @@ return TRUE return FALSE +/** + * A backwards depth-limited breadth-first-search to see if the target is + * logically "in" anything adjacent to us. + */ /atom/movable/proc/CanReach(atom/ultimate_target, obj/item/tool, view_only = FALSE) - // A backwards depth-limited breadth-first-search to see if the target is - // logically "in" anything adjacent to us. var/list/direct_access = DirectAccess() var/depth = 1 + (view_only ? STORAGE_VIEW_DEPTH : INVENTORY_DEPTH) @@ -247,60 +249,61 @@ return qdel(dummy) -// Default behavior: ignore double clicks (the second click that makes the doubleclick call already calls for a normal click) +/// Default behavior: ignore double clicks (the second click that makes the doubleclick call already calls for a normal click) /mob/proc/DblClickOn(atom/A, params) return -/* - Translates into attack_hand, etc. - - Note: proximity_flag here is used to distinguish between normal usage (flag=1), - and usage when clicking on things telekinetically (flag=0). This proc will - not be called at ranged except with telekinesis. - - proximity_flag is not currently passed to attack_hand, and is instead used - in human click code to allow glove touches only at melee range. -*/ +/** + * Translates into [atom/proc/attack_hand], etc. + * + * Note: proximity_flag here is used to distinguish between normal usage (flag=1), + * and usage when clicking on things telekinetically (flag=0). This proc will + * not be called at ranged except with telekinesis. + * + * proximity_flag is not currently passed to attack_hand, and is instead used + * in human click code to allow glove touches only at melee range. + */ /mob/proc/UnarmedAttack(atom/A, proximity_flag) if(ismob(A)) changeNext_move(CLICK_CD_MELEE) return -/* - Ranged unarmed attack: - - This currently is just a default for all mobs, involving - laser eyes and telekinesis. You could easily add exceptions - for things like ranged glove touches, spitting alien acid/neurotoxin, - animals lunging, etc. -*/ +/** + * Ranged unarmed attack: + * + * This currently is just a default for all mobs, involving + * laser eyes and telekinesis. You could easily add exceptions + * for things like ranged glove touches, spitting alien acid/neurotoxin, + * animals lunging, etc. + */ /mob/proc/RangedAttack(atom/A, params) SEND_SIGNAL(src, COMSIG_MOB_ATTACK_RANGED, A, params) -/* - Restrained ClickOn - Used when you are handcuffed and click things. - Not currently used by anything but could easily be. -*/ +/** + * Restrained ClickOn + * + * Used when you are handcuffed and click things. + * Not currently used by anything but could easily be. + */ /mob/proc/RestrainedClickOn(atom/A) return /** - * Middle click - * *Mainly used for swapping hands - */ + * Middle click + * Mainly used for swapping hands + */ /mob/proc/MiddleClickOn(atom/A) . = SEND_SIGNAL(src, COMSIG_MOB_MIDDLECLICKON, A) if(. & COMSIG_MOB_CANCEL_CLICKON) return swap_hand() -/* - Shift click - For most mobs, examine. - This is overridden in ai.dm -*/ +/** + * Shift click + * For most mobs, examine. + * This is overridden in ai.dm + */ /mob/proc/ShiftClickOn(atom/A) A.ShiftClick(src) return @@ -310,11 +313,10 @@ user.examinate(src) return -/* - Ctrl click - For most objects, pull -*/ - +/** + * Ctrl click + * For most objects, pull + */ /mob/proc/CtrlClickOn(atom/A) A.CtrlClick(src) return @@ -343,10 +345,10 @@ A.CtrlClick(src) // this assumes you did CtrlClick instead of MiddleClick return -/* - Alt click - Unused except for AI -*/ +/** + * Alt click + * Unused except for AI + */ /mob/proc/AltClickOn(atom/A) . = SEND_SIGNAL(src, COMSIG_MOB_ALTCLICKON, A) if(. & COMSIG_MOB_CANCEL_CLICKON) @@ -360,7 +362,7 @@ user.listed_turf = T user.set_stat_tab(T.name) -// Use this instead of /mob/proc/AltClickOn(atom/A) where you only want turf content listing without additional atom alt-click interaction +/// Use this instead of [/mob/proc/AltClickOn] where you only want turf content listing without additional atom alt-click interaction /atom/proc/AltClickNoInteract(mob/user, atom/A) var/turf/T = get_turf(A) if(T && user.TurfAdjacent(T)) @@ -370,10 +372,10 @@ /mob/proc/TurfAdjacent(turf/T) return T.Adjacent(src) -/* - Control+Shift click - Used for AI and Give code -*/ +/** + * Control+Shift click + * Used for AI and Give code + */ /mob/proc/CtrlShiftClickOn(atom/A) A.CtrlShiftClick(src) return @@ -408,7 +410,7 @@ LE.preparePixelProjectile(A, src, params) LE.fire() -// Simple helper to face what you clicked on, in case it should be needed in more than one place +/// Simple helper to face what you clicked on, in case it should be needed in more than one place /mob/proc/face_atom(atom/A) if( buckled || stat != CONSCIOUS || !A || !x || !y || !A.x || !A.y ) return @@ -481,8 +483,7 @@ click_turf.Click(click_turf, control, list2params(modifiers)) . = 1 -/* MouseWheelOn */ - +/// MouseWheelOn /mob/proc/MouseWheelOn(atom/A, delta_x, delta_y, params) SEND_SIGNAL(src, COMSIG_MOB_MOUSE_SCROLL_ON, A, delta_x, delta_y, params) if (!client) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 4f6d538f0b9ef..1478721cd627f 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -1,31 +1,59 @@ - +/** + * This is the proc that handles the order of an item_attack. + * + * The order of procs called is: + * * [/atom/proc/tool_act] on the target. If it returns TRUE, the chain will be stopped. + * * [/obj/item/proc/pre_attack] on src. If this returns TRUE, the chain will be stopped. + * * [/atom/proc/attackby] on the target. If it returns TRUE, the chain will be stopped. + * * [/obj/item/proc/afterattack]. The return value does not matter. + */ /obj/item/proc/melee_attack_chain(mob/user, atom/target, params) - if(!tool_attack_chain(user, target) && pre_attack(target, user, params)) - // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) - var/resolved = target.attackby(src, user, params) - if(!resolved && target && !QDELETED(src)) - afterattack(target, user, 1, params) - -//Checks if the item can work as a tool, calling the appropriate tool behavior on the target -/obj/item/proc/tool_attack_chain(mob/user, atom/target) - if(!tool_behaviour) - return FALSE - - return target.tool_act(user, src, tool_behaviour) + if(tool_behaviour && target.tool_act(user, src, tool_behaviour)) + return TRUE + if(pre_attack(target, user, params)) + return TRUE + if(target.attackby(src,user, params)) + return TRUE + if(QDELETED(src)) + stack_trace("An item got deleted while performing an item attack and did not stop melee_attack_chain.") + return TRUE + if(QDELETED(target)) + stack_trace("The target of an item attack got deleted and melee_attack_chain was not stopped.") + return TRUE + return afterattack(target, user, TRUE, params) -// Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. +/// Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. /obj/item/proc/attack_self(mob/user) - if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_SELF, user) & COMPONENT_NO_INTERACT) - return + if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_SELF, user) & COMPONENT_CANCEL_ATTACK_CHAIN) + return TRUE interact(user) +/** + * Called on the item before it hits something + * + * Arguments: + * * atom/A - The atom about to be hit + * * mob/living/user - The mob doing the htting + * * params - click params such as alt/shift etc + * + * See: [/obj/item/proc/melee_attack_chain] + */ /obj/item/proc/pre_attack(atom/A, mob/living/user, params) //do stuff before attackby! - if(SEND_SIGNAL(src, COMSIG_ITEM_PRE_ATTACK, A, user, params) & COMPONENT_NO_ATTACK) - return FALSE - return TRUE //return FALSE to avoid calling attackby after this proc does stuff - -// No comment + if(SEND_SIGNAL(src, COMSIG_ITEM_PRE_ATTACK, A, user, params) & COMPONENT_CANCEL_ATTACK_CHAIN) + return TRUE + return FALSE //return TRUE to avoid calling attackby after this proc does stuff + +/** + * Called on an object being hit by an item + * + * Arguments: + * * obj/item/W - The item hitting this atom + * * mob/user - The wielder of this item + * * params - click params such as alt/shift etc + * + * See: [/obj/item/proc/melee_attack_chain] + */ /atom/proc/attackby(obj/item/W, mob/user, params) if(SEND_SIGNAL(src, COMSIG_PARENT_ATTACKBY, W, user, params) & COMPONENT_NO_AFTERATTACK) return TRUE @@ -52,10 +80,20 @@ return return I.attack(src, user) - +/** + * Called from [/mob/living/attackby] + * + * Arguments: + * * mob/living/M - The mob being hit by this item + * * mob/living/user - The mob hitting with this item + */ /obj/item/proc/attack(mob/living/M, mob/living/user) - if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK, M, user) & COMPONENT_ITEM_NO_ATTACK) + var/signal_return = SEND_SIGNAL(src, COMSIG_ITEM_ATTACK, M, user) + if(signal_return & COMPONENT_CANCEL_ATTACK_CHAIN) + return TRUE + if(signal_return & COMPONENT_SKIP_ATTACK) return + SEND_SIGNAL(user, COMSIG_MOB_ITEM_ATTACK, M, user) SEND_SIGNAL(M, COMSIG_MOB_ITEM_ATTACKBY, user, src) @@ -100,9 +138,9 @@ add_fingerprint(user) -//the equivalent of the standard version of attack() but for object targets. +/// The equivalent of the standard version of [/obj/item/proc/attack] but for object targets. /obj/item/proc/attack_obj(obj/O, mob/living/user) - if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_OBJ, O, user) & COMPONENT_NO_ATTACK_OBJ) + if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_OBJ, O, user) & COMPONENT_CANCEL_ATTACK_CHAIN) return if(item_flags & NOBLUDGEON) return @@ -110,6 +148,7 @@ user.do_attack_animation(O) O.attacked_by(src, user) +/// Called from [/obj/item/proc/attack_obj] and [/obj/item/proc/attack] if the attack succeeds /atom/proc/attacked_by() return @@ -150,8 +189,15 @@ else return ..() -// Proximity_flag is 1 if this afterattack was called on something adjacent, in your square, or on your person. -// Click parameters is the params string from byond Click() code, see that documentation. +/** + * Last proc in the [/obj/item/proc/melee_attack_chain] + * + * Arguments: + * * atom/target - The thing that was hit + * * mob/user - The mob doing the hitting + * * proximity_flag - is 1 if this afterattack was called on something adjacent, in your square, or on your person. + * * click_parameters - is the params string from byond [/atom/proc/Click] code, see that documentation. + */ /obj/item/proc/afterattack(atom/target, mob/user, proximity_flag, click_parameters) SEND_SIGNAL(src, COMSIG_ITEM_AFTERATTACK, target, user, proximity_flag, click_parameters) SEND_SIGNAL(user, COMSIG_MOB_ITEM_AFTERATTACK, target, src, proximity_flag, click_parameters) diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index deb9ec5137160..899255956d71c 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -47,7 +47,7 @@ // Oh by the way this didn't work with old click code which is why clicking shit didn't spam you /atom/proc/attack_ghost(mob/dead/observer/user) - if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_GHOST, user) & COMPONENT_NO_ATTACK_HAND) + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_GHOST, user) & COMPONENT_CANCEL_ATTACK_CHAIN) return TRUE if(user.client) if(user.gas_scan && atmosanalyzer_scan(user, src)) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index e2a4f96ce9e32..21bd7205bf3f4 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -28,12 +28,12 @@ SEND_SIGNAL(src, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, A) A.attack_hand(src) -//Return TRUE to cancel other attack hand effects that respect it. +/// Return TRUE to cancel other attack hand effects that respect it. /atom/proc/attack_hand(mob/user) . = FALSE if(!(interaction_flags_atom & INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND)) add_fingerprint(user) - if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_HAND, user) & COMPONENT_NO_ATTACK_HAND) + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_HAND, user) & COMPONENT_CANCEL_ATTACK_CHAIN) . = TRUE if(interaction_flags_atom & INTERACT_ATOM_ATTACK_HAND) . = _try_interact(user) @@ -95,14 +95,16 @@ /mob/living/carbon/human/RangedAttack(atom/A, mouseparams) . = ..() + if(.) + return if(gloves) var/obj/item/clothing/gloves/G = gloves if(istype(G) && G.Touch(A,0)) // for magic gloves - return + return TRUE if(isturf(A) && get_dist(src,A) <= 1) - src.Move_Pulled(A) - return + Move_Pulled(A) + return TRUE /* Animals & All Unspecified @@ -134,7 +136,7 @@ A.attack_paw(src) /atom/proc/attack_paw(mob/user) - if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_PAW, user) & COMPONENT_NO_ATTACK_HAND) + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_PAW, user) & COMPONENT_CANCEL_ATTACK_CHAIN) return TRUE return FALSE diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 095fc5bb1f8ef..3d21335141266 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -4,52 +4,68 @@ This needs more thinking out, but I might as well. */ -/* - Telekinetic attack: - - By default, emulate the user's unarmed attack -*/ - #define TK_MAXRANGE 15 +/** + * Telekinesis attack act, happens when the TK user clicks on a non-adjacent target in range. + * + * * By default, emulates the user's unarmed attack. + * * Called indirectly by the `COMSIG_MOB_ATTACK_RANGED` signal. + * * Returns `COMPONENT_CANCEL_ATTACK_CHAIN` when it performs any action, to further acts on the attack chain. + */ /atom/proc/attack_tk(mob/user) if(user.stat || !tkMaxRangeCheck(user, src)) return new /obj/effect/temp_visual/telekinesis(get_turf(src)) - user.UnarmedAttack(src,0) // attack_hand, attack_paw, etc add_hiddenprint(user) - return + user.UnarmedAttack(src, FALSE) // attack_hand, attack_paw, etc + return COMPONENT_CANCEL_ATTACK_CHAIN /obj/attack_tk(mob/user) if(user.stat) return if(anchored) return ..() - attack_tk_grab(user) + return attack_tk_grab(user) +/obj/item/attack_tk(mob/user) + if(user.stat) + return + return attack_tk_grab(user) + +/** + * Telekinesis object grab act. + * + * * Called by `/obj/attack_tk()`. + * * Returns `COMPONENT_CANCEL_ATTACK_CHAIN` when it performs any action, to further acts on the attack chain. + */ /obj/proc/attack_tk_grab(mob/user) var/obj/item/tk_grab/O = new(src) O.tk_user = user - if(O.focus_object(src)) - user.put_in_active_hand(O) - add_hiddenprint(user) + if(!O.focus_object(src)) + return + user.put_in_active_hand(O) + add_hiddenprint(user) + return COMPONENT_CANCEL_ATTACK_CHAIN /mob/attack_tk(mob/user) return -/* - This is similar to item attack_self, but applies to anything - that you can grab with a telekinetic grab. - - It is used for manipulating things at range, for example, opening and closing closets. - There are not a lot of defaults at this time, add more where appropriate. -*/ - +/** + * Telekinesis item attack_self act. + * + * * This is similar to item attack_self, but applies to anything that you can grab with a telekinetic grab. + * * It is used for manipulating things at range, for example, opening and closing closets.. + * * Defined at the `/atom` level but only used at the `/obj/item` one. + * * Returns `COMPONENT_CANCEL_ATTACK_CHAIN` when it performs any action, to further acts on the attack chain. + */ /atom/proc/attack_self_tk(mob/user) return + /obj/item/attack_self_tk(mob/user) - attack_self(user) + if(attack_self(user)) + return COMPONENT_CANCEL_ATTACK_CHAIN /* @@ -109,25 +125,31 @@ /obj/item/tk_grab/attack_self(mob/user) if(!focus) return - if(QDELETED(focus)) + if(QDELING(focus)) qdel(src) return - focus.attack_self_tk(user) + if(focus.attack_self_tk(user) & COMPONENT_CANCEL_ATTACK_CHAIN) + . = TRUE update_icon() /obj/item/tk_grab/afterattack(atom/target, mob/living/carbon/user, proximity, params)//TODO: go over this . = ..() + if(.) + return + if(!target || !user) return if(!focus) focus_object(target) - return - else if(!check_if_focusable(focus)) + return TRUE + + if(!check_if_focusable(focus)) return if(target == focus) - target.attack_self_tk(user) + if(target.attack_self_tk(user) & COMPONENT_CANCEL_ATTACK_CHAIN) + . = TRUE update_icon() return @@ -142,16 +164,17 @@ if(!isturf(target) && isitem(focus) && target.Adjacent(focus)) apply_focus_overlay() var/obj/item/I = focus - I.melee_attack_chain(tk_user, target, params) //isn't copying the attack chain fun. we should do it more often. + . = I.melee_attack_chain(tk_user, target, params) //isn't copying the attack chain fun. we should do it more often. if(check_if_focusable(focus)) focus.do_attack_animation(target, null, focus) else - + . = TRUE apply_focus_overlay() focus.throw_at(target, 10, 1,user) user.changeNext_move(CLICK_CD_MELEE) update_icon() + /proc/tkMaxRangeCheck(mob/user, atom/target) var/d = get_dist(user, target) if(d > TK_MAXRANGE) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index e01c21f14777c..9b32998314a0b 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -594,7 +594,7 @@ SUBSYSTEM_DEF(job) /datum/controller/subsystem/job/proc/LoadJobs() var/jobstext = rustg_file_read("[global.config.directory]/jobs.txt") for(var/datum/job/J in occupations) - if(J.flag == GIMMICK || J.gimmick) //gimmick job slots are dependant on random maint + if(J.gimmick) //gimmick job slots are dependant on random maint continue var/regex/jobs = new("[J.title]=(-1|\\d+),(-1|\\d+)") if(jobs.Find(jobstext)) diff --git a/code/controllers/subsystem/processing/digital_clock.dm b/code/controllers/subsystem/processing/digital_clock.dm new file mode 100644 index 0000000000000..6981e785d1c3c --- /dev/null +++ b/code/controllers/subsystem/processing/digital_clock.dm @@ -0,0 +1,5 @@ +/// The subsystem used to tick digital clocks +PROCESSING_SUBSYSTEM_DEF(digital_clock) + name = "Digital Clocks" + flags = SS_NO_INIT|SS_BACKGROUND|SS_KEEP_TIMING + wait = 1 SECONDS diff --git a/code/datums/components/aiming.dm b/code/datums/components/aiming.dm index b968656ff4ce3..aa254eabdf982 100644 --- a/code/datums/components/aiming.dm +++ b/code/datums/components/aiming.dm @@ -334,7 +334,7 @@ AIMING_DROP_WEAPON means they selected the "drop your weapon" command /datum/component/aiming/proc/aim_react_act(choice) if(choice == SURRENDER) - target.emote(SURRENDER) + target.emote(SURRENDER,intentional = TRUE) QDEL_NULL(choice_menu_target) // Shows a crosshair effect when aiming at a target diff --git a/code/datums/components/buffer.dm b/code/datums/components/buffer.dm index 09855e9dcac07..a5b4052792a3d 100644 --- a/code/datums/components/buffer.dm +++ b/code/datums/components/buffer.dm @@ -27,7 +27,7 @@ /datum/component/buffer/proc/intercept_attack(datum/source, atom/attack_target, mob/user, params) SIGNAL_HANDLER if ((SEND_SIGNAL(attack_target, COMSIG_PARENT_RECIEVE_BUFFER, user, target, parent) & COMPONENT_BUFFER_RECIEVED)) - return COMPONENT_NO_ATTACK + return COMPONENT_CANCEL_ATTACK_CHAIN return NONE /datum/component/buffer/proc/examine(datum/source, mob/user, list/examine_list) @@ -42,7 +42,7 @@ flush_buffer() if (user) to_chat(user, "You flush the buffer of [source]!") - return COMPONENT_NO_INTERACT + return COMPONENT_CANCEL_ATTACK_CHAIN /datum/component/buffer/proc/populate_buffer(datum/source, datum/buffer_entity) SIGNAL_HANDLER diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index ced03d367abaa..d281865081aa4 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -34,16 +34,16 @@ if(user.a_intent == INTENT_HARM && M.stat == DEAD && (M.butcher_results || M.guaranteed_butcher_results)) //can we butcher it? if(butchering_enabled && (can_be_blunt || source.is_sharp())) INVOKE_ASYNC(src, PROC_REF(startButcher), source, M, user) - return COMPONENT_ITEM_NO_ATTACK + return COMPONENT_CANCEL_ATTACK_CHAIN if(user.a_intent == INTENT_GRAB && ishuman(M) && source.is_sharp()) var/mob/living/carbon/human/H = M if(H.has_status_effect(/datum/status_effect/neck_slice)) user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", 1, \ "Their neck has already been already cut, you can't make the bleeding any worse!") - return COMPONENT_ITEM_NO_ATTACK + return COMPONENT_CANCEL_ATTACK_CHAIN if((H.health <= H.crit_threshold || (user.pulling == H && user.grab_state >= GRAB_NECK) || H.IsSleeping())) // Only sleeping, neck grabbed, or crit, can be sliced. INVOKE_ASYNC(src, PROC_REF(startNeckSlice), source, H, user) - return COMPONENT_ITEM_NO_ATTACK + return COMPONENT_CANCEL_ATTACK_CHAIN /datum/component/butchering/proc/startButcher(obj/item/source, mob/living/M, mob/living/user) to_chat(user, "You begin to butcher [M]...") diff --git a/code/datums/components/deployable.dm b/code/datums/components/deployable.dm index f2b031c58b8c5..5202dbae3701c 100644 --- a/code/datums/components/deployable.dm +++ b/code/datums/components/deployable.dm @@ -58,7 +58,7 @@ /datum/component/deployable/proc/on_attack_self(datum/source, mob/user) SIGNAL_HANDLER INVOKE_ASYNC(src, PROC_REF(try_deploy), user, user.loc) - return COMPONENT_NO_INTERACT + return COMPONENT_CANCEL_ATTACK_CHAIN /datum/component/deployable/proc/on_afterattack(datum/source, atom/movable/target, mob/user, proximity_flag, params) SIGNAL_HANDLER diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm index 5bc4612806422..a8969ec2fecd2 100644 --- a/code/datums/components/embedded.dm +++ b/code/datums/components/embedded.dm @@ -251,7 +251,7 @@ return INVOKE_ASYNC(src, PROC_REF(pluckOut), user, 1, 2, "pulling out") - return COMPONENT_NO_ATTACK_HAND + return COMPONENT_CANCEL_ATTACK_CHAIN /datum/component/embedded/proc/checkRemoval(mob/living/carbon/victim, obj/item/I, mob/user) SIGNAL_HANDLER diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 90f1852d847c3..6e3b8cee429d7 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -77,12 +77,20 @@ msg += "I love life!\n" msg += "Moodlets:\n"//All moodlets - if(mood_events.len) - for(var/i in mood_events) - var/datum/mood_event/event = mood_events[i] - msg += "[event.description]\n" - else - msg += "I don't have much of a reaction to anything right now.\n" + var/mood_msg = "" + var/thought_msg = "" + for(var/i in mood_events) + var/datum/mood_event/event = mood_events[i] + if(event.mood_change) + mood_msg += "[event.description]\n" + else + thought_msg += "[event.description]\n" + if(!mood_msg) + msg += "I don't have much of a reaction to anything right now.\n" + msg += mood_msg + if(thought_msg) + msg += "Thoughts:\n" + msg += thought_msg to_chat(user || parent, EXAMINE_BLOCK(msg)) /datum/component/mood/proc/update_mood() //Called whenever a mood event is added or removed @@ -217,37 +225,24 @@ else sanity = amount - var/mob/living/master = parent switch(sanity) if(SANITY_INSANE to SANITY_CRAZY) setInsanityEffect(MAJOR_INSANITY_PEN) - master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/insane) - master.add_actionspeed_modifier(/datum/actionspeed_modifier/low_sanity) sanity_level = 6 if(SANITY_CRAZY to SANITY_UNSTABLE) setInsanityEffect(MINOR_INSANITY_PEN) - master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/crazy) - master.add_actionspeed_modifier(/datum/actionspeed_modifier/low_sanity) sanity_level = 5 if(SANITY_UNSTABLE to SANITY_DISTURBED) setInsanityEffect(0) - master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/disturbed) - master.add_actionspeed_modifier(/datum/actionspeed_modifier/low_sanity) sanity_level = 4 if(SANITY_DISTURBED to SANITY_NEUTRAL) setInsanityEffect(0) - master.remove_movespeed_modifier(MOVESPEED_ID_SANITY) - master.remove_actionspeed_modifier(ACTIONSPEED_ID_SANITY) sanity_level = 3 if(SANITY_NEUTRAL+1 to SANITY_GREAT+1) //shitty hack but +1 to prevent it from responding to super small differences setInsanityEffect(0) - master.remove_movespeed_modifier(MOVESPEED_ID_SANITY) - master.add_actionspeed_modifier(/datum/actionspeed_modifier/high_sanity) sanity_level = 2 if(SANITY_GREAT+1 to INFINITY) setInsanityEffect(0) - master.remove_movespeed_modifier(MOVESPEED_ID_SANITY) - master.add_actionspeed_modifier(/datum/actionspeed_modifier/high_sanity) sanity_level = 1 update_mood_icon() diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index 53bba3c18a93a..b4ed7cb592bb4 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -185,7 +185,7 @@ if(!isitem(O) || !click_gather || SEND_SIGNAL(O, COMSIG_CONTAINS_STORAGE)) return FALSE - . = COMPONENT_NO_ATTACK + . = COMPONENT_CANCEL_ATTACK_CHAIN if(locked) var/atom/host = parent host.balloon_alert(M, "[host] is locked.") @@ -779,7 +779,7 @@ if(user.active_storage == src && A.loc == user) //if you're already looking inside the storage item user.active_storage.close(user) close(user) - . = COMPONENT_NO_ATTACK_HAND + . = COMPONENT_CANCEL_ATTACK_CHAIN return if(rustle_sound) @@ -788,18 +788,18 @@ if(ishuman(user)) var/mob/living/carbon/human/H = user if(H.l_store == A && !H.get_active_held_item()) //Prevents opening if it's in a pocket. - . = COMPONENT_NO_ATTACK_HAND + . = COMPONENT_CANCEL_ATTACK_CHAIN INVOKE_ASYNC(H, TYPE_PROC_REF(/mob, put_in_hands), A) H.l_store = null return if(H.r_store == A && !H.get_active_held_item()) - . = COMPONENT_NO_ATTACK_HAND + . = COMPONENT_CANCEL_ATTACK_CHAIN INVOKE_ASYNC(H, TYPE_PROC_REF(/mob, put_in_hands), A) H.r_store = null return if(A.loc == user) - . = COMPONENT_NO_ATTACK_HAND + . = COMPONENT_CANCEL_ATTACK_CHAIN if(locked) var/atom/host = parent host.balloon_alert(user, "[host] is locked.") diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm index dc317f773a8db..85c49f68d8b67 100644 --- a/code/datums/components/uplink.dm +++ b/code/datums/components/uplink.dm @@ -141,7 +141,7 @@ if(user) INVOKE_ASYNC(src, PROC_REF(ui_interact), user) // an unlocked uplink blocks also opening the PDA or headset menu - return COMPONENT_NO_INTERACT + return COMPONENT_CANCEL_ATTACK_CHAIN /datum/component/uplink/ui_state(mob/user) diff --git a/code/datums/diseases/advance/symptoms/fever.dm b/code/datums/diseases/advance/symptoms/fever.dm index 8bc959bea097b..042a34f2fdf11 100644 --- a/code/datums/diseases/advance/symptoms/fever.dm +++ b/code/datums/diseases/advance/symptoms/fever.dm @@ -50,7 +50,6 @@ Bonus unsafe = TRUE if(A.resistance >= 10) power = 2.5 - set_body_temp(A.affected_mob, A) /datum/symptom/fever/Activate(datum/disease/advance/A) if(!..()) @@ -62,6 +61,7 @@ Bonus to_chat(M, "[pick("You feel hot.", "You feel like you're burning.")]") else to_chat(M, "[pick("You feel too hot.", "You feel like your blood is boiling.")]") + set_body_temp(A.affected_mob, A) /** * set_body_temp Sets the body temp change @@ -72,7 +72,10 @@ Bonus * * datum/disease/advance/A The disease applying the symptom */ /datum/symptom/fever/proc/set_body_temp(mob/living/M, datum/disease/advance/A) - M.add_body_temperature_change("fever", (6 * power) * A.stage) + if(!unsafe) + M.add_body_temperature_change("fever", max((6 * power) * A.stage, (BODYTEMP_HEAT_DAMAGE_LIMIT - 1))) + else + M.add_body_temperature_change("fever", max((6 * power) * A.stage, (BODYTEMP_HEAT_DAMAGE_LIMIT + 20))) /// Update the body temp change based on the new stage /datum/symptom/fever/on_stage_change(datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/shivering.dm b/code/datums/diseases/advance/symptoms/shivering.dm index 6dd8738936443..f55d3097f5a4a 100644 --- a/code/datums/diseases/advance/symptoms/shivering.dm +++ b/code/datums/diseases/advance/symptoms/shivering.dm @@ -47,7 +47,6 @@ Bonus unsafe = TRUE if(A.stage_rate >= 10) power = 2.5 - set_body_temp(A.affected_mob, A) /datum/symptom/shivering/Activate(datum/disease/advance/A) if(!..()) @@ -59,6 +58,7 @@ Bonus to_chat(M, "[pick("You feel cold.", "You shiver.")]") else to_chat(M, "[pick("You feel your blood run cold.", "You feel ice in your veins.", "You feel like you can't heat up.", "You shiver violently." )]") + set_body_temp(A.affected_mob, A) /** * set_body_temp Sets the body temp change @@ -69,7 +69,10 @@ Bonus * * datum/disease/advance/A The disease applying the symptom */ /datum/symptom/shivering/proc/set_body_temp(mob/living/M, datum/disease/advance/A) - M.add_body_temperature_change("shivering", -((6 * power) * A.stage)) + if(!unsafe) + M.add_body_temperature_change("shivering", max(-((6 * power) * A.stage), (BODYTEMP_COLD_DAMAGE_LIMIT + 1))) + else + M.add_body_temperature_change("shivering", max(-((6 * power) * A.stage), (BODYTEMP_COLD_DAMAGE_LIMIT - 20))) /// Update the body temp change based on the new stage /datum/symptom/shivering/on_stage_change(datum/disease/advance/A) diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 31cedace325bd..9d629931bd06d 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -14,11 +14,6 @@ description = "CAN'T... BREATHE..." mood_change = -12 -/datum/mood_event/burnt_thumb - description = "I shouldn't play with lighters..." - mood_change = -1 - timeout = 2 MINUTES - /datum/mood_event/cold description = "It's way too cold in here." mood_change = -5 @@ -27,16 +22,6 @@ description = "It's getting hot in here." mood_change = -5 -/datum/mood_event/creampie - description = "I've been creamed. Tastes like pie flavor." - mood_change = -2 - timeout = 3 MINUTES - -/datum/mood_event/slipped - description = "I slipped. I should be more careful next time..." - mood_change = -2 - timeout = 3 MINUTES - /datum/mood_event/eye_stab description = "AHHH my eyes, that was really sharp!" mood_change = -4 @@ -86,29 +71,6 @@ description = "Pull it out!" mood_change = -7 -/datum/mood_event/table - description = "Someone threw me on a table!" - mood_change = -2 - timeout = 2 MINUTES - -/datum/mood_event/table/add_effects() - var/datum/component/L = owner //owner is lying about its type, its component/mood while pretending to be mob. You must cast it to use it properly - var/mob/living/T = L.parent - if(ishuman(T)) - var/mob/living/carbon/human/H = T - if(iscatperson(H) || (istype(H.getorganslot(ORGAN_SLOT_EARS), /obj/item/organ/ears/cat) && istype(H.getorganslot(ORGAN_SLOT_TAIL), /obj/item/organ/tail/cat))) - var/obj/item/organ/tail/tail = H.getorganslot(ORGAN_SLOT_TAIL) - if(tail) - tail.set_wagging(H, TRUE) - addtimer(CALLBACK(tail, TYPE_PROC_REF(/obj/item/organ/tail, set_wagging), H, FALSE), 3 SECONDS) - description = "They want to play on the table!" - mood_change = 2 - -/datum/mood_event/table_headsmash - description = "My fucking head, that hurt..." - mood_change = -3 - timeout = 3 MINUTES - /datum/mood_event/brain_damage mood_change = -3 @@ -138,20 +100,6 @@ mood_change = -4 timeout = 2 MINUTES -/datum/mood_event/jittery - description = "I'm nervous and on edge and I can't stand still!!!" - mood_change = -2 - -/datum/mood_event/vomit - description = "I just threw up. Gross." - mood_change = -2 - timeout = 2 MINUTES - -/datum/mood_event/vomitself - description = "I just threw up all over myself. This is disgusting." - mood_change = -4 - timeout = 3 MINUTES - /datum/mood_event/painful_medicine description = "Medicine may be good for me but right now it stings like hell." mood_change = -5 @@ -162,11 +110,6 @@ mood_change = -4 timeout = 4 MINUTES -/datum/mood_event/loud_gong - description = "That loud gong noise really hurt my ears!" - mood_change = -3 - timeout = 2 MINUTES - /datum/mood_event/notcreeping description = "The voices are not happy, and they painfully contort my thoughts into getting back on task." mood_change = -6 @@ -202,35 +145,16 @@ /datum/mood_event/sad_empath/add_effects(mob/sadtarget) description = "[sadtarget.name] seems upset..." -/datum/mood_event/artbad - description = "I've produced better art than that from my ass.\n" - mood_change = -2 - timeout = 2 MINUTES - /datum/mood_event/sacrifice_bad description ="Those darn savages!" mood_change = -5 timeout = 2 MINUTES -/datum/mood_event/artbad - description = "I've produced better art than that from my ass." - mood_change = -2 - timeout = 2 MINUTES - /datum/mood_event/gates_of_mansus description = "LIVING IN A PERFORMANCE IS WORSE THAN DEATH" mood_change = -25 timeout = 4 MINUTES -//These are unused so far but I want to remember them to use them later -/datum/mood_event/cloned_corpse - description = "I recently saw my own corpse..." - mood_change = -6 - -/datum/mood_event/surgery - description = "HE'S CUTTING ME OPEN!!!" - mood_change = -8 - /datum/mood_event/nanite_sadness description = "+++++++HAPPINESS SUPPRESSION+++++++" mood_change = -7 @@ -241,17 +165,11 @@ /datum/mood_event/sec_insulated_gloves description = "I look like an Assistant..." mood_change = -1 - /datum/mood_event/burnt_wings description = "MY PRECIOUS WINGS!!!" mood_change = -10 timeout = 10 MINUTES -/datum/mood_event/aquarium_negative - description = "All the fish are dead..." - mood_change = -3 - timeout = 1.5 MINUTES - /datum/mood_event/feline_dysmorphia description = "I'm so ugly. I wish I was cuter!" mood_change = -10 @@ -273,3 +191,8 @@ /datum/mood_event/saw_holopara_death/add_effects(name) description = "Oh god, [name] just painfully turned to dust... What an horrifying sight..." + +/datum/mood_event/loud_gong + description = "That loud gong noise really hurt my ears!" + mood_change = -3 + timeout = 2 MINUTES diff --git a/code/datums/mood_events/generic_neutral_events.dm b/code/datums/mood_events/generic_neutral_events.dm new file mode 100644 index 0000000000000..a0b5e28b850a0 --- /dev/null +++ b/code/datums/mood_events/generic_neutral_events.dm @@ -0,0 +1,66 @@ +/datum/mood_event/burnt_thumb + description = "I shouldn't play with lighters..." + timeout = 1 MINUTES + +/datum/mood_event/creampie + description = "I've been creamed. Tastes like pie flavor." + timeout = 1 MINUTES + +/datum/mood_event/slipped + description = "I slipped. I should be more careful next time..." + timeout = 1 MINUTES + +/datum/mood_event/table + description = "Someone threw me on a table!" + timeout = 1 MINUTES + +/datum/mood_event/table_headsmash + description = "My fucking head, that hurt..." + timeout = 1 MINUTES + +/datum/mood_event/jittery + description = "I'm nervous and on edge and I can't stand still!!!" + +/datum/mood_event/vomit + description = "I just threw up. Gross." + timeout = 1 MINUTES + +/datum/mood_event/vomitself + description = "I just threw up all over myself. This is disgusting." + timeout = 1 MINUTES + +/datum/mood_event/aquarium_negative + description = "All the fish are dead..." + timeout = 1 MINUTES + +/datum/mood_event/hug + description = "Hugs are nice." + timeout = 1 MINUTES + +/datum/mood_event/warmhug + description = "Warm cozy hugs are the best!\n" + timeout = 1 MINUTES +/datum/mood_event/book_nerd + description = "I have recently read a book." + timeout = 1 MINUTES +/datum/mood_event/exercise + description = "Working out releases those endorphins!" + timeout = 1 MINUTES +/datum/mood_event/pet_animal + description = "Animals are adorable! I can't stop petting them!" + timeout = 1 MINUTES +/datum/mood_event/animal_play + description = "Aww, it's having fun!" + timeout = 1 MINUTES +/datum/mood_event/honk + description = "Maybe clowns aren't so bad after all. Honk!" + timeout = 1 MINUTES +/datum/mood_event/artok + description = "It's nice to see people are making art around here.\n" + timeout = 1 MINUTES +/datum/mood_event/artbad + description = "I've produced better art than that from my ass.\n" + timeout = 1 MINUTES +/datum/mood_event/aquarium_positive + description = "Watching fish in aquarium is calming." + timeout = 1 MINUTES diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index e0bf73adb3b64..befcfc21427fb 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -1,7 +1,3 @@ -/datum/mood_event/hug - description = "Hugs are nice." - mood_change = 1 - timeout = 2 MINUTES /datum/mood_event/betterhug description = "Someone was very nice to me." @@ -19,16 +15,6 @@ /datum/mood_event/besthug/add_effects(mob/friend) description = "[friend.name] is great to be around, [friend.p_they()] makes me feel so happy!" -/datum/mood_event/warmhug - description = "Warm cozy hugs are the best!\n" - mood_change = 1 - timeout = 2 MINUTES - -/datum/mood_event/headpat - description = "Headpats are lovely!" - mood_change = 1 - timeout = 2 MINUTES - /datum/mood_event/arcade description = "I beat the arcade game!" mood_change = 3 @@ -39,37 +25,6 @@ mood_change = 3 timeout = 8 MINUTES -/datum/mood_event/book_nerd - description = "I have recently read a book." - mood_change = 1 - timeout = 5 MINUTES - -/datum/mood_event/exercise - description = "Working out releases those endorphins!" - mood_change = 2 - timeout = 5 MINUTES - -/datum/mood_event/pet_animal - description = "Animals are adorable! I can't stop petting them!" - mood_change = 2 - timeout = 5 MINUTES - -/datum/mood_event/pet_animal/add_effects(mob/animal) - description = "\The [animal.name] is adorable! I can't stop petting [animal.p_them()]!" - -/datum/mood_event/animal_play - description = "Aww, it's having fun!" - mood_change = 2 - timeout = 3 MINUTES - -/datum/mood_event/animal_play/add_effects(mob/animal) - description = "Aww, [animal.name]'s having fun!" - -/datum/mood_event/honk - description = "Maybe clowns aren't so bad after all. Honk!" - mood_change = 2 - timeout = 4 MINUTES - /datum/mood_event/perform_cpr description = "It feels good to save a life." mood_change = 6 @@ -163,11 +118,6 @@ description = "The shoes are a clown's legacy, I never want to take them off!" mood_change = 5 -/datum/mood_event/artok - description = "It's nice to see people are making art around here.\n" - mood_change = 2 - timeout = 2 MINUTES - /datum/mood_event/artgood description = "What a thought-provoking piece of art. I'll remember that for a while.\n" mood_change = 3 @@ -223,6 +173,14 @@ description = "I feel proud to show my remembrance of the many who have died to ensure that I have freedom." mood_change = 1 +/datum/mood_event/sec_black_gloves + description = "Black gloves look good on me." + mood_change = 1 + +/datum/mood_event/assistant_insulated_gloves + description = "Finally got my hands on a good pair of gloves!" + mood_change = 1 + /datum/mood_event/funny_prank description = "That was a funny prank, clown!" mood_change = 2 @@ -236,19 +194,6 @@ mood_change = param[1] description = param[2] -/datum/mood_event/sec_black_gloves - description = "Black gloves look good on me." - mood_change = 1 - -/datum/mood_event/assistant_insulated_gloves - description = "Finally got my hands on a good pair of gloves!" - mood_change = 1 - -/datum/mood_event/aquarium_positive - description = "Watching fish in aquarium is calming." - mood_change = 3 - timeout = 1.5 MINUTES - /datum/mood_event/toxoplasmosis description = "I really like being around cats!" mood_change = 2 diff --git a/code/datums/mutable_appearance.dm b/code/datums/mutable_appearance.dm index f6e29ab02cf54..b194b34de7e99 100644 --- a/code/datums/mutable_appearance.dm +++ b/code/datums/mutable_appearance.dm @@ -26,11 +26,12 @@ /// Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the [EMISSIVE_COLOR]. /// Setting the layer is highly important -/proc/emissive_appearance(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, appearance_flags = NONE) +/proc/emissive_appearance(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, appearance_flags = NONE, filters) // We actually increase the layer ever so slightly so that emissives overpower blockers. // We do this because emissives and blockers can be applied to the same item and in that case // we do not want the item to block its own emissive overlay. var/mutable_appearance/appearance = mutable_appearance(icon, icon_state, layer + 0.01, EMISSIVE_PLANE, alpha, appearance_flags | EMISSIVE_APPEARANCE_FLAGS) + appearance.filters = filters var/list/found = GLOB.emissive_color[alpha+1] if (!found) found = GLOB.emissive_color[alpha+1] = list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,alpha/255, 1,1,1,0) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index d2f115db8aa2b..95d573a3d8283 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -568,6 +568,9 @@ owner.set_blurriness(0) owner.restore_blood() owner.bodytemperature = owner.get_body_temp_normal() + if(istype(owner, /mob/living/carbon/human)) + var/mob/living/carbon/human/humi = owner + humi.coretemperature = humi.get_body_temp_normal() owner.restoreEars() duration = rand(150, 450) * power return TRUE diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index 22c378658fa22..6c4397e7af0d2 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -24,7 +24,9 @@ var/area_type = /area/space //Types of area to affect var/protect_indoors = FALSE // set to TRUE to protect indoor areas - var/list/impacted_areas = list() //Areas to be affected by the weather, calculated when the weather begins + /// Areas to be affected by the weather, calculated when the weather begins. + /// * If you need to update this list outside of this datum, you might be doing wrong. use update_areas(new_list) + VAR_PRIVATE/list/impacted_areas = list() var/list/protected_areas = list()//Areas that are protected and excluded from the affected areas. var/impacted_z_levels // The list of z-levels that this weather is actively affecting @@ -33,7 +35,10 @@ var/aesthetic = FALSE //If the weather has no purpose other than looks var/immunity_type = "storm" //Used by mobs to prevent them from being affected by the weather - var/stage = END_STAGE //The stage of the weather, from 1-4 + /// The stage of the weather, from 1-4 + var/stage = END_STAGE + /// takes the same value as stage by update_areas(). Used to prevent overlay error. + VAR_PRIVATE/overlay_stage // These are read by the weather subsystem and used to determine when and where to run the weather. var/probability = 0 // Weight amongst other eligible weather. If zero, will never happen randomly. @@ -48,6 +53,7 @@ var/mutable_appearance/cached_weather_sprite_start var/mutable_appearance/cached_weather_sprite_process var/mutable_appearance/cached_weather_sprite_end + var/mutable_appearance/cached_current_overlay // a quick access variable /datum/weather/New(z_levels) ..() @@ -148,41 +154,99 @@ /datum/weather/proc/weather_act(mob/living/L) //What effect does this weather have on the hapless mob? return -/datum/weather/proc/update_areas() - var/previous_overlay - var/new_overlay +/// * [Func A] If list/newly_given_areas = null, It will update area overlays to new weather stage overlay. Typically called by this datum itself. +/// * [Func B] If list/newly_given_areas is given + overlay is not changed, it will apply overlays to new areas, and remove old areas. +/// * [Func C] If list/newly_given_areas is given + overlay stage is changed, it will remove old overlay from old areas, and apply new overlay to new areas. +/datum/weather/proc/update_areas(list/newly_given_areas = null) + if(overlay_stage == stage && isnull(newly_given_areas)) + CRASH("update_areas() is called again while weather overlay is already set (and list/newly_given_areas doesn't exist). stage:[stage] / overlay_stage:[overlay_stage]") + overlay_stage = stage + + var/new_overlay = null switch(stage) if(STARTUP_STAGE) if(cached_weather_sprite_start) new_overlay = cached_weather_sprite_start - previous_overlay = TRUE // temporary value. see below. if(MAIN_STAGE) - if(cached_weather_sprite_start) - previous_overlay = cached_weather_sprite_start if(cached_weather_sprite_process) new_overlay = cached_weather_sprite_process if(WIND_DOWN_STAGE) - if(cached_weather_sprite_process) - previous_overlay = cached_weather_sprite_process if(cached_weather_sprite_end) new_overlay = cached_weather_sprite_end - if(END_STAGE) - if(cached_weather_sprite_end) - previous_overlay = cached_weather_sprite_end - new_overlay = TRUE // temporary value. see below. + var/is_overlay_same = (cached_current_overlay == new_overlay) + if(is_overlay_same && isnull(newly_given_areas) && isnull(cached_current_overlay) && isnull(new_overlay)) // changing null? meaningless + return - // we won't iterate all areas unnecesarily - if(!previous_overlay && !new_overlay) + //! [Func A] Standard update_areas. This will typically do the weather overlay change. + if(isnull(newly_given_areas)) + if(is_overlay_same) // we don't have to iterate + return + + // ugly if conditions, but optimisation. We don't want to do if() checks in for loop + if(cached_current_overlay && new_overlay) + for(var/area/each_area as anything in impacted_areas) + each_area.cut_overlay(cached_current_overlay) + each_area.add_overlay(new_overlay) + else if(cached_current_overlay) + for(var/area/each_area as anything in impacted_areas) + each_area.cut_overlay(cached_current_overlay) + else if(new_overlay) + for(var/area/each_area as anything in impacted_areas) + each_area.add_overlay(new_overlay) + + cached_current_overlay = new_overlay // remembers previous one return - // removing TRUE value because we don't want typecheck every iteration from for loop - if(previous_overlay == TRUE) - previous_overlay = null - if(new_overlay == TRUE) - new_overlay = null + if(!islist(newly_given_areas)) + CRASH("lsit/newly_given_areas has been given, but it's not a list()") + + + // From after this line, It means list/newly_given_areas has a list to update + // This will remove old areas, and overlay from list/impacted_areas + // and add a new overlay to new areas + // And list/impacted_areas will be updated with the new list + + if(is_overlay_same) + //! [Func B] overlays are the same, but we have new areas. + // * Calculate list + // * Early return if there's no list to iterate + // * If old_areas_to_remove exists, cut_overlay() for those + // * If new_areas_to_add exists, add_overlay() for those + var/list/old_areas_to_remove + var/list/new_areas_to_add + if(length(newly_given_areas)) + old_areas_to_remove = impacted_areas - newly_given_areas + new_areas_to_add = newly_given_areas - impacted_areas + /* + impacted_areas = list(A, B, C, D) + newly_given_areas = list(C, D, E, F) + + old_areas_to_remove = list(A, B) // we want to remove already existing overlay from this + new_areas_to_add = list(E, F) // and add the existing overlay to this + */ + + if(!length(new_areas_to_add) && !length(old_areas_to_remove)) // nope + return + + if(cached_current_overlay) // do the change only overlay exists. If there's no overlay, we'll just save list/newly_given_areas + for(var/area/each_old_area as anything in old_areas_to_remove) + each_old_area.cut_overlay(cached_current_overlay) + for(var/area/each_new_area as anything in new_areas_to_add) + each_new_area.add_overlay(cached_current_overlay) + impacted_areas = newly_given_areas.Copy() // this is now our new team + // Note: "new_areas_to_add" is not correct to copy. We just needed to apply cached overlay to new areas. + return - for(var/area/each_area as anything in impacted_areas) - if(previous_overlay) - each_area.cut_overlay(previous_overlay) + else + //! [Func C] different overlays, but also we have new areas + // * Removing old overlays from impacted_areas + // * Adding new overlays to new areas + if(cached_current_overlay) + for(var/area/each_old_area as anything in impacted_areas) + each_old_area.cut_overlay(cached_current_overlay) if(new_overlay) - each_area.add_overlay(new_overlay) + for(var/area/each_new_area as anything in newly_given_areas) + each_new_area.add_overlay(new_overlay) + cached_current_overlay = new_overlay + impacted_areas = newly_given_areas.Copy() // this is now our new team + return diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index f0b60282d5b1f..4eca7edafc33b 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -475,29 +475,12 @@ GLOBAL_LIST_EMPTY(teleportlocs) for(var/obj/machinery/light/L in src) L.update(TRUE, TRUE, TRUE) -/** - * Update the icon state of the area - * - * Im not sure what the heck this does, somethign to do with weather being able to set icon - * states on areas?? where the heck would that even display? - */ -/area/update_icon_state() - var/weather_icon - for(var/V in SSweather.processing) - var/datum/weather/W = V - if(W.stage != END_STAGE && (src in W.impacted_areas)) - W.update_areas() - weather_icon = TRUE - if(!weather_icon) - icon_state = null - return ..() /** * Update the icon of the area (overridden to always be null for space */ /area/space/update_icon_state() SHOULD_CALL_PARENT(FALSE) icon_state = null - return ..() /** * Returns int 1 or 0 if the area has power for the given channel diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 7b21dff633dfa..bd0a164f12229 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -101,6 +101,7 @@ to_chat(user, "You telekinetically remove [charging] from [src].") removecell() + return COMPONENT_CANCEL_ATTACK_CHAIN /obj/machinery/cell_charger/attack_ai(mob/user) return diff --git a/code/game/machinery/digital_clock.dm b/code/game/machinery/digital_clock.dm new file mode 100644 index 0000000000000..8793d113cabd7 --- /dev/null +++ b/code/game/machinery/digital_clock.dm @@ -0,0 +1,181 @@ +/obj/machinery/digital_clock + name = "digital clock" + desc = "A next-gen normal digital clock that tells the local time. Do not mistake it with shift time!" + icon_state = "digital_clock_base" + icon = 'icons/obj/digital_clock.dmi' + verb_say = "beeps" + verb_ask = "bloops" + verb_exclaim = "blares" + max_integrity = 250 + obj_integrity = 250 + density = FALSE + layer = ABOVE_WINDOW_LAYER + var/station_minutes + var/station_hours + +/obj/item/wallframe/digital_clock + name = "digital clock frame" + desc = "Used to build digital clocks, just secure to the wall." + icon_state = "digital_clock" + icon = 'icons/obj/wallframe.dmi' + custom_materials = list(/datum/material/iron = 700, /datum/material/glass = 400) + result_path = /obj/machinery/digital_clock + pixel_shift = -28 + +/obj/machinery/digital_clock/wrench_act(mob/living/user, obj/item/tool) + . = ..() + if(user.a_intent == INTENT_HARM) + return + to_chat(user, "You start unsecuring [name]...") + tool.play_tool_sound(src) + if(tool.use_tool(src, user, 6 SECONDS)) + playsound(loc, 'sound/items/deconstruct.ogg', 50, vary = TRUE) + to_chat(user, "You unsecure [name].") + deconstruct() + return ..() + +/obj/machinery/digital_clock/welder_act(mob/living/user, obj/item/tool) + . = ..() + if(user.a_intent == INTENT_HARM) + return + if(obj_integrity >= max_integrity) + balloon_alert(user, "it doesn't need repairs!") + return TRUE + to_chat(user, "You start to repair [name]...") + if(!tool.use_tool(src, user, 4 SECONDS, amount = 0, volume=50)) + return TRUE + to_chat(user, "You finish to repair [name]...") + obj_integrity = max_integrity + set_machine_stat(machine_stat & ~BROKEN) + update_appearance() + return TRUE + +/obj/machinery/digital_clock/multitool_act(mob/living/user, obj/item/tool) + . = ..() + if(user.a_intent == INTENT_HARM) + return + if(!(obj_flags & EMAGGED)) + return + to_chat(user, "You start resetting [name]...") + tool.play_tool_sound(src) + if(tool.use_tool(src, user, 6 SECONDS)) + playsound(loc, 'sound/items/deconstruct.ogg', 50, vary = TRUE) + to_chat(user, "You finish to reset [name]...") + obj_flags &= ~EMAGGED + return TRUE + +/obj/machinery/digital_clock/on_emag(mob/user) + ..() + to_chat(user, "You short the clock's timer!") + playsound(src, "sparks", 100, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) + do_sparks(3, cardinal_only = FALSE, source = src) + obj_flags |= EMAGGED + +/obj/machinery/digital_clock/deconstruct(disassembled = TRUE) + if(!(flags_1 & NODECONSTRUCT_1)) + if(disassembled) + new /obj/item/wallframe/digital_clock(loc) + else + new /obj/item/stack/sheet/iron(loc, 2) + new /obj/item/shard(loc) + new /obj/item/shard(loc) + qdel(src) + +/obj/machinery/digital_clock/Initialize(mapload) + . = ..() + START_PROCESSING(SSdigital_clock, src) + +/obj/machinery/digital_clock/Destroy() + STOP_PROCESSING(SSdigital_clock, src) + return ..() + +/obj/machinery/digital_clock/process() + if(machine_stat & NOPOWER) + return + update_time() + if((station_hours == 0 || station_hours == 12) && station_minutes == 0) + if(!TIMER_COOLDOWN_CHECK(src, COOLDOWN_CLOCK_WMCHIMES)) + playsound(src.loc, 'sound/machines/westminister_chimes.ogg', 75) + TIMER_COOLDOWN_START(src, COOLDOWN_CLOCK_WMCHIMES, 10 SECONDS) + update_appearance() + +/obj/machinery/digital_clock/update_appearance(updates=ALL) + . = ..() + if(machine_stat & (NOPOWER|BROKEN)) + set_light(0) + return + set_light(l_range = 1.5, l_power = 0.7, l_color = LIGHT_COLOR_BLUE) // blue light + +/obj/machinery/digital_clock/update_overlays() + . = ..() + if(machine_stat & (NOPOWER|BROKEN)) + return + . += update_time() + return . + +/obj/machinery/digital_clock/examine(mob/user) + . = ..() + var/live_time = station_time_timestamp(format = "hh:mm") + + if(obj_flags & EMAGGED) + . += "The time doesn't seem quite right!" + else + . += "The current station time is [live_time]." + +/obj/machinery/digital_clock/proc/update_time() + if(obj_flags & EMAGGED) + station_hours = rand(0, 99) + station_minutes = rand(0, 99) + else + station_hours = text2num(station_time_timestamp(format = "hh")) + station_minutes = text2num(station_time_timestamp(format = "mm")) + + // tenth / the '3' in '31' / 31 -> 3.1 -> 3 + var/station_minute_tenth = station_minutes >= 10 ? round(station_minutes * 0.1) : 0 + // one / the '1' in '31' / 31 -> 31 - (3 * 10) -> 31 - 30 -> 1 + var/station_minute_one = station_minutes - (station_minute_tenth * 10) + + // one / the '1' in '12' / 12 -> 1.2 -> 1 + var/station_hours_tenth = station_hours >= 10 ? round(station_hours * 0.1) : 0 + // tenth / the '2' in '12' / 12 -> 12 - (1 * 10) -> 12 - 10 -> 2 + var/station_hours_one = station_hours - (station_hours_tenth * 10) + + var/return_overlays = list() + + var/mutable_appearance/minute_one_overlay = mutable_appearance('icons/obj/digital_clock.dmi', "+[station_minute_one]") + minute_one_overlay.pixel_w = 0 + return_overlays += minute_one_overlay + + var/mutable_appearance/minute_tenth_overlay = mutable_appearance('icons/obj/digital_clock.dmi', "+[station_minute_tenth]") + minute_tenth_overlay.pixel_w = -4 + return_overlays += minute_tenth_overlay + + var/mutable_appearance/separator = mutable_appearance('icons/obj/digital_clock.dmi', "+separator") + return_overlays += separator + + var/mutable_appearance/hour_one_overlay = mutable_appearance('icons/obj/digital_clock.dmi', "+[station_hours_one]") + hour_one_overlay.pixel_w = -10 + return_overlays += hour_one_overlay + + var/mutable_appearance/hour_tenth_overlay = mutable_appearance('icons/obj/digital_clock.dmi', "+[station_hours_tenth]") + hour_tenth_overlay.pixel_w = -14 + return_overlays += hour_tenth_overlay + + return return_overlays + + +/obj/machinery/digital_clock/directional/north + dir = SOUTH + pixel_y = 28 + +/obj/machinery/digital_clock/directional/south + dir = NORTH + pixel_y = -28 + +/obj/machinery/digital_clock/directional/east + dir = WEST + pixel_x = 28 + +/obj/machinery/digital_clock/directional/west + dir = EAST + pixel_x = -28 diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 99ab20edbbe60..22faa231ac704 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -163,8 +163,13 @@ t1 = "*dead*" else t1 = "Unknown" + var/core_temp = "" + if(ishuman(patient)) + var/mob/living/carbon/human/humi = patient + core_temp = {"Body Temperature: [humi.bodytemperature-T0C]°C ([humi.bodytemperature*1.8-459.67]°F)
"} return {"Health: [patient.stat > 1 ? "[t1]" : "[patient.health]% ([t1])"]
- Core Temperature: [patient.bodytemperature-T0C]°C ([patient.bodytemperature*1.8-459.67]°F)
+ [core_temp] + Body Temperature: [patient.bodytemperature-T0C]°C ([patient.bodytemperature*1.8-459.67]°F)
Brute Damage: [patient.getBruteLoss()]%
Respiratory Damage: [patient.getOxyLoss()]%
Toxin Content: [patient.getToxLoss()]%
diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index 44b98a94ed8e5..b59c15b20f6d9 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -129,7 +129,7 @@ target.apply_damage(10, BRUTE, BODY_ZONE_CHEST, target.run_armor_check(target_part, MELEE)) //blood splatters and sparks - if(issilicon(target) || isbot(target) || isswarmer(target) || !IS_ORGANIC_LIMB(target_part)) + if(issilicon(target) || isbot(target) || isswarmer(target) || IS_ROBOTIC_LIMB(target_part)) do_sparks(rand(1, 3), FALSE, target.drop_location()) else var/splatter_dir = get_dir(chassis, target) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index c57158d222afb..d4fd5438d1c41 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1124,9 +1124,6 @@ to_chat(occupant, "[icon2html(src, occupant)] [message]") return -GLOBAL_VAR_INIT(year, time2text(world.realtime,"YYYY")) -GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? - /////////////////////// ///// Power stuff ///// /////////////////////// diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 2e1094c979931..00e48c6a8dba5 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -469,7 +469,7 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( attack_target = get_turf(attack_target) var/can_make_pipe = (isturf(attack_target) || is_type_in_typecache(attack_target, rpd_whitelist)) - . = FALSE + . = TRUE if((mode & DESTROY_MODE) && is_type_in_typecache(A, rpd_targets)) to_chat(user, "You start destroying a pipe...") diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 88ffd03dbb0af..6eb9233fd7d8f 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -432,6 +432,7 @@ GENE SCANNER mutant = TRUE message += "Species: [S.name][mutant ? "-derived mutant" : ""]" + message += "Core temperature: [round(H.coretemperature-T0C,0.1)] °C ([round(H.coretemperature*1.8-459.67,0.1)] °F)" message += "Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)" // Time of death diff --git a/code/game/objects/items/robot/ai_upgrades.dm b/code/game/objects/items/robot/ai_upgrades.dm index 296af65198de6..322a4eefeb7a1 100644 --- a/code/game/objects/items/robot/ai_upgrades.dm +++ b/code/game/objects/items/robot/ai_upgrades.dm @@ -9,10 +9,10 @@ icon_state = "datadisk3" -/obj/item/malf_upgrade/afterattack(mob/living/silicon/ai/AI, mob/user) - . = ..() - if(!istype(AI)) - return +/obj/item/malf_upgrade/pre_attack(atom/A, mob/living/user) + if(!isAI(A)) + return ..() + var/mob/living/silicon/ai/AI = A if(AI.malf_picker) AI.malf_picker.processing_time += 50 to_chat(AI, "[user] has attempted to upgrade you with combat software that you already possess. You gain 50 points to spend on Malfunction Modules instead.") @@ -24,7 +24,7 @@ message_admins("[ADMIN_LOOKUPFLW(user)] has upgraded [ADMIN_LOOKUPFLW(AI)] with a [src].") to_chat(user, "You upgrade [AI]. [src] is consumed in the process.") qdel(src) - + return TRUE //Lipreading /obj/item/surveillance_upgrade @@ -33,10 +33,10 @@ icon = 'icons/obj/module.dmi' icon_state = "datadisk3" -/obj/item/surveillance_upgrade/afterattack(mob/living/silicon/ai/AI, mob/user) - . = ..() - if(!istype(AI)) - return +/obj/item/surveillance_upgrade/pre_attack(atom/A, mob/living/user) + if(!isAI(A)) + return ..() + var/mob/living/silicon/ai/AI = A if(AI.eyeobj) AI.eyeobj.set_relay_speech(TRUE) to_chat(AI, "[user] has upgraded you with surveillance software!") @@ -45,3 +45,4 @@ log_game("[key_name(user)] has upgraded [key_name(AI)] with a [src].") message_admins("[ADMIN_LOOKUPFLW(user)] has upgraded [ADMIN_LOOKUPFLW(AI)] with a [src].") qdel(src) + return TRUE diff --git a/code/game/objects/items/stacks/sheets/mineral/metals.dm b/code/game/objects/items/stacks/sheets/mineral/metals.dm index 8da1116efe5a7..fb274d1fd2473 100644 --- a/code/game/objects/items/stacks/sheets/mineral/metals.dm +++ b/code/game/objects/items/stacks/sheets/mineral/metals.dm @@ -94,7 +94,7 @@ Metals Sheets return var/turf/T = get_turf(user) //we may have moved. adjust as needed... var/area/A = get_area(user) - if((!is_station_level(T.z) && !is_mining_level(T.z)) || (A && !(A.area_flags & BLOBS_ALLOWED))) + if((!is_station_level(T.z) && !is_mining_level(T.z)) || (A && !(A.area_flags & (BLOBS_ALLOWED | VALID_TERRITORY)))) to_chat(user, "The veil is not weak enough here.") return FALSE return ..() diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index 9f67d17f582b5..d62d696dd7bcb 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -123,7 +123,7 @@ /obj/item/hand_tele/pre_attack(atom/target, mob/user, params) if(try_dispel_portal(target, user)) - return FALSE + return TRUE return ..() /obj/item/hand_tele/proc/try_dispel_portal(obj/effect/portal/target, mob/user) diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index e92289f30efa1..4e579bfddd7b9 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -127,8 +127,8 @@ item_state = "supermattersliver" pulseicon = "supermatter_sliver_pulse" -/obj/item/nuke_core/supermatter_sliver/attack_tk() // no TK dusting memes - return FALSE +/obj/item/nuke_core/supermatter_sliver/attack_tk(mob/user) // no TK dusting memes + return /obj/item/nuke_core/supermatter_sliver/can_be_pulled(user) // no drag memes return FALSE diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index b8cf038e37951..4c93ddb74d010 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -94,9 +94,9 @@ /obj/structure/chair/attack_tk(mob/user) if(!anchored || has_buckled_mobs() || !isturf(user.loc)) - ..() - else - setDir(turn(dir,-90)) + return ..() + setDir(turn(dir,-90)) + return COMPONENT_CANCEL_ATTACK_CHAIN /obj/structure/chair/proc/handle_rotation(direction) handle_layer() diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index b26314ec37c13..9648e4d4358a3 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -105,6 +105,7 @@ hidden = null add_fingerprint(user) + return COMPONENT_CANCEL_ATTACK_CHAIN /obj/structure/bedsheetbin/attack_tk(mob/user) if(amount >= 1) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index e9fd7f1bbf230..71d88db88d179 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -461,7 +461,8 @@ // tk grab then use on self /obj/structure/closet/attack_self_tk(mob/user) - return attack_hand(user) + if(attack_hand(user)) + return COMPONENT_CANCEL_ATTACK_CHAIN /obj/structure/closet/verb/verb_toggleopen() set src in view(1) diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index 7c43db431012a..c8aa218581b37 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -93,15 +93,16 @@ /obj/structure/extinguisher_cabinet/attack_tk(mob/user) + . = COMPONENT_CANCEL_ATTACK_CHAIN if(stored_extinguisher) stored_extinguisher.forceMove(loc) to_chat(user, "You telekinetically remove [stored_extinguisher] from [src].") stored_extinguisher = null - opened = 1 + opened = TRUE playsound(loc, 'sound/machines/click.ogg', 15, 1, -3) update_icon() - else - toggle_cabinet(user) + return + toggle_cabinet(user) /obj/structure/extinguisher_cabinet/attack_paw(mob/user) diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index 599157471090a..669026f47062d 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -133,13 +133,12 @@ return /obj/structure/fireaxecabinet/attack_tk(mob/user) + . = COMPONENT_CANCEL_ATTACK_CHAIN if(locked) to_chat(user, "The [name] won't budge!") return - else - open = !open - update_appearance() - return + open = !open + update_icon() /obj/structure/fireaxecabinet/update_icon() cut_overlays() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 115276a9dd3a8..ed8dec679fa57 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -114,8 +114,8 @@ user.stop_pulling() return ..() -/obj/structure/table/attack_tk() - return FALSE +/obj/structure/table/attack_tk(mob/user) + return /obj/structure/table/CanAllowThrough(atom/movable/mover, border_dir) . = ..() diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 9c7374d0cec66..a033bd4b51f8b 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -150,6 +150,7 @@ user.visible_message("Something knocks on [src].") add_fingerprint(user) playsound(src, 'sound/effects/Glassknock.ogg', 50, 1) + return COMPONENT_CANCEL_ATTACK_CHAIN /obj/structure/window/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) if(!can_be_reached(user)) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 760a3a6e2a0fe..7f4be91b18acf 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -204,7 +204,7 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) else if(allow_z_travel) to_chat(user, "You can't float up and down when there is gravity!") . = ..() - if(SEND_SIGNAL(user, COMSIG_MOB_ATTACK_HAND_TURF, src) & COMPONENT_NO_ATTACK_HAND) + if(SEND_SIGNAL(user, COMSIG_MOB_ATTACK_HAND_TURF, src) & COMPONENT_CANCEL_ATTACK_CHAIN) . = TRUE if(.) return diff --git a/code/modules/actionspeed/modifiers/hunger.dm b/code/modules/actionspeed/modifiers/hunger.dm new file mode 100644 index 0000000000000..8e9007dcbfda9 --- /dev/null +++ b/code/modules/actionspeed/modifiers/hunger.dm @@ -0,0 +1,7 @@ +/datum/actionspeed_modifier/starving + multiplicative_slowdown = 0.25 + id = ACTIONSPEED_ID_SATIETY + +/datum/actionspeed_modifier/well_fed + multiplicative_slowdown = -0.1 + id = ACTIONSPEED_ID_SATIETY diff --git a/code/modules/actionspeed/modifiers/mood.dm b/code/modules/actionspeed/modifiers/mood.dm deleted file mode 100644 index d8ed005d42b35..0000000000000 --- a/code/modules/actionspeed/modifiers/mood.dm +++ /dev/null @@ -1,7 +0,0 @@ -/datum/actionspeed_modifier/low_sanity - multiplicative_slowdown = 0.25 - id = ACTIONSPEED_ID_SANITY - -/datum/actionspeed_modifier/high_sanity - multiplicative_slowdown = -0.1 - id = ACTIONSPEED_ID_SANITY diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index 59b756e69f887..1153b94a20028 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -293,7 +293,7 @@ new /obj/effect/temp_visual/cult/sparks(get_turf(H), H.dir) var/istate = pick("halo1","halo2","halo3","halo4","halo5","halo6") var/mutable_appearance/new_halo_overlay = mutable_appearance('icons/effects/32x64.dmi', istate, CALCULATE_MOB_OVERLAY_LAYER(HALO_LAYER)) - new_halo_overlay.overlays.Add(emissive_appearance('icons/effects/32x64.dmi', istate, CALCULATE_MOB_OVERLAY_LAYER(HALO_LAYER), 160)) + new_halo_overlay.overlays.Add(emissive_appearance('icons/effects/32x64.dmi', istate, CALCULATE_MOB_OVERLAY_LAYER(HALO_LAYER), 160, filters = H.filters)) ADD_LUM_SOURCE(H, LUM_SOURCE_HOLY) H.overlays_standing[HALO_LAYER] = new_halo_overlay H.apply_overlay(HALO_LAYER) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 17418e5b8d719..d5733af499ffb 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -758,6 +758,7 @@ Striking a noncultist, however, will tear their flesh."} fire_sound = 'sound/magic/wand_teleport.ogg' weapon_weight = WEAPON_LIGHT equip_time = 0 + has_weapon_slowdown = FALSE /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage/blood ammo_type = /obj/item/ammo_casing/magic/arcane_barrage/blood diff --git a/code/modules/antagonists/heretic/knowledge/void_lore.dm b/code/modules/antagonists/heretic/knowledge/void_lore.dm index 06c0852573795..e3ae1b7644442 100644 --- a/code/modules/antagonists/heretic/knowledge/void_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/void_lore.dm @@ -297,8 +297,7 @@ storm.telegraph() storm.area_type = source_area.type - storm.impacted_areas = list(source_area) - storm.update_areas() + storm.update_areas(list(source_area)) /** * Signal proc for [COMSIG_MOB_DEATH]. diff --git a/code/modules/antagonists/hivemind/spells/hivemind_shatter.dm b/code/modules/antagonists/hivemind/spells/hivemind_shatter.dm index d2851245c5e2e..a9c453361e46c 100644 --- a/code/modules/antagonists/hivemind/spells/hivemind_shatter.dm +++ b/code/modules/antagonists/hivemind/spells/hivemind_shatter.dm @@ -5,6 +5,13 @@ charge_max = 1800 + var/static/list/special_roles // security roles + Captain are resistant against this spell + +/obj/effect/proc_holder/spell/target_hive/hive_shatter/Initialize(mapload) + . = ..() + if(!special_roles) + special_roles = GLOB.security_positions.Copy() + JOB_NAME_CAPTAIN + /obj/effect/proc_holder/spell/target_hive/hive_shatter/cast(list/targets, mob/living/user = usr) var/mob/living/carbon/human/target = targets[1] var/datum/antagonist/hivemind/hive = user.mind.has_antag_datum(/datum/antagonist/hivemind) @@ -14,7 +21,7 @@ return if(!hive.hivemembers) return - if(target.mind?.assigned_role in GLOB.security_positions || CAPTAIN) + if(target.mind?.assigned_role in special_roles) to_chat(user, "A subconsciously trained response barely protects [target.name]'s mind.") to_chat(target, "Powerful mental attacks strike out against us, our training allows us to barely overcome it.") return diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index d34b0c0bee522..d5f5c07d10eff 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -131,16 +131,18 @@ ) /obj/tear_in_reality/attack_tk(mob/user) - if(iscarbon(user)) - var/mob/living/carbon/C = user - var/datum/component/mood/insaneinthemembrane = C.GetComponent(/datum/component/mood) - if(insaneinthemembrane.sanity < 15) - return //they've already seen it and are about to die, or are just too insane to care - to_chat(C, "OH GOD! NONE OF IT IS REAL! NONE OF IT IS REEEEEEEEEEEEEEEEEEEEEEEEAL!") - insaneinthemembrane.sanity = 0 - for(var/lore in typesof(/datum/brain_trauma/severe)) - C.gain_trauma(lore) - addtimer(CALLBACK(src, PROC_REF(deranged), C), 100) + if(!iscarbon(user)) + return + . = COMPONENT_CANCEL_ATTACK_CHAIN + var/mob/living/carbon/jedi = user + var/datum/component/mood/insaneinthemembrane = jedi.GetComponent(/datum/component/mood) + if(insaneinthemembrane.sanity < 15) + return //they've already seen it and are about to die, or are just too insane to care + to_chat(jedi, "OH GOD! NONE OF IT IS REAL! NONE OF IT IS REEEEEEEEEEEEEEEEEEEEEEEEAL!") + insaneinthemembrane.sanity = 0 + for(var/lore in typesof(/datum/brain_trauma/severe)) + jedi.gain_trauma(lore) + addtimer(CALLBACK(src, PROC_REF(deranged), jedi), 10 SECONDS) /obj/tear_in_reality/proc/deranged(mob/living/carbon/C) if(!C || C.stat == DEAD) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 799def9787b81..69f7a30104d53 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -43,7 +43,7 @@ . = ..() // If we have an emissive state, add it to the worn icon too if (!isinhands && emissive_state) - . += emissive_appearance(icon_file, emissive_state, item_layer, 100) + . += emissive_appearance(icon_file, emissive_state, item_layer, 100, filters = origin.filters) ADD_LUM_SOURCE(origin, LUM_SOURCE_GLASSES) /obj/item/clothing/glasses/visor_toggling() diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm index 133d80f67c07b..1ae58dd045454 100644 --- a/code/modules/clothing/shoes/bananashoes.dm +++ b/code/modules/clothing/shoes/bananashoes.dm @@ -12,23 +12,27 @@ . = ..() AddComponent(/datum/component/material_container, list(/datum/material/bananium), 200000, TRUE, /obj/item/stack) AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 75, falloff_exponent = 20) + RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, PROC_REF(on_step)) if(always_noslip) clothing_flags |= NOSLIP -/obj/item/clothing/shoes/clown_shoes/banana_shoes/step_action() - . = ..() +/obj/item/clothing/shoes/clown_shoes/banana_shoes/proc/on_step() + SIGNAL_HANDLER + var/mob/wearer = loc var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - if(on && istype(wearer)) - if(bananium.get_material_amount(/datum/material/bananium) < 100) - on = !on - if(!always_noslip) - clothing_flags &= ~NOSLIP - update_icon() - to_chat(loc, "You ran out of bananium!") - else - new /obj/item/grown/bananapeel/specialpeel(get_step(src,turn(wearer.dir, 180))) //honk - bananium.use_amount_mat(100, /datum/material/bananium) + if(!on || !istype(wearer)) + return + + if(bananium.get_material_amount(/datum/material/bananium) < 100) + on = !on + if(!always_noslip) + clothing_flags &= ~NOSLIP + update_icon() + to_chat(loc, "You ran out of bananium!") + else + new /obj/item/grown/bananapeel/specialpeel(get_step(src,turn(wearer.dir, 180))) //honk + bananium.use_amount_mat(100, /datum/material/bananium) /obj/item/clothing/shoes/clown_shoes/banana_shoes/attack_self(mob/user) var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) diff --git a/code/modules/clothing/shoes/cluwne.dm b/code/modules/clothing/shoes/cluwne.dm index d45d3753fb3af..b65bedff42fce 100644 --- a/code/modules/clothing/shoes/cluwne.dm +++ b/code/modules/clothing/shoes/cluwne.dm @@ -11,9 +11,12 @@ /obj/item/clothing/shoes/cluwne/Initialize(mapload) .=..() + RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, PROC_REF(on_step)) ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT) -/obj/item/clothing/shoes/cluwne/step_action() +/obj/item/clothing/shoes/cluwne/proc/on_step() + SIGNAL_HANDLER + if(footstep > 1) playsound(src, "clownstep", 50, 1) footstep = 0 diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index a58e4c78e8118..68eb7b389753b 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -1,5 +1,3 @@ -/obj/item/clothing/shoes/proc/step_action() //this was made to rewrite clown shoes squeaking - SEND_SIGNAL(src, COMSIG_SHOES_STEP_ACTION) /obj/item/clothing/shoes/combat //basic syndicate combat boots for nuke ops and mob corpses name = "combat boots" @@ -55,7 +53,13 @@ desc = "A pair of orange rubber boots, designed to prevent slipping on wet surfaces while also drying them." icon_state = "galoshes_dry" -/obj/item/clothing/shoes/galoshes/dry/step_action() +/obj/item/clothing/shoes/galoshes/dry/Initialize(mapload) + . = ..() + RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, PROC_REF(on_step)) + +/obj/item/clothing/shoes/galoshes/dry/proc/on_step() + SIGNAL_HANDLER + var/turf/open/t_loc = get_turf(src) SEND_SIGNAL(t_loc, COMSIG_TURF_MAKE_DRY, TURF_WET_WATER, TRUE, INFINITY) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index f6ab865e2ff16..ca31601d7f6c9 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -497,6 +497,7 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi jetpack = /obj/item/tank/jetpack/suit item_flags = ILLEGAL //Syndicate only and difficult to obtain outside of uplink anyway. Nukie hardsuits on the ship are illegal. + slowdown = 0.5 actions_types = list( /datum/action/item_action/toggle_helmet, /datum/action/item_action/toggle_beacon, @@ -527,7 +528,7 @@ /obj/item/clothing/suit/space/hardsuit/syndi/proc/activate_space_mode() name = initial(name) desc = initial(desc) - slowdown = 1 + slowdown = 0.5 clothing_flags |= STOPSPRESSUREDAMAGE cold_protection |= CHEST | GROIN | LEGS | FEET | ARMS | HANDS if(ishuman(loc)) @@ -559,6 +560,7 @@ heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF + /obj/item/clothing/suit/space/hardsuit/syndi/elite name = "elite syndicate hardsuit" desc = "An elite version of the syndicate hardsuit, with improved armour and fireproofing. It is in travel mode." diff --git a/code/modules/events/supermatter_surge.dm b/code/modules/events/supermatter_surge.dm index 175ecd07df125..0b1335ea5a3e5 100644 --- a/code/modules/events/supermatter_surge.dm +++ b/code/modules/events/supermatter_surge.dm @@ -14,11 +14,40 @@ var/power = 2000 /datum/round_event/supermatter_surge/setup() - power = rand(200,4000) - + if(prob(70)) + power = rand(200,100000) + else + power = rand(200,200000) /datum/round_event/supermatter_surge/announce() - if(power > 800 || prob(round(power/8))) - priority_announce("Class [round(power/500) + 1] supermatter surge detected. Intervention may be required.", "Anomaly Alert", SSstation.announcer.get_rand_alert_sound()) + var/severity = "" + switch(power) + if(-INFINITY to 100000) + var/low_threat_perc = 100-round(100*((power-200)/(100000-200))) + if(prob(low_threat_perc)) + if(prob(low_threat_perc)) + severity = "low; the supermatter should return to normal operation shortly." + else + severity = "medium; the supermatter should return to normal operation, but regardless, check if the emitters may need to be turned off temporarily." + else + severity = "high; the emitters likely need to be turned off, and if the supermatter's cooling loop is not fortified, pre-cooled gas may need to be added." + if(100000 to INFINITY) + severity = "extreme; emergency action is likely to be required even if coolant loop is fine. Turn off the emitters and make sure the loop is properly cooling gases." + if(power > 20000 || prob(round(power/200))) + priority_announce("Supermatter surge detected. Estimated severity is [severity]", "Anomaly Alert", SSstation.announcer.get_rand_alert_sound()) /datum/round_event/supermatter_surge/start() - GLOB.main_supermatter_engine.matter_power += power + var/obj/machinery/power/supermatter_crystal/supermatter = GLOB.main_supermatter_engine + var/power_proportion = supermatter.powerloss_inhibitor/2 // what % of the power goes into matter power, at most 50% + // we reduce the proportion that goes into actual matter power based on powerloss inhibitor + // primarily so the supermatter doesn't tesla the instant these happen + supermatter.matter_power += power * power_proportion + var/datum/gas_mixture/gas_puff = new + var/selected_gas = pick(4;GAS_CO2, 4;GAS_H2O, 1;GAS_BZ) + gas_puff.set_moles(selected_gas, 500) + gas_puff.set_temperature(500) + var/energy_ratio = (power * 500 * (1-power_proportion)) / gas_puff.thermal_energy() + if(energy_ratio < 1) // energy output we want is lower than current energy, reduce the amount of gas we puff out + gas_puff.set_moles(GAS_H2O, energy_ratio * 500) + else // energy output we want is higher than current energy, increase its actual heat + gas_puff.set_temperature(energy_ratio * 500) + supermatter.assume_air(gas_puff) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 33852058545f3..c736d09979cc2 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -131,17 +131,17 @@ /obj/item/scythe/pre_attack(atom/A, mob/living/user, params) if(swiping || !istype(A, /obj/structure/spacevine) || get_turf(A) == get_turf(user)) return ..() - else - var/turf/user_turf = get_turf(user) - var/dir_to_target = get_dir(user_turf, get_turf(A)) - swiping = TRUE - var/static/list/scythe_slash_angles = list(0, 45, 90, -45, -90) - for(var/i in scythe_slash_angles) - var/turf/T = get_step(user_turf, turn(dir_to_target, i)) - for(var/obj/structure/spacevine/V in T) - if(user.Adjacent(V)) - melee_attack_chain(user, V) - swiping = FALSE + var/turf/user_turf = get_turf(user) + var/dir_to_target = get_dir(user_turf, get_turf(A)) + swiping = TRUE + var/static/list/scythe_slash_angles = list(0, 45, 90, -45, -90) + for(var/i in scythe_slash_angles) + var/turf/T = get_step(user_turf, turn(dir_to_target, i)) + for(var/obj/structure/spacevine/V in T) + if(user.Adjacent(V)) + melee_attack_chain(user, V) + swiping = FALSE + return TRUE // ************************************* // Nutrient defines for hydroponics diff --git a/code/modules/jobs/job_types/ai.dm b/code/modules/jobs/job_types/ai.dm index a2de112537f24..980d88fb20f54 100644 --- a/code/modules/jobs/job_types/ai.dm +++ b/code/modules/jobs/job_types/ai.dm @@ -1,11 +1,9 @@ /datum/job/ai title = JOB_NAME_AI - flag = AI_JF description = "Follow your laws above all else, be the invisible eye that watches all." department_for_prefs = DEPT_BITFLAG_SILICON department_head_for_prefs = JOB_NAME_AI auto_deadmin_role_flags = DEADMIN_POSITION_SILICON - department_flag = ENGSEC faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index 3d3f12a2b4f78..94391df0f8349 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -3,7 +3,6 @@ Assistant */ /datum/job/assistant title = JOB_NAME_ASSISTANT - flag = ASSISTANT description = "Help out around the station or ask the Head of Personnel for an assignment. As the lowest-level position, expect to be treated like an intern most of the time." department_for_prefs = DEPT_BITFLAG_ASSISTANT supervisors = "absolutely everyone" @@ -18,7 +17,6 @@ Assistant access = list() //See /datum/job/assistant/get_access() minimal_access = list() //See /datum/job/assistant/get_access() - department_flag = CIVILIAN departments = DEPT_BITFLAG_CIV bank_account_department = NONE // nothing is free for them payment_per_department = list(ACCOUNT_CIV_ID = PAYCHECK_ASSISTANT) // Get a job. Job reassignment changes your paycheck now. Get over it. diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index d5d304c26a998..3621a9340c799 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -1,6 +1,5 @@ /datum/job/atmospheric_technician title = JOB_NAME_ATMOSPHERICTECHNICIAN - flag = ATMOSTECH description = "Maintain the air distribution loop to ensure adequate atmospheric conditions in the station, re-pressurize areas after hull breaches, and be a firefighter if necessary." department_for_prefs = DEPT_BITFLAG_ENG department_head = list(JOB_NAME_CHIEFENGINEER) @@ -18,7 +17,6 @@ ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) minimal_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_CONSTRUCTION, ACCESS_MECH_ENGINE, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) - department_flag = ENGSEC departments = DEPT_BITFLAG_ENG bank_account_department = ACCOUNT_ENG_BITFLAG payment_per_department = list(ACCOUNT_ENG_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index 8b19676851e10..b1dc21a83cf25 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -1,6 +1,5 @@ /datum/job/bartender title = JOB_NAME_BARTENDER - flag = BARTENDER description = "Brew a variety of drinks for the crew, cooperate with Botany and Chemistry for more exotic recipes, create a comfy atmosphere in your Bar." department_for_prefs = DEPT_BITFLAG_SRV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -16,7 +15,6 @@ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE, ACCESS_WEAPONS) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm index 3b6dc26ab0a23..0b93cdb506f14 100644 --- a/code/modules/jobs/job_types/botanist.dm +++ b/code/modules/jobs/job_types/botanist.dm @@ -1,6 +1,5 @@ /datum/job/botanist title = JOB_NAME_BOTANIST - flag = BOTANIST description = "Grow plants for the Kitchen, Bar and Chemistry. Sell cannabis and other goods to the crew. Clone people with Replica Pods when needed." department_for_prefs = DEPT_BITFLAG_SRV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -15,7 +14,6 @@ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/brig_physician.dm b/code/modules/jobs/job_types/brig_physician.dm index 5aac9dcf0b14d..ac5bc779b8fdb 100644 --- a/code/modules/jobs/job_types/brig_physician.dm +++ b/code/modules/jobs/job_types/brig_physician.dm @@ -1,6 +1,5 @@ /datum/job/brig_physician title = JOB_NAME_BRIGPHYSICIAN - flag = BRIG_PHYS description = "Tend to the health of Security Officers and Prisoners, help out at Medbay if you have free time." department_for_prefs = DEPT_BITFLAG_SEC department_head_for_prefs = JOB_NAME_HEADOFSECURITY @@ -18,7 +17,6 @@ access = list(ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_MEDICAL, ACCESS_BRIGPHYS, ACCESS_MECH_MEDICAL) minimal_access = list(ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_MEDICAL, ACCESS_BRIGPHYS, ACCESS_MECH_MEDICAL) - department_flag = ENGSEC departments = DEPT_BITFLAG_MED | DEPT_BITFLAG_SEC bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list(ACCOUNT_MED_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 749a7c719e0ba..e6b52c2f6bb10 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -1,6 +1,5 @@ /datum/job/captain title = JOB_NAME_CAPTAIN - flag = CAPTAIN description = "Supreme leader of the station, oversee and appoint missing heads of staff, manage alert levels and contact CentCom if needed. Don't forget to secure the nuclear authentication disk." department_for_prefs = DEPT_BITFLAG_CAPTAIN department_head_for_prefs = JOB_NAME_CAPTAIN @@ -22,7 +21,6 @@ access = list() //See get_access() minimal_access = list() //See get_access() - department_flag = ENGSEC departments = DEPT_BITFLAG_COM bank_account_department = ACCOUNT_SEC_BITFLAG | ACCOUNT_COM_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index fb71ea18b7d4d..f20abfcefed13 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -1,6 +1,5 @@ /datum/job/cargo_technician title = JOB_NAME_CARGOTECHNICIAN - flag = CARGOTECH description = "Push crates around, deliver bounty papers and mail around the station, make use of the Disposals network to make your life easier." department_for_prefs = DEPT_BITFLAG_CAR department_head_for_prefs = JOB_NAME_QUARTERMASTER @@ -16,7 +15,6 @@ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CAR bank_account_department = ACCOUNT_CAR_BITFLAG payment_per_department = list(ACCOUNT_CAR_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index 6212934aa20ef..d1f59bd514a11 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -1,6 +1,5 @@ /datum/job/chaplain title = JOB_NAME_CHAPLAIN - flag = CHAPLAIN description = "Tend to the spiritual well-being of the crew, conduct rites and rituals in your Chapel, exorcise evil spirits and other supernatural beings." department_for_prefs = DEPT_BITFLAG_CIV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -15,7 +14,6 @@ access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) minimal_access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CIV bank_account_department = ACCOUNT_CIV_BITFLAG payment_per_department = list(ACCOUNT_CIV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index b2302e2d1fc0c..1c241b1149322 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -1,6 +1,5 @@ /datum/job/chemist title = JOB_NAME_CHEMIST - flag = CHEMIST description = "Create healing medicines and fullfill other requests when medicine isn't needed. Label everything you produce correctly to prevent confusion." department_for_prefs = DEPT_BITFLAG_MED department_head = list(JOB_NAME_CHIEFMEDICALOFFICER) @@ -16,7 +15,6 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list(ACCOUNT_MED_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index e58db3ce096a1..4f49591089a26 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -1,6 +1,5 @@ /datum/job/chief_engineer title = JOB_NAME_CHIEFENGINEER - flag = CHIEF description = "Oversee the engineers and atmospheric technicians, keep a watchful eye on the station's engine, gravity generator, and telecomms. Send your staff to repair hull breaches and damaged equipment as necessary." department_for_prefs = DEPT_BITFLAG_ENG auto_deadmin_role_flags = DEADMIN_POSITION_HEAD @@ -28,7 +27,6 @@ ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT, ACCESS_MECH_ENGINE, ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM, ACCESS_WEAPONS) - department_flag = ENGSEC departments = DEPT_BITFLAG_ENG | DEPT_BITFLAG_COM bank_account_department = ACCOUNT_ENG_BITFLAG | ACCOUNT_COM_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index aa3495238eae6..7f51c48f7c529 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -1,6 +1,5 @@ /datum/job/chief_medical_officer title = JOB_NAME_CHIEFMEDICALOFFICER - flag = CMO_JF description = "Oversee paramedics, doctors, chemists, geneticists and the virologist. \ Ensure doctors and paramedicts are treating people in a timely manner, request medicine and other concoctions from chemists, \ and ensure geneticists and the virologist are following appropriate safety precautions while performing their research." @@ -28,7 +27,6 @@ ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, ACCESS_MECH_MEDICAL, ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_BRIGPHYS, ACCESS_EVA, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_WEAPONS) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED | DEPT_BITFLAG_COM bank_account_department = ACCOUNT_MED_BITFLAG | ACCOUNT_COM_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index 724e67bfd328f..e597a2710eeb2 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -1,6 +1,5 @@ /datum/job/clown title = JOB_NAME_CLOWN - flag = CLOWN description = "Be the life and soul of the station. Entertain the crew with your hilarious jokes and silly antics, including slipping, pie-ing and honking around. Remember your job is to keep things funny for others, not just yourself." department_for_prefs = DEPT_BITFLAG_CIV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -15,7 +14,6 @@ access = list(ACCESS_THEATRE) minimal_access = list(ACCESS_THEATRE) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_MINIMAL) diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm index 640defbfed874..2d999e160b0bf 100644 --- a/code/modules/jobs/job_types/cook.dm +++ b/code/modules/jobs/job_types/cook.dm @@ -1,6 +1,5 @@ /datum/job/cook title = JOB_NAME_COOK - flag = COOK description = "Whip up meals for the crew, get creative and cook different meals, request ingredients from Botany and Cargo. Make sure everyone stays well fed and happy." department_for_prefs = DEPT_BITFLAG_SRV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -16,7 +15,6 @@ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm index ed143ce073cdd..df966170cd6ec 100644 --- a/code/modules/jobs/job_types/curator.dm +++ b/code/modules/jobs/job_types/curator.dm @@ -1,6 +1,5 @@ /datum/job/curator title = JOB_NAME_CURATOR - flag = CURATOR description = "Be in charge of maintaining the library, engage in peace talks with alien races using your knowledge of all languages, cosplay to your heart's content." department_for_prefs = DEPT_BITFLAG_CIV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -15,7 +14,6 @@ access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION) minimal_access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CIV bank_account_department = ACCOUNT_CIV_BITFLAG payment_per_department = list(ACCOUNT_CIV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm index 3a46423433e18..0800c1916a325 100644 --- a/code/modules/jobs/job_types/cyborg.dm +++ b/code/modules/jobs/job_types/cyborg.dm @@ -1,11 +1,9 @@ /datum/job/cyborg title = JOB_NAME_CYBORG - flag = CYBORG description = "Follow your AI's interpretation of your laws above all else, or your own interpretation if not connected to an AI. Choose one of many modules with different tools, ask robotics for maintenance and upgrades." department_for_prefs = DEPT_BITFLAG_SILICON department_head_for_prefs = JOB_NAME_AI auto_deadmin_role_flags = DEADMIN_POSITION_SILICON - department_flag = ENGSEC faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/jobs/job_types/deputy.dm b/code/modules/jobs/job_types/deputy.dm index f3c5b446e8415..9859642dd8236 100644 --- a/code/modules/jobs/job_types/deputy.dm +++ b/code/modules/jobs/job_types/deputy.dm @@ -1,6 +1,5 @@ /datum/job/deputy title = JOB_NAME_DEPUTY - flag = DEPUTY description = "Follow orders and do your best to maintain order on the station while following Space Law." department_for_prefs = DEPT_BITFLAG_SEC department_head = list(JOB_NAME_HEADOFSECURITY) @@ -18,7 +17,6 @@ access = list(ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS) minimal_access = list(ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS) - department_flag = ENGSEC departments = DEPT_BITFLAG_SEC bank_account_department = ACCOUNT_SEC_BITFLAG payment_per_department = list(ACCOUNT_SEC_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index f5435da068fee..5ea9a51b62f4d 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -1,6 +1,5 @@ /datum/job/detective title = JOB_NAME_DETECTIVE - flag = DETECTIVE description = "Investigate crimes, solve murder mysteries, report your findings to the rest of Security." department_for_prefs = DEPT_BITFLAG_SEC auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY @@ -20,7 +19,6 @@ access = list(ACCESS_SEC_DOORS, ACCESS_SEC_RECORDS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SEC_DOORS, ACCESS_SEC_RECORDS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) - department_flag = ENGSEC departments = DEPT_BITFLAG_SEC bank_account_department = ACCOUNT_SEC_BITFLAG payment_per_department = list(ACCOUNT_SEC_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/exploration_team.dm b/code/modules/jobs/job_types/exploration_team.dm index 3a3416b5c95e6..3737e1f1c275d 100644 --- a/code/modules/jobs/job_types/exploration_team.dm +++ b/code/modules/jobs/job_types/exploration_team.dm @@ -1,6 +1,5 @@ /datum/job/exploration_crew title = JOB_NAME_EXPLORATIONCREW - flag = EXPLORATION_CREW description = "Go out into space to complete different missions for loads of cash. Find and deliver back research disks for rare technologies." department_for_prefs = DEPT_BITFLAG_SCI department_head = list(JOB_NAME_RESEARCHDIRECTOR) @@ -18,7 +17,6 @@ access = list(ACCESS_MAINT_TUNNELS, ACCESS_RESEARCH, ACCESS_EXPLORATION, ACCESS_TOX,ACCESS_TOX_STORAGE, ACCESS_MECH_SCIENCE, ACCESS_XENOBIOLOGY) minimal_access = list(ACCESS_RESEARCH, ACCESS_EXPLORATION, ACCESS_TOX, ACCESS_MECH_SCIENCE) - department_flag = MEDSCI departments = DEPT_BITFLAG_SCI bank_account_department = ACCOUNT_SCI_BITFLAG payment_per_department = list(ACCOUNT_SCI_ID = PAYCHECK_HARD) diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index ea648f5b184b5..bf65e9e84b027 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -1,6 +1,5 @@ /datum/job/geneticist title = JOB_NAME_GENETICIST - flag = GENETICIST description = "Discover useful mutations and give them out to the crew at CMO's approval, oversee Cloning, create humanized monkeys for replacement organs and bodyparts if needed." department_for_prefs = DEPT_BITFLAG_MED department_head = list(JOB_NAME_CHIEFMEDICALOFFICER) @@ -16,7 +15,6 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MECH_MEDICAL) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/gimmick.dm b/code/modules/jobs/job_types/gimmick.dm index 832f0d9ef4f33..7cc3f4d41cd4a 100644 --- a/code/modules/jobs/job_types/gimmick.dm +++ b/code/modules/jobs/job_types/gimmick.dm @@ -1,6 +1,5 @@ /datum/job/gimmick //gimmick var must be set to true for all gimmick jobs BUT the parent title = JOB_NAME_GIMMICK - flag = GIMMICK description = "Use your unique position to provide a service or entertain the crew." department_for_prefs = DEPT_BITFLAG_ASSISTANT show_in_prefs = TRUE @@ -14,7 +13,6 @@ access = list(ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_MAINT_TUNNELS) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CIV bank_account_department = ACCOUNT_CIV_BITFLAG payment_per_department = list(ACCOUNT_CIV_ID = PAYCHECK_ASSISTANT) @@ -32,7 +30,6 @@ /datum/job/gimmick/barber title = JOB_NAME_BARBER - flag = BARBER description = "Give the crew haircuts using the variety of tools at your disposal, and provide less professional and cosmetic surgeries." department_head = list(JOB_NAME_HEADOFPERSONNEL) supervisors = "the head of personnel" @@ -44,7 +41,6 @@ access = list(ACCESS_MORGUE, ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_MORGUE, ACCESS_MAINT_TUNNELS) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_ASSISTANT) @@ -67,7 +63,6 @@ /datum/job/gimmick/stage_magician title = JOB_NAME_STAGEMAGICIAN - flag = MAGICIAN description = "Use your special tools to provide entertainment for the crew, show them than you can do more than simple parlor magic tricks." department_head = list(JOB_NAME_HEADOFPERSONNEL) supervisors = "the head of personnel" @@ -79,7 +74,6 @@ access = list(ACCESS_THEATRE, ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_THEATRE, ACCESS_MAINT_TUNNELS) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_MINIMAL) @@ -108,7 +102,6 @@ /datum/job/gimmick/psychiatrist title = JOB_NAME_PSYCHIATRIST - flag = PSYCHIATRIST description = "Provide therapy to the crew through talk sessions, psychoactive drugs, and careful consideration of their thoughts and feelings. Provide mental evaluations for Security." department_head = list(JOB_NAME_CHIEFMEDICALOFFICER) supervisors = "the chief medical officer" @@ -120,7 +113,6 @@ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MEDICAL) minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MEDICAL) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list(ACCOUNT_MED_ID = PAYCHECK_EASY) @@ -141,7 +133,6 @@ /datum/job/gimmick/vip title = JOB_NAME_VIP - flag = CELEBRITY description = "Flaunt around your wealth, organize posh parties and other high life activities with your near-bottomless budget." gimmick = TRUE show_in_prefs = FALSE @@ -151,7 +142,6 @@ access = list(ACCESS_MAINT_TUNNELS) //Assistants with shitloads of money, what could go wrong? minimal_access = list(ACCESS_MAINT_TUNNELS) - department_flag = CIVILIAN departments = DEPT_BITFLAG_VIP bank_account_department = ACCOUNT_VIP_BITFLAG payment_per_department = list(ACCOUNT_VIP_ID = PAYCHECK_VIP) //our power is being fucking rich diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index e4c2b236cdd84..78b0413af8c12 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -1,6 +1,5 @@ /datum/job/head_of_personnel title = JOB_NAME_HEADOFPERSONNEL - flag = HOP description = "Second in command on the station, oversee the crew assigned to service and cargo positions, handle department transfer requests by consulting relevant heads. Protect Ian at all costs." department_for_prefs = DEPT_BITFLAG_CAPTAIN department_head_for_prefs = JOB_NAME_CAPTAIN @@ -35,7 +34,6 @@ ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) - department_flag = CIVILIAN departments = DEPT_BITFLAG_COM | DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG | ACCOUNT_COM_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 620b326436696..0423e61e63666 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -1,6 +1,5 @@ /datum/job/head_of_security title = JOB_NAME_HEADOFSECURITY - flag = HOS description = "Oversee the members of security and ensure they follow Space Law. Deputize other crew members when the station is in need of additional protection." department_for_prefs = DEPT_BITFLAG_SEC auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY @@ -27,7 +26,6 @@ ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS) - department_flag = ENGSEC departments = DEPT_BITFLAG_SEC | DEPT_BITFLAG_COM bank_account_department = ACCOUNT_SEC_BITFLAG | ACCOUNT_COM_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm index 552e827768909..1f10677173cb5 100644 --- a/code/modules/jobs/job_types/janitor.dm +++ b/code/modules/jobs/job_types/janitor.dm @@ -1,6 +1,5 @@ /datum/job/janitor title = JOB_NAME_JANITOR - flag = JANITOR description = "Clean up vomit, trash, and other messes around the station. Put down signs to warn people of slipping hazards, and eradicate rodents when you find them. Keep the station clean and tidy." department_for_prefs = DEPT_BITFLAG_SRV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -15,7 +14,6 @@ access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm index 5eb9c3f3c3d30..e290bc11b3865 100644 --- a/code/modules/jobs/job_types/lawyer.dm +++ b/code/modules/jobs/job_types/lawyer.dm @@ -1,6 +1,5 @@ /datum/job/lawyer title = JOB_NAME_LAWYER - flag = LAWYER description = "Ensure Security follows Space Law and Standard Operating Procedure perfectly, represent your clients in trials and other legal troubles, make sure the crew is treated fairly by the men in red." department_for_prefs = DEPT_BITFLAG_CIV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -16,7 +15,6 @@ access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CIV bank_account_department = ACCOUNT_CIV_BITFLAG payment_per_department = list(ACCOUNT_CIV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index 44ba5dd0715ef..b44cf72c7d612 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -1,6 +1,5 @@ /datum/job/medical_doctor title = JOB_NAME_MEDICALDOCTOR - flag = DOCTOR description = "Treat people of both minor wounds, serious injuries and resurrect them from the dead. Make use of surgeries and surgical tools, Chemistry's pills and patches, Virology's viruses and in dire cases, Genetics' cloning." department_for_prefs = DEPT_BITFLAG_MED department_head = list(JOB_NAME_CHIEFMEDICALOFFICER) @@ -16,7 +15,6 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list(ACCOUNT_MED_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm index 9da99cc13a582..93d4615d27880 100644 --- a/code/modules/jobs/job_types/mime.dm +++ b/code/modules/jobs/job_types/mime.dm @@ -1,6 +1,5 @@ /datum/job/mime title = JOB_NAME_MIME - flag = MIME description = "Be the Clown's mute counterpart and arch nemesis. Conduct pantomimes and performances, create interesting situations with your mime powers. Remember your job is to keep things funny for others, not just yourself." department_for_prefs = DEPT_BITFLAG_CIV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -15,7 +14,6 @@ access = list(ACCESS_THEATRE) minimal_access = list(ACCESS_THEATRE) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_MINIMAL) diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm index 5343de8394cdf..8d6e204094146 100644 --- a/code/modules/jobs/job_types/paramedic.dm +++ b/code/modules/jobs/job_types/paramedic.dm @@ -1,6 +1,5 @@ /datum/job/paramedic title = JOB_NAME_PARAMEDIC - flag = PARAMEDIC description = "Retrieve the gravely injured and dead people from around the station, deliver medicine for minor wounds, and keep a close eye on the Crew Monitor in your free time." department_for_prefs = DEPT_BITFLAG_MED department_head = list(JOB_NAME_CHIEFMEDICALOFFICER) @@ -17,7 +16,6 @@ minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CLONING, ACCESS_MECH_MEDICAL, ACCESS_MAINT_TUNNELS, ACCESS_EVA, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_AUX_BASE) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list(ACCOUNT_MED_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index 9417b5adec897..b2c698b4ea610 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -1,6 +1,5 @@ /datum/job/quartermaster title = JOB_NAME_QUARTERMASTER - flag = QUARTERMASTER description = "Oversee and direct cargo technicians to fulfill requests for supplies and keep the station well stocked, request funds from department budgets to cover costs, deny frivolous orders when money is tight, and sell anything the station doesn't need." department_for_prefs = DEPT_BITFLAG_CAR department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -18,7 +17,6 @@ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT, ACCESS_AUX_BASE, ACCESS_EXPLORATION) minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT, ACCESS_AUX_BASE, ACCESS_EXPLORATION) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CAR bank_account_department = ACCOUNT_CAR_BITFLAG payment_per_department = list(ACCOUNT_CAR_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 8bdb103bd55d6..5bdff2825aa28 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -1,6 +1,5 @@ /datum/job/research_director title = JOB_NAME_RESEARCHDIRECTOR - flag = RD_JF description = "Oversee the scientists and roboticists and keep up with their research projects, take care of any issues with the station's AI that may arise, ensure research is being prioritized in accordance with the needs of the station." department_for_prefs = DEPT_BITFLAG_SCI auto_deadmin_role_flags = DEADMIN_POSITION_HEAD @@ -30,7 +29,6 @@ ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK, ACCESS_AUX_BASE, ACCESS_RD_SERVER, ACCESS_WEAPONS) - department_flag = MEDSCI departments = DEPT_BITFLAG_SCI | DEPT_BITFLAG_COM bank_account_department = ACCOUNT_SCI_BITFLAG | ACCOUNT_COM_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm index b3ffb9e9cdb02..b56f510c08459 100644 --- a/code/modules/jobs/job_types/roboticist.dm +++ b/code/modules/jobs/job_types/roboticist.dm @@ -1,6 +1,5 @@ /datum/job/roboticist title = JOB_NAME_ROBOTICIST - flag = ROBOTICIST description = "Create bots and utility mechs for helping out around the station. Construct war machines by the request of the Captain or Head of Security. Make new Cyborgs, give augmentations and implants to crew members." department_for_prefs = DEPT_BITFLAG_SCI department_head = list(JOB_NAME_RESEARCHDIRECTOR) @@ -19,7 +18,6 @@ minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MECH_SCIENCE, ACCESS_MECH_MINING, ACCESS_MECH_MEDICAL, ACCESS_MECH_ENGINE, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) - department_flag = MEDSCI departments = DEPT_BITFLAG_SCI bank_account_department = ACCOUNT_SCI_BITFLAG payment_per_department = list(ACCOUNT_SCI_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm index b20218a57c5db..e132000e0d34e 100644 --- a/code/modules/jobs/job_types/scientist.dm +++ b/code/modules/jobs/job_types/scientist.dm @@ -1,6 +1,5 @@ /datum/job/scientist title = JOB_NAME_SCIENTIST - flag = SCIENTIST description = "Engage in Xenobiology, Xenoarchaeology, Nanites, and Toxins; research new technology; and upgrade the machine parts around the station." department_for_prefs = DEPT_BITFLAG_SCI department_head = list(JOB_NAME_RESEARCHDIRECTOR) @@ -19,7 +18,6 @@ minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MECH_SCIENCE, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE, ACCESS_EXPLORATION) - department_flag = MEDSCI departments = DEPT_BITFLAG_SCI bank_account_department = ACCOUNT_SCI_BITFLAG payment_per_department = list(ACCOUNT_SCI_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index d545b262d7e8a..fae1ad7d62609 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -1,6 +1,5 @@ /datum/job/security_officer title = JOB_NAME_SECURITYOFFICER - flag = OFFICER description = "Follow Space Law, patrol the station, arrest criminals and bring them to the Brig." department_for_prefs = DEPT_BITFLAG_SEC auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY @@ -22,7 +21,6 @@ minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_SEC_RECORDS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY, ACCESS_MINERAL_STOREROOM) // See /datum/job/security_officer/get_access() - department_flag = ENGSEC departments = DEPT_BITFLAG_SEC bank_account_department = ACCOUNT_SEC_BITFLAG payment_per_department = list(ACCOUNT_SEC_ID = PAYCHECK_HARD) diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 4867b9f058759..5839ba71cac2e 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -1,6 +1,5 @@ /datum/job/shaft_miner title = JOB_NAME_SHAFTMINER - flag = MINER description = "Collect resources for the station, redeem them for points, and purchase gear to collect even more ores." department_for_prefs = DEPT_BITFLAG_CAR department_head_for_prefs = JOB_NAME_QUARTERMASTER @@ -18,7 +17,6 @@ minimal_access = list(ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CAR bank_account_department = ACCOUNT_CAR_BITFLAG payment_per_department = list(ACCOUNT_CAR_ID = PAYCHECK_HARD) diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index cd14410c3a887..91f6a312ad6da 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -1,6 +1,5 @@ /datum/job/station_engineer title = JOB_NAME_STATIONENGINEER - flag = ENGINEER description = "Ensure the station has an adequate power supply, repair and build new machinery, repair wiring chewed up by mice." department_for_prefs = DEPT_BITFLAG_ENG department_head = list(JOB_NAME_CHIEFENGINEER) @@ -20,7 +19,6 @@ minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_ENGINE, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) - department_flag = ENGSEC departments = DEPT_BITFLAG_ENG bank_account_department = ACCOUNT_ENG_BITFLAG payment_per_department = list(ACCOUNT_ENG_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index c3d90493f9bd2..567af28073c00 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -1,6 +1,5 @@ /datum/job/virologist title = JOB_NAME_VIROLOGIST - flag = VIROLOGIST description = "Collect virus samples from dormant viruses, old blood, and crusty vomit from around the station, isolate the symptoms and use them to create useful healing viruses for the crew." department_for_prefs = DEPT_BITFLAG_MED department_head = list(JOB_NAME_CHIEFMEDICALOFFICER) @@ -17,7 +16,6 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list(ACCOUNT_MED_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index a51c6488ef30d..d81ada3d53d9d 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -1,6 +1,5 @@ /datum/job/warden title = JOB_NAME_WARDEN - flag = WARDEN description = "Oversee prisoners in the brig and guard the armory. Hand out equipment when necessary and ensure it is returned after threats have been contained." department_for_prefs = DEPT_BITFLAG_SEC auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY @@ -20,7 +19,6 @@ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_SEC_RECORDS, ACCESS_BRIG, ACCESS_BRIGPHYS, ACCESS_ARMORY,ACCESS_COURT, ACCESS_MECH_SECURITY, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_SEC_RECORDS, ACCESS_BRIG, ACCESS_BRIGPHYS, ACCESS_ARMORY, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) // See /datum/job/warden/get_access() - department_flag = ENGSEC departments = DEPT_BITFLAG_SEC bank_account_department = ACCOUNT_SEC_BITFLAG payment_per_department = list(ACCOUNT_SEC_ID = PAYCHECK_HARD) diff --git a/code/modules/language/language.dm b/code/modules/language/language.dm index 4fc2dc5c94e4d..5e370146dc573 100644 --- a/code/modules/language/language.dm +++ b/code/modules/language/language.dm @@ -27,6 +27,9 @@ var/icon = 'icons/misc/language.dmi' var/icon_state = "popcorn" + // get_icon() proc will return a complete string rather than calling a proc every time. + var/fast_icon_span + /// Returns TRUE/FALSE based on seeing a language icon is validated to a given hearer in the parameter. /datum/language/proc/display_icon(atom/movable/hearer) // ghosts want to know how it is going. @@ -56,8 +59,10 @@ return TRUE /datum/language/proc/get_icon() - var/datum/asset/spritesheet_batched/sheet = get_asset_datum(/datum/asset/spritesheet_batched/chat) - return sheet.icon_tag("language-[icon_state]") + if(!fast_icon_span) + var/datum/asset/spritesheet_batched/sheet = get_asset_datum(/datum/asset/spritesheet_batched/chat) + fast_icon_span = sheet.icon_tag("language-[icon_state]") + return fast_icon_span /datum/language/proc/get_random_name(gender, name_count=2, syllable_count=4, syllable_divisor=2) if(!syllables || !syllables.len) diff --git a/code/modules/mining/equipment/resonator.dm b/code/modules/mining/equipment/resonator.dm index b5588e772ba9d..150ae9fdcab7e 100644 --- a/code/modules/mining/equipment/resonator.dm +++ b/code/modules/mining/equipment/resonator.dm @@ -56,7 +56,7 @@ /obj/item/resonator/pre_attack(atom/target, mob/user, params) if(check_allowed_items(target, 1)) CreateResonance(target, user) - return TRUE + . = ..() //resonance field, crushes rock, damages mobs /obj/effect/temp_visual/resonance diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 3a5104e107302..c63f3c4a8752a 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -861,7 +861,7 @@ /mob/living/carbon/fakefire(var/fire_icon = "Generic_mob_burning") var/mutable_appearance/new_fire_overlay = mutable_appearance('icons/mob/OnFire.dmi', fire_icon, CALCULATE_MOB_OVERLAY_LAYER(FIRE_LAYER)) new_fire_overlay.appearance_flags = RESET_COLOR - new_fire_overlay.overlays.Add(emissive_appearance('icons/mob/OnFire.dmi', fire_icon, CALCULATE_MOB_OVERLAY_LAYER(FIRE_LAYER))) + new_fire_overlay.overlays.Add(emissive_appearance('icons/mob/OnFire.dmi', fire_icon, CALCULATE_MOB_OVERLAY_LAYER(FIRE_LAYER), filters = src.filters)) overlays_standing[FIRE_LAYER] = new_fire_overlay apply_overlay(FIRE_LAYER) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 24adf825d4053..d27ffb8b289a4 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -304,7 +304,6 @@ else if(M.is_zone_selected(BODY_ZONE_HEAD)) M.visible_message("[M] pats [src] on the head.", \ "You pat [src] on the head.") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat, M) for(var/datum/brain_trauma/trauma in M.get_traumas()) trauma.on_hug(M, src) else if((M.is_zone_selected(BODY_ZONE_L_ARM)) || (M.is_zone_selected(BODY_ZONE_R_ARM))) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 611aa231c2afd..8f4e3d2bcb40b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -792,6 +792,8 @@ for(var/datum/mutation/HM as() in dna.mutations) if(HM.quality != POSITIVE) dna.remove_mutation(HM.name) + coretemperature = get_body_temp_normal(apply_change=FALSE) + heat_exposure_stacks = 0 ..() /mob/living/carbon/human/check_weakness(obj/item/weapon, mob/living/attacker) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 244a62d152206..5f37d1326c7b8 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -59,3 +59,9 @@ var/static/list/can_ride_typecache = typecacheof(list(/mob/living/carbon/human, /mob/living/simple_animal/slime, /mob/living/simple_animal/parrot, /mob/living/carbon/monkey)) var/lastpuke = 0 var/last_fire_update + + /// The core temperature of the human compaired to the skin temp of the body + var/coretemperature = BODYTEMP_NORMAL + + ///Exposure to damaging heat levels increases stacks, stacks clean over time when temperatures are lower. Stack is consumed to add a wound. + var/heat_exposure_stacks = 0 diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index b3640ae6f1abb..e6de200042cbb 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -43,8 +43,7 @@ /mob/living/carbon/human/Move(NewLoc, direct) . = ..() if(shoes && (mobility_flags & MOBILITY_STAND) && loc == NewLoc && has_gravity(loc)) - var/obj/item/clothing/shoes/S = shoes - S.step_action() + SEND_SIGNAL(shoes, COMSIG_SHOES_STEP_ACTION) /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(dna.species.space_move(src)) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 68be90ff43967..71bb4a23a6177 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -39,6 +39,9 @@ // Tissues die without blood circulation adjustBruteLoss(2) + //Body temperature stability and damage + dna.species.handle_body_temperature(src) + dna.species.spec_life(src) // for mutantraces //Update our name based on whether our face is obscured/disfigured @@ -113,8 +116,17 @@ return dna.species.handle_environment(environment, src) - dna.species.handle_environment_pressure(environment, src) - dna.species.handle_body_temperature(src) + +/** + * Adjust the core temperature of a mob + * + * vars: + * * amount The amount of degrees to change body temperature by + * * min_temp (optional) The minimum body temperature after adjustment + * * max_temp (optional) The maximum body temperature after adjustment + */ +/mob/living/carbon/human/proc/adjust_coretemperature(amount, min_temp=0, max_temp=INFINITY) + coretemperature = clamp(coretemperature + amount, min_temp, max_temp) /** * get_body_temperature Returns the body temperature with any modifications applied diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 66f4b98fc712b..5a107d674b4b1 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1015,7 +1015,7 @@ GLOBAL_LIST_EMPTY(features_by_species) // Add on emissives, if they have one if (S.emissive_state) - accessory_overlay.overlays.Add(emissive_appearance(S.icon, S.emissive_state, CALCULATE_MOB_OVERLAY_LAYER(layer), S.emissive_alpha)) + accessory_overlay.overlays.Add(emissive_appearance(S.icon, S.emissive_state, CALCULATE_MOB_OVERLAY_LAYER(layer), S.emissive_alpha, filters = H.filters)) ADD_LUM_SOURCE(H, LUM_SOURCE_MUTANT_BODYPART) //A little rename so we don't have to use tail_lizard or tail_human when naming the sprites. @@ -1410,39 +1410,52 @@ GLOBAL_LIST_EMPTY(features_by_species) to_chat(H, "You no longer feel vigorous.") H.metabolism_efficiency = 1 - //Hunger slowdown for if mood isn't enabled - if(CONFIG_GET(flag/disable_human_mood)) - if(!HAS_TRAIT(H, TRAIT_NOHUNGER)) - var/hungry = (500 - H.nutrition) / 5 //So overeat would be 100 and default level would be 80 - if(hungry >= 70) - H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/hunger, multiplicative_slowdown = (hungry / 50)) - else - H.remove_movespeed_modifier(/datum/movespeed_modifier/hunger) - if(HAS_TRAIT(H, TRAIT_POWERHUNGRY)) handle_charge(H) else switch(H.nutrition) if(NUTRITION_LEVEL_FULL to INFINITY) H.throw_alert("nutrition", /atom/movable/screen/alert/fat) - if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FULL) + H.remove_movespeed_modifier(MOVESPEED_ID_VISIBLE_HUNGER) + H.remove_actionspeed_modifier(ACTIONSPEED_ID_SATIETY) + if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_FULL) + H.clear_alert("nutrition") + H.remove_movespeed_modifier(MOVESPEED_ID_VISIBLE_HUNGER) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/well_fed) + if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED) H.clear_alert("nutrition") + H.remove_movespeed_modifier(MOVESPEED_ID_VISIBLE_HUNGER) + H.remove_actionspeed_modifier(ACTIONSPEED_ID_SATIETY) if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) H.throw_alert("nutrition", /atom/movable/screen/alert/hungry) + H.add_movespeed_modifier(/datum/movespeed_modifier/visible_hunger/hungry) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/starving) if(0 to NUTRITION_LEVEL_STARVING) H.throw_alert("nutrition", /atom/movable/screen/alert/starving) + H.add_movespeed_modifier(/datum/movespeed_modifier/visible_hunger/starving) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/starving) /datum/species/proc/handle_charge(mob/living/carbon/human/H) switch(H.nutrition) if(NUTRITION_LEVEL_FED to INFINITY) H.clear_alert("nutrition") + H.remove_movespeed_modifier(MOVESPEED_ID_VISIBLE_HUNGER) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/well_fed) if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED) H.throw_alert("nutrition", /atom/movable/screen/alert/lowcell, 1) + H.remove_movespeed_modifier(MOVESPEED_ID_VISIBLE_HUNGER) + H.remove_actionspeed_modifier(ACTIONSPEED_ID_SATIETY) if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) H.throw_alert("nutrition", /atom/movable/screen/alert/lowcell, 2) + H.add_movespeed_modifier(/datum/movespeed_modifier/visible_hunger/hungry) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/starving) if(1 to NUTRITION_LEVEL_STARVING) H.throw_alert("nutrition", /atom/movable/screen/alert/lowcell, 3) + H.add_movespeed_modifier(/datum/movespeed_modifier/visible_hunger/starving) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/starving) else + H.add_movespeed_modifier(/datum/movespeed_modifier/visible_hunger/starving) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/starving) var/obj/item/organ/stomach/battery/battery = H.getorganslot(ORGAN_SLOT_STOMACH) if(!istype(battery)) H.throw_alert("nutrition", /atom/movable/screen/alert/nocell) @@ -1843,86 +1856,257 @@ GLOBAL_LIST_EMPTY(features_by_species) ////////////////////////// /** - * Enviroment handler for species + * Environment handler for species + * + * vars: + * * environment (required) The environment gas mix + * * humi (required)(type: /mob/living/carbon/human) The mob we will target + */ +/datum/species/proc/handle_environment(datum/gas_mixture/environment, mob/living/carbon/human/humi) + handle_environment_pressure(environment, humi) + +/** + * Body temperature handler for species * + * These procs manage body temp, bamage, and alerts + * Some of these will still fire when not alive to balance body temp to the room temp. * vars: - * * environment The environment gas mix - * * H The mob we will stabilize + * * humi (required)(type: /mob/living/carbon/human) The mob we will target */ -/datum/species/proc/handle_environment(datum/gas_mixture/environment, mob/living/carbon/human/H) - var/areatemp = H.get_temperature(environment) +/datum/species/proc/handle_body_temperature(mob/living/carbon/human/humi) + //when in a cryo unit we suspend all natural body regulation + if(istype(humi.loc, /obj/machinery/atmospherics/components/unary/cryo_cell)) + return + + //Only stabilise core temp when alive and not in statis + if(humi.stat < DEAD && !IS_IN_STASIS(humi)) + body_temperature_core(humi) - if(H.stat != DEAD) // If you are dead your body does not stabilize naturally - natural_bodytemperature_stabilization(environment, H) + //These do run in statis + body_temperature_skin(humi) + body_temperature_alerts(humi) - if(!H.on_fire || areatemp > H.bodytemperature) // If we are not on fire or the area is hotter - H.adjust_bodytemperature((areatemp - H.bodytemperature), use_insulation=TRUE, use_steps=TRUE, hardsuit_fix=bodytemp_normal - H.bodytemperature) + //Do not cause more damage in statis + if(!IS_IN_STASIS(humi)) + body_temperature_damage(humi) -/// Handle the body temperature status effects for the species -/// Traits for resitance to heat or cold are handled here. -/datum/species/proc/handle_body_temperature(mob/living/carbon/human/H) +/** + * Used to stabilize the core temperature back to normal on living mobs + * + * The metabolisim heats up the core of the mob trying to keep it at the normal body temp + * vars: + * * humi (required) The mob we will stabilize + */ +/datum/species/proc/body_temperature_core(mob/living/carbon/human/humi) + var/natural_change = get_temp_change_amount(humi.get_body_temp_normal() - humi.coretemperature, 0.12) + humi.adjust_coretemperature(humi.metabolism_efficiency * natural_change) + +/** + * Used to normalize the skin temperature on living mobs + * + * The core temp effects the skin, then the enviroment effects the skin, then we refect that back to the core. + * This happens even when dead so bodies revert to room temp over time. + * vars: + * * humi (required) The mob we will targeting + */ +/datum/species/proc/body_temperature_skin(mob/living/carbon/human/humi) + + // change the core based on the skin temp + var/skin_core_diff = humi.bodytemperature - humi.coretemperature + // change rate of 0.08 to be slightly below area to skin change rate and still have a solid curve + var/skin_core_change = get_temp_change_amount(skin_core_diff, 0.08) + + humi.adjust_coretemperature(skin_core_change) + + // get the enviroment details of where the mob is standing + var/datum/gas_mixture/environment = humi.loc.return_air() + if(!environment) // if there is no environment (nullspace) drop out here. + return + + // Get the temperature of the environment for area + var/area_temp = humi.get_temperature(environment) + + // Get the insulation value based on the area's temp + var/thermal_protection = humi.get_insulation_protection(area_temp) + + // Changes to the skin temperature based on the area + var/area_skin_diff = area_temp - humi.bodytemperature + if(!humi.on_fire || area_skin_diff > 0) + // change rate of 0.1 as area temp has large impact on the surface + var/area_skin_change = get_temp_change_amount(area_skin_diff, 0.1) + + // We need to apply the thermal protection of the clothing when applying area to surface change + // If the core bodytemp goes over the normal body temp you are overheating and becom sweaty + // This will cause the insulation value of any clothing to reduced in effect (70% normal rating) + // we add 10 degree over normal body temp before triggering as thick insulation raises body temp + if(humi.get_body_temp_normal(apply_change=FALSE) + 10 < humi.coretemperature) + // we are overheating and sweaty insulation is not as good reducing thermal protection + area_skin_change = (1 - (thermal_protection * 0.7)) * area_skin_change + else + area_skin_change = (1 - thermal_protection) * area_skin_change + + humi.adjust_bodytemperature(area_skin_change) + + // Core to skin temp transfer, when not on fire + if(!humi.on_fire) + // Get the changes to the skin from the core temp + var/core_skin_diff = humi.coretemperature - humi.bodytemperature + // change rate of 0.08 to reflect temp back in to the core at the same rate as core to skin + var/core_skin_change = (1 + thermal_protection) * get_temp_change_amount(core_skin_diff, 0.08) + + // We do not want to over shoot after using protection + if(core_skin_diff > 0) + core_skin_change = min(core_skin_change, core_skin_diff) + else + core_skin_change = max(core_skin_change, core_skin_diff) + + humi.adjust_bodytemperature(core_skin_change) + + +/** + * Used to set alerts and debuffs based on body temperature + * vars: + * * humi (required) The mob we will targeting + */ +/datum/species/proc/body_temperature_alerts(mob/living/carbon/human/humi) + var/old_bodytemp = humi.old_bodytemperature + var/bodytemp = humi.bodytemperature // Body temperature is too hot, and we do not have resist traits - if(H.bodytemperature > bodytemp_heat_damage_limit && !HAS_TRAIT(H, TRAIT_RESISTHEAT)) + if(bodytemp > bodytemp_heat_damage_limit && !HAS_TRAIT(humi, TRAIT_RESISTHEAT)) // Clear cold mood and apply hot mood - SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold") - SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "hot", /datum/mood_event/hot) + SEND_SIGNAL(humi, COMSIG_CLEAR_MOOD_EVENT, "cold") + SEND_SIGNAL(humi, COMSIG_ADD_MOOD_EVENT, "hot", /datum/mood_event/hot) + + //Remove any slowdown from the cold. + humi.remove_movespeed_modifier(/datum/movespeed_modifier/cold) + // display alerts based on how hot it is + // Can't be a switch due to http://www.byond.com/forum/post/2750423 + if(bodytemp in bodytemp_heat_damage_limit to BODYTEMP_HEAT_WARNING_2) + humi.throw_alert("temp", /atom/movable/screen/alert/hot, 1) + else if(bodytemp in BODYTEMP_HEAT_WARNING_2 to BODYTEMP_HEAT_WARNING_3) + humi.throw_alert("temp", /atom/movable/screen/alert/hot, 2) + else + humi.throw_alert("temp", /atom/movable/screen/alert/hot, 3) + + // Body temperature is too cold, and we do not have resist traits + else if(humi.bodytemperature < bodytemp_cold_damage_limit && !HAS_TRAIT(humi, TRAIT_RESISTCOLD)) + // clear any hot moods and apply cold mood + SEND_SIGNAL(humi, COMSIG_CLEAR_MOOD_EVENT, "hot") + SEND_SIGNAL(humi, COMSIG_ADD_MOOD_EVENT, "cold", /datum/mood_event/cold) + // Apply cold slow down + humi.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/cold, multiplicative_slowdown = ((bodytemp_cold_damage_limit - humi.bodytemperature) / COLD_SLOWDOWN_FACTOR)) + // Display alerts based how cold it is + // Can't be a switch due to http://www.byond.com/forum/post/2750423 + if(bodytemp in BODYTEMP_COLD_WARNING_2 to bodytemp_cold_damage_limit) + humi.throw_alert("temp", /atom/movable/screen/alert/cold, 1) + else if(bodytemp in BODYTEMP_COLD_WARNING_3 to BODYTEMP_COLD_WARNING_2) + humi.throw_alert("temp", /atom/movable/screen/alert/cold, 2) + else + humi.throw_alert("temp", /atom/movable/screen/alert/cold, 3) + + // We are not to hot or cold, remove status and moods + // Optimization here, we check these things based off the old temperature to avoid unneeded work + // We're not perfect about this, because it'd just add more work to the base case, and resistances are rare + else if (old_bodytemp > bodytemp_heat_damage_limit || old_bodytemp < bodytemp_cold_damage_limit) + humi.clear_alert("temp") + humi.remove_movespeed_modifier(/datum/movespeed_modifier/cold) + SEND_SIGNAL(humi, COMSIG_CLEAR_MOOD_EVENT, "cold") + SEND_SIGNAL(humi, COMSIG_CLEAR_MOOD_EVENT, "hot") + + // Store the old bodytemp for future checking + humi.old_bodytemperature = bodytemp - // Remove any slow down from the cold - H.remove_movespeed_modifier(/datum/movespeed_modifier/cold) +/** + * Used to apply wounds and damage based on core/body temp + * vars: + * * humi (required) The mob we will targeting + */ +/datum/species/proc/body_temperature_damage(mob/living/carbon/human/humi) - var/burn_damage = 0 - var/firemodifier = H.fire_stacks / 50 - if (!H.on_fire) // We are not on fire, reduce the modifier + //If the body temp is above the wound limit start adding exposure stacks + if(humi.bodytemperature > BODYTEMP_HEAT_WOUND_LIMIT) + humi.heat_exposure_stacks = min(humi.heat_exposure_stacks + 1, 40) + else //When below the wound limit, reduce the exposure stacks fast. + humi.heat_exposure_stacks = max(humi.heat_exposure_stacks - 4, 0) + + //when exposure stacks are greater then 10 + rand20 try to apply wounds and reset stacks + if(humi.heat_exposure_stacks > (10 + rand(0, 20))) + apply_burn_wounds(humi) + humi.heat_exposure_stacks = 0 + + // Body temperature is too hot, and we do not have resist traits + // Apply some burn damage to the body + if(humi.coretemperature > bodytemp_heat_damage_limit && !HAS_TRAIT(humi, TRAIT_RESISTHEAT)) + var/firemodifier = humi.fire_stacks / 50 + if (!humi.on_fire) // We are not on fire, reduce the modifier firemodifier = min(firemodifier, 0) // this can go below 5 at log 2.5 - burn_damage = max(log(2 - firemodifier, (H.bodytemperature - H.get_body_temp_normal())) - 5,0) - - // Display alerts based on the amount of fire damage being taken - if (burn_damage) - switch(burn_damage) - if(0 to 2) - H.throw_alert("temp", /atom/movable/screen/alert/hot, 1) - if(2 to 4) - H.throw_alert("temp", /atom/movable/screen/alert/hot, 2) - else - H.throw_alert("temp", /atom/movable/screen/alert/hot, 3) + var/burn_damage = max(log(2 - firemodifier, (humi.coretemperature - humi.get_body_temp_normal(apply_change=FALSE))) - 5,0) // Apply species and physiology modifiers to heat damage - burn_damage = burn_damage * heatmod * H.physiology.heat_mod + burn_damage = burn_damage * heatmod * humi.physiology.heat_mod // 40% for level 3 damage on humans to scream in pain - if (H.stat < UNCONSCIOUS && (prob(burn_damage) * 10) / 4) - H.emote("scream") + if (humi.stat < UNCONSCIOUS && (prob(burn_damage) * 10) / 4) + humi.emote("scream") // Apply the damage to all body parts - H.apply_damage(burn_damage, BURN) + humi.apply_damage(burn_damage, BURN) + + // Apply some burn damage to the body + if(humi.coretemperature < bodytemp_cold_damage_limit && !HAS_TRAIT(humi, TRAIT_RESISTCOLD)) + switch(humi.coretemperature) + if(201 to INFINITY) + humi.apply_damage(COLD_DAMAGE_LEVEL_1 * coldmod * humi.physiology.cold_mod, BURN) + if(120 to 200) + humi.apply_damage(COLD_DAMAGE_LEVEL_2 * coldmod * humi.physiology.cold_mod, BURN) + else + humi.apply_damage(COLD_DAMAGE_LEVEL_3 * coldmod * humi.physiology.cold_mod, BURN) - // Body temperature is too cold, and we do not have resist traits - else if(H.bodytemperature < bodytemp_cold_damage_limit && !HAS_TRAIT(H, TRAIT_RESISTCOLD)) - // clear any hot moods and apply cold mood - SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot") - SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "cold", /datum/mood_event/cold) - // Apply cold slow down - H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/cold, multiplicative_slowdown = ((bodytemp_cold_damage_limit - H.bodytemperature) / COLD_SLOWDOWN_FACTOR)) - // Display alerts based on the amount of cold damage being taken - // Apply more damage based on how cold you are - if (H.bodytemperature >= 200 && H.bodytemperature <= bodytemp_cold_damage_limit) - H.throw_alert("temp", /atom/movable/screen/alert/cold, 1) - H.apply_damage(COLD_DAMAGE_LEVEL_1 * coldmod * H.physiology.cold_mod, BURN) - else if (H.bodytemperature >= 120 && H.bodytemperature < 200) - H.throw_alert("temp", /atom/movable/screen/alert/cold, 2) - H.apply_damage(COLD_DAMAGE_LEVEL_2 * coldmod * H.physiology.cold_mod, BURN) - else - H.throw_alert("temp", /atom/movable/screen/alert/cold, 3) - H.apply_damage(COLD_DAMAGE_LEVEL_3 * coldmod * H.physiology.cold_mod, BURN) +/** + * Used to apply burn wounds on random limbs + * + * This is called from body_temperature_damage when exposure to extream heat adds up and causes a wound. + * The wounds will increase in severity as the temperature increases. + * vars: + * * humi (required) The mob we will targeting + */ +/datum/species/proc/apply_burn_wounds(mob/living/carbon/human/humi) + // If we are resistant to heat exit + if(HAS_TRAIT(humi, TRAIT_RESISTHEAT)) + return - // We are not to hot or cold, remove status and moods - else - H.clear_alert("temp") - H.remove_movespeed_modifier(/datum/movespeed_modifier/cold) - SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold") - SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot") + // If our body temp is to low for a wound exit + if(humi.bodytemperature < BODYTEMP_HEAT_WOUND_LIMIT) + return + + // Lets pick a random body part and check for an existing burn + var/obj/item/bodypart/bodypart = pick(humi.bodyparts) + /* No wounds yet + var/datum/wound/burn/existing_burn = locate(/datum/wound/burn) in bodypart.wounds + + // If we have an existing burn try to upgrade it + if(existing_burn) + switch(existing_burn.severity) + if(WOUND_SEVERITY_MODERATE) + if(humi.bodytemperature > BODYTEMP_HEAT_WOUND_LIMIT + 400) // 800k + bodypart.force_wound_upwards(/datum/wound/burn/severe) + if(WOUND_SEVERITY_SEVERE) + if(humi.bodytemperature > BODYTEMP_HEAT_WOUND_LIMIT + 2800) // 3200k + bodypart.force_wound_upwards(/datum/wound/burn/critical) + else // If we have no burn apply the lowest level burn + bodypart.force_wound_upwards(/datum/wound/burn/moderate) + */ + + // always take some burn damage + var/burn_damage = HEAT_DAMAGE_LEVEL_1 + if(humi.bodytemperature > BODYTEMP_HEAT_WOUND_LIMIT + 400) + burn_damage = HEAT_DAMAGE_LEVEL_2 + if(humi.bodytemperature > BODYTEMP_HEAT_WOUND_LIMIT + 2800) + burn_damage = HEAT_DAMAGE_LEVEL_3 + + humi.apply_damage(burn_damage, BURN, bodypart) /// Handle the air pressure of the environment /datum/species/proc/handle_environment_pressure(datum/gas_mixture/environment, mob/living/carbon/human/H) @@ -1931,12 +2115,10 @@ GLOBAL_LIST_EMPTY(features_by_species) // Set alerts and apply damage based on the amount of pressure switch(adjusted_pressure) - // Very high pressure, show an alert and take damage if(HAZARD_HIGH_PRESSURE to INFINITY) if(!HAS_TRAIT(H, TRAIT_RESISTHIGHPRESSURE)) - H.adjustBruteLoss(min(((adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 ) * \ - PRESSURE_DAMAGE_COEFFICIENT, MAX_HIGH_PRESSURE_DAMAGE) * H.physiology.pressure_mod) + H.adjustBruteLoss(min(((adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 ) * PRESSURE_DAMAGE_COEFFICIENT, MAX_HIGH_PRESSURE_DAMAGE) * H.physiology.pressure_mod) H.throw_alert("pressure", /atom/movable/screen/alert/highpressure, 2) else H.clear_alert("pressure") @@ -1966,62 +2148,6 @@ GLOBAL_LIST_EMPTY(features_by_species) H.adjustBruteLoss(LOW_PRESSURE_DAMAGE * H.physiology.pressure_mod) H.throw_alert("pressure", /atom/movable/screen/alert/lowpressure, 2) -/** - * Used to stabilize the body temperature back to normal on living mobs - * - * vars: - * * environment The environment gas mix - * * H The mob we will stabilize - */ -/datum/species/proc/natural_bodytemperature_stabilization(datum/gas_mixture/environment, mob/living/carbon/human/H) - var/areatemp = H.get_temperature(environment) - var/body_temp = H.bodytemperature // Get current body temperature - var/body_temperature_difference = H.get_body_temp_normal() - body_temp - var/natural_change = 0 - - // We are very cold, increase body temperature - if(body_temp <= bodytemp_cold_damage_limit) - natural_change = max((body_temperature_difference * H.metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR), \ - bodytemp_autorecovery_min) - - // we are cold, reduce the minimum increment and do not jump over the difference - else if(body_temp > bodytemp_cold_damage_limit && body_temp < H.get_body_temp_normal()) - natural_change = max(body_temperature_difference * H.metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR, \ - min(body_temperature_difference, bodytemp_autorecovery_min / 4)) - - // We are hot, reduce the minimum increment and do not jump below the difference - else if(body_temp > H.get_body_temp_normal() && body_temp <= bodytemp_heat_damage_limit) - natural_change = min(body_temperature_difference * H.metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR, \ - max(body_temperature_difference, -(bodytemp_autorecovery_min / 4))) - - // We are very hot, reduce the body temperature - else if(body_temp >= bodytemp_heat_damage_limit) - natural_change = min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -bodytemp_autorecovery_min) - - var/thermal_protection = H.get_insulation_protection(body_temp + natural_change) - if(areatemp > body_temp) // It is hot here - if(body_temp < H.get_body_temp_normal()) - // Our bodytemp is below normal we are cold, insulation helps us retain body heat - // and will reduce the heat we lose to the environment - natural_change = (thermal_protection + 1) * natural_change - else - // Our bodytemp is above normal and sweating, insulation hinders out ability to reduce heat - // but will reduce the amount of heat we get from the environment - natural_change = (1 / (thermal_protection + 1)) * natural_change - else // It is cold here - if(!H.on_fire) // If on fire ignore ignore local temperature in cold areas - if(body_temp < H.get_body_temp_normal()) - // Our bodytemp is below normal, insulation helps us retain body heat - // and will reduce the heat we lose to the environment - natural_change = (thermal_protection + 1) * natural_change - else - // Our bodytemp is above normal and sweating, insulation hinders out ability to reduce heat - // but will reduce the amount of heat we get from the environment - natural_change = (1 / (thermal_protection + 1)) * natural_change - - // Apply the natural stabilization changes - H.adjust_bodytemperature(natural_change) - ////////// // FIRE // ////////// diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 1b250df301b49..3ffbcfa97eabb 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -37,7 +37,7 @@ species_r_leg = /obj/item/bodypart/r_leg/lizard /// Lizards are cold blooded and do not stabilize body temperature naturally -/datum/species/lizard/natural_bodytemperature_stabilization(datum/gas_mixture/environment, mob/living/carbon/human/H) +/datum/species/lizard/body_temperature_core(mob/living/carbon/human/humi) return /datum/species/lizard/random_name(gender, unique, lastname, attempts) diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 915675b096a9b..5271df3f8a909 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -49,7 +49,7 @@ changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN /// Zombies do not stabilize body temperature they are the walking dead and are cold blooded -/datum/species/zombie/natural_bodytemperature_stabilization(datum/gas_mixture/environment, mob/living/carbon/human/H) +/datum/species/zombie/body_temperature_core(mob/living/carbon/human/humi) return /datum/species/zombie/infectious/check_roundstart_eligible() diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index caa03d3ed5587..19863f210eb53 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -681,7 +681,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put amount = (amount > 0) ? min(amount / BODYTEMP_HEAT_DIVISOR, BODYTEMP_HEATING_MAX) : max(amount / BODYTEMP_COLD_DIVISOR, BODYTEMP_COOLING_MAX) if(bodytemperature >= min_temp && bodytemperature <= max_temp) - bodytemperature = clamp(bodytemperature + amount,min_temp,max_temp) + bodytemperature = clamp(bodytemperature + amount, min_temp, max_temp) ///////// //LIVER// diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index f0d7ffa02ce91..473b83fd49cd1 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -73,7 +73,7 @@ /datum/emote/living/collapse/run_emote(mob/user, params, type_override, intentional) . = ..() - if(. && isliving(user)) + if(. && isliving(user) && intentional) var/mob/living/L = user L.Unconscious(40) @@ -121,7 +121,7 @@ /datum/emote/living/faint/run_emote(mob/user, params, type_override, intentional) . = ..() - if(. && isliving(user)) + if(. && isliving(user) && intentional) var/mob/living/L = user L.SetSleeping(200) @@ -243,7 +243,7 @@ /datum/emote/living/point/run_emote(mob/user, params, type_override, intentional) message_param = initial(message_param) // reset - if(ishuman(user)) + if(ishuman(user) && intentional) var/mob/living/carbon/human/H = user if(H.get_num_arms() == 0) if(H.get_num_legs() != 0) @@ -338,7 +338,7 @@ /datum/emote/living/surrender/run_emote(mob/user, params, type_override, intentional) . = ..() - if(. && isliving(user)) + if(. && isliving(user) && intentional) var/mob/living/L = user L.Paralyze(200) @@ -471,12 +471,13 @@ /datum/emote/living/circle/run_emote(mob/user, params, type_override, intentional) . = ..() - var/obj/item/circlegame/N = new(user) - if(user.put_in_hands(N)) - to_chat(user, "You make a circle with your hand.") - else - qdel(N) - to_chat(user, "You don't have any free hands to make a circle with.") + if(intentional) + var/obj/item/circlegame/N = new(user) + if(user.put_in_hands(N)) + to_chat(user, "You make a circle with your hand.") + else + qdel(N) + to_chat(user, "You don't have any free hands to make a circle with.") /datum/emote/living/slap key = "slap" @@ -487,11 +488,12 @@ . = ..() if(!.) return - var/obj/item/slapper/N = new(user) - if(user.put_in_hands(N)) - to_chat(user, "You ready your slapping hand.") - else - to_chat(user, "You're incapable of slapping in your current state.") + if(intentional) + var/obj/item/slapper/N = new(user) + if(user.put_in_hands(N)) + to_chat(user, "You ready your slapping hand.") + else + to_chat(user, "You're incapable of slapping in your current state.") /datum/emote/living/raisehand key = "highfive" @@ -499,14 +501,15 @@ message = "raises their hand" restraint_check = TRUE -/datum/emote/living/raisehand/run_emote(mob/user, params) +/datum/emote/living/raisehand/run_emote(mob/user, params, type_override, intentional) . = ..() - var/obj/item/highfive/N = new(user) - if(user.put_in_hands(N)) - to_chat(user, "You raise your hand for a high-five.") - else - qdel(N) - to_chat(user, "You don't have any free hands to high-five with.") + if(intentional) + var/obj/item/highfive/N = new(user) + if(user.put_in_hands(N)) + to_chat(user, "You raise your hand for a high-five.") + else + qdel(N) + to_chat(user, "You don't have any free hands to high-five with.") /datum/emote/living/fingergun key = "fingergun" @@ -514,14 +517,15 @@ message = "forms their fingers into the shape of a crude gun" restraint_check = TRUE -/datum/emote/living/fingergun/run_emote(mob/user, params) +/datum/emote/living/fingergun/run_emote(mob/user, params, type_override, intentional) . = ..() - var/obj/item/gun/ballistic/revolver/mime/N = new(user) - if(user.put_in_hands(N)) - to_chat(user, "You form your fingers into a gun.") - else - qdel(N) - to_chat(user, "You don't have any free hands to make fingerguns with.") + if(intentional) + var/obj/item/gun/ballistic/revolver/mime/N = new(user) + if(user.put_in_hands(N)) + to_chat(user, "You form your fingers into a gun.") + else + qdel(N) + to_chat(user, "You don't have any free hands to make fingerguns with.") /datum/emote/living/click key = "click" diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index f07099a5fa73b..3fbe8f1a1bc92 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -67,7 +67,7 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /mob/living/silicon/attack_hand(mob/living/carbon/human/M) . = FALSE - if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_HAND, M) & COMPONENT_NO_ATTACK_HAND) + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_HAND, M) & COMPONENT_CANCEL_ATTACK_CHAIN) . = TRUE switch(M.a_intent) if ("help") diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index c4adc619b768c..b64402066fbed 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -507,8 +507,7 @@ if(ranged && ranged_cooldown <= world.time) GiveTarget(A) OpenFire(A) - ..() - + return ..() ////// AI Status /////// diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm index ba1a973306c90..e7449cae7af34 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm @@ -41,7 +41,7 @@ damage_type = BURN nodamage = TRUE armor_flag = ENERGY - temperature = 50 + temperature = -50 // Cools you down! per hit! /mob/living/simple_animal/hostile/asteroid/basilisk/GiveTarget(new_target) if(..()) //we have a target @@ -129,7 +129,7 @@ damage = 5 damage_type = BURN nodamage = FALSE - temperature = 500 //Heats you up! + temperature = 200 // Heats you up! per hit! /obj/projectile/temp/basilisk/magmawing/on_hit(atom/target, blocked = FALSE) . = ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 1b60348ca4ba4..c16509a666297 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -963,6 +963,9 @@ /mob/proc/can_interact_with(atom/A, treat_mob_as_adjacent) if(IsAdminGhost(src)) return TRUE + var/datum/dna/mob_dna = has_dna() + if(mob_dna?.check_mutation(TK) && tkMaxRangeCheck(src, A)) + return TRUE if(treat_mob_as_adjacent && src == A.loc) return TRUE return Adjacent(A) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index bb49c951331bc..0a39af6912142 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -93,6 +93,9 @@ /// Default body temperature var/bodytemperature = BODYTEMP_NORMAL //310.15K / 98.6F + /// Our body temperatue as of the last process, prevents pointless work when handling alerts + var/old_bodytemperature = 0 + /// Drowsyness level of the mob var/drowsyness = 0//Carbon /// Dizziness level of the mob diff --git a/code/modules/movespeed/modifiers/components.dm b/code/modules/movespeed/modifiers/components.dm index a80bb1cf08b13..d74793f9b5b9b 100644 --- a/code/modules/movespeed/modifiers/components.dm +++ b/code/modules/movespeed/modifiers/components.dm @@ -6,16 +6,3 @@ /datum/movespeed_modifier/snail_crawl multiplicative_slowdown = -7 movetypes = GROUND - -/datum/movespeed_modifier/sanity - id = MOVESPEED_ID_SANITY - movetypes = (~FLYING) - -/datum/movespeed_modifier/sanity/insane - multiplicative_slowdown = 0.6 - -/datum/movespeed_modifier/sanity/crazy - multiplicative_slowdown = 0.3 - -/datum/movespeed_modifier/sanity/disturbed - multiplicative_slowdown = 0.15 diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm index 8fe3cbb80b03b..659b0ca082c42 100644 --- a/code/modules/movespeed/modifiers/mobs.dm +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -138,3 +138,13 @@ /datum/movespeed_modifier/nopowercell multiplicative_slowdown = 1.5 blacklisted_movetypes = FLOATING + +/datum/movespeed_modifier/visible_hunger + id = MOVESPEED_ID_VISIBLE_HUNGER + movetypes = (~FLYING) + +/datum/movespeed_modifier/visible_hunger/starving + multiplicative_slowdown = 0.6 + +/datum/movespeed_modifier/visible_hunger/hungry + multiplicative_slowdown = 0.2 diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index ba160f639105a..60e03f12459c5 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -81,11 +81,11 @@ /obj/structure/filingcabinet/attack_tk(mob/user) if(anchored) - attack_self_tk(user) - else - ..() + return attack_self_tk(user) + return ..() /obj/structure/filingcabinet/attack_self_tk(mob/user) + . = COMPONENT_CANCEL_ATTACK_CHAIN if(contents.len) if(prob(40 + contents.len * 5)) var/obj/item/I = pick(contents) diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index c9e9e1c2d2815..9e82edabda40a 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -621,8 +621,8 @@ to_chat(user, "You telekinetically remove the light [fitting].") // create a light tube/bulb item and put it in the user's hand - var/obj/item/light/L = drop_light_tube() - L.attack_tk(user) + var/obj/item/light/light_tube = drop_light_tube() + return light_tube.attack_tk(user) // break the light and make sparks if was on diff --git a/code/modules/power/lighting/light_construct.dm b/code/modules/power/lighting/light_construct.dm index fa5f81ca18724..96c23c8e7aaf4 100644 --- a/code/modules/power/lighting/light_construct.dm +++ b/code/modules/power/lighting/light_construct.dm @@ -54,11 +54,14 @@ add_fingerprint(user) /obj/structure/light_construct/attack_tk(mob/user) - if(cell) - to_chat(user, "You telekinetically remove [cell].") - cell.forceMove(drop_location()) - cell.attack_tk(user) - remove_cell() + if(!cell) + return + to_chat(user, "You telekinetically remove [cell].") + var/obj/item/stock_parts/cell/cell_reference = cell + cell = null + cell_reference.forceMove(drop_location()) + remove_cell() + return cell_reference.attack_tk(user) /obj/structure/light_construct/attackby(obj/item/W, mob/user, params) add_fingerprint(user) diff --git a/code/modules/power/singularity/boh_tear.dm b/code/modules/power/singularity/boh_tear.dm index 18b6b6e477614..ec5ef44fe2ddc 100644 --- a/code/modules/power/singularity/boh_tear.dm +++ b/code/modules/power/singularity/boh_tear.dm @@ -75,12 +75,14 @@ investigate_log("was created at [AREACOORD(T)].", INVESTIGATE_ENGINES) /obj/boh_tear/attack_tk(mob/living/user) - if(!istype(user)) + if(!isliving(user)) return - to_chat(user, "You don't feel like you are real anymore.") - user.dust_animation() - user.spawn_dust() - addtimer(CALLBACK(src, PROC_REF(consume), user), 5) + var/mob/living/jedi = user + to_chat(jedi, "You don't feel like you are real anymore.") + jedi.dust_animation() + jedi.spawn_dust() + addtimer(CALLBACK(src, PROC_REF(consume), jedi), 0.5 SECONDS) + return COMPONENT_CANCEL_ATTACK_CHAIN #undef BOH_TEAR_CONSUME_RANGE #undef BOH_TEAR_GRAV_PULL diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 2b85a17b9475f..e7d57f1962e6a 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -62,18 +62,58 @@ return ..() /obj/anomaly/singularity/attack_tk(mob/user) - if(iscarbon(user)) - var/mob/living/carbon/C = user - C.visible_message("[C]'s head begins to collapse in on itself!", "Your head feels like it's collapsing in on itself! This was really not a good idea!", "You hear something crack and explode in gore.") - var/turf/T = get_turf(C) - for(var/i in 1 to 3) - C.apply_damage(30, BRUTE, BODY_ZONE_HEAD) - new /obj/effect/gibspawner/generic(T, C) - sleep(1) - C.ghostize() - var/obj/item/bodypart/head/rip_u = C.get_bodypart(BODY_ZONE_HEAD) + if(!iscarbon(user)) + return + . = COMPONENT_CANCEL_ATTACK_CHAIN + var/mob/living/carbon/jedi = user + jedi.visible_message( + "[jedi]'s head begins to collapse in on itself!", + "Your head feels like it's collapsing in on itself! This was really not a good idea!", + "You hear something crack and explode in gore." + ) + jedi.Stun(3 SECONDS) + new /obj/effect/gibspawner/generic(get_turf(jedi), jedi) + jedi.apply_damage(30, BRUTE, BODY_ZONE_HEAD) + if(QDELETED(jedi)) + return // damage was too much + if(jedi.stat == DEAD) + jedi.ghostize() + var/obj/item/bodypart/head/rip_u = jedi.get_bodypart(BODY_ZONE_HEAD) rip_u.dismember(BURN) //nice try jedi qdel(rip_u) + return + addtimer(CALLBACK(src, PROC_REF(carbon_tk_part_two), jedi), 0.1 SECONDS) + + +/obj/anomaly/singularity/proc/carbon_tk_part_two(mob/living/carbon/jedi) + if(QDELETED(jedi)) + return + new /obj/effect/gibspawner/generic(get_turf(jedi), jedi) + jedi.apply_damage(30, BRUTE, BODY_ZONE_HEAD) + if(QDELETED(jedi)) + return // damage was too much + if(jedi.stat == DEAD) + jedi.ghostize() + var/obj/item/bodypart/head/rip_u = jedi.get_bodypart(BODY_ZONE_HEAD) + if(rip_u) + rip_u.dismember(BURN) + qdel(rip_u) + return + addtimer(CALLBACK(src, PROC_REF(carbon_tk_part_three), jedi), 0.1 SECONDS) + + +/obj/anomaly/singularity/proc/carbon_tk_part_three(mob/living/carbon/jedi) + if(QDELETED(jedi)) + return + new /obj/effect/gibspawner/generic(get_turf(jedi), jedi) + jedi.apply_damage(30, BRUTE, BODY_ZONE_HEAD) + if(QDELETED(jedi)) + return // damage was too much + jedi.ghostize() + var/obj/item/bodypart/head/rip_u = jedi.get_bodypart(BODY_ZONE_HEAD) + if(rip_u) + rip_u.dismember(BURN) + qdel(rip_u) /obj/anomaly/singularity/ex_act(severity, target) switch(severity) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index f9a76a0002bfb..e26fb9848c3cd 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -652,13 +652,16 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) Consume(B) /obj/machinery/power/supermatter_crystal/attack_tk(mob/user) - if(iscarbon(user)) - var/mob/living/carbon/C = user - to_chat(C, "That was a really dense idea.") - C.ghostize() - var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in C.internal_organs - rip_u.Remove(C) + if(!iscarbon(user)) + return + var/mob/living/carbon/jedi = user + to_chat(jedi, "That was a really dense idea.") + jedi.ghostize() + var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in jedi.internal_organs + if(rip_u) + rip_u.Remove(jedi) qdel(rip_u) + return COMPONENT_CANCEL_ATTACK_CHAIN /obj/machinery/power/supermatter_crystal/attack_paw(mob/user) dust_mob(user, cause = "monkey attack") diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 17485bfb998de..f1a2d9f89c515 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -147,14 +147,17 @@ dust_mobs(AM) /obj/anomaly/energy_ball/attack_tk(mob/user) - if(iscarbon(user)) - var/mob/living/carbon/C = user - to_chat(C, "That was a shockingly dumb idea.") - var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in C.internal_organs - C.ghostize(FALSE) + if(!iscarbon(user)) + return + var/mob/living/carbon/jedi = user + to_chat(jedi, "That was a shockingly dumb idea.") + var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in jedi.internal_organs + jedi.ghostize(jedi) + if(rip_u) qdel(rip_u) - C.investigate_log("had [C.p_their()] brain dusted by touching [src] with telekinesis.", INVESTIGATE_DEATHS) - C.death() + jedi.investigate_log("had [jedi.p_their()] brain dusted by touching [src] with telekinesis.", INVESTIGATE_DEATHS) + jedi.death() + return COMPONENT_CANCEL_ATTACK_CHAIN /obj/anomaly/energy_ball/proc/dust_mobs(atom/A) if(isliving(A)) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index ef43a95d157d2..43b51205ba111 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -10,6 +10,7 @@ item_state = "gun" flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT + item_flags = SLOWS_WHILE_IN_HAND custom_materials = list(/datum/material/iron=2000) w_class = WEIGHT_CLASS_LARGE throwforce = 5 @@ -91,13 +92,14 @@ var/ranged_cooldown = 0 // Equipping - /// The slowdown applied to mobs upon a gun being equipped - var/equip_slowdown = 0.5 /// The time it takes for a gun to count as equipped, null to get a precalculated value var/equip_time = null /// The timer ID of our equipping action VAR_PRIVATE/equip_timer_id + // Weapon slowdown + var/has_weapon_slowdown = TRUE + /obj/item/gun/Initialize(mapload) . = ..() if(pin) @@ -111,12 +113,16 @@ canMouseDown = automatic //Nsv13 / Bee change. build_zooming() if (isnull(equip_time)) - // Light guns: 1.5 second equip time - // Medium guns: 2 second equip time - // Heavy guns: 2.5 second equip time - equip_time = weapon_weight * 5 + 10 - if(isnull(spread_unwielded)) + // Light guns: 0.5 second equip time + // Medium guns: 0.8 second equip time + // Heavy guns: 1.1 second equip time + equip_time = weapon_weight * 3 + 2 + if (isnull(spread_unwielded)) spread_unwielded = weapon_weight * 10 + 10 + if (has_weapon_slowdown) + if (!slowdown) + slowdown = 0.3 + weapon_weight * 0.1 + item_flags |= SLOWS_WHILE_IN_HAND if(requires_wielding) RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(wield)) RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(unwield)) @@ -194,10 +200,7 @@ if (slot == ITEM_SLOT_HANDS) ranged_cooldown = max(world.time + equip_time, ranged_cooldown) user.client?.give_cooldown_cursor(ranged_cooldown - world.time) - equip_timer_id = addtimer(CALLBACK(src, PROC_REF(clear_gun_equip_slowdown), user), equip_time, TIMER_STOPPABLE) - user.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/drawing_firearm, multiplicative_slowdown = equip_slowdown) else - clear_gun_equip_slowdown(user) if (equip_timer_id) deltimer(equip_timer_id) equip_timer_id = null @@ -215,16 +218,10 @@ zoom(user, user.dir) update_icon() user.client?.clear_cooldown_cursor() - clear_gun_equip_slowdown(user) if (equip_timer_id) deltimer(equip_timer_id) equip_timer_id = null -/obj/item/gun/proc/clear_gun_equip_slowdown(mob/living/user) - slowdown = initial(slowdown) - user.remove_movespeed_modifier(/datum/movespeed_modifier/drawing_firearm) - equip_timer_id = null - //called after the gun has successfully fired its chambered ammo. /obj/item/gun/proc/process_chamber() return FALSE diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index ae12c1b291cbc..39a23bedd4240 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -16,7 +16,6 @@ fire_rate = 3 automatic = 0 weapon_weight = WEAPON_LIGHT - equip_time = 1 SECONDS /obj/item/gun/ballistic/automatic/pistol/no_mag spawnwithmagazine = FALSE @@ -51,6 +50,7 @@ wild_spread = TRUE wild_factor = 0.70 //Minimum spread is 70% of spread value equip_time = 0 + has_weapon_slowdown = FALSE /obj/item/gun/ballistic/automatic/pistol/der38/twelveshooter //For debugging only, or meme shit name = "palm pistol devastator" @@ -77,7 +77,6 @@ mag_type = /obj/item/ammo_box/magazine/m50 can_suppress = FALSE mag_display = TRUE - equip_time = 2 SECONDS /obj/item/gun/ballistic/automatic/pistol/deagle/gold desc = "A gold plated Desert Eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo." diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index dca47c5c7775c..122958ed3814c 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -64,6 +64,7 @@ desc = "Careful not to lose your head." can_sawoff = FALSE equip_time = 0 SECONDS + has_weapon_slowdown = FALSE recoil = 0 var/guns_left = 30 mag_type = /obj/item/ammo_box/magazine/internal/boltaction/enchanted diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index b16d26bfb6e63..6cddac9147b03 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -42,7 +42,6 @@ can_flashlight = TRUE flight_x_offset = 15 flight_y_offset = 10 - equip_time = 2 SECONDS /obj/item/gun/energy/disabler/cyborg name = "cyborg disabler" diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index d64cace153faf..1e1c36ed1a78f 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -22,6 +22,7 @@ pin = /obj/item/firing_pin/magic requires_wielding = FALSE //Magic has no recoil, just hold with 1 hand equip_time = 0 + has_weapon_slowdown = FALSE lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' //not really a gun and some toys use these inhands righthand_file = 'icons/mob/inhands/items_righthand.dmi' diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index c4f8a40c9c02d..d7372c5e07634 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -730,5 +730,5 @@ damage_type = BURN nodamage = FALSE armour_penetration = 100 - temperature = 50 + temperature = -200 // Cools you down greatly per hit armor_flag = MAGIC diff --git a/code/modules/projectiles/projectile/special/temperature.dm b/code/modules/projectiles/projectile/special/temperature.dm index 65dfd5c04d42a..6f6e39004e5d9 100644 --- a/code/modules/projectiles/projectile/special/temperature.dm +++ b/code/modules/projectiles/projectile/special/temperature.dm @@ -5,22 +5,31 @@ damage_type = BURN nodamage = FALSE armor_flag = ENERGY - var/temperature = 100 + var/temperature = -50 // reduce the body temperature by 50 points /obj/projectile/temp/on_hit(atom/target, blocked = 0) . = ..() - if(isliving(target)) + if(iscarbon(target)) + var/mob/living/carbon/hit_mob = target + var/thermal_protection = 1 - hit_mob.get_insulation_protection(hit_mob.bodytemperature + temperature) + + // The new body temperature is adjusted by the bullet's effect temperature + // Reduce the amount of the effect temperature change based on the amount of insulation the mob is wearing + hit_mob.adjust_bodytemperature((thermal_protection * temperature) + temperature) + + else if(isliving(target)) var/mob/living/L = target - L.adjust_bodytemperature(((100-blocked)/100)*(temperature - L.bodytemperature)) // the new body temperature is adjusted by 100-blocked % of the delta between body temperature and the bullet's effect temperature + // the new body temperature is adjusted by the bullet's effect temperature + L.adjust_bodytemperature((1 - blocked) * temperature) /obj/projectile/temp/hot name = "heat beam" - temperature = 400 + temperature = 100 // Raise the body temp by 100 points /obj/projectile/temp/cryo name = "cryo beam" range = 3 - temperature = -240 + temperature = -240 // Single slow shot reduces temp greatly /obj/projectile/temp/cryo/on_range() var/turf/T = get_turf(src) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 31704cc1e0950..c7ce0a2806bbc 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -29,6 +29,12 @@ M.adjust_bodytemperature(-40 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(apply_change=FALSE)) else if(M.bodytemperature < (M.get_body_temp_normal(apply_change=FALSE) + 1)) M.adjust_bodytemperature(40 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(apply_change=FALSE)) + if(ishuman(M)) + var/mob/living/carbon/human/humi = M + if(humi.coretemperature > humi.get_body_temp_normal(apply_change=FALSE)) + humi.adjust_coretemperature(-40 * TEMPERATURE_DAMAGE_COEFFICIENT, humi.get_body_temp_normal(apply_change=FALSE)) + else if(humi.coretemperature < (humi.get_body_temp_normal(apply_change=FALSE) + 1)) + humi.adjust_coretemperature(40 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, humi.get_body_temp_normal(apply_change=FALSE)) ..() /datum/reagent/medicine/leporazine/overdose_process(mob/living/M) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 54fca64948e53..79482f58bea95 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1115,16 +1115,18 @@ O?.wash(clean_types) /datum/reagent/space_cleaner/reaction_turf(turf/T, reac_volume) - if(reac_volume >= 1) - T.wash(clean_types) - for(var/am in T) - var/atom/movable/movable_content - if(ismopable(movable_content)) // Mopables will be cleaned anyways by the turf wash - continue - movable_content.wash(clean_types) + if(reac_volume < 1) + return - for(var/mob/living/simple_animal/slime/M in T) - M.adjustToxLoss(rand(5,10)) + T.wash(clean_types) + for(var/am in T) + var/atom/movable/movable_content = am + if(ismopable(movable_content)) // Mopables will be cleaned anyways by the turf wash + continue + movable_content.wash(clean_types) + + for(var/mob/living/simple_animal/slime/M in T) + M.adjustToxLoss(rand(5,10)) /datum/reagent/space_cleaner/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index ffb8c55fddcdd..3d8aa24424613 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -209,6 +209,9 @@ if(M.reagents.has_reagent(/datum/reagent/oxygen)) M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5) M.adjust_bodytemperature(-15) + if(ishuman(M)) + var/mob/living/carbon/human/humi = M + humi.adjust_coretemperature(-15) ..() /datum/reagent/cryostylane/reaction_turf(turf/T, reac_volume) @@ -231,6 +234,9 @@ if(M.reagents.has_reagent(/datum/reagent/oxygen)) M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5) M.adjust_bodytemperature(15) + if(ishuman(M)) + var/mob/living/carbon/human/humi = M + humi.adjust_coretemperature(15) ..() /datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective. diff --git a/code/modules/religion/_religion_sects.dm b/code/modules/religion/_religion_sects.dm new file mode 100644 index 0000000000000..d9290a9aa151d --- /dev/null +++ b/code/modules/religion/_religion_sects.dm @@ -0,0 +1,123 @@ +/** + * # Religious Sects + * + * Religious Sects are a way to convert the fun of having an active 'god' (admin) to code-mechanics so you aren't having to press adminwho. + * + * Sects are not meant to overwrite the fun of choosing a custom god/religion, but meant to enhance it. + * The idea is that Space Jesus (or whoever you worship) can be an evil bloodgod who takes the lifeforce out of people, a nature lover, or all things righteous and good. You decide! + * + */ +/datum/religion_sect + /// Name of the religious sect + var/name = "Religious Sect Base Type" + /// Flavorful quote given about the sect, used in tgui + var/quote = "Hail Coderbus! Coderbus #1! Fuck the playerbase!" + /// Opening message when someone gets converted + var/desc = "Oh My! What Do We Have Here?!!?!?!?" + /// Tgui icon used by this sect - https://fontawesome.com/icons/ + var/tgui_icon = "bug" + /// holder for alignments. + var/alignment = ALIGNMENT_GOOD + /// Does this require something before being available as an option? + var/starter = TRUE + /// species traits that block you from picking + var/invalidating_qualities = NONE + /// The Sect's 'Mana' + var/favor = 0 //MANA! + /// The max amount of favor the sect can have + var/max_favor = 1000 + /// The default value for an item that can be sacrificed + var/default_item_favor = 5 + /// Turns into 'desired_items_typecache', and is optionally assoc'd to sacrifice instructions if needed. + var/list/desired_items + /// Autopopulated by `desired_items` + var/list/desired_items_typecache + /// Lists of rites by type. Converts itself into a list of rites with "name - desc (favor_cost)" = type + var/list/rites_list + /// Changes the Altar of Gods icon + var/altar_icon + /// Changes the Altar of Gods icon_state + var/altar_icon_state + /// Currently Active (non-deleted) rites + var/list/active_rites + /// Whether the structure has CANDLE OVERLAYS! + var/candle_overlay = TRUE + /// Whether the altar of the gods is anchored + var/altar_anchored = TRUE + +/datum/religion_sect/proc/is_available(mob/user) + return TRUE // basically all available + +/datum/religion_sect/New() + . = ..() + if(desired_items) + desired_items_typecache = typecacheof(desired_items) + +/// Activates once selected +/datum/religion_sect/proc/on_select() + SHOULD_CALL_PARENT(TRUE) + SSblackbox.record_feedback("text", "sect_chosen", 1, name) + +/// Activates once selected and on newjoins, oriented around people who become holy. +/datum/religion_sect/proc/on_conversion(mob/living/chap) + SHOULD_CALL_PARENT(TRUE) + to_chat(chap, "\"[quote]\"") + to_chat(chap, "[desc]") + +/// Returns TRUE if the item can be sacrificed. Can be modified to fit item being tested as well as person offering. Returning TRUE will stop the attackby sequence and proceed to on_sacrifice. +/datum/religion_sect/proc/can_sacrifice(obj/item/I, mob/living/chap) + . = TRUE + if(chap.mind.holy_role == HOLY_ROLE_DEACON) + to_chat(chap, "You are merely a deacon of [GLOB.deity], and therefore cannot perform rites.") + return + if(!is_type_in_typecache(I,desired_items_typecache)) + return FALSE + +/// Activates when the sect sacrifices an item. This proc has NO bearing on the attackby sequence of other objects when used in conjunction with the religious_tool component. +/datum/religion_sect/proc/on_sacrifice(obj/item/I, mob/living/chap) + return adjust_favor(default_item_favor,chap) + +/// Returns a description for religious tools +/datum/religion_sect/proc/tool_examine(mob/living/holy_creature) + return "You are currently at [round(favor)] favor with [GLOB.deity]." + +/// Adjust Favor by a certain amount. Can provide optional features based on a user. Returns actual amount added/removed +/datum/religion_sect/proc/adjust_favor(amount = 0, mob/living/chap) + . = amount + if(favor + amount < 0) + . = favor //if favor = 5 and we want to subtract 10, we'll only be able to subtract 5 + if((favor + amount > max_favor)) + . = (max_favor-favor) //if favor = 5 and we want to add 10 with a max of 10, we'll only be able to add 5 + favor = clamp(0,max_favor, favor+amount) + +/// Sets favor to a specific amount. Can provide optional features based on a user. +/datum/religion_sect/proc/set_favor(amount = 0, mob/living/chap) + favor = clamp(0,max_favor,amount) + return favor + +/// Activates when an individual uses a rite. Can provide different/additional benefits depending on the user. +/datum/religion_sect/proc/on_riteuse(mob/living/user, atom/religious_tool) + +/// Replaces the bible's bless mechanic. Return TRUE if you want to not do the brain hit. +/datum/religion_sect/proc/sect_bless(mob/living/target, mob/living/chap) + if(!ishuman(target)) + return FALSE + var/mob/living/carbon/human/blessed = target + for(var/obj/item/bodypart/bodypart as anything in blessed.bodyparts) + if(!IS_ORGANIC_LIMB(bodypart)) + to_chat(chap, "[GLOB.deity] refuses to heal this metallic taint!") + return TRUE + + var/heal_amt = 10 + var/list/hurt_limbs = blessed.get_damaged_bodyparts(1, 1, null, BODYTYPE_ORGANIC) + + if(hurt_limbs.len) + for(var/X in hurt_limbs) + var/obj/item/bodypart/affecting = X + if(affecting.heal_damage(heal_amt, heal_amt, null, BODYTYPE_ORGANIC)) + blessed.update_damage_overlays() + blessed.visible_message("[chap] heals [blessed] with the power of [GLOB.deity]!") + to_chat(blessed, "May the power of [GLOB.deity] compel you to be healed!") + playsound(chap, "punch", 25, TRUE, -1) + SEND_SIGNAL(blessed, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + return TRUE diff --git a/code/modules/religion/_religion_structures.dm b/code/modules/religion/_religion_structures.dm new file mode 100644 index 0000000000000..897c11faae179 --- /dev/null +++ b/code/modules/religion/_religion_structures.dm @@ -0,0 +1,71 @@ +/obj/structure/altar_of_gods + name = "\improper Altar of the Gods" + desc = "An altar which allows the head of the church to choose a sect of religious teachings as well as provide sacrifices to earn favor." + icon = 'icons/obj/hand_of_god_structures.dmi' + icon_state = "convertaltar" + density = TRUE + anchored = TRUE + layer = TABLE_LAYER + pass_flags_self = LETPASSTHROW + can_buckle = TRUE + buckle_lying = 90 //we turn to you! + resistance_flags = INDESTRUCTIBLE + ///Avoids having to check global everytime by referencing it locally. + var/datum/religion_sect/sect_to_altar + +/obj/structure/altar_of_gods/Initialize(mapload) + . = ..() + reflect_sect_in_icons() + AddElement(/datum/element/climbable) + +/obj/structure/altar_of_gods/ComponentInitialize() + . = ..() + AddComponent(/datum/component/religious_tool, ALL, FALSE, CALLBACK(src, PROC_REF(reflect_sect_in_icons))) + +/obj/structure/altar_of_gods/attack_hand(mob/living/user) + if(!Adjacent(user) || !user.pulling) + return ..() + if(!isliving(user.pulling)) + return ..() + var/mob/living/pushed_mob = user.pulling + if(pushed_mob.buckled) + to_chat(user, "[pushed_mob] is buckled to [pushed_mob.buckled]!") + return ..() + to_chat(user,"Only the faithful may control the disposition of [src]!") + return + anchored = !anchored + if(GLOB.religious_sect) + GLOB.religious_sect.altar_anchored = anchored //Having more than one altar of the gods is only possible through adminbus so this should screw with normal gameplay + user.visible_message("[user] [anchored ? "" : "un"]anchors [src] [anchored ? "to" : "from"] the floor with [I].", "You [anchored ? "" : "un"]anchor [src] [anchored ? "to" : "from"] the floor with [I].") + playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) + user.do_attack_animation(src) + return + if(I.tool_behaviour == TOOL_WRENCH) + return + return ..() + + +/obj/structure/altar_of_gods/proc/reflect_sect_in_icons() + if(GLOB.religious_sect) + sect_to_altar = GLOB.religious_sect + if(sect_to_altar.altar_icon) + icon = sect_to_altar.altar_icon + if(sect_to_altar.altar_icon_state) + icon_state = sect_to_altar.altar_icon_state + +/obj/structure/destructible/religion + density = TRUE + anchored = FALSE + icon = 'icons/obj/religion.dmi' + light_power = 2 + var/cooldowntime = 0 + break_sound = 'sound/effects/glassbr2.ogg' diff --git a/code/modules/religion/_rites.dm b/code/modules/religion/_rites.dm new file mode 100644 index 0000000000000..010a8c59c04ef --- /dev/null +++ b/code/modules/religion/_rites.dm @@ -0,0 +1,78 @@ +/datum/religion_rites + /// name of the religious rite + var/name = "religious rite" + /// Description of the religious rite + var/desc = "immm gonna rooon" + /// length it takes to complete the ritual + var/ritual_length = (10 SECONDS) //total length it'll take + /// list of invocations said (strings) throughout the rite + var/list/ritual_invocations //strings that are by default said evenly throughout the rite + /// message when you invoke + var/invoke_msg + var/favor_cost = 0 + /// does the altar auto-delete the rite + var/auto_delete = TRUE + +/datum/religion_rites/New() + . = ..() + if(!GLOB?.religious_sect) + return + LAZYADD(GLOB.religious_sect.active_rites, src) + +/datum/religion_rites/Destroy() + if(!GLOB?.religious_sect) + return + LAZYREMOVE(GLOB.religious_sect.active_rites, src) + return ..() + +/datum/religion_rites/proc/can_afford(mob/living/user) + if(GLOB.religious_sect?.favor < favor_cost) + to_chat(user, "This rite requires more favor!") + return FALSE + return TRUE + +///Called to perform the invocation of the rite, with args being the performer and the altar where it's being performed. Maybe you want it to check for something else? +/datum/religion_rites/proc/perform_rite(mob/living/user, atom/religious_tool) + if(!can_afford(user)) + return FALSE + var/turf/T = get_turf(religious_tool) + if(!T.is_holy()) + to_chat(user, "The altar can only function in a holy area!") + return FALSE + if(!GLOB.religious_sect.altar_anchored) + to_chat(user, "The altar must be secured to the floor if you wish to perform the rite!") + return FALSE + to_chat(user, "You begin to perform the rite of [name]...") + if(!ritual_invocations) + if(do_after(user, target = user, delay = ritual_length)) + return TRUE + return FALSE + var/first_invoke = TRUE + for(var/i in ritual_invocations) + if(!GLOB.religious_sect.altar_anchored) + to_chat(user, "The altar must be secured to the floor if you wish to perform the rite!") + return FALSE + if(first_invoke) //instant invoke + user.say(i) + first_invoke = FALSE + continue + if(!length(ritual_invocations)) //we divide so we gotta protect + return FALSE + if(!do_after(user, target = user, delay = ritual_length/length(ritual_invocations))) + return FALSE + user.say(i) + if(!do_after(user, target = user, delay = ritual_length/length(ritual_invocations))) //because we start at 0 and not the first fraction in invocations, we still have another fraction of ritual_length to complete + return FALSE + if(!GLOB.religious_sect.altar_anchored) + to_chat(user, "The altar must be secured to the floor if you wish to perform the rite!") + return FALSE + if(invoke_msg) + user.say(invoke_msg) + return TRUE + + +///Does the thing if the rite was successfully performed. return value denotes that the effect successfully (IE a harm rite does harm) +/datum/religion_rites/proc/invoke_effect(mob/living/user, atom/religious_tool) + SHOULD_CALL_PARENT(TRUE) + GLOB.religious_sect.on_riteuse(user,religious_tool) + return TRUE diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm deleted file mode 100644 index c773691fe9b8e..0000000000000 --- a/code/modules/religion/religion_sects.dm +++ /dev/null @@ -1,359 +0,0 @@ -/** - * # Religious Sects - * - * Religious Sects are a way to convert the fun of having an active 'god' (admin) to code-mechanics so you aren't having to press adminwho. - * - * Sects are not meant to overwrite the fun of choosing a custom god/religion, but meant to enhance it. - * The idea is that Space Jesus (or whoever you worship) can be an evil bloodgod who takes the lifeforce out of people, a nature lover, or all things righteous and good. You decide! - * - */ -/datum/religion_sect - /// Name of the religious sect - var/name = "Religious Sect Base Type" - /// Flavorful quote given about the sect, used in tgui - var/quote = "Hail Coderbus! Coderbus #1! Fuck the playerbase!" - /// Opening message when someone gets converted - var/desc = "Oh My! What Do We Have Here?!!?!?!?" - /// Tgui icon used by this sect - https://fontawesome.com/icons/ - var/tgui_icon = "bug" - /// holder for alignments. - var/alignment = ALIGNMENT_GOOD - /// Does this require something before being available as an option? - var/starter = TRUE - /// species traits that block you from picking - var/invalidating_qualities = NONE - /// The Sect's 'Mana' - var/favor = 0 //MANA! - /// The max amount of favor the sect can have - var/max_favor = 1000 - /// The default value for an item that can be sacrificed - var/default_item_favor = 5 - /// Turns into 'desired_items_typecache', and is optionally assoc'd to sacrifice instructions if needed. - var/list/desired_items - /// Autopopulated by `desired_items` - var/list/desired_items_typecache - /// Lists of rites by type. Converts itself into a list of rites with "name - desc (favor_cost)" = type - var/list/rites_list - /// Changes the Altar of Gods icon - var/altar_icon - /// Changes the Altar of Gods icon_state - var/altar_icon_state - /// Currently Active (non-deleted) rites - var/list/active_rites - /// Whether the structure has CANDLE OVERLAYS! - var/candle_overlay = TRUE - /// Whether the altar of the gods is anchored - var/altar_anchored = TRUE - -/datum/religion_sect/proc/is_available(mob/user) - return TRUE // basically all available - -/datum/religion_sect/New() - . = ..() - if(desired_items) - desired_items_typecache = typecacheof(desired_items) - -/// Activates once selected -/datum/religion_sect/proc/on_select() - SHOULD_CALL_PARENT(TRUE) - SSblackbox.record_feedback("text", "sect_chosen", 1, name) - -/// Activates once selected and on newjoins, oriented around people who become holy. -/datum/religion_sect/proc/on_conversion(mob/living/chap) - SHOULD_CALL_PARENT(TRUE) - to_chat(chap, "\"[quote]\"") - to_chat(chap, "[desc]") - -/// Returns TRUE if the item can be sacrificed. Can be modified to fit item being tested as well as person offering. Returning TRUE will stop the attackby sequence and proceed to on_sacrifice. -/datum/religion_sect/proc/can_sacrifice(obj/item/I, mob/living/chap) - . = TRUE - if(chap.mind.holy_role == HOLY_ROLE_DEACON) - to_chat(chap, "You are merely a deacon of [GLOB.deity], and therefore cannot perform rites.") - return - if(!is_type_in_typecache(I,desired_items_typecache)) - return FALSE - -/// Activates when the sect sacrifices an item. This proc has NO bearing on the attackby sequence of other objects when used in conjunction with the religious_tool component. -/datum/religion_sect/proc/on_sacrifice(obj/item/I, mob/living/chap) - return adjust_favor(default_item_favor,chap) - -/// Returns a description for religious tools -/datum/religion_sect/proc/tool_examine(mob/living/holy_creature) - return "You are currently at [round(favor)] favor with [GLOB.deity]." - -/// Adjust Favor by a certain amount. Can provide optional features based on a user. Returns actual amount added/removed -/datum/religion_sect/proc/adjust_favor(amount = 0, mob/living/chap) - . = amount - if(favor + amount < 0) - . = favor //if favor = 5 and we want to subtract 10, we'll only be able to subtract 5 - if((favor + amount > max_favor)) - . = (max_favor-favor) //if favor = 5 and we want to add 10 with a max of 10, we'll only be able to add 5 - favor = clamp(0,max_favor, favor+amount) - -/// Sets favor to a specific amount. Can provide optional features based on a user. -/datum/religion_sect/proc/set_favor(amount = 0, mob/living/chap) - favor = clamp(0,max_favor,amount) - return favor - -/// Activates when an individual uses a rite. Can provide different/additional benefits depending on the user. -/datum/religion_sect/proc/on_riteuse(mob/living/user, atom/religious_tool) - -/// Replaces the bible's bless mechanic. Return TRUE if you want to not do the brain hit. -/datum/religion_sect/proc/sect_bless(mob/living/target, mob/living/chap) - if(!ishuman(target)) - return FALSE - var/mob/living/carbon/human/blessed = target - for(var/obj/item/bodypart/bodypart as anything in blessed.bodyparts) - if(!IS_ORGANIC_LIMB(bodypart)) - to_chat(chap, "[GLOB.deity] refuses to heal this metallic taint!") - return TRUE - - var/heal_amt = 10 - var/list/hurt_limbs = blessed.get_damaged_bodyparts(1, 1, null, BODYTYPE_ORGANIC) - - if(hurt_limbs.len) - for(var/X in hurt_limbs) - var/obj/item/bodypart/affecting = X - if(affecting.heal_damage(heal_amt, heal_amt, null, BODYTYPE_ORGANIC)) - blessed.update_damage_overlays() - blessed.visible_message("[chap] heals [blessed] with the power of [GLOB.deity]!") - to_chat(blessed, "May the power of [GLOB.deity] compel you to be healed!") - playsound(chap, "punch", 25, TRUE, -1) - SEND_SIGNAL(blessed, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) - return TRUE - -/**** Nanotrasen Approved God ****/ - -/datum/religion_sect/puritanism - name = "Nanotrasen Approved God" - desc = "Your run-of-the-mill sect, there are no benefits or boons associated." - quote = "Nanotrasen Recommends!" - tgui_icon = "bible" - -/**** Technophile Sect ****/ - -/datum/religion_sect/technophile - name = "Technophile" - quote = "May you find peace in a metal shell." - desc = "Bibles now recharge cyborgs and heal robotic limbs if targeted, but they \ - do not heal organic limbs. You can now sacrifice cells, with favor depending on their charge." - tgui_icon = "robot" - alignment = ALIGNMENT_NEUT - desired_items = list(/obj/item/stock_parts/cell = "with battery charge") - rites_list = list(/datum/religion_rites/synthconversion, /datum/religion_rites/machine_blessing, /datum/religion_rites/machine_implantation) - altar_icon_state = "convertaltar-blue" - max_favor = 5000 - -/datum/religion_sect/technophile/sect_bless(mob/living/target, mob/living/chap) - if(iscyborg(target)) - var/mob/living/silicon/robot/R = target - var/charge_amt = 50 - if(target.mind?.holy_role == HOLY_ROLE_HIGHPRIEST) - charge_amt *= 2 - R.cell?.charge += charge_amt - R.visible_message("[chap] charges [R] with the power of [GLOB.deity]!") - to_chat(R, "You are charged by the power of [GLOB.deity]!") - SEND_SIGNAL(R, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) - playsound(chap, 'sound/effects/bang.ogg', 25, TRUE, -1) - return TRUE - if(!ishuman(target)) - return - var/mob/living/carbon/human/blessed = target - - //first we determine if we can charge them - var/did_we_charge = FALSE - var/obj/item/organ/stomach/battery/ethereal/eth_stomach = blessed.getorganslot(ORGAN_SLOT_STOMACH) - if(istype(eth_stomach)) - eth_stomach.adjust_charge(60) - did_we_charge = TRUE - - //if we're not targeting a robot part we stop early - var/obj/item/bodypart/bodypart = blessed.get_bodypart(chap.get_combat_bodyzone(target, zone_context = BODYZONE_CONTEXT_ROBOTIC_LIMB_HEALING)) - if(IS_ORGANIC_LIMB(bodypart)) - if(!did_we_charge) - to_chat(chap, "[GLOB.deity] scoffs at the idea of healing such fleshy matter!") - else - blessed.visible_message("[chap] charges [blessed] with the power of [GLOB.deity]!") - to_chat(blessed, "You feel charged by the power of [GLOB.deity]!") - SEND_SIGNAL(blessed, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) - playsound(chap, 'sound/machines/synth_yes.ogg', 25, TRUE, -1) - return TRUE - - //charge(?) and go - if(bodypart.heal_damage(5,5,null,BODYTYPE_ROBOTIC)) - blessed.update_damage_overlays() - - blessed.visible_message("[chap] [did_we_charge ? "repairs" : "repairs and charges"] [blessed] with the power of [GLOB.deity]!") - to_chat(blessed, "The inner machinations of [GLOB.deity] [did_we_charge ? "repairs" : "repairs and charges"] you!") - playsound(chap, 'sound/effects/bang.ogg', 25, TRUE, -1) - SEND_SIGNAL(blessed, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) - return TRUE - -/datum/religion_sect/technophile/on_sacrifice(obj/item/I, mob/living/chap) - var/obj/item/stock_parts/cell/the_cell = I - if(!istype(the_cell)) //how... - return - if(the_cell.charge < 300) - to_chat(chap,"[GLOB.deity] does not accept pity amounts of power.") - return - adjust_favor(round(the_cell.charge/100), chap) - to_chat(chap, "You offer [the_cell]'s power to [GLOB.deity], pleasing them.") - qdel(I) - return TRUE - -/**** Ever-Burning Candle sect ****/ - -/datum/religion_sect/candle_sect - name = "Ever-Burning Candle" - desc = "Sacrificing burning corpses with a lot of burn damage and candles grants you favor." - quote = "It must burn! The primal energy must be respected." - tgui_icon = "fire-alt" - alignment = ALIGNMENT_NEUT - max_favor = 10000 - desired_items = list(/obj/item/candle = "already lit") - rites_list = list(/datum/religion_rites/fireproof, /datum/religion_rites/burning_sacrifice, /datum/religion_rites/infinite_candle) - altar_icon_state = "convertaltar-red" - -//candle sect bibles don't heal or do anything special apart from the standard holy water blessings -/datum/religion_sect/candle_sect/sect_bless(mob/living/target, mob/living/chap) - return TRUE - -/datum/religion_sect/candle_sect/on_sacrifice(obj/item/candle/offering, mob/living/user) - if(!istype(offering)) - return - if(!offering.lit) - to_chat(user, "The candle needs to be lit to be offered!") - return - to_chat(user, "[GLOB.deity] is pleased with your sacrifice.") - adjust_favor(20, user) //it's not a lot but hey there's a pacifist favor option at least - qdel(offering) - return TRUE - -/**** Necromantic Sect ****/ - -/datum/religion_sect/necro_sect - name = "Necromancy" - desc = "A sect dedicated to the revival and summoning of the dead. Sacrificing living animals grants you favor." - quote = "An undead army is a must have!" - tgui_icon = "skull" - alignment = ALIGNMENT_EVIL - max_favor = 10000 - desired_items = list(/obj/item/organ/) - rites_list = list(/datum/religion_rites/raise_dead, /datum/religion_rites/living_sacrifice, /datum/religion_rites/raise_undead, /datum/religion_rites/create_lesser_lich) - altar_icon_state = "convertaltar-green" - -//Necro bibles don't heal or do anything special apart from the standard holy water blessings -/datum/religion_sect/necro_sect/sect_bless(mob/living/blessed, mob/living/user) - return TRUE - -/datum/religion_sect/necro_sect/on_sacrifice(obj/item/N, mob/living/L) - if(!istype(N, /obj/item/organ)) - return - adjust_favor(10, L) - to_chat(L, "You offer [N] to [GLOB.deity], pleasing them and gaining 10 favor in the process.") - qdel(N) - return TRUE - -/**** Carp Sect ****/ - -/datum/religion_sect/carp_sect - name = "Followers of the Great Carp" - desc = "A sect dedicated to the space carp and carp'sie, Offer the gods meat for favor." - quote = "Drown the station in fish and water." - tgui_icon = "fish" - alignment = ALIGNMENT_NEUT - max_favor = 10000 - desired_items = list(/obj/item/food/meat/slab) - rites_list = list(/datum/religion_rites/summon_carp, /datum/religion_rites/flood_area, /datum/religion_rites/summon_carpsuit) - altar_icon_state = "convertaltar-blue" - -//Carp bibles give people the carp faction! -/datum/religion_sect/carp_sect/sect_bless(mob/living/L, mob/living/user) - if(!isliving(L)) - return FALSE - L.faction |= "carp" - user.visible_message("[user] blessed [L] with the power of [GLOB.deity]! They are now protected from Space Carps, Although carps will still fight back if attacked.") - SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) - return TRUE - -/datum/religion_sect/carp_sect/on_sacrifice(obj/item/N, mob/living/L) //and this - var/obj/item/food/meat/meat = N - if(!istype(meat)) //how... - return - adjust_favor(20, L) - to_chat(L, "You offer [meat] to [GLOB.deity], pleasing them and gaining 20 favor in the process.") - qdel(N) - return TRUE - -/**** Plant Sect ****/ - -/datum/religion_sect/plant_sect - name = "Nature" - desc = "A sect dedicated to nature, plants, and animals. Sacrificing seeds grants you favor." - quote = "Living plant people? What has the world come to!" - tgui_icon = "tree" - alignment = ALIGNMENT_GOOD - max_favor = 10000 - desired_items = list(/obj/item/seeds) - rites_list = list(/datum/religion_rites/create_podperson, /datum/religion_rites/create_sandstone, /datum/religion_rites/grass_generator, /datum/religion_rites/summon_animals) - altar_icon_state = "convertaltar-green" - -//plant bibles don't heal or do anything special apart from the standard holy water blessings -/datum/religion_sect/plant_sect/sect_bless(mob/living/blessed, mob/living/user) - return TRUE - -/datum/religion_sect/plant_sect/on_sacrifice(obj/item/N, mob/living/L) - if(!istype(N, /obj/item/seeds)) - return - adjust_favor(25, L) - to_chat(L, "You offer [N] to [GLOB.deity], pleasing them and gaining 25 favor in the process.") - qdel(N) - return TRUE - -/**** Shadow Sect ****/ - -/datum/religion_sect/shadow_sect - starter = FALSE - name = "Shadow" - desc = "A sect dedicated to the darkness. The manifested obelisks will generate favor from being in darkness." - quote = "Turn out the lights, and let the darkness cover the world!" - tgui_icon = "moon" - alignment = ALIGNMENT_EVIL - favor = 100 //Starts off with enough favor to make an obelisk - max_favor = 25000 - desired_items = list(/obj/item/flashlight) - rites_list = list(/datum/religion_rites/expand_shadows,/datum/religion_rites/shadow_obelisk, /datum/religion_rites/shadow_conversion,/datum/religion_rites/shadow_blessing,/datum/religion_rites/shadow_eyes) - altar_icon_state = "convertaltar-dark" - var/light_reach = 1 - var/light_power = 0 - var/list/obelisks = list() - -/datum/religion_sect/shadow_sect/is_available(mob/user) - if(isshadow(user)) - return TRUE - return FALSE - -//Shadow bibles don't heal or do anything special apart from the standard holy water blessings -/datum/religion_sect/shadow_sect/sect_bless(mob/living/blessed, mob/living/user) - return TRUE - -/datum/religion_sect/shadow_sect/on_sacrifice(obj/item/N, mob/living/L) - if(!istype(N, /obj/item/flashlight)) - return - adjust_favor(5, L) - to_chat(L, "You offer [N] to [GLOB.deity], pleasing them and gaining 5 favor in the process.") - qdel(N) - return TRUE - -/datum/religion_sect/shadow_sect/on_select(atom/religious_tool, mob/living/user) - . = ..() - if(!religious_tool || !user) - return - religious_tool.AddComponent(/datum/component/dark_favor, user) - -/datum/religion_sect/shadow_sect/on_conversion(mob/living/chap) //When sect is selected, and when a new chaplain joins after sect has been selected - . = ..() - if(is_special_character(chap)) - to_chat(chap, "As you are an antagonist role, you are free to spread darkness across the station.") - else - to_chat(chap, "You are not an antagonist, please do not spread darkness outside of the chapel without Command Staff approval.") diff --git a/code/modules/religion/religion_structures.dm b/code/modules/religion/religion_structures.dm deleted file mode 100644 index 929544ec4c31d..0000000000000 --- a/code/modules/religion/religion_structures.dm +++ /dev/null @@ -1,216 +0,0 @@ -/obj/structure/altar_of_gods - name = "\improper Altar of the Gods" - desc = "An altar which allows the head of the church to choose a sect of religious teachings as well as provide sacrifices to earn favor." - icon = 'icons/obj/hand_of_god_structures.dmi' - icon_state = "convertaltar" - density = TRUE - anchored = TRUE - layer = TABLE_LAYER - pass_flags_self = LETPASSTHROW - can_buckle = TRUE - buckle_lying = 90 //we turn to you! - resistance_flags = INDESTRUCTIBLE - ///Avoids having to check global everytime by referencing it locally. - var/datum/religion_sect/sect_to_altar - -/obj/structure/altar_of_gods/Initialize(mapload) - . = ..() - reflect_sect_in_icons() - AddElement(/datum/element/climbable) - -/obj/structure/altar_of_gods/ComponentInitialize() - . = ..() - AddComponent(/datum/component/religious_tool, ALL, FALSE, CALLBACK(src, PROC_REF(reflect_sect_in_icons))) - -/obj/structure/altar_of_gods/attack_hand(mob/living/user) - if(!Adjacent(user) || !user.pulling) - return ..() - if(!isliving(user.pulling)) - return ..() - var/mob/living/pushed_mob = user.pulling - if(pushed_mob.buckled) - to_chat(user, "[pushed_mob] is buckled to [pushed_mob.buckled]!") - return ..() - to_chat(user,"Only the faithful may control the disposition of [src]!") - return - anchored = !anchored - if(GLOB.religious_sect) - GLOB.religious_sect.altar_anchored = anchored //Having more than one altar of the gods is only possible through adminbus so this should screw with normal gameplay - user.visible_message("[user] [anchored ? "" : "un"]anchors [src] [anchored ? "to" : "from"] the floor with [I].", "You [anchored ? "" : "un"]anchor [src] [anchored ? "to" : "from"] the floor with [I].") - playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) - user.do_attack_animation(src) - return - if(I.tool_behaviour == TOOL_WRENCH) - return - return ..() - - -/obj/structure/altar_of_gods/proc/reflect_sect_in_icons() - if(GLOB.religious_sect) - sect_to_altar = GLOB.religious_sect - if(sect_to_altar.altar_icon) - icon = sect_to_altar.altar_icon - if(sect_to_altar.altar_icon_state) - icon_state = sect_to_altar.altar_icon_state - -/obj/structure/destructible/religion - density = TRUE - anchored = FALSE - icon = 'icons/obj/religion.dmi' - light_power = 2 - var/cooldowntime = 0 - break_sound = 'sound/effects/glassbr2.ogg' - -/obj/structure/destructible/religion/nature_pylon - name = "Orb of Nature" - desc = "A floating crystal that slowly heals all plantlife and holy creatures. It can be anchored with a null rod." - icon_state = "nature_orb" - anchored = FALSE - light_range = 5 - light_color = LIGHT_COLOR_GREEN - break_message = "The luminous green crystal shatters!" - var/heal_delay = 20 - var/last_heal = 0 - var/spread_delay = 45 - var/last_spread = 0 - -/obj/structure/destructible/religion/nature_pylon/Initialize(mapload) - ..() - return INITIALIZE_HINT_LATELOAD - -/obj/structure/destructible/religion/nature_pylon/LateInitialize() - . = ..() - START_PROCESSING(SSobj, src) - -/obj/structure/destructible/religion/nature_pylon/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - - -/obj/structure/destructible/religion/nature_pylon/process(delta_time) - if(last_heal <= world.time) - last_heal = world.time + heal_delay - for(var/mob/living/L in range(5, src)) - if(L.health == L.maxHealth) - continue - if(!ispodperson(L) && !L.mind?.holy_role) - continue - new /obj/effect/temp_visual/heal(get_turf(src), "#47ac05") - if(ispodperson(L) || L.mind?.holy_role) - L.adjustBruteLoss(-2*delta_time, 0) - L.adjustToxLoss(-2*delta_time, 0) - L.adjustOxyLoss(-2*delta_time, 0) - L.adjustFireLoss(-2*delta_time, 0) - L.adjustCloneLoss(-2*delta_time, 0) - L.updatehealth() - if(L.blood_volume < BLOOD_VOLUME_NORMAL) - L.blood_volume += 1.0 - CHECK_TICK - if(last_spread <= world.time) - var/list/validturfs = list() - var/list/natureturfs = list() - for(var/T in circleviewturfs(src, 5)) - if(istype(T, /turf/open/floor/grass)) - natureturfs |= T - continue - var/static/list/blacklisted_pylon_turfs = typecacheof(list( - /turf/closed, - /turf/open/floor/grass, - /turf/open/space, - /turf/open/lava, - /turf/open/chasm)) - if(is_type_in_typecache(T, blacklisted_pylon_turfs)) - continue - else - validturfs |= T - - last_spread = world.time + spread_delay - - var/turf/T = safepick(validturfs) - if(T) - if(istype(T, /turf/open/floor/plating)) - T.PlaceOnTop(pick(/turf/open/floor/grass, /turf/open/floor/grass/fairy/green), flags = CHANGETURF_INHERIT_AIR) - else - T.ChangeTurf(pick(/turf/open/floor/grass, /turf/open/floor/grass/fairy/green), flags = CHANGETURF_INHERIT_AIR) - else - var/turf/open/floor/grass/F = safepick(natureturfs) - if(F) - new /obj/effect/temp_visual/religion/turf/floor(F) - else - // Are we in space or something? No grass turfs or - // convertable turfs? - last_spread = world.time + spread_delay*2 - -/obj/structure/destructible/religion/nature_pylon/attackby(obj/item/I, mob/living/user, params) - if(istype(I, /obj/item/nullrod)) - if(user.mind?.holy_role == NONE) - to_chat(user, "Only the faithful may control the disposition of [src]!") - return - anchored = !anchored - user.visible_message("[user] [anchored ? "" : "un"]anchors [src] [anchored ? "to" : "from"] the floor with [I].", "You [anchored ? "" : "un"]anchor [src] [anchored ? "to" : "from"] the floor with [I].") - playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) - user.do_attack_animation(src) - return - if(I.tool_behaviour == TOOL_WRENCH) - return - return ..() - -////Shadow Sect //Original code by DingoDongler - -/obj/structure/destructible/religion/shadow_obelisk - name = "Shadow Obelisk" - desc = "Grants favor from being shrouded in shadows." - icon = 'icons/obj/hand_of_god_structures.dmi' - icon_state = "shadow-obelisk" - anchored = FALSE - break_message = "The Obelisk crumbles before you!" - -/obj/structure/destructible/religion/shadow_obelisk/attackby(obj/item/I, mob/living/user, params) - if(istype(I, /obj/item/nullrod)) - if(user.mind?.holy_role == NONE) - to_chat(user, "Only the faithful may control the disposition of [src]!") - return - anchored = !anchored - user.visible_message("[user] [anchored ? "" : "un"]anchors [src] [anchored ? "to" : "from"] the floor with [I].", "You [anchored ? "" : "un"]anchor [src] [anchored ? "to" : "from"] the floor with [I].") - playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) - user.do_attack_animation(src) - return - if(I.tool_behaviour == TOOL_WRENCH) - return - return ..() - -// Favor generator component. Used on the altar and obelisks -/datum/component/dark_favor //Original code by DingoDongler - var/mob/living/creator - -/datum/component/dark_favor/Initialize(mob/living/L) - . = ..() - if(!L) - return - creator = L - START_PROCESSING(SSobj, src) - -/datum/component/dark_favor/Destroy() //Original code by DingoDongler - . = ..() - STOP_PROCESSING(SSobj, src) - -/datum/component/dark_favor/process(delta_time) //Original code by DingoDongler - var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect - if(!istype(parent, /atom) || !istype(creator) || !istype(sect)) - return - var/atom/P = parent - var/turf/T = P.loc - if(!istype(T)) - return - var/light_amount = T.get_lumcount() - var/favor_gained = max(1 - light_amount, 0) * delta_time - sect.adjust_favor(favor_gained, creator) diff --git a/code/modules/religion/rites.dm b/code/modules/religion/rites.dm deleted file mode 100644 index da88445a6ed82..0000000000000 --- a/code/modules/religion/rites.dm +++ /dev/null @@ -1,975 +0,0 @@ -/datum/religion_rites - /// name of the religious rite - var/name = "religious rite" - /// Description of the religious rite - var/desc = "immm gonna rooon" - /// length it takes to complete the ritual - var/ritual_length = (10 SECONDS) //total length it'll take - /// list of invocations said (strings) throughout the rite - var/list/ritual_invocations //strings that are by default said evenly throughout the rite - /// message when you invoke - var/invoke_msg - var/favor_cost = 0 - /// does the altar auto-delete the rite - var/auto_delete = TRUE - -/datum/religion_rites/New() - . = ..() - if(!GLOB?.religious_sect) - return - LAZYADD(GLOB.religious_sect.active_rites, src) - -/datum/religion_rites/Destroy() - if(!GLOB?.religious_sect) - return - LAZYREMOVE(GLOB.religious_sect.active_rites, src) - return ..() - -/datum/religion_rites/proc/can_afford(mob/living/user) - if(GLOB.religious_sect?.favor < favor_cost) - to_chat(user, "This rite requires more favor!") - return FALSE - return TRUE - -///Called to perform the invocation of the rite, with args being the performer and the altar where it's being performed. Maybe you want it to check for something else? -/datum/religion_rites/proc/perform_rite(mob/living/user, atom/religious_tool) - if(!can_afford(user)) - return FALSE - var/turf/T = get_turf(religious_tool) - if(!T.is_holy()) - to_chat(user, "The altar can only function in a holy area!") - return FALSE - if(!GLOB.religious_sect.altar_anchored) - to_chat(user, "The altar must be secured to the floor if you wish to perform the rite!") - return FALSE - to_chat(user, "You begin to perform the rite of [name]...") - if(!ritual_invocations) - if(do_after(user, target = user, delay = ritual_length)) - return TRUE - return FALSE - var/first_invoke = TRUE - for(var/i in ritual_invocations) - if(!GLOB.religious_sect.altar_anchored) - to_chat(user, "The altar must be secured to the floor if you wish to perform the rite!") - return FALSE - if(first_invoke) //instant invoke - user.say(i) - first_invoke = FALSE - continue - if(!length(ritual_invocations)) //we divide so we gotta protect - return FALSE - if(!do_after(user, target = user, delay = ritual_length/length(ritual_invocations))) - return FALSE - user.say(i) - if(!do_after(user, target = user, delay = ritual_length/length(ritual_invocations))) //because we start at 0 and not the first fraction in invocations, we still have another fraction of ritual_length to complete - return FALSE - if(!GLOB.religious_sect.altar_anchored) - to_chat(user, "The altar must be secured to the floor if you wish to perform the rite!") - return FALSE - if(invoke_msg) - user.say(invoke_msg) - return TRUE - - -///Does the thing if the rite was successfully performed. return value denotes that the effect successfully (IE a harm rite does harm) -/datum/religion_rites/proc/invoke_effect(mob/living/user, atom/religious_tool) - SHOULD_CALL_PARENT(TRUE) - GLOB.religious_sect.on_riteuse(user,religious_tool) - return TRUE - - -/**** Technophile Sect ****/ - -/datum/religion_rites/synthconversion - name = "Synthetic Conversion" - desc = "Convert a human-esque individual into a (superior) Android. Buckle a human to convert them, otherwise it will convert you." - ritual_length = 25 SECONDS - ritual_invocations = list("By the inner workings of our god ...", - "... We call upon you, in the face of adversity ...", - "... to complete us, removing that which is undesirable ...") - invoke_msg = "... Arise, our champion! Become that which your soul craves, live in the world as your true form!!" - favor_cost = 1800 - -/datum/religion_rites/synthconversion/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(!movable_reltool) - return FALSE - if(LAZYLEN(movable_reltool.buckled_mobs)) - to_chat(user,"You're going to convert the one buckled on [movable_reltool].") - else - if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - if(isandroid(user)) - to_chat(user,"You've already converted yourself. To convert others, they must be buckled to [movable_reltool].") - return FALSE - to_chat(user,"You're going to convert yourself with this ritual.") - return ..() - -/datum/religion_rites/synthconversion/invoke_effect(mob/living/user, atom/religious_tool) - ..() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - var/mob/living/carbon/human/rite_target - if(!movable_reltool?.buckled_mobs?.len) - rite_target = user - else - for(var/buckled in movable_reltool.buckled_mobs) - if(ishuman(buckled)) - rite_target = buckled - break - if(!rite_target) - return FALSE - rite_target.set_species(/datum/species/android) - rite_target.visible_message("[rite_target] has been converted by the rite of [name]!") - return TRUE - - -/datum/religion_rites/machine_blessing - name = "Receive Blessing" - desc = "Receive a random blessing from the machine god to further your ascension." - ritual_length = 5 SECONDS - ritual_invocations =list( "Let your will power our forges.", - "... Help us in our great conquest!") - invoke_msg = "The end of flesh is near!" - favor_cost = 800 - -/datum/religion_rites/machine_blessing/invoke_effect(mob/living/user, atom/movable/religious_tool) - ..() - var/altar_turf = get_turf(religious_tool) - var/blessing = pick( - /obj/item/organ/cyberimp/arm/surgery, - /obj/item/organ/cyberimp/eyes/hud/diagnostic, - /obj/item/organ/cyberimp/eyes/hud/medical, - /obj/item/organ/cyberimp/mouth/breathing_tube, - /obj/item/organ/cyberimp/chest/thrusters, - /obj/item/organ/cyberimp/chest/nutriment, - /obj/item/organ/cyberimp/arm/toolset, - /obj/item/organ/wings/cybernetic, - /obj/item/organ/eyes/robotic/glow) - new blessing(altar_turf) - return TRUE - - -/datum/religion_rites/machine_implantation - name = "Machine Implantation" - desc = "Apply a provided upgrade to your body. Place a cybernetic item on the altar, then buckle someone to implant them, otherwise it will implant you." - ritual_length = 20 SECONDS - ritual_invocations = list("Lend us your power ...", - "... We call upon you, grant us this upgrade ...", - "... Complete us, joining man and machine ...") - invoke_msg = "... Let the mechanical parts, Merge!!" - favor_cost = 1000 - var/obj/item/organ/chosen_implant - -/datum/religion_rites/machine_implantation/perform_rite(mob/living/user, atom/religious_tool) - chosen_implant = locate() in get_turf(religious_tool) - if(!chosen_implant) - to_chat(user, "This rite requires cybernetics for implantation.") - return FALSE - if(!ismovable(religious_tool)) - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(length(movable_reltool.buckled_mobs)) - to_chat(user,"You're going to merge the implant with the one buckled on [movable_reltool].") - else if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - to_chat(user,"You're going to merge the implant into yourself with this ritual.") - return ..() - -/datum/religion_rites/machine_implantation/invoke_effect(mob/living/user, atom/religious_tool) - ..() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - var/mob/living/carbon/human/rite_target - if(!length(movable_reltool.buckled_mobs)) - rite_target = user - else - for(var/buckled in movable_reltool.buckled_mobs) - if(ishuman(buckled)) - rite_target = buckled - break - if(!rite_target) - chosen_implant = null - return FALSE - chosen_implant.Insert(rite_target) - rite_target.visible_message("[chosen_implant] has been merged into [rite_target] by the rite of [name]!") - chosen_implant = null - return TRUE - - -/**** Ever-Burning Candle sect ****/ - -///apply a bunch of fire immunity effect to clothing -/datum/religion_rites/fireproof/proc/apply_fireproof(obj/item/clothing/fireproofed) - fireproofed.name = "unmelting [fireproofed.name]" - fireproofed.max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - fireproofed.heat_protection = chosen_clothing.body_parts_covered - fireproofed.resistance_flags |= FIRE_PROOF - -/datum/religion_rites/fireproof - name = "Unmelting Protection" - desc = "Grants fire immunity to any piece of clothing." - ritual_length = 15 SECONDS - ritual_invocations = list("And so to support the holder of the Ever-Burning candle...", - "... allow this unworthy apparel to serve you ...", - "... make it strong enough to burn a thousand time and more ...") - invoke_msg = "... Come forth in your new form, and join the unmelting wax of the one true flame!" - favor_cost = 1000 -///the piece of clothing that will be fireproofed, only one per rite - var/obj/item/clothing/chosen_clothing - -/datum/religion_rites/fireproof/perform_rite(mob/living/user, atom/religious_tool) - for(var/obj/item/clothing/apparel in get_turf(religious_tool)) - if(apparel.max_heat_protection_temperature >= FIRE_IMMUNITY_MAX_TEMP_PROTECT) - continue //we ignore anything that is already fireproof - chosen_clothing = apparel //the apparel has been chosen by our lord and savior - return ..() - return FALSE - -/datum/religion_rites/fireproof/invoke_effect(mob/living/user, atom/religious_tool) - ..() - if(!QDELETED(chosen_clothing) && get_turf(religious_tool) == chosen_clothing.loc) //check if the same clothing is still there - if(istype(chosen_clothing,/obj/item/clothing/suit/hooded)) - var/obj/item/clothing/suit/hooded/as_hooded = chosen_clothing - if(as_hooded.hood) - apply_fireproof(as_hooded.hood) - else if(istype(chosen_clothing,/obj/item/clothing/suit/space/hardsuit)) - var/obj/item/clothing/suit/space/hardsuit/suit = chosen_clothing - if(suit.helmet) - apply_fireproof(suit.helmet) - apply_fireproof(chosen_clothing) - playsound(get_turf(religious_tool), 'sound/magic/fireball.ogg', 50, TRUE) - chosen_clothing = null //our lord and savior no longer cares about this apparel - return TRUE - chosen_clothing = null - to_chat(user,"The clothing that was chosen for the rite is no longer on the altar!") - return FALSE - -/datum/religion_rites/burning_sacrifice - name = "Burning Offering" - desc = "Sacrifice a buckled burning corpse for favor, the more burn damage the corpse has the more favor you will receive." - ritual_length = 15 SECONDS - ritual_invocations = list("Burning body ...", - "... cleansed by the flame ...", - "... we were all created from fire ...", - "... and to it ...") - invoke_msg = "... WE RETURN! " -///the burning corpse chosen for the sacrifice of the rite - var/mob/living/carbon/chosen_sacrifice - -/datum/religion_rites/burning_sacrifice/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(!movable_reltool) - return FALSE - if(!LAZYLEN(movable_reltool.buckled_mobs)) - to_chat(user,"Nothing is buckled to the altar!") - return FALSE - for(var/corpse in movable_reltool.buckled_mobs) - if(!iscarbon(corpse))// only works with carbon corpse since most normal mobs can't be set on fire. - to_chat(user,"Only carbon lifeforms can be properly burned for the sacrifice!") - return FALSE - chosen_sacrifice = corpse - if(chosen_sacrifice.stat != DEAD) - to_chat(user,"You can only sacrifice dead bodies, this one is still alive!") - return FALSE - if(!chosen_sacrifice.on_fire) - to_chat(user,"This corpse needs to be on fire to be sacrificed!") - return FALSE - return ..() - -/datum/religion_rites/burning_sacrifice/invoke_effect(mob/living/user, atom/movable/religious_tool) - ..() - if(!(chosen_sacrifice in religious_tool.buckled_mobs)) //checks one last time if the right corpse is still buckled - to_chat(user,"The right sacrifice is no longer on the altar!") - chosen_sacrifice = null - return FALSE - if(!chosen_sacrifice.on_fire) - to_chat(user,"The sacrifice is no longer on fire, it needs to burn until the end of the rite!") - chosen_sacrifice = null - return FALSE - if(chosen_sacrifice.stat != DEAD) - to_chat(user,"The sacrifice has to stay dead for the rite to work!") - chosen_sacrifice = null - return FALSE - var/favor_gained = 100 + round(chosen_sacrifice.getFireLoss()) - GLOB.religious_sect.adjust_favor(favor_gained, user) - to_chat(user, "[GLOB.deity] absorbs the burning corpse and any trace of fire with it. [GLOB.deity] rewards you with [favor_gained] favor.") - chosen_sacrifice.dust(force = TRUE) - playsound(get_turf(religious_tool), 'sound/effects/supermatter.ogg', 50, TRUE) - chosen_sacrifice = null - return TRUE - -/datum/religion_rites/infinite_candle - name = "Immortal Candles" - desc = "Creates 5 candles that never run out of wax." - ritual_length = 10 SECONDS - invoke_msg = "Burn bright, little candles, for you will only extinguish along with the universe." - favor_cost = 200 - -/datum/religion_rites/infinite_candle/invoke_effect(mob/living/user, atom/movable/religious_tool) - ..() - var/altar_turf = get_turf(religious_tool) - for(var/i in 1 to 5) - new /obj/item/candle/infinite(altar_turf) - playsound(altar_turf, 'sound/magic/fireball.ogg', 50, TRUE) - return TRUE - -/// Necro Rites - -/datum/religion_rites/create_lesser_lich - name = "Create Lesser Lich" - desc = "Gives the bound creature a spell granting them the ability to create a lesser phylactery, causing them to become a skeleton and revive on death twice if the phylactery still exists on-station. Be warned, becoming a lesser lich will prevent revivial by any other means." - ritual_length = 60 SECONDS //This one's pretty powerful so it'll still be long - ritual_invocations = list("From the depths of the soul pool ...", - "... come forth into this being ...", - "... grant this servant power ...", - "... grant them temporary immortality ...") - invoke_msg = "... Grant them the power to become one with necromancy!!" - favor_cost = 2250 -/// the creature chosen for the rite - var/mob/living/lich_to_be -/// the the typepath of the spell to gran - var/lichspell = /obj/effect/proc_holder/spell/targeted/lesserlichdom - -/datum/religion_rites/create_lesser_lich/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(length(movable_reltool.buckled_mobs)) - for(var/creature in movable_reltool.buckled_mobs) - lich_to_be = creature - if(!lich_to_be.mind.hasSoul) - to_chat(user,"[lich_to_be] has no soul, as such this rite would not help them. To empower another, they must be buckled to [movable_reltool].") - lich_to_be = null - return FALSE - for(var/obj/effect/proc_holder/spell/knownspell in lich_to_be.mob_spell_list) - if(knownspell.type == lichspell) - to_chat(user,"You've already empowered [lich_to_be], get them to use the spell granted to them! To empower another, they must be buckled to [movable_reltool].") - lich_to_be = null - return FALSE - to_chat(user,"You're going to empower the [lich_to_be] who is buckled on [movable_reltool].") - return ..() - else - if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - lich_to_be = user - if(!lich_to_be.mind.hasSoul) - to_chat(user,"You have no soul, as such this rite would not help you. To empower another, they must be buckled to [movable_reltool].") - lich_to_be = null - return FALSE - for(var/obj/effect/proc_holder/spell/knownspell in lich_to_be.mob_spell_list) - if(knownspell.type == lichspell) - to_chat(user,"You've already empowered yourself, use the spell granted to you! To empower another, they must be buckled to [movable_reltool].") - lich_to_be = null - return FALSE - to_chat(user,"You're empowering yourself!") - return ..() - - -/datum/religion_rites/create_lesser_lich/invoke_effect(mob/living/user, atom/movable/religious_tool) - ..() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - if(!length(movable_reltool.buckled_mobs)) - lich_to_be = user - else - for(var/mob/living/carbon/human/buckled in movable_reltool.buckled_mobs) - lich_to_be = buckled - break - if(!lich_to_be) - return FALSE - lich_to_be.AddSpell(new lichspell(null)) - lich_to_be.visible_message("[lich_to_be] has been empowered by the soul pool!") - lich_to_be = null - return ..() - -/datum/religion_rites/raise_undead - name = "Raise Undead" - desc = "Creates an undead creature if a soul is willing to take it." - ritual_length = 50 SECONDS - ritual_invocations = list("Come forth from the pool of souls ...", - "... enter our realm ...", - "... become one with our world ...", - "... rise ...", - "... RISE! ...") - invoke_msg = "... RISE!!!" - favor_cost = 1250 - -/datum/religion_rites/raise_undead/invoke_effect(mob/living/user, atom/movable/religious_tool) - var/turf/altar_turf = get_turf(religious_tool) - new /obj/effect/temp_visual/cult/blood/long(altar_turf) - new /obj/effect/temp_visual/dir_setting/curse/long(altar_turf) - var/list/candidates = poll_ghost_candidates("Do you wish to be resurrected as a Holy Summoned Undead?", ROLE_HOLY_SUMMONED, null, 10 SECONDS, POLL_IGNORE_HOLYUNDEAD) - if(!length(candidates)) - to_chat(user, "The soul pool is empty...") - new /obj/effect/gibspawner/human/bodypartless(altar_turf) - user.visible_message("The soul pool was not strong enough to bring forth the undead.") - GLOB.religious_sect?.adjust_favor(favor_cost, user) //refund if nobody takes the role - return NOT_ENOUGH_PLAYERS - var/mob/dead/observer/selected = pick_n_take(candidates) - var/datum/mind/Mind = new /datum/mind(selected.key) - var/undead_species = pick(/mob/living/carbon/human/species/zombie, /mob/living/carbon/human/species/skeleton) - var/mob/living/carbon/human/species/undead = new undead_species(altar_turf) - undead.real_name = "Holy Undead ([rand(1,999)])" - Mind.active = 1 - Mind.transfer_to(undead) - undead.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(undead), ITEM_SLOT_BACK) - undead.equip_to_slot_or_del(new /obj/item/clothing/under/costume/skeleton(undead), ITEM_SLOT_ICLOTHING) - undead.equip_to_slot_or_del(new /obj/item/clothing/suit/hooded/chaplain_hoodie(undead), ITEM_SLOT_OCLOTHING) - undead.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(undead), ITEM_SLOT_FEET) - undead.AddSpell(new /obj/effect/proc_holder/spell/targeted/smoke(null)) - if(GLOB.religion) - var/obj/item/storage/book/bible/booze/B = new - undead.mind?.holy_role = HOLY_ROLE_PRIEST - B.deity_name = GLOB.deity - B.name = GLOB.bible_name - B.icon_state = GLOB.bible_icon_state - B.item_state = GLOB.bible_item_state - to_chat(undead, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.") - undead.equip_to_slot_or_del(B, ITEM_SLOT_BACKPACK) - GLOB.religious_sect?.on_conversion(undead) - if(is_special_character(user)) - to_chat(undead, "You are grateful to have been summoned into this word by [user]. Serve [user.real_name], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") - else - to_chat(undead, "You are grateful to have been summoned into this world. You are now a member of this station's crew, Try not to cause any trouble.") - playsound(altar_turf, pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg',), 50, TRUE) - return ..() - -/datum/religion_rites/raise_dead - name = "Raise Dead" - desc = "Revives a buckled dead creature or person." - ritual_length = 40 SECONDS - ritual_invocations = list("Rejoin our world ...", - "... come forth from the beyond ...", - "... fresh life awaits you ...", - "... return to us ...", - "... by the power granted by the gods ...", - "... you shall rise again ...") - invoke_msg = "Welcome back to the mortal plain." - favor_cost = 1500 - -///the target - var/mob/living/carbon/human/raise_target - -/datum/religion_rites/raise_dead/perform_rite(mob/living/user, atom/religious_tool) - if(!religious_tool || !ismovable(religious_tool)) - to_chat(user, "This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(!length(movable_reltool.buckled_mobs)) - to_chat(user, "Nothing is buckled to the altar!") - return FALSE - for(var/mob/living/carbon/r_target in movable_reltool.buckled_mobs) - if(!iscarbon(r_target)) - to_chat(user, "Only carbon lifeforms can be properly resurrected!") - return FALSE - if(r_target.stat != DEAD) - to_chat(user, "You can only resurrect dead bodies, this one is still alive!") - return FALSE - if(!r_target.mind) - to_chat(user, "This creature has no connected soul...") - return FALSE - raise_target = r_target - raise_target.notify_ghost_cloning("Your soul is being summoned back to your body by mystical power!", source = src) - return ..() - -/datum/religion_rites/raise_dead/invoke_effect(mob/living/user, atom/movable/religious_tool) - var/turf/altar_turf = get_turf(religious_tool) - if(!(raise_target in religious_tool.buckled_mobs)) - to_chat(user, "The body is no longer on the altar!") - raise_target = null - return FALSE - if(!raise_target.mind) - to_chat(user, "This creature's soul has left the pool...") - raise_target = null - return FALSE - if(raise_target.stat != DEAD) - to_chat(user, "The target has to stay dead for the rite to work! If they came back without your spiritual guidence... Who knows what could happen!?") - raise_target = null - return FALSE - raise_target.grab_ghost() // Shove them back in their body. - raise_target.revive(full_heal = 1, admin_revive = 1) - playsound(altar_turf, 'sound/magic/staff_healing.ogg', 50, TRUE) - raise_target = null - return ..() - -/datum/religion_rites/living_sacrifice - name = "Living Sacrifice" - desc = "Sacrifice a non-sentient living buckled creature for favor." - ritual_length = 25 SECONDS - ritual_invocations = list("To offer this being unto the gods ...", - "... to feed them with its soul ...", - "... so that they may consume all within their path ...", - "... release their binding on this mortal plane ...", - "... I offer you this living being ...") - invoke_msg = "... may it join the horde of undead, and become one with the souls of the damned. " - -//the living creature chosen for the sacrifice of the rite - var/mob/living/chosen_sacrifice -/datum/religion_rites/living_sacrifice/perform_rite(mob/living/user, atom/religious_tool) - if(!religious_tool || !ismovable(religious_tool)) - to_chat(user, "This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(!length(movable_reltool.buckled_mobs)) - to_chat(user, "Nothing is buckled to the altar!") - return FALSE - for(var/creature in movable_reltool.buckled_mobs) - chosen_sacrifice = creature - if(chosen_sacrifice.stat == DEAD) - to_chat(user, "You can only sacrifice living creatures, this one is dead!") - chosen_sacrifice = null - return FALSE - if(chosen_sacrifice.mind) - to_chat(user, "This sacrifice is sentient! [GLOB.deity] will not accept this offering.") - chosen_sacrifice = null - return FALSE - var/mob/living/carbon/C = creature - if(!isnull(C)) - cuff(C) - return ..() - -/datum/religion_rites/living_sacrifice/invoke_effect(mob/living/user, atom/movable/religious_tool) - var/turf/altar_turf = get_turf(religious_tool) - if(!(chosen_sacrifice in religious_tool.buckled_mobs)) //checks one last time if the right creature is still buckled - to_chat(user, "The right sacrifice is no longer on the altar!") - chosen_sacrifice = null - return FALSE - if(chosen_sacrifice.stat == DEAD) - to_chat(user, "The sacrifice is no longer alive, it needs to be alive until the end of the rite!") - chosen_sacrifice = null - return FALSE - var/favor_gained = 200 + round(chosen_sacrifice.health * 2) - GLOB.religious_sect?.adjust_favor(favor_gained, user) - new /obj/effect/temp_visual/cult/blood/out(altar_turf) - to_chat(user, "[GLOB.deity] absorbs [chosen_sacrifice], leaving blood and gore in its place. [GLOB.deity] rewards you with [favor_gained] favor.") - chosen_sacrifice.gib(TRUE, FALSE, TRUE) - playsound(get_turf(religious_tool), 'sound/effects/bamf.ogg', 50, TRUE) - chosen_sacrifice = null - return ..() - -/datum/religion_rites/living_sacrifice/proc/cuff(var/mob/living/carbon/C) - if(C.handcuffed) - return - C.handcuffed = new /obj/item/restraints/handcuffs/energy/cult(C) - C.update_handcuffed() - playsound(C, 'sound/magic/smoke.ogg', 50, 1) - C.visible_message("Darkness forms around [C]'s wrists as shadowy bindings appear on them!") - -/**** Carp rites ****/ - -/datum/religion_rites/summon_carp - name = "Summon Carp" - desc = "Creates a Sentient Space Carp, if a soul is willing to take it. If not, the favor is refunded." - ritual_length = 50 SECONDS - ritual_invocations = list("Grant us a new follower ...", - "... let them enter our realm ...", - "... become one with our world ...", - "... to swim in our space ...", - "... and help our cause ...") - invoke_msg = "... We summon thee, Holy Carp!" - favor_cost = 500 - -/datum/religion_rites/summon_carp/invoke_effect(mob/living/user, atom/movable/religious_tool) - var/turf/altar_turf = get_turf(religious_tool) - new /obj/effect/temp_visual/bluespace_fissure/long(altar_turf) - user.visible_message("A tear in reality appears above the altar!") - var/list/candidates = poll_ghost_candidates("Do you wish to be summoned as a Holy Carp?", ROLE_HOLY_SUMMONED, null, 10 SECONDS, POLL_IGNORE_HOLYCARP) - if(!length(candidates)) - new /obj/effect/gibspawner/generic(altar_turf) - user.visible_message("The carp pool was not strong enough to bring forth a space carp.") - GLOB.religious_sect?.adjust_favor(400, user) - return NOT_ENOUGH_PLAYERS - var/mob/dead/observer/selected = pick_n_take(candidates) - var/datum/mind/M = new /datum/mind(selected.key) - var/carp_species = pick(/mob/living/simple_animal/hostile/carp/megacarp, /mob/living/simple_animal/hostile/carp) - var/mob/living/simple_animal/hostile/carp = new carp_species(altar_turf) - carp.name = "Holy Space-Carp ([rand(1,999)])" - carp.key = selected.key - carp.sentience_act() - carp.maxHealth += 100 - carp.health += 100 - M.transfer_to(carp) - if(GLOB.religion) - carp.mind?.holy_role = HOLY_ROLE_PRIEST - to_chat(carp, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.") - GLOB.religious_sect?.on_conversion(carp) - if(is_special_character(user)) - to_chat(carp, "You are grateful to have been summoned into this word by [user]. Serve [user.real_name], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") - else - to_chat(carp, "You are grateful to have been summoned into this world. You are now a member of this station's crew, Try not to cause any trouble.") - playsound(altar_turf, 'sound/effects/slosh.ogg', 50, TRUE) - return ..() - -/datum/religion_rites/summon_carpsuit - name = "Summon Carp-Suit" - desc = "Summons a Space-Carp Suit" - ritual_length = 30 SECONDS - ritual_invocations = list("We shall become one ...", - "... we shall blend in ...", - "... we shall join in the ways of the carp ...", - "... grant us new clothing ...") - invoke_msg = "So we can swim." - favor_cost = 300 - var/obj/item/clothing/suit/chosen_clothing - -/datum/religion_rites/summon_carpsuit/perform_rite(mob/living/user, atom/religious_tool) - var/turf/T = get_turf(religious_tool) - var/list/L = T.contents - if(!locate(/obj/item/clothing/suit) in L) - to_chat(user, "There is no suit clothing on the altar!") - return FALSE - for(var/obj/item/clothing/suit/apparel in L) - chosen_clothing = apparel //the apparel has been chosen by our lord and savior - return ..() - return FALSE - -/datum/religion_rites/summon_carpsuit/invoke_effect(mob/living/user, atom/religious_tool) - if(!QDELETED(chosen_clothing) && get_turf(religious_tool) == chosen_clothing.loc) //check if the same clothing is still there - user.visible_message("The [chosen_clothing] transforms!") - chosen_clothing.obj_destruction() - chosen_clothing = null - new /obj/item/clothing/suit/space/hardsuit/carp/old(get_turf(religious_tool)) - playsound(get_turf(religious_tool), 'sound/effects/slosh.ogg', 50, TRUE) - return ..() - chosen_clothing = null - to_chat(user, "The clothing that was chosen for the rite is no longer on the altar!") - return FALSE - -/datum/religion_rites/flood_area - name = "Flood Area" - desc = "Flood the area with water vapor, great for learning to swim!" - ritual_length = 25 SECONDS - ritual_invocations = list("We must swim ...", - "... but to do so, we need water ...", - "... grant us a great flood ...", - "... soak us in your glory ...", - "... we shall swim forever ...") - invoke_msg = "... in our own personal ocean." - favor_cost = 200 - -/datum/religion_rites/flood_area/invoke_effect(mob/living/user, atom/movable/religious_tool) - var/turf/open/T = get_turf(religious_tool) - if(istype(T)) - T.atmos_spawn_air("water_vapor=5000;TEMP=255") - return ..() - -/**** Plant rites ****/ - -/datum/religion_rites/summon_animals - name = "Create Life" - desc = "Creates a few animals, this can range from butterflys to giant frogs! Please be careful." - ritual_length = 30 SECONDS - ritual_invocations = list("Great Mother ...", - "... bring us new life ...", - "... to join with our nature ...", - "... and live amongst us ...") - invoke_msg = "... We summon thee, Animals from the Byond!" //might adjust to beyond due to ooc/ic/meta - favor_cost = 500 - -/datum/religion_rites/summon_animals/perform_rite(mob/living/user, atom/religious_tool) - var/turf/altar_turf = get_turf(religious_tool) - new /obj/effect/temp_visual/bluespace_fissure/long(altar_turf) - user.visible_message("A tear in reality appears above the altar!") - return ..() - -/datum/religion_rites/summon_animals/invoke_effect(mob/living/user, atom/religious_tool) - ..() - var/turf/altar_turf = get_turf(religious_tool) - for(var/i in 1 to 8) - var/mob/living/spawned_mob = create_random_mob(altar_turf, FRIENDLY_SPAWN) - spawned_mob.faction |= "neutral" - playsound(altar_turf, 'sound/ambience/servicebell.ogg', 25, TRUE) - if(prob(0.1)) - playsound(altar_turf, 'sound/effects/bamf.ogg', 100, TRUE) - altar_turf.visible_message("A large form seems to be forcing its way into your reality via the portal [user] opened! RUN!!!") - new /mob/living/simple_animal/hostile/jungle/leaper(altar_turf) - return ..() - -/datum/religion_rites/create_sandstone - name = "Create Sandstone" - desc = "Create Sandstone for soil production to help create a plant garden." - ritual_length = 35 SECONDS - ritual_invocations = list("Bring to us ...", - "... the stone we need ...", - "... so we can toil away ...") - invoke_msg = "and spread many seeds." - favor_cost = 800 - -/datum/religion_rites/create_sandstone/invoke_effect(mob/living/user, atom/religious_tool) - new /obj/item/stack/sheet/mineral/sandstone/fifty(get_turf(religious_tool)) - playsound(get_turf(religious_tool), 'sound/effects/pop_expl.ogg', 50, TRUE) - return ..() - -/datum/religion_rites/grass_generator - name = "Blessing of Nature" - desc = "Summon a moveable object that slowly generates grass and fairy-grass around itself while healing any Pod-People or Holy people nearby." - ritual_length = 60 SECONDS - ritual_invocations = list("Let the plantlife grow ...", - "... let it grow across the land ...", - "... far and wide it shall spread ...", - "... show us true nature ...", - "... and we shall worship it all ...") - invoke_msg = "... in our own personal haven." - favor_cost = 1000 - -/datum/religion_rites/grass_generator/invoke_effect(mob/living/user, atom/movable/religious_tool) - var/turf/open/T = get_turf(religious_tool) - if(istype(T)) - new /obj/structure/destructible/religion/nature_pylon(T) - return ..() - -/datum/religion_rites/create_podperson - name = "Nature Conversion" - desc = "Convert a human-esque individual into a being of nature. Buckle a human to convert them, otherwise it will convert you." - ritual_length = 30 SECONDS - ritual_invocations = list("By the power of nature ...", - "... We call upon you, in this time of need ...", - "... to merge us with all that is natural ...") - invoke_msg = "... May the grass be greener on the other side, show us what it means to be one with nature!!" - favor_cost = 300 - -/datum/religion_rites/create_podperson/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(!movable_reltool) - return FALSE - if(LAZYLEN(movable_reltool.buckled_mobs)) - to_chat(user,"You're going to convert the one buckled on [movable_reltool].") - else - if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - if(ispodperson(user)) - to_chat(user,"You've already converted yourself. To convert others, they must be buckled to [movable_reltool].") - return FALSE - to_chat(user,"You're going to convert yourself with this ritual.") - return ..() - -/datum/religion_rites/create_podperson/invoke_effect(mob/living/user, atom/religious_tool) - ..() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - var/mob/living/carbon/human/rite_target - if(!movable_reltool?.buckled_mobs?.len) - rite_target = user - else - for(var/buckled in movable_reltool.buckled_mobs) - if(ishuman(buckled)) - rite_target = buckled - break - if(!rite_target) - return FALSE - rite_target.set_species(/datum/species/pod) - rite_target.visible_message("[rite_target] has been converted by the rite of [name]!") - return TRUE - -/**** Shadow rites ****/ //Original code by DingoDongler - -#define DARKNESS_INVERSE_COLOR "#AAD84B" //The color of light has to be inverse, since we're using negative light power - -/datum/religion_rites/shadow_conversion - name = "Shadowperson Conversion" - desc = "Converts a humanoid into a shadowperson, a race blessed by darkness." - ritual_length = 30 SECONDS - ritual_invocations = list("Let the darkness seep into you...", - "... And cover you, envelope you ...", - "... And make you one with it ...") - invoke_msg = "... And let you be born again!" - favor_cost = 1200 - -/datum/religion_rites/shadow_conversion/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user, "This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(LAZYLEN(movable_reltool.buckled_mobs)) - to_chat(user,"You're going to convert the one buckled on [movable_reltool].") - else - if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - if(isshadow(user)) - to_chat(user,"You've already converted yourself. To convert others, they must be buckled to [movable_reltool].") - return FALSE - to_chat(user,"You're going to convert yourself with this ritual.") - return ..() - -/datum/religion_rites/shadow_conversion/invoke_effect(mob/living/user, atom/religious_tool) - ..() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - var/mob/living/carbon/human/rite_target - if(!movable_reltool?.buckled_mobs?.len) - rite_target = user - else - for(var/buckled in movable_reltool.buckled_mobs) - if(ishuman(buckled)) - rite_target = buckled - break - if(!rite_target) - return FALSE - rite_target.set_species(/datum/species/shadow) - rite_target.visible_message("[rite_target] has been converted by the rite of [name]!") - return TRUE - -/datum/religion_rites/shadow_obelisk - name = "Obelisk Manifestation" - desc = "Creates an obelisk that generates favor when in a dark area." - ritual_length = 45 SECONDS - ritual_invocations = list("Let the shadows combine...", - "... Solidify and grow ...", - "... Make an idol to eminate shadows ...") - invoke_msg = "I summon forth an obelisk, to appease the darkness." - favor_cost = 100 //Sect starts with 100 favor to begin - -/datum/religion_rites/shadow_obelisk/invoke_effect(mob/living/user, atom/religious_tool) - var/altar_turf = get_turf(religious_tool) - var/obj/structure/destructible/religion/shadow_obelisk/obelisk = new(altar_turf) - var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect - sect.obelisks += obelisk - obelisk.AddComponent(/datum/component/dark_favor, user) - obelisk.set_light(sect.light_reach, sect.light_power, DARKNESS_INVERSE_COLOR) - playsound(altar_turf, 'sound/magic/fireball.ogg', 50, TRUE) - return ..() - -/datum/religion_rites/expand_shadows - name = "Shadow Expansion" - desc = "Grow the reach of shadows extending from the altar, and any obelisks." - ritual_length = 40 SECONDS - ritual_invocations = list("Spread out...", - "... Kill the light ...", - "... Encompass it all in darkness ...") - invoke_msg = "Shadows, reach your tendrils from my altar, and extend thy domain." - favor_cost = 175 - -/datum/religion_rites/expand_shadows/perform_rite(mob/living/user, atom/religious_tool) - var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect - if((sect.light_power <= -5) || (sect.light_reach >= 10)) - to_chat(user, "The shadows emanating from your idols is as strong as it could be.") - return FALSE - return ..() - -/datum/religion_rites/expand_shadows/invoke_effect(mob/living/user, atom/religious_tool) - . = ..() - var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect - if(!sect) - return - sect.light_reach += 2 - sect.light_power -= 1 - religious_tool.set_light(sect.light_reach, sect.light_power, DARKNESS_INVERSE_COLOR) - for(var/obj/structure/destructible/religion/shadow_obelisk/D in sect.obelisks) - D.set_light(sect.light_reach, sect.light_power, DARKNESS_INVERSE_COLOR) - -/datum/religion_rites/shadow_blessing - name = "Shadow Blessing" - desc = "Bless someone with the power of shadows, and make them immune to all magic." - ritual_length = 60 SECONDS - ritual_invocations = list("Let the darkness reside within us...", - "... Let the power flow ...", - "... Encompass our souls in shade ...", - "... And let the demons know ...", - "... That their powers will not work apon us any more...",) - invoke_msg = "Bless thy brethen, and grant them immunity!" - favor_cost = 8000 - -/datum/religion_rites/shadow_blessing/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user, "This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(LAZYLEN(movable_reltool.buckled_mobs)) - to_chat(user,"You're going to bless the one buckled on [movable_reltool].") - else - if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - if(isshadow(user)) - to_chat(user,"You've already blessed yourself. To convert others, they must be buckled to [movable_reltool].") - return FALSE - to_chat(user,"You're going to bless yourself with this ritual.") - return ..() - -/datum/religion_rites/shadow_blessing/invoke_effect(mob/living/user, atom/religious_tool) - ..() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - var/mob/living/carbon/human/rite_target - if(!movable_reltool?.buckled_mobs?.len) - rite_target = user - else - for(var/buckled in movable_reltool.buckled_mobs) - if(ishuman(buckled)) - rite_target = buckled - break - if(!rite_target) - return FALSE - ADD_TRAIT(rite_target, TRAIT_ANTIMAGIC, MAGIC_TRAIT) - //glowing wings overlay - playsound(rite_target, 'sound/weapons/fwoosh.ogg', 75, 0) - rite_target.visible_message("[rite_target] has been blessed by the rite of [name]!") - return TRUE - - -/datum/religion_rites/shadow_eyes - name = "Grant Shadow Eyes" - desc = "Grants either the caster, or the buckled person, shadow eyes that give night vision." - ritual_length = 30 SECONDS - ritual_invocations = list("Grant us the sight ...", - "... We call upon the shadows ...", - "... Show us the way ...") - invoke_msg = "... Let the darkness be our guide!!" - favor_cost = 1000 - -/datum/religion_rites/shadow_eyes/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(length(movable_reltool.buckled_mobs)) - to_chat(user,"You're going to grant the eyes to the one buckled on [movable_reltool].") - else if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - else - to_chat(user,"You're going to grant the eyes to yourself with this ritual.") - return ..() - -/datum/religion_rites/shadow_eyes/invoke_effect(mob/living/user, atom/religious_tool) - ..() - var/obj/item/organ/eyes/night_vision/organ = new() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - var/mob/living/carbon/human/rite_target - if(!length(movable_reltool.buckled_mobs)) - rite_target = user - else - for(var/buckled in movable_reltool.buckled_mobs) - if(ishuman(buckled)) - rite_target = buckled - break - if(!rite_target) - return FALSE - organ.Insert(rite_target) - rite_target.visible_message("[organ] have been merged into [rite_target] by the rite of [name]!") - return TRUE diff --git a/code/modules/religion/sects/candle_sect.dm b/code/modules/religion/sects/candle_sect.dm new file mode 100644 index 0000000000000..aa45e5165b46c --- /dev/null +++ b/code/modules/religion/sects/candle_sect.dm @@ -0,0 +1,153 @@ +/datum/religion_sect/candle_sect + name = "Ever-Burning Candle" + desc = "Sacrificing burning corpses with a lot of burn damage and candles grants you favor." + quote = "It must burn! The primal energy must be respected." + tgui_icon = "fire-alt" + alignment = ALIGNMENT_NEUT + max_favor = 10000 + desired_items = list( + /obj/item/candle = "already lit") + rites_list = list( + /datum/religion_rites/fireproof, + /datum/religion_rites/burning_sacrifice, + /datum/religion_rites/infinite_candle) + altar_icon_state = "convertaltar-red" + +//candle sect bibles don't heal or do anything special apart from the standard holy water blessings +/datum/religion_sect/candle_sect/sect_bless(mob/living/target, mob/living/chap) + return TRUE + +/datum/religion_sect/candle_sect/on_sacrifice(obj/item/candle/offering, mob/living/user) + if(!istype(offering)) + return + if(!offering.lit) + to_chat(user, "The candle needs to be lit to be offered!") + return + to_chat(user, "[GLOB.deity] is pleased with your sacrifice.") + adjust_favor(20, user) //it's not a lot but hey there's a pacifist favor option at least + qdel(offering) + return TRUE + + + +/**** Ever-Burning Candle sect rites ****/ + +///apply a bunch of fire immunity effect to clothing +/datum/religion_rites/fireproof/proc/apply_fireproof(obj/item/clothing/fireproofed) + fireproofed.name = "unmelting [fireproofed.name]" + fireproofed.max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + fireproofed.heat_protection = chosen_clothing.body_parts_covered + fireproofed.resistance_flags |= FIRE_PROOF + +/datum/religion_rites/fireproof + name = "Unmelting Protection" + desc = "Grants fire immunity to any piece of clothing." + ritual_length = 15 SECONDS + ritual_invocations = list( + "And so to support the holder of the Ever-Burning candle...", + "... allow this unworthy apparel to serve you ...", + "... make it strong enough to burn a thousand time and more ...") + invoke_msg = "... Come forth in your new form, and join the unmelting wax of the one true flame!" + favor_cost = 1000 +///the piece of clothing that will be fireproofed, only one per rite + var/obj/item/clothing/chosen_clothing + +/datum/religion_rites/fireproof/perform_rite(mob/living/user, atom/religious_tool) + for(var/obj/item/clothing/apparel in get_turf(religious_tool)) + if(apparel.max_heat_protection_temperature >= FIRE_IMMUNITY_MAX_TEMP_PROTECT) + continue //we ignore anything that is already fireproof + chosen_clothing = apparel //the apparel has been chosen by our lord and savior + return ..() + return FALSE + +/datum/religion_rites/fireproof/invoke_effect(mob/living/user, atom/religious_tool) + ..() + if(!QDELETED(chosen_clothing) && get_turf(religious_tool) == chosen_clothing.loc) //check if the same clothing is still there + if(istype(chosen_clothing,/obj/item/clothing/suit/hooded)) + var/obj/item/clothing/suit/hooded/as_hooded = chosen_clothing + if(as_hooded.hood) + apply_fireproof(as_hooded.hood) + else if(istype(chosen_clothing,/obj/item/clothing/suit/space/hardsuit)) + var/obj/item/clothing/suit/space/hardsuit/suit = chosen_clothing + if(suit.helmet) + apply_fireproof(suit.helmet) + apply_fireproof(chosen_clothing) + playsound(get_turf(religious_tool), 'sound/magic/fireball.ogg', 50, TRUE) + chosen_clothing = null //our lord and savior no longer cares about this apparel + return TRUE + chosen_clothing = null + to_chat(user,"The clothing that was chosen for the rite is no longer on the altar!") + return FALSE + +/datum/religion_rites/burning_sacrifice + name = "Burning Offering" + desc = "Sacrifice a buckled burning corpse for favor, the more burn damage the corpse has the more favor you will receive." + ritual_length = 15 SECONDS + ritual_invocations = list( + "Burning body ...", + "... cleansed by the flame ...", + "... we were all created from fire ...", + "... and to it ...") + invoke_msg = "... WE RETURN! " +///the burning corpse chosen for the sacrifice of the rite + var/mob/living/carbon/chosen_sacrifice + +/datum/religion_rites/burning_sacrifice/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(!movable_reltool) + return FALSE + if(!LAZYLEN(movable_reltool.buckled_mobs)) + to_chat(user,"Nothing is buckled to the altar!") + return FALSE + for(var/corpse in movable_reltool.buckled_mobs) + if(!iscarbon(corpse))// only works with carbon corpse since most normal mobs can't be set on fire. + to_chat(user,"Only carbon lifeforms can be properly burned for the sacrifice!") + return FALSE + chosen_sacrifice = corpse + if(chosen_sacrifice.stat != DEAD) + to_chat(user,"You can only sacrifice dead bodies, this one is still alive!") + return FALSE + if(!chosen_sacrifice.on_fire) + to_chat(user,"This corpse needs to be on fire to be sacrificed!") + return FALSE + return ..() + +/datum/religion_rites/burning_sacrifice/invoke_effect(mob/living/user, atom/movable/religious_tool) + ..() + if(!(chosen_sacrifice in religious_tool.buckled_mobs)) //checks one last time if the right corpse is still buckled + to_chat(user,"The right sacrifice is no longer on the altar!") + chosen_sacrifice = null + return FALSE + if(!chosen_sacrifice.on_fire) + to_chat(user,"The sacrifice is no longer on fire, it needs to burn until the end of the rite!") + chosen_sacrifice = null + return FALSE + if(chosen_sacrifice.stat != DEAD) + to_chat(user,"The sacrifice has to stay dead for the rite to work!") + chosen_sacrifice = null + return FALSE + var/favor_gained = 100 + round(chosen_sacrifice.getFireLoss()) + GLOB.religious_sect.adjust_favor(favor_gained, user) + to_chat(user, "[GLOB.deity] absorbs the burning corpse and any trace of fire with it. [GLOB.deity] rewards you with [favor_gained] favor.") + chosen_sacrifice.dust(force = TRUE) + playsound(get_turf(religious_tool), 'sound/effects/supermatter.ogg', 50, TRUE) + chosen_sacrifice = null + return TRUE + +/datum/religion_rites/infinite_candle + name = "Immortal Candles" + desc = "Creates 5 candles that never run out of wax." + ritual_length = 10 SECONDS + invoke_msg = "Burn bright, little candles, for you will only extinguish along with the universe." + favor_cost = 200 + +/datum/religion_rites/infinite_candle/invoke_effect(mob/living/user, atom/movable/religious_tool) + ..() + var/altar_turf = get_turf(religious_tool) + for(var/i in 1 to 5) + new /obj/item/candle/infinite(altar_turf) + playsound(altar_turf, 'sound/magic/fireball.ogg', 50, TRUE) + return TRUE diff --git a/code/modules/religion/sects/carp_sect.dm b/code/modules/religion/sects/carp_sect.dm new file mode 100644 index 0000000000000..01b1ca252e29d --- /dev/null +++ b/code/modules/religion/sects/carp_sect.dm @@ -0,0 +1,133 @@ +/datum/religion_sect/carp_sect + name = "Followers of the Great Carp" + desc = "A sect dedicated to the space carp and carp'sie, Offer the gods meat for favor." + quote = "Drown the station in fish and water." + tgui_icon = "fish" + alignment = ALIGNMENT_NEUT + max_favor = 10000 + desired_items = list( + /obj/item/food/meat/slab) + rites_list = list( + /datum/religion_rites/summon_carp, + /datum/religion_rites/flood_area, + /datum/religion_rites/summon_carpsuit) + altar_icon_state = "convertaltar-blue" + +//Carp bibles give people the carp faction! +/datum/religion_sect/carp_sect/sect_bless(mob/living/L, mob/living/user) + if(!isliving(L)) + return FALSE + L.faction |= "carp" + user.visible_message("[user] blessed [L] with the power of [GLOB.deity]! They are now protected from Space Carps, Although carps will still fight back if attacked.") + SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + return TRUE + +/datum/religion_sect/carp_sect/on_sacrifice(obj/item/N, mob/living/L) //and this + var/obj/item/food/meat/meat = N + if(!istype(meat)) //how... + return + adjust_favor(20, L) + to_chat(L, "You offer [meat] to [GLOB.deity], pleasing them and gaining 20 favor in the process.") + qdel(N) + return TRUE + + +/**** Carp rites ****/ +/datum/religion_rites/summon_carp + name = "Summon Carp" + desc = "Creates a Sentient Space Carp, if a soul is willing to take it. If not, the favor is refunded." + ritual_length = 50 SECONDS + ritual_invocations = list( + "Grant us a new follower ...", + "... let them enter our realm ...", + "... become one with our world ...", + "... to swim in our space ...", + "... and help our cause ...") + invoke_msg = "... We summon thee, Holy Carp!" + favor_cost = 500 + +/datum/religion_rites/summon_carp/invoke_effect(mob/living/user, atom/movable/religious_tool) + var/turf/altar_turf = get_turf(religious_tool) + new /obj/effect/temp_visual/bluespace_fissure/long(altar_turf) + user.visible_message("A tear in reality appears above the altar!") + var/list/candidates = poll_ghost_candidates("Do you wish to be summoned as a Holy Carp?", ROLE_HOLY_SUMMONED, null, 10 SECONDS, POLL_IGNORE_HOLYCARP) + if(!length(candidates)) + new /obj/effect/gibspawner/generic(altar_turf) + user.visible_message("The carp pool was not strong enough to bring forth a space carp.") + GLOB.religious_sect?.adjust_favor(400, user) + return NOT_ENOUGH_PLAYERS + var/mob/dead/observer/selected = pick_n_take(candidates) + var/datum/mind/M = new /datum/mind(selected.key) + var/carp_species = pick(/mob/living/simple_animal/hostile/carp/megacarp, /mob/living/simple_animal/hostile/carp) + var/mob/living/simple_animal/hostile/carp = new carp_species(altar_turf) + carp.name = "Holy Space-Carp ([rand(1,999)])" + carp.key = selected.key + carp.sentience_act() + carp.maxHealth += 100 + carp.health += 100 + M.transfer_to(carp) + if(GLOB.religion) + carp.mind?.holy_role = HOLY_ROLE_PRIEST + to_chat(carp, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.") + GLOB.religious_sect?.on_conversion(carp) + if(is_special_character(user)) + to_chat(carp, "You are grateful to have been summoned into this word by [user]. Serve [user.real_name], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") + else + to_chat(carp, "You are grateful to have been summoned into this world. You are now a member of this station's crew, Try not to cause any trouble.") + playsound(altar_turf, 'sound/effects/slosh.ogg', 50, TRUE) + return ..() + +/datum/religion_rites/summon_carpsuit + name = "Summon Carp-Suit" + desc = "Summons a Space-Carp Suit" + ritual_length = 30 SECONDS + ritual_invocations = list( + "We shall become one ...", + "... we shall blend in ...", + "... we shall join in the ways of the carp ...", + "... grant us new clothing ...") + invoke_msg = "So we can swim." + favor_cost = 300 + var/obj/item/clothing/suit/chosen_clothing + +/datum/religion_rites/summon_carpsuit/perform_rite(mob/living/user, atom/religious_tool) + var/turf/T = get_turf(religious_tool) + var/list/L = T.contents + if(!locate(/obj/item/clothing/suit) in L) + to_chat(user, "There is no suit clothing on the altar!") + return FALSE + for(var/obj/item/clothing/suit/apparel in L) + chosen_clothing = apparel //the apparel has been chosen by our lord and savior + return ..() + return FALSE + +/datum/religion_rites/summon_carpsuit/invoke_effect(mob/living/user, atom/religious_tool) + if(!QDELETED(chosen_clothing) && get_turf(religious_tool) == chosen_clothing.loc) //check if the same clothing is still there + user.visible_message("The [chosen_clothing] transforms!") + chosen_clothing.obj_destruction() + chosen_clothing = null + new /obj/item/clothing/suit/space/hardsuit/carp/old(get_turf(religious_tool)) + playsound(get_turf(religious_tool), 'sound/effects/slosh.ogg', 50, TRUE) + return ..() + chosen_clothing = null + to_chat(user, "The clothing that was chosen for the rite is no longer on the altar!") + return FALSE + +/datum/religion_rites/flood_area + name = "Flood Area" + desc = "Flood the area with water vapor, great for learning to swim!" + ritual_length = 25 SECONDS + ritual_invocations = list( + "We must swim ...", + "... but to do so, we need water ...", + "... grant us a great flood ...", + "... soak us in your glory ...", + "... we shall swim forever ...") + invoke_msg = "... in our own personal ocean." + favor_cost = 200 + +/datum/religion_rites/flood_area/invoke_effect(mob/living/user, atom/movable/religious_tool) + var/turf/open/T = get_turf(religious_tool) + if(istype(T)) + T.atmos_spawn_air("water_vapor=5000;TEMP=255") + return ..() diff --git a/code/modules/religion/sects/necro_sect.dm b/code/modules/religion/sects/necro_sect.dm new file mode 100644 index 0000000000000..1adbc03fdd4f0 --- /dev/null +++ b/code/modules/religion/sects/necro_sect.dm @@ -0,0 +1,273 @@ +/datum/religion_sect/necro_sect + name = "Necromancy" + desc = "A sect dedicated to the revival and summoning of the dead. Sacrificing living animals grants you favor." + quote = "An undead army is a must have!" + tgui_icon = "skull" + alignment = ALIGNMENT_EVIL + max_favor = 10000 + desired_items = list( + /obj/item/organ/) + rites_list = list( + /datum/religion_rites/raise_dead, + /datum/religion_rites/living_sacrifice, + /datum/religion_rites/raise_undead, + /datum/religion_rites/create_lesser_lich) + altar_icon_state = "convertaltar-green" + +//Necro bibles don't heal or do anything special apart from the standard holy water blessings +/datum/religion_sect/necro_sect/sect_bless(mob/living/blessed, mob/living/user) + return TRUE + +/datum/religion_sect/necro_sect/on_sacrifice(obj/item/N, mob/living/L) + if(!istype(N, /obj/item/organ)) + return + adjust_favor(10, L) + to_chat(L, "You offer [N] to [GLOB.deity], pleasing them and gaining 10 favor in the process.") + qdel(N) + return TRUE + + +/// Necro Rites + +/datum/religion_rites/create_lesser_lich + name = "Create Lesser Lich" + desc = "Gives the bound creature a spell granting them the ability to create a lesser phylactery, causing them to become a skeleton and revive on death twice if the phylactery still exists on-station. Be warned, becoming a lesser lich will prevent revivial by any other means." + ritual_length = 60 SECONDS //This one's pretty powerful so it'll still be long + ritual_invocations = list("From the depths of the soul pool ...", + "... come forth into this being ...", + "... grant this servant power ...", + "... grant them temporary immortality ...") + invoke_msg = "... Grant them the power to become one with necromancy!!" + favor_cost = 2250 +/// the creature chosen for the rite + var/mob/living/lich_to_be +/// the the typepath of the spell to gran + var/lichspell = /obj/effect/proc_holder/spell/targeted/lesserlichdom + +/datum/religion_rites/create_lesser_lich/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(length(movable_reltool.buckled_mobs)) + for(var/creature in movable_reltool.buckled_mobs) + lich_to_be = creature + if(!lich_to_be.mind.hasSoul) + to_chat(user,"[lich_to_be] has no soul, as such this rite would not help them. To empower another, they must be buckled to [movable_reltool].") + lich_to_be = null + return FALSE + for(var/obj/effect/proc_holder/spell/knownspell in lich_to_be.mob_spell_list) + if(knownspell.type == lichspell) + to_chat(user,"You've already empowered [lich_to_be], get them to use the spell granted to them! To empower another, they must be buckled to [movable_reltool].") + lich_to_be = null + return FALSE + to_chat(user,"You're going to empower the [lich_to_be] who is buckled on [movable_reltool].") + return ..() + else + if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + lich_to_be = user + if(!lich_to_be.mind.hasSoul) + to_chat(user,"You have no soul, as such this rite would not help you. To empower another, they must be buckled to [movable_reltool].") + lich_to_be = null + return FALSE + for(var/obj/effect/proc_holder/spell/knownspell in lich_to_be.mob_spell_list) + if(knownspell.type == lichspell) + to_chat(user,"You've already empowered yourself, use the spell granted to you! To empower another, they must be buckled to [movable_reltool].") + lich_to_be = null + return FALSE + to_chat(user,"You're empowering yourself!") + return ..() + + +/datum/religion_rites/create_lesser_lich/invoke_effect(mob/living/user, atom/movable/religious_tool) + ..() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + if(!length(movable_reltool.buckled_mobs)) + lich_to_be = user + else + for(var/mob/living/carbon/human/buckled in movable_reltool.buckled_mobs) + lich_to_be = buckled + break + if(!lich_to_be) + return FALSE + lich_to_be.AddSpell(new lichspell(null)) + lich_to_be.visible_message("[lich_to_be] has been empowered by the soul pool!") + lich_to_be = null + return ..() + +/datum/religion_rites/raise_undead + name = "Raise Undead" + desc = "Creates an undead creature if a soul is willing to take it." + ritual_length = 50 SECONDS + ritual_invocations = list("Come forth from the pool of souls ...", + "... enter our realm ...", + "... become one with our world ...", + "... rise ...", + "... RISE! ...") + invoke_msg = "... RISE!!!" + favor_cost = 1250 + +/datum/religion_rites/raise_undead/invoke_effect(mob/living/user, atom/movable/religious_tool) + var/turf/altar_turf = get_turf(religious_tool) + new /obj/effect/temp_visual/cult/blood/long(altar_turf) + new /obj/effect/temp_visual/dir_setting/curse/long(altar_turf) + var/list/candidates = poll_ghost_candidates("Do you wish to be resurrected as a Holy Summoned Undead?", ROLE_HOLY_SUMMONED, null, 10 SECONDS, POLL_IGNORE_HOLYUNDEAD) + if(!length(candidates)) + to_chat(user, "The soul pool is empty...") + new /obj/effect/gibspawner/human/bodypartless(altar_turf) + user.visible_message("The soul pool was not strong enough to bring forth the undead.") + GLOB.religious_sect?.adjust_favor(favor_cost, user) //refund if nobody takes the role + return NOT_ENOUGH_PLAYERS + var/mob/dead/observer/selected = pick_n_take(candidates) + var/datum/mind/Mind = new /datum/mind(selected.key) + var/undead_species = pick(/mob/living/carbon/human/species/zombie, /mob/living/carbon/human/species/skeleton) + var/mob/living/carbon/human/species/undead = new undead_species(altar_turf) + undead.real_name = "Holy Undead ([rand(1,999)])" + Mind.active = 1 + Mind.transfer_to(undead) + undead.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(undead), ITEM_SLOT_BACK) + undead.equip_to_slot_or_del(new /obj/item/clothing/under/costume/skeleton(undead), ITEM_SLOT_ICLOTHING) + undead.equip_to_slot_or_del(new /obj/item/clothing/suit/hooded/chaplain_hoodie(undead), ITEM_SLOT_OCLOTHING) + undead.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(undead), ITEM_SLOT_FEET) + undead.AddSpell(new /obj/effect/proc_holder/spell/targeted/smoke(null)) + if(GLOB.religion) + var/obj/item/storage/book/bible/booze/B = new + undead.mind?.holy_role = HOLY_ROLE_PRIEST + B.deity_name = GLOB.deity + B.name = GLOB.bible_name + B.icon_state = GLOB.bible_icon_state + B.item_state = GLOB.bible_item_state + to_chat(undead, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.") + undead.equip_to_slot_or_del(B, ITEM_SLOT_BACKPACK) + GLOB.religious_sect?.on_conversion(undead) + if(is_special_character(user)) + to_chat(undead, "You are grateful to have been summoned into this word by [user]. Serve [user.real_name], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") + else + to_chat(undead, "You are grateful to have been summoned into this world. You are now a member of this station's crew, Try not to cause any trouble.") + playsound(altar_turf, pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg',), 50, TRUE) + return ..() + +/datum/religion_rites/raise_dead + name = "Raise Dead" + desc = "Revives a buckled dead creature or person." + ritual_length = 40 SECONDS + ritual_invocations = list("Rejoin our world ...", + "... come forth from the beyond ...", + "... fresh life awaits you ...", + "... return to us ...", + "... by the power granted by the gods ...", + "... you shall rise again ...") + invoke_msg = "Welcome back to the mortal plain." + favor_cost = 1500 + +///the target + var/mob/living/carbon/human/raise_target + +/datum/religion_rites/raise_dead/perform_rite(mob/living/user, atom/religious_tool) + if(!religious_tool || !ismovable(religious_tool)) + to_chat(user, "This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(!length(movable_reltool.buckled_mobs)) + to_chat(user, "Nothing is buckled to the altar!") + return FALSE + for(var/mob/living/carbon/r_target in movable_reltool.buckled_mobs) + if(!iscarbon(r_target)) + to_chat(user, "Only carbon lifeforms can be properly resurrected!") + return FALSE + if(r_target.stat != DEAD) + to_chat(user, "You can only resurrect dead bodies, this one is still alive!") + return FALSE + if(!r_target.mind) + to_chat(user, "This creature has no connected soul...") + return FALSE + raise_target = r_target + raise_target.notify_ghost_cloning("Your soul is being summoned back to your body by mystical power!", source = src) + return ..() + +/datum/religion_rites/raise_dead/invoke_effect(mob/living/user, atom/movable/religious_tool) + var/turf/altar_turf = get_turf(religious_tool) + if(!(raise_target in religious_tool.buckled_mobs)) + to_chat(user, "The body is no longer on the altar!") + raise_target = null + return FALSE + if(!raise_target.mind) + to_chat(user, "This creature's soul has left the pool...") + raise_target = null + return FALSE + if(raise_target.stat != DEAD) + to_chat(user, "The target has to stay dead for the rite to work! If they came back without your spiritual guidence... Who knows what could happen!?") + raise_target = null + return FALSE + raise_target.grab_ghost() // Shove them back in their body. + raise_target.revive(full_heal = 1, admin_revive = 1) + playsound(altar_turf, 'sound/magic/staff_healing.ogg', 50, TRUE) + raise_target = null + return ..() + +/datum/religion_rites/living_sacrifice + name = "Living Sacrifice" + desc = "Sacrifice a non-sentient living buckled creature for favor." + ritual_length = 25 SECONDS + ritual_invocations = list("To offer this being unto the gods ...", + "... to feed them with its soul ...", + "... so that they may consume all within their path ...", + "... release their binding on this mortal plane ...", + "... I offer you this living being ...") + invoke_msg = "... may it join the horde of undead, and become one with the souls of the damned. " + +//the living creature chosen for the sacrifice of the rite + var/mob/living/chosen_sacrifice +/datum/religion_rites/living_sacrifice/perform_rite(mob/living/user, atom/religious_tool) + if(!religious_tool || !ismovable(religious_tool)) + to_chat(user, "This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(!length(movable_reltool.buckled_mobs)) + to_chat(user, "Nothing is buckled to the altar!") + return FALSE + for(var/creature in movable_reltool.buckled_mobs) + chosen_sacrifice = creature + if(chosen_sacrifice.stat == DEAD) + to_chat(user, "You can only sacrifice living creatures, this one is dead!") + chosen_sacrifice = null + return FALSE + if(chosen_sacrifice.mind) + to_chat(user, "This sacrifice is sentient! [GLOB.deity] will not accept this offering.") + chosen_sacrifice = null + return FALSE + var/mob/living/carbon/C = creature + if(!isnull(C)) + cuff(C) + return ..() + +/datum/religion_rites/living_sacrifice/invoke_effect(mob/living/user, atom/movable/religious_tool) + var/turf/altar_turf = get_turf(religious_tool) + if(!(chosen_sacrifice in religious_tool.buckled_mobs)) //checks one last time if the right creature is still buckled + to_chat(user, "The right sacrifice is no longer on the altar!") + chosen_sacrifice = null + return FALSE + if(chosen_sacrifice.stat == DEAD) + to_chat(user, "The sacrifice is no longer alive, it needs to be alive until the end of the rite!") + chosen_sacrifice = null + return FALSE + var/favor_gained = 200 + round(chosen_sacrifice.health * 2) + GLOB.religious_sect?.adjust_favor(favor_gained, user) + new /obj/effect/temp_visual/cult/blood/out(altar_turf) + to_chat(user, "[GLOB.deity] absorbs [chosen_sacrifice], leaving blood and gore in its place. [GLOB.deity] rewards you with [favor_gained] favor.") + chosen_sacrifice.gib(TRUE, FALSE, TRUE) + playsound(get_turf(religious_tool), 'sound/effects/bamf.ogg', 50, TRUE) + chosen_sacrifice = null + return ..() + +/datum/religion_rites/living_sacrifice/proc/cuff(var/mob/living/carbon/C) + if(C.handcuffed) + return + C.handcuffed = new /obj/item/restraints/handcuffs/energy/cult(C) + C.update_handcuffed() + playsound(C, 'sound/magic/smoke.ogg', 50, 1) + C.visible_message("Darkness forms around [C]'s wrists as shadowy bindings appear on them!") diff --git a/code/modules/religion/sects/plant_sect.dm b/code/modules/religion/sects/plant_sect.dm new file mode 100644 index 0000000000000..c8a0207e293c3 --- /dev/null +++ b/code/modules/religion/sects/plant_sect.dm @@ -0,0 +1,240 @@ +/datum/religion_sect/plant_sect + name = "Nature" + desc = "A sect dedicated to nature, plants, and animals. Sacrificing seeds grants you favor." + quote = "Living plant people? What has the world come to!" + tgui_icon = "tree" + alignment = ALIGNMENT_GOOD + max_favor = 10000 + desired_items = list( + /obj/item/seeds) + rites_list = list( + /datum/religion_rites/create_podperson, + /datum/religion_rites/create_sandstone, + /datum/religion_rites/grass_generator, + /datum/religion_rites/summon_animals) + altar_icon_state = "convertaltar-green" + +//plant bibles don't heal or do anything special apart from the standard holy water blessings +/datum/religion_sect/plant_sect/sect_bless(mob/living/blessed, mob/living/user) + return TRUE + +/datum/religion_sect/plant_sect/on_sacrifice(obj/item/N, mob/living/L) + if(!istype(N, /obj/item/seeds)) + return + adjust_favor(25, L) + to_chat(L, "You offer [N] to [GLOB.deity], pleasing them and gaining 25 favor in the process.") + qdel(N) + return TRUE + + + +/obj/structure/destructible/religion/nature_pylon + name = "Orb of Nature" + desc = "A floating crystal that slowly heals all plantlife and holy creatures. It can be anchored with a null rod." + icon_state = "nature_orb" + anchored = FALSE + light_range = 5 + light_color = LIGHT_COLOR_GREEN + break_message = "The luminous green crystal shatters!" + var/heal_delay = 20 + var/last_heal = 0 + var/spread_delay = 45 + var/last_spread = 0 + +/obj/structure/destructible/religion/nature_pylon/Initialize(mapload) + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/structure/destructible/religion/nature_pylon/LateInitialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/structure/destructible/religion/nature_pylon/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + + +/obj/structure/destructible/religion/nature_pylon/process(delta_time) + if(last_heal <= world.time) + last_heal = world.time + heal_delay + for(var/mob/living/L in range(5, src)) + if(L.health == L.maxHealth) + continue + if(!ispodperson(L) && !L.mind?.holy_role) + continue + new /obj/effect/temp_visual/heal(get_turf(src), "#47ac05") + if(ispodperson(L) || L.mind?.holy_role) + L.adjustBruteLoss(-2*delta_time, 0) + L.adjustToxLoss(-2*delta_time, 0) + L.adjustOxyLoss(-2*delta_time, 0) + L.adjustFireLoss(-2*delta_time, 0) + L.adjustCloneLoss(-2*delta_time, 0) + L.updatehealth() + if(L.blood_volume < BLOOD_VOLUME_NORMAL) + L.blood_volume += 1.0 + CHECK_TICK + if(last_spread <= world.time) + var/list/validturfs = list() + var/list/natureturfs = list() + for(var/T in circleviewturfs(src, 5)) + if(istype(T, /turf/open/floor/grass)) + natureturfs |= T + continue + var/static/list/blacklisted_pylon_turfs = typecacheof(list( + /turf/closed, + /turf/open/floor/grass, + /turf/open/space, + /turf/open/lava, + /turf/open/chasm)) + if(is_type_in_typecache(T, blacklisted_pylon_turfs)) + continue + else + validturfs |= T + + last_spread = world.time + spread_delay + + var/turf/T = safepick(validturfs) + if(T) + if(istype(T, /turf/open/floor/plating)) + T.PlaceOnTop(pick(/turf/open/floor/grass, /turf/open/floor/grass/fairy/green), flags = CHANGETURF_INHERIT_AIR) + else + T.ChangeTurf(pick(/turf/open/floor/grass, /turf/open/floor/grass/fairy/green), flags = CHANGETURF_INHERIT_AIR) + else + var/turf/open/floor/grass/F = safepick(natureturfs) + if(F) + new /obj/effect/temp_visual/religion/turf/floor(F) + else + // Are we in space or something? No grass turfs or + // convertable turfs? + last_spread = world.time + spread_delay*2 + +/obj/structure/destructible/religion/nature_pylon/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/nullrod)) + if(user.mind?.holy_role == NONE) + to_chat(user, "Only the faithful may control the disposition of [src]!") + return + anchored = !anchored + user.visible_message("[user] [anchored ? "" : "un"]anchors [src] [anchored ? "to" : "from"] the floor with [I].", "You [anchored ? "" : "un"]anchor [src] [anchored ? "to" : "from"] the floor with [I].") + playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) + user.do_attack_animation(src) + return + if(I.tool_behaviour == TOOL_WRENCH) + return + return ..() + + +/**** Plant rites ****/ +/datum/religion_rites/summon_animals + name = "Create Life" + desc = "Creates a few animals, this can range from butterflys to giant frogs! Please be careful." + ritual_length = 30 SECONDS + ritual_invocations = list( + "Great Mother ...", + "... bring us new life ...", + "... to join with our nature ...", + "... and live amongst us ...") + invoke_msg = "... We summon thee, Animals from the Byond!" //might adjust to beyond due to ooc/ic/meta + favor_cost = 500 + +/datum/religion_rites/summon_animals/perform_rite(mob/living/user, atom/religious_tool) + var/turf/altar_turf = get_turf(religious_tool) + new /obj/effect/temp_visual/bluespace_fissure/long(altar_turf) + user.visible_message("A tear in reality appears above the altar!") + return ..() + +/datum/religion_rites/summon_animals/invoke_effect(mob/living/user, atom/religious_tool) + ..() + var/turf/altar_turf = get_turf(religious_tool) + for(var/i in 1 to 8) + var/mob/living/spawned_mob = create_random_mob(altar_turf, FRIENDLY_SPAWN) + spawned_mob.faction |= "neutral" + playsound(altar_turf, 'sound/ambience/servicebell.ogg', 25, TRUE) + if(prob(0.1)) + playsound(altar_turf, 'sound/effects/bamf.ogg', 100, TRUE) + altar_turf.visible_message("A large form seems to be forcing its way into your reality via the portal [user] opened! RUN!!!") + new /mob/living/simple_animal/hostile/jungle/leaper(altar_turf) + return ..() + +/datum/religion_rites/create_sandstone + name = "Create Sandstone" + desc = "Create Sandstone for soil production to help create a plant garden." + ritual_length = 35 SECONDS + ritual_invocations = list( + "Bring to us ...", + "... the stone we need ...", + "... so we can toil away ...") + invoke_msg = "and spread many seeds." + favor_cost = 800 + +/datum/religion_rites/create_sandstone/invoke_effect(mob/living/user, atom/religious_tool) + new /obj/item/stack/sheet/mineral/sandstone/fifty(get_turf(religious_tool)) + playsound(get_turf(religious_tool), 'sound/effects/pop_expl.ogg', 50, TRUE) + return ..() + +/datum/religion_rites/grass_generator + name = "Blessing of Nature" + desc = "Summon a moveable object that slowly generates grass and fairy-grass around itself while healing any Pod-People or Holy people nearby." + ritual_length = 60 SECONDS + ritual_invocations = list( + "Let the plantlife grow ...", + "... let it grow across the land ...", + "... far and wide it shall spread ...", + "... show us true nature ...", + "... and we shall worship it all ...") + invoke_msg = "... in our own personal haven." + favor_cost = 1000 + +/datum/religion_rites/grass_generator/invoke_effect(mob/living/user, atom/movable/religious_tool) + var/turf/open/T = get_turf(religious_tool) + if(istype(T)) + new /obj/structure/destructible/religion/nature_pylon(T) + return ..() + +/datum/religion_rites/create_podperson + name = "Nature Conversion" + desc = "Convert a human-esque individual into a being of nature. Buckle a human to convert them, otherwise it will convert you." + ritual_length = 30 SECONDS + ritual_invocations = list( + "By the power of nature ...", + "... We call upon you, in this time of need ...", + "... to merge us with all that is natural ...") + invoke_msg = "... May the grass be greener on the other side, show us what it means to be one with nature!!" + favor_cost = 300 + +/datum/religion_rites/create_podperson/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(!movable_reltool) + return FALSE + if(LAZYLEN(movable_reltool.buckled_mobs)) + to_chat(user,"You're going to convert the one buckled on [movable_reltool].") + else + if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + if(ispodperson(user)) + to_chat(user,"You've already converted yourself. To convert others, they must be buckled to [movable_reltool].") + return FALSE + to_chat(user,"You're going to convert yourself with this ritual.") + return ..() + +/datum/religion_rites/create_podperson/invoke_effect(mob/living/user, atom/religious_tool) + ..() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + var/mob/living/carbon/human/rite_target + if(!movable_reltool?.buckled_mobs?.len) + rite_target = user + else + for(var/buckled in movable_reltool.buckled_mobs) + if(ishuman(buckled)) + rite_target = buckled + break + if(!rite_target) + return FALSE + rite_target.set_species(/datum/species/pod) + rite_target.visible_message("[rite_target] has been converted by the rite of [name]!") + return TRUE diff --git a/code/modules/religion/sects/puritan_sect.dm b/code/modules/religion/sects/puritan_sect.dm new file mode 100644 index 0000000000000..1fbdfc94409b0 --- /dev/null +++ b/code/modules/religion/sects/puritan_sect.dm @@ -0,0 +1,7 @@ +/datum/religion_sect/puritanism + name = "Nanotrasen Approved God" + desc = "Your run-of-the-mill sect, there are no benefits or boons associated." + quote = "Nanotrasen Recommends!" + tgui_icon = "bible" + +// Yes, that's all. diff --git a/code/modules/religion/sects/shadow_sect.dm b/code/modules/religion/sects/shadow_sect.dm new file mode 100644 index 0000000000000..0b010ec1678a2 --- /dev/null +++ b/code/modules/religion/sects/shadow_sect.dm @@ -0,0 +1,303 @@ +// Shadow sect - Original code by DingoDongler +/datum/religion_sect/shadow_sect + starter = FALSE + name = "Shadow" + desc = "A sect dedicated to the darkness. The manifested obelisks will generate favor from being in darkness." + quote = "Turn out the lights, and let the darkness cover the world!" + tgui_icon = "moon" + alignment = ALIGNMENT_EVIL + favor = 100 //Starts off with enough favor to make an obelisk + max_favor = 25000 + desired_items = list( + /obj/item/flashlight) + rites_list = list( + /datum/religion_rites/expand_shadows, + /datum/religion_rites/shadow_obelisk, + /datum/religion_rites/shadow_conversion, + /datum/religion_rites/shadow_blessing, + /datum/religion_rites/shadow_eyes) + altar_icon_state = "convertaltar-dark" + var/light_reach = 1 + var/light_power = 0 + var/list/obelisks = list() + +/datum/religion_sect/shadow_sect/is_available(mob/user) + if(isshadow(user)) + return TRUE + return FALSE + +//Shadow sect doesn't heal +/datum/religion_sect/shadow_sect/sect_bless(mob/living/blessed, mob/living/user) + return TRUE + +/datum/religion_sect/shadow_sect/on_sacrifice(obj/item/N, mob/living/L) + if(!istype(N, /obj/item/flashlight)) + return + adjust_favor(5, L) + to_chat(L, "You offer [N] to [GLOB.deity], pleasing them and gaining 5 favor in the process.") + qdel(N) + return TRUE + +/datum/religion_sect/shadow_sect/on_select(atom/religious_tool, mob/living/user) + . = ..() + if(!religious_tool || !user) + return + religious_tool.AddComponent(/datum/component/dark_favor, user) + +/datum/religion_sect/shadow_sect/on_conversion(mob/living/chap) //When sect is selected, and when a new chaplain joins after sect has been selected + . = ..() + if(is_special_character(chap)) + to_chat(chap, "As you are an antagonist role, you are free to spread darkness across the station.") + else + to_chat(chap, "You are not an antagonist, please do not spread darkness outside of the chapel without Command Staff approval.") + + +// Shadow sect construction +/obj/structure/destructible/religion/shadow_obelisk + name = "Shadow Obelisk" + desc = "Grants favor from being shrouded in shadows." + icon = 'icons/obj/hand_of_god_structures.dmi' + icon_state = "shadow-obelisk" + anchored = FALSE + break_message = "The Obelisk crumbles before you!" + +/obj/structure/destructible/religion/shadow_obelisk/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/nullrod)) + if(user.mind?.holy_role == NONE) + to_chat(user, "Only the faithful may control the disposition of [src]!") + return + anchored = !anchored + user.visible_message("[user] [anchored ? "" : "un"]anchors [src] [anchored ? "to" : "from"] the floor with [I].", "You [anchored ? "" : "un"]anchor [src] [anchored ? "to" : "from"] the floor with [I].") + playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) + user.do_attack_animation(src) + return + if(I.tool_behaviour == TOOL_WRENCH) + return + return ..() + +// Favor generator component. Used on the altar and obelisks +/datum/component/dark_favor //Original code by DingoDongler + var/mob/living/creator + +/datum/component/dark_favor/Initialize(mob/living/L) + . = ..() + if(!L) + return + creator = L + START_PROCESSING(SSobj, src) + +/datum/component/dark_favor/Destroy() //Original code by DingoDongler + . = ..() + STOP_PROCESSING(SSobj, src) + +/datum/component/dark_favor/process(delta_time) //Original code by DingoDongler + var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect + if(!istype(parent, /atom) || !istype(creator) || !istype(sect)) + return + var/atom/P = parent + var/turf/T = P.loc + if(!istype(T)) + return + var/light_amount = T.get_lumcount() + var/favor_gained = max(1 - light_amount, 0) * delta_time + sect.adjust_favor(favor_gained, creator) + + + +/**** Shadow rites ****/ //Original code by DingoDongler + +#define DARKNESS_INVERSE_COLOR "#AAD84B" //The color of light has to be inverse, since we're using negative light power + +/datum/religion_rites/shadow_conversion + name = "Shadowperson Conversion" + desc = "Converts a humanoid into a shadowperson, a race blessed by darkness." + ritual_length = 30 SECONDS + ritual_invocations = list( + "Let the darkness seep into you...", + "... And cover you, envelope you ...", + "... And make you one with it ...") + invoke_msg = "... And let you be born again!" + favor_cost = 1200 + +/datum/religion_rites/shadow_conversion/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user, "This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(LAZYLEN(movable_reltool.buckled_mobs)) + to_chat(user,"You're going to convert the one buckled on [movable_reltool].") + else + if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + if(isshadow(user)) + to_chat(user,"You've already converted yourself. To convert others, they must be buckled to [movable_reltool].") + return FALSE + to_chat(user,"You're going to convert yourself with this ritual.") + return ..() + +/datum/religion_rites/shadow_conversion/invoke_effect(mob/living/user, atom/religious_tool) + ..() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + var/mob/living/carbon/human/rite_target + if(!movable_reltool?.buckled_mobs?.len) + rite_target = user + else + for(var/buckled in movable_reltool.buckled_mobs) + if(ishuman(buckled)) + rite_target = buckled + break + if(!rite_target) + return FALSE + rite_target.set_species(/datum/species/shadow) + rite_target.visible_message("[rite_target] has been converted by the rite of [name]!") + return TRUE + +/datum/religion_rites/shadow_obelisk + name = "Obelisk Manifestation" + desc = "Creates an obelisk that generates favor when in a dark area." + ritual_length = 45 SECONDS + ritual_invocations = list( + "Let the shadows combine...", + "... Solidify and grow ...", + "... Make an idol to eminate shadows ...") + invoke_msg = "I summon forth an obelisk, to appease the darkness." + favor_cost = 100 //Sect starts with 100 favor to begin + +/datum/religion_rites/shadow_obelisk/invoke_effect(mob/living/user, atom/religious_tool) + var/altar_turf = get_turf(religious_tool) + var/obj/structure/destructible/religion/shadow_obelisk/obelisk = new(altar_turf) + var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect + sect.obelisks += obelisk + obelisk.AddComponent(/datum/component/dark_favor, user) + obelisk.set_light(sect.light_reach, sect.light_power, DARKNESS_INVERSE_COLOR) + playsound(altar_turf, 'sound/magic/fireball.ogg', 50, TRUE) + return ..() + +/datum/religion_rites/expand_shadows + name = "Shadow Expansion" + desc = "Grow the reach of shadows extending from the altar, and any obelisks." + ritual_length = 40 SECONDS + ritual_invocations = list( + "Spread out...", + "... Kill the light ...", + "... Encompass it all in darkness ...") + invoke_msg = "Shadows, reach your tendrils from my altar, and extend thy domain." + favor_cost = 175 + +/datum/religion_rites/expand_shadows/perform_rite(mob/living/user, atom/religious_tool) + var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect + if((sect.light_power <= -5) || (sect.light_reach >= 10)) + to_chat(user, "The shadows emanating from your idols is as strong as it could be.") + return FALSE + return ..() + +/datum/religion_rites/expand_shadows/invoke_effect(mob/living/user, atom/religious_tool) + . = ..() + var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect + if(!sect) + return + sect.light_reach += 2 + sect.light_power -= 1 + religious_tool.set_light(sect.light_reach, sect.light_power, DARKNESS_INVERSE_COLOR) + for(var/obj/structure/destructible/religion/shadow_obelisk/D in sect.obelisks) + D.set_light(sect.light_reach, sect.light_power, DARKNESS_INVERSE_COLOR) + +/datum/religion_rites/shadow_blessing + name = "Shadow Blessing" + desc = "Bless someone with the power of shadows, and make them immune to all magic." + ritual_length = 60 SECONDS + ritual_invocations = list( + "Let the darkness reside within us...", + "... Let the power flow ...", + "... Encompass our souls in shade ...", + "... And let the demons know ...", + "... That their powers will not work apon us any more...",) + invoke_msg = "Bless thy brethen, and grant them immunity!" + favor_cost = 8000 + +/datum/religion_rites/shadow_blessing/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user, "This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(LAZYLEN(movable_reltool.buckled_mobs)) + to_chat(user,"You're going to bless the one buckled on [movable_reltool].") + else + if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + if(isshadow(user)) + to_chat(user,"You've already blessed yourself. To convert others, they must be buckled to [movable_reltool].") + return FALSE + to_chat(user,"You're going to bless yourself with this ritual.") + return ..() + +/datum/religion_rites/shadow_blessing/invoke_effect(mob/living/user, atom/religious_tool) + ..() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + var/mob/living/carbon/human/rite_target + if(!movable_reltool?.buckled_mobs?.len) + rite_target = user + else + for(var/buckled in movable_reltool.buckled_mobs) + if(ishuman(buckled)) + rite_target = buckled + break + if(!rite_target) + return FALSE + ADD_TRAIT(rite_target, TRAIT_ANTIMAGIC, MAGIC_TRAIT) + //glowing wings overlay + playsound(rite_target, 'sound/weapons/fwoosh.ogg', 75, 0) + rite_target.visible_message("[rite_target] has been blessed by the rite of [name]!") + return TRUE + + +/datum/religion_rites/shadow_eyes + name = "Grant Shadow Eyes" + desc = "Grants either the caster, or the buckled person, shadow eyes that give night vision." + ritual_length = 30 SECONDS + ritual_invocations = list( + "Grant us the sight ...", + "... We call upon the shadows ...", + "... Show us the way ...") + invoke_msg = "... Let the darkness be our guide!!" + favor_cost = 1000 + +/datum/religion_rites/shadow_eyes/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(length(movable_reltool.buckled_mobs)) + to_chat(user,"You're going to grant the eyes to the one buckled on [movable_reltool].") + else if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + else + to_chat(user,"You're going to grant the eyes to yourself with this ritual.") + return ..() + +/datum/religion_rites/shadow_eyes/invoke_effect(mob/living/user, atom/religious_tool) + ..() + var/obj/item/organ/eyes/night_vision/organ = new() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + var/mob/living/carbon/human/rite_target + if(!length(movable_reltool.buckled_mobs)) + rite_target = user + else + for(var/buckled in movable_reltool.buckled_mobs) + if(ishuman(buckled)) + rite_target = buckled + break + if(!rite_target) + return FALSE + organ.Insert(rite_target) + rite_target.visible_message("[organ] have been merged into [rite_target] by the rite of [name]!") + return TRUE diff --git a/code/modules/religion/sects/techno_sect.dm b/code/modules/religion/sects/techno_sect.dm new file mode 100644 index 0000000000000..0ab00c54fd295 --- /dev/null +++ b/code/modules/religion/sects/techno_sect.dm @@ -0,0 +1,202 @@ +/datum/religion_sect/technophile + name = "Technophile" + quote = "May you find peace in a metal shell." + desc = "Bibles now recharge cyborgs and heal robotic limbs if targeted, but they \ + do not heal organic limbs. You can now sacrifice cells, with favor depending on their charge." + tgui_icon = "robot" + alignment = ALIGNMENT_NEUT + desired_items = list( + /obj/item/stock_parts/cell = "with battery charge") + rites_list = list( + /datum/religion_rites/synthconversion, + /datum/religion_rites/machine_blessing, + /datum/religion_rites/machine_implantation) + altar_icon_state = "convertaltar-blue" + max_favor = 5000 + +/datum/religion_sect/technophile/sect_bless(mob/living/target, mob/living/chap) + if(iscyborg(target)) + var/mob/living/silicon/robot/R = target + var/charge_amt = 50 + if(target.mind?.holy_role == HOLY_ROLE_HIGHPRIEST) + charge_amt *= 2 + R.cell?.charge += charge_amt + R.visible_message("[chap] charges [R] with the power of [GLOB.deity]!") + to_chat(R, "You are charged by the power of [GLOB.deity]!") + SEND_SIGNAL(R, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + playsound(chap, 'sound/effects/bang.ogg', 25, TRUE, -1) + return TRUE + if(!ishuman(target)) + return + var/mob/living/carbon/human/blessed = target + + //first we determine if we can charge them + var/did_we_charge = FALSE + var/obj/item/organ/stomach/battery/ethereal/eth_stomach = blessed.getorganslot(ORGAN_SLOT_STOMACH) + if(istype(eth_stomach)) + eth_stomach.adjust_charge(60) + did_we_charge = TRUE + + //if we're not targeting a robot part we stop early + var/obj/item/bodypart/bodypart = blessed.get_bodypart(chap.get_combat_bodyzone(target, zone_context = BODYZONE_CONTEXT_ROBOTIC_LIMB_HEALING)) + if(IS_ORGANIC_LIMB(bodypart)) + if(!did_we_charge) + to_chat(chap, "[GLOB.deity] scoffs at the idea of healing such fleshy matter!") + else + blessed.visible_message("[chap] charges [blessed] with the power of [GLOB.deity]!") + to_chat(blessed, "You feel charged by the power of [GLOB.deity]!") + SEND_SIGNAL(blessed, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + playsound(chap, 'sound/machines/synth_yes.ogg', 25, TRUE, -1) + return TRUE + + //charge(?) and go + if(bodypart.heal_damage(5,5,null,BODYTYPE_ROBOTIC)) + blessed.update_damage_overlays() + + blessed.visible_message("[chap] [did_we_charge ? "repairs" : "repairs and charges"] [blessed] with the power of [GLOB.deity]!") + to_chat(blessed, "The inner machinations of [GLOB.deity] [did_we_charge ? "repairs" : "repairs and charges"] you!") + playsound(chap, 'sound/effects/bang.ogg', 25, TRUE, -1) + SEND_SIGNAL(blessed, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + return TRUE + +/datum/religion_sect/technophile/on_sacrifice(obj/item/I, mob/living/chap) + var/obj/item/stock_parts/cell/the_cell = I + if(!istype(the_cell)) //how... + return + if(the_cell.charge < 300) + to_chat(chap,"[GLOB.deity] does not accept pity amounts of power.") + return + adjust_favor(round(the_cell.charge/100), chap) + to_chat(chap, "You offer [the_cell]'s power to [GLOB.deity], pleasing them.") + qdel(I) + return TRUE + + + +/**** Technophile Sect ****/ +/datum/religion_rites/synthconversion + name = "Synthetic Conversion" + desc = "Convert a human-esque individual into a (superior) Android. Buckle a human to convert them, otherwise it will convert you." + ritual_length = 25 SECONDS + ritual_invocations = list( + "By the inner workings of our god ...", + "... We call upon you, in the face of adversity ...", + "... to complete us, removing that which is undesirable ...") + invoke_msg = "... Arise, our champion! Become that which your soul craves, live in the world as your true form!!" + favor_cost = 1800 + +/datum/religion_rites/synthconversion/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(!movable_reltool) + return FALSE + if(LAZYLEN(movable_reltool.buckled_mobs)) + to_chat(user,"You're going to convert the one buckled on [movable_reltool].") + else + if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + if(isandroid(user)) + to_chat(user,"You've already converted yourself. To convert others, they must be buckled to [movable_reltool].") + return FALSE + to_chat(user,"You're going to convert yourself with this ritual.") + return ..() + +/datum/religion_rites/synthconversion/invoke_effect(mob/living/user, atom/religious_tool) + ..() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + var/mob/living/carbon/human/rite_target + if(!movable_reltool?.buckled_mobs?.len) + rite_target = user + else + for(var/buckled in movable_reltool.buckled_mobs) + if(ishuman(buckled)) + rite_target = buckled + break + if(!rite_target) + return FALSE + rite_target.set_species(/datum/species/android) + rite_target.visible_message("[rite_target] has been converted by the rite of [name]!") + return TRUE + + +/datum/religion_rites/machine_blessing + name = "Receive Blessing" + desc = "Receive a random blessing from the machine god to further your ascension." + ritual_length = 5 SECONDS + ritual_invocations =list( + "Let your will power our forges.", + "... Help us in our great conquest!") + invoke_msg = "The end of flesh is near!" + favor_cost = 800 + +/datum/religion_rites/machine_blessing/invoke_effect(mob/living/user, atom/movable/religious_tool) + ..() + var/altar_turf = get_turf(religious_tool) + var/blessing = pick( + /obj/item/organ/cyberimp/arm/surgery, + /obj/item/organ/cyberimp/eyes/hud/diagnostic, + /obj/item/organ/cyberimp/eyes/hud/medical, + /obj/item/organ/cyberimp/mouth/breathing_tube, + /obj/item/organ/cyberimp/chest/thrusters, + /obj/item/organ/cyberimp/chest/nutriment, + /obj/item/organ/cyberimp/arm/toolset, + /obj/item/organ/wings/cybernetic, + /obj/item/organ/eyes/robotic/glow) + new blessing(altar_turf) + return TRUE + + +/datum/religion_rites/machine_implantation + name = "Machine Implantation" + desc = "Apply a provided upgrade to your body. Place a cybernetic item on the altar, then buckle someone to implant them, otherwise it will implant you." + ritual_length = 20 SECONDS + ritual_invocations = list( + "Lend us your power ...", + "... We call upon you, grant us this upgrade ...", + "... Complete us, joining man and machine ...") + invoke_msg = "... Let the mechanical parts, Merge!!" + favor_cost = 1000 + var/obj/item/organ/chosen_implant + +/datum/religion_rites/machine_implantation/perform_rite(mob/living/user, atom/religious_tool) + chosen_implant = locate() in get_turf(religious_tool) + if(!chosen_implant) + to_chat(user, "This rite requires cybernetics for implantation.") + return FALSE + if(!ismovable(religious_tool)) + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(length(movable_reltool.buckled_mobs)) + to_chat(user,"You're going to merge the implant with the one buckled on [movable_reltool].") + else if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + to_chat(user,"You're going to merge the implant into yourself with this ritual.") + return ..() + +/datum/religion_rites/machine_implantation/invoke_effect(mob/living/user, atom/religious_tool) + ..() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + var/mob/living/carbon/human/rite_target + if(!length(movable_reltool.buckled_mobs)) + rite_target = user + else + for(var/buckled in movable_reltool.buckled_mobs) + if(ishuman(buckled)) + rite_target = buckled + break + if(!rite_target) + chosen_implant = null + return FALSE + chosen_implant.Insert(rite_target) + rite_target.visible_message("[chosen_implant] has been merged into [rite_target] by the rite of [name]!") + chosen_implant = null + return TRUE diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 303dda09e28f8..896eb2235dd57 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -1097,3 +1097,13 @@ materials = list(/datum/material/iron = 100, /datum/material/glass = 50) build_path = /obj/item/assembly/control category = list("initial","Misc") + +/datum/design/digital_clock_frame + name = "Digital Clock Frame" + id = "digital_clock_frame" + build_type = AUTOLATHE | PROTOLATHE + materials = list(/datum/material/iron = 700, /datum/material/glass = 400) + build_path = /obj/item/wallframe/digital_clock + category = list("initial", "Construction") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SERVICE + diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index d92700c454b96..e81c0f8ed5803 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -137,7 +137,7 @@ Note: Must be placed within 3 tiles of the R&D Console var/user_mode_string = "" if(length(point_value)) user_mode_string = " for [json_encode(point_value)] points" - else if(loaded_item.custom_materials.len) + else if(length(loaded_item.custom_materials)) user_mode_string = " for material reclamation" var/choice = input("Are you sure you want to destroy [loaded_item][user_mode_string]?") in list("Proceed", "Cancel") if(choice != "Proceed") diff --git a/code/modules/research/nanites/nanite_programs/suppression.dm b/code/modules/research/nanites/nanite_programs/suppression.dm index c0fc41fa4db21..21e7cb7245dea 100644 --- a/code/modules/research/nanites/nanite_programs/suppression.dm +++ b/code/modules/research/nanites/nanite_programs/suppression.dm @@ -134,10 +134,6 @@ trigger_cost = 3 trigger_cooldown = 20 rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay) - var/static/list/blacklist = list( - "*surrender", - "*collapse" - ) /datum/nanite_program/comm/speech/register_extra_settings() . = ..() @@ -155,8 +151,6 @@ if(!comm_message) var/datum/nanite_extra_setting/sentence = extra_settings[NES_SENTENCE] sent_message = sentence.get_value() - if(sent_message in blacklist) - return to_chat(host_mob, "You feel compelled to speak...") host_mob.say(sent_message, forced = "nanite speech") diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index e16979c4ced27..d3d0d4224b9a5 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -31,7 +31,7 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi if(works_from_distance) user.Beam(attacked_machinery, icon_state = "rped_upgrade", time = 5) attacked_machinery.exchange_parts(user, src) - return FALSE + return TRUE var/obj/structure/frame/machine/attacked_frame = attacked_object diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index 1274132407b04..d348f5b29ed57 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -220,6 +220,9 @@ owner.adjustFireLoss(1) owner.Jitter(3) owner.adjust_bodytemperature(-10) + if(ishuman(owner)) + var/mob/living/carbon/human/humi = owner + humi.adjust_coretemperature(-10) /datum/status_effect/bonechill/on_remove() owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/bonechill) @@ -478,7 +481,10 @@ /datum/status_effect/stabilized/orange/tick() var/body_temperature_difference = owner.get_body_temp_normal(apply_change=FALSE) - owner.bodytemperature - owner.adjust_bodytemperature(min(5,body_temperature_difference)) + owner.adjust_bodytemperature(min(5, body_temperature_difference)) + if(ishuman(owner)) + var/mob/living/carbon/human/humi = owner + humi.adjust_coretemperature(min(5, humi.get_body_temp_normal(apply_change=FALSE) - humi.coretemperature)) return ..() /datum/status_effect/stabilized/purple diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm index 76f1bb748128c..7a0247f5b6e9c 100644 --- a/code/modules/spells/spell_types/construct_spells.dm +++ b/code/modules/spells/spell_types/construct_spells.dm @@ -245,6 +245,9 @@ user.playsound_local(get_turf(user), 'sound/effects/ghost2.ogg', 50, 1) target.become_blind(MAGIC_BLIND) addtimer(CALLBACK(src, PROC_REF(cure_blindness), target), 40) + if(ishuman(targets[1])) + var/mob/living/carbon/human/humi = targets[1] + humi.adjust_coretemperature(-200) target.adjust_bodytemperature(-200) /obj/effect/proc_holder/spell/targeted/abyssal_gaze/proc/cure_blindness(mob/living/L) diff --git a/html/changelog.html b/html/changelog.html index 64a3b8b26d381..cce76aba099ee 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,54 @@ -->
+

08 May 2024

+

DrDuckedGoose updated:

+
    +
  • Fix emissives on players
  • +
  • Add filter compatibility to emissives
  • +
+

EvilDragonfiend updated:

+
    +
  • Improved textification of the language icon rendering in TGUI.
  • +
  • cleaned up religion code into multiple dm files
  • +
  • Refactored weather code and fixed weather bad rendering issue.
  • +
  • Void Heretic no longer shows void weather where they don't stand on.
  • +
+

PowerfulBacon updated:

+
    +
  • Fixes 515 compilation issue regarding species cold temperature
  • +
+

XeonMations updated:

+
    +
  • Fixed blood cultists being able to place structures on survival pods
  • +
+

rkz, coiax updated:

+
    +
  • Refactors step_action to save us from a few thousand useless proccalls per shift
  • +
+

rkz, nightred, lemoninthedark updated:

+
    +
  • refactored temperature stabilization in humans. Split human temperature into core temperature, which is affected by fevers & shivering symptoms and represents the overall temperature range, and Body Temperature which is what is directly affected by environmental factors and projectiles.
  • +
  • All species will now receive temperature HUD alerts before receiving damage.
  • +
  • recalculates burn damage based on overall temperature
  • +
+ +

07 May 2024

+

EvilDragonfiend updated:

+
    +
  • fixed some nulls
  • +
+

Hardly updated:

+
    +
  • Adds an universal enzyme to the lavaland beach biodome, allowing beach bums to make stuff like bread and tofu
  • +
  • Adds a griddle to the lavaland beach biodome, allowing beach bums to cook again
  • +
+

rkz, haukeschuemann, Rohesie, Timberpoes, zxaber updated:

+
    +
  • Standardized the entire attack_chain and added stack_traces to detect when & where it fails.
  • +
  • minor buff to telekinesis to use most interact() code. Unlikely to cause major change, just reducing duplicate code where TK would have its own proc for essentially doing the exact same thing
  • +
+

04 May 2024

XeonMations updated:

    @@ -574,125 +622,6 @@

    contributors updated:

    • removes a lightswitch on fland
    - -

    07 March 2024

    -

    @BriggsIDP @DrDuckedGoose @HowToLoLu updated:

    -
      -
    • added a new subtype of the holodeck, a smaller 7x7 holodeck
    • -
    • 4 new shuttles: cargo_tiny, mining_tiny, arrival_tiny and evac_tiny
    • -
    • Edited bimo gen for surface fauna gen
    • -
    • lighting fixes for dynamic lighting thanks to dakae!
    • -
    • fixed some zlevel rendering issues
    • -
    • tweaked the mapGenerator files biome gen; pixel shifting placed objs
    • -
    • various turfs for planetary use
    • -
    • pool water code to beach/water, you have to climb in it!
    • -
    • made tesla quieter
    • -
    -

    MarkusLarsson421 updated:

    -
      -
    • Added a map sign for Echo Station able to display any of the four floors for mappers to guide players.
    • -
    -

    MatiAvanti updated:

    -
      -
    • Replace "Red Dead Redemption Two" and "Yanye Kest" with "Bonkers" and "John Nanotrasen"
    • -
    - -

    06 March 2024

    -

    Aramix updated:

    -
      -
    • Admins can now use View Variable's Add Component/Element again (adminbus potential)
    • -
    -

    EvilDragonfiend updated:

    -
      -
    • Revived 'get_recipes()' proc
    • -
    • Base materials now correctly show a dupe version of a craftable object. Currently only a chair is available, and only certain materials like Iron, Plasma sheet, Bananium sheet, etc have this.
    • -
    • fixed some materials are not matched to each other
    • -
    -

    ToasterBan updated:

    -
      -
    • adding a beaker to a medbot is now logged
    • -
    • The "Flow Hair" hairstyle, which was identical to "Short Hair 4"
    • -
    - -

    05 March 2024

    -

    rkz, Mothblocks, ArcaneDefence updated:

    -
      -
    • moths can eat clothes again (perhaps to the dismay of a few)
    • -
    - -

    04 March 2024

    -

    EvilDragonfiend updated:

    -
      -
    • Fixed telekinesis mutation throwing runtime when a holder touches an airlock.
    • -
    • Telekinesis effect will be shown on an airlock whenever it's telekinetically interacted
    • -
    -

    Tsar-Salat updated:

    -
      -
    • fixes bug with cyborg glass stacks when crafting or using on tableframes
    • -
    - -

    03 March 2024

    -

    HowToLoLu updated:

    -
      -
    • Removed an offensive word from the list of phobia trigger words.
    • -
    -

    RKz, ShizCalev updated:

    -
      -
    • Converted everything to use setAnchored() as opposed to setting the anchored var directly. This means that COMSIG_MOVABLE_SETANCHORED can now actually be used reliably to track if an object's anchored var has changed.
    • -
    • The refactor also means that varediting the anchored var will now properly update most items' other states that rely on it being set a certain way.
    • -
    • Fixed bookcases having the incorrect icon when they're unanchored.
    • -
    • Fixed bookcases not automatically picking up spellbooks / storage books when made/spawned.
    • -
    • Fixed bookcases not dropping spellbooks / storage books when deconstructed.
    • -
    -

    ToasterBan updated:

    -
      -
    • You can now name a constructed medbot using a pen on it
    • -
    • Chemist PDA job disks now also contain robot management
    • -
    • Medbot UI now tells you the name of the beaker/chembag that is inserted in it
    • -
    • Medbots need to be unlocked to have their beaker/chembag removed
    • -
    -

    Tsar-Salat updated:

    -
      -
    • Full conversion to the new food typepath
    • -
    • fixes all instances of machines checking for the old path instead of the new food path, incl. vendors & microwaves
    • -
    • converts misc.dm to use protein values
    • -
    • converts snacks_vend.dm to use protein values
    • -
    -

    rkz, Mickyan, Donkie, willox, Timberpoes, Kush1Push1, AnturK updated:

    -
      -
    • bloody footprints no longer spawn with incorrect steps and don't break when rotated on shuttles
    • -
    • Blood dripping frequency now scales with blood loss
    • -
    • Fixed blood decals occasionally containing more blood than they should
    • -
    • Footprints and bloody shoes major update. Hardsuits and bare feet can now get bloody as well. Improved blood spreading behaviour.
    • -
    • Shoes will no longer get bloody while wearing something that covers them.
    • -
    • Blood splatters only make your shoes or feet bloody if the tile is bloody enough,
    • -
    • Light steps trait prevents clothing from being covered in blood if you step on a bloody tile with your shoes off.
    • -
    • Blood dries over time. Usually, 3 or 6 minutes. If a splatter is big enough, it can stay wet up to 15 minutes.
    • -
    • The detective's scanner should now always properly output the correct data for scans and should no longer print out blank entries erroneously.
    • -
    -

    rkz, Seris02, ExcessiveUseOfCobblestone updated:

    -
      -
    • Dehardcodes milkable component reagent
    • -
    • Snakes can now be milked for venom. They don't seem to mind.
    • -
    • fixed bad qdels with milkable component
    • -
    • converted VV component list input to TGUI
    • -
    -

    rkz, mickyan updated:

    -
      -
    • randomized pixel shifting when throwing items
    • -
    -

    zeskorion updated:

    -
      -
    • removes the virologist role. this is config based.
    • -
    • Removes most means to customize viruses This is config based. Currently, you can remove up to 2 symptoms from a disease, neuter symptoms, and mix viruses. Symptom removal is not random, with each symptom being removed based on a value given at roundstart.
    • -
    • dermagraphic ovulogenesis symptom
    • -
    • while virus customization is disabled, virus sample crates instead ship 5 isolated utility symptoms
    • -
    • re-adds viro zombies. They're now weaker, and only spread their diseases, instead of spreading the tumor itself.
    • -
    • adds a new chemical reaction, which allows you to remove faltered, immutable, dormant, and carrier status from viruses
    • -
    • random viruses made through events should be more impactful now
    • -
    • some symptom thresholds should be far easier to reach. config controlled.
    • -
    • toxoplasmosis sapiens is now level 0, and can *technically* appear, but, like all level 0 symptoms, will practically never appear, and will be even less likely to have any significant effect. However, the owo speak effect has been substantially toned down, and should now only impede the speech of certain letters and induce random cat noises, rather than replacing words arbitrarily.
    • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 0a4976924366b..50dd9923c5659 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -43110,3 +43110,40 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: bad food references - bugfix: deathgasping should work more consistently - bugfix: wiki manuals for chef and bartender should function now +2024-05-07: + EvilDragonfiend: + - bugfix: fixed some nulls + Hardly: + - rscadd: Adds an universal enzyme to the lavaland beach biodome, allowing beach + bums to make stuff like bread and tofu + - bugfix: Adds a griddle to the lavaland beach biodome, allowing beach bums to cook + again + rkz, haukeschuemann, Rohesie, Timberpoes, zxaber: + - refactor: Standardized the entire attack_chain and added stack_traces to detect + when & where it fails. + - balance: minor buff to telekinesis to use most interact() code. Unlikely to cause + major change, just reducing duplicate code where TK would have its own proc + for essentially doing the exact same thing +2024-05-08: + DrDuckedGoose: + - bugfix: Fix emissives on players + - tweak: Add filter compatibility to emissives + EvilDragonfiend: + - code_imp: Improved textification of the language icon rendering in TGUI. + - code_imp: cleaned up religion code into multiple dm files + - code_imp: Refactored weather code and fixed weather bad rendering issue. + - bugfix: Void Heretic no longer shows void weather where they don't stand on. + PowerfulBacon: + - bugfix: Fixes 515 compilation issue regarding species cold temperature + XeonMations: + - bugfix: Fixed blood cultists being able to place structures on survival pods + rkz, coiax: + - refactor: Refactors step_action to save us from a few thousand useless proccalls + per shift + rkz, nightred, lemoninthedark: + - refactor: refactored temperature stabilization in humans. Split human temperature + into core temperature, which is affected by fevers & shivering symptoms and + represents the overall temperature range, and Body Temperature which is what + is directly affected by environmental factors and projectiles. + - rscadd: All species will now receive temperature HUD alerts before receiving damage. + - balance: recalculates burn damage based on overall temperature diff --git a/icons/obj/digital_clock.dmi b/icons/obj/digital_clock.dmi new file mode 100644 index 0000000000000..39a9ed16a7ca1 Binary files /dev/null and b/icons/obj/digital_clock.dmi differ diff --git a/icons/obj/wallframe.dmi b/icons/obj/wallframe.dmi index 1f5072c19f274..efb7abb4fa8ae 100644 Binary files a/icons/obj/wallframe.dmi and b/icons/obj/wallframe.dmi differ diff --git a/sound/machines/westminister_chimes.ogg b/sound/machines/westminister_chimes.ogg new file mode 100644 index 0000000000000..071b008614649 Binary files /dev/null and b/sound/machines/westminister_chimes.ogg differ diff --git a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss index f31a16878b8e3..7f0900ee516e1 100644 --- a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss @@ -1391,3 +1391,7 @@ em { .stat_br { color: #2ace53; } + +.mood_neutral { + color: #99aac0; +} diff --git a/tgui/packages/tgui-panel/styles/goon/chat-light.scss b/tgui/packages/tgui-panel/styles/goon/chat-light.scss index 52900f43b4ac1..44e3ea8702b07 100644 --- a/tgui/packages/tgui-panel/styles/goon/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/goon/chat-light.scss @@ -1396,3 +1396,7 @@ h2.alert { .stat_br { color: #2ace53; } + +.mood_neutral { + color: #34383d; +}