diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 46d72c298a2c..6f0c53a61f6a 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -90,6 +90,9 @@ jobs: - name: Check Define Sanity if: steps.linter-setup.conclusion == 'success' && !cancelled() run: tools/bootstrap/python -m define_sanity.check + - name: Check Trait Validity + if: steps.linter-setup.conclusion == 'success' && !cancelled() + run: tools/bootstrap/python -m trait_validity.check - name: Run DreamChecker if: steps.linter-setup.conclusion == 'success' && !cancelled() shell: bash diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_asteroid.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_asteroid.dmm index 25416bdf7839..630d092c507e 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_asteroid.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_asteroid.dmm @@ -12,7 +12,7 @@ /obj/item/clothing/shoes/bronze, /obj/item/clothing/head/costume/bronze, /turf/open/floor/bronze{ - initial_gas_mix = "LAVALAND_ATMOS" + initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/surface) "m" = ( @@ -20,12 +20,12 @@ name = "empowered bronze spear" }, /turf/open/floor/bronze{ - initial_gas_mix = "LAVALAND_ATMOS" + initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/surface) "o" = ( /turf/open/floor/bronze{ - initial_gas_mix = "LAVALAND_ATMOS" + initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/surface) "A" = ( @@ -66,7 +66,7 @@ "L" = ( /mob/living/simple_animal/hostile/megafauna/clockwork_defender, /turf/open/floor/bronze{ - initial_gas_mix = "LAVALAND_ATMOS" + initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/surface) "M" = ( @@ -95,7 +95,7 @@ }, /obj/item/pen, /turf/open/floor/bronze{ - initial_gas_mix = "LAVALAND_ATMOS" + initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/surface) diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm index 5c9336c5c5ca..61a3ee9c80ce 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm @@ -15,7 +15,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "an" = ( /turf/open/floor/engine/n2, @@ -28,13 +28,13 @@ "aq" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/item/disk/holodisk/ruin/snowengieruin, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "ar" = ( /obj/effect/mob_spawn/corpse/human/assistant, /obj/item/construction/rcd, /obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "as" = ( /obj/machinery/modular_computer/preset/civilian{ @@ -46,14 +46,14 @@ /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, /obj/effect/mapping_helpers/apc/no_charge, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "au" = ( /obj/machinery/rnd/production/circuit_imprinter/offstation, /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 10 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "av" = ( /obj/structure/cable, @@ -78,14 +78,14 @@ /obj/structure/table/reinforced/plastitaniumglass, /obj/item/rcd_ammo, /obj/item/rcd_ammo, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "az" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "aA" = ( /obj/machinery/rnd/production/protolathe/department/engineering/no_tax, @@ -96,7 +96,7 @@ dir = 1 }, /obj/item/rcd_upgrade/frames, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "aC" = ( /turf/open/floor/engine/o2, @@ -114,10 +114,6 @@ /obj/item/toy/snowball, /turf/open/misc/snow/actually_safe, /area/ruin/planetengi) -"aF" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/planetengi) "aG" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on, /turf/open/floor/engine/n2, @@ -127,15 +123,15 @@ dir = 4 }, /obj/machinery/light/directional/north, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "aI" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "aJ" = ( /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "aK" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on, @@ -170,12 +166,12 @@ /area/ruin/planetengi) "aV" = ( /obj/machinery/autolathe, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "aW" = ( /obj/item/clothing/under/rank/engineering/chief_engineer, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "aX" = ( /obj/structure/flora/rock/icy/style_random, @@ -191,14 +187,11 @@ /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 }, -/turf/open/floor/iron, -/area/ruin/planetengi) -"bd" = ( -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "be" = ( /obj/machinery/atmospherics/components/binary/pump, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bi" = ( /obj/machinery/atmospherics/components/unary/passive_vent{ @@ -234,39 +227,39 @@ }, /obj/effect/mapping_helpers/airlock/access/all/away/engineering, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "br" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /obj/structure/sign/poster/official/build/directional/west, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bs" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bv" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 }, /obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bx" = ( /obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "by" = ( /obj/machinery/airalarm/directional/west, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bz" = ( /obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bA" = ( /obj/structure/window/reinforced/plasma/spawner/directional/south, @@ -275,7 +268,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8 }, -/turf/open/floor/engine, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bB" = ( /obj/structure/window/reinforced/plasma/spawner/directional/south, @@ -284,7 +277,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 4 }, -/turf/open/floor/engine, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bD" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -297,7 +290,7 @@ dir = 8 }, /obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bG" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -306,52 +299,47 @@ /obj/effect/turf_decal/trimline/blue/warning{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bH" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bI" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, /obj/structure/tank_dispenser, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bL" = ( /obj/machinery/atmospherics/components/trinary/filter/atmos/n2, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bM" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bR" = ( /obj/machinery/atmospherics/components/unary/portables_connector, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bS" = ( /obj/structure/table, /obj/item/flashlight{ pixel_y = 4 }, -/turf/open/floor/iron, -/area/ruin/planetengi) -"bT" = ( -/turf/open/floor/iron/corner{ - dir = 4 - }, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bU" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -366,26 +354,26 @@ /obj/effect/turf_decal/trimline/blue/corner{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bW" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bY" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 4 }, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "bZ" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "ca" = ( /obj/effect/spawner/structure/window/reinforced, @@ -396,35 +384,35 @@ /area/ruin/planetengi) "cb" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cc" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cd" = ( /obj/machinery/atmospherics/components/trinary/mixer/airmix, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "ce" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 6 }, -/turf/open/floor/iron/corner, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cf" = ( /obj/machinery/atmospherics/components/trinary/filter/flipped{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cg" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 5 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "ch" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -438,7 +426,7 @@ dir = 4 }, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cj" = ( /obj/machinery/power/energy_accumulator/tesla_coil/anchored, @@ -446,15 +434,13 @@ dir = 4 }, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "ck" = ( /obj/machinery/atmospherics/components/binary/volume_pump{ dir = 4 }, -/turf/open/floor/iron/corner{ - dir = 8 - }, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cl" = ( /obj/effect/spawner/structure/window/reinforced, @@ -466,35 +452,35 @@ "cm" = ( /obj/item/book/manual/wiki/atmospherics, /obj/structure/table, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cn" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cp" = ( /obj/machinery/atmospherics/components/unary/portables_connector{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cs" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 5 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "ct" = ( /obj/structure/window/reinforced/plasma/spawner/directional/north, /obj/structure/cable, -/turf/open/floor/engine, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cu" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 10 }, /obj/machinery/light/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cv" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -504,7 +490,7 @@ /area/icemoon/surface/outdoors/nospawn) "cx" = ( /obj/item/pipe_dispenser, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cD" = ( /obj/effect/spawner/structure/window/reinforced, @@ -522,7 +508,7 @@ name = "Engineering Access" }, /obj/effect/mapping_helpers/airlock/access/all/away/engineering, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cG" = ( /obj/effect/spawner/structure/window/reinforced, @@ -530,11 +516,11 @@ /area/ruin/planetengi) "cI" = ( /obj/item/modular_computer/pda/clear, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cJ" = ( /obj/item/modular_computer/pda/engineering, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cL" = ( /obj/effect/decal/remains/human, @@ -542,13 +528,7 @@ /obj/effect/decal/cleanable/blood/old, /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/ruin/planetengi) -"cN" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/turf/open/floor/iron/corner{ - dir = 1 - }, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cO" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -560,7 +540,7 @@ /obj/machinery/atmospherics/components/binary/pump{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cQ" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ @@ -569,19 +549,19 @@ /obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cR" = ( /obj/machinery/atmospherics/components/binary/pump/layer4{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cS" = ( /obj/machinery/atmospherics/components/unary/portables_connector/layer4{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cU" = ( /turf/open/floor/iron/icemoon, @@ -593,37 +573,37 @@ /obj/effect/turf_decal/trimline/blue/corner{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cW" = ( /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cX" = ( /obj/structure/cable, /obj/machinery/power/emitter/welded{ dir = 1 }, -/turf/open/floor/catwalk_floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cY" = ( /obj/item/stack/sheet/plasmarglass, /obj/item/card/id/advanced/engioutpost, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "cZ" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 5 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "db" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 }, /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "de" = ( /turf/template_noop, @@ -633,35 +613,35 @@ dir = 4 }, /obj/structure/sign/poster/official/pda_ad/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "dg" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "dh" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "di" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 10 }, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "dj" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "dk" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "dl" = ( /obj/effect/mob_spawn/corpse/human/engineer/mod, @@ -705,7 +685,7 @@ /obj/structure/table/reinforced, /obj/machinery/door/firedoor/closed, /obj/item/shard, -/turf/open/floor/plating, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "du" = ( /obj/effect/decal/cleanable/blood/tracks, @@ -813,7 +793,7 @@ /area/ruin/planetengi) "yF" = ( /mob/living/basic/construct/proteon, -/turf/open/floor/iron, +/turf/open/floor/iron/icemoon, /area/ruin/planetengi) "Ai" = ( /turf/open/floor/plating/snowed/smoothed/icemoon, @@ -896,7 +876,7 @@ aG ba br cg -bd +cU by bR cP @@ -958,7 +938,7 @@ do do do aH -bd +cU bc cm bS @@ -1002,7 +982,7 @@ cE bF bc yF -bd +cU cx cR dh @@ -1066,7 +1046,7 @@ bG bV ce cs -bT +cU cV bG do @@ -1083,13 +1063,13 @@ ay aq aV cG -bd +cU bW cf bA cJ cW -bd +cU cG cU kS @@ -1101,7 +1081,7 @@ Ai do av az -aF +aJ aW bq aJ @@ -1110,7 +1090,7 @@ ci ct cL cX -bd +cU cF cU GG @@ -1123,7 +1103,7 @@ do aw am ar -bd +cU cG bH bZ @@ -1150,7 +1130,7 @@ bI bZ ck cu -cN +cn cg dk dt diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_ore_vent.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_ore_vent.dmm new file mode 100644 index 000000000000..51584f90f86a --- /dev/null +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_ore_vent.dmm @@ -0,0 +1,27 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"l" = ( +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/unexplored/rivers/no_monsters) +"L" = ( +/obj/structure/ore_vent/random/icebox, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/unexplored/rivers/no_monsters) + +(1,1,1) = {" +a +l +a +"} +(2,1,1) = {" +l +L +l +"} +(3,1,1) = {" +a +l +a +"} diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_homestead.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_homestead.dmm index 5ab59bf79dab..d1ee1326b19b 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_homestead.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_homestead.dmm @@ -185,7 +185,7 @@ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/book/bible{ +/obj/item/book/bible{ pixel_y = 5 }, /obj/item/flashlight/flare/candle{ diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm index 3a3811b21286..738498d1e319 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm @@ -51,7 +51,9 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/edge{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "aT" = ( /obj/structure/window/reinforced/spawner/directional/east, @@ -61,7 +63,9 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured, +/turf/open/floor/iron/dark/textured{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "aY" = ( /obj/effect/turf_decal/siding/wood/corner, @@ -73,7 +77,7 @@ name = "Bunk A" }, /obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "aZ" = ( /obj/structure/railing{ @@ -114,7 +118,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/cell_charger, /obj/item/stock_parts/cell, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/operations) "bv" = ( /obj/effect/decal/cleanable/dirt, @@ -122,7 +126,9 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/edge{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "bD" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ @@ -135,7 +141,9 @@ pixel_y = 7 }, /obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/iron/white/smooth_large, +/turf/open/floor/iron/white/smooth_large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "bM" = ( /obj/structure/cable, @@ -143,7 +151,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "bT" = ( /obj/machinery/atmospherics/components/binary/valve{ @@ -160,11 +170,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/light/warm/directional/south, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "cb" = ( /obj/machinery/light/small/broken/directional/north, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "cn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -179,7 +191,9 @@ /obj/item/stack/sheet/iron, /obj/item/stack/sheet/iron, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "cL" = ( /obj/structure/table, @@ -211,7 +225,9 @@ dir = 4 }, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "dr" = ( /obj/structure/lattice, @@ -225,7 +241,9 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/built/directional/east, /obj/effect/turf_decal/tile/brown/opposingcorners, -/turf/open/floor/iron, +/turf/open/floor/iron{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/operations) "dB" = ( /mob/living/simple_animal/hostile/asteroid/polarbear{ @@ -239,7 +257,9 @@ /obj/effect/decal/cleanable/glass, /obj/item/stock_parts/capacitor, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured, +/turf/open/floor/iron/dark/textured{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "dO" = ( /obj/structure/railing/corner{ @@ -261,7 +281,9 @@ }, /obj/effect/decal/cleanable/plasma, /obj/effect/decal/cleanable/blood, -/turf/open/floor/iron/white/smooth_large, +/turf/open/floor/iron/white/smooth_large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "dR" = ( /obj/structure/lattice/catwalk, @@ -296,7 +318,9 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/light/broken/directional/north, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "ea" = ( /obj/effect/decal/cleanable/dirt, @@ -312,7 +336,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "eD" = ( /turf/closed/wall/ice, @@ -325,14 +351,16 @@ /obj/structure/table, /obj/item/plate, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "eT" = ( /obj/structure/table/reinforced, /obj/structure/frame/machine, /obj/item/stack/cable_coil/five, /obj/item/circuitboard/machine/microwave, -/turf/open/floor/stone, +/turf/open/floor/stone/icemoon, /area/ruin/plasma_facility/commons) "eX" = ( /obj/structure/bonfire, @@ -381,7 +409,7 @@ /area/icemoon/underground/explored) "gj" = ( /obj/structure/closet/emcloset, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "gk" = ( /obj/structure/lattice/catwalk, @@ -418,14 +446,16 @@ }, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/built/directional/north, -/turf/open/floor/iron/grimy, +/turf/open/floor/iron/grimy{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "gH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "gR" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ @@ -446,7 +476,9 @@ pixel_y = -2 }, /obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white/smooth_large, +/turf/open/floor/iron/white/smooth_large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "hc" = ( /obj/structure/rack, @@ -489,7 +521,9 @@ /obj/item/cigbutt/cigarbutt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "hR" = ( /turf/closed/wall/ice, @@ -517,7 +551,8 @@ }, /obj/effect/turf_decal/tile/brown/anticorner, /turf/open/floor/iron/corner{ - dir = 1 + dir = 1; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "ia" = ( @@ -542,7 +577,7 @@ "if" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/broken/directional/south, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "ii" = ( /obj/structure/fence/corner{ @@ -571,7 +606,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/stone, +/turf/open/floor/stone/icemoon, /area/ruin/plasma_facility/commons) "im" = ( /obj/structure/window/reinforced/spawner/directional/south, @@ -613,7 +648,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/brown/full, -/turf/open/floor/iron/large, +/turf/open/floor/iron/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "js" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -667,7 +704,8 @@ dir = 4 }, /turf/open/floor/iron/corner{ - dir = 4 + dir = 4; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "kG" = ( @@ -683,7 +721,9 @@ /obj/structure/mirror/directional/west, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/blacklight/directional/south, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/freezer{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "lf" = ( /obj/structure/fluff/tram_rail, @@ -736,7 +776,9 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "lW" = ( /obj/structure/cable, @@ -744,7 +786,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "lX" = ( /obj/structure/table/reinforced, @@ -783,7 +827,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "mN" = ( /obj/structure/cable, @@ -797,7 +841,9 @@ dir = 1 }, /obj/effect/turf_decal/tile/purple/half, -/turf/open/floor/iron/textured_half, +/turf/open/floor/iron/textured_half{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/operations) "ng" = ( /obj/structure/grille/broken, @@ -827,7 +873,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/freezer{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "no" = ( /obj/structure/transit_tube/station/reverse, @@ -845,7 +893,8 @@ }, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/edge{ - dir = 1 + dir = 1; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "ns" = ( @@ -854,7 +903,9 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/brown/full, -/turf/open/floor/iron/large, +/turf/open/floor/iron/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "nu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -863,7 +914,9 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/edge{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "nz" = ( /obj/machinery/door/airlock/hatch{ @@ -905,7 +958,7 @@ dir = 1; pixel_y = -7 }, -/turf/open/floor/stone, +/turf/open/floor/stone/icemoon, /area/ruin/plasma_facility/commons) "oA" = ( /obj/effect/turf_decal/box/corners{ @@ -922,7 +975,9 @@ pixel_y = 3 }, /obj/item/knife/combat/survival, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "oF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -949,7 +1004,9 @@ dir = 4 }, /obj/effect/turf_decal/tile/neutral/full, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/textured_large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "oW" = ( /obj/structure/lattice/catwalk, @@ -977,7 +1034,8 @@ }, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/edge{ - dir = 1 + dir = 1; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "pl" = ( @@ -988,7 +1046,9 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/edge{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "pt" = ( /obj/structure/table, @@ -998,7 +1058,9 @@ }, /obj/item/flashlight/lantern, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "pw" = ( /obj/effect/turf_decal/bot_white{ @@ -1006,11 +1068,13 @@ }, /obj/structure/ore_box, /obj/effect/turf_decal/tile/brown/full, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/textured_large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "pC" = ( /obj/machinery/space_heater/improvised_chem_heater, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "pE" = ( /obj/structure/bed/maint, @@ -1065,7 +1129,9 @@ /obj/item/wallframe/apc, /obj/item/electronics/apc, /obj/item/stack/cable_coil/five, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "qW" = ( /turf/closed/wall, @@ -1108,7 +1174,8 @@ }, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/edge{ - dir = 1 + dir = 1; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "rW" = ( @@ -1128,12 +1195,16 @@ /obj/effect/decal/cleanable/dirt, /obj/item/disk/design_disk/modkit_disc/resonator_blast, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured, +/turf/open/floor/iron/dark/textured{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "su" = ( /obj/structure/chair/stool/directional/south, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "sJ" = ( /obj/structure/rack, @@ -1165,14 +1236,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "sY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "tf" = ( /obj/structure/grille/broken, @@ -1251,7 +1324,9 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/edge{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "ux" = ( /obj/structure/transit_tube/horizontal, @@ -1319,7 +1394,8 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/brown, /turf/open/floor/iron/dark/side{ - dir = 8 + dir = 8; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/operations) "wm" = ( @@ -1337,13 +1413,17 @@ dir = 4 }, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "wF" = ( /obj/structure/frame, /obj/item/stack/cable_coil/five, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "wQ" = ( /obj/structure/table/reinforced, @@ -1360,7 +1440,7 @@ pixel_y = -3 }, /obj/machinery/light/small/broken/directional/east, -/turf/open/floor/stone, +/turf/open/floor/stone/icemoon, /area/ruin/plasma_facility/commons) "xd" = ( /obj/effect/decal/cleanable/dirt, @@ -1369,7 +1449,9 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/edge{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "xV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1389,7 +1471,7 @@ /obj/item/food/grown/eggplant, /obj/item/food/grown/tomato, /obj/effect/decal/cleanable/food/flour, -/turf/open/floor/stone, +/turf/open/floor/stone/icemoon, /area/ruin/plasma_facility/commons) "yv" = ( /obj/machinery/light_switch/directional/south, @@ -1397,7 +1479,9 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/edge{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "yG" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional{ @@ -1413,7 +1497,9 @@ /area/ruin/plasma_facility/operations) "zk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "zD" = ( /obj/structure/fluff/tram_rail/end{ @@ -1437,7 +1523,8 @@ dir = 4 }, /turf/open/floor/iron/edge{ - dir = 4 + dir = 4; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "zU" = ( @@ -1472,7 +1559,9 @@ name = "Utilities Room" }, /obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/iron/smooth_half, +/turf/open/floor/iron/smooth_half{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/operations) "An" = ( /obj/effect/decal/cleanable/dirt, @@ -1482,7 +1571,8 @@ }, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/edge{ - dir = 1 + dir = 1; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "Au" = ( @@ -1493,7 +1583,9 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/edge{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "AG" = ( /turf/open/genturf, @@ -1535,7 +1627,7 @@ /area/ruin/plasma_facility/operations) "BJ" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "BM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1546,7 +1638,8 @@ }, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/edge{ - dir = 1 + dir = 1; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "BQ" = ( @@ -1571,7 +1664,9 @@ name = "Processing Control" }, /obj/effect/turf_decal/tile/brown/full, -/turf/open/floor/iron/textured_half, +/turf/open/floor/iron/textured_half{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/operations) "Cb" = ( /obj/structure/lattice/catwalk, @@ -1585,7 +1680,7 @@ /obj/effect/spawner/structure/window/hollow/reinforced/end{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "Co" = ( /obj/machinery/conveyor_switch/oneway{ @@ -1595,7 +1690,9 @@ /obj/effect/decal/cleanable/dirt, /mob/living/basic/skeleton/plasmaminer, /obj/effect/turf_decal/tile/brown/opposingcorners, -/turf/open/floor/iron, +/turf/open/floor/iron{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/operations) "CA" = ( /obj/item/chair/plastic, @@ -1626,7 +1723,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, /obj/machinery/light_switch/directional/east, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "CX" = ( /obj/structure/fence/door{ @@ -1655,7 +1754,9 @@ "DN" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "DR" = ( /obj/machinery/light/small/broken/directional/north, @@ -1744,7 +1845,9 @@ }, /obj/machinery/shower/directional/north, /obj/structure/curtain, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/freezer{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Gb" = ( /obj/machinery/power/port_gen/pacman, @@ -1754,7 +1857,9 @@ "Gd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Go" = ( /obj/effect/decal/cleanable/glass, @@ -1788,7 +1893,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/freezer{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Hv" = ( /obj/structure/table, @@ -1802,7 +1909,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "HC" = ( /obj/structure/lattice/catwalk, @@ -1861,7 +1968,9 @@ icon_state = "applebush" }, /obj/effect/turf_decal/tile/brown/full, -/turf/open/floor/iron/large, +/turf/open/floor/iron/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "IU" = ( /obj/structure/chair/sofa/right/brown{ @@ -1908,7 +2017,9 @@ }, /obj/effect/mapping_helpers/airlock/abandoned, /obj/effect/turf_decal/tile/neutral/full, -/turf/open/floor/iron/dark/textured_half, +/turf/open/floor/iron/dark/textured_half{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Ju" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional{ @@ -1939,7 +2050,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm/directional/west, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "JD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -1947,7 +2060,9 @@ }, /obj/machinery/light/small/broken/directional/west, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured, +/turf/open/floor/iron/dark/textured{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "JQ" = ( /obj/structure/fence/end{ @@ -1966,7 +2081,7 @@ pixel_y = 7 }, /obj/item/chair/wood, -/turf/open/floor/stone, +/turf/open/floor/stone/icemoon, /area/ruin/plasma_facility/commons) "Kd" = ( /turf/open/floor/plating/snowed/smoothed/icemoon, @@ -1980,7 +2095,9 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/mob_spawn/corpse/human/miner/explorer, /obj/machinery/light/small/blacklight/directional/south, -/turf/open/floor/iron/grimy, +/turf/open/floor/iron/grimy{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Km" = ( /obj/structure/girder, @@ -2016,7 +2133,7 @@ pixel_x = 11; pixel_y = 8 }, -/turf/open/floor/stone, +/turf/open/floor/stone/icemoon, /area/ruin/plasma_facility/commons) "Kx" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional{ @@ -2038,7 +2155,7 @@ name = "Bathroom" }, /obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/stone, +/turf/open/floor/stone/icemoon, /area/ruin/plasma_facility/commons) "KP" = ( /obj/structure/fence/door/opened{ @@ -2097,11 +2214,13 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "LY" = ( /obj/machinery/light/small/built/directional/north, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "LZ" = ( /obj/structure/flora/rock/icy/style_random, @@ -2110,7 +2229,9 @@ "Mc" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/tile/brown/full, -/turf/open/floor/iron/large, +/turf/open/floor/iron/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Mi" = ( /obj/structure/lattice/catwalk, @@ -2150,10 +2271,6 @@ initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/operations) -"MU" = ( -/obj/structure/girder, -/turf/open/floor/plating, -/area/ruin/plasma_facility/commons) "MW" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -2192,7 +2309,9 @@ }, /obj/effect/decal/cleanable/blood/tracks, /obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron/white/textured_half, +/turf/open/floor/iron/white/textured_half{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Nm" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -2201,7 +2320,8 @@ }, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/edge{ - dir = 1 + dir = 1; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "No" = ( @@ -2238,7 +2358,8 @@ dir = 4 }, /turf/open/floor/iron/edge{ - dir = 8 + dir = 8; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "NC" = ( @@ -2261,7 +2382,9 @@ /obj/item/shard, /obj/effect/decal/cleanable/dirt, /mob/living/basic/skeleton/plasmaminer/jackhammer, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/freezer{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Or" = ( /obj/machinery/atmospherics/components/tank/plasma, @@ -2291,7 +2414,9 @@ /mob/living/basic/skeleton/plasmaminer/jackhammer, /obj/machinery/light_switch/directional/south, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured, +/turf/open/floor/iron/dark/textured{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "OF" = ( /obj/effect/decal/cleanable/glass, @@ -2321,7 +2446,9 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured, +/turf/open/floor/iron/dark/textured{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Pt" = ( /obj/machinery/conveyor{ @@ -2350,7 +2477,9 @@ pixel_y = -7 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Py" = ( /obj/effect/turf_decal/box/corners{ @@ -2373,7 +2502,8 @@ }, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/edge{ - dir = 1 + dir = 1; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "PE" = ( @@ -2406,7 +2536,9 @@ /obj/item/clothing/glasses/thermal/eyepatch{ pixel_y = 8 }, -/turf/open/floor/iron/grimy, +/turf/open/floor/iron/grimy{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "PQ" = ( /obj/structure/flora/tree/dead/style_random, @@ -2416,7 +2548,7 @@ /obj/structure/girder, /obj/item/stack/sheet/iron, /obj/item/stack/sheet/iron, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "PS" = ( /obj/structure/lattice/catwalk, @@ -2433,7 +2565,9 @@ /obj/effect/turf_decal/bot_red, /obj/machinery/suit_storage_unit, /obj/effect/turf_decal/tile/neutral/full, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/textured_large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Qh" = ( /obj/effect/decal/cleanable/dirt, @@ -2474,7 +2608,9 @@ /obj/machinery/computer/order_console/mining, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/broken/directional/west, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "QM" = ( /obj/structure/fence/cut/medium{ @@ -2484,7 +2620,9 @@ /area/icemoon/underground/explored) "QQ" = ( /obj/structure/dresser, -/turf/open/floor/iron/grimy, +/turf/open/floor/iron/grimy{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "QY" = ( /obj/structure/reagent_dispensers/fueltank, @@ -2524,7 +2662,8 @@ }, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/edge{ - dir = 1 + dir = 1; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "RM" = ( @@ -2569,7 +2708,7 @@ /obj/machinery/door/airlock/wood{ name = "Bunk B" }, -/turf/open/floor/stone, +/turf/open/floor/stone/icemoon, /area/ruin/plasma_facility/commons) "SR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2582,7 +2721,8 @@ }, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/edge{ - dir = 1 + dir = 1; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "TD" = ( @@ -2592,7 +2732,7 @@ pixel_x = -6; pixel_y = 11 }, -/turf/open/floor/stone, +/turf/open/floor/stone/icemoon, /area/ruin/plasma_facility/commons) "TE" = ( /obj/effect/decal/cleanable/dirt, @@ -2614,7 +2754,9 @@ dir = 4 }, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "TY" = ( /obj/structure/closet/crate, @@ -2654,14 +2796,16 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/edge{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "VS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/airlock/hatch{ name = "Maintenance" }, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/operations) "VT" = ( /obj/item/chair/wood, @@ -2671,7 +2815,7 @@ /obj/structure/windoor_assembly, /obj/effect/decal/cleanable/glass, /obj/item/bikehorn/rubberducky, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "Wd" = ( /obj/structure/window/reinforced/spawner/directional/east, @@ -2687,7 +2831,9 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/underground/explored) "Wu" = ( -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Wx" = ( /obj/effect/turf_decal/siding/wood/corner, @@ -2701,7 +2847,9 @@ /obj/machinery/door/airlock/public{ name = "Commons Area" }, -/turf/open/floor/iron/dark/textured_half, +/turf/open/floor/iron/dark/textured_half{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "WC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2718,7 +2866,9 @@ dir = 1 }, /obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron/corner, +/turf/open/floor/iron/corner{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "WU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -2726,7 +2876,9 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/light_switch/directional/east, /obj/effect/turf_decal/tile/brown/opposingcorners, -/turf/open/floor/iron, +/turf/open/floor/iron{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/operations) "Xh" = ( /obj/structure/cable, @@ -2772,7 +2924,9 @@ /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/toilet, /obj/structure/curtain, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/freezer{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "XT" = ( /obj/structure/window/reinforced/spawner/directional/west, @@ -2789,7 +2943,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "XW" = ( /obj/effect/turf_decal/bot_white{ @@ -2798,7 +2952,9 @@ /obj/effect/decal/cleanable/dirt, /obj/item/pickaxe, /obj/effect/turf_decal/tile/brown/full, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/textured_large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "Yk" = ( /obj/structure/window/reinforced/spawner/directional/south, @@ -2825,13 +2981,15 @@ /obj/effect/turf_decal/caution, /obj/machinery/light_switch/directional/south, /obj/effect/turf_decal/tile/neutral/full, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/textured_large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "YI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, +/turf/open/floor/plating/icemoon, /area/ruin/plasma_facility/commons) "YN" = ( /obj/structure/fence/end, @@ -2865,7 +3023,8 @@ }, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/edge{ - dir = 1 + dir = 1; + initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/plasma_facility/commons) "Zp" = ( @@ -2908,21 +3067,25 @@ pixel_x = 10; pixel_y = -2 }, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "ZA" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/stone, +/turf/open/floor/stone/icemoon, /area/ruin/plasma_facility/commons) "ZB" = ( /obj/structure/filingcabinet/chestdrawer/wheeled, /obj/effect/decal/cleanable/glass, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured, +/turf/open/floor/iron/dark/textured{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "ZC" = ( /obj/effect/decal/cleanable/glass, @@ -2931,7 +3094,9 @@ /area/icemoon/underground/explored) "ZH" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, +/turf/open/floor/wood/large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) "ZN" = ( /obj/effect/spawner/structure/window/hollow/reinforced/middle{ @@ -2948,7 +3113,9 @@ /obj/structure/chair/office/light{ dir = 1 }, -/turf/open/floor/iron/white/smooth_large, +/turf/open/floor/iron/white/smooth_large{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/ruin/plasma_facility/commons) (1,1,1) = {" @@ -3452,7 +3619,7 @@ zk Jy Gd QJ -MU +Km qW rF bM diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_ore_vent.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_ore_vent.dmm new file mode 100644 index 000000000000..db409d08c8cf --- /dev/null +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_ore_vent.dmm @@ -0,0 +1,27 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"l" = ( +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/unexplored) +"L" = ( +/obj/structure/ore_vent/random/icebox/lower, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/unexplored) + +(1,1,1) = {" +a +l +a +"} +(2,1,1) = {" +l +L +l +"} +(3,1,1) = {" +a +l +a +"} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm index ef650913f141..bcc82db11fde 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm @@ -333,7 +333,7 @@ /area/ruin/powered/clownplanet) "bZ" = ( /obj/machinery/door/airlock/bananium, -/turf/open/indestructible/honk, +/turf/open/floor/carpet, /area/ruin/powered/clownplanet) "ca" = ( /obj/item/bikehorn, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_mookvillage.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_mookvillage.dmm index da7fcaf3d575..7337eaa11b6a 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_mookvillage.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_mookvillage.dmm @@ -56,7 +56,7 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "aB" = ( -/turf/open/misc/grass/jungle, +/turf/open/misc/grass/lavaland, /area/lavaland/surface/outdoors) "aC" = ( /obj/structure/sign/nanotrasen, @@ -86,13 +86,17 @@ /obj/structure/table/wood/shuttle_bar, /obj/item/hatchet/wooden, /obj/item/storage/belt/champion, -/turf/open/floor/holofloor/wood, +/turf/open/floor/holofloor/wood{ + initial_gas_mix = "LAVALAND_ATMOS" + }, /area/lavaland/surface/outdoors) "aL" = ( /obj/item/flashlight/lantern{ on = 1 }, -/turf/open/floor/holofloor/wood, +/turf/open/floor/holofloor/wood{ + initial_gas_mix = "LAVALAND_ATMOS" + }, /area/lavaland/surface/outdoors) "aM" = ( /obj/structure/chair/pew/right{ @@ -101,7 +105,9 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "aN" = ( -/turf/open/floor/holofloor/wood, +/turf/open/floor/holofloor/wood{ + initial_gas_mix = "LAVALAND_ATMOS" + }, /area/lavaland/surface/outdoors) "aP" = ( /mob/living/basic/mining/mook/worker, @@ -110,15 +116,19 @@ "aR" = ( /obj/structure/bed/pod, /obj/item/bedsheet/nanotrasen, -/turf/open/floor/holofloor/wood, +/turf/open/floor/holofloor/wood{ + initial_gas_mix = "LAVALAND_ATMOS" + }, /area/lavaland/surface/outdoors) "aT" = ( /obj/structure/flora/tree/jungle/style_5, -/turf/open/misc/grass/jungle, +/turf/open/misc/grass/lavaland, /area/lavaland/surface/outdoors) "aU" = ( /obj/structure/table/wood/shuttle_bar, -/turf/open/floor/holofloor/wood, +/turf/open/floor/holofloor/wood{ + initial_gas_mix = "LAVALAND_ATMOS" + }, /area/lavaland/surface/outdoors) "aV" = ( /obj/structure/chair/pew{ @@ -128,7 +138,7 @@ /area/lavaland/surface/outdoors) "aX" = ( /obj/structure/flora/grass/jungle/b, -/turf/open/misc/grass/jungle, +/turf/open/misc/grass/lavaland, /area/lavaland/surface/outdoors) "aY" = ( /obj/structure/chair/pew/left{ @@ -139,25 +149,35 @@ "eN" = ( /obj/structure/table/wood/shuttle_bar, /obj/item/flashlight/flare/candle/infinite, -/turf/open/floor/holofloor/wood, +/turf/open/floor/holofloor/wood{ + initial_gas_mix = "LAVALAND_ATMOS" + }, /area/lavaland/surface/outdoors) "hi" = ( -/turf/open/floor/carpet/lone, +/turf/open/floor/carpet/lone{ + initial_gas_mix = "LAVALAND_ATMOS" + }, /area/lavaland/surface/outdoors) "sk" = ( /obj/structure/bed/maint, -/turf/open/floor/holofloor/wood, +/turf/open/floor/holofloor/wood{ + initial_gas_mix = "LAVALAND_ATMOS" + }, /area/lavaland/surface/outdoors) "xb" = ( /obj/structure/chair/wood{ dir = 1 }, -/turf/open/floor/holofloor/wood, +/turf/open/floor/holofloor/wood{ + initial_gas_mix = "LAVALAND_ATMOS" + }, /area/lavaland/surface/outdoors) "xv" = ( /obj/item/fishing_rod, /obj/structure/bed/maint, -/turf/open/floor/holofloor/wood, +/turf/open/floor/holofloor/wood{ + initial_gas_mix = "LAVALAND_ATMOS" + }, /area/lavaland/surface/outdoors) "Br" = ( /obj/structure/ore_container/material_stand, @@ -167,15 +187,19 @@ /obj/structure/closet/cabinet, /obj/item/food/grown/banana, /obj/item/food/meat/slab/goliath, -/turf/open/floor/holofloor/wood, +/turf/open/floor/holofloor/wood{ + initial_gas_mix = "LAVALAND_ATMOS" + }, /area/lavaland/surface/outdoors) "Mn" = ( /obj/structure/flora/tree/jungle/style_3, -/turf/open/misc/grass/jungle, +/turf/open/misc/grass/lavaland, /area/lavaland/surface/outdoors) "WL" = ( /obj/structure/chair/wood, -/turf/open/floor/holofloor/wood, +/turf/open/floor/holofloor/wood{ + initial_gas_mix = "LAVALAND_ATMOS" + }, /area/lavaland/surface/outdoors) (1,1,1) = {" diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ore_vent.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ore_vent.dmm new file mode 100644 index 000000000000..6379b7f084ba --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ore_vent.dmm @@ -0,0 +1,27 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"l" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"L" = ( +/obj/structure/ore_vent/random, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) + +(1,1,1) = {" +a +l +a +"} +(2,1,1) = {" +l +L +l +"} +(3,1,1) = {" +a +l +a +"} diff --git a/_maps/RandomRuins/SpaceRuins/clericden.dmm b/_maps/RandomRuins/SpaceRuins/clericden.dmm index 5b1782559aed..c6e6bebddb0b 100644 --- a/_maps/RandomRuins/SpaceRuins/clericden.dmm +++ b/_maps/RandomRuins/SpaceRuins/clericden.dmm @@ -180,7 +180,7 @@ /turf/open/floor/plating/airless, /area/ruin/space) "Q" = ( -/obj/item/storage/book/bible, +/obj/item/book/bible, /obj/effect/decal/cleanable/blood, /turf/open/misc/asteroid/airless, /area/ruin/space) diff --git a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm index 4649d32d2626..06c63b2ce2df 100644 --- a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm +++ b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm @@ -6,27 +6,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research) -"ae" = ( -/obj/structure/table, -/obj/machinery/light/small/directional/west, -/obj/item/storage/book/bible{ - pixel_x = 3 - }, -/obj/item/book/manual/wiki/cytology{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/paper/fluff/ruins/dangerous_research/armstrong_memo_2, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ +"aq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron/dark/corner, +/turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research/dorms) -"ak" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) "at" = ( /obj/machinery/light/dim/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -48,22 +35,6 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"aB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/reagent_containers/hypospray/medipen/morphine{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/reagent_containers/hypospray/medipen/morphine, -/obj/item/reagent_containers/cup/bottle/morphine, -/obj/item/reagent_containers/syringe, -/obj/structure/sign/warning/directional/north, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) "aD" = ( /obj/effect/turf_decal/tile/neutral/diagonal_edge, /turf/open/floor/iron/dark/diagonal, @@ -75,20 +46,33 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) +"aT" = ( +/obj/effect/turf_decal/trimline/purple/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/mapping_helpers/apc/away_general_access, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) +"aU" = ( +/obj/structure/closet{ + name = "Outpost Security Locker" + }, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/spawner/random/contraband/permabrig_weapon, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/ammo_box/c38, +/obj/effect/turf_decal/tile/dark_red/anticorner, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research) "aW" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"aY" = ( -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/security/telescreen/entertainment/directional/south, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) "aZ" = ( /obj/item/storage/backpack/duffelbag/med/surgery, /obj/structure/table, @@ -99,57 +83,36 @@ icon_state = "asteroid5" }, /area/ruin/space) -"bl" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_edge, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/diagonal, -/area/ruin/space/has_grav/dangerous_research/dorms) "bu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/dorms) -"bO" = ( -/obj/effect/turf_decal/trimline/purple/line{ +"bI" = ( +/obj/effect/turf_decal/stripes/asteroid{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/decal/cleanable/blood/gibs/torso, +/obj/effect/decal/cleanable/blood/footprints, +/obj/effect/decal/cleanable/blood/footprints{ dir = 1 }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) -"bP" = ( -/obj/structure/bed, -/obj/structure/sign/poster/contraband/interdyne_gene_clinics/directional/east, -/obj/effect/spawner/random/contraband/narcotics, -/obj/item/bedsheet/purple, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) +"ca" = ( +/obj/structure/chair/office{ + dir = 1 }, -/area/ruin/space/has_grav/dangerous_research/dorms) +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) "cd" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/ruin/space/has_grav/dangerous_research/lab) -"ce" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/showroomfloor, -/area/ruin/space/has_grav/dangerous_research/dorms) -"ci" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/wallframe/camera, -/obj/effect/decal/cleanable/robot_debris, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) "cl" = ( /obj/structure/table, /obj/structure/window/reinforced/spawner/directional/east, @@ -171,6 +134,14 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) +"cq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/work_for_a_future/directional/north, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner, +/area/ruin/space/has_grav/dangerous_research/dorms) "cv" = ( /obj/structure/chair/office{ dir = 4 @@ -179,6 +150,10 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) +"cA" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, +/area/ruin/space/has_grav/dangerous_research/dorms) "cN" = ( /obj/structure/reagent_dispensers/water_cooler, /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ @@ -213,32 +188,18 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/ruin/space/has_grav/dangerous_research/dorms) -"dm" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_edge, -/obj/item/food/donkpocket/spicy, -/obj/item/food/ready_donk, -/obj/item/food/ready_donk/mac_n_cheese, -/obj/structure/sign/poster/contraband/donk_co/directional/west, -/obj/machinery/light/dim/directional/west, -/obj/structure/closet/secure_closet/freezer/empty{ - name = "fridge" - }, -/turf/open/floor/iron/dark/diagonal, -/area/ruin/space/has_grav/dangerous_research) "do" = ( /turf/open/misc/asteroid/airless{ icon_state = "asteroid10" }, /area/ruin/space) -"dw" = ( +"dt" = ( /obj/structure/table, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, /obj/effect/decal/cleanable/dirt, -/obj/item/paper/fluff/ruins/dangerous_research/armstrong_memo_3, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/dark/diagonal, +/area/ruin/space/has_grav/dangerous_research/dorms) "dy" = ( /obj/effect/decal/cleanable/blood/footprints{ dir = 8 @@ -250,16 +211,13 @@ /obj/effect/turf_decal/tile/purple, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"dC" = ( -/obj/structure/rack, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, +"dH" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/pen/screwdriver, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) "dI" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -267,6 +225,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) +"dN" = ( +/obj/effect/turf_decal/trimline/purple/line, +/obj/machinery/chem_heater/withbuffer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) "dX" = ( /obj/structure/chair{ dir = 8 @@ -292,22 +256,28 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) +"eg" = ( +/obj/machinery/atmospherics/components/binary/pump/layer2{ + name = "Scrubbers To External" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"ek" = ( +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/turf/open/floor/iron/dark/diagonal, +/area/ruin/space/has_grav/dangerous_research) "eq" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 4 }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"eu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) "ey" = ( /obj/effect/turf_decal/tile/neutral/diagonal_edge, /obj/structure/table, @@ -316,6 +286,31 @@ }, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research) +"eI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/north, +/turf/open/floor/wood/parquet, +/area/ruin/space/has_grav/dangerous_research/dorms) +"eN" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/away_general_access, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil/slippery, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"eO" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) "eQ" = ( /obj/structure/table, /obj/item/toy/nuke, @@ -337,40 +332,20 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"fg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) "fi" = ( /obj/effect/turf_decal/tile/purple, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"fm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) -"fn" = ( -/obj/item/trash/can{ - pixel_x = -8 +"fj" = ( +/obj/structure/chair/office{ + dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/bubblegum, -/obj/machinery/light/very_dim/directional/west, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 4 +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/turf/open/floor/iron/dark/corner{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) +/area/ruin/space/has_grav/dangerous_research/dorms) "fo" = ( /obj/machinery/light/broken/directional/east, /obj/effect/turf_decal/tile/purple/half/contrasted{ @@ -392,6 +367,18 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) +"fC" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/plasma/thirty, +/obj/item/stack/sheet/mineral/wood/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/plasteel{ + amount = 30 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) "fE" = ( /obj/structure/table, /obj/structure/window/reinforced/spawner/directional/east, @@ -400,15 +387,6 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"fH" = ( -/obj/structure/sink/directional/south, -/obj/structure/mirror/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/item/radio{ - pixel_x = -8 - }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) "fJ" = ( /obj/structure/fluff/paper/stack{ dir = 9 @@ -440,45 +418,43 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"fT" = ( +"fS" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) -"gl" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, -/turf/open/floor/plating, -/area/ruin/space/has_grav/dangerous_research/maint) -"go" = ( -/obj/structure/cable, +/obj/effect/turf_decal/siding/dark, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research) +"gb" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 +/obj/structure/sign/poster/contraband/syndiemoth/directional/north, +/obj/effect/turf_decal/tile/dark_red/half{ + dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research) +"gk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/parquet, +/area/ruin/space/has_grav/dangerous_research/dorms) +"gl" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, +/turf/open/floor/plating, /area/ruin/space/has_grav/dangerous_research/maint) "gr" = ( /obj/structure/cable, /obj/machinery/power/smes/engineering, /turf/open/floor/plating, /area/ruin/space/has_grav/dangerous_research/maint) -"gt" = ( +"gz" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/table/wood, -/obj/item/folder/syndicate/red, -/obj/item/paper/fluff/ruins/dangerous_research/head_occultist_note, -/obj/item/stamp/syndicate{ - pixel_x = -6 +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 }, -/obj/machinery/button/door/directional/east{ - id = "asrc_supply"; - name = "Supply Closet Access"; - req_access = list("away_command") +/turf/open/floor/iron/dark/corner{ + dir = 8 }, -/turf/open/floor/wood/parquet, /area/ruin/space/has_grav/dangerous_research/dorms) "gF" = ( /obj/item/trash/can/food/peaches/maint, @@ -489,6 +465,15 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) +"gG" = ( +/obj/item/trash/cheesie, +/obj/structure/sign/poster/ripped/directional/south, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/tile/neutral/half{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) "gH" = ( /obj/structure/table, /obj/structure/window/reinforced/spawner/directional/east, @@ -511,49 +496,68 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) +"gT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/reagent_containers/hypospray/medipen/morphine{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/reagent_containers/hypospray/medipen/morphine, +/obj/item/reagent_containers/cup/bottle/morphine, +/obj/item/reagent_containers/syringe, +/obj/structure/sign/warning/directional/north, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) "gY" = ( /obj/structure/flora/grass/brown/style_2, /turf/open/misc/sandy_dirt, /area/ruin/space/has_grav/dangerous_research) -"he" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/flag/ssc/directional/west, +"hb" = ( +/obj/structure/bed, +/obj/structure/sign/poster/contraband/interdyne_gene_clinics/directional/east, +/obj/effect/spawner/random/contraband/narcotics, +/obj/item/bedsheet/purple, /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 8 + dir = 4 }, /turf/open/floor/iron/dark/corner{ - dir = 4 + dir = 8 }, /area/ruin/space/has_grav/dangerous_research/dorms) -"hI" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 +"hf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 1 }, -/obj/effect/decal/cleanable/blood/gibs/limb, -/obj/effect/decal/cleanable/blood/footprints, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 4 +/turf/open/floor/iron/dark/corner, +/area/ruin/space/has_grav/dangerous_research/dorms) +"hp" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper/fluff/ruins/dangerous_research/armstrong_memo_3, +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/obj/effect/decal/cleanable/blood/bubblegum, -/obj/item/organ/internal/appendix, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"hL" = ( +"hD" = ( +/obj/structure/closet/l3closet/scientist, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/diagonal_edge, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/diagonal, -/area/ruin/space/has_grav/dangerous_research/dorms) -"hS" = ( -/obj/machinery/door/window/left/directional/west{ - name = "Subject Pen" +/obj/effect/turf_decal/tile/purple{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) +/area/ruin/space/has_grav/dangerous_research/medical) +"hP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/diagonal, +/area/ruin/space/has_grav/dangerous_research) "hV" = ( /obj/effect/decal/cleanable/blood/footprints{ dir = 4 @@ -584,22 +588,16 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) -"iw" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/chem_heater/withbuffer, +"is" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) -"ix" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 +/obj/effect/turf_decal/siding/dark{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) +/obj/effect/turf_decal/tile/neutral/half{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) "iD" = ( /obj/structure/table, /obj/structure/window/reinforced/spawner/directional/west, @@ -621,6 +619,13 @@ }, /turf/open/floor/plating/rust, /area/ruin/space/has_grav/dangerous_research/lab) +"iG" = ( +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/diagonal, +/area/ruin/space/has_grav/dangerous_research/dorms) "iR" = ( /obj/structure/table, /obj/structure/window/reinforced/spawner/directional/west, @@ -662,13 +667,6 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/dorms) -"jk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/ruin/space/has_grav/dangerous_research/dorms) "jm" = ( /obj/structure/barricade/wooden/crude, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -685,19 +683,6 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"js" = ( -/obj/structure/rack, -/obj/item/storage/box/swab, -/obj/item/storage/medkit/regular{ - empty = 1; - name = "First-Aid (empty)" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) "jv" = ( /obj/effect/turf_decal/stripes/asteroid{ dir = 8 @@ -734,34 +719,15 @@ /obj/effect/turf_decal/tile/neutral/diagonal_edge, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research/dorms) -"jF" = ( -/obj/machinery/light/broken/directional/north, +"jG" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/chair{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) "jH" = ( /obj/effect/turf_decal/stripes/asteroid, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"jJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner, -/area/ruin/space/has_grav/dangerous_research/dorms) -"jL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/electric_shock/directional/east, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) "jO" = ( /turf/open/misc/asteroid/airless{ icon_state = "asteroid9" @@ -770,6 +736,27 @@ "jR" = ( /turf/closed/wall/r_wall, /area/ruin/space/has_grav/dangerous_research/maint) +"jU" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/mineral/wood, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/medical) +"kb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) "kc" = ( /obj/machinery/air_sensor{ chamber_id = "asrc_b" @@ -785,11 +772,6 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research) -"kj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) "kz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -800,14 +782,6 @@ /obj/machinery/light/broken/directional/north, /turf/open/floor/plating/rust, /area/ruin/space/has_grav/dangerous_research/medical) -"kP" = ( -/obj/structure/closet/l3closet/scientist, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) "kV" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 4 @@ -832,10 +806,10 @@ /obj/effect/turf_decal/trimline/purple/line, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) -"lp" = ( +"lo" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple/diagonal_edge, -/turf/open/floor/iron/diagonal, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research) "lq" = ( /obj/structure/chair/sofa/bench/right{ @@ -844,26 +818,45 @@ /obj/effect/turf_decal/tile/neutral/diagonal_edge, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research) -"lX" = ( -/obj/effect/decal/cleanable/blood/tracks{ +"lt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bookcase/random, +/turf/open/floor/wood/parquet, +/area/ruin/space/has_grav/dangerous_research/dorms) +"lu" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/dirt, +/obj/item/bedsheet/purple{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 4 }, -/obj/effect/decal/cleanable/blood/footprints{ +/turf/open/floor/iron/dark/corner{ dir = 8 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) +/area/ruin/space/has_grav/dangerous_research/dorms) "lY" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 5 }, /turf/open/floor/plating/rust, /area/ruin/space/has_grav/dangerous_research/medical) +"md" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood, +/obj/item/folder/syndicate/red, +/obj/item/paper/fluff/ruins/dangerous_research/head_occultist_note, +/obj/item/stamp/syndicate{ + pixel_x = -6 + }, +/obj/machinery/button/door/directional/east{ + id = "asrc_supply"; + name = "Supply Closet Access"; + req_access = list("away_command") + }, +/turf/open/floor/wood/parquet, +/area/ruin/space/has_grav/dangerous_research/dorms) "mg" = ( /obj/effect/turf_decal/trimline/purple/line, /obj/machinery/chem_mass_spec, @@ -888,12 +881,20 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"mu" = ( +"mt" = ( +/obj/structure/rack, +/obj/item/storage/box/swab, +/obj/item/storage/medkit/regular{ + empty = 1; + name = "First-Aid (empty)" + }, /obj/effect/decal/cleanable/dirt, -/obj/structure/bookcase/random, -/turf/open/floor/wood/parquet, -/area/ruin/space/has_grav/dangerous_research/dorms) -"mG" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"mG" = ( /obj/structure/table, /obj/item/organ/internal/heart, /obj/effect/decal/cleanable/blood/bubblegum, @@ -901,13 +902,16 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) -"mK" = ( +"mL" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/gibs/core, -/obj/effect/decal/cleanable/blood/bubblegum, /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) +/area/ruin/space/has_grav/dangerous_research/dorms) +"mU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/turf/open/floor/iron/dark/diagonal, +/area/ruin/space/has_grav/dangerous_research/dorms) "mV" = ( /obj/effect/decal/cleanable/blood/footprints{ dir = 1 @@ -925,6 +929,12 @@ }, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research) +"ne" = ( +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/dark/diagonal, +/area/ruin/space/has_grav/dangerous_research/dorms) "nl" = ( /obj/structure/table, /obj/structure/window/reinforced/spawner/directional/east, @@ -932,11 +942,6 @@ /obj/effect/turf_decal/tile/neutral/half, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"nm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) "nv" = ( /obj/structure/chair/comfy{ dir = 8 @@ -962,12 +967,22 @@ "nB" = ( /turf/closed/mineral/random, /area/ruin/space/has_grav/dangerous_research/medical) -"nF" = ( +"nN" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/warning/electric_shock/directional/east, +/obj/effect/turf_decal/tile/purple/opposingcorners, /turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research) +/area/ruin/space/has_grav/dangerous_research/medical) +"nQ" = ( +/obj/structure/table, +/obj/item/stack/sheet/cardboard, +/obj/item/food/pizzaslice/moldy/bacteria, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/diagonal, +/area/ruin/space/has_grav/dangerous_research/dorms) "nS" = ( /obj/effect/turf_decal/tile/neutral/diagonal_edge, /obj/structure/sign/clock/directional/east, @@ -982,6 +997,16 @@ /obj/item/trash/ready_donk, /turf/open/floor/iron/white/small, /area/ruin/space/has_grav/dangerous_research/dorms) +"nX" = ( +/obj/effect/turf_decal/trimline/purple/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) "nY" = ( /obj/structure/toilet{ dir = 8 @@ -1032,18 +1057,6 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/dorms) -"ou" = ( -/obj/effect/turf_decal/stripes/asteroid{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/gibs/torso, -/obj/effect/decal/cleanable/blood/footprints, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) "ox" = ( /obj/machinery/door/airlock/vault{ name = "ASRC Electrical" @@ -1052,23 +1065,16 @@ /obj/effect/mapping_helpers/airlock/access/all/away/science, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/maint) -"oF" = ( +"oA" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, /turf/open/floor/iron, /area/ruin/space/has_grav/dangerous_research/maint) -"oH" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/footprints, -/obj/item/organ/internal/lungs, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) "oJ" = ( /obj/structure/closet/crate/medical, /obj/item/stack/medical/suture/emergency, @@ -1080,6 +1086,21 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research) +"oT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/bottle/vodka/badminka{ + pixel_x = 8; + pixel_y = 16 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/andromeda_bitters/directional/east, +/turf/open/floor/wood/parquet, +/area/ruin/space/has_grav/dangerous_research/dorms) "oW" = ( /obj/effect/turf_decal/stripes/asteroid{ dir = 8 @@ -1087,13 +1108,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"pa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/diagonal_edge, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark/diagonal, +"oX" = ( +/obj/structure/sign/poster/official/moth_piping/directional/north, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/dorms) "pb" = ( /obj/item/chair, @@ -1103,47 +1121,20 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"pi" = ( -/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6/directional/west, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/ruin/space/has_grav/dangerous_research/dorms) "pk" = ( /turf/closed/wall, /area/ruin/space/has_grav/dangerous_research) -"pu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/structure/tank_holder/extinguisher/advanced, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) -"pC" = ( -/obj/structure/bed{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/bedsheet/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/ruin/space/has_grav/dangerous_research/dorms) "pF" = ( /obj/effect/spawner/structure/window/reinforced, /obj/effect/decal/cleanable/blood/splatter/over_window, /turf/open/floor/plating, /area/ruin/space/has_grav/dangerous_research/medical) +"pG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/dangerous_research/medical) "pH" = ( /turf/open/misc/asteroid/airless{ icon_state = "asteroid6" @@ -1161,12 +1152,6 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"pP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/burnt_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) "pQ" = ( /obj/effect/decal/cleanable/blood/bubblegum, /turf/open/floor/iron/white, @@ -1180,14 +1165,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) -"qc" = ( +"pY" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/command{ - name = "Head Occultist Bedroom" - }, -/obj/effect/mapping_helpers/airlock/access/all/away/command, -/turf/open/floor/wood/parquet, -/area/ruin/space/has_grav/dangerous_research/dorms) +/obj/structure/sign/warning/no_smoking/directional/north, +/obj/effect/turf_decal/tile/neutral/half, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) "qg" = ( /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/footprints{ @@ -1201,25 +1184,6 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"ql" = ( -/obj/item/trash/cheesie, -/obj/structure/sign/poster/ripped/directional/south, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) -"qp" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/clock/directional/south, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) "qq" = ( /obj/effect/decal/cleanable/blood/gibs/torso, /obj/effect/decal/cleanable/blood/footprints, @@ -1242,12 +1206,6 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) -"qv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/no_smoking/directional/north, -/obj/effect/turf_decal/tile/neutral/half, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) "qB" = ( /obj/structure/closet/crate/bin, /obj/item/broken_bottle, @@ -1275,15 +1233,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"ra" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) "rb" = ( /obj/effect/decal/cleanable/blood/footprints{ dir = 4 @@ -1314,15 +1263,6 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"rd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/official/safety_report/directional/south, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) "re" = ( /mob/living/basic/heretic_summon/raw_prophet/ruins, /turf/open/floor/plating/rust, @@ -1336,27 +1276,17 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research) -"rl" = ( +"rj" = ( +/obj/machinery/light/broken/directional/north, /obj/effect/decal/cleanable/dirt, -/obj/structure/closet{ - anchored = 1; - name = "HO Locker" +/obj/item/chair{ + dir = 1 }, -/obj/effect/spawner/random/aimodule/harmful, -/obj/item/clothing/suit/toggle/labcoat/interdyne, -/obj/item/gps/spaceruin, -/obj/item/clothing/under/rank/rnd/research_director/turtleneck, -/obj/item/clothing/under/rank/rnd/research_director/turtleneck/skirt, -/turf/open/floor/wood/parquet, -/area/ruin/space/has_grav/dangerous_research/dorms) -"rm" = ( -/obj/effect/turf_decal/siding/purple, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple/half/contrasted{ +/obj/effect/turf_decal/tile/purple{ dir = 1 }, /turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research) +/area/ruin/space/has_grav/dangerous_research/lab) "rq" = ( /obj/effect/turf_decal/siding/dark{ dir = 4 @@ -1373,13 +1303,6 @@ }, /turf/open/floor/engine/air, /area/ruin/space/has_grav/dangerous_research/maint) -"rF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) "rO" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1422,12 +1345,11 @@ /obj/effect/decal/cleanable/blood/footprints, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"sv" = ( -/obj/structure/chair/office, +"so" = ( +/obj/effect/turf_decal/tile/neutral/diagonal_edge, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research) +/turf/open/floor/iron/dark/diagonal, +/area/ruin/space/has_grav/dangerous_research/dorms) "sG" = ( /obj/structure/chair/comfy{ dir = 4 @@ -1435,6 +1357,23 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) +"sM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"sY" = ( +/obj/structure/sign/poster/official/random/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/dark_red/anticorner{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research) "tb" = ( /obj/effect/turf_decal/stripes/asteroid{ dir = 1 @@ -1461,6 +1400,14 @@ /obj/effect/turf_decal/tile/purple, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) +"tj" = ( +/obj/structure/filingcabinet, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper/fluff/ruins/dangerous_research/manifest, +/obj/effect/turf_decal/tile/dark_red/half, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research) "tk" = ( /obj/effect/turf_decal/tile/neutral/diagonal_edge, /obj/machinery/door/airlock{ @@ -1468,14 +1415,6 @@ }, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research/dorms) -"tm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/fluff/paper/stack{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) "tp" = ( /obj/item/shard, /turf/open/floor/iron/white, @@ -1494,41 +1433,13 @@ "ts" = ( /turf/closed/wall, /area/ruin/space/has_grav/dangerous_research/dorms) -"tu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) -"tv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple/diagonal_edge, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/diagonal, -/area/ruin/space/has_grav/dangerous_research) -"tz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/official/work_for_a_future/directional/north, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner, -/area/ruin/space/has_grav/dangerous_research/dorms) -"tD" = ( -/obj/machinery/door/airlock{ - name = "Dorms - Doctor Greyham" +"tD" = ( +/obj/machinery/door/airlock{ + name = "Dorms - Doctor Greyham" }, /obj/effect/turf_decal/tile/neutral/diagonal_edge, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research/dorms) -"tE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/dark, -/obj/effect/turf_decal/tile/purple/half/contrasted, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research) "tF" = ( /obj/effect/turf_decal/stripes/corner, /obj/effect/decal/cleanable/blood/gibs, @@ -1600,21 +1511,46 @@ }, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research) -"uc" = ( -/obj/effect/turf_decal/trimline/purple/line{ +"uf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed{ + dir = 4 + }, +/obj/item/bedsheet/purple{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) -"um" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner, +/area/ruin/space/has_grav/dangerous_research/dorms) +"uh" = ( +/obj/structure/bed{ dir = 4 }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/decal/cleanable/dirt, +/obj/item/bedsheet/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 8 }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/ruin/space/has_grav/dangerous_research/dorms) +"ul" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet{ + anchored = 1; + name = "HO Locker" + }, +/obj/effect/spawner/random/aimodule/harmful, +/obj/item/clothing/suit/toggle/labcoat/interdyne, +/obj/item/gps/spaceruin, +/obj/item/clothing/under/rank/rnd/research_director/turtleneck, +/obj/item/clothing/under/rank/rnd/research_director/turtleneck/skirt, +/turf/open/floor/wood/parquet, /area/ruin/space/has_grav/dangerous_research/dorms) "un" = ( /obj/machinery/light/broken/directional/south, @@ -1623,39 +1559,21 @@ "us" = ( /turf/closed/wall, /area/ruin/space) -"uB" = ( -/obj/structure/fluff/paper/stack{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/ruin/space/has_grav/dangerous_research/dorms) -"uG" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/toolbox/mechanical, -/obj/item/ammo_box/c38, -/obj/item/ammo_box/c38, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) "uI" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/purple, /turf/open/space/basic, /area/ruin/space) -"uP" = ( -/obj/effect/turf_decal/trimline/purple/line{ +"uO" = ( +/obj/effect/turf_decal/stripes/asteroid, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) +"uQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/tank_holder/anesthetic, -/obj/machinery/airalarm/directional/south, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) "uR" = ( @@ -1669,6 +1587,22 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research) +"uZ" = ( +/obj/structure/chair/office, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/dark_red/opposingcorners, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research) +"ve" = ( +/obj/effect/turf_decal/stripes/asteroid{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/footprints, +/obj/effect/decal/cleanable/blood/footprints, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) "vg" = ( /obj/effect/decal/cleanable/blood/tracks, /obj/effect/decal/cleanable/blood/footprints{ @@ -1679,6 +1613,15 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) +"vu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/office{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/dorms) "vv" = ( /obj/effect/spawner/structure/window/reinforced/damaged, /turf/open/floor/plating, @@ -1695,25 +1638,17 @@ /obj/item/stack/cable_coil, /turf/open/floor/plating/rust, /area/ruin/space/has_grav/dangerous_research/lab) +"vQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) "wf" = ( /obj/structure/cable, /turf/open/floor/plating, /area/ruin/space/has_grav/dangerous_research/maint) -"wh" = ( -/obj/structure/table, -/obj/item/flashlight/lamp{ - pixel_x = -6; - pixel_y = 13 - }, -/obj/item/paper/fluff/ruins/dangerous_research/beaches_journal_1, -/obj/structure/sign/poster/contraband/tea_over_tizira/directional/east, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/ruin/space/has_grav/dangerous_research/dorms) "wi" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1773,23 +1708,14 @@ /obj/structure/table, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research) -"wV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) -"xb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"wX" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) "xd" = ( /turf/open/floor/plating/rust, /area/ruin/space/has_grav/dangerous_research/medical) @@ -1812,6 +1738,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) +"xv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/obj/structure/cable, +/turf/open/floor/iron/dark/diagonal, +/area/ruin/space/has_grav/dangerous_research/dorms) "xB" = ( /obj/structure/barricade/wooden, /obj/structure/extinguisher_cabinet/directional/north, @@ -1825,11 +1757,6 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"xJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research) "xK" = ( /turf/open/misc/asteroid{ icon_state = "asteroid6" @@ -1839,17 +1766,20 @@ /obj/effect/turf_decal/tile/neutral/diagonal_edge, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research) +"xR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/wallframe/camera, +/obj/effect/decal/cleanable/robot_debris, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) "xS" = ( /obj/effect/turf_decal/tile/neutral/diagonal_edge, /obj/machinery/light/broken/directional/east, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research) -"xW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) "xZ" = ( /obj/structure/sign/poster/official/random/directional/east, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -1858,6 +1788,27 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/dorms) +"yc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/structure/tank_holder/extinguisher/advanced, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"yg" = ( +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/obj/item/food/donkpocket/spicy, +/obj/item/food/ready_donk, +/obj/item/food/ready_donk/mac_n_cheese, +/obj/structure/sign/poster/contraband/donk_co/directional/west, +/obj/machinery/light/dim/directional/west, +/obj/structure/closet/secure_closet/freezer/empty{ + name = "fridge" + }, +/turf/open/floor/iron/dark/diagonal, +/area/ruin/space/has_grav/dangerous_research) "yl" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -1865,16 +1816,17 @@ /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research) -"yr" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 10 - }, +"yA" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research) +/obj/machinery/light/small/red/directional/north, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"yL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/diagonal, +/area/ruin/space/has_grav/dangerous_research/dorms) "yO" = ( /obj/effect/decal/cleanable/blood/bubblegum, /turf/open/floor/plating/rust, @@ -1900,15 +1852,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research) -"yZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/directional/north, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research) "zb" = ( /obj/effect/spawner/random/vending/colavend, /obj/effect/turf_decal/siding/dark/corner{ @@ -1947,11 +1890,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research) -"zg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) "zi" = ( /turf/open/misc/asteroid{ icon_state = "asteroid8" @@ -1972,6 +1910,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/medical) +"zF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) "zM" = ( /obj/structure/table, /obj/machinery/computer/security/telescreen/entertainment/directional/south, @@ -2008,6 +1956,20 @@ icon_state = "asteroid12" }, /area/ruin/space) +"zT" = ( +/obj/structure/closet/crate, +/obj/item/reagent_containers/cup/glass/waterbottle/large, +/obj/item/reagent_containers/cup/glass/waterbottle/large, +/obj/item/reagent_containers/cup/glass/waterbottle/large, +/obj/item/food/canned/beans, +/obj/item/food/canned/beans, +/obj/item/food/canned/beans, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) "zY" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, @@ -2034,23 +1996,10 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) -"Ag" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/item/soap, -/obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) -"An" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) -"Aq" = ( -/obj/machinery/atmospherics/components/binary/valve/on/layer4{ +"Ah" = ( +/obj/machinery/atmospherics/components/binary/valve/layer4{ dir = 4; - name = "Air Tank A Valve" + name = "Air Tank B Valve" }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -2070,40 +2019,43 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research) -"AH" = ( -/obj/structure/table, -/obj/item/folder/white, -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) -"AK" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 - }, -/turf/open/floor/plating/rust, -/area/ruin/space/has_grav/dangerous_research/lab) -"AO" = ( -/obj/structure/table, -/obj/item/stack/sheet/cardboard, -/obj/item/food/pizzaslice/moldy/bacteria, -/obj/effect/turf_decal/tile/neutral/diagonal_edge, +"Ax" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/diagonal, -/area/ruin/space/has_grav/dangerous_research/dorms) -"AQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"Ay" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/structure/sign/warning/directional/north, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research) +"AE" = ( +/obj/effect/turf_decal/trimline/purple/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/security/telescreen/entertainment/directional/south, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) +"AH" = ( +/obj/structure/table, +/obj/item/folder/white, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) +"AK" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/footprints{ dir = 8 }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) +/turf/open/floor/plating/rust, +/area/ruin/space/has_grav/dangerous_research/lab) "AT" = ( /obj/structure/closet/crate/trashcart/laundry, /obj/effect/turf_decal/siding/dark{ @@ -2117,12 +2069,6 @@ /obj/structure/closet/secure_closet/freezer/empty/open, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research) -"Ba" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) "Bc" = ( /obj/effect/decal/cleanable/blood/footprints, /obj/effect/decal/cleanable/blood/footprints{ @@ -2134,6 +2080,19 @@ "Bg" = ( /turf/closed/mineral/random, /area/ruin/space) +"Bi" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research) +"Bj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/medical/emergency, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) "Bm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -2154,15 +2113,22 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"By" = ( +"Bv" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 +/obj/structure/sign/clock/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/dorms) +"Bx" = ( +/obj/structure/sink/directional/south, +/obj/structure/mirror/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/ruin/space/has_grav/dangerous_research/dorms) "BE" = ( /obj/effect/turf_decal/stripes/asteroid, /obj/effect/decal/cleanable/blood/gibs/up, @@ -2170,18 +2136,6 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"BG" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/plasma/thirty, -/obj/item/stack/sheet/mineral/wood/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/plasteel{ - amount = 30 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) "BJ" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/siding/dark{ @@ -2202,21 +2156,19 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) +"BQ" = ( +/obj/effect/turf_decal/trimline/purple/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) "BY" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/decal/cleanable/dirt, /obj/machinery/iv_drip, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"Cd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/clock/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/dorms) "Cf" = ( /obj/effect/turf_decal/tile/purple/diagonal_edge, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2236,23 +2188,22 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron/diagonal, /area/ruin/space/has_grav/dangerous_research) -"Cs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 +"CI" = ( +/turf/open/misc/asteroid/airless{ + icon_state = "asteroid2" }, -/area/ruin/space/has_grav/dangerous_research/dorms) -"CA" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/area/ruin/space) +"CJ" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark/diagonal, -/area/ruin/space/has_grav/dangerous_research/dorms) -"CB" = ( +/obj/item/clothing/suit/toggle/labcoat, +/obj/effect/mapping_helpers/atom_injector/element_injector{ + element_type = /datum/element/decal/blood; + target_type = /obj/item/clothing + }, +/obj/effect/turf_decal/tile/blue/fourcorners, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) +"CK" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/computer/atmos_control/noreconnect{ atmos_chambers = list("asrc_b"="Air Supply B"); @@ -2261,32 +2212,6 @@ /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /turf/open/floor/iron, /area/ruin/space/has_grav/dangerous_research/maint) -"CD" = ( -/obj/effect/turf_decal/stripes/asteroid{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) -"CG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/asteroid{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/asteroid{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research) -"CI" = ( -/turf/open/misc/asteroid/airless{ - icon_state = "asteroid2" - }, -/area/ruin/space) "CL" = ( /obj/effect/turf_decal/stripes/asteroid{ dir = 4 @@ -2303,22 +2228,6 @@ /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/ruin/space/has_grav/dangerous_research/maint) -"CS" = ( -/obj/effect/turf_decal/stripes/asteroid{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) "CU" = ( /obj/effect/decal/cleanable/blood/tracks, /obj/effect/decal/cleanable/blood/footprints{ @@ -2329,14 +2238,6 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) -"Dg" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research) "Dk" = ( /obj/structure/sign/poster/official/random/directional/north, /obj/effect/turf_decal/tile/purple/half/contrasted{ @@ -2363,17 +2264,6 @@ "DA" = ( /turf/closed/wall/r_wall, /area/ruin/space/has_grav/dangerous_research) -"DB" = ( -/obj/effect/turf_decal/stripes/asteroid{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/footprints, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) "DL" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/components/unary/passive_vent{ @@ -2381,10 +2271,11 @@ }, /turf/open/misc/asteroid/airless, /area/ruin/space) -"DX" = ( -/obj/structure/sign/poster/official/moth_piping/directional/north, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, +"DS" = ( +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research/dorms) "DY" = ( /obj/structure/table, @@ -2406,6 +2297,15 @@ /obj/structure/lattice, /turf/open/misc/asteroid/airless, /area/ruin/space) +"Es" = ( +/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) "Ey" = ( /obj/structure/lattice, /turf/open/space/basic, @@ -2441,6 +2341,17 @@ }, /turf/open/floor/wood/parquet, /area/ruin/space/has_grav/dangerous_research/dorms) +"EY" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/mechanical, +/obj/item/ammo_box/c38, +/obj/item/ammo_box/c38, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) "Fa" = ( /obj/structure/chair/comfy/black{ dir = 4 @@ -2472,24 +2383,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"FA" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/mineral/wood, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/medical) -"FG" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/fancy/candle_box, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) "FJ" = ( /obj/effect/turf_decal/siding/purple, /obj/effect/turf_decal/tile/purple/half/contrasted{ @@ -2512,20 +2405,6 @@ /obj/item/stack/cable_coil, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"Gd" = ( -/obj/machinery/door/airlock/science{ - name = "Supply Closet" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/access/all/away/science, -/obj/machinery/door/poddoor/shutters{ - id = "asrc_supply"; - name = "Supply Closet Shutters" - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) "Gg" = ( /obj/structure/barricade/wooden/crude, /obj/machinery/door/airlock/vault{ @@ -2544,16 +2423,6 @@ /obj/effect/turf_decal/tile/purple/half/contrasted, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research) -"Gm" = ( -/obj/machinery/light/broken/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/yes_smoking/circle/directional/east, -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/diagonal_edge, -/turf/open/floor/iron/diagonal, -/area/ruin/space/has_grav/dangerous_research) "Gn" = ( /obj/structure/table/glass, /obj/item/folder/white, @@ -2585,6 +2454,13 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research) +"Gx" = ( +/obj/machinery/door/window/left/directional/west{ + name = "Subject Pen" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) "Gz" = ( /obj/structure/barricade/wooden/crude, /obj/effect/decal/cleanable/blood/tracks, @@ -2592,9 +2468,30 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research) -"GZ" = ( -/turf/open/misc/asteroid, -/area/ruin/space/has_grav/dangerous_research/medical) +"GH" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/purple/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) +"GW" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/fancy/candle_box, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) +"GZ" = ( +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/dangerous_research/medical) "Hj" = ( /turf/closed/wall/rust, /area/ruin/space/has_grav/dangerous_research/medical) @@ -2623,9 +2520,15 @@ /obj/effect/turf_decal/tile/neutral/diagonal_edge, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research/dorms) -"HG" = ( +"HL" = ( +/obj/machinery/light/broken/directional/east, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, +/obj/structure/sign/warning/yes_smoking/circle/directional/east, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/ruin/space/has_grav/dangerous_research) "HO" = ( /turf/open/floor/plating, @@ -2637,6 +2540,16 @@ }, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research/dorms) +"HR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/flag/ssc/directional/west, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/ruin/space/has_grav/dangerous_research/dorms) "HT" = ( /obj/effect/turf_decal/siding/purple/corner{ dir = 1 @@ -2650,6 +2563,11 @@ /obj/effect/turf_decal/tile/purple/half/contrasted, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research) +"HV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) "Ij" = ( /obj/structure/table/glass, /obj/item/pai_card, @@ -2660,16 +2578,39 @@ /obj/effect/spawner/structure/electrified_grille, /turf/open/floor/plating, /area/ruin/space/has_grav/dangerous_research/maint) -"Il" = ( +"Iq" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -1; + pixel_y = 5 + }, +/obj/item/pen, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/tile/dark_red/anticorner{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research) +"Iz" = ( +/obj/machinery/door/airlock/science{ + name = "Supply Closet" + }, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/away/science, +/obj/machinery/door/poddoor/shutters{ + id = "asrc_supply"; + name = "Supply Closet Shutters" }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"IA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/turf/open/floor/iron/diagonal, +/area/ruin/space/has_grav/dangerous_research) "IC" = ( /obj/effect/turf_decal/trimline/purple/line{ dir = 1 @@ -2679,6 +2620,12 @@ /obj/effect/decal/cleanable/robot_debris/up, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) +"IU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) "IZ" = ( /obj/effect/turf_decal/stripes/asteroid{ dir = 4 @@ -2692,20 +2639,33 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"Ja" = ( -/obj/effect/turf_decal/stripes/asteroid{ +"Jd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/obj/effect/decal/cleanable/blood/footprints, -/obj/effect/decal/cleanable/blood/footprints, -/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"Je" = ( +/obj/effect/turf_decal/trimline/purple/line{ + dir = 1 + }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) +/obj/structure/tank_holder/anesthetic, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) "Jh" = ( /obj/effect/spawner/structure/window/reinforced/damaged, /turf/open/floor/plating, /area/ruin/space/has_grav/dangerous_research/medical) +"Jk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) "JA" = ( /obj/effect/turf_decal/stripes/asteroid{ dir = 1 @@ -2717,11 +2677,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/medical) -"JF" = ( +"JC" = ( +/obj/effect/turf_decal/siding/purple, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, /turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) +/area/ruin/space/has_grav/dangerous_research) "JI" = ( /obj/structure/cable, /obj/machinery/power/terminal, @@ -2745,6 +2708,22 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) +"JU" = ( +/obj/structure/table, +/obj/machinery/light/small/directional/west, +/obj/item/book/bible{ + pixel_x = 3 + }, +/obj/item/book/manual/wiki/cytology{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/paper/fluff/ruins/dangerous_research/armstrong_memo_2, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/corner, +/area/ruin/space/has_grav/dangerous_research/dorms) "JW" = ( /obj/effect/turf_decal/siding/purple, /obj/structure/chair/sofa/bench/right, @@ -2753,17 +2732,40 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research) -"Ki" = ( -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 +"JY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"Kb" = ( +/obj/effect/turf_decal/stripes/asteroid{ dir = 1 }, -/obj/effect/turf_decal/trimline/purple/line, +/obj/effect/decal/cleanable/blood/gibs, +/obj/effect/decal/cleanable/blood/footprints, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/south, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) +"Kh" = ( +/obj/item/trash/can{ + pixel_x = -8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/bubblegum, +/obj/machinery/light/very_dim/directional/west, +/obj/effect/turf_decal/tile/neutral/half{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) "Kk" = ( /obj/machinery/light/broken/directional/west, /turf/open/floor/plating/rust, @@ -2774,10 +2776,28 @@ /obj/item/shard, /turf/open/floor/plating, /area/ruin/space/has_grav/dangerous_research/lab) +"Kx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/fluff/paper/stack{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) "KB" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/ruin/space/has_grav/dangerous_research/medical) +"KE" = ( +/obj/effect/turf_decal/trimline/purple/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) "KM" = ( /obj/structure/barricade/wooden, /obj/structure/sign/warning/no_smoking/directional/north, @@ -2792,18 +2812,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/diagonal, /area/ruin/space/has_grav/dangerous_research) -"KS" = ( -/obj/item/kirbyplants/random, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/dorms) -"KT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/misc/asteroid, -/area/ruin/space/has_grav/dangerous_research/medical) "KU" = ( /obj/structure/bed, /obj/item/bedsheet/purple, @@ -2813,19 +2821,24 @@ }, /turf/open/floor/iron/dark/corner, /area/ruin/space/has_grav/dangerous_research/dorms) -"La" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/bed/medical/emergency, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) "Lc" = ( /obj/structure/flora/rock/pile/icy, /turf/open/misc/asteroid/airless, /area/ruin/space) -"Lk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/diagonal_edge, -/turf/open/floor/iron/dark/diagonal, +"Lp" = ( +/obj/structure/table, +/obj/item/flashlight/lamp{ + pixel_x = -6; + pixel_y = 13 + }, +/obj/item/paper/fluff/ruins/dangerous_research/beaches_journal_1, +/obj/structure/sign/poster/contraband/tea_over_tizira/directional/east, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, /area/ruin/space/has_grav/dangerous_research/dorms) "Lr" = ( /obj/effect/decal/cleanable/glass, @@ -2833,17 +2846,16 @@ /obj/item/shard, /turf/open/floor/plating, /area/ruin/space/has_grav/dangerous_research/medical) -"Lz" = ( -/obj/effect/turf_decal/siding/purple{ +"Lu" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/purple/half/contrasted, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research) +/obj/effect/decal/cleanable/blood/footprints, +/obj/item/organ/internal/lungs, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) "LC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2878,16 +2890,6 @@ /obj/effect/mapping_helpers/airlock/access/all/away/command, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/dorms) -"LW" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/ruin/space/has_grav/dangerous_research/dorms) "LZ" = ( /obj/effect/turf_decal/siding/purple, /obj/structure/chair/sofa/bench/left, @@ -2934,17 +2936,6 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research) -"MU" = ( -/obj/machinery/atmospherics/components/binary/valve/layer4{ - dir = 4; - name = "Air Tank B Valve" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) "Nc" = ( /obj/machinery/door/airlock/science/glass{ name = "Alternate Sciences Research Center" @@ -2954,6 +2945,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/diagonal, /area/ruin/space/has_grav/dangerous_research) +"Nh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/fourcorners, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) "Ni" = ( /obj/effect/turf_decal/tile/purple/diagonal_edge, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -2961,11 +2957,6 @@ }, /turf/open/floor/iron/diagonal, /area/ruin/space/has_grav/dangerous_research) -"No" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) "Nq" = ( /obj/effect/turf_decal/stripes/asteroid{ dir = 8 @@ -2974,11 +2965,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"Nr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/dorms) "Ns" = ( /obj/machinery/door/airlock/science{ name = "Decontamination" @@ -2996,13 +2982,31 @@ /obj/structure/flora/grass/brown/style_3, /turf/open/misc/sandy_dirt, /area/ruin/space/has_grav/dangerous_research) -"NK" = ( -/obj/effect/decal/cleanable/blood/footprints, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 +"NA" = ( +/obj/structure/fluff/paper/stack{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/ruin/space/has_grav/dangerous_research/dorms) +"NK" = ( +/obj/effect/decal/cleanable/blood/footprints, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 8 }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) +"NM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) "NN" = ( /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/bubblegum, @@ -3011,19 +3015,22 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"NV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"NP" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/iron/white, +/obj/effect/decal/cleanable/blood/gibs/limb, +/obj/effect/decal/cleanable/blood/footprints, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/bubblegum, +/obj/item/organ/internal/appendix, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"NX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood/parquet, -/area/ruin/space/has_grav/dangerous_research/dorms) "Oa" = ( /obj/effect/turf_decal/siding/purple/corner{ dir = 8 @@ -3043,13 +3050,16 @@ }, /turf/open/floor/iron, /area/ruin/space/has_grav/dangerous_research/maint) -"Oc" = ( -/obj/structure/sink/directional/south, -/obj/structure/mirror/directional/north, +"Of" = ( +/obj/structure/rack, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/showroomfloor, -/area/ruin/space/has_grav/dangerous_research/dorms) +/obj/item/pen/screwdriver, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) "On" = ( /turf/open/misc/asteroid/airless, /area/ruin/space) @@ -3070,10 +3080,25 @@ }, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research) +"Os" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) "Oy" = ( /obj/structure/flora/rock/icy/style_random, /turf/open/misc/asteroid/airless, /area/ruin/space) +"OA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/safety_report/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) "OB" = ( /obj/structure/table, /obj/structure/microscope, @@ -3082,29 +3107,6 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/lab) -"OC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/office/light, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/dorms) -"OK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) -"OL" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_edge, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/diagonal, -/area/ruin/space/has_grav/dangerous_research/dorms) "OM" = ( /obj/machinery/door/airlock/external, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -3113,77 +3115,60 @@ /obj/effect/turf_decal/stripes/end, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research) +"OO" = ( +/obj/machinery/atmospherics/components/binary/valve/on/layer4{ + dir = 4; + name = "Air Tank A Valve" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) "OR" = ( /obj/effect/turf_decal/tile/neutral/diagonal_edge, /obj/machinery/light/warm/directional/north, /obj/machinery/computer/arcade/battle, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research/dorms) -"OW" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_edge, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/diagonal, -/area/ruin/space/has_grav/dangerous_research/dorms) -"Pb" = ( -/obj/effect/turf_decal/stripes/asteroid, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) -"Pk" = ( -/obj/effect/decal/cleanable/blood/footprints{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/footprints, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/bubblegum, -/obj/effect/heretic_rune/big, +"Pq" = ( +/obj/structure/rack, /obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) -"Pn" = ( +/obj/item/soap, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"Pt" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/bottle/vodka/badminka{ - pixel_x = 8; - pixel_y = 16 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = 5; - pixel_y = 3 +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"Pv" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 4 }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research) +"PD" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/andromeda_bitters/directional/east, -/turf/open/floor/wood/parquet, -/area/ruin/space/has_grav/dangerous_research/dorms) -"Pu" = ( -/obj/structure/bed, -/obj/effect/decal/cleanable/dirt, -/obj/item/bedsheet/purple{ - dir = 8 - }, /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ dir = 8 }, -/area/ruin/space/has_grav/dangerous_research/dorms) -"Pv" = ( -/obj/effect/turf_decal/tile/purple{ +/turf/open/floor/iron/dark/corner{ dir = 4 }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research) -"PJ" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/area/ruin/space/has_grav/dangerous_research/dorms) +"PE" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/diagonal, -/area/ruin/space/has_grav/dangerous_research/dorms) +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research) "PL" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/tile/purple/diagonal_edge, @@ -3204,15 +3189,15 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) -"PP" = ( +"PR" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/chair/office{ +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/computer/terminal/dangerous_research/front_desk{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/dark_red/half, /turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/dorms) +/area/ruin/space/has_grav/dangerous_research) "Qa" = ( /obj/effect/turf_decal/siding/dark{ dir = 4 @@ -3246,15 +3231,6 @@ "Qv" = ( /turf/open/space/basic, /area/template_noop) -"Qy" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) "QA" = ( /turf/open/misc/asteroid/airless{ icon_state = "asteroid1" @@ -3298,22 +3274,25 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) -"Rd" = ( +"QS" = ( +/obj/effect/turf_decal/tile/neutral/diagonal_edge, /obj/effect/decal/cleanable/dirt, -/obj/structure/bed{ - dir = 4 - }, -/obj/item/bedsheet/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research/dorms) "Rf" = ( /turf/closed/wall/r_wall, /area/ruin/space/has_grav/dangerous_research/medical) +"Rg" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) "Rj" = ( /obj/machinery/light/small/directional/north, /obj/structure/weightmachine/weightlifter, @@ -3324,33 +3303,14 @@ dir = 8 }, /area/ruin/space/has_grav/dangerous_research/dorms) -"Rr" = ( -/obj/effect/turf_decal/stripes/asteroid{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/gibs, -/obj/effect/decal/cleanable/blood/footprints, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research/lab) -"Rs" = ( -/obj/structure/sign/poster/official/random/directional/north, +"Ro" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/dark_red/anticorner{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research) -"Rt" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_edge, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/dark/diagonal, -/area/ruin/space/has_grav/dangerous_research/dorms) +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) "Rx" = ( /obj/structure/closet{ name = "Greyham's Locker" @@ -3393,6 +3353,33 @@ /obj/effect/turf_decal/tile/purple/diagonal_edge, /turf/open/floor/iron/diagonal, /area/ruin/space/has_grav/dangerous_research) +"RH" = ( +/obj/effect/turf_decal/stripes/asteroid{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) +"RN" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research) "RR" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -3416,15 +3403,17 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research) -"Si" = ( -/obj/effect/decal/cleanable/blood/tracks, -/obj/effect/decal/cleanable/blood/footprints{ +"Sg" = ( +/obj/effect/turf_decal/stripes/asteroid{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) +/obj/effect/decal/cleanable/blood/footprints, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) "Sj" = ( /obj/structure/chair/office{ dir = 1 @@ -3479,6 +3468,17 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) +"ST" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/core, +/obj/effect/decal/cleanable/blood/bubblegum, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) +"SU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research) "SV" = ( /obj/effect/turf_decal/stripes/end{ dir = 4 @@ -3489,9 +3489,25 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research) +"SW" = ( +/obj/effect/turf_decal/stripes/asteroid{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/lab) "Tc" = ( /turf/closed/wall/r_wall, /area/ruin/space/has_grav/dangerous_research/lab) +"Td" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) "Te" = ( /obj/effect/turf_decal/tile/purple/diagonal_edge, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -3506,14 +3522,6 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/dorms) -"TH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/syndiemoth/directional/north, -/obj/effect/turf_decal/tile/dark_red/half{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research) "TV" = ( /obj/machinery/light/broken/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3544,6 +3552,14 @@ "Um" = ( /turf/closed/wall/r_wall/rust, /area/ruin/space/has_grav/dangerous_research/lab) +"Un" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/command{ + name = "Head Occultist Bedroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/away/command, +/turf/open/floor/wood/parquet, +/area/ruin/space/has_grav/dangerous_research/dorms) "Uu" = ( /obj/effect/turf_decal/stripes/end{ dir = 8 @@ -3552,6 +3568,32 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research) +"Uw" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/engineering{ + name = "ASRC Atmospherics" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/away/science, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/floor/iron, +/area/ruin/space/has_grav/dangerous_research/maint) +"Uz" = ( +/obj/effect/decal/cleanable/blood/footprints{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/footprints, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/bubblegum, +/obj/effect/heretic_rune/big, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) "UA" = ( /obj/machinery/door/airlock/science{ name = "Living Quarters" @@ -3562,32 +3604,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/diagonal, /area/ruin/space/has_grav/dangerous_research/dorms) -"UD" = ( -/obj/structure/chair/office{ - dir = 1 - }, +"UC" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"UH" = ( +"UJ" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/computer/terminal/dangerous_research/front_desk{ +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/turf/open/floor/iron/dark/corner{ dir = 1 }, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research) -"UQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/lab) +/area/ruin/space/has_grav/dangerous_research/dorms) "UT" = ( /obj/structure/flora/grass/brown, /obj/machinery/light/dim/directional/west, @@ -3601,26 +3629,6 @@ /obj/effect/turf_decal/tile/dark_red/half, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research) -"Vd" = ( -/obj/structure/filingcabinet, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/item/paper/fluff/ruins/dangerous_research/manifest, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research) -"Vf" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/engineering{ - name = "ASRC Atmospherics" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/access/all/away/science, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) "Vj" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, @@ -3636,6 +3644,12 @@ /obj/structure/flora/rock/icy/style_3, /turf/open/misc/asteroid/airless, /area/ruin/space) +"VF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) "VL" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -3646,31 +3660,19 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"VP" = ( -/obj/structure/closet{ - name = "Outpost Security Locker" - }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/spawner/random/contraband/permabrig_weapon, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/ammo_box/c38, -/obj/effect/turf_decal/tile/dark_red/anticorner, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research) -"VQ" = ( -/obj/structure/closet/crate, -/obj/item/reagent_containers/cup/glass/waterbottle/large, -/obj/item/reagent_containers/cup/glass/waterbottle/large, -/obj/item/reagent_containers/cup/glass/waterbottle/large, -/obj/item/food/canned/beans, -/obj/item/food/canned/beans, -/obj/item/food/canned/beans, +"Wi" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ +/obj/effect/turf_decal/stripes/asteroid{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/asteroid{ dir = 8 }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research) "Wm" = ( /obj/item/stack/rods/ten, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -3684,6 +3686,12 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) +"Wo" = ( +/obj/item/kirbyplants/random, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/dorms) "Wt" = ( /obj/structure/table/optable, /obj/item/organ/internal/eyes, @@ -3692,6 +3700,16 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) +"Wx" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/clock/directional/south, +/obj/effect/turf_decal/tile/neutral/half{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/lab) "WG" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3701,6 +3719,15 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research) +"WM" = ( +/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6/directional/west, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/ruin/space/has_grav/dangerous_research/dorms) "WQ" = ( /obj/structure/toilet{ pixel_x = 15; @@ -3729,12 +3756,6 @@ /obj/structure/cable, /turf/open/floor/plating/rust, /area/ruin/space/has_grav/dangerous_research/lab) -"Xi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/diagonal_edge, -/obj/structure/cable, -/turf/open/floor/iron/dark/diagonal, -/area/ruin/space/has_grav/dangerous_research/dorms) "Xk" = ( /obj/machinery/door/airlock/external, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -3761,25 +3782,6 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) -"XB" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - name = "Scrubbers To External" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) -"XI" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/mapping_helpers/apc/away_general_access, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil/slippery, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/dangerous_research/maint) "XO" = ( /obj/effect/decal/cleanable/blood/footprints{ dir = 8 @@ -3794,6 +3796,10 @@ /obj/effect/decal/cleanable/blood/footprints, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) +"XV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) "XX" = ( /obj/structure/table, /obj/effect/turf_decal/tile/purple, @@ -3813,6 +3819,16 @@ /obj/structure/sign/departments/medbay/alt/directional/west, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) +"Yf" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research) "Yh" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ @@ -3827,18 +3843,21 @@ /obj/effect/turf_decal/tile/neutral/half, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research/lab) -"YA" = ( -/obj/effect/turf_decal/tile/neutral/diagonal_edge, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/turf/open/floor/iron/dark/diagonal, -/area/ruin/space/has_grav/dangerous_research) "YC" = ( /obj/structure/closet/l3closet/scientist, /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research) +"YK" = ( +/obj/effect/decal/cleanable/blood/footprints{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/purple/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) "YL" = ( /obj/structure/closet{ name = "Smith's Locker" @@ -3854,55 +3873,36 @@ dir = 1 }, /area/ruin/space/has_grav/dangerous_research/dorms) -"YY" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, +"YP" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/mapping_helpers/apc/away_general_access, +/obj/structure/chair/office/light, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/dangerous_research/dorms) +"YQ" = ( +/obj/structure/sink/directional/south, +/obj/structure/mirror/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio{ + pixel_x = -8 + }, /turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) +/area/ruin/space/has_grav/dangerous_research/lab) "YZ" = ( /mob/living/basic/heretic_summon/rust_walker, /turf/open/floor/plating/rust, /area/ruin/space/has_grav/dangerous_research/lab) -"Zc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/suit/toggle/labcoat, -/obj/effect/mapping_helpers/atom_injector/element_injector{ - element_type = /datum/element/decal/blood; - target_type = /obj/item/clothing - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) -"Zn" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/ruin/space/has_grav/dangerous_research/medical) "Zv" = ( /turf/closed/wall/r_wall/rust, /area/ruin/space/has_grav/dangerous_research/medical) -"Zw" = ( +"ZN" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/parquet, -/area/ruin/space/has_grav/dangerous_research/dorms) -"ZF" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -1; - pixel_y = 5 - }, -/obj/item/pen, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/tile/dark_red/anticorner{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/dangerous_research) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/dangerous_research/medical) (1,1,1) = {" Qv @@ -4038,13 +4038,13 @@ Bg Bg Bg Tc -No +UC Kk yO NN qg cp -fn +Kh gF Tc Bg @@ -4080,14 +4080,14 @@ Qv Bg Bg Tc -qv +pY cv zQ -mK +ST pO qE sG -ql +gG Tc Bg Bg @@ -4129,7 +4129,7 @@ TD zZ gH DY -qp +Wx Tc Bg Bg @@ -4167,7 +4167,7 @@ Tc TW iD ec -An +VF jz iR SS @@ -4176,11 +4176,11 @@ Tc Bg Bg ts -ae +JU Sj ts -tz -pC +cq +uh ts ts ts @@ -4212,23 +4212,23 @@ aW nx Wn Qn -UD -rd +ca +OA jp ts ts ts -Pu -uB +lu +NA ts -um +gz YL ts WQ ts -rl +ul EU -mu +lt ts On On @@ -4250,15 +4250,15 @@ Tc Tc BJ BN -fg +is BN AK Qa zO rq jp -Rd -pi +uf +WM ts ts tf @@ -4266,10 +4266,10 @@ ts jC ts ts -Oc +Bx ts -NX -Zw +eI +gk Fa ts VD @@ -4288,31 +4288,31 @@ Bg Bg Tc Yh -rF +dH Ei ay Dw -UQ -UQ +Ro +Ro fR xD Uk -Il +kb jp Rj -jk +UJ tk -Lk -OL +mU +DS JN -pa +aq aD Hx -ce +cA ts -Zw -Pn -gt +gk +oT +md ts On On @@ -4332,7 +4332,7 @@ Tc eq QE Tc -aB +gT fo vH EA @@ -4345,14 +4345,14 @@ ts ts ts OR -OL -Rt +DS +ne nT ts ts ts ts -qc +Un ts ts ts @@ -4371,7 +4371,7 @@ Qv Bg Bg Tc -hS +Gx BY Tc Tc @@ -4383,18 +4383,18 @@ Um Tc rT Qe -jJ -he +hf +HR tD -hL -bl +yL +QS Uc AT ts -KS -Cd +Wo +Bv TE -Nr +mL qB ts Bg @@ -4414,9 +4414,9 @@ Bg Bg Tc tq -La +Bj Tc -dw +hp Bs CL Ds @@ -4425,15 +4425,15 @@ CL EA Xh Qe -bP +hb Rx ts -CA -AO -Rt +dt +nQ +ne HF ts -DX +oX bu Ij Ny @@ -4455,7 +4455,7 @@ Qv Bg Bg Tc -fH +YQ nY Tc jq @@ -4464,21 +4464,21 @@ tF IZ iE fB -hI +NP TV jp ts ts ts qO -PJ -Rt +iG +ne zM ts Bm -OC +YP Fi -PP +vu ji dl On @@ -4501,20 +4501,20 @@ Tc Tc Tc OB -Pb +uO mp rb qq sa -Rr +Kb tb jp KU -Cs +PD HQ -OW +so nz -Xi +xv nv ts Bm @@ -4546,13 +4546,13 @@ jB qR eW sj -Pk +Uz Bc -DB +Sg tb jp -wh -LW +Lp +fj ts ts UA @@ -4590,7 +4590,7 @@ BE FZ kV NK -ou +bI tb jp jp @@ -4626,13 +4626,13 @@ Qv Bg Bg Tc -ci +xR Gb VL -Ja +ve tK JS -oH +Lu tb cd pb @@ -4668,16 +4668,16 @@ Qv CI Bg Tc -jF +rj dI -CD +SW oW -CS +RH xq Nq tP Fw -eu +zF iZ Tc LZ @@ -4686,13 +4686,13 @@ Hq Hq Hq Hq -Lz +RN Bq -lp +IA wJ MD zc -CG +Wi Xk zY Qv @@ -4710,14 +4710,14 @@ Qv On Bg Tc -FG +GW XX AH -tm -NV +Kx +wX dy fi -nm +Jk Tc tI wC @@ -4725,12 +4725,12 @@ Tc Oa RW RW -yr +Yf Hq Hq RD Nc -tv +hP Cf fO Bq @@ -4764,17 +4764,17 @@ fx fx Fw Tc -Rs +sY ri -ZF +Iq FJ Hq Hq -Lz +RN Bq wJ Ni -tv +hP Bq zY Qv @@ -4808,8 +4808,8 @@ ti Rf os cW -UH -rm +PR +JC Hq Hq RD @@ -4845,11 +4845,11 @@ XO tp tR qM -kP -fm +hD +Td Rf RB -sv +uZ Va FJ Hq @@ -4857,7 +4857,7 @@ Hq RD Bq wJ -lp +IA MD jh Gs @@ -4885,21 +4885,21 @@ Wt Vo kY pQ -uP +Je qM gR cm Rf -TH +gb yl -Vd +tj FJ Hq Hq RD pk RE -Gm +HL dX Bq Bq @@ -4923,18 +4923,18 @@ Bg Bg Rf ET -Zc +CJ PM -Ki -Zn +YK +XV IC Jh -wV +uQ kz Zv oJ at -VP +aU uR MT aa @@ -4965,24 +4965,24 @@ Bg Bg Rf FM -JF +Nh Wm wv -ak +HV PO pF Xy -fm +Td Zv DA DA DA DA Dk -HG +SU LJ ey -dm +yg AU pk Bg @@ -5009,9 +5009,9 @@ Zv xd zi re -lX +GH Go -uc +BQ KB SK cm @@ -5020,7 +5020,7 @@ KM yQ YC DA -yZ +Ay Pv LJ xN @@ -5052,7 +5052,7 @@ GZ GZ Cn lY -Si +Es vg Hu CU @@ -5060,12 +5060,12 @@ zD Gg Gz yT -nF +PE om Uu Oo LJ -YA +ek mX lq Bq @@ -5094,10 +5094,10 @@ nB GZ GZ nB -KT +pG gN KB -wV +uQ JA Rf xo @@ -5136,17 +5136,17 @@ nB xK xd xd -pP +IU qs Jh aI -FA +jU df jm ze -xJ +lo Ns -Dg +Bi Oo Gh Op @@ -5177,7 +5177,7 @@ nB nB Zv Zv -iw +dN pR gN Lr @@ -5190,7 +5190,7 @@ YC DA wt WG -tE +fS nS xS xN @@ -5221,10 +5221,10 @@ Bg Rf mg LC -bO +nX xd xd -fm +Td jR jR jR @@ -5262,23 +5262,23 @@ Bg Bg Rf mo -Ba +ZN un Hj kA cm jR -uG -BG -VQ +EY +fC +zT jR Cl -Vf +Uw Cl Cl -pu -oF -Qy +yc +vQ +eO jR On Bg @@ -5305,22 +5305,22 @@ Bg Rf nZ tQ -ix +KE SH zd cm jR -fT -zg -kj -Gd -tu -xb -AQ -By -OK -xW -XB +yA +jG +Ax +Iz +NM +oA +sM +Jd +Pt +Os +eg gl DL Qv @@ -5346,23 +5346,23 @@ Bg Bg Rf oa -YY -aY +aT +AE qM -jL +nN Qo jR -js -Ag -dC +mt +Pq +Of jR -XI -go +eN +Rg Ob -Aq -ra -MU -CB +OO +JY +Ah +CK jR On RA diff --git a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm index 8dd7ac7c0ee3..8b1062447f45 100644 --- a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm @@ -1,1010 +1,2357 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "ac" = ( -/obj/structure/sign/poster/official/nanotrasen_logo/directional/north, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"ae" = ( -/obj/item/wallframe/button{ - pixel_x = 7; - pixel_y = -7; - name = "Busted Button"; - desc = "Someone appears to have broken this button off it's frame. Not likely to be useful where you found it." - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"ap" = ( -/obj/structure/marker_beacon/cerulean, -/obj/structure/sign/nanotrasen{ - pixel_y = -32 +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/structure/table/reinforced, +/obj/item/stack/cable_coil{ + pixel_x = -1; + pixel_y = 1 }, -/obj/structure/sign/nanotrasen{ - pixel_x = 32 +/obj/item/storage/toolbox/syndicate{ + pixel_x = 6; + pixel_y = 7 }, -/turf/open/floor/plating/airless, -/area/ruin/space) -"aP" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"aR" = ( -/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, +/obj/effect/mapping_helpers/apc/syndicate_access, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/comms) +"ae" = ( +/obj/effect/turf_decal/sand/plating, +/obj/item/seeds/potato, +/obj/item/seeds/potato, +/obj/item/seeds/potato, +/obj/structure/closet/crate/hydroponics, +/obj/item/storage/bag/plants/portaseeder, +/obj/item/seeds/tower, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) +/area/ruin/space/has_grav/listeningstation/asteroid) +"au" = ( +/obj/machinery/telecomms/relay/preset/ruskie, +/obj/machinery/light/small/directional/east, +/turf/open/floor/circuit/red/anim, +/area/ruin/space/has_grav/listeningstation/support) +"aF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) +"aW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/closed/wall/rock, +/area/ruin/space/has_grav/listeningstation/asteroid) "be" = ( -/obj/structure/bed/maint, -/obj/item/bedsheet/syndie, -/obj/item/paper/fluff/ruins/listeningstation/reports/october, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) +/obj/effect/spawner/random/trash/food_packaging, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"bi" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/machinery/space_heater, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"bk" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/structure/table/reinforced, +/obj/item/flashlight{ + pixel_y = -5; + pixel_x = -9 + }, +/obj/machinery/firealarm/directional/east, +/obj/item/paper_bin{ + pixel_x = 9; + pixel_y = -8 + }, +/obj/item/pen{ + pixel_x = 10; + pixel_y = -7 + }, +/obj/item/stamp/chameleon{ + pixel_x = 12; + pixel_y = 7 + }, +/obj/item/reagent_containers/cup/glass/bottle/beer/almost_empty{ + desc = "Beer. In space. A faded label on it reads 'use to avoid loneliness'. Seems to have already been used."; + pixel_x = 9; + pixel_y = 22 + }, +/obj/item/taperecorder{ + pixel_y = 9; + pixel_x = -6 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/comms) "by" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/multitool{ - pixel_x = 8; - pixel_y = 3 +/obj/structure/barricade/wooden/crude, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"bH" = ( +/turf/closed/wall/rust, +/area/ruin/space/has_grav/listeningstation/lobby) +"bK" = ( +/obj/structure/fluff/minepost, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"ca" = ( +/obj/item/ammo_box/magazine/m9mm{ + pixel_x = 7; + pixel_y = 2 }, -/obj/structure/table, -/obj/item/toy/cards/deck/syndicate{ +/obj/structure/closet/syndicate, +/obj/item/clothing/under/color/black, +/obj/item/clothing/head/soft/black{ pixel_x = -5; - pixel_y = 1 + pixel_y = 9 }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"ca" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/storage/photo_album/listeningstation, -/turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"ch" = ( -/obj/structure/sign/nanotrasen{ - pixel_y = 32 +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 }, -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/cerulean, -/turf/template_noop, -/area/ruin/space) +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) +"ch" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/vacuum/external/directional/west, +/obj/structure/sign/poster/official/safety_internals/directional/east, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/lobby) "cj" = ( +/turf/closed/wall/rust, +/area/ruin/space/has_grav/listeningstation/support) +"cE" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"cq" = ( -/obj/effect/turf_decal/bot, -/obj/item/weldingtool/largetank, -/obj/item/wrench, -/obj/item/clothing/head/utility/welding, -/obj/structure/rack, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"ct" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"cU" = ( +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/support) +"cG" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, +/obj/machinery/light/small/red/directional/east, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/listeningstation/asteroid) +"db" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/smooth_half, +/area/ruin/space/has_grav/listeningstation/support) +"dg" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/door/airlock/external/glass/ruin{ + name = "Excavation Access" + }, /obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/door/airlock/centcom{ - name = "Nanotrasen Real Locked Door"; - desc = "Truly, a marvel of modern engineering." +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"db" = ( /obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cutaiwire, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"dg" = ( +/area/ruin/space/has_grav/listeningstation/lounge) +"dt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/medical) +"dW" = ( +/obj/machinery/hydroponics/soil, +/obj/machinery/hydroponics/soil, +/obj/machinery/light/small/maintenance/directional/north, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"ep" = ( +/mob/living/basic/mining/hivelord, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/support) +"eu" = ( +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/red/directional/east, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/lobby) +"eM" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/storage/medkit/regular, -/obj/item/clothing/neck/stethoscope, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/tile/blue/half/contrasted{ +/obj/structure/table_frame, +/obj/item/stack/sheet/iron, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/item/storage/bag/trash{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/storage/bag/trash{ + pixel_x = -10; + pixel_y = 6 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"eR" = ( +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/rods/ten, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/lights/bulbs, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/obj/item/stock_parts/cell/high, +/obj/structure/closet/crate, +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/item/stack/sheet/iron/fifty, +/obj/machinery/power/terminal{ dir = 4 }, -/obj/item/storage/medkit/surgery, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"eZ" = ( +/turf/closed/wall/rust, +/area/ruin/space/has_grav/listeningstation/lounge) +"fe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/duct, /turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"dv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/ruin/space/has_grav/listeningstation/lobby) +"fo" = ( +/obj/effect/baseturf_helper/asteroid/airless, +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/listeningstation/medical) +"fz" = ( +/obj/item/ammo_casing/spent, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear/listeningpost, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"gl" = ( +/obj/machinery/door/airlock/external/glass/ruin{ + name = "Excavation Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/cutaiwire, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"dC" = ( -/obj/structure/table, -/obj/item/paper/fluff/ruins/listeningstation/reports/september, -/obj/item/storage/box/donkpockets{ - pixel_x = -2; - pixel_y = 6 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = 2 +/area/ruin/space/has_grav/listeningstation/support) +"go" = ( +/turf/closed/mineral/random/stationside/asteroid/porus, +/area/ruin/space/has_grav/listeningstation/asteroid) +"gA" = ( +/obj/item/flashlight/lantern/syndicate{ + on = 1; + pixel_x = -12; + pixel_y = -10 }, -/obj/machinery/light/small/directional/south, +/obj/structure/fluff/minepost, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"gJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/freezer/empty/open, +/obj/item/food/rationpack, +/obj/item/food/rationpack, +/obj/item/food/rationpack, +/obj/item/food/rationpack, +/obj/item/food/rationpack, +/obj/item/food/rationpack, +/obj/machinery/light_switch/directional/east, /turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"dW" = ( +/area/ruin/space/has_grav/listeningstation/lounge) +"gO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Supplies Storeroom" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"hm" = ( /obj/structure/cable, +/turf/open/misc/asteroid/airless, +/area/ruin/space/has_grav/listeningstation/asteroid) +"hs" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/structure/cable, /turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"eR" = ( +/area/ruin/space/has_grav/listeningstation/lounge) +"ir" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/closet/secure_closet/medical1{ + req_access = list("syndicate") + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/directional/north, +/obj/item/paper/fluff/ruins/listeningstation/reports/october, +/obj/item/cane/white, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/medical) +"iv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"eW" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/bottle/beer/almost_empty{ - name = "Use To Avert Loneliness"; - desc = "It's been used..."; - pixel_x = 8 +/area/ruin/space/has_grav/listeningstation/support) +"iE" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/door/airlock/external/glass/ruin{ + name = "Excavation Access" }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -6 +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cutaiwire, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"fG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall/r_wall, -/area/ruin/space/has_grav/listeningstation) -"gc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/area/ruin/space/has_grav/listeningstation/lounge) +"iN" = ( /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"gl" = ( -/obj/effect/spawner/random/trash/mess, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/listeningstation) -"gJ" = ( -/obj/structure/table/wood, -/obj/item/seeds/potato, -/obj/item/ammo_box/magazine/m9mm, -/obj/item/seeds/cannabis, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/listeningstation) -"hk" = ( -/obj/structure/bookcase/random, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/listeningstation) -"hm" = ( -/obj/item/toy/waterballoon{ - name = "Donk Corporation's Emergency Air Supply Balloon"; - desc = "The efficacy of this product is doubted." - }, -/turf/open/misc/asteroid/airless, -/area/ruin/space) +/area/ruin/space/has_grav/listeningstation/lobby) "iU" = ( -/obj/structure/toilet{ - pixel_y = 18 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/soap/syndie, -/obj/structure/sign/poster/contraband/gorlex_recruitment/directional/west, -/obj/machinery/light/very_dim/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/ruin/space/has_grav/listeningstation) -"jr" = ( -/obj/machinery/power/port_gen/pacman{ - anchored = 1 +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/comms/space{ + dir = 8 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"kG" = ( -/obj/machinery/atmospherics/components/unary/passive_vent/layer2{ - desc = "Doesn't seem to be connected to anything." +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/east, +/turf/open/floor/circuit/red/anim, +/area/ruin/space/has_grav/listeningstation/dorms) +"jq" = ( +/obj/machinery/power/smes{ + charge = 5e+006 }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"kK" = ( -/obj/machinery/atmospherics/components/tank/air, -/obj/effect/turf_decal/bot, /obj/structure/cable, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"lk" = ( -/obj/item/radio/intercom/directional/east{ - freerange = 1 +/area/ruin/space/has_grav/listeningstation/support) +"jr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/machinery/computer/camera_advanced{ +/obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/structure/cable, +/obj/structure/sign/poster/contraband/syndicate_medical/directional/south, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/lounge) +"js" = ( +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"jD" = ( /obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"lu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/decal/cleanable/dirt, -/obj/item/toy/balloon/syndicate, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/comms) +"kt" = ( +/obj/item/storage/bag/trash/filled, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"kG" = ( +/obj/machinery/door/airlock/hatch{ + name = "Emergency Backup" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/structure/barricade/wooden/crude, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) +"kK" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/paper/fluff/ruins/listeningstation/reports/november, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) +"la" = ( +/obj/structure/table/wood, +/obj/item/toy/cards/deck/syndicate{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/machinery/light/small/directional/south, +/obj/item/pai_card{ + pixel_x = 16; + pixel_y = 2 + }, +/obj/item/paper/fluff/ruins/listeningstation/reports/september, +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) "lE" = ( -/obj/structure/sign/warning/explosives/alt/directional/north, -/obj/machinery/syndicatebomb/self_destruct{ - anchored = 1 +/mob/living/basic/mining/goliath/ancient, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"lO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/machinery/door/window/brigdoor{ - dir = 2; - req_access = list("syndicate"); - name = "Self Destruct Option" +/obj/machinery/duct, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/lobby) +"md" = ( +/obj/item/storage/medkit/surgery{ + pixel_x = 7; + pixel_y = 4 }, -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/circuit/red, -/area/ruin/space/has_grav/listeningstation) -"nG" = ( -/obj/effect/decal/cleanable/blood/drip, /obj/structure/table, -/obj/item/camera, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/pill_bottle/penacid{ + pixel_x = -9; + pixel_y = 13 + }, /turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"nX" = ( -/obj/machinery/door/airlock/centcom{ - name = "Syndicate Secure Airlock System"; - desc = "Truly, a marvel of modern engineering." +/area/ruin/space/has_grav/listeningstation/medical) +"mh" = ( +/obj/docking_port/stationary{ + height = 8; + shuttle_id = "syndicate_listening_post"; + name = "Syndicate Listening Post"; + width = 12; + dwidth = 6 }, +/turf/template_noop, +/area/template_noop) +"mm" = ( /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"oW" = ( -/obj/machinery/telecomms/relay/preset/ruskie{ - use_power = 0 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/small, +/area/ruin/space/has_grav/listeningstation/lounge) +"mN" = ( +/obj/machinery/plumbing/synthesizer{ + reagent_id = /datum/reagent/water }, -/obj/structure/cable, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"qD" = ( -/obj/machinery/door/airlock/external/ruin{ - id_tag = "syndie_listeningpost_external_interior" +/area/ruin/space/has_grav/listeningstation/support) +"nB" = ( +/obj/structure/toilet{ + pixel_y = 18 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "syndicate_comms_base" +/obj/structure/mirror/directional/east, +/obj/item/soap/syndie, +/obj/structure/sink/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, +/area/ruin/space/has_grav/listeningstation/lobby) +"nG" = ( +/obj/structure/bookcase/random, +/obj/machinery/light_switch/directional/east, +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) +"nM" = ( +/obj/item/reagent_containers/cup/bucket, +/obj/item/bodypart/arm/right/robot/surplus, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"of" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/closet/crate/freezer, +/obj/item/food/rationpack{ + pixel_x = -7; + pixel_y = 2 }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"qN" = ( -/obj/machinery/atmospherics/components/binary/valve/layer4, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"rc" = ( -/obj/machinery/power/terminal{ - dir = 4 +/obj/item/food/rationpack{ + pixel_x = -6; + pixel_y = 1 + }, +/obj/item/food/rationpack{ + pixel_x = -7; + pixel_y = 0 + }, +/obj/item/food/rationpack{ + pixel_x = -6; + pixel_y = -1 + }, +/obj/item/food/rationpack{ + pixel_x = -7; + pixel_y = -2 + }, +/obj/item/food/rationpack{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/food/rationpack{ + pixel_x = -7; + pixel_y = -4 + }, +/obj/item/food/rationpack{ + pixel_x = -6; + pixel_y = -5 + }, +/obj/item/food/rationpack{ + pixel_x = -7; + pixel_y = -6 + }, +/obj/item/food/rationpack{ + pixel_x = -6; + pixel_y = -7 + }, +/obj/item/storage/box/donkpockets/donkpocketpizza{ + pixel_x = 4; + pixel_y = -3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 5; + pixel_y = -2 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 4; + pixel_y = -1 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 5; + pixel_y = 0 + }, +/obj/item/storage/box/donkpockets/donkpocketberry{ + pixel_x = 4; + pixel_y = 1 + }, +/obj/item/storage/box/donkpockets/donkpocketberry{ + pixel_x = 5; + pixel_y = 2 + }, +/obj/item/storage/box/donkpockets/donkpocketspicy{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets/donkpocketteriyaki{ + pixel_x = 5; + pixel_y = 4 }, -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/delivery, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"rr" = ( -/obj/machinery/door/airlock{ - name = "Emergency Backup" +/area/ruin/space/has_grav/listeningstation/support) +"oh" = ( +/turf/closed/wall/r_wall/rust, +/area/ruin/space/has_grav/listeningstation/comms) +"oi" = ( +/obj/structure/chair/office{ + dir = 4 }, /obj/structure/cable, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/listeningstation) +/obj/machinery/duct, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/lobby) +"or" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"qx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/obj/structure/closet/crate/engineering, +/obj/item/circuitboard/computer/stationalert, +/obj/item/circuitboard/computer/powermonitor{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/airlock_painter/decal, +/obj/item/airlock_painter/decal/tile{ + pixel_x = -1; + pixel_y = -3 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/support) +"qD" = ( +/obj/machinery/door/window/brigdoor{ + dir = 8; + req_access = list("syndicate"); + name = "Emergency Self Destruct Access" + }, +/obj/structure/sign/warning/explosives/alt/directional/east, +/obj/machinery/syndicatebomb/self_destruct{ + anchored = 1 + }, +/turf/open/floor/circuit/red/anim, +/area/ruin/space/has_grav/listeningstation/lounge) +"qV" = ( +/obj/machinery/firealarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/microwave, +/obj/item/storage/backpack/satchel/flat/listening_post_secret_stash, +/turf/open/floor/iron/small, +/area/ruin/space/has_grav/listeningstation/lounge) +"rx" = ( +/obj/structure/sign/nanotrasen{ + pixel_y = 32 + }, +/turf/template_noop, +/area/template_noop) "rE" = ( -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/ruin/space) +/turf/closed/wall/r_wall/rust, +/area/ruin/space/has_grav/listeningstation/support) +"rF" = ( +/obj/effect/baseturf_helper/asteroid/airless, +/turf/closed/wall, +/area/ruin/space/has_grav/listeningstation/lobby) "rG" = ( /turf/closed/wall, -/area/ruin/space/has_grav/listeningstation) -"ta" = ( -/obj/structure/sign/poster/contraband/random/directional/west, -/obj/item/kirbyplants/random, +/area/ruin/space/has_grav/listeningstation/lobby) +"rT" = ( /obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"tf" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"tl" = ( -/obj/structure/marker_beacon/cerulean, -/turf/open/floor/plating/airless, -/area/ruin/space) -"us" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/cell/high{ + pixel_x = -3; + pixel_y = 0 + }, +/obj/machinery/cell_charger{ + pixel_x = -2; + pixel_y = 0 + }, /obj/machinery/airalarm/directional/west, /obj/effect/mapping_helpers/airalarm/syndicate_access, -/obj/structure/closet/crate/secure/freezer/commsagent, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"vC" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/trash/cigbutt, -/turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"vI" = ( -/turf/closed/mineral/random, -/area/ruin/space) -"vP" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/medical1{ - req_access = list("syndicate") +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/comms) +"sl" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Life Support" }, -/obj/item/paper/fluff/ruins/listeningstation/reports/september, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "listening_post_atmos_and_relay" + }, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"tl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"wj" = ( -/obj/structure/table/wood, -/obj/item/paper/fluff/ruins/listeningstation/reports/november, -/obj/item/crowbar/red, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, /turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/listeningstation) -"wk" = ( +/area/ruin/space/has_grav/listeningstation/dorms) +"tr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/duct, /obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"wm" = ( +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/lounge) +"us" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/medical/glass{ + name = "Infirmary" + }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"wx" = ( +/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/medical) +"uJ" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/reagent_containers/cup/bowl, +/obj/effect/turf_decal/stripes/line, +/obj/structure/closet/emcloset/anchored, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"wy" = ( -/obj/structure/marker_beacon/cerulean, -/obj/structure/sign/nanotrasen{ - pixel_y = 32 - }, -/obj/structure/sign/nanotrasen{ - pixel_x = 32 - }, -/turf/open/floor/plating/airless, -/area/ruin/space) -"xh" = ( -/obj/machinery/computer/records/medical/syndie{ - dir = 2; - req_access = list("syndicate") - }, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"xn" = ( +/area/ruin/space/has_grav/listeningstation/support) +"uV" = ( +/obj/item/assembly/prox_sensor, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"vm" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/turf_decal/tile/blue, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"xp" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/libraryconsole/bookmanagement, +/area/ruin/space/has_grav/listeningstation/lobby) +"vC" = ( +/mob/living/basic/mining/hivelord, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"vH" = ( +/obj/item/mining_scanner, +/obj/item/ammo_casing/spent, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"vI" = ( /obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/computer/message_monitor{ + dir = 8 + }, +/obj/structure/sign/calendar/directional/east, +/obj/item/paper/monitorkey, /turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"xY" = ( -/obj/structure/sink/directional/west, -/obj/machinery/shower/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/structure/mirror/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/ruin/space/has_grav/listeningstation) -"ym" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"yx" = ( -/obj/structure/cable, -/obj/structure/chair/office{ - dir = 4 +/area/ruin/space/has_grav/listeningstation/comms) +"vP" = ( +/obj/item/radio/intercom/directional/north{ + freerange = 1; + syndie = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/camera_advanced/syndie, +/obj/machinery/digital_clock/directional/east, /turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"yB" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/pen/red, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"yH" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/mapping_helpers/apc/syndicate_access, -/obj/structure/cable, +/area/ruin/space/has_grav/listeningstation/comms) +"wf" = ( +/obj/machinery/duct, +/obj/machinery/atmospherics/components/binary/valve/on, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/directional/west, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"yK" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"zo" = ( +/area/ruin/space/has_grav/listeningstation/support) +"wk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"wx" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + name = "Cybersun Industries autolathe crate" + }, +/obj/item/circuitboard/machine/autolathe, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/manipulator, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"wA" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/delivery, +/obj/machinery/pipedispenser, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"wL" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"zp" = ( -/turf/closed/wall, -/area/ruin/space) -"zv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 6 - }, -/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/east, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"zV" = ( -/obj/structure/sign/nanotrasen{ - pixel_y = -32 +/area/ruin/space/has_grav/listeningstation/support) +"xj" = ( +/obj/machinery/atmospherics/components/unary/passive_vent/layer2{ + dir = 4 }, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/ruin/space) -"zZ" = ( +/turf/open/misc/asteroid/airless, +/area/ruin/space/has_grav/listeningstation/asteroid) +"xR" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"AP" = ( -/obj/machinery/door/airlock/external/ruin{ - id_tag = "syndie_listeningpost_external" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "syndicate_comms_base" - }, -/obj/structure/fans/tiny, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/smooth_half, +/area/ruin/space/has_grav/listeningstation/support) +"xY" = ( +/turf/open/misc/asteroid/airless, +/area/ruin/space/has_grav/listeningstation/asteroid) +"yc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/curtain, +/obj/machinery/shower/directional/north, +/obj/machinery/button/door/directional/south{ + normaldoorcontrol = 1; + pixel_x = 10; + pixel_y = -22; + id = "lpost_bathroom"; + name = "Bathroom Lock" }, +/turf/open/floor/iron/showroomfloor, +/area/ruin/space/has_grav/listeningstation/lobby) +"ym" = ( +/obj/item/pickaxe/rusted, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"yx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/apc/syndicate_access, +/turf/open/floor/iron/smooth_half, +/area/ruin/space/has_grav/listeningstation/support) +"yJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/blood/o_minus{ + pixel_x = 4; + pixel_y = 0 + }, +/obj/item/reagent_containers/blood/o_minus{ + pixel_x = -5; + pixel_y = 1 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/medical) +"yK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"zo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/paper/fluff/ruins/listeningstation/reports/june, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/lobby) +"zp" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/closet/emcloset/wall/directional/north, +/obj/item/crowbar/red, +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) +"zv" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/light/small/red/directional/south, /obj/structure/cable, +/obj/structure/sign/warning/xeno_mining/directional/north, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"AV" = ( +/area/ruin/space/has_grav/listeningstation/lounge) +"zR" = ( +/obj/structure/lattice/catwalk, +/obj/structure/marker_beacon/indigo, /turf/template_noop, /area/template_noop) -"BJ" = ( -/obj/machinery/washing_machine{ - pixel_x = 4 - }, -/obj/structure/sign/poster/contraband/random/directional/north, -/obj/structure/window/spawner/directional/west, +"zV" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, /turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"BX" = ( +/area/ruin/space/has_grav/listeningstation/lounge) +"Ad" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/bin, +/obj/effect/spawner/random/trash/food_packaging, +/obj/effect/spawner/random/trash/cigbutt, /obj/effect/decal/cleanable/ash, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"Cc" = ( -/obj/structure/table, -/obj/item/toy/figure/dsquad{ - pixel_x = -7 - }, -/obj/structure/desk_bell{ - pixel_y = -1; - pixel_x = 9 - }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/comms) +"Ag" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/item/wrench, /turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"Cw" = ( +/area/ruin/space/has_grav/listeningstation/lobby) +"Ar" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/meter/layer4, +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) +"Ay" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"CU" = ( -/obj/structure/table, +/area/ruin/space/has_grav/listeningstation/support) +"AC" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/computer/records/medical/syndie{ + dir = 4; + req_access = list("syndicate") + }, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/comms) +"AO" = ( +/obj/item/modular_computer/pda/clear, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"AP" = ( +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, /obj/item/food/chocolatebar{ - pixel_y = 8 + pixel_y = 12; + pixel_x = -3 }, /obj/item/storage/fancy/cigarettes/cigpack_syndicate{ - pixel_x = -3 + pixel_x = -7; + pixel_y = -6 }, /obj/item/lighter{ - pixel_x = 7; + pixel_x = 11; pixel_y = -3 }, +/obj/structure/table_frame, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"Dp" = ( -/obj/structure/table, -/obj/item/flashlight/lantern/syndicate{ - on = 1 +/area/ruin/space/has_grav/listeningstation/lounge) +"AV" = ( +/turf/template_noop, +/area/template_noop) +"Bk" = ( +/obj/structure/sign/nanotrasen{ + pixel_x = -32 }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"Dv" = ( -/obj/structure/table, -/obj/item/flashlight{ - pixel_y = -12 +/turf/template_noop, +/area/template_noop) +"Bs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 }, -/obj/item/storage/toolbox/syndicate, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"DC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/effect/decal/cleanable/ash, -/turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"Eb" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/item/paper/pamphlet/centcom/visitor_info, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/airalarm/syndicate_access, /turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"Ey" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/closet/emcloset/anchored, -/obj/machinery/atmospherics/pipe/layer_manifold/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"ED" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"EK" = ( -/obj/item/paper/fluff/ruins/listeningstation/reports/june, -/turf/open/misc/asteroid/airless, -/area/ruin/space) -"Fy" = ( +/area/ruin/space/has_grav/listeningstation/medical) +"BA" = ( /obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/bin, +/obj/item/storage/bag/trash, +/obj/structure/sign/poster/contraband/shipstation/directional/east, /turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"FV" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"GR" = ( -/obj/structure/closet{ - icon_door = "black"; - name = "wardrobe" - }, -/obj/item/clothing/under/color/black{ - pixel_x = -3; - pixel_y = 3 +/area/ruin/space/has_grav/listeningstation/lobby) +"BN" = ( +/obj/structure/cable, +/obj/structure/sign/warning/electric_shock/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/obj/item/clothing/under/color/black{ - pixel_x = 1; - pixel_y = -1 +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"BX" = ( +/obj/item/toy/plush/lizard_plushie/green{ + name = "Hears-It-All"; + desc = "Well, he would if the walls weren't soundproof." }, -/obj/item/clothing/head/soft/black{ - pixel_x = -3; - pixel_y = 3 +/obj/item/radio{ + pixel_x = -8; + pixel_y = -3 }, -/obj/item/clothing/head/soft/black{ - pixel_x = 1; - pixel_y = -1 +/obj/item/clothing/head/hats/hos/beret/syndicate{ + pixel_y = 8 }, -/obj/item/clothing/gloves/fingerless, -/obj/item/clothing/shoes/sneakers/black{ - pixel_x = -3; - pixel_y = 3 +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/dorms) +"Ca" = ( +/obj/structure/sign/nanotrasen{ + pixel_x = 32 }, -/obj/item/clothing/shoes/sneakers/black{ - pixel_x = 1; - pixel_y = -1 +/turf/template_noop, +/area/template_noop) +"Cc" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/door/airlock/security/old{ + name = "Radio Wing" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/listeningstation) -"It" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/stool/directional/north, -/obj/structure/sign/poster/contraband/random/directional/west, -/turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"IG" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/reagent_dispensers/plumbed{ - name = "Syndicate Ceritified Drinking Water"; - desc = "Who knew water could taste so good?" +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/comms) +"Cd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"Jj" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/cerulean, +/turf/open/floor/iron/small, +/area/ruin/space/has_grav/listeningstation/lounge) +"Ce" = ( +/obj/effect/baseturf_helper/asteroid/airless, +/turf/closed/wall, +/area/ruin/space/has_grav/listeningstation/dorms) +"Ch" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/mineral/plasma/thirty, +/obj/structure/closet/crate/engineering/electrical, +/obj/item/crowbar, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/support) +"Ck" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/firealarm/directional/east, +/obj/structure/closet/crate/bin, +/obj/item/storage/bag/trash, +/obj/machinery/light/small/red/directional/north, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/lounge) +"Cm" = ( +/obj/item/stock_parts/capacitor, +/turf/closed/mineral/random/stationside/asteroid/porus, +/area/ruin/space/has_grav/listeningstation/asteroid) +"CJ" = ( /obj/structure/sign/nanotrasen{ pixel_y = -32 }, -/turf/template_noop, -/area/ruin/space) -"JB" = ( -/turf/closed/wall/r_wall, -/area/ruin/space/has_grav/listeningstation) -"JD" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 4; - height = 5; - shuttle_id = "caravansyndicate1_listeningpost"; - name = "Syndicate Listening Post"; - width = 9 - }, +/obj/structure/lattice, /turf/template_noop, /area/template_noop) -"KG" = ( -/obj/structure/curtain, +"CR" = ( +/turf/closed/wall/r_wall/rust, +/area/ruin/space/has_grav/listeningstation/medical) +"Dv" = ( +/obj/machinery/door/airlock/external/ruin, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/showroomfloor, -/area/ruin/space/has_grav/listeningstation) -"Lq" = ( -/obj/effect/spawner/random/trash/cigbutt, +/obj/effect/mapping_helpers/airlock/cutaiwire, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"LA" = ( -/obj/item/chair/wood, -/obj/machinery/light/dim/directional/north, +/area/ruin/space/has_grav/listeningstation/lobby) +"DB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/obj/machinery/duct, +/obj/structure/cable, /turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"LR" = ( +/area/ruin/space/has_grav/listeningstation/lounge) +"DS" = ( +/obj/structure/closet/crate/solarpanel_small, +/obj/item/stack/sheet/glass/fifty, +/obj/item/storage/toolbox/electrical, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"DW" = ( +/obj/item/stack/sheet/mineral/wood{ + amount = 21 + }, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"Er" = ( +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/structure/chair/sofa/right/brown{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/machinery/firealarm/directional/south, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"LU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"Mt" = ( -/obj/structure/cable, +/area/ruin/space/has_grav/listeningstation/lobby) +"Es" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/imported, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/lobby) +"Ev" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"MS" = ( -/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/duct, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"MT" = ( -/obj/item/mining_scanner, -/obj/item/pickaxe, -/obj/item/clothing/mask/gas, -/obj/structure/rack, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"MY" = ( -/obj/machinery/door/airlock/maintenance, +/area/ruin/space/has_grav/listeningstation/lobby) +"Ey" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/obj/structure/closet/firecloset, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"EC" = ( +/obj/structure/closet/crate/secure/freezer/commsagent, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"ED" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/structure/cable, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/public/glass{ + name = "Excavation Access" + }, +/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/lounge) +"EG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/clock/directional/south, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/lobby) +"EK" = ( +/obj/structure/sign/nanotrasen{ + pixel_y = -32 + }, +/turf/open/misc/asteroid/airless, +/area/ruin/space/has_grav/listeningstation/asteroid) +"Fl" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"Ni" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table, -/obj/structure/reagent_dispensers/servingdish, -/turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"NO" = ( -/obj/machinery/power/smes{ - charge = 5e+006 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/firealarm/directional/north, +/obj/machinery/duct, +/turf/open/floor/iron/smooth_half, +/area/ruin/space/has_grav/listeningstation/support) +"Fy" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 }, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/listeningstation/asteroid) +"FK" = ( +/obj/structure/water_source/puddle, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"Gj" = ( /obj/effect/turf_decal/stripes/line{ - dir = 10 + dir = 4 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"NY" = ( -/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, -/turf/open/misc/asteroid/airless, -/area/ruin/space) -"Oh" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/away_general_access, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"Om" = ( -/obj/effect/turf_decal/bot, -/obj/structure/cable, -/obj/machinery/suit_storage_unit/open{ - name = "Empty E.V.A. Suit Storage"; - desc = "There's no suit inside." +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/comms/space/anderson{ + dir = 4 + }, +/obj/machinery/firealarm/directional/north, +/obj/structure/closet/secure_closet/wall/directional/west{ + name = "prescription medicine closet"; + req_access = list("syndicate"); + pixel_x = -26; + pixel_y = 0 + }, +/obj/item/storage/pill_bottle/painkiller{ + pixel_x = -23; + pixel_y = 9 + }, +/obj/item/storage/pill_bottle/prescription_stimulant{ + pixel_x = -30; + pixel_y = 1 }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/medical) +"Gr" = ( +/obj/effect/baseturf_helper/asteroid/airless, +/turf/closed/wall, +/area/ruin/space/has_grav/listeningstation/support) +"GR" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/suit_storage_unit/open, /obj/item/paper/fluff/ruins/listeningstation/reports/august, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"Oo" = ( -/obj/structure/cable, -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/comms/space{ - dir = 4 +/area/ruin/space/has_grav/listeningstation/support) +"Hj" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/comms) +"HD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/machinery/duct, +/obj/machinery/door/airlock/bathroom{ + name = "Restroom"; + id_tag = "lpost_bathroom" }, -/turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/listeningstation) -"OS" = ( -/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/ruin/space/has_grav/listeningstation/lobby) +"HU" = ( +/obj/structure/rack, +/obj/effect/turf_decal/stripes/line, +/obj/item/clothing/mask/gas, +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/lobby) +"Ib" = ( +/obj/item/organ/internal/eyes/robotic, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"It" = ( +/obj/structure/table, +/obj/item/paper/pamphlet/centcom/visitor_info, /obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/lobby) +"IK" = ( +/obj/machinery/door/airlock/centcom{ + name = "Outpost Bulkhead"; + desc = "Truly, a marvel of modern engineering." + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/structure/cable, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/cutaiwire, /turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"OW" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/growing/soil, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"PZ" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/turf/open/floor/plating/airless, -/area/ruin/space) -"QE" = ( -/obj/structure/barricade/wooden/crude, -/obj/structure/cable, +/area/ruin/space/has_grav/listeningstation/lobby) +"Jg" = ( +/obj/structure/filingcabinet, /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 4 + }, +/obj/item/paper/fluff/ruins/listeningstation/receipt, +/obj/item/paper/fluff/ruins/listeningstation/reports/april, +/obj/item/paper/fluff/ruins/listeningstation/reports/may, +/obj/item/paper/fluff/ruins/listeningstation/reports/march, +/obj/item/paper/fluff/ruins/listeningstation/reports/july, +/obj/machinery/door/window/brigdoor{ + dir = 4; + req_access = list("syndicate"); + name = "Secure Document Storage" + }, +/obj/item/folder/ancient_paperwork, +/obj/effect/decal/cleanable/dirt, +/obj/item/tape, +/obj/item/tape, +/obj/item/tape, +/obj/item/tape, +/obj/item/tape, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/comms) +"Jj" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/structure/chair/office{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/comms) +"JB" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/listeningstation/comms) +"JD" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"QI" = ( +/area/ruin/space/has_grav/listeningstation/support) +"JF" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/listeningstation/medical) +"JX" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "listening_post_atmos_and_relay" + }, +/obj/machinery/door/airlock/external/glass/ruin{ + name = "Telecommunications Relay" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"Kt" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"Ku" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/red/directional/south, -/obj/structure/closet/secure_closet/freezer/empty/open, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"RB" = ( -/obj/structure/closet/crate/bin, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"RK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/area/ruin/space/has_grav/listeningstation/support) +"Lk" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/light/warm/directional/south, /turf/open/floor/iron/grimy, -/area/ruin/space/has_grav/listeningstation) -"RP" = ( -/obj/structure/table, -/obj/machinery/microwave, -/obj/item/storage/backpack/satchel/flat/listening_post_secret_stash, -/turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"Sx" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ +/area/ruin/space/has_grav/listeningstation/dorms) +"Lq" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/door/airlock/security/old{ + name = "Radio Wing" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"Sz" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/lounge) +"LA" = ( +/obj/item/ammo_casing/spent, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"LJ" = ( +/turf/open/floor/circuit/red/anim, +/area/ruin/space/has_grav/listeningstation/support) +"LP" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/listeningstation/support) +"LR" = ( +/obj/item/cultivator/rake, +/obj/structure/cable, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"LU" = ( +/obj/machinery/door/airlock/hatch{ + name = "Dormitory Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"SB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"SK" = ( -/obj/structure/table, -/obj/item/paper/fluff/ruins/listeningstation/briefing, -/obj/machinery/newscaster/directional/east, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) +"My" = ( /obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"SQ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/cerulean, -/obj/structure/sign/nanotrasen{ - pixel_x = -32 +/area/ruin/space/has_grav/listeningstation/comms) +"ME" = ( +/turf/closed/wall, +/area/ruin/space/has_grav/listeningstation/lounge) +"MS" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/blue{ + dir = 1 }, -/turf/template_noop, -/area/ruin/space) -"TK" = ( -/obj/machinery/firealarm/directional/east, -/obj/structure/filingcabinet, -/obj/item/paper/fluff/ruins/listeningstation/receipt, -/obj/item/paper/fluff/ruins/listeningstation/reports/may, -/obj/item/paper/fluff/ruins/listeningstation/reports/april, -/obj/item/paper/fluff/ruins/listeningstation/reports/march, -/obj/item/paper/fluff/ruins/listeningstation/reports/july, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"TO" = ( -/obj/structure/cable, -/obj/structure/chair/sofa/left/brown{ - dir = 4 +/obj/item/toy/figure/dsquad{ + pixel_x = -7 + }, +/obj/structure/desk_bell{ + pixel_y = -1; + pixel_x = 9 }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"Uh" = ( -/obj/effect/turf_decal/bot_red, -/obj/structure/tank_frame, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"Uu" = ( -/obj/structure/sign/warning/vacuum/external/directional/west, -/obj/machinery/light/red/directional/east, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"UI" = ( -/obj/structure/cable, /turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"Va" = ( +/area/ruin/space/has_grav/listeningstation/lobby) +"MT" = ( +/obj/machinery/door/airlock/external/ruin, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"Vz" = ( -/obj/machinery/computer/arcade/orion_trail, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/cutaiwire, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"VB" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/components/unary/passive_vent/layer2{ - dir = 8 +/area/ruin/space/has_grav/listeningstation/lobby) +"MV" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/engineering{ + name = "Support Facilities" }, -/turf/template_noop, -/area/ruin/space) -"VH" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen/edagger, -/obj/item/reagent_containers/cup/glass/waterbottle{ - pixel_x = 10; - pixel_y = 16 +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"VK" = ( +/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/iron/smooth_half, +/area/ruin/space/has_grav/listeningstation/support) +"MY" = ( +/obj/machinery/modular_computer/preset/civilian, /obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/blood/o_minus, -/obj/item/reagent_containers/blood/o_minus{ - pixel_x = -3; - pixel_y = 3 +/obj/structure/sign/poster/official/nanotrasen_logo/directional/north, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/lobby) +"Ni" = ( +/obj/machinery/door/airlock/external/glass/ruin{ + name = "Excavation Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"NI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/washing_machine, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"NL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"NO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/sovietsoda, +/obj/structure/cable, /turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"WD" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = 10 +/area/ruin/space/has_grav/listeningstation/lobby) +"NR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/obj/machinery/duct, +/turf/open/floor/iron/smooth_half, +/area/ruin/space/has_grav/listeningstation/support) +"NY" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/listeningstation/asteroid) +"NZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 }, -/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/obj/structure/cable, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/medical) +"Om" = ( +/obj/machinery/atmospherics/components/tank/air, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"Oo" = ( +/obj/structure/closet/syndicate, +/obj/machinery/firealarm/directional/west, +/obj/item/ammo_box/magazine/m9mm, +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) +"OG" = ( +/obj/structure/tank_frame, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"OO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/hatch{ + name = "Laundry" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"OQ" = ( +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sign/warning/no_smoking/circle/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"OT" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/listeningstation/lounge) +"OW" = ( +/obj/structure/bed{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/bedsheet/syndie{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) +"OX" = ( +/obj/machinery/duct, +/obj/machinery/atmospherics/components/binary/valve/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"Po" = ( +/turf/closed/wall, +/area/ruin/space/has_grav/listeningstation/dorms) +"Pz" = ( +/turf/closed/wall, +/area/ruin/space/has_grav/listeningstation/support) +"PC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sink/kitchen/directional/south, +/obj/structure/cable, +/obj/item/stack/tile/iron/small{ + pixel_x = 7; + pixel_y = -3 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/lounge) +"PJ" = ( /obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"WW" = ( +/area/ruin/space/has_grav/listeningstation/comms) +"Qv" = ( +/obj/machinery/power/port_gen/pacman/pre_loaded, +/obj/structure/cable, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"QA" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/turf/open/misc/asteroid/airless, +/area/ruin/space/has_grav/listeningstation/asteroid) +"QI" = ( +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"QW" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/lobby) +"RG" = ( +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"RK" = ( +/obj/item/shovel, +/obj/structure/cable, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"RP" = ( +/obj/effect/spawner/random/trash/cigbutt, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"Sk" = ( /obj/effect/baseturf_helper/asteroid/airless, /turf/closed/wall/r_wall, -/area/ruin/space/has_grav/listeningstation) -"XM" = ( -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/obj/machinery/computer/message_monitor{ - dir = 8 +/area/ruin/space/has_grav/listeningstation/lounge) +"Sx" = ( +/obj/item/poster/random_contraband{ + pixel_x = -4; + pixel_y = -7 }, -/obj/item/paper/monitorkey, +/obj/item/poster/random_contraband{ + pixel_x = 0; + pixel_y = 0 + }, +/obj/item/poster/random_contraband{ + pixel_x = -4; + pixel_y = -6 + }, +/obj/item/poster/random_contraband{ + pixel_x = -3; + pixel_y = -4 + }, +/obj/item/poster/random_contraband{ + pixel_x = -4; + pixel_y = -5 + }, +/obj/structure/closet/crate, +/obj/item/wirecutters{ + pixel_x = -1; + pixel_y = 7 + }, +/obj/item/poster/random_official{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/poster/random_official{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/poster/random_official{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/poster/random_official{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/item/poster/random_official{ + pixel_x = -6; + pixel_y = 0 + }, +/obj/item/poster/random_official{ + pixel_x = -8; + pixel_y = -2 + }, +/obj/item/poster/random_contraband, +/obj/item/poster/random_contraband{ + pixel_x = -1; + pixel_y = -2 + }, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"Sz" = ( +/obj/item/reagent_containers/cup/bucket/wooden, +/obj/machinery/hydroponics/soil, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"SB" = ( +/obj/item/paper/fluff/ruins/listeningstation/reports/june/goliath, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"SI" = ( +/obj/effect/turf_decal/sand/plating, +/obj/item/circuitboard/machine/ore_redemption{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/structure/closet/crate/secure/plasma{ + req_access = list("syndicate"); + name = "refinery crate" + }, +/obj/item/assembly/igniter{ + pixel_x = 9; + pixel_y = 3 + }, +/obj/item/card/id/advanced/mining{ + pixel_x = 0; + pixel_y = -6 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"Th" = ( /obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/light/small/directional/east, +/obj/structure/table/reinforced, +/obj/machinery/fax{ + syndicate_network = 1; + visible_to_network = 0; + name = "listening post fax machine"; + fax_name = "Syndicate Listening Post" + }, +/obj/item/paper/fluff/ruins/listeningstation/briefing, +/obj/item/paper/fluff/ruins/listeningstation/engineer, /turf/open/floor/iron/dark, -/area/ruin/space/has_grav/listeningstation) -"XQ" = ( -/obj/structure/sign/departments/medbay/alt/directional/north, +/area/ruin/space/has_grav/listeningstation/comms) +"Tq" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/red/directional/east, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/ruin/space/has_grav/listeningstation/lobby) +"TF" = ( +/obj/item/circuitboard/machine/holopad, +/turf/open/misc/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"TK" = ( +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/machinery/iv_drip, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/ruin/space/has_grav/listeningstation) -"Yf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/obj/item/stack/sheet/iron, +/obj/item/stack/tile/iron/small{ + pixel_x = -16; + pixel_y = 10 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/lounge) +"TO" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/asteroid) +"Up" = ( +/obj/structure/reagent_dispensers/plumbed{ + name = "Syndicate Ceritified Drinking Water"; + desc = "Who knew water could taste so good?" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"Uw" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/comms) +"UI" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/east, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/lobby) +"Va" = ( +/obj/structure/table, +/obj/item/storage/box/donkpockets{ + pixel_x = 4; + pixel_y = -1 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 5; + pixel_y = -8 + }, +/obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 + dir = 1 }, -/turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) -"Yz" = ( -/turf/open/floor/plating/airless, -/area/ruin/space) -"YV" = ( -/obj/item/stack/sheet/iron/twenty, -/obj/item/stack/sheet/glass{ - amount = 10 +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -9; + pixel_y = 2 }, -/obj/item/stack/rods/ten, +/turf/open/floor/iron/small, +/area/ruin/space/has_grav/listeningstation/lounge) +"Vg" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/asteroid) +"Vh" = ( +/turf/closed/wall, +/area/ruin/space/has_grav/listeningstation/medical) +"VK" = ( +/turf/closed/mineral/random/stationside/asteroid, +/area/ruin/space/has_grav/listeningstation/asteroid) +"WD" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/item/storage/box/lights/bulbs, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/lobby) +"WG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/lobby) +"WW" = ( +/obj/effect/baseturf_helper/asteroid/airless, +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/listeningstation/comms) +"Xc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bedsheetbin, +/obj/structure/table, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"Xs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Utilities" }, -/obj/item/stock_parts/cell/high, -/obj/machinery/light/small/directional/east, -/obj/structure/closet/crate, -/obj/effect/turf_decal/delivery, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/firedoor, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/iron/smooth_half, +/area/ruin/space/has_grav/listeningstation/support) +"XB" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Life Support" + }, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/layer_manifold/visible, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "listening_post_atmos_and_relay" + }, +/obj/effect/mapping_helpers/airlock/cutaiwire, /turf/open/floor/plating, -/area/ruin/space/has_grav/listeningstation) -"Zj" = ( -/obj/structure/cable, -/obj/machinery/firealarm/directional/north, +/area/ruin/space/has_grav/listeningstation/support) +"XC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/north, +/obj/effect/mapping_helpers/airalarm/syndicate_access, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/structure/cable, /turf/open/floor/iron/small, -/area/ruin/space/has_grav/listeningstation) - -(1,1,1) = {" +/area/ruin/space/has_grav/listeningstation/lounge) +"XG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_y = 3; + pixel_x = 8 + }, +/obj/item/pen{ + pixel_y = 3; + pixel_x = 8 + }, +/obj/item/taperecorder{ + pixel_y = 4; + pixel_x = -8 + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/listeningstation/support) +"XM" = ( +/turf/closed/wall/rock, +/area/ruin/space/has_grav/listeningstation/asteroid) +"XQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/lobby) +"Yb" = ( +/turf/closed/wall, +/area/ruin/space/has_grav/listeningstation/asteroid) +"Yf" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/machinery/duct, +/turf/open/floor/iron/small, +/area/ruin/space/has_grav/listeningstation/lounge) +"Ym" = ( +/obj/item/weldingtool/largetank, +/obj/item/wrench, +/obj/item/clothing/head/utility/welding, +/obj/structure/rack, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating, +/area/ruin/space/has_grav/listeningstation/support) +"Yy" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/listeningstation/dorms) +"Yz" = ( +/obj/structure/bed/maint, +/obj/item/bedsheet/syndie{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) +"YR" = ( +/obj/structure/table/wood, +/obj/item/storage/photo_album/listeningstation, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/syndicate_access, +/turf/open/floor/iron/grimy, +/area/ruin/space/has_grav/listeningstation/dorms) +"Zi" = ( +/obj/structure/cable, +/obj/item/crowbar, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/lobby) +"Zr" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/machinery/iv_drip, +/obj/structure/bed/medical/emergency, +/turf/open/floor/iron, +/area/ruin/space/has_grav/listeningstation/medical) + +(1,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +VK +VK +AV +AV +Ca +AV +AV +VK +VK +VK +VK +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +"} +(2,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +VK +xY +VK +VK +VK +VK +VK +VK +XM +VK +VK +VK +go +go +VK +VK +AV +AV +AV +AV +AV +AV +AV +AV +AV +AV +"} +(3,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +AV +VK +VK +xY +VK +VK +VK +go +go +go +go +go +go +go +go +go +go +VK +VK +VK +AV +AV +AV +AV +AV +AV +AV +AV +"} +(4,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +VK +VK +VK +xY +xY +xY +VK +go +go +go +go +go +go +go +rE +rE +rE +go +go +VK +VK +AV +AV +AV +AV +AV +AV +AV +"} +(5,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +VK +VK +VK +VK +VK +xY +VK +rE +rE +rE +rE +rE +go +rE +rE +wA +rE +LP +go +go +VK +VK +AV +AV +AV +AV +AV +AV +"} +(6,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +VK +VK +VK +xj +xY +xY +xY +VK +rE +mN +js +OG +rE +rE +rE +Ym +NL +Qv +LP +go +go +go +VK +AV +AV +AV +AV +AV +AV +"} +(7,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +VK +VK +VK +aW +VK +VK +VK +VK +rE +Up +js +OX +sl +wf +XB +js +or +eR +rE +go +go +go +VK +AV +AV +AV +AV +AV +AV +"} +(8,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +VK +go +yK +yK +go +go +go +rE +rE +Om +iv +cj +JX +cj +OQ +BN +jq +rE +go +go +go +VK +AV +AV +AV +AV +AV +AV +"} +(9,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +VK +go +go +yK +go +go +go +go +rE +rE +rE +rE +LJ +cj +RG +cj +cj +rE +rE +rE +go +VK +VK +AV +AV +AV +AV +AV +"} +(10,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +VK +go +go +yK +go +go +go +go +Sx +go +go +rE +au +cj +Xs +cj +of +qx +Ch +rE +go +go +VK +AV +AV +AV +AV +AV +"} +(11,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +VK +VK +go +yK +yK +yK +yK +yK +yK +QI +go +LP +cj +cj +xR +gO +cE +wL +XG +rE +go +go +VK +AV AV AV AV AV +"} +(12,1,1) = {" AV AV AV @@ -1014,22 +2361,73 @@ AV AV AV AV +VK +go +go +go +go +Yb +gA +yK +Vg +Vg +Ni +Ku +gl +yx +Pz +Pz +cj +rE +rE +go +go +VK +VK AV AV AV AV +"} +(13,1,1) = {" AV AV AV AV AV AV -"} -(2,1,1) = {" +AV +AV +AV +VK +go +go +go +Yy +Yy +Yy +Yy +Yy +Yy +LP +GR +cj +NR +Pz +NI +Ay +rE +DS +go +go +go +VK AV AV AV AV +"} +(14,1,1) = {" AV AV AV @@ -1037,570 +2435,768 @@ AV AV AV AV +AV +VK +VK +go +go +go +Yy +kK +OW +Po +Oo +Yz +cj +cj +Pz +Fl +OO JD +wk +rE +QI +go +go +go +VK +VK +AV +AV +AV +"} +(15,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +VK +go +go +go +go +Yy +zp +Ar +kG +tl +tl +la +Pz +uJ +db +Pz +eM +Xc +LP +go +go +go +go +VK +AV +AV +AV +AV +"} +(16,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +VK +go +go +go +go +Yy +Lk +ca +Po +nG +aF +YR +Pz +Ey +xR +Pz +Pz +Pz +LP +go +go +go +go +VK +AV +AV +AV +AV +"} +(17,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +VK +go +go +JB +JB +Yy +iU +Po +Po +Po +LU +Po +Pz +Pz +xR +Kt +SI +ep +CR +CR +CR +CR +go +VK +AV +AV +AV +AV +"} +(18,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +VK +go +JB +JB +Jg +Ce +Po +Po +BX +ME +PC +Va +qV +Pz +MV +Gr +ME +eZ +CR +Gj +yJ +CR +go +VK +AV +AV +AV +AV +"} +(19,1,1) = {" +AV +AV +AV AV AV AV AV AV +VK +JB +JB +AC +Hj +Ad +rT +Po +Po +ME +XC +hs +hs +Yf +mm +ED +DB +tr +us +NZ +Bs +JF +go +VK +VK +AV +AV +AV +"} +(20,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +VK +JB +vP +Jj +jD +PJ +My +Cc +Uw +Lq +zV +gJ +AP +TK +Cd +ME +Ck +jr +Vh +ir +dt +JF +go +go +XM +rx +AV +AV +"} +(21,1,1) = {" +AV +AV +AV +AV +AV +AV +zR +CJ +XM +JB +JB +vI +Th +bk +ac +JB +JB +OT +qD +OT +OT +IK +OT +OT +OT +iE +JF +md +Zr +JF +go +go +VK +AV +AV +AV +"} +(22,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +AV +VK +go +WW +JB +JB +JB +oh +oh +yc +Sk +OT +OT +MY +oi +Er +rG +rF +zv +fo +JF +JF +CR +go +go +VK +VK +AV +AV +"} +(23,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +XM +VK +VK +VK +VK +VK +VK +bH +nB +Tq +HD +Ev +lO +MS +It +iN +zo +rG +dg +ME +bi +kt +go +go +QI +go +VK +AV +AV +"} +(24,1,1) = {" +AV +AV +AV +AV +AV +AV +AV +QA +xY +xY +NY +NY +hm +VK +rG +rG +rG +rG +HU +fe +WG +Zi +QW +NO +XQ +TO +LR +RK +FK +go +QI +AO +go +VK AV AV +"} +(25,1,1) = {" AV AV AV AV -"} -(3,1,1) = {" AV AV +mh +Fy +NY +NY +NY +xY +NY +cG +MT +eu +ch +Dv +WD +UI +Ag +vm +EG +rG +rG +dW +QI +Sz +go +go +go +go +go +VK AV AV +"} +(26,1,1) = {" AV -vI -vI -vI -vI -zp -wy -rE -ap -zp -vI AV AV AV AV AV AV +QA +xY +xY +xY +xY +EK +XM +rG +rG +rG +rG +rG +rG +Es +BA +rG +rG +go +go +QI +ae +go +go +go +go +go +VK AV AV "} -(4,1,1) = {" +(27,1,1) = {" +AV AV AV AV AV -vI -vI -vI -vI -vI -zp -zp -rE -zp -zp -vI -vI -vI -vI -vI AV AV +XM +VK +VK +xY +xY +go +go +go +go +go +go +go +rG +rG +rG +rG +go +go +bK +QI +go +go +DW +go +go +go +VK AV AV "} -(5,1,1) = {" +(28,1,1) = {" AV AV AV AV -vI -vI -vI -vI -vI -vI -Yz -rE -vI -vI -vI -vI -vI -vI -vI -vI -vI AV AV -"} -(6,1,1) = {" AV AV +VK +VK +go +go +go +go +go +go +go +go +bK +ym +fz +QI +LA +by +QI +QI +RP +QI +kt +be +go +go +VK +VK AV AV +"} +(29,1,1) = {" AV -vI -vI -vI -vI -vI -tl -rE -vI -vI -vI -JB -JB -JB -JB -JB -vI AV AV -"} -(7,1,1) = {" AV AV AV +zR +CJ +XM +VK +go +go +QI +vC +QI +go +go +go +QI +lE +SB +vH +QI +go +go +Cm +go +go +go +go +go +VK +VK AV -vI -vI -vI -vI -vI -vI -vI -rE -rE -zp -vI -JB -gJ -wj -Oo -JB -vI AV AV "} -(8,1,1) = {" -AV +(30,1,1) = {" AV AV AV -vI -vI -vI -vI -vI -vI -vI -Yz -rE -PZ -vI -JB -GR -gl -RK -JB -zp -ch AV -"} -(9,1,1) = {" AV AV AV -vI -vI -JB -JB -JB -JB -JB -vI -Yz -rE -tl -vI -JB -hk -oW -rr -JB -vI AV AV -"} -(10,1,1) = {" +VK +VK +go +go +wx +QI +go +go +go +go +QI +LA +QI +go +go +go +TF +EC +Ib +go +go +VK +VK AV AV -vI -vI -vI -JB -Fy -Dp -OW -JB -vI -Yz -zV -zp -vI -JB -rG -rG -QE -JB -vI AV AV "} -(11,1,1) = {" -AV -AV -vI -vI -vI -JB -LA -Cc -yK -JB -JB -JB -AP -WW -vI -JB -VK -vP -OS -JB -vI +(31,1,1) = {" AV AV -"} -(12,1,1) = {" AV AV -vI -vI -vI -JB -ac -yB -zZ -UI -qD -Uu -aR -JB -vI -JB -XQ -zo -ym -JB -vI AV AV -"} -(13,1,1) = {" AV AV -vI -vI -vI -JB -Oh -Eb -xn -kG -JB -JB -JB -JB -JB -JB -dg -aP +AV +AV +VK +go +go +go +go +go +nM +go +go +go +go +go +go +go +go vC -JB -vI +QI +go +go +VK +VK AV AV -"} -(14,1,1) = {" AV AV -vI -vI -vI -JB -ae -UI -UI -nG -JB -lE -MS -It -us -by -cj -db -Sz -JB -vI -vI AV "} -(15,1,1) = {" +(32,1,1) = {" AV -Jj -zp -NY -hm -JB -JB -cU -JB -JB -JB -JB -eW -eR -eR -cj -dv -TO -LR -JB -vI -vI AV -"} -(16,1,1) = {" AV AV -vI -EK -vI -JB -MT -ED -ta -Dv -WD -rG -RB -SB -FV -ca -BX -dW -QI -JB -vI -vI AV -"} -(17,1,1) = {" AV AV -vI -vI -vI -JB -xh -Va -yx -LU -Mt -nX -Sx -vC -ym -tf -ym -ym -Ni -JB -vI -vI AV -"} -(18,1,1) = {" AV AV -vI -vI -vI -JB -xp -SK -lk +VK XM -TK -rG -Zj -wm -Sz -VH -FV -DC -CU -JB -vI -vI +VK +VK +VK +go +QI +uV +go +go +go +go +VK +VK +VK +go +VK +VK +VK +VK +AV +AV AV -"} -(19,1,1) = {" AV AV -vI -vI -vI -JB -rG -rG -rG -rG -rG -rG -MY -Vz -Yf -wx -lu -db -RP -JB -vI -vI AV "} -(20,1,1) = {" +(33,1,1) = {" AV AV -vI -vI -vI -JB -be -zv -qN -ct -SB -Cw -wk -rG -BJ -Lq -wm -yH -dC -JB -vI AV AV -"} -(21,1,1) = {" AV AV -vI -vI -vI -JB -JB -Uh -rc -jr -cq -Ey -gc -rG -rG -rG -KG -JB -JB -JB -vI AV AV -"} -(22,1,1) = {" AV AV -vI -vI -vI -vI -JB -JB -NO -Om -kK -YV -IG -rG -iU -KG -xY -JB -vI -vI -vI +AV +Bk +AV +AV +VK +VK +VK +VK +VK +VK +VK +VK +VK +XM +VK +VK +VK +AV +AV AV AV -"} -(23,1,1) = {" AV AV AV -vI -vI -vI -vI -JB -JB -JB -JB -JB -fG -JB -JB -JB -JB -JB -vI -vI -vI AV AV "} -(24,1,1) = {" +(34,1,1) = {" +AV +AV +AV AV AV AV AV -vI -vI -vI -vI -vI -vI -vI -zp -VB -vI -vI -vI -vI -vI -vI -vI -vI AV AV -"} -(25,1,1) = {" AV AV AV @@ -1609,10 +3205,14 @@ AV AV AV AV +VK +VK +AV +AV AV AV +Bk AV -SQ AV AV AV diff --git a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm index 2ae4fecf5f00..33a7afc85c2e 100644 --- a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm @@ -81,6 +81,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/ruin/space/ks13/science/genetics) +"aE" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/chapel{ + dir = 1 + }, +/area/ruin/space/ks13/service/chapel) "aH" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/grille/broken, @@ -267,6 +274,10 @@ }, /turf/open/floor/plating/airless, /area/ruin/space/ks13/security/sec) +"cG" = ( +/obj/structure/window/spawner/directional/south, +/turf/open/floor/plating, +/area/ruin/space/ks13/security/court) "cI" = ( /obj/structure/table_frame, /turf/open/floor/plating/airless, @@ -592,14 +603,6 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating/airless, /area/ruin/space/ks13/engineering/grav_gen) -"gy" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/structure/window/spawner/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/ruin/space/ks13/security/court) "gB" = ( /obj/effect/spawner/structure/window/hollow/reinforced/end{ dir = 4 @@ -649,6 +652,14 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating/airless, /area/ruin/space/ks13/engineering/singulo) +"hH" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/chapel{ + dir = 1 + }, +/area/ruin/space/ks13/service/chapel) "hK" = ( /turf/open/floor/plating/airless, /area/ruin/space/ks13/engineering/aft_solars_control) @@ -960,6 +971,14 @@ /obj/structure/cable, /turf/open/floor/iron/airless, /area/ruin/space/ks13/hallway/central) +"lP" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/window/spawner/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/ruin/space/ks13/security/court) "lR" = ( /obj/structure/lattice, /obj/structure/frame/computer{ @@ -1148,13 +1167,6 @@ "od" = ( /turf/closed/wall/r_wall, /area/ruin/space/ks13/hallway/aft) -"oj" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/ruin/space/ks13/service/chapel) "om" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mob_spawn/corpse/human, @@ -1194,14 +1206,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/airless, /area/ruin/space/ks13/hallway/aft) -"oC" = ( -/obj/structure/table/wood, -/obj/item/storage/book/bible, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/obj/structure/cable, -/turf/open/floor/wood, -/area/ruin/space/ks13/service/chapel_office) "oD" = ( /obj/item/stock_parts/manipulator, /obj/item/stock_parts/scanning_module{ @@ -1814,14 +1818,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/airless, /area/ruin/space/ks13/hallway/aft) -"rH" = ( -/obj/structure/window/spawner/directional/south, -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/space/ks13/security/court) "rI" = ( /obj/structure/table_frame/wood, /obj/item/clothing/head/helmet/chaplain{ @@ -2122,11 +2118,6 @@ /obj/structure/cable, /turf/open/floor/plating/airless, /area/ruin/space/ks13/engineering/singulo) -"sT" = ( -/obj/structure/window/spawner/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/space/ks13/security/court) "sU" = ( /turf/closed/wall/r_wall, /area/ruin/space/ks13/engineering/singulo) @@ -2811,6 +2802,14 @@ /obj/item/stack/sheet/iron/fifty, /turf/open/floor/iron/airless, /area/ruin/space/ks13/ai/vault) +"wY" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/ruin/space/ks13/security/court) "wZ" = ( /obj/effect/mob_spawn/corpse/human/scientist, /turf/template_noop, @@ -2904,10 +2903,6 @@ /obj/effect/spawner/structure/window/hollow/reinforced/middle, /turf/open/floor/plating/airless, /area/ruin/space/ks13/medical/medbay) -"xy" = ( -/obj/structure/window/spawner/directional/south, -/turf/open/floor/plating, -/area/ruin/space/ks13/security/court) "xA" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/effect/mapping_helpers/apc/no_charge, @@ -3791,14 +3786,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, /turf/open/floor/iron/airless, /area/ruin/space/ks13/engineering/atmos) -"BH" = ( -/obj/structure/window/spawner/directional/south, -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/ruin/space/ks13/security/court) "BI" = ( /obj/effect/spawner/structure/window/hollow/reinforced/end, /turf/open/floor/plating/airless, @@ -3850,14 +3837,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/airless, /area/ruin/space/ks13/security/sec) -"BV" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/ruin/space/ks13/service/chapel) "BW" = ( /obj/effect/spawner/structure/window/hollow/end, /turf/open/floor/plating, @@ -5732,14 +5711,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/ruin/space/ks13/engineering/singulo) -"Mb" = ( -/obj/structure/table/wood, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/ruin/space/ks13/service/chapel) "Mc" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/closed/wall/r_wall, @@ -6082,6 +6053,13 @@ /obj/structure/girder/reinforced, /turf/open/floor/plating/airless, /area/ruin/space/ks13/science/rnd) +"NU" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/chapel{ + dir = 4 + }, +/area/ruin/space/ks13/service/chapel) "NV" = ( /obj/effect/spawner/structure/window/hollow/reinforced/end, /turf/open/floor/plating/airless, @@ -6693,6 +6671,14 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/plating, /area/ruin/space/ks13/service/chapel_office) +"QX" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/ks13/security/court) "QY" = ( /obj/structure/grille/broken, /obj/effect/decal/cleanable/glass, @@ -6784,6 +6770,14 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating/airless, /area/ruin/space/ks13/engineering/tech_storage) +"Ru" = ( +/obj/structure/table/wood, +/obj/item/book/bible, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/obj/structure/cable, +/turf/open/floor/wood, +/area/ruin/space/ks13/service/chapel_office) "Rv" = ( /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating/airless, @@ -6893,6 +6887,11 @@ /obj/effect/spawner/structure/window/hollow/reinforced/middle, /turf/open/floor/plating/airless, /area/ruin/space/ks13/engineering/atmos) +"RZ" = ( +/obj/structure/window/spawner/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/ks13/security/court) "Sa" = ( /obj/machinery/portable_atmospherics/pump, /obj/effect/decal/cleanable/dirt, @@ -6902,6 +6901,14 @@ /obj/structure/closet/firecloset, /turf/open/floor/iron, /area/ruin/space/ks13/command/bridge_hall) +"Sd" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/chapel{ + dir = 4 + }, +/area/ruin/space/ks13/service/chapel) "Se" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/burnt_floor, @@ -8058,13 +8065,6 @@ /obj/structure/cable, /turf/open/floor/iron/airless, /area/ruin/space/ks13/science/rnd) -"Xz" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/ruin/space/ks13/service/chapel) "XA" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating/airless, @@ -8863,7 +8863,7 @@ MB rw PA JN -Mb +hH IW WA JN @@ -8976,7 +8976,7 @@ MB EQ Ok pN -Xz +NU IW xB vl @@ -9089,7 +9089,7 @@ MB rw oo zb -oj +aE IW OP LE @@ -9202,7 +9202,7 @@ sh rw Jf vl -BV +Sd je Eq vl @@ -9761,7 +9761,7 @@ rk aa MB Ky -oC +Ru kc sh rw @@ -16884,7 +16884,7 @@ Ge JT JT JT -sT +RZ oV EN uU @@ -16997,7 +16997,7 @@ gH KJ JT MO -gy +lP iU MU YL @@ -17110,7 +17110,7 @@ cJ Nv WB pv -rH +QX Yg pf YL @@ -17336,7 +17336,7 @@ JT WB NI eo -BH +wY oV Pq uU @@ -17449,7 +17449,7 @@ WB NI NI MO -gy +lP Ft NI uU @@ -17562,7 +17562,7 @@ Og WB NI WB -xy +cG Yg NI uU diff --git a/_maps/blueshift.json b/_maps/blueshift.json index 2a685910e3c0..89fc5993f3f1 100644 --- a/_maps/blueshift.json +++ b/_maps/blueshift.json @@ -3,6 +3,7 @@ "map_name": "Blueshift", "map_path": "map_files/Blueshift", "map_file": "Blueshift.dmm", + "space_ruin_levels": 2, "shuttles": { "cargo": "cargo_nova", "whiteship": "whiteship_blueshift", diff --git a/_maps/map_files/Blueshift/Blueshift.dmm b/_maps/map_files/Blueshift/Blueshift.dmm index 4135293a9b34..6e6861e7a671 100644 --- a/_maps/map_files/Blueshift/Blueshift.dmm +++ b/_maps/map_files/Blueshift/Blueshift.dmm @@ -261,15 +261,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"adw" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/machinery/computer/cargo{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/qm) "adx" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/structure/cable, @@ -994,6 +985,16 @@ /obj/structure/cable, /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/ai) +"akd" = ( +/obj/structure/aquarium, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "akf" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -1058,9 +1059,6 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"aky" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/qm) "akA" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -1846,9 +1844,6 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/maintenance/department/medical) -"asL" = ( -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/starboard/fore) "asP" = ( /obj/structure/table/glass, /obj/structure/window/reinforced/spawner/directional/south, @@ -2282,11 +2277,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/plating, /area/station/cargo/storage) -"axk" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "axm" = ( /obj/machinery/duct, /turf/open/floor/carpet/black, @@ -2661,14 +2651,6 @@ /obj/structure/chair/sofa/left/brown, /turf/open/floor/carpet, /area/station/medical/patients_rooms) -"aBl" = ( -/obj/structure/altar_of_gods, -/obj/structure/railing{ - dir = 4 - }, -/obj/item/storage/book/bible, -/turf/open/floor/carpet, -/area/station/service/chapel) "aBo" = ( /obj/effect/decal/remains/human, /turf/open/floor/material/meat, @@ -2765,6 +2747,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/service/chapel/office) +"aCe" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/stone, +/area/station/service/forge) "aCf" = ( /obj/machinery/status_display/evac/directional/east, /obj/structure/chair/stool/directional/north, @@ -4841,6 +4832,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/surgery) +"aXz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden/abandoned) "aXB" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ @@ -5703,12 +5699,6 @@ /obj/effect/mapping_helpers/airlock/access/any/security/permabrig, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"bga" = ( -/obj/structure/chair/office, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/turf/open/floor/wood, -/area/station/security/detectives_office/private_investigators_office) "bgi" = ( /turf/closed/wall, /area/station/engineering/engine_smes) @@ -6361,6 +6351,13 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) +"bmS" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet, +/area/station/service/theater/abandoned) "bmT" = ( /obj/machinery/photocopier, /obj/effect/turf_decal/bot, @@ -6921,14 +6918,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/science/research) -"bru" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "bry" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -7402,9 +7391,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/robotics) -"bwc" = ( -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/port/fore) "bwg" = ( /obj/effect/turf_decal/bot, /obj/machinery/holopad/secure, @@ -7474,7 +7460,7 @@ "bwW" = ( /obj/structure/flora/bush/jungle/b/style_2, /obj/structure/flora/bush/flowers_pp, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "bwY" = ( @@ -7792,22 +7778,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/hallway/primary/port) -"bzO" = ( -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "bzQ" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/delivery, @@ -8422,6 +8392,7 @@ /obj/machinery/newscaster/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/closet/secure_closet/blueshield, /turf/open/floor/carpet/executive, /area/station/command/heads_quarters/blueshield) "bFO" = ( @@ -8987,21 +8958,6 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron, /area/station/common/wrestling/arena) -"bLF" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/machinery/computer/security/qm{ - dir = 1 - }, -/obj/machinery/requests_console/directional/south{ - department = "Quartermaster's Office"; - name = "Quartermaster's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/qm) "bLI" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrogen_input, /turf/open/floor/engine/n2, @@ -10148,11 +10104,6 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) -"bWQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/trash/popcorn, -/turf/open/floor/plating, -/area/station/maintenance/abandon_art_studio) "bWU" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -10385,12 +10336,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/smooth, /area/station/cargo/miningdock) -"bZp" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/structure/sign/calendar/directional/north, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "bZr" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -10987,6 +10932,18 @@ "ceX" = ( /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"cfa" = ( +/obj/item/storage/backpack/blueshield, +/obj/item/storage/backpack/duffelbag/blueshield, +/obj/item/storage/backpack/satchel/blueshield, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/item/clothing/neck/mantle/bsmantle, +/obj/machinery/duct, +/obj/structure/closet/secure_closet/blueshield, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "cfb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -12038,8 +11995,9 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "cpY" = ( @@ -12306,11 +12264,6 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/iron, /area/station/maintenance/console_room) -"csR" = ( -/obj/structure/bed/double, -/obj/item/bedsheet/qm/double, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/qm) "csS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -12343,14 +12296,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/central) -"ctf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/maintenance/starboard/fore) "ctg" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 4 @@ -12620,7 +12565,8 @@ /obj/machinery/door/airlock/maintenance_hatch{ name = "Medbay Maintenance" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/plating, /area/station/maintenance/department/medical) "cuT" = ( @@ -12958,6 +12904,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/prison/workout) +"cxO" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/carpet, +/area/station/service/library/printer) "cxW" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/rack, @@ -13447,6 +13403,10 @@ dir = 1 }, /area/station/ai_monitored/security/armory) +"cBG" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/aft/upper) "cBJ" = ( /obj/structure/railing{ dir = 1 @@ -13662,6 +13622,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/security/detectives_office/private_investigators_office) +"cDG" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/obj/machinery/computer/cargo{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/quartermaster) "cDI" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 5 @@ -15347,10 +15316,6 @@ /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/engine, /area/station/science/ordnance/burnchamber) -"cSH" = ( -/obj/structure/chair/office, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "cSI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -16027,6 +15992,15 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"cZI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/starboard/fore) "cZL" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/window/brigdoor/left/directional/east{ @@ -16244,12 +16218,6 @@ /obj/structure/flora/grass/jungle/b, /turf/open/floor/grass, /area/station/service/cafeteria) -"dcg" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "dci" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -17673,11 +17641,13 @@ /turf/open/floor/grass, /area/station/service/hydroponics) "drc" = ( -/obj/structure/window/spawner/directional/north, -/obj/structure/closet/secure_closet/tac{ - req_access = list("captain") - }, +/obj/structure/rack/shelf, /obj/effect/turf_decal/delivery/red, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/head/helmet/toggleable/riot{ + pixel_y = 6 + }, +/obj/structure/window/spawner/directional/north, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/blueshield) "dri" = ( @@ -18104,6 +18074,21 @@ "dvB" = ( /turf/closed/wall/r_wall, /area/station/engineering/storage/tech) +"dvI" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/obj/machinery/computer/security/qm{ + dir = 1 + }, +/obj/machinery/requests_console/directional/south{ + department = "Quartermaster's Office"; + name = "Quartermaster's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/supplies, +/turf/open/floor/iron/dark, +/area/station/cargo/quartermaster) "dvL" = ( /obj/structure/table/wood, /obj/structure/showcase/machinery/microwave{ @@ -18398,6 +18383,16 @@ /obj/structure/liquid_barrier, /turf/open/floor/iron/white, /area/station/science/xenobiology/control) +"dzr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/obj/structure/cable, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/commons/dorms/vacantroom) "dzs" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -19051,8 +19046,9 @@ dir = 4 }, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "dGe" = ( @@ -19625,7 +19621,7 @@ "dKI" = ( /obj/structure/flora/bush/jungle/b/style_2, /obj/structure/flora/bush/flowers_pp/style_3, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "dKK" = ( @@ -19917,6 +19913,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engineering/engine_aft_port) +"dNs" = ( +/obj/machinery/duct, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "dNC" = ( /obj/effect/spawner/random/vending/colavend, /obj/effect/turf_decal/siding/thinplating_new{ @@ -20965,6 +20966,10 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"dYV" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "dZa" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes{ @@ -22880,8 +22885,7 @@ id = "Portbowmaints"; name = "Shutter control"; pixel_x = 24; - pixel_y = 0; - req_access = list("engineering","atmospherics") + pixel_y = 0 }, /turf/open/floor/iron/stairs/right, /area/station/maintenance/port/upper) @@ -22926,9 +22930,6 @@ "euE" = ( /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"euG" = ( -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "euI" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -24057,6 +24058,22 @@ dir = 4 }, /area/station/command/secure_bunker) +"eDY" = ( +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/navigate_destination, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "eDZ" = ( /obj/effect/turf_decal/stripes/end{ dir = 1 @@ -25604,6 +25621,10 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron/dark/corner, /area/station/hallway/primary/central) +"eSI" = ( +/obj/machinery/suit_storage_unit/industrial/loader, +/turf/open/floor/plating, +/area/station/cargo/storage) "eSN" = ( /turf/closed/wall, /area/station/service/bar/backroom) @@ -26027,6 +26048,9 @@ dir = 1 }, /obj/structure/sign/poster/official/carwo_magazine/directional/south, +/obj/machinery/recharger{ + pixel_y = -3 + }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/blueshield) "eWJ" = ( @@ -26730,6 +26754,11 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/surgery, /turf/open/floor/iron/white, /area/station/medical/coldroom) +"fdB" = ( +/obj/structure/bed, +/obj/item/bedsheet/qm, +/turf/open/floor/carpet, +/area/station/cargo/quartermaster) "fdD" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/trimline/blue/line{ @@ -27290,6 +27319,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"fiG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/quartermaster) "fiI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, @@ -30358,25 +30393,6 @@ "fQd" = ( /turf/closed/wall, /area/station/commons/dorms) -"fQf" = ( -/obj/machinery/button/door/directional/west{ - id = "QMdoor"; - name = "Door lock"; - normaldoorcontrol = 1; - pixel_x = -32; - pixel_y = -6; - req_access = list("qm"); - specialfunctions = 4 - }, -/obj/machinery/button/door{ - id = "qmprivacy"; - name = "Privacy Control"; - pixel_x = -32; - pixel_y = 7; - req_access = list("qm") - }, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "fQk" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -30419,15 +30435,6 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/carpet, /area/station/service/chapel) -"fQZ" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "fRf" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, @@ -31190,23 +31197,6 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/smooth, /area/station/cargo/storage) -"fYP" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/clipboard{ - pixel_y = 19 - }, -/obj/item/toy/figure/qm{ - pixel_y = 18 - }, -/obj/machinery/keycard_auth/directional/west, -/obj/machinery/light/directional/west, -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine"; - pixel_y = 3 - }, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "fYW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, @@ -32041,6 +32031,19 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/execution/education) +"gia" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/door/airlock/mining{ + name = "Deliveries" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "gib" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32098,6 +32101,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white/side, /area/station/science) +"giW" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/stairs/old, +/area/station/cargo/office) "gjd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -32497,11 +32507,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) -"gmv" = ( -/obj/machinery/duct, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/carpet, -/area/station/commons/dorms/vacantroom) "gmw" = ( /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark/corner{ @@ -32785,6 +32790,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/aft/upper) +"gpf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "gpn" = ( /obj/machinery/disposal/delivery_chute{ dir = 8 @@ -33258,6 +33268,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/station/maintenance/fore/upper) +"gtW" = ( +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "gtZ" = ( /obj/effect/turf_decal/caution/stand_clear, /obj/structure/cable, @@ -33484,6 +33498,15 @@ "gwf" = ( /turf/open/floor/plating, /area/station/hallway/secondary/construction) +"gwg" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "gwh" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/moisture_trap, @@ -34127,7 +34150,7 @@ "gBx" = ( /obj/structure/flora/bush/jungle, /obj/structure/flora/bush/flowers_yw/style_3, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "gBz" = ( @@ -34477,6 +34500,16 @@ /obj/item/toy/figure/cmo, /turf/open/floor/carpet/blue, /area/station/command/heads_quarters/cmo) +"gFQ" = ( +/obj/machinery/light/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/duct, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/cafeteria, +/area/station/commons/toilet/auxiliary) "gFS" = ( /obj/machinery/door/poddoor/shutters{ id = "evashutters4"; @@ -34520,6 +34553,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"gGm" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/door/airlock/mining{ + name = "Deliveries" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/station/cargo/quartermaster) "gGo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/side{ @@ -35146,6 +35188,11 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/commons/locker) +"gNs" = ( +/obj/structure/chair/office, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "gNv" = ( /obj/machinery/smartfridge, /turf/open/floor/iron/dark, @@ -36979,6 +37026,13 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/mess) +"hgI" = ( +/obj/structure/bed/dogbed, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "hgL" = ( /obj/structure/toilet{ dir = 1 @@ -37906,6 +37960,15 @@ /obj/effect/turf_decal/tile/green/opposingcorners, /turf/open/floor/iron/white, /area/station/medical/virology) +"hpv" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/obj/machinery/computer/piratepad_control{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/quartermaster) "hpF" = ( /obj/effect/turf_decal/tile/dark_blue/half/contrasted, /obj/machinery/power/apc/auto_name/directional/south, @@ -38193,6 +38256,14 @@ dir = 5 }, /area/station/security/prison) +"htj" = ( +/obj/item/kirbyplants/random, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "htq" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -38475,7 +38546,7 @@ "hwe" = ( /obj/structure/flora/bush/jungle/a/style_2, /obj/structure/flora/bush/flowers_yw/style_2, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "hwi" = ( @@ -40857,6 +40928,10 @@ "hTp" = ( /turf/closed/wall, /area/station/command/heads_quarters/captain) +"hTx" = ( +/obj/structure/dresser, +/turf/open/floor/carpet, +/area/station/cargo/quartermaster) "hTD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40946,6 +41021,19 @@ }, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"hUu" = ( +/obj/structure/table/wood, +/obj/structure/closet/crate/cardboard{ + pixel_y = 5 + }, +/obj/item/clothing/shoes/jackboots/timbs, +/obj/item/clothing/suit/brownfurrich/public, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "hUw" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -41912,6 +42000,25 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) +"ier" = ( +/obj/machinery/button/door/directional/west{ + id = "QMdoor"; + name = "Door lock"; + normaldoorcontrol = 1; + pixel_x = -32; + pixel_y = -6; + req_access = list("qm"); + specialfunctions = 4 + }, +/obj/machinery/button/door{ + id = "qmprivacy"; + name = "Privacy Control"; + pixel_x = -32; + pixel_y = 7; + req_access = list("qm") + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "ies" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -43952,25 +44059,20 @@ /obj/structure/railing, /turf/open/floor/iron/dark/side, /area/station/ai_monitored/command/storage/eva) +"izG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/service/electronic_marketing_den) "izM" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/cmo) -"izO" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/door/airlock/corporate{ - name = "Blueshield's Quarters" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "izS" = ( /obj/machinery/light/small/directional/west, /obj/structure/table/reinforced, @@ -45125,7 +45227,7 @@ "iMf" = ( /obj/structure/flora/bush/jungle/c/style_3, /obj/structure/flora/bush/flowers_br, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "iMj" = ( @@ -45465,6 +45567,23 @@ }, /turf/open/floor/plating, /area/station/security/interrogation) +"iQW" = ( +/obj/structure/table/wood, +/obj/item/coin/gold{ + desc = "A limited edition coin printed with a FTU cargo hauler on the tail's side and the FTU logo on the head's side.. only 500 of these were ever made as a celebration to the passing of lessened trade regulations in the frontier sector."; + name = "FTU special edition collector's coin" + }, +/obj/item/toy/figure/clown{ + desc = "Aside from the engraving on the back of this figurine it's identical to any old NT departmental action figure, yet these sell for eye watering prices on the open market."; + name = "Comedycon edition clown action figure" + }, +/obj/item/reagent_containers/cup/glass/bottle/wine{ + desc = "A vintage wine bottle that appears to be produced on terra around the early 20th century.. the label is written in an ancient human language that sounds indecipherable.. le.. chateau.. what now?"; + name = "Vintage Terran red wine bottle" + }, +/obj/item/clothing/head/collectable/petehat, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "iQX" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/bot, @@ -45650,6 +45769,9 @@ "iTN" = ( /turf/open/floor/carpet/green, /area/station/service/abandoned_gambling_den) +"iTO" = ( +/turf/closed/wall, +/area/station/cargo/quartermaster) "iTP" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/curtain/cloth/fancy/mechanical{ @@ -45984,7 +46106,7 @@ "iWF" = ( /obj/structure/flora/bush/jungle/c/style_3, /obj/structure/flora/bush/flowers_yw/style_3, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "iWJ" = ( @@ -46365,6 +46487,15 @@ /obj/structure/lattice/catwalk, /turf/open/openspace, /area/station/maintenance/department/medical/central) +"iZA" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/wood/parquet, +/area/station/common/arcade) "iZC" = ( /obj/structure/table/wood, /obj/structure/window/reinforced/spawner/directional/west, @@ -46605,8 +46736,9 @@ dir = 4 }, /obj/effect/landmark/navigate_destination, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "jbX" = ( @@ -47082,10 +47214,6 @@ dir = 1 }, /area/station/hallway/primary/upper) -"jhN" = ( -/obj/structure/decorative/shelf/alcohol_assortment, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "jhO" = ( /obj/machinery/light/small/directional/east, /obj/machinery/atmospherics/components/binary/valve, @@ -47317,6 +47445,10 @@ dir = 8 }, /area/station/commons/fitness) +"jjN" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "jjP" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, @@ -48698,10 +48830,6 @@ /obj/structure/trash_pile, /turf/open/floor/plating, /area/station/maintenance/central) -"jxu" = ( -/obj/structure/dresser, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/qm) "jxv" = ( /obj/structure/fluff/fokoff_sign, /turf/open/floor/glass/reinforced/airless, @@ -48747,6 +48875,12 @@ }, /turf/open/floor/carpet/blue, /area/station/command/heads_quarters/captain/private) +"jxK" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/structure/sign/calendar/directional/north, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "jxM" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/delivery, @@ -48935,8 +49069,7 @@ id = "Portbowmaints"; name = "Shutter control"; pixel_x = -24; - pixel_y = 0; - req_access = list("command") + pixel_y = 0 }, /obj/machinery/door/poddoor/shutters{ id = "Portbowmaints"; @@ -49924,7 +50057,7 @@ "jJh" = ( /obj/structure/flora/bush/jungle/c/style_3, /obj/structure/flora/bush/flowers_pp/style_3, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "jJi" = ( @@ -51341,15 +51474,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"jVR" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "qmprivacy"; - name = "Quartermaster's Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/qm) "jVT" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/power/smes/engineering, @@ -51792,6 +51916,27 @@ dir = 4 }, /area/station/hallway/primary/port) +"jZU" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/item/reagent_containers/cup/glass/bottle/rum{ + pixel_x = -7; + pixel_y = 10 + }, +/obj/item/storage/fancy/cigarettes/cigars/cohiba, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_y = 4 + }, +/obj/item/clothing/mask/cigarette/rollie/cannabis{ + pixel_x = 8; + pixel_y = 15 + }, +/obj/item/lighter, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "jZZ" = ( /obj/structure/window/spawner/directional/north, /obj/effect/decal/cleanable/dirt, @@ -51977,6 +52122,13 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/common/pool/sauna) +"kcU" = ( +/obj/structure/cable, +/obj/structure/chair/stool/bar, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet/green, +/area/station/service/abandoned_gambling_den) "kcZ" = ( /obj/effect/turf_decal/bot, /obj/structure/liquid_pump, @@ -53172,7 +53324,7 @@ "knr" = ( /obj/structure/flora/bush/jungle/a, /obj/structure/flora/bush/flowers_br/style_3, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "knt" = ( @@ -53240,6 +53392,44 @@ }, /turf/open/floor/iron/dark/side, /area/station/security/prison/upper) +"knG" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/paper_bin{ + pixel_x = -12; + pixel_y = 3 + }, +/obj/item/pen/fourcolor{ + pixel_x = -12; + pixel_y = 5 + }, +/obj/item/hand_labeler{ + pixel_y = 17 + }, +/obj/item/computer_disk/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/computer_disk/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/computer_disk/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/flashlight/lamp/green{ + pixel_y = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "knM" = ( /obj/effect/turf_decal/tile/neutral, /obj/structure/extinguisher_cabinet/directional/east, @@ -53372,28 +53562,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"kpP" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/machinery/computer/piratepad_control{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/qm) -"kpQ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/door/airlock/highsecurity{ - name = "Blueshield's Equipment Room" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "kpS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/curtain/cloth/fancy/mechanical{ @@ -54616,13 +54784,6 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"kAE" = ( -/obj/machinery/pdapainter/supply, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "kAG" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, @@ -54923,13 +55084,6 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/commons/dorms) -"kDN" = ( -/obj/item/kirbyplants/random, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "kDP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light_switch/directional/south, @@ -55037,7 +55191,7 @@ "kER" = ( /obj/structure/flora/bush/jungle/a/style_3, /obj/structure/flora/bush/flowers_br/style_2, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "kFd" = ( @@ -56425,6 +56579,13 @@ /obj/structure/closet/crate/freezer/blood, /turf/open/floor/iron/white, /area/station/medical/coldroom) +"kVe" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "kVx" = ( /obj/structure/sink/directional/east, /turf/open/floor/iron/kitchen{ @@ -57296,18 +57457,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/kitchen, /area/station/service/kitchen/diner) -"ldP" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/airlock/command{ - name = "Quartermaster's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "lec" = ( /turf/closed/wall/rust, /area/station/service/hydroponics/garden/abandoned) @@ -58301,12 +58450,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) -"lor" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "lov" = ( /obj/machinery/conveyor{ id = "cargoload" @@ -58988,14 +59131,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"luT" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood/parquet, -/area/station/common/arcade) "luX" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/turf_decal/bot, @@ -59610,6 +59745,10 @@ /obj/structure/curtain/bounty, /turf/open/floor/plating, /area/station/medical/virology/isolation) +"lBX" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/central) "lCe" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, @@ -59812,13 +59951,6 @@ /obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/commons/toilet/restrooms) -"lDK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/eighties, -/area/station/maintenance/abandon_arcade) "lDR" = ( /obj/structure/bed/double{ dir = 4 @@ -60090,14 +60222,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/security/range) -"lGU" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/stone, -/area/station/service/forge) "lGV" = ( /obj/structure/railing{ dir = 10 @@ -60212,12 +60336,6 @@ }, /turf/open/floor/iron, /area/station/service/bar) -"lIx" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/qm) "lIC" = ( /obj/structure/closet/crate, /obj/effect/turf_decal/bot, @@ -60997,6 +61115,8 @@ dir = 4 }, /obj/structure/rack, +/obj/item/food/grown/poppy, +/obj/item/food/grown/poppy, /obj/item/clothing/under/misc/burial, /obj/item/clothing/under/misc/burial, /obj/item/clothing/under/misc/burial, @@ -61078,6 +61198,14 @@ /obj/effect/spawner/random/exotic/languagebook, /turf/open/floor/plating, /area/station/maintenance/department/science/lower) +"lRb" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/thruster_room/central) "lRf" = ( /obj/structure/table, /obj/item/storage/photo_album, @@ -61463,43 +61591,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) -"lUP" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/paper_bin{ - pixel_x = -12; - pixel_y = 3 - }, -/obj/item/pen/fourcolor{ - pixel_x = -12; - pixel_y = 5 - }, -/obj/item/hand_labeler{ - pixel_y = 17 - }, -/obj/item/computer_disk/quartermaster{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/computer_disk/quartermaster{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/computer_disk/quartermaster{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/flashlight/lamp/green{ - pixel_y = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "lUV" = ( /obj/structure/chair/office{ dir = 4 @@ -61634,13 +61725,6 @@ "lWC" = ( /turf/closed/wall, /area/station/security/prison/upper) -"lWD" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "lWF" = ( /obj/effect/turf_decal/trimline/blue/line, /obj/structure/cable, @@ -61724,6 +61808,18 @@ "lXw" = ( /turf/closed/wall, /area/station/command/heads_quarters/captain/private) +"lXx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "qmprivacy"; + name = "Quartermaster's Privacy Shutters" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/cargo/quartermaster) "lXy" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -62127,6 +62223,10 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/freezer, /area/station/maintenance/abandon_kitchen_upper) +"mba" = ( +/obj/structure/cable, +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/starboard/aft) "mbb" = ( /obj/machinery/light/floor/has_bulb, /obj/effect/turf_decal/bot_white, @@ -62412,6 +62512,13 @@ dir = 4 }, /area/station/hallway/secondary/entry) +"mdB" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "mdF" = ( /obj/machinery/power/supermatter_crystal/engine, /obj/effect/turf_decal/stripes/box, @@ -63009,15 +63116,6 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"mjN" = ( -/obj/machinery/light/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/cafeteria, -/area/station/commons/toilet/auxiliary) "mjT" = ( /obj/item/chair/plastic{ pixel_y = 10 @@ -64127,12 +64225,16 @@ /area/station/medical/break_room) "mwI" = ( /obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood, /obj/item/food/grown/poppy/geranium{ pixel_x = 6; pixel_y = 6 }, +/obj/item/food/grown/poppy/lily{ + pixel_y = 6; + pixel_x = -4 + }, /obj/item/food/grown/poppy/lily, -/obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/station/service/chapel/funeral) "mwP" = ( @@ -64214,6 +64316,20 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"mxX" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/cable, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet, +/area/station/maintenance/abandon_psych) "mya" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -64372,6 +64488,9 @@ /obj/machinery/light/directional/south, /turf/open/floor/wood, /area/station/command/heads_quarters/captain/private) +"mzu" = ( +/turf/closed/wall/r_wall, +/area/station/hallway/primary/upper) "mzv" = ( /obj/machinery/duct, /turf/open/floor/iron/freezer, @@ -64655,14 +64774,6 @@ }, /turf/open/floor/grass, /area/station/service/cafeteria) -"mCi" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "mCj" = ( /obj/effect/decal/cleanable/crayon, /obj/effect/mob_spawn/corpse/human/skeleton, @@ -66564,7 +66675,7 @@ "mVh" = ( /obj/structure/flora/bush/jungle/b, /obj/structure/flora/bush/flowers_yw, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "mVi" = ( @@ -66861,6 +66972,12 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /turf/open/floor/plating, /area/station/maintenance/aft/upper) +"mYp" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "mYx" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -66870,12 +66987,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/science/explab) -"mYB" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "mYD" = ( /obj/machinery/door/firedoor, /obj/structure/cable, @@ -68124,6 +68235,12 @@ dir = 4 }, /area/station/security/checkpoint/escape) +"nlV" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet/red, +/area/station/service/library/abandoned) "nlW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68501,13 +68618,6 @@ }, /turf/open/floor/carpet/lone, /area/station/command/meeting_room/council) -"nqb" = ( -/obj/structure/closet/secure_closet/quartermaster, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/qm) "nql" = ( /obj/machinery/power/shuttle_engine/heater, /obj/effect/turf_decal/stripes{ @@ -68670,6 +68780,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/stairs/left, /area/station/cargo/storage) +"nsx" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "nsy" = ( /obj/structure/ladder, /obj/effect/turf_decal/stripes/white/box, @@ -69353,9 +69467,6 @@ /obj/item/nanite_remote, /obj/item/nanite_remote, /obj/item/nanite_remote, -/obj/item/nanite_injector, -/obj/item/nanite_injector, -/obj/item/nanite_injector, /obj/structure/railing/wood, /turf/open/floor/wood/large, /area/station/science/circuits) @@ -69443,6 +69554,13 @@ }, /turf/open/floor/plating, /area/station/security/checkpoint/customs) +"nAy" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "nAD" = ( /obj/machinery/light/directional/north, /obj/structure/disposalpipe/segment{ @@ -69519,7 +69637,7 @@ /area/station/engineering/atmos) "nBp" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/drone_dispenser, +/obj/machinery/drone_dispenser/preloaded, /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/science/research/abandoned) @@ -69968,6 +70086,14 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"nFV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/clown_chamber) "nFX" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -70201,9 +70327,10 @@ name = "Primary Treatment Centre" }, /obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/machinery/duct, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/white, /area/station/medical/treatment_center) "nIB" = ( @@ -70600,13 +70727,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/service/chapel) -"nMo" = ( -/obj/machinery/duct, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) "nMD" = ( /obj/structure/table/wood, /obj/item/taperecorder, @@ -72833,16 +72953,6 @@ }, /turf/open/floor/stone, /area/station/hallway/primary/central) -"ohE" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/airlock/highsecurity{ - name = "Blueshield's Equipment Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "ohH" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -73086,6 +73196,10 @@ /obj/item/kirbyplants/organic/plant21, /turf/open/floor/iron, /area/station/service/chapel) +"okm" = ( +/obj/structure/decorative/shelf/alcohol_assortment, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "okq" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -77054,28 +77168,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/upper) -"oXl" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/folder/yellow, -/obj/item/stamp/head/qm, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = 6; - pixel_y = 16 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = -4; - pixel_y = 16 - }, -/obj/item/hand_labeler_refill{ - pixel_x = -8; - pixel_y = -8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "oXm" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -77221,6 +77313,28 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) +"oYQ" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/folder/yellow, +/obj/item/stamp/head/qm, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = 6; + pixel_y = 16 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -4; + pixel_y = 16 + }, +/obj/item/hand_labeler_refill{ + pixel_x = -8; + pixel_y = -8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "oYT" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -77432,9 +77546,6 @@ }, /turf/open/floor/iron, /area/station/science/ordnance) -"paH" = ( -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/starboard/aft) "paJ" = ( /obj/effect/turf_decal/stripes{ dir = 1 @@ -78122,7 +78233,7 @@ "pit" = ( /obj/structure/flora/bush/jungle/c, /obj/structure/flora/bush/flowers_pp/style_2, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "piw" = ( @@ -78489,6 +78600,19 @@ /obj/item/chicken_book, /turf/open/floor/iron/dark/herringbone, /area/station/common/night_club/back_stage) +"pmq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/door/airlock/corporate{ + name = "Blueshield's Quarters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "pmr" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -78786,6 +78910,18 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/transit_tube) +"ppK" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/machinery/camera/directional/south{ + c_tag = "Cargo - Quartermaster's office"; + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/modular_computer/laptop, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "ppP" = ( /obj/effect/turf_decal/stripes{ dir = 4 @@ -78985,13 +79121,6 @@ /obj/effect/landmark/navigate_destination, /turf/open/floor/iron/white, /area/station/commons/toilet/restrooms) -"psk" = ( -/obj/structure/bed/dogbed, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "psl" = ( /turf/closed/wall/rust, /area/station/maintenance/department/medical) @@ -79774,6 +79903,16 @@ "pyO" = ( /turf/closed/wall, /area/station/science/research/abandoned) +"pyS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/door/airlock/highsecurity{ + name = "Blueshield's Equipment Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "pzi" = ( /obj/item/clothing/head/utility/welding, /obj/effect/decal/cleanable/dirt, @@ -79955,6 +80094,14 @@ /obj/machinery/atm/directional/south, /turf/open/floor/iron/white, /area/station/science) +"pAL" = ( +/obj/machinery/photocopier, +/obj/effect/turf_decal/bot, +/obj/structure/noticeboard/qm{ + pixel_y = 32 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "pAO" = ( /obj/structure/chair/office{ dir = 8 @@ -81294,13 +81441,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"pOz" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "pOA" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/south, @@ -82473,13 +82613,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"qbt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/electronic_marketing_den) "qbD" = ( /obj/structure/cable, /obj/machinery/airalarm/directional/east, @@ -82611,22 +82744,6 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/department/medical) -"qcV" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/reagent_containers/cup/glass/bottle/fernet{ - pixel_x = -8; - pixel_y = 14 - }, -/obj/item/reagent_containers/cup/glass/bottle/lizardwine{ - pixel_x = 7; - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/glass/bottle/champagne{ - pixel_y = 11 - }, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "qcX" = ( /obj/structure/chair{ dir = 1 @@ -82896,8 +83013,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "qgn" = ( @@ -83375,6 +83493,12 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/station/maintenance/pool_maintenance) +"qkT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/popcorn, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/abandon_art_studio) "qkW" = ( /obj/effect/turf_decal/stripes/end{ dir = 4 @@ -83657,11 +83781,6 @@ /obj/effect/spawner/random/trash/cigbutt, /turf/open/floor/plating/airless, /area/station/maintenance/fore/upper) -"qoe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/aslyum) "qoj" = ( /obj/structure/closet/lasertag/blue, /obj/machinery/light/small/directional/north, @@ -84290,29 +84409,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"qtM" = ( -/obj/structure/closet/crate/large{ - name = "large exotic import crate" - }, -/obj/item/coin/gold{ - desc = "A limited edition coin printed with a FTU cargo hauler on the tail's side and the FTU logo on the head's side.. only 500 of these were ever made as a celebration to the passing of lessened trade regulations in the frontier sector."; - name = "FTU special edition collector's coin" - }, -/obj/item/melee/baseball_bat{ - desc = "This ancient baseball bat looks worn and used, it still has a pristine signature of a major league baseball player that was popular way back in the 20th century on terra... wow"; - name = "Signed baseball bat" - }, -/obj/item/toy/figure/clown{ - desc = "Aside from the engraving on the back of this figurine it's identical to any old NT departmental action figure, yet these sell for eye watering prices on the open market."; - name = "Comedycon edition clown action figure" - }, -/obj/item/reagent_containers/cup/glass/bottle/wine{ - desc = "A vintage wine bottle that appears to be produced on terra around the early 20th century.. the label is written in an ancient human language that sounds indecipherable.. le.. chateau.. what now?"; - name = "Vintage Terran red wine bottle" - }, -/obj/item/clothing/head/collectable/petehat, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "qtO" = ( /obj/structure/trash_pile, /obj/effect/decal/cleanable/dirt, @@ -85105,10 +85201,6 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/service/hydroponics) -"qBm" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "qBq" = ( /obj/structure/grille, /obj/structure/window/spawner/directional/north, @@ -85343,7 +85435,7 @@ "qDe" = ( /obj/structure/flora/bush/jungle/a/style_2, /obj/structure/flora/bush/flowers_yw/style_3, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "qDf" = ( @@ -85680,6 +85772,7 @@ pixel_x = 7; pixel_y = 3 }, +/obj/structure/reagent_dispensers/watertank/high, /turf/open/floor/grass, /area/station/security/prison/garden) "qGm" = ( @@ -86007,10 +86100,6 @@ dir = 4 }, /area/station/hallway/primary/upper) -"qJm" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/qm) "qJo" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -90780,6 +90869,12 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) +"rEB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/white, +/area/station/medical/aslyum) "rED" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -91109,6 +91204,10 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/mineral/plastitanium, /area/station/maintenance/cult_chapel_maint) +"rHz" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/station/cargo/quartermaster) "rHB" = ( /obj/item/trash/chips, /turf/open/floor/plating, @@ -91223,10 +91322,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/openspace, /area/station/maintenance/fore/upper) -"rIC" = ( -/obj/machinery/suit_storage_unit/industrial, -/turf/open/floor/plating, -/area/station/cargo/storage) "rIJ" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/siding/thinplating_new{ @@ -91356,10 +91451,17 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/primary/central) +"rJF" = ( +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "rJL" = ( /obj/structure/table/wood, -/obj/item/food/grown/harebell, /obj/effect/turf_decal/siding/wood, +/obj/item/food/grown/harebell{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/food/grown/harebell, /turf/open/floor/wood, /area/station/service/chapel/funeral) "rJM" = ( @@ -92321,18 +92423,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"rVF" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/camera/directional/south{ - c_tag = "Cargo - Quartermaster's office"; - dir = 1 - }, -/obj/structure/table/wood/fancy/royalblack, -/obj/item/modular_computer/laptop, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "rVN" = ( /obj/machinery/door/airlock/security/glass{ name = "Penalty Chamber" @@ -93411,7 +93501,7 @@ "sgt" = ( /obj/structure/flora/bush/jungle/b, /obj/structure/flora/bush/flowers_br, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "sgv" = ( @@ -95059,6 +95149,14 @@ /obj/effect/spawner/random/decoration/glowstick, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"sxg" = ( +/obj/structure/altar_of_gods, +/obj/structure/railing{ + dir = 4 + }, +/obj/item/book/bible, +/turf/open/floor/carpet, +/area/station/service/chapel) "sxl" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt, @@ -97255,12 +97353,6 @@ "sSP" = ( /turf/open/floor/iron, /area/station/security/prison/mess) -"sSS" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "sSX" = ( /obj/structure/toilet{ dir = 1 @@ -97327,19 +97419,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/iron, /area/station/commons/dorms) -"sUc" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/maintenance/abandon_psych) "sUg" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ color = "#DE3A3A"; @@ -97725,15 +97804,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron, /area/station/medical/surgery/theatre) -"sXp" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/airlock/qm{ - name = "Quartermaster's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/qm) "sXt" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -98265,6 +98335,14 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"tbD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "tbH" = ( /obj/structure/chair/pew/left{ dir = 4 @@ -98866,6 +98944,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/transit_tube) +"thb" = ( +/obj/structure/chair/wood/wings{ + dir = 8 + }, +/obj/effect/landmark/start/librarian, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/carpet, +/area/station/service/library/lounge) "thj" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/maintenance, @@ -99520,6 +99606,14 @@ /obj/effect/spawner/random/trash/moisture, /turf/open/floor/plating, /area/station/maintenance/port/upper) +"tov" = ( +/obj/machinery/duct, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/cafeteria, +/area/station/commons/locker) "toB" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -99716,11 +99810,6 @@ /obj/effect/spawner/random/trash/moisture, /turf/open/floor/plating, /area/station/maintenance/port/upper) -"tqs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/abandon_diner) "tqu" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -99847,18 +99936,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"tsB" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "qmprivacy"; - name = "Quartermaster's Privacy Shutters" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/qm) "tsQ" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood{ @@ -100914,10 +100991,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) -"tCj" = ( -/obj/machinery/duct, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "tCm" = ( /obj/docking_port/stationary{ dheight = 4; @@ -101773,6 +101846,22 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/iron, /area/station/engineering/atmos/test_chambers) +"tKU" = ( +/obj/structure/table/wood, +/obj/item/clipboard{ + pixel_y = 19 + }, +/obj/item/toy/figure/qm{ + pixel_y = 18 + }, +/obj/machinery/light/directional/west, +/obj/machinery/fax{ + fax_name = "Quartermaster's Office"; + name = "Quartermaster's Fax Machine"; + pixel_y = 3 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "tKX" = ( /obj/item/clothing/head/utility/welding, /turf/open/floor/plating, @@ -102372,6 +102461,16 @@ /obj/effect/spawner/random/contraband/permabrig_gear, /turf/open/floor/plating, /area/station/security/prison/mess) +"tQe" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "tQg" = ( /obj/effect/turf_decal/vg_decals/numbers/four, /obj/effect/landmark/start/prisoner, @@ -102385,12 +102484,6 @@ }, /turf/open/floor/plating/airless, /area/station/maintenance/port/upper) -"tQk" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/qm) "tQn" = ( /obj/machinery/door/airlock/public/glass{ name = "Library" @@ -102685,6 +102778,12 @@ dir = 8 }, /area/station/hallway/secondary/service) +"tTf" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "tTg" = ( /turf/closed/wall/mineral/wood, /area/station/common/pool/sauna) @@ -103398,15 +103497,6 @@ /obj/structure/liquid_barrier, /turf/open/floor/iron/white, /area/station/science/xenobiology/control) -"ubC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/dorms/vacantroom) "ubD" = ( /obj/effect/spawner/random/structure/crate, /obj/structure/disposalpipe/trunk/multiz, @@ -104398,6 +104488,16 @@ /obj/effect/landmark/start/librarian, /turf/open/floor/carpet, /area/station/service/library/lounge) +"ukH" = ( +/obj/structure/sign/directions/command{ + dir = 1; + pixel_y = 3 + }, +/obj/structure/sign/directions/science{ + pixel_y = -3 + }, +/turf/closed/wall/r_wall, +/area/station/hallway/primary/upper) "ukI" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -104756,10 +104856,6 @@ /turf/closed/wall, /area/station/ai_monitored/command/storage/eva) "umQ" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger{ - pixel_y = -3 - }, /obj/structure/reagent_dispensers/wall/peppertank/directional/west, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/blueshield) @@ -104903,27 +104999,6 @@ "uor" = ( /turf/closed/wall, /area/station/science/robotics) -"uoz" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/item/reagent_containers/cup/glass/bottle/rum{ - pixel_x = -7; - pixel_y = 10 - }, -/obj/item/storage/fancy/cigarettes/cigars/cohiba, -/obj/item/storage/fancy/cigarettes/cigars/havana{ - pixel_y = 4 - }, -/obj/item/clothing/mask/cigarette/rollie/cannabis{ - pixel_x = 8; - pixel_y = 15 - }, -/obj/item/lighter, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "uoB" = ( /obj/structure/stairs/north, /obj/structure/railing{ @@ -105846,6 +105921,15 @@ }, /turf/open/floor/plating, /area/station/medical/pharmacy) +"uyB" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "uyC" = ( /turf/open/floor/engine{ name = "Holodeck Projector Floor" @@ -106914,6 +106998,19 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/night_club) +"uIJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/door/airlock/highsecurity{ + name = "Blueshield's Equipment Room" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "uIM" = ( /obj/machinery/power/smes, /obj/structure/cable, @@ -107106,6 +107203,12 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/wood, /area/station/hallway/secondary/service) +"uKB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/stool/bar/directional/north, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet, +/area/station/maintenance/rus_gambling) "uKG" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/iron, @@ -107149,6 +107252,12 @@ /obj/structure/flora/bush/leafy, /turf/open/floor/grass, /area/station/hallway/primary/central) +"uLt" = ( +/obj/machinery/duct, +/obj/effect/spawner/random/trash/mess, +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet, +/area/station/commons/dorms/vacantroom) "uLA" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -107961,6 +108070,14 @@ /obj/effect/spawner/random/medical/memeorgans, /turf/open/floor/plating, /area/station/maintenance/abandon_surgery) +"uTO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary, +/turf/open/floor/eighties, +/area/station/maintenance/abandon_arcade) "uTQ" = ( /obj/effect/turf_decal/trimline/blue/line{ dir = 10 @@ -108281,11 +108398,6 @@ /obj/effect/turf_decal/delivery/blue, /turf/open/floor/iron/dark, /area/station/maintenance/department/engineering/atmos_aux_port) -"uXl" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/red, -/area/station/service/library/abandoned) "uXm" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, @@ -108853,13 +108965,6 @@ /obj/structure/reflector/box, /turf/open/floor/plating, /area/station/maintenance/department/engineering/atmos_aux_port) -"vdU" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/thruster_room/central) "vdX" = ( /obj/item/kirbyplants/random, /obj/machinery/light_switch/directional/south, @@ -109692,6 +109797,15 @@ /obj/structure/table, /turf/open/floor/iron/dark, /area/station/commons/dorms) +"vlp" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "qmprivacy"; + name = "Quartermaster's Privacy Shutters" + }, +/turf/open/floor/plating, +/area/station/cargo/quartermaster) "vlu" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/siding/wood, @@ -109814,16 +109928,6 @@ /obj/machinery/door/airlock/maintenance_hatch, /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/dorms) -"vms" = ( -/obj/structure/aquarium, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "vmv" = ( /obj/structure/railing{ dir = 8 @@ -112944,14 +113048,6 @@ "vQb" = ( /turf/closed/wall, /area/station/commons/dorms/room4) -"vQe" = ( -/obj/machinery/photocopier, -/obj/effect/turf_decal/bot, -/obj/structure/noticeboard/qm{ - pixel_y = 32 - }, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/qm) "vQk" = ( /obj/machinery/computer/teleporter{ dir = 1 @@ -113410,12 +113506,6 @@ /obj/item/stock_parts/cell/high, /turf/open/floor/iron/dark, /area/station/engineering/main) -"vUM" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/stairs/old, -/area/station/cargo/office) "vUW" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/external{ @@ -113598,8 +113688,7 @@ id = "Starboardbowmaints"; name = "Shutter control"; pixel_x = 24; - pixel_y = 0; - req_access = list("engineering","atmospherics") + pixel_y = 0 }, /turf/open/floor/plating, /area/station/maintenance/fore/upper) @@ -114329,7 +114418,7 @@ "wdN" = ( /obj/structure/flora/bush/jungle/b/style_2, /obj/structure/flora/bush/flowers_br/style_3, -/obj/structure/window/fulltile, +/obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/station/hallway/primary/upper) "wdS" = ( @@ -114463,6 +114552,18 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/science/research/abandoned) +"weQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "qmprivacy"; + name = "Quartermaster's Privacy Shutters" + }, +/obj/structure/disposalpipe/trunk/multiz{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/cargo/quartermaster) "weT" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -114534,8 +114635,7 @@ id = "Starboardbowmaints"; name = "Shutter control"; pixel_x = 24; - pixel_y = 0; - req_access = list("engineering","atmospherics") + pixel_y = 0 }, /obj/machinery/door/poddoor/shutters{ id = "Starboardbowmaints"; @@ -114638,6 +114738,12 @@ dir = 4 }, /area/station/hallway/primary/central/aft) +"wfY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "wge" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -114970,10 +115076,6 @@ /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/port/central) -"wjj" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/qm) "wjw" = ( /obj/structure/cable, /obj/structure/sign/warning/vacuum/directional/west, @@ -115029,6 +115131,9 @@ }, /turf/open/floor/wood, /area/station/command/captain_dining) +"wjW" = ( +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "wjY" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, @@ -116005,6 +116110,12 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/fore/upper) +"wsT" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "wsU" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/plating/reinforced{ @@ -116026,9 +116137,6 @@ /obj/structure/grille/broken, /turf/open/floor/plating, /area/station/maintenance/port/upper) -"wtf" = ( -/turf/closed/wall, -/area/station/command/heads_quarters/qm) "wtk" = ( /obj/machinery/light/floor/has_bulb, /turf/open/floor/iron/shuttle/evac/airless, @@ -117648,18 +117756,6 @@ }, /turf/open/floor/iron/dark/side, /area/station/security/lockers) -"wIO" = ( -/obj/structure/table/wood, -/obj/structure/closet/crate/cardboard{ - pixel_y = 5 - }, -/obj/item/clothing/shoes/jackboots/timbs, -/obj/item/clothing/suit/brownfurrich/public, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "wJa" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/terminal{ @@ -117841,6 +117937,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/service/hydroponics) +"wLK" = ( +/obj/structure/chair/office, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/security/detectives_office/private_investigators_office) "wLM" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -118254,13 +118357,10 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"wPA" = ( -/obj/machinery/suit_storage_unit/mining/eva, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/qm) +"wPC" = ( +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "wPG" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/garbage, @@ -118772,12 +118872,6 @@ /obj/machinery/station_map/engineering/directional/north, /turf/open/floor/iron, /area/station/commons/dorms) -"wUv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "wUw" = ( /obj/effect/spawner/random/structure/crate, /obj/structure/grille/broken, @@ -118813,6 +118907,13 @@ /obj/structure/flora/rock/pile, /turf/open/floor/grass, /area/station/hallway/primary/central) +"wVh" = ( +/obj/structure/closet/secure_closet/quartermaster, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/quartermaster) "wVn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -118885,6 +118986,12 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/service/theater) +"wWf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/cafeteria, +/area/station/maintenance/abandon_diner) "wWi" = ( /obj/machinery/power/shuttle_engine/heater{ dir = 4 @@ -119833,6 +119940,11 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/service/cafeteria) +"xgk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/aft/upper) "xgr" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -120497,6 +120609,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"xnA" = ( +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/cult, +/area/station/maintenance/cult_chapel_maint) "xnC" = ( /obj/structure/railing{ dir = 8 @@ -120514,10 +120630,6 @@ dir = 8 }, /area/station/service/hydroponics) -"xnG" = ( -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/carpet/royalblack, -/area/station/command/heads_quarters/qm) "xnK" = ( /mob/living/carbon/human/species/monkey/punpun, /obj/machinery/holopad, @@ -120701,18 +120813,6 @@ }, /turf/open/floor/carpet, /area/station/common/wrestling/lobby) -"xpv" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "qmprivacy"; - name = "Quartermaster's Privacy Shutters" - }, -/obj/structure/disposalpipe/trunk/multiz{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/qm) "xpx" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/moisture_trap, @@ -121135,6 +121235,22 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/service/chapel/funeral) +"xtv" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/bottle/fernet{ + pixel_x = -8; + pixel_y = 14 + }, +/obj/item/reagent_containers/cup/glass/bottle/lizardwine{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/glass/bottle/champagne{ + pixel_y = 11 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "xtB" = ( /obj/structure/chair/pew/left{ dir = 1; @@ -122382,6 +122498,12 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) +"xGr" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/carpet, +/area/station/cargo/quartermaster) "xGu" = ( /obj/structure/chair/office, /obj/structure/window/spawner/directional/west, @@ -123778,6 +123900,12 @@ }, /turf/open/floor/iron, /area/station/command/bridge) +"xVU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/parquet, +/area/station/cargo/quartermaster) "xVV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -124794,17 +124922,6 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/cargo/power_station/upper) -"yeG" = ( -/obj/item/storage/backpack/blueshield, -/obj/item/storage/backpack/duffelbag/blueshield, -/obj/item/storage/backpack/satchel/blueshield, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/item/clothing/neck/mantle/bsmantle, -/obj/machinery/duct, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "yeH" = ( /obj/structure/railing{ dir = 4 @@ -144271,7 +144388,7 @@ vdX szo khB wsY -xpn +uKB sCE oHL mqQ @@ -145241,7 +145358,7 @@ dEa dEa uEt bQL -luT +iZA ihY pCR aUf @@ -146821,7 +146938,7 @@ gJC kvS tyO qCy -lGU +aCe oDK xKQ rii @@ -147627,7 +147744,7 @@ jFf qMb uns gib -bga +wLK nLn qjL nEA @@ -148636,7 +148753,7 @@ tKM uDf tFG tyB -pOJ +jjN hLJ tyB fWT @@ -149658,7 +149775,7 @@ tej gcU lmf mFM -mjN +gFQ jQA jQA uDf @@ -150656,7 +150773,7 @@ pWa lOb eiM ukF -ukF +thb ocy efJ kQJ @@ -151432,7 +151549,7 @@ qlY qlY sPz tWx -mQI +cxO xFB wjx snu @@ -151703,7 +151820,7 @@ tvB oPW hoT qon -aBl +sxg hhb csC uZH @@ -154232,7 +154349,7 @@ aGF grq uDg xvc -gma +lBX kOW pjw pjw @@ -160451,7 +160568,7 @@ pEc cwD iWN uAV -uAV +gtW uAV lmE iWN @@ -160945,12 +161062,12 @@ mVk mVk mVk ueR -aky -aky -aky -tQk -aky -aky +rJF +rJF +rJF +wfY +rJF +rJF hmV vqa vqa @@ -161202,12 +161319,12 @@ mVk kVb gIS gIS -aky -qcV -fYP -kAE -qtM -adw +rJF +xtv +tKU +tbD +iQW +cDG hmV hHn jrw @@ -161459,12 +161576,12 @@ eBe yde azk azk -aky -rVF -euG -wUv -xnG -bLF +rJF +ppK +wjW +kVe +wPC +dvI hmV roO sNu @@ -161711,17 +161828,17 @@ mkM wsl tAt gIS -aky -aky -aky -aky -vQe -fQf -lor -pOz -wIO -euG -kpP +rJF +rJF +rJF +rJF +pAL +ier +xVU +nAy +hUu +wjW +hpv hmV knm oQD @@ -161968,17 +162085,17 @@ eTy aTu npf hfr -aky -nqb -wPA -wtf -bZp -qBm -uoz -oXl -lUP -vms -aky +rJF +wVh +fiG +iTO +jxK +nsx +jZU +oYQ +knG +akd +rJF hmV vqa vqa @@ -162225,17 +162342,17 @@ fsS oQw tAt oUr -qJm -lIx -wjj -sXp -qBm -dcg -mYB -sSS -fQZ -kDN -aky +dYV +xGr +rHz +gGm +nsx +wsT +tTf +mYp +tQe +htj +rJF bHe gSu gSA @@ -162482,18 +162599,18 @@ iru cRO tAt eye -aky -csR -jxu -wtf -jhN -psk -lWD -axk -bru -mCi -ldP -vUM +rJF +fdB +hTx +iTO +okm +hgI +mdB +gpf +gwg +uyB +gia +giW mvF foY uVh @@ -162739,17 +162856,17 @@ hZB gvR eGI kVb -aky -aky -aky -aky -jVR -tsB -tsB -xpv -jVR -aky -aky +rJF +rJF +rJF +rJF +vlp +lXx +lXx +weQ +vlp +rJF +rJF fOp pYr cZV @@ -164504,7 +164621,7 @@ xhv tCi tgb gjd -ctf +cZI hdS fRA xPk @@ -165823,7 +165940,7 @@ pMQ eGW nKK eFn -rIC +eSI oTl mXK ipg @@ -167082,7 +167199,7 @@ dVy rtr iTN nli -sBd +kcU kfl iTN sfw @@ -209294,7 +209411,7 @@ soz uAj mAK ibw -uXl +nlV mtu iCe wpF @@ -211279,7 +211396,7 @@ lEO lxt hZy oIe -nMo +tov gyh jyY mqj @@ -211313,7 +211430,7 @@ drQ xPd fHi reO -gmv +uLt soC eVg hnW @@ -212341,7 +212458,7 @@ fXT lGF fHi xbC -ubC +dzr czZ eVg kmc @@ -212519,12 +212636,12 @@ soz xvR fDB rpt -bwc -bwc +tbb +tbb rpt rpt -bwc -bwc +tbb +tbb okY cMY soz @@ -212775,11 +212892,11 @@ rKN soz ohj gLc -bwc +tbb rpt -bwc +tbb rpt -bwc +tbb rpt rpt gLc @@ -213289,13 +213406,13 @@ soz ohj rpt rpt -bwc +tbb rpt rpt dAD -bwc -bwc -bwc +tbb +tbb +tbb rpt rpt gTp @@ -213544,16 +213661,16 @@ oGA oGA oGA fDB -bwc +tbb rpt rpt -bwc -bwc +tbb +tbb dAD rpt -bwc -bwc -bwc +tbb +tbb +tbb rpt gTp soz @@ -213669,7 +213786,7 @@ lec sJw vzq bZD -vXK +aXz bqc ovC aDV @@ -214059,16 +214176,16 @@ oGA oGA vVt rpt -bwc -bwc +tbb +tbb tbb rpt dAD -bwc +tbb rpt rpt -bwc -bwc +tbb +tbb gTp soz xQw @@ -214315,17 +214432,17 @@ dbo oGA soz ohj -bwc +tbb rpt rpt tbb rpt dAD tbb -bwc +tbb rpt rpt -bwc +tbb gTp soz xQw @@ -214835,7 +214952,7 @@ tbb rpt rpt tbb -bwc +tbb rpt rpt gLc @@ -215089,12 +215206,12 @@ soz wEk vVt rpt -bwc -bwc +tbb +tbb rpt rpt rpt -bwc +tbb vKW aSB soz @@ -215647,8 +215764,8 @@ gSB iVh hEi ami -yeG -tCj +cfa +dNs lPx sZp ktv @@ -216161,7 +216278,7 @@ aXo ide ide sZp -izO +pmq pRa pRa sZp @@ -216501,7 +216618,7 @@ vIq smt pTE gDk -tqs +wWf dHC cDP fne @@ -216777,7 +216894,7 @@ tcq sba sXD tpk -sXD +cBG cct akA soz @@ -217188,10 +217305,10 @@ hCT aXo ide sZp -ohE +pyS sZp sZp -kpQ +uIJ sZp sZp sOm @@ -217795,7 +217912,7 @@ tfJ pjf tUm bgI -lDK +uTO wbv mrX kCj @@ -217959,7 +218076,7 @@ kAP wKd ide qzx -cSH +gNs qOZ wbO utQ @@ -218316,7 +218433,7 @@ kCj jKs gVx lWr -tpk +xgk tpk urs iVF @@ -218733,7 +218850,7 @@ gXP gWh sZp uLF -bzO +eDY uLF sZp cRb @@ -221844,11 +221961,11 @@ pQF tYT tYT tYT -pKz +mzu mVh iMf gBx -pQF +ukH qJk qJk lcX @@ -222105,7 +222222,7 @@ bwW wfr cMo tiA -pKz +mzu coT gST lcX @@ -223133,7 +223250,7 @@ pit mMJ xtV eUH -pKz +mzu ugc uol lcX @@ -223386,11 +223503,11 @@ pQF akt akt akt -pKz +mzu iWF knr dKI -pQF +ukH wiK wiK lcX @@ -228293,7 +228410,7 @@ aQY dsQ dRf bwO -qoe +rEB leE vYX vYX @@ -229995,12 +230112,12 @@ soz soz soz eXk -asL -asL +uig +uig eXk eXk -asL -asL +uig +uig soz soz soz @@ -230251,11 +230368,11 @@ jfV soz soz gLc -asL +uig eXk -asL +uig eXk -asL +uig eXk eXk gLc @@ -230765,13 +230882,13 @@ soz soz eXk eXk -asL +uig eXk eXk jGm -asL -asL -asL +uig +uig +uig eXk eXk soz @@ -231020,16 +231137,16 @@ xqo xqo xqo soz -asL +uig eXk eXk -asL -asL +uig +uig jGm eXk -asL -asL -asL +uig +uig +uig eXk soz soz @@ -231068,7 +231185,7 @@ gTZ goM ojU qOK -bWQ +qkT gta dNp xiB @@ -231394,7 +231511,7 @@ buD psl nNt ukK -ukK +bmS iki sus ulx @@ -231535,16 +231652,16 @@ xqo xqo soz eXk -asL -asL +uig +uig uig eXk jGm -asL +uig eXk eXk -asL -asL +uig +uig soz soz fKg @@ -231791,17 +231908,17 @@ xcb xqo soz soz -asL +uig eXk eXk uig eXk jGm uig -asL +uig eXk eXk -asL +uig soz soz fKg @@ -231825,7 +231942,7 @@ hrN vzh omu hLk -vdU +lRb arj lKb vQQ @@ -232311,7 +232428,7 @@ uig eXk eXk uig -asL +uig eXk eXk gLc @@ -232418,7 +232535,7 @@ kPf kPf qzz gyV -gyV +nFV rjO jHG xrT @@ -232565,12 +232682,12 @@ soz soz soz eXk -asL -asL +uig +uig eXk eXk eXk -asL +uig soz soz soz @@ -232949,7 +233066,7 @@ jVg sKy myL wrz -mJr +xnA cSf kLR sdx @@ -233118,7 +233235,7 @@ mjZ vyd wql mdY -qbt +izG cmf ufd cHh @@ -233450,13 +233567,13 @@ usu gLc kWO gLc -paH +mba gLc -paH +mba gLc -paH +mba gLc -paH +mba kta xxS hXr @@ -233703,17 +233820,17 @@ usu nPy usu gLc -paH +mba gLc kWO gLc -paH +mba gLc kWO gLc kWO gLc -paH +mba cwF xxS ydM @@ -233962,13 +234079,13 @@ klU gLc klU gLc -paH +mba gLc -paH +mba gLc kWO gLc -paH +mba gLc kWO cwF @@ -234219,13 +234336,13 @@ klU mQV klU gLc -paH +mba gLc -paH +mba gLc kWO gLc -paH +mba gLc kWO kta @@ -234669,7 +234786,7 @@ eDF pMa fdF yda -sUc +mxX sBF syc ssb @@ -234733,15 +234850,15 @@ klU mQV gTL gLc -paH +mba loJ -paH +mba gLc -paH +mba gLc kWO gLc -paH +mba kta kta kta @@ -234990,15 +235107,15 @@ klU gLc klU gLc -paH +mba fKh kWO gLc -paH +mba gLc kWO gLc -paH +mba gLc gLc cwF @@ -235247,13 +235364,13 @@ klU gLc klU gLc -paH +mba gLc kWO gLc -paH +mba gLc -paH +mba gLc kWO gLc diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 78b94905663b..3ac184f28c47 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -1,9 +1,10 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aav" = ( +/obj/effect/turf_decal/tile/dark_blue/full, /obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron/dark, +/obj/machinery/ticket_machine/directional/south, +/obj/structure/table, +/turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) "aaA" = ( /obj/effect/turf_decal/box/white, @@ -15,8 +16,9 @@ /area/station/engineering/atmos/hfr_room) "aaB" = ( /obj/machinery/light/directional/north, -/obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/cell_5k, /obj/machinery/modular_computer/preset/engineering, /turf/open/floor/iron, /area/station/engineering/main) @@ -26,24 +28,25 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"aaT" = ( +"aaX" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/duct, +/obj/machinery/door/airlock/medical{ + name = "Operating Room" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/confetti, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"aaX" = ( -/obj/structure/frame/machine, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/effect/mapping_helpers/airlock/unres, +/turf/open/floor/iron/white/textured, +/area/station/medical/surgery) "abc" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -59,29 +62,23 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/white, /area/station/science/genetics/cloning) -"abo" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/machinery/computer/diseasesplicer, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"abC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) -"abG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +"abv" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 }, -/obj/effect/turf_decal/trimline/blue/line{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/sign/departments/maint/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"abC" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) "abS" = ( /obj/machinery/light/neon_lining{ dir = 8 @@ -97,6 +94,7 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "abT" = ( +/obj/effect/turf_decal/siding/wood, /obj/machinery/computer/records/security, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) @@ -105,32 +103,34 @@ dir = 9 }, /obj/effect/turf_decal/bot, -/obj/structure/closet/secure_closet/security/sec, /obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/showroomfloor, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/structure/closet/secure_closet/security/sec, +/turf/open/floor/iron/dark, /area/station/security/lockers) "acf" = ( -/obj/machinery/light/directional/south, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/iron/dark, /area/station/security/prison/mess) -"acl" = ( -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/flora/bush/flowers_pp/style_random, -/mob/living/basic/butterfly, -/turf/open/floor/grass, -/area/station/command/bridge) "aco" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/floor/has_bulb, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/prison) +/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"acw" = ( +/obj/machinery/light/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) +"acx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "acE" = ( /obj/machinery/airalarm/directional/north, /obj/machinery/light/directional/north, @@ -147,27 +147,30 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) -"acN" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/modular_computer/preset/engineering, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "acW" = ( -/obj/structure/chair/stool/directional/south, +/obj/structure/chair/plastic, /turf/open/floor/iron/dark, /area/station/security/prison/visit) "acX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/engine_smes) "adc" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/effect/turf_decal/trimline/dark_blue/filled/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark_blue/warning{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "adk" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark/side{ @@ -201,16 +204,31 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) "adC" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood, +/turf/open/floor/iron/dark, +/area/station/service/abandoned_gambling_den) "adK" = ( /obj/structure/flora/bush/jungle, /obj/item/food/grown/banana, /turf/open/floor/grass, /area/station/hallway/primary/central) +"adO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "adP" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 4 @@ -229,6 +247,16 @@ }, /turf/open/floor/iron/dark, /area/station/security/evidence) +"aed" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters{ + id = "dep_med_post"; + name = "Medical Post Shutters"; + dir = 1 + }, +/turf/open/floor/plating, +/area/station/medical/treatment_center) "aee" = ( /turf/open/floor/iron/dark/side{ dir = 8 @@ -246,7 +274,6 @@ /turf/open/floor/iron/dark, /area/station/security/brig/entrance) "aeJ" = ( -/obj/machinery/light/directional/north, /obj/effect/turf_decal/trimline/purple/line, /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -267,15 +294,26 @@ dir = 8 }, /obj/effect/mapping_helpers/mail_sorting/supply/qm_office, +/obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port) +"afd" = ( +/obj/structure/cable, +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/librarian, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "afh" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/barricade/wooden, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "afl" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 9 @@ -304,12 +342,6 @@ }, /turf/open/floor/iron/dark/side, /area/station/cargo/storage) -"afJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "afR" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -325,18 +357,22 @@ dir = 8 }, /area/station/commons/storage/primary) -"aga" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/line, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "agf" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/space_heater, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) +"agn" = ( +/obj/machinery/firealarm/directional/north, +/obj/machinery/light_switch/directional/north{ + pixel_x = -8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/wood, +/area/station/service/library) "agv" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/table, @@ -346,17 +382,14 @@ /obj/item/radio, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) -"agx" = ( -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) -"agK" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ +"agL" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/structure/chair/sofa/bench/right{ dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) "ahd" = ( /obj/structure/flora/rock/pile/jungle/style_random, /obj/structure/flora/tree/jungle/small/style_random, @@ -387,6 +420,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/textured, /area/station/engineering/main) +"ahy" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/chair/wood, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "ahA" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -397,7 +436,7 @@ }, /obj/structure/bed/dogbed/mcgriff, /mob/living/basic/pet/dog/pug/mcgriff, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "ahW" = ( /obj/effect/spawner/structure/window/reinforced, @@ -420,11 +459,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/fore) "aim" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -432,26 +467,25 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"aio" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_blue/line, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "air" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/wood, -/area/station/security/prison/rec) +/obj/structure/railing{ + dir = 4 + }, +/turf/open/ballpit, +/area/station/security/bitden) "ait" = ( /turf/closed/wall, /area/station/security/medical) "aiw" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/condiment/peppermill{ - desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; - pixel_x = -8; - pixel_y = 2 - }, -/obj/item/reagent_containers/condiment/saltshaker{ - layer = 3.1; - pixel_x = -2; - pixel_y = 2 - }, -/turf/open/floor/iron/kitchen, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark, /area/station/security/prison/mess) "aiy" = ( /obj/effect/turf_decal/trimline/green/filled/line, @@ -463,49 +497,53 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "aiG" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/machinery/airalarm/directional/east, /obj/structure/disposalpipe/trunk{ dir = 8 }, /obj/machinery/disposal/bin, -/obj/structure/cable, -/obj/machinery/light_switch/directional/south, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) -"aiI" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/dark_blue/filled/warning{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_blue/warning{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "aiR" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, +/obj/structure/cable/layer1, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/airlock/engineering{ name = "Power Transmission Laser" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/construction, -/obj/structure/cable/layer1, /turf/open/floor/iron/dark/textured, /area/station/engineering/engine_smes) "aiS" = ( /obj/effect/spawner/random/engineering/tank, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"aiX" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Command - Bridge, South"; + name = "command camera" + }, +/obj/machinery/button/door/directional/south{ + id = "teleporter_shutters"; + name = "Teleporter Room Shutters Control"; + req_access = list("teleporter") + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "ajn" = ( /turf/closed/wall, /area/station/security/prison/mess) "ajt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "ajG" = ( @@ -517,16 +555,14 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "ajR" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/wood{ dir = 8 }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/smithing) "ajT" = ( @@ -534,6 +570,18 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/tcommsat/computer) +"ajX" = ( +/obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) +"aks" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold/pink/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "aky" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 9 @@ -555,6 +603,15 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/entry) +"akY" = ( +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "ald" = ( /obj/effect/turf_decal/bot, /turf/open/floor/plating/airless, @@ -579,6 +636,14 @@ }, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat_interior) +"alh" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/purple/filled/corner, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "ali" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/structure/window/reinforced/spawner/directional/east, @@ -605,11 +670,10 @@ }, /turf/open/floor/wood, /area/station/commons/vacant_room/office) -"aly" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +"alB" = ( +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "alJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -622,15 +686,15 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) "alM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine/atmos) "alP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/effect/spawner/random/structure/table, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "aml" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -639,7 +703,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/suit_storage_unit/security, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "ams" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -651,10 +715,6 @@ /turf/closed/wall/r_wall, /area/station/maintenance/solars/port/aft) "amE" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -663,21 +723,14 @@ }, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/effect/landmark/navigate_destination/common/starboardbowsolar, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/solars/starboard/fore) "amL" = ( -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/checker, /area/station/security/prison/shower) -"amZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/chair, -/obj/effect/landmark/start/chemist, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) -"anb" = ( -/obj/structure/dresser, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "anh" = ( /obj/effect/turf_decal/trimline/green/filled/corner, /obj/effect/turf_decal/trimline/green/line{ @@ -703,6 +756,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/service/hydroponics/garden) +"anF" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) "anM" = ( /obj/effect/spawner/random/structure/table, /obj/item/reagent_containers/condiment/saltshaker{ @@ -731,6 +790,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) +"anW" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/structure/closet/toolcloset, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) "aoc" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "Mix to Port Mix" @@ -752,88 +820,80 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig/entrance) -"aoj" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/computer/robotics, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"aoB" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"aoI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_y = 6 - }, -/obj/item/clipboard{ - pixel_y = 6 +"aoo" = ( +/turf/closed/wall/r_wall, +/area/station/medical/virology) +"aor" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 }, -/obj/item/folder/yellow{ +/obj/structure/table, +/obj/item/radio/off{ pixel_y = 6 }, -/obj/item/paper/monitorkey, -/obj/item/pen{ +/obj/item/radio/off{ + pixel_x = -6; pixel_y = 4 }, -/obj/item/stamp/head/ce, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"aoL" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 8 +/obj/item/radio/off{ + pixel_x = 6; + pixel_y = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/item/radio/off, +/turf/open/floor/iron/dark/side{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/cable/layer1, -/turf/open/floor/iron, -/area/station/engineering/main) +/area/station/engineering/storage_shared) +"aoB" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/station/command/meeting_room) "aoX" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/wall, -/area/station/maintenance/department/science) +/turf/open/floor/wood, +/area/station/smithing) +"aoZ" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central) "apg" = ( /obj/machinery/netpod, /turf/open/floor/catwalk_floor/iron_dark, /area/station/security/bitden) "api" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/landmark/start/cargo_technician, /turf/open/floor/iron, /area/station/cargo/sorting) +"apm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) +"apr" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/service/library) "apt" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/obj/machinery/light/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) "apw" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/carpet/red, -/area/station/commons/dorms) -"apA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) -"apE" = ( -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) +/area/station/commons/dorms/room6) "apJ" = ( /obj/structure/cable, /obj/machinery/camera/emp_proof/directional/north{ @@ -889,7 +949,8 @@ /area/station/ai_monitored/turret_protected/aisat/foyer) "aqj" = ( /obj/machinery/light/directional/west, -/obj/structure/chair/comfy/beige, +/obj/structure/chair/comfy/brown, +/obj/effect/landmark/start/hangover, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) "aqA" = ( @@ -911,13 +972,23 @@ }, /turf/open/floor/iron, /area/station/science/robotics/lab) +"aqI" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/modular_computer/preset/engineering{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "aqP" = ( /obj/machinery/door/firedoor/heavy, /obj/machinery/door/airlock/atmos/glass{ name = "Turbine Access" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 4 + }, /turf/open/floor/catwalk_floor, /area/station/engineering/atmos) "aqQ" = ( @@ -933,11 +1004,17 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "aqW" = ( -/obj/effect/turf_decal/stripes/end{ +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ dir = 1 }, -/obj/structure/cable, -/turf/open/floor/engine/telecomms, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1 + }, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) "ara" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -958,7 +1035,7 @@ }, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/port/fore) +/area/station/service/hydroponics/garden) "arJ" = ( /obj/machinery/duct, /turf/open/floor/carpet/neon/simple/pink, @@ -988,61 +1065,40 @@ /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) "arQ" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/computer/records/medical/laptop, -/obj/machinery/door/window/brigdoor/right/directional/south{ - name = "Blueshield Office"; - req_access = list("command") - }, /obj/machinery/door/poddoor/shutters{ - id = "blueshield_office"; - name = "blueshield_shutters" + id = "heads_meeting"; + dir = 1 }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) +/turf/open/floor/plating, +/area/station/command/meeting_room) "arR" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/light/directional/north, +/obj/machinery/status_display/evac/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/engineering/main) "arU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /obj/effect/mapping_helpers/airlock/unres{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) "asi" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, /area/station/hallway/primary/aft) -"asp" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) "ast" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -1084,13 +1140,14 @@ /obj/machinery/light/small/directional/east, /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, +/obj/machinery/camera/directional/east{ + c_tag = "Cargo - Delivery Office, East"; + name = "cargo camera" + }, /turf/open/floor/iron/dark/side{ dir = 4 }, /area/station/cargo/sorting) -"atm" = ( -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) "ats" = ( /obj/machinery/camera/directional/west{ c_tag = "Security - Escape Pod Bay 3"; @@ -1106,6 +1163,7 @@ dir = 1 }, /obj/machinery/light/small/directional/north, +/obj/structure/chair, /turf/open/floor/iron/white, /area/station/science/research) "atv" = ( @@ -1113,6 +1171,20 @@ /obj/effect/landmark/blobstart, /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) +"atM" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/obj/machinery/light/directional/west, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/hallway/primary/aft) "atN" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output{ dir = 8 @@ -1120,19 +1192,30 @@ /turf/open/floor/engine/plasma, /area/station/engineering/atmos) "atO" = ( -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 4 }, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; name = "O2 Outlet Pump" }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"atS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/defibrillator_mount/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "atW" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, /obj/machinery/light/small/directional/south, -/obj/machinery/firealarm/directional/south, +/obj/machinery/station_map/directional/south, /obj/structure/table/wood, /obj/item/newspaper{ pixel_x = -5 @@ -1183,14 +1266,21 @@ /turf/open/floor/iron/white, /area/station/science/lab) "auk" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 +/obj/machinery/vending/sustenance, +/turf/open/floor/iron/dark, +/area/station/security/prison/mess) +"aul" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/cup/glass/coffee/no_lid{ + pixel_x = 7; + pixel_y = 9 }, -/obj/structure/chair, -/turf/open/floor/iron/dark/side{ - dir = 1 +/obj/item/reagent_containers/cup/glass/coffee/no_lid{ + pixel_x = -7; + pixel_y = 3 }, -/area/station/cargo/storage) +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "auu" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, @@ -1201,16 +1291,10 @@ /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) "auF" = ( -/obj/structure/sign/warning/electric_shock/directional/east, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"auG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "auK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1220,40 +1304,11 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"auL" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = -9; - pixel_y = 16 - }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_y = 16 - }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = 9; - pixel_y = 16 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage_shared) "auW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"avo" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/storage) "avz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/structure/cable, @@ -1267,17 +1322,21 @@ /turf/open/floor/iron/white, /area/station/security/medical) "avD" = ( -/obj/item/bot_assembly/floorbot, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/structure/chair/sofa/right/maroon{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) "avI" = ( /obj/machinery/light/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/status_display/evac/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) "avL" = ( /obj/effect/turf_decal/trimline/purple/filled/line, +/obj/machinery/light/small/directional/south, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, @@ -1295,6 +1354,14 @@ }, /turf/open/floor/iron/white, /area/station/science/explab) +"awn" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "aww" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 9 @@ -1303,18 +1370,29 @@ /turf/open/floor/iron/white, /area/station/science/research) "awE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 +/obj/effect/turf_decal/bot_white, +/obj/structure/cargo_shelf, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron, +/area/station/cargo/warehouse) +"awG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "awI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall/r_wall, /area/station/science/ordnance/burnchamber) "awX" = ( -/obj/structure/chair/stool/directional/west, +/obj/structure/chair/plastic{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/security/prison) "axc" = ( @@ -1328,39 +1406,29 @@ /obj/effect/spawner/random/food_or_drink/refreshing_beverage, /turf/open/floor/wood, /area/station/commons/locker) -"axv" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/iv_drip, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"axx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/decal/cleanable/blood/splatter, -/obj/item/restraints/handcuffs/cable/zipties/used, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) +"axo" = ( +/obj/structure/flora/bush/jungle/c/style_random, +/obj/item/food/grown/banana, +/turf/open/floor/grass, +/area/station/medical/virology) "axF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +/obj/effect/turf_decal/trimline/neutral/line, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) "axG" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/department/science) "axH" = ( -/obj/structure/cable, +/obj/effect/turf_decal/bot_white, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/delivery/white, +/obj/structure/cable, /obj/structure/tank_dispenser/oxygen, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) @@ -1392,13 +1460,27 @@ /area/station/security/execution/transfer) "ayh" = ( /obj/effect/turf_decal/box, -/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/security/checkpoint/customs/auxiliary) "ayi" = ( -/turf/open/floor/carpet, -/area/station/service/library) +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) +"ayn" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/reagent_dispensers/plumbed{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/security/prison) "ayq" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 @@ -1410,28 +1492,33 @@ dir = 8 }, /obj/effect/landmark/start/security_assistant, +/obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark, /area/station/security/brig) "ayr" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/chair/office/light{ - dir = 4 +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/obj/effect/landmark/start/captain, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/security/checkpoint/medical) "ayu" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, /obj/machinery/space_heater, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) "azm" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 }, /obj/effect/turf_decal/trimline/dark_blue/line, +/obj/machinery/camera/directional/north{ + c_tag = "Hallway - West, Eastern End"; + name = "hallway camera" + }, +/obj/machinery/light/small/directional/north, /obj/structure/sign/departments/aiupload/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, @@ -1445,28 +1532,74 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) +"azt" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/item/radio/intercom/directional/south, +/obj/machinery/computer/operating{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"azx" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, +/obj/machinery/shower/directional/east, +/obj/structure/drain, +/turf/open/floor/iron/white/textured_large, +/area/station/medical/storage) +"azD" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/security/brig) "azE" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/port) -"azM" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/yellow/corner, -/obj/machinery/newscaster/directional/north, -/obj/machinery/station_map/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "azP" = ( /turf/open/floor/iron/dark/side{ dir = 10 }, /area/station/hallway/secondary/service) "azW" = ( -/turf/open/floor/iron/sepia, -/area/station/service/library/artgallery) +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/obj/structure/table, +/obj/item/clothing/suit/hazardvest{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/suit/hazardvest{ + pixel_x = 3 + }, +/obj/item/clothing/mask/gas{ + pixel_y = -3; + pixel_x = -6 + }, +/obj/item/clothing/mask/gas{ + pixel_y = 3; + pixel_x = -6 + }, +/obj/item/tank/internals/oxygen/yellow{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_y = 3 + }, +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_x = 3 + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/storage_shared) "aAl" = ( /turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) @@ -1480,10 +1613,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"aAF" = ( -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "aAJ" = ( /obj/effect/turf_decal/tile/neutral/anticorner{ dir = 4 @@ -1515,6 +1644,15 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"aAY" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/holopad, +/obj/machinery/duct, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/storage) "aBj" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -1549,11 +1687,6 @@ /obj/structure/sign/departments/medbay/alt/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"aBA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/confetti, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "aBC" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/machinery/power/apc/auto_name/directional/north, @@ -1572,16 +1705,11 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/grass, /area/station/service/hydroponics) -"aBM" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, +"aBV" = ( /obj/machinery/light/small/directional/west, -/obj/machinery/firealarm/directional/west, -/obj/machinery/airalarm/directional/north, -/obj/structure/table/glass, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/command/heads_quarters/cmo) +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) "aBX" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -1592,23 +1720,25 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark/textured, /area/station/security/prison) -"aCw" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/table/reinforced, -/obj/item/disk/nuclear/fake/obvious{ - name = "nuclear authentication disk" +"aCx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/fore) "aCA" = ( /obj/structure/chair/sofa/bench/left, /turf/open/floor/plating, /area/station/maintenance/department/cargo) "aCF" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/large, -/area/station/engineering/storage_shared) +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/cable_coil/cut, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "aCG" = ( /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 4 @@ -1617,57 +1747,10 @@ dir = 4 }, /area/station/cargo/storage) -"aDe" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"aDs" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/structure/rack, -/obj/item/storage/belt/utility, -/obj/item/storage/box, -/obj/item/storage/box, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/break_room) -"aDA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/medical/cryo) -"aDP" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "aDR" = ( /obj/effect/landmark/blobstart, /turf/open/floor/wood, /area/station/maintenance/port/fore) -"aDS" = ( -/obj/machinery/washing_machine, -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/blood/gibs/old, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "aEc" = ( /obj/structure/cable, /obj/structure/chair{ @@ -1677,11 +1760,11 @@ /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "aEg" = ( -/obj/structure/cable, /obj/structure/disposalpipe/segment, -/obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/plating/reinforced, /area/station/science/xenobiology/hallway) "aEh" = ( @@ -1703,10 +1786,12 @@ /obj/effect/turf_decal/trimline/yellow/line{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/simple/pink/hidden{ + dir = 6 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 }, -/turf/open/floor/iron, /area/station/hallway/primary/aft) "aFe" = ( /obj/effect/turf_decal/stripes/line{ @@ -1740,6 +1825,12 @@ /obj/structure/cable/layer1, /turf/open/floor/iron, /area/station/engineering/storage) +"aFJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "aFL" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -1747,6 +1838,18 @@ /obj/item/stack/cable_coil, /turf/open/floor/plating/airless, /area/space/nearstation) +"aFN" = ( +/obj/structure/disposalpipe/sorting/mail/flip, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/mail_sorting/engineering/atmospherics, +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/iron, +/area/station/engineering/break_room) "aFZ" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -1757,15 +1860,16 @@ name = "Engineering Shared Storage" }, /obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/turf/open/floor/iron/textured, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "engi-shared-storage" + }, +/turf/open/floor/iron/dark/textured, /area/station/engineering/storage_shared) "aGa" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/structure/closet/crate, +/turf/open/floor/iron/dark/side{ + dir = 6 }, -/turf/open/floor/iron/dark, /area/station/security/prison/safe) "aGd" = ( /obj/effect/turf_decal/trimline/red/filled/line{ @@ -1775,18 +1879,11 @@ dir = 4 }, /obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/office) -"aGj" = ( -/turf/open/floor/wood, -/area/station/medical/psychology) -"aGn" = ( -/obj/structure/chair/comfy/black{ - dir = 4 +/obj/machinery/light_switch/directional/south{ + pixel_x = -8 }, -/obj/effect/landmark/start/captain, /turf/open/floor/iron/dark, -/area/station/command/meeting_room) +/area/station/security/office) "aGv" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 @@ -1801,20 +1898,11 @@ }, /area/station/cargo/storage) "aGG" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/maintenance/starboard/fore) +/turf/open/floor/iron/white/smooth_large, +/area/station/science/auxlab) "aGU" = ( /obj/item/radio/intercom/prison/directional/south, +/obj/structure/punching_bag, /turf/open/floor/iron/dark, /area/station/security/prison/workout) "aHm" = ( @@ -1830,6 +1918,10 @@ "aHD" = ( /turf/closed/wall, /area/station/medical/medbay/lobby) +"aHS" = ( +/obj/effect/spawner/xmastree, +/turf/open/floor/carpet, +/area/station/service/chapel) "aHT" = ( /obj/structure/cable, /obj/structure/cable/layer1, @@ -1848,55 +1940,42 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"aHW" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/delivery, -/obj/structure/sign/poster/contraband/lizard/directional/west, -/obj/machinery/door/window/right/directional/north{ - name = "Medical Delivieries"; - req_access = list("medical") - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) "aIe" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) "aIi" = ( /obj/effect/turf_decal/box, +/obj/machinery/duct, /obj/machinery/holopad, /turf/open/floor/iron/large, /area/station/engineering/main) "aIk" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/radio/intercom/directional/north, -/obj/machinery/light/small/directional/north, -/obj/machinery/computer/operating{ +/obj/structure/reagent_dispensers/plumbed{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/medical/exam_room) +/turf/open/floor/plating, +/area/station/maintenance/department/engineering/central) "aIn" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/light/directional/north, -/obj/structure/sign/warning/electric_shock/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, -/area/station/hallway/primary/fore) +/area/station/hallway/primary/central) "aIp" = ( /turf/open/floor/iron/dark/side, /area/station/commons/fitness) "aIr" = ( +/obj/machinery/status_display/evac/directional/east, /obj/structure/sign/warning/biohazard/directional/north, +/obj/effect/decal/cleanable/dirt, /obj/structure/chair, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "aIy" = ( /obj/structure/disposalpipe/segment{ @@ -1907,6 +1986,11 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"aIA" = ( +/obj/effect/turf_decal/box, +/obj/machinery/holopad, +/turf/open/floor/iron/large, +/area/station/engineering/storage_shared) "aIF" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/nitrogen, @@ -1924,11 +2008,27 @@ /turf/open/floor/iron/dark, /area/station/security/execution) "aIN" = ( +/turf/open/floor/iron/white, +/area/station/medical/chemistry) +"aIW" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/command/meeting_room) +"aIZ" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 5 + }, +/obj/machinery/station_map/directional/north, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"aJi" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "aJq" = ( /turf/open/floor/iron/dark/side{ dir = 10 @@ -1944,30 +2044,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"aJC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Cryogenics Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "aJH" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 @@ -1978,21 +2056,9 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "aJJ" = ( -/obj/effect/spawner/random/structure/chair_flipped, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"aJK" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/break_room) +/obj/effect/spawner/random/vending/snackvend, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "aJU" = ( /obj/machinery/atmospherics/components/unary/passive_vent{ dir = 1 @@ -2017,12 +2083,13 @@ }, /obj/effect/mapping_helpers/airlock/access/all/service/theatre, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/service/theater) "aJZ" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, /obj/item/radio/intercom/directional/west, +/obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/computer/records/security{ dir = 4 }, @@ -2057,21 +2124,14 @@ /area/station/service/hydroponics/garden) "aKM" = ( /obj/machinery/button/door/directional/south{ - id = "qm_privacy"; + id = "qm_office_shutters"; name = "Privacy Shutters Control" }, -/obj/structure/closet/secure_closet/quartermaster, /obj/machinery/light/small/directional/east, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/closet/secure_closet/quartermaster, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) -"aKQ" = ( -/obj/structure/flora/grass/jungle/b/style_random, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/leafy, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/grass, -/area/station/command/bridge) "aKS" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, @@ -2085,25 +2145,16 @@ /obj/effect/landmark/start/clown, /turf/open/floor/eighties/red, /area/station/service/theater) -"aLm" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/engineering/break_room) "aLo" = ( /turf/open/floor/iron/white, /area/station/science/circuits) "aLp" = ( -/obj/machinery/light/small/directional/east, -/obj/structure/reagent_dispensers/plumbed{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/security/brig) "aLr" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 @@ -2115,10 +2166,6 @@ dir = 1 }, /area/station/cargo/miningoffice) -"aLO" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "aLZ" = ( /obj/structure/sign/poster/official/random/directional/north, /obj/structure/closet/wardrobe/mixed, @@ -2133,6 +2180,7 @@ "aMo" = ( /obj/machinery/light/small/directional/north, /obj/structure/sign/warning/electric_shock/directional/north, +/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/fore) @@ -2140,19 +2188,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/obj/machinery/duct, +/turf/open/floor/iron/dark/side, +/area/station/service/janitor) "aMD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/wood, /area/station/service/bar/backroom) "aMI" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "robotics_sci_shutters"; - name = "Robotics Shutters" + name = "Robotics Shutters"; + dir = 1 }, /turf/open/floor/plating, /area/station/science/robotics/lab) @@ -2163,77 +2211,51 @@ /area/station/service/chapel/funeral) "aMX" = ( /obj/machinery/light/small/directional/south, -/obj/machinery/camera/autoname/directional/south{ - dir = 5 - }, +/obj/machinery/camera/autoname/directional/south, /obj/machinery/duct, /turf/open/floor/carpet/red, /area/station/security/prison/safe) "aNk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/wood, -/area/station/commons/dorms) -"aNl" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/item/stamp/head/hop, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/hop) +/area/station/commons/dorms/room5) "aNs" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/firealarm/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/north{ - pixel_x = -8 + pixel_x = 5 }, /obj/structure/rack, /obj/item/storage/briefcase, /turf/open/floor/wood, /area/station/security/detectives_office) "aNz" = ( -/obj/machinery/light/directional/west, -/obj/machinery/field/generator, +/obj/machinery/light/small/directional/south, +/obj/machinery/power/rad_collector, /turf/open/floor/plating, /area/station/engineering/main) "aNK" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"aNM" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) "aNT" = ( -/obj/machinery/camera/autoname/directional/east{ - dir = 6 +/obj/machinery/camera/directional/east{ + c_tag = "Hallway - Central, Park, West"; + name = "hallway camera" }, /obj/machinery/light/small/directional/east, -/obj/structure/table/wood/fancy/cyan, -/obj/item/storage/photo_album{ - pixel_y = 2 - }, -/obj/item/reagent_containers/cup/glass/trophy/bronze_cup{ - name = "Foam force security team competition 3rd place"; - pixel_x = 8; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/glass/trophy/silver_cup{ - name = "Head of shitcurity competition 2nd place"; - pixel_y = 8 - }, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) +/turf/open/floor/grass, +/area/station/hallway/primary/central) +"aNX" = ( +/obj/effect/turf_decal/vg_decals/atmos/mix, +/turf/open/floor/engine/vacuum, +/area/station/engineering/atmos) "aOj" = ( /obj/effect/turf_decal/trimline/green/line{ dir = 4 @@ -2243,14 +2265,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"aOn" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "aOv" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -2276,11 +2290,19 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, /area/station/security/holding_cell) +"aOO" = ( +/obj/structure/table/wood, +/obj/item/stack/package_wrap, +/turf/open/floor/wood, +/area/station/service/library/lounge) +"aOQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "aOU" = ( -/obj/effect/turf_decal/delivery/red, -/obj/machinery/suit_storage_unit/void_old, -/obj/machinery/light/small/broken/directional/west, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/chair_maintenance, +/turf/open/floor/plating, /area/station/maintenance/starboard/aft) "aOY" = ( /obj/structure/frame/computer{ @@ -2325,24 +2347,17 @@ /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/entry) "aPy" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 4 - }, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) -"aPW" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 5 - }, -/obj/machinery/camera/directional/east{ - c_tag = "Security - Engineering Post"; - name = "security camera" - }, -/obj/machinery/airalarm/directional/east, -/obj/structure/filingcabinet/security, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) +/obj/effect/turf_decal/box, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/office) +"aQh" = ( +/obj/item/radio/intercom/directional/east, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/station/commons/dorms/room5) "aQt" = ( /obj/structure/cable, /obj/machinery/power/smes, @@ -2359,49 +2374,35 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/structure/closet/crate/secure/gear{ - req_access = list("brig"); - name = "Blue Shift Uniform Crate" - }, -/obj/item/clothing/under/rank/security/officer/blueshirt, -/obj/item/clothing/under/rank/security/officer/blueshirt, -/obj/item/clothing/under/rank/security/officer/blueshirt, -/obj/item/clothing/under/rank/security/officer/blueshirt, -/obj/item/clothing/under/rank/security/officer/blueshirt, -/obj/item/clothing/suit/armor/vest/blueshirt, -/obj/item/clothing/suit/armor/vest/blueshirt, -/obj/item/clothing/suit/armor/vest/blueshirt, -/obj/item/clothing/suit/armor/vest/blueshirt, -/obj/item/clothing/suit/armor/vest/blueshirt, -/obj/item/clothing/head/helmet/blueshirt, -/obj/item/clothing/head/helmet/blueshirt, -/obj/item/clothing/head/helmet/blueshirt, -/obj/item/clothing/head/helmet/blueshirt, -/obj/item/clothing/head/helmet/blueshirt, /obj/effect/turf_decal/bot_white{ color = "#1d5cdf" }, +/obj/structure/closet/crate/secure/gear/blueshirt, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"aQC" = ( -/obj/effect/spawner/random/maintenance/three, -/obj/effect/decal/cleanable/blood/tracks{ +"aQG" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) -"aQG" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/security/courtroom) +/obj/effect/turf_decal/trimline/red/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) "aRd" = ( +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/showroomfloor, /area/station/command/heads_quarters/rd) +"aRv" = ( +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "aRy" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -2418,26 +2419,23 @@ /turf/open/floor/iron/dark/textured, /area/station/security/prison/safe) "aRz" = ( -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) "aRB" = ( -/obj/effect/turf_decal/delivery/red, +/obj/effect/turf_decal/bot_red, +/obj/structure/cable, /obj/machinery/suit_storage_unit/standard_unit, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/command/storage/eva) -"aRH" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) "aRJ" = ( /obj/effect/turf_decal/trimline/purple/filled/line, +/obj/machinery/light/small/directional/south, /obj/machinery/button/door/directional/south{ id = "robotics_pub_shutters"; - name = "Robotics Privacy Shutters Control"; + name = "Robotics Shutters Control"; pixel_x = 6; req_access = list("robotics") }, -/obj/machinery/light/directional/south, /turf/open/floor/iron, /area/station/science/robotics/lab) "aRM" = ( @@ -2454,7 +2452,7 @@ dir = 1 }, /turf/open/floor/plating, -/area/station/maintenance/port/fore) +/area/station/commons/fitness) "aSa" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/effect/turf_decal/tile/neutral/half{ @@ -2472,9 +2470,13 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) -"aSg" = ( -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +"aSj" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "aSr" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 6 @@ -2482,6 +2484,11 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/white, /area/station/science/research) +"aSs" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "aSt" = ( /obj/docking_port/stationary{ dir = 8; @@ -2494,40 +2501,17 @@ /turf/open/space/basic, /area/space) "aSx" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/small/directional/north, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/engineering/main) +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "aSC" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 4 - }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/vending/cigarette, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) "aSD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) "aSF" = ( /obj/effect/turf_decal/stripes/line{ @@ -2547,12 +2531,11 @@ /turf/open/floor/iron/textured, /area/station/science/robotics/mechbay) "aSJ" = ( -/obj/structure/closet/firecloset{ - anchored = 1 - }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/structure/closet/cardboard, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "aSO" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -2567,12 +2550,10 @@ /obj/effect/mapping_helpers/airlock/access/all/service/general, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/hallway/secondary/service) "aSP" = ( /obj/machinery/light/small/directional/south, -/obj/machinery/camera/autoname/directional/south{ - dir = 5 - }, +/obj/machinery/camera/autoname/directional/south, /obj/machinery/duct, /turf/open/floor/carpet/blue, /area/station/security/prison/safe) @@ -2588,18 +2569,11 @@ /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /obj/machinery/door/poddoor/shutters{ - id = "departures_security_post"; - name = "Security Post Shutters" + id = "departures_security_checkpoint"; + name = "Security Checkpoint Shutters" }, /turf/open/floor/plating, /area/station/security/checkpoint/escape) -"aTh" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) "aTl" = ( /obj/structure/cable, /obj/machinery/light/directional/north, @@ -2608,7 +2582,7 @@ /turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) "aTv" = ( -/obj/structure/chair/stool/directional/south, +/obj/structure/chair/plastic, /obj/machinery/flasher/directional/west{ id = "visitation_prisoner_flash" }, @@ -2619,9 +2593,11 @@ dir = 5 }, /obj/machinery/light_switch/directional/north{ - pixel_x = -11 + pixel_x = -5 + }, +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 }, -/obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/engineering/storage) "aTC" = ( @@ -2634,7 +2610,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/hallway/primary/aft) "aTS" = ( /obj/machinery/light/small/directional/west, @@ -2665,7 +2643,9 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "aUn" = ( -/obj/structure/table, +/obj/machinery/computer/security{ + dir = 1 + }, /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, /area/station/security/prison/visit) @@ -2674,10 +2654,19 @@ dir = 1 }, /obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_large, +/obj/machinery/door/airlock/command{ + name = "MiniSat Pod Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/minisat, +/obj/effect/landmark/navigate_destination/minisat_access_ai, /turf/open/floor/iron/dark/textured, -/area/station/service/library/lounge) +/area/station/engineering/transit_tube) "aUs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2688,17 +2677,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"aUx" = ( -/obj/machinery/duct, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/table/wood, -/obj/item/radio/intercom/directional/west, -/obj/machinery/fax{ - fax_name = "Captain's Office"; - name = "Captain's Fax Machine" - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "aUL" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/maintenance, @@ -2711,36 +2689,12 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"aUS" = ( -/obj/effect/turf_decal/trimline/red/filled/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"aUW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/construction) "aVt" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/iron, /area/station/cargo/warehouse) -"aVy" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/storage/tech) "aVA" = ( /obj/machinery/light/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ @@ -2769,15 +2723,10 @@ /turf/open/space/basic, /area/space/nearstation) "aVI" = ( -/obj/machinery/light/small/directional/east, -/obj/structure/closet/crate/trashcart/laundry, -/obj/item/clothing/neck/scarf/black, -/obj/item/clothing/neck/scarf/purple, -/obj/item/clothing/neck/scarf/yellow, -/obj/item/clothing/neck/tie/black, -/obj/item/clothing/neck/tie/black, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/status_display/evac/directional/east, +/turf/open/floor/iron, +/area/station/engineering/main) "aVO" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 @@ -2832,6 +2781,23 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, /area/station/science/breakroom) +"aWN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/corporate{ + name = "Blueshield's Quarters" + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/blueshield) "aXb" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -2851,16 +2817,19 @@ /turf/open/floor/plating, /area/station/maintenance/department/science) "aXg" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) -"aXm" = ( +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) +"aXm" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "aXn" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -2870,56 +2839,58 @@ /obj/structure/table, /obj/item/stack/cable_coil/five, /obj/item/wallframe/camera, -/obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) "aXB" = ( /obj/effect/spawner/random/trash/box, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"aXE" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/sign/warning/secure_area/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/item/kirbyplants/photosynthetic, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) "aXI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) "aXJ" = ( /obj/effect/turf_decal/trimline/brown/filled/line, +/obj/machinery/light/small/directional/south, /obj/machinery/newscaster/directional/south, /obj/structure/disposalpipe/segment{ dir = 9 }, /turf/open/floor/iron/dark/side, /area/station/cargo/sorting) -"aXN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "aYa" = ( -/obj/structure/noticeboard/directional/west, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters{ + id = "apothecary_sec_desk_shutters"; + name = "Apothecary Secodary Desk Shutters"; + dir = 8 + }, +/turf/open/floor/plating, +/area/station/medical/pharmacy) "aYn" = ( /obj/effect/spawner/random/structure/table, /obj/item/poster/random_official, /obj/effect/spawner/random/bureaucracy/stamp, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"aYs" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron, -/area/station/engineering/storage) +"aYt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/components/binary/pump, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "aYu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /turf/open/floor/stone, /area/station/smithing) "aYE" = ( @@ -2928,37 +2899,20 @@ }, /obj/effect/turf_decal/bot, /obj/structure/closet/secure_closet/security/sec, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) -"aYM" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/obj/machinery/light/directional/east, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "aZc" = ( /obj/structure/chair/office{ dir = 4 }, -/obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) "aZe" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/closet, +/obj/item/airlock_painter, +/turf/open/floor/iron, +/area/station/maintenance/port/fore) "aZn" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -2969,27 +2923,12 @@ }, /turf/open/floor/engine, /area/station/security/execution) -"aZq" = ( -/turf/closed/wall, -/area/station/command/heads_quarters/cmo) -"aZB" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "aZW" = ( -/obj/structure/table, -/obj/machinery/recharger, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, /obj/machinery/light/directional/south, +/obj/machinery/newscaster/directional/south, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) "baq" = ( @@ -3010,10 +2949,11 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) -"baC" = ( +"bay" = ( +/obj/machinery/light/directional/north, /obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) "baD" = ( /obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -3045,24 +2985,10 @@ "baP" = ( /obj/machinery/light/built/directional/west, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"baU" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Bridge - Port"; - name = "command camera" - }, -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/storage/medkit/advanced, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "bbc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/event_spawn, +/obj/effect/mapping_helpers/ianbirthday, /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/hop) "bbe" = ( @@ -3071,6 +2997,11 @@ }, /turf/open/floor/engine/o2, /area/station/engineering/atmos) +"bbj" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/wood, +/area/station/service/library/lounge) "bbl" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -3080,20 +3011,19 @@ }, /turf/open/floor/iron/dark, /area/station/science/robotics/mechbay) -"bbm" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/engine/atmos) "bbw" = ( -/obj/structure/chair/comfy/beige{ +/obj/structure/chair/comfy/brown{ dir = 1 }, /obj/effect/landmark/start/assistant, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) +"bbG" = ( +/obj/machinery/light/small/broken/directional/south, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "bbI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -3138,8 +3068,8 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/poddoor/preopen{ id = "execution_fireblast" }, @@ -3166,12 +3096,29 @@ }, /area/station/hallway/secondary/service) "bcw" = ( -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) -"bcF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/item/radio/intercom/directional/west, +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) +"bcz" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, +/obj/machinery/camera/directional/west{ + c_tag = "Medical - Operating Room"; + name = "medical camera"; + network = list("ss13","medbay") + }, +/obj/structure/table/reinforced/rglass, +/obj/item/clothing/gloves/latex, +/obj/item/storage/box/gloves, +/turf/open/floor/iron/white, +/area/station/medical/surgery) +"bcF" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "bcQ" = ( @@ -3180,41 +3127,21 @@ /turf/open/space, /area/station/solars/starboard/fore) "bdb" = ( -/obj/machinery/light/dim/directional/west, -/obj/machinery/light/neon_lining{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/carpet/black, -/area/station/security/bitden) -"bde" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) +/obj/machinery/oven/range, +/turf/open/floor/iron/kitchen, +/area/station/security/prison/mess) "bdf" = ( -/obj/machinery/camera/autoname/directional/west, +/obj/machinery/light/directional/west, /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, /area/station/security/prison/workout) "bdg" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 9 }, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/service/abandoned_gambling_den) "bdl" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, @@ -3231,6 +3158,12 @@ dir = 5 }, /area/station/security/prison/workout) +"bdx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/obj/effect/spawner/random/trash/cigbutt, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "bdX" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 6 @@ -3263,6 +3196,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "beQ" = ( @@ -3270,22 +3206,13 @@ dir = 8 }, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) "beS" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/science) "beT" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -3295,34 +3222,76 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"bfb" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/window/reinforced/spawner/directional/east, +"beU" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/hallway/secondary/exit/departure_lounge) "bff" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/engineering/storage) +"bfl" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/machinery/firealarm/directional/west{ + pixel_y = 5 + }, +/obj/machinery/light_switch/directional/west{ + pixel_y = -5 + }, +/turf/open/floor/iron/white, +/area/station/medical/storage) "bfn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/prison/workout) +/obj/machinery/light/directional/west, +/obj/structure/table/reinforced, +/obj/item/book/manual/wiki/cooking_to_serve_man, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_x = 9; + pixel_y = 3 + }, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/rice{ + pixel_x = -3 + }, +/obj/item/reagent_containers/condiment/sugar{ + pixel_x = -6 + }, +/obj/item/storage/fancy/egg_box, +/turf/open/floor/iron/kitchen, +/area/station/security/prison/mess) "bfx" = ( -/obj/structure/sign/poster/random/directional/north, -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/machinery/door/poddoor/shutters{ + id = "maint_bar_shutters"; + name = "Bar Shutters"; + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/station/service/abandoned_gambling_den) "bfz" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/violet/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/simple/violet/visible/layer2, /turf/open/floor/engine, /area/station/science/ordnance/freezerchamber) +"bfP" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/chair/sofa/bench/right{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "bfQ" = ( /obj/machinery/atmospherics/components/tank/air, /turf/open/floor/plating, @@ -3336,13 +3305,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/duct, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering/glass{ name = "Engineering Shared Storage" }, /obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/machinery/duct, -/turf/open/floor/iron/textured, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "engi-shared-storage" + }, +/turf/open/floor/iron/dark/textured, /area/station/engineering/storage_shared) "bgd" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ @@ -3351,7 +3323,8 @@ /obj/effect/turf_decal/trimline/dark_blue/line, /obj/machinery/firealarm/directional/north, /obj/machinery/camera/directional/north{ - c_tag = "Central Hallway North-West" + c_tag = "Hallway - Central, North"; + name = "hallway camera" }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) @@ -3374,13 +3347,12 @@ }, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/service/hydroponics) "bgm" = ( /obj/machinery/light/built/directional/east, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/service/abandoned_gambling_den) "bgz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3388,7 +3360,7 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) "bgJ" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -3396,6 +3368,7 @@ }, /obj/effect/turf_decal/trimline/neutral/corner, /obj/structure/sign/warning/pods/directional/west, +/obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "bgK" = ( @@ -3407,6 +3380,21 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"bgN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"bgQ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "bhd" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -3414,7 +3402,7 @@ "bhf" = ( /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/plating, +/turf/open/floor/iron, /area/station/security/prison) "bhj" = ( /obj/effect/turf_decal/trimline/red/filled/line{ @@ -3427,6 +3415,10 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) +"bhk" = ( +/obj/structure/chair/wood, +/turf/open/floor/wood, +/area/station/service/library/lounge) "bho" = ( /turf/open/floor/carpet/red, /area/station/commons/vacant_room/office) @@ -3436,8 +3428,12 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "bhB" = ( -/obj/machinery/light_switch/directional/east, -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, /obj/machinery/pdapainter/research, /turf/open/floor/iron/showroomfloor, /area/station/command/heads_quarters/rd) @@ -3446,21 +3442,27 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/effect/mapping_helpers/airlock/locked, /obj/machinery/airlock_controller/incinerator_atmos{ - pixel_x = -24 + pixel_x = -24; + pixel_y = 6 }, /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) "bia" = ( +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/mob/living/basic/goat/pete, /obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) +"bid" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "bii" = ( /obj/machinery/biomass_recycler, /obj/item/stack/biomass, @@ -3470,6 +3472,18 @@ /obj/item/stack/biomass, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"bio" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/camera/directional/south{ + c_tag = "Medical - Departures Post"; + name = "medical camera"; + network = list("ss13","medbay") + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/machinery/medical_kiosk, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "bir" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/dark/side{ @@ -3477,13 +3491,12 @@ }, /area/station/commons/dorms) "biu" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 +/obj/structure/cable, +/obj/machinery/computer/crew{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/medical) "bix" = ( /obj/structure/table/wood, /obj/item/food/grown/harebell, @@ -3499,7 +3512,7 @@ /area/station/security/brig/entrance) "biI" = ( /obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/chair, +/obj/structure/chair/sofa/bench/left, /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) @@ -3508,15 +3521,14 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "bjf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/bed{ - dir = 4 - }, -/obj/item/bedsheet/dorms{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark/side, +/area/station/engineering/storage_shared) "bjg" = ( /obj/effect/turf_decal/trimline/brown/filled/warning{ dir = 8 @@ -3552,18 +3564,23 @@ /turf/open/floor/iron/dark, /area/station/science/robotics/mechbay) "bkB" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"bkC" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/machinery/newscaster/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "bkD" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/directional/east, @@ -3581,25 +3598,17 @@ /obj/effect/spawner/random/vending/colavend, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) -"bkV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line{ +"bkW" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/obj/effect/turf_decal/trimline/blue/line, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "ble" = ( /obj/machinery/atmospherics/pipe/smart/simple/brown/visible{ dir = 9 }, -/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) "blh" = ( @@ -3610,9 +3619,13 @@ dir = 4 }, /obj/structure/table, -/obj/item/hand_labeler{ - pixel_y = 8 +/obj/item/storage/box{ + pixel_y = 20 + }, +/obj/item/storage/box{ + pixel_y = 10 }, +/obj/item/storage/box, /turf/open/floor/iron/dark/corner{ dir = 1 }, @@ -3626,12 +3639,11 @@ }, /turf/closed/wall/r_wall, /area/station/engineering/atmos) -"blm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"blp" = ( /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/wood, +/area/station/command/meeting_room) "blv" = ( /turf/closed/wall, /area/station/engineering/main) @@ -3644,6 +3656,13 @@ }, /turf/open/floor/iron/dark/side, /area/station/cargo/storage) +"blB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/junction/yjunction, +/turf/open/floor/iron, +/area/station/engineering/break_room) "blC" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -3655,7 +3674,7 @@ id = "secondary_shop"; dir = 1 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured, /area/station/commons/vacant_room/commissary) "blE" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ @@ -3687,38 +3706,10 @@ /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron/dark, /area/station/security/evidence) -"bma" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/virology{ - autoclose = 0; - frequency = 1449; - id_tag = "pathology_airlock_exterior"; - name = "Pathology Exterior Airlock" - }, -/obj/machinery/door_buttons/access_button{ - dir = 1; - idDoor = "pathology_airlock_exterior"; - idSelf = "pathology_airlock_control"; - name = "Pathology Access Button"; - pixel_x = 24; - pixel_y = -2; - req_access = list("pathology") - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/iron/white/textured, -/area/station/medical/virology) -"bmp" = ( -/obj/machinery/door/airlock/grunge{ - id_tag = "toilet_1"; - name = "Stall 1" +"bmp" = ( +/obj/machinery/door/airlock/grunge{ + id_tag = "toilet_1"; + name = "Stall 1" }, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) @@ -3743,10 +3734,10 @@ }, /obj/machinery/door/firedoor, /obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "kitchen_sec_shutters"; name = "Kitchen Shutters"; - dir = 8 + dir = 4 }, /obj/structure/desk_bell{ pixel_y = 2; @@ -3755,17 +3746,10 @@ /turf/open/floor/iron/dark/textured, /area/station/service/kitchen) "bmT" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "atmos"; - name = "Atmospherics Blast Door" - }, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "atmos_rad_shutters"; - name = "Radiation Shutters" - }, +/obj/structure/table, +/obj/item/storage/pill_bottle, /turf/open/floor/plating, -/area/station/engineering/atmos/storage) +/area/station/maintenance/starboard/aft) "bna" = ( /obj/structure/sink/directional/south, /obj/structure/mirror/directional/north, @@ -3778,11 +3762,23 @@ "bnl" = ( /turf/closed/wall, /area/station/maintenance/port) +"bnn" = ( +/obj/machinery/light/directional/south, +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/prison/mess) "bnz" = ( /obj/machinery/light/small/directional/south, /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"bnA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "bnB" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/effect/turf_decal/trimline/neutral/line{ @@ -3802,18 +3798,9 @@ /obj/item/wirecutters, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) -"bnM" = ( -/obj/structure/sign/flag/nanotrasen/directional/west, -/obj/structure/bed/dogbed/runtime, -/mob/living/simple_animal/pet/cat/runtime, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/cmo) "bnP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/telecomms/processor/preset_four, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/server/presets/engineering, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) "bod" = ( /obj/effect/turf_decal/trimline/red/filled/line{ @@ -3850,25 +3837,9 @@ /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/obj/structure/table, /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"boj" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"bok" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "bop" = ( /obj/effect/turf_decal/box, /obj/effect/turf_decal/stripes/end{ @@ -3901,28 +3872,39 @@ /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) "boP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/food_or_drink/booze, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) +"bpc" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) -"boX" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/virology) +/area/station/engineering/storage/tech) "bpe" = ( /obj/structure/chair/office, /obj/effect/landmark/start/lawyer, /turf/open/floor/wood, /area/station/service/lawoffice) -"bpf" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 +"bpi" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, +/obj/effect/turf_decal/trimline/blue/warning{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/white, -/area/station/medical/break_room) +/area/station/medical/medbay/aft) "bpj" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -3931,15 +3913,9 @@ name = "Labor Camp Shuttle Airlock"; shuttledocked = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/dark/textured_large, /area/station/security/processing) -"bpr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/grass, -/area/station/medical/virology) "bpB" = ( /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, @@ -3949,12 +3925,11 @@ /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) "bpE" = ( -/obj/machinery/light/directional/west, +/obj/machinery/light/small/directional/west, /obj/item/radio/intercom/prison/directional/west, /turf/open/floor/iron/dark, /area/station/security/prison) "bpI" = ( -/obj/machinery/light/small/directional/south, /obj/machinery/cryopod{ dir = 4 }, @@ -3972,33 +3947,31 @@ /area/station/science/ordnance/office) "bpV" = ( /obj/machinery/light/small/directional/south, +/obj/machinery/firealarm/directional/south, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/iron/dark/side, /area/station/commons/locker) -"bqb" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 1 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "bqd" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/blood/gibs/old, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) -"bqv" = ( -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) +"bqk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "bqA" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 4 @@ -4015,10 +3988,15 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "bqH" = ( -/obj/item/ammo_casing/shotgun/improvised, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/line{ + dir = 4 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/dark, +/area/station/security/brig) "bqK" = ( /obj/docking_port/stationary/laborcamp_home{ dir = 8 @@ -4032,11 +4010,35 @@ }, /turf/open/floor/iron/dark/side, /area/station/cargo/miningoffice) +"bqQ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark/side, +/area/station/engineering/break_room) +"bqT" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Engineering - Atmospherics Office"; + name = "engineering camera" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/atmos/office) "brd" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, +/turf/open/floor/glass/reinforced, /area/station/commons/fitness/recreation) +"brh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "brx" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -4046,6 +4048,19 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/prison/safe) +"brE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/requests_console/directional/south{ + department = "Captain's Desk"; + name = "Captain's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "brU" = ( /obj/machinery/computer/telecomms/server{ dir = 4; @@ -4056,6 +4071,17 @@ }, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) +"brY" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_a) "bsd" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -4081,10 +4107,21 @@ /area/station/commons/toilet/restrooms) "bsg" = ( /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 4 }, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"bsj" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/blue/line, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "bsl" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -4116,36 +4153,24 @@ dir = 8 }, /obj/structure/closet/emcloset, +/obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"bsq" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/item/stack/ore/slag, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "bsx" = ( /obj/effect/turf_decal/tile/brown/fourcorners, -/obj/structure/window/reinforced/tinted/spawner/directional/south, +/obj/structure/window/reinforced/tinted, /obj/structure/toilet{ dir = 8 }, /turf/open/floor/iron/dark, /area/station/security/prison/safe) -"bsB" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/computer/rdconsole{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "bsK" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "atmos"; - name = "Atmospherics Blast Door" +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/engineering/atmos/office) +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/iron, +/area/station/engineering/storage) "bsR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4156,26 +4181,14 @@ /turf/open/floor/plating, /area/station/maintenance/port) "bsX" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/spawner/random/structure/table, -/obj/item/stack/rods/ten, -/obj/item/assembly/prox_sensor, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "btf" = ( /turf/open/floor/iron/dark/side{ dir = 6 }, /area/station/commons/fitness) -"btg" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/table/glass, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/construction/plumbing, -/obj/item/plunger, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "btl" = ( /obj/machinery/power/emitter, /turf/open/floor/plating, @@ -4210,47 +4223,9 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"btB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/frame/machine, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "btH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/door/airlock/engineering{ - name = "Main SMES Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/structure/cable/layer1, -/turf/open/floor/iron/textured, -/area/station/engineering/engine_smes) -"btK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"btS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/turf/open/floor/wood/large, +/area/station/commons/dorms/room1) "btZ" = ( /obj/structure/chair/office/light{ dir = 1 @@ -4258,22 +4233,39 @@ /obj/effect/landmark/start/research_director, /turf/open/floor/carpet/purple, /area/station/command/heads_quarters/rd) -"buz" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/chair{ +"buK" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 }, -/obj/effect/landmark/start/paramedic, -/turf/open/floor/iron, -/area/station/medical/paramedic) +/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/machinery/station_map/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) +"buM" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 + }, +/obj/machinery/camera/directional/south{ + c_tag = "Hallway - Central, Southeast"; + name = "hallway camera" + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "buR" = ( /obj/effect/turf_decal/trimline/brown/filled/line, /obj/structure/cable, /obj/item/kirbyplants/random, /turf/open/floor/iron/dark/side, /area/station/cargo/office) +"buX" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/machinery/light/directional/south, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "bva" = ( -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "bvc" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ @@ -4282,12 +4274,11 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "bvd" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/stripes/end{ dir = 8 }, -/obj/machinery/door/window{ - dir = 8; - name = "Mass Driver"; +/obj/machinery/door/window/left/directional/west{ + name = "Holy Mass Driver"; req_access = list("chapel_office") }, /obj/machinery/mass_driver/chapelgun{ @@ -4306,9 +4297,17 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "bvm" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/wood, -/area/station/service/library) +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark_blue/corner{ + dir = 8 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "bvp" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -4318,16 +4317,15 @@ /turf/open/floor/iron/dark/textured, /area/station/security/brig) "bvv" = ( -/obj/structure/table, -/obj/item/storage/toolbox/electrical, -/obj/item/crowbar/red, -/obj/item/weldingtool, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 }, /obj/machinery/light/small/directional/east, +/obj/machinery/status_display/evac/directional/east, +/obj/structure/table, +/obj/item/storage/toolbox/electrical, +/obj/item/crowbar/red, +/obj/item/weldingtool, /turf/open/floor/iron/dark/side{ dir = 4 }, @@ -4337,19 +4335,16 @@ dir = 6 }, /obj/structure/reagent_dispensers/wall/peppertank/directional/south, -/obj/structure/closet/secure_closet/security/science, +/obj/structure/closet/secure_closet/security/science/blueshirt, /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) "bvJ" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname/directional/west{ - dir = 10 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/obj/structure/liquid_pump, -/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/area/station/engineering/atmos/storage) "bvL" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/directional/north, @@ -4377,8 +4372,11 @@ }, /area/station/hallway/secondary/service) "bwg" = ( -/turf/closed/wall/r_wall, -/area/station/cargo/office) +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "bwt" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 @@ -4389,6 +4387,13 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) +"bwD" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/machinery/smartfridge/chemistry/preloaded, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "bwI" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 8 @@ -4399,9 +4404,41 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "bwJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) +/obj/structure/table, +/obj/effect/spawner/random/maintenance/four, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"bwK" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark/side, +/area/station/engineering/break_room) +"bwN" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/light/small/directional/north, +/obj/machinery/door/window/left/directional/south{ + name = "First-Aid Supplies"; + req_access = list("medical") + }, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/medkit/regular{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/storage/medkit/brute{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/brute, +/obj/item/storage/medkit/brute{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/iron/white, +/area/station/medical/storage) "bwW" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 1 @@ -4417,18 +4454,23 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 }, +/obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark, /area/station/security/processing) +"bxi" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/east, +/obj/structure/liquid_pump, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "bxx" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/obj/structure/rack{ - icon = 'icons/obj/stationobjs.dmi'; - icon_state = "minibar"; - name = "skeletal minibar" +/obj/structure/showcase/cyborg/old{ + dir = 4; + pixel_x = -9; + pixel_y = 2 }, -/obj/item/storage/fancy/candle_box, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) "bxy" = ( /obj/item/stack/rods/fifty, /obj/structure/rack, @@ -4447,30 +4489,46 @@ /obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/iron, /area/station/maintenance/department/electrical) +"bxz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Closet" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "bxE" = ( -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/dark, -/area/station/service/chapel) +/obj/effect/decal/cleanable/dirt, +/obj/structure/ghost_critter_spawn, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "bxK" = ( -/obj/machinery/computer/security/telescreen/vault{ - pixel_y = 30 - }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/light/directional/north, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, /obj/structure/disposalpipe/trunk{ dir = 4 }, /obj/machinery/disposal/bin, -/obj/machinery/light/directional/north, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) -"bxO" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "medbay_desk_shutters"; - name = "Medbay Front Desk Shutters"; - dir = 4 +"bxN" = ( +/obj/item/radio/intercom/directional/west, +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/folder, +/obj/item/pen/fountain, +/obj/item/pen{ + pixel_x = -3; + pixel_y = -3 }, -/turf/open/floor/plating, -/area/station/medical/office) +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "bxZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, /turf/open/floor/engine, @@ -4510,6 +4568,15 @@ /obj/machinery/clonepod, /turf/open/floor/iron/white, /area/station/science/genetics/cloning) +"bys" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "byC" = ( /obj/structure/lattice, /obj/structure/sign/warning/secure_area/directional/south, @@ -4522,13 +4589,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"byP" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/structure/table/wood, -/obj/item/clothing/neck/stethoscope, -/obj/item/flashlight/pen, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/cmo) "byR" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -4540,6 +4600,24 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"bzm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/box, +/obj/machinery/holopad, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) +"bzp" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "bzw" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -4558,13 +4636,17 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, -/area/station/maintenance/port/aft) -"bzE" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/engineering/break_room) +/area/station/maintenance/department/engine) +"bzB" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"bzD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "bzJ" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/machinery/computer/nanite_cloud_controller, @@ -4585,7 +4667,7 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "bzX" = ( -/obj/machinery/light/floor/has_bulb, +/obj/machinery/light/small/directional/west, /turf/open/floor/iron/white/smooth_large, /area/station/science/auxlab) "bAg" = ( @@ -4598,9 +4680,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"bAD" = ( -/turf/closed/wall, -/area/station/medical/surgery) "bAF" = ( /obj/effect/decal/cleanable/cobweb, /obj/structure/table/wood, @@ -4621,6 +4700,14 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"bBd" = ( +/obj/structure/cable, +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/landmark/start/head_of_personnel, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/hop) "bBA" = ( /obj/item/radio/intercom/directional/west, /obj/machinery/status_display/evac/directional/south, @@ -4629,9 +4716,25 @@ /area/station/service/chapel/funeral) "bBE" = ( /obj/effect/spawner/structure/window, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/security/courtroom) +"bBK" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/light_switch/directional/west, +/obj/structure/rack, +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = 7 + }, +/obj/item/storage/medkit/regular{ + pixel_y = 3 + }, +/obj/item/storage/box/bodybags, +/turf/open/floor/iron/white, +/area/station/security/medical) "bBO" = ( /obj/effect/turf_decal/box/white{ color = "#EFB341" @@ -4643,22 +4746,23 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, /area/station/maintenance/port) -"bBQ" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/airalarm/directional/east, -/obj/item/radio/intercom/directional/north, -/obj/machinery/computer/atmos_alert{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) +"bBR" = ( +/obj/effect/turf_decal/stripes/end, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/shower/directional/south, +/turf/open/floor/iron/white/textured, +/area/station/security/medical) "bCg" = ( -/obj/machinery/light/small/built/directional/north, -/obj/structure/toilet{ - dir = 4 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 }, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) +/obj/machinery/airalarm/directional/north, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/office) "bCh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, @@ -4685,7 +4789,7 @@ /area/station/maintenance/department/science/xenobiology) "bCy" = ( /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "bCK" = ( /obj/structure/bonfire, /turf/open/floor/plating, @@ -4701,37 +4805,16 @@ /obj/machinery/processor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"bDe" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/button/door/directional/north{ - id = "medbay_foyer"; - name = "Medbay Doors Control"; - req_access = list("medical"); - desc = "A remote control switch for the medbay foyer."; - normaldoorcontrol = 1; - pixel_x = -6 - }, -/obj/machinery/button/door/directional/north{ - name = "Medbay Front Desk Shutters Control"; - req_access = list("medical"); - pixel_x = 6; - id = "medbay_desk_shutters" - }, -/obj/machinery/computer/records/medical{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) "bDm" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 }, /obj/machinery/requests_console/directional/north{ department = "Circuits Lab"; - name = "Circuits Lab Requests Console"; - receive_ore_updates = 1; - supplies_requestable = 1 + name = "Circuits Lab Requests Console" }, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/supplies, /obj/structure/table, /obj/item/storage/toolbox/electrical{ pixel_y = 10; @@ -4766,10 +4849,11 @@ /area/station/hallway/primary/central) "bDu" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/table/reinforced, /obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table/reinforced, /obj/item/storage/toolbox/emergency, /obj/item/crowbar/large, +/obj/item/radio, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) "bDz" = ( @@ -4778,7 +4862,7 @@ }, /obj/machinery/airalarm/directional/west, /obj/structure/table, -/obj/item/storage/box/donkpockets/donkpocketberry, +/obj/effect/spawner/random/food_or_drink/donkpockets, /turf/open/floor/iron/dark, /area/station/science/breakroom) "bDJ" = ( @@ -4793,14 +4877,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"bDR" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 9 - }, -/obj/structure/closet/secure_closet/security/med, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) "bDS" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -4826,6 +4902,10 @@ }, /turf/closed/wall/r_wall, /area/station/science/ordnance/burnchamber) +"bEE" = ( +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "bEF" = ( /turf/open/floor/iron/dark/side, /area/station/commons/fitness/recreation) @@ -4833,84 +4913,89 @@ /turf/closed/wall, /area/station/maintenance/department/electrical) "bEV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/auxiliary) "bFj" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair{ - dir = 1 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 }, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) +/obj/machinery/light/small/directional/east, +/obj/structure/sign/poster/official/random/directional/east, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, +/area/station/command/heads_quarters/ce) "bFv" = ( +/obj/effect/turf_decal/bot, /obj/machinery/firealarm/directional/north, /obj/machinery/camera/autoname/directional/north, -/obj/effect/turf_decal/bot, /obj/structure/closet/radiation, /turf/open/floor/iron, /area/station/science/ordnance) "bFw" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) +/obj/structure/closet/crate/hydroponics, +/obj/item/wrench, +/obj/item/shovel/spade, +/obj/item/hatchet, +/turf/open/floor/grass, +/area/station/hallway/primary/central) "bFF" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light_switch/directional/east, +/obj/item/radio/intercom/directional/west{ + broadcasting = 1; + frequency = 1447; + listening = 0; + name = "AI Private Channel" + }, /turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"bFK" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 +/area/station/ai_monitored/turret_protected/ai_upload) +"bFJ" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 9 }, -/turf/open/floor/iron/dark/side{ - dir = 4 +/obj/structure/table/reinforced/rglass, +/obj/machinery/reagentgrinder{ + pixel_y = 8 }, -/area/station/engineering/break_room) +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"bFK" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "bFX" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/construction/mining/aux_base) -"bFY" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/status_display/evac/directional/north, -/obj/structure/closet/secure_closet/engineering_personal, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/engineering/storage_shared) "bFZ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair{ dir = 8 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "bGd" = ( /obj/machinery/light/directional/east, -/obj/structure/closet/secure_closet/freezer/meat, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/closet/secure_closet/freezer/fridge, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) "bGl" = ( -/obj/structure/sink/kitchen/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, +/obj/structure/sink/kitchen/directional/east, /turf/open/floor/wood, -/area/station/service/bar/backroom) +/area/station/service/bar) "bGn" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -4922,17 +5007,12 @@ /obj/structure/cable/layer3, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) -"bGo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/construction) "bGu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/carpet/red, -/area/station/commons/dorms) +/area/station/commons/dorms/room6) "bGw" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -4984,9 +5064,19 @@ /turf/open/floor/iron, /area/station/engineering/main) "bGY" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + name = "Backup Waste In" + }, +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 1; + name = "Backp Air to Distro" + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured, /area/station/engineering/atmos) "bHc" = ( /obj/machinery/atmospherics/pipe/smart/simple/brown/visible{ @@ -5003,23 +5093,20 @@ "bHo" = ( /obj/machinery/light/small/directional/east, /obj/structure/sign/poster/random/directional/east, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/eva) -"bHE" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/firealarm/directional/north, -/obj/structure/table/glass, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "bHL" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 9 }, -/obj/machinery/firealarm/directional/north, +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = 5 + }, +/obj/item/kirbyplants/random, /turf/open/floor/iron/dark/side{ dir = 9 }, @@ -5072,40 +5159,57 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "bIk" = ( -/obj/machinery/power/port_gen/pacman/pre_loaded, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"bIt" = ( -/obj/effect/spawner/random/structure/table, -/obj/item/flashlight/flare/candle{ - pixel_x = 6 +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/item/flashlight/flare/candle{ - pixel_x = -6 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/fakeartefact, -/obj/machinery/light/small/broken/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/dark/textured, +/area/station/hallway/primary/central) +"bIt" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "cmo_desk_shutters"; + name = "Desk Shutters"; + dir = 1 + }, +/obj/structure/table, +/obj/item/stamp/head/cmo, +/turf/open/floor/iron/dark/side, +/area/station/command/heads_quarters/cmo) "bIu" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"bID" = ( +/turf/closed/wall, +/area/station/medical/break_room) "bIQ" = ( -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/library) -"bIY" = ( -/obj/structure/disposalpipe/junction/yjunction, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/engineering/break_room) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/medical_kiosk, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) +"bIY" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "bIZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5128,19 +5232,51 @@ dir = 4 }, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) +"bJj" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/structure/chair, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "bJn" = ( -/obj/structure/chair/wood{ +/obj/structure/chair/plastic{ dir = 1 }, /turf/open/floor/wood, /area/station/security/prison/rec) -"bJK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +"bJr" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/structure/bed{ + dir = 4 + }, +/obj/item/bedsheet/medical{ + dir = 4 }, /turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/area/station/medical/patients_rooms/room_b) +"bJw" = ( +/obj/effect/turf_decal/tile/dark_blue{ + dir = 1 + }, +/obj/machinery/camera/directional/north{ + c_tag = "Engineering - MiniSat Transit Pod Access, Internal"; + name = "engineering camera"; + network = list("ss13","rd","xeno_pens"); + start_active = 1 + }, +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = 5 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "bJL" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -5152,14 +5288,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "bridge_blast_doors"; - name = "Bridge Access Blast Door" - }, /obj/machinery/door/airlock/command/glass{ name = "Head of Personnel's Office" }, /obj/effect/mapping_helpers/airlock/access/all/command/hop, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/iron/dark/textured, /area/station/command/heads_quarters/hop) "bJM" = ( @@ -5182,32 +5317,21 @@ }, /turf/closed/wall/r_wall, /area/station/engineering/atmos) -"bJT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/airalarm/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "bJU" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/door/window/brigdoor/right/directional/west{ - name = "Chief Engineer's Desk"; - req_access = list("ce") +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 }, +/obj/machinery/airalarm/directional/south, +/obj/machinery/newscaster/directional/east, +/obj/structure/table/reinforced, +/obj/item/paper_bin, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/security/checkpoint/medical) "bJW" = ( -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/effect/spawner/random/engineering/material_cheap, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"bJZ" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/office) "bKb" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/effect/turf_decal/plaque{ @@ -5217,6 +5341,13 @@ /obj/structure/railing, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"bKe" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/sign/poster/official/ian/directional/east, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) "bKm" = ( /obj/effect/turf_decal/tile/neutral/anticorner{ dir = 1 @@ -5225,42 +5356,6 @@ /obj/effect/turf_decal/bot_white/right, /turf/open/floor/iron/dark/smooth_corner, /area/station/command/gateway) -"bKq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"bKE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"bKI" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - id_tag = "medbay_foyer"; - name = "Medbay" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/landmark/navigate_destination/med, -/turf/open/floor/iron/white/textured, -/area/station/medical/medbay/central) "bKL" = ( /obj/structure/curtain/cloth, /obj/machinery/duct, @@ -5284,49 +5379,46 @@ /turf/open/floor/iron, /area/station/service/hydroponics/garden) "bKR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 4 }, -/obj/machinery/telecomms/server/presets/security, -/turf/open/floor/engine/telecomms, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ + dir = 8 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) "bKW" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/item/storage/secure/safe/caps_spare/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "bKY" = ( -/obj/effect/decal/cleanable/generic, -/obj/structure/sign/poster/random/directional/north, -/obj/effect/spawner/random/structure/table, -/turf/open/floor/iron/dark, +/obj/machinery/light/small/directional/west, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, /area/station/maintenance/department/cargo) "bLy" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/science) -"bLz" = ( -/obj/effect/turf_decal/stripes/line{ +"bLC" = ( +/obj/structure/fireaxecabinet/directional/west, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"bLO" = ( +/obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 +/obj/machinery/power/apc/auto_name/directional/west, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/atmos/glass{ - name = "Distribution Loop" +/obj/machinery/light_switch/directional/south{ + pixel_x = -5 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos/pumproom) -"bLO" = ( /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, /obj/item/kirbyplants/random, -/obj/machinery/firealarm/directional/south, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) "bLR" = ( @@ -5346,7 +5438,7 @@ "bLX" = ( /obj/structure/closet/secure_closet/personal/cabinet, /turf/open/floor/wood/tile, -/area/station/commons/dorms) +/area/station/commons/dorms/room4) "bMc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5354,9 +5446,28 @@ /turf/open/floor/iron/dark/side, /area/station/commons/fitness) "bMe" = ( -/obj/item/radio/intercom/directional/east, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/layer1, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/engineering/main) +"bMh" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 + }, +/obj/structure/sign/poster/official/random/directional/south, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) "bMr" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -5399,14 +5510,13 @@ /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "bMS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/captain/private) +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "bMX" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, @@ -5414,14 +5524,16 @@ /turf/open/floor/wood, /area/station/security/detectives_office) "bNe" = ( -/obj/structure/chair/stool/directional/south, +/obj/structure/chair/plastic, /turf/open/floor/iron/dark, /area/station/security/prison) "bNi" = ( +/obj/machinery/status_display/ai/directional/east, +/obj/effect/decal/cleanable/dirt, /obj/structure/chair{ dir = 1 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "bND" = ( /obj/effect/turf_decal/trimline/green/filled/line, @@ -5442,21 +5554,6 @@ /obj/effect/landmark/start/shaft_miner, /turf/open/floor/iron/dark/side, /area/station/cargo/miningoffice) -"bNK" = ( -/obj/structure/rack, -/obj/item/tank/internals/oxygen, -/obj/item/clothing/mask/gas, -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"bNL" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 5 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) "bNU" = ( /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ dir = 4 @@ -5467,18 +5564,6 @@ }, /turf/open/floor/engine, /area/station/science/ordnance/burnchamber) -"bOg" = ( -/obj/structure/closet/crate/internals, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "bOr" = ( /turf/closed/mineral/random/stationside/asteroid, /area/station/asteroid) @@ -5501,18 +5586,42 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port) +"bOP" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard/aft) +"bOR" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/disposalpipe/junction/flip, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "bOS" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, +/obj/structure/extinguisher_cabinet/directional/west, /obj/structure/table, -/obj/item/paper_bin, -/obj/item/folder/yellow, -/obj/item/pen, +/obj/item/hand_labeler{ + pixel_y = 8 + }, /turf/open/floor/iron/dark/side{ dir = 8 }, /area/station/cargo/sorting) +"bOW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) "bPd" = ( /turf/open/floor/iron/dark, /area/station/service/chapel) @@ -5526,31 +5635,11 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"bPo" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light/small/directional/north, -/obj/machinery/light_switch/directional/north{ - pixel_x = -8 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"bPv" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/line{ +"bPp" = ( +/turf/open/floor/iron/dark/smooth_corner{ dir = 8 }, -/obj/machinery/light/small/directional/east, -/obj/machinery/airalarm/directional/east, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/area/station/service/chapel) "bPy" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 9 @@ -5560,12 +5649,28 @@ dir = 9 }, /area/station/service/hydroponics/garden) +"bPU" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/bluespace_beacon, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "bQk" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/warning{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/service/library/printer) +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"bQm" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "bQr" = ( /obj/effect/turf_decal/trimline/brown/filled/line, /obj/structure/chair{ @@ -5574,6 +5679,22 @@ /obj/effect/landmark/start/shaft_miner, /turf/open/floor/iron/dark/side, /area/station/cargo/miningoffice) +"bQu" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engineering/central) +"bQz" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/cable, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/landmark/start/captain, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "bQA" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 @@ -5584,17 +5705,12 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron/dark, /area/station/science/breakroom) -"bQB" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "bQC" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, /obj/machinery/washing_machine, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) "bQL" = ( /obj/effect/turf_decal/siding/thinplating{ @@ -5605,13 +5721,26 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) "bQP" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 6 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/item/storage/toolbox/mechanical, /turf/open/floor/iron, /area/station/science/ordnance/office) +"bQQ" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/warning{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "bQX" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 @@ -5627,26 +5756,11 @@ "bQY" = ( /turf/closed/wall, /area/station/service/library/artgallery) -"bRc" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 4 - }, -/obj/structure/sign/warning/electric_shock/directional/west, -/obj/item/kirbyplants/random, +"bRk" = ( +/obj/machinery/light/built/directional/south, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) -"bRg" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/area/station/service/abandoned_gambling_den) "bRx" = ( /obj/machinery/computer/telecomms/monitor{ dir = 4; @@ -5661,8 +5775,17 @@ /area/station/tcommsat/computer) "bRG" = ( /obj/structure/table/wood, +/obj/effect/spawner/random/food_or_drink/snack, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) +"bRX" = ( +/obj/structure/closet/l3closet/virology, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"bSb" = ( +/obj/structure/sink/kitchen/directional/south, +/turf/open/floor/iron/kitchen, +/area/station/security/prison/mess) "bSc" = ( /obj/effect/turf_decal/tile/green{ dir = 4 @@ -5684,8 +5807,20 @@ dir = 4 }, /obj/structure/sign/warning/pods/directional/west, +/obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"bSr" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners{ + dir = 1 + }, +/obj/machinery/newscaster/directional/south, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start/cook, +/turf/open/floor/iron/kitchen, +/area/station/service/kitchen) "bSC" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/effect/turf_decal/trimline/blue/line{ @@ -5693,16 +5828,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"bSI" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/cigarettes/cigars{ - pixel_y = 14 - }, -/obj/item/lighter{ - pixel_y = -6 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) "bTe" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 @@ -5710,7 +5835,6 @@ /obj/effect/turf_decal/trimline/red/corner{ dir = 4 }, -/obj/item/radio/intercom/directional/south, /obj/structure/table, /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs{ @@ -5736,20 +5860,26 @@ /area/station/service/chapel/funeral) "bTm" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "bTq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "brig_post"; - name = "Security Shutters"; - dir = 1 + name = "Security Shutters" }, /turf/open/floor/plating, /area/station/security/brig/entrance) +"bTx" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage) "bTK" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/engine/vacuum, @@ -5773,11 +5903,15 @@ /area/station/service/chapel) "bTZ" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) +"bUc" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/turf/open/floor/iron/white, +/area/station/medical/virology) "bUg" = ( /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, @@ -5789,6 +5923,10 @@ dir = 1 }, /area/station/commons/locker) +"bUq" = ( +/obj/structure/cable, +/turf/open/floor/circuit, +/area/station/ai_monitored/command/nuke_storage) "bUF" = ( /obj/effect/turf_decal/box, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -5797,12 +5935,14 @@ /turf/open/floor/iron, /area/station/science/ordnance) "bUS" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "bUT" = ( /obj/effect/turf_decal/trimline/purple/warning, /obj/effect/turf_decal/trimline/purple/filled/warning{ @@ -5848,6 +5988,9 @@ /obj/item/radio/intercom/directional/south, /obj/structure/mirror/directional/west, /obj/structure/sink/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, /turf/open/floor/iron/white, /area/station/science/genetics/cloning) "bVW" = ( @@ -5857,8 +6000,10 @@ /obj/effect/turf_decal/trimline/yellow/corner{ dir = 1 }, -/obj/machinery/vending/coffee, -/turf/open/floor/iron, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, /area/station/hallway/primary/aft) "bWl" = ( /turf/closed/wall/r_wall, @@ -5879,54 +6024,25 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"bWR" = ( -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/floor/grass, -/area/station/command/bridge) -"bXc" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/flora/bush/leafy, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters"; - dir = 8 +"bXg" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/status_display/ai/directional/north, +/obj/structure/table, +/obj/item/electronics/apc, +/obj/item/electronics/airlock{ + pixel_y = 8 }, -/turf/open/floor/grass, -/area/station/medical/medbay/central) -"bXo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/office) +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "bXv" = ( /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"bXw" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/white, -/area/station/medical/office) "bXB" = ( /obj/structure/flora/rock/pile/style_random, /turf/open/floor/grass, @@ -5940,12 +6056,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"bXL" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "bXP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -5969,31 +6079,24 @@ /turf/open/floor/iron/white/textured, /area/station/science/xenobiology) "bXS" = ( -/obj/structure/flora/bush/jungle/c/style_random, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) -"bXU" = ( -/turf/closed/wall, -/area/station/security/prison/safe) -"bYf" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/obj/machinery/light/small/directional/south, -/obj/machinery/camera/directional/south{ - c_tag = "Medical - Office"; - name = "medical camera"; - network = list("ss13","medbay") - }, -/obj/machinery/airalarm/directional/south, -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/landmark/start/paramedic, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/medical/paramedic) +/turf/open/floor/iron/white, +/area/station/medical/chemistry) +"bXU" = ( +/turf/closed/wall, +/area/station/security/prison/safe) +"bXW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "bYk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6016,25 +6119,32 @@ }, /turf/open/floor/iron/white/textured, /area/station/science/research) +"bYr" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/teleport/hub, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "bYx" = ( /obj/structure/cable, /obj/machinery/pdapainter/security, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) "bYD" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/xenobiology) "bYL" = ( /turf/closed/wall/r_wall, /area/station/hallway/secondary/entry) "bYW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, /area/station/maintenance/department/electrical) "bYZ" = ( /obj/effect/turf_decal/stripes/line, @@ -6048,13 +6158,28 @@ name = "Isolation Cell"; id_tag = "iso_cell_hall_bolt" }, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/effect/mapping_helpers/airlock/access/all/security/general, /obj/machinery/duct, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/iron/dark/textured, /area/station/security/prison/safe) +"bZa" = ( +/obj/machinery/light/directional/west, +/obj/machinery/electroplater, +/turf/open/floor/wood, +/area/station/smithing) +"bZj" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "bZl" = ( -/obj/machinery/light/small/directional/west, +/obj/machinery/light/small/built/directional/west, /obj/structure/frame/computer{ anchored = 1; dir = 4 @@ -6086,7 +6211,7 @@ req_access = list("xenobiology") }, /obj/machinery/button/door{ - id = "rd_office"; + id = "rd_office_shutters"; name = "Privacy Shutters Control"; pixel_x = 6; pixel_y = -2; @@ -6103,16 +6228,9 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"bZG" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) "bZK" = ( /obj/machinery/light/directional/west, -/obj/item/radio/intercom/directional/west, +/obj/machinery/station_map/directional/west, /turf/open/floor/iron/dark/side{ dir = 8 }, @@ -6135,13 +6253,15 @@ /obj/machinery/duct, /turf/open/floor/iron/white/textured, /area/station/science/genetics) -"caf" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/effect/landmark/start/head_of_personnel, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) +"bZO" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/structure/closet/secure_closet/medical2, +/obj/item/clothing/mask/breath/medical, +/obj/item/clothing/mask/breath/medical, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "cau" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, @@ -6180,6 +6300,10 @@ /obj/structure/table, /obj/machinery/cell_charger, /obj/item/stock_parts/cell/upgraded, +/obj/item/toy/figure/assistant{ + pixel_x = 7; + pixel_y = 11 + }, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) "cbj" = ( @@ -6194,38 +6318,41 @@ dir = 9 }, /area/station/security/prison/workout) +"cbw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "cbB" = ( /turf/closed/wall, /area/station/security/prison) "cbD" = ( -/obj/structure/dresser, -/turf/open/floor/carpet/blue, -/area/station/commons/dorms) -"cbY" = ( -/obj/structure/table/wood, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "cbZ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/duct, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/service{ name = "Bar" }, /obj/effect/mapping_helpers/airlock/access/all/service/bar, -/obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/textured, /area/station/service/bar) "cch" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start/scientist, /turf/open/floor/iron/white, /area/station/science/explab) "ccp" = ( @@ -6249,6 +6376,13 @@ }, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"ccV" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/storage) "ccW" = ( /obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ dir = 4 @@ -6274,17 +6408,9 @@ /turf/open/floor/iron/checker, /area/station/science/lab) "cde" = ( -/obj/machinery/firealarm/directional/east{ - pixel_y = -5 - }, -/obj/machinery/light_switch/directional/east{ - pixel_y = 5 - }, /obj/structure/mirror/directional/north, /obj/structure/sink/directional/south, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, +/turf/open/floor/iron/dark, /area/station/service/janitor) "cdi" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -6293,13 +6419,54 @@ /turf/open/floor/iron/dark, /area/station/security/office) "cdl" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/camera/directional/south{ - c_tag = "Service - Library, Printer Room"; - name = "service camera" +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/service/library/printer) +/obj/structure/table/reinforced/rglass, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil{ + pixel_y = 7; + pixel_x = 3 + }, +/obj/item/assembly/timer, +/obj/item/assembly/timer, +/obj/item/assembly/timer, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/grenade/chem_grenade{ + pixel_x = 8 + }, +/obj/item/grenade/chem_grenade{ + pixel_x = 8 + }, +/obj/item/grenade/chem_grenade{ + pixel_x = 8 + }, +/obj/item/screwdriver{ + pixel_x = 2; + pixel_y = 15 + }, +/obj/item/integrated_circuit/chemical, +/obj/item/integrated_circuit/chemical, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/multitool, +/obj/item/multitool, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) +"cdm" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "cdu" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, @@ -6324,29 +6491,9 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"cdA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/landmark/start/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) -"cdE" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "cdI" = ( /obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible, +/obj/machinery/atmospherics/pipe/smart/manifold/brown/visible, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "cdN" = ( @@ -6360,16 +6507,18 @@ /turf/open/floor/plating, /area/station/maintenance/port) "ceb" = ( -/obj/structure/filingcabinet, -/obj/item/folder/documents, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/bot_white/right, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/structure/closet/crate/goldcrate, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) "cee" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark/side{ dir = 8 }, @@ -6397,12 +6546,10 @@ /turf/open/floor/iron/dark, /area/station/security/courtroom) "cet" = ( -/obj/structure/chair/wood{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/wood, -/area/station/security/prison/rec) +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/security/prison/garden) "cev" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6415,15 +6562,12 @@ dir = 1 }, /obj/machinery/light/small/directional/north, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, /obj/structure/chair/office/light{ dir = 8 }, /obj/effect/landmark/start/depsec/supply, -/obj/machinery/button/door/directional/north{ - id = "cargo_security_post"; - name = "Security Post Shutters Control"; - req_access = list("security") - }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) "ceH" = ( @@ -6454,23 +6598,17 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/maintenance/port/fore) -"cff" = ( -/obj/machinery/modular_computer/preset/command{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "cfl" = ( /obj/effect/turf_decal/trimline/brown/filled/line, -/obj/item/radio/intercom/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Cargo - Office"; + name = "cargo camera" + }, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/table, +/obj/item/multitool, /turf/open/floor/iron/dark/side, /area/station/cargo/office) "cfm" = ( @@ -6489,52 +6627,40 @@ /turf/open/floor/wood, /area/station/commons/vacant_room/office) "cfC" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/chem_mass_spec, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"cfN" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/airalarm/directional/east, -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark/side{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/area/station/engineering/break_room) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "cfP" = ( /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"cfU" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "cgb" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/library/printer) -"cge" = ( -/obj/structure/sign/flag/nanotrasen/directional/west, -/obj/structure/bed{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/item/bedsheet/captain{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/landmark/start/captain, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/cmo) "cgm" = ( /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) -"cgs" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) "cgC" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/item/radio/intercom/directional/south, @@ -6556,16 +6682,45 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) +"cgU" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "cgX" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/machinery/light/small/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Cargo - Drone Bay"; + name = "cargo camera" + }, +/obj/machinery/status_display/evac/directional/south, +/obj/structure/table, +/obj/item/stock_parts/scanning_module{ + pixel_x = -5; + pixel_y = 7 + }, +/obj/item/stock_parts/scanning_module{ + pixel_x = -5 + }, +/obj/item/stock_parts/scanning_module{ + pixel_x = 5; + pixel_y = 7 + }, +/obj/item/stock_parts/scanning_module{ + pixel_x = 5 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "chg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/sepia, -/area/station/service/library/artgallery) +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/engineering/main) "chk" = ( /obj/structure/chair/office{ dir = 4 @@ -6573,15 +6728,6 @@ /obj/effect/landmark/start/lawyer, /turf/open/floor/wood, /area/station/service/lawoffice) -"chq" = ( -/obj/structure/showcase/horrific_experiment, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"chs" = ( -/obj/structure/table, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) "chv" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/chair_maintenance{ @@ -6590,13 +6736,9 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "chy" = ( -/obj/machinery/door/window/left/directional/north, -/obj/structure/table/wood/fancy/blue, -/obj/structure/sign/painting/library{ - pixel_y = -32 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) +/obj/effect/turf_decal/trimline/blue/filled/line, +/turf/open/floor/iron/white, +/area/station/medical/storage) "chD" = ( /obj/effect/turf_decal/trimline/brown/filled/line, /obj/structure/disposalpipe/segment{ @@ -6621,6 +6763,13 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) +"chJ" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/wood, +/area/station/service/library) "chW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6640,17 +6789,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/door/firedoor, /obj/machinery/door/airlock/grunge{ name = "Prison Showers" }, -/obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/security/prison/shower) "cid" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Commons - Vacant Office, East"; - name = "commons camera" - }, /obj/item/radio/intercom/directional/east, /turf/open/floor/wood, /area/station/commons/vacant_room/office) @@ -6666,29 +6812,15 @@ /obj/structure/plasticflaps, /turf/open/floor/iron/dark, /area/station/maintenance/disposal) -"cit" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/glass, -/obj/item/clothing/suit/apron/surgical{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/reagent_containers/medigel/sterilizine{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/item/clothing/gloves/latex, -/turf/open/floor/iron/white, -/area/station/medical/surgery) -"cix" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"civ" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/obj/machinery/light/small/directional/east, +/obj/machinery/camera/autoname/directional/east, +/obj/structure/cable, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "ciA" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -6701,22 +6833,22 @@ }, /area/station/service/hydroponics/garden) "ciG" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/line{ +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/effect/turf_decal/trimline/brown/line{ dir = 1 }, +/obj/machinery/status_display/evac/directional/south, /obj/machinery/computer/department_orders/security{ dir = 1 }, -/obj/structure/noticeboard/directional/south, /turf/open/floor/iron/dark, /area/station/security/office) "ciO" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/table, -/obj/item/wirecutters, +/obj/effect/spawner/random/engineering/tool, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "ciR" = ( /obj/effect/turf_decal/tile/green/half/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6747,17 +6879,26 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, -/obj/machinery/atm/directional/north, +/obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/cargo/lobby) "cjI" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/storage) +/obj/machinery/atmospherics/pipe/smart/simple/pink/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden/layer4{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/break_room) "cjW" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line, /obj/effect/turf_decal/trimline/dark_blue/line{ @@ -6765,6 +6906,17 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"cjZ" = ( +/obj/machinery/firealarm/directional/east{ + pixel_y = 5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = -5 + }, +/obj/item/radio/intercom/directional/south, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/medical/paramedic) "ckh" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -6781,6 +6933,10 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) +"cky" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "ckD" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -6796,12 +6952,8 @@ /obj/effect/mapping_helpers/airlock/access/all/science/ordnance, /turf/open/floor/iron/white/textured, /area/station/science/auxlab) -"ckL" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "ckO" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/effect/turf_decal/tile/purple/full, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -6814,7 +6966,7 @@ req_access = list("research") }, /obj/machinery/duct, -/turf/open/floor/iron/dark/textured, +/turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "ckP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6826,13 +6978,12 @@ /turf/open/floor/iron/white, /area/station/science/research) "cla" = ( -/turf/open/floor/iron/dark, +/turf/open/floor/carpet/blue, /area/station/commons/vacant_room/office) "clf" = ( -/obj/effect/decal/cleanable/oil, -/obj/structure/barricade/wooden, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/area/station/cargo/drone_bay) "clg" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -6842,25 +6993,8 @@ /obj/machinery/light/small/directional/east, /obj/machinery/camera/autoname/directional/east, /obj/machinery/vending/clothing, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) -"clh" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/effect/turf_decal/caution/stand_clear, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/door/poddoor/preopen{ - id = "bridge_blast_doors"; - name = "Bridge Access Blast Door" - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"clk" = ( -/obj/machinery/power/port_gen/pacman/pre_loaded, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "cll" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 6 @@ -6905,10 +7039,10 @@ /turf/open/floor/iron/white, /area/station/science/xenobiology) "cmt" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/line{ +/obj/effect/turf_decal/trimline/yellow/warning{ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6917,14 +7051,24 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, /area/station/hallway/primary/aft) "cmw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/storage_shared) "cmI" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/security/brig) @@ -6936,15 +7080,25 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/port) +"cnc" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) "cnk" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/obj/machinery/meter, /turf/open/floor/iron, /area/station/science/ordnance) -"cnl" = ( -/obj/machinery/computer/communications, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +"cnt" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "cnu" = ( /obj/structure/cable, /obj/machinery/power/terminal{ @@ -6961,14 +7115,22 @@ name = "Genetics Shutters Control"; req_access = list("genetics") }, -/obj/structure/table/glass, +/obj/structure/table/reinforced/rglass, /obj/item/paper_bin, -/obj/effect/spawner/random/bureaucracy/folder, -/obj/effect/spawner/random/bureaucracy/pen, +/obj/item/folder, +/obj/item/pen, /turf/open/floor/iron/white, /area/station/science/genetics) +"cnD" = ( +/obj/structure/plaque/static_plaque/golden/commission/box, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "cnG" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, /obj/structure/closet/crate/trashcart/laundry, +/obj/effect/spawner/random/contraband/prison, /obj/item/clothing/under/rank/prisoner, /obj/item/clothing/under/rank/prisoner, /obj/item/clothing/under/rank/prisoner, @@ -6977,15 +7139,8 @@ /obj/item/clothing/shoes/sneakers/orange, /obj/item/clothing/shoes/sneakers/orange, /obj/item/clothing/shoes/sneakers/orange, -/obj/effect/spawner/random/contraband/prison, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/checker, /area/station/security/prison/shower) -"cnH" = ( -/obj/structure/table/wood, -/obj/item/storage/lockbox/medal, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "cnP" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7000,10 +7155,15 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "cnX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/banner/medical/mundane, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/blue/filled/warning, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/office) "coh" = ( /obj/machinery/camera/directional/north{ c_tag = "Engineering - Atmospherics Mixed Air Chamber"; @@ -7020,8 +7180,7 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/port) "cot" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "cou" = ( @@ -7031,11 +7190,12 @@ /turf/open/floor/iron/dark, /area/station/security/processing) "cox" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/five, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/effect/spawner/random/structure/tank_holder, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"coz" = ( +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "coA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /obj/machinery/meter, @@ -7051,30 +7211,37 @@ /obj/effect/turf_decal/trimline/neutral/line{ dir = 4 }, +/obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"cpp" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/station_map/engineering/directional/south, +"coW" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/security/execution/transfer) +/area/station/engineering/storage/tech) "cpv" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, /obj/structure/disposalpipe/segment, /obj/machinery/door/window/left/directional/north{ name = "Incoming Mail"; req_access = list("shipping") }, -/turf/open/floor/iron/dark, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/iron/dark/smooth_large, /area/station/cargo/sorting) "cpz" = ( /turf/closed/wall/r_wall, /area/station/maintenance/solars/port/fore) -"cpE" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/item/kirbyplants/photosynthetic, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) +"cpA" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "cpH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, @@ -7093,10 +7260,22 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "cpO" = ( -/obj/machinery/light/directional/south, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/white, +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, /area/station/maintenance/department/science) +"cpP" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 8 + }, +/obj/effect/mapping_helpers/mail_sorting/medbay/chemistry, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "cpX" = ( /obj/structure/sign/poster/contraband/clown/directional/east, /obj/structure/closet/secure_closet/freezer/cream_pie{ @@ -7122,31 +7301,28 @@ "cqR" = ( /turf/closed/wall/r_wall, /area/station/security/execution/transfer) -"cre" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "crl" = ( /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) "crt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Art Gallery" + }, +/turf/open/floor/iron/dark/textured, +/area/station/service/library/artgallery) "cru" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/chair/stool/directional/north, +/obj/structure/punching_bag, /turf/open/floor/iron/dark, -/area/station/security/prison/mess) +/area/station/security/prison/workout) "crI" = ( -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/effect/spawner/random/bureaucracy/pen, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) @@ -7160,16 +7336,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/white, /area/station/science/research) -"cse" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/bodycontainer/morgue{ - dir = 2 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "csj" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -7192,16 +7358,11 @@ /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/rack, /obj/item/gun/ballistic/shotgun/riot{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/gun/ballistic/shotgun/riot{ - pixel_x = 3; - pixel_y = 2 + pixel_y = -4 }, +/obj/item/gun/ballistic/shotgun/riot, /obj/item/gun/ballistic/shotgun/riot{ - pixel_x = 3; - pixel_y = -1 + pixel_y = 4 }, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) @@ -7233,14 +7394,13 @@ /obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, /turf/open/floor/plating, /area/station/engineering/atmos/pumproom) -"ctF" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/glass, -/obj/item/storage/medkit/regular, -/turf/open/floor/iron/white, -/area/station/medical/office) +"ctM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/wood, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "ctP" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 6 }, /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_freezer_chamber_input{ @@ -7248,35 +7408,27 @@ }, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/freezerchamber) +"ctR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/grille_or_waste, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "cua" = ( -/obj/effect/turf_decal/siding/wood/corner{ +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters{ + id = "medbay_desk_shutters"; + name = "Medbay Front Desk Shutters"; dir = 8 }, -/obj/machinery/firealarm/directional/east{ - pixel_y = 6 - }, -/obj/machinery/light_switch/directional/east{ - pixel_y = -4 - }, -/obj/machinery/light/small/directional/east, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) +/turf/open/floor/plating, +/area/station/medical/office) "cub" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, /turf/open/floor/wood, -/area/station/commons/dorms) -"cud" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters"; - dir = 1 - }, -/turf/open/floor/plating, -/area/station/medical/storage) +/area/station/commons/dorms/room5) "cug" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/cable, @@ -7300,42 +7452,34 @@ }, /obj/machinery/airalarm/directional/west, /obj/structure/table, -/obj/item/paper_bin{ - pixel_y = 5 - }, -/obj/item/folder{ - pixel_y = 7 - }, -/obj/item/pen{ - pixel_y = 8 - }, /turf/open/floor/iron/white, /area/station/science/explab) -"cuE" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"cuK" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "cuU" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"cuZ" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/wood, +/area/station/service/library/private) +"cvb" = ( +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/rnd_all, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "cve" = ( /turf/closed/wall/r_wall, /area/station/science/robotics/mechbay) -"cvj" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, -/turf/closed/wall/r_wall, -/area/station/maintenance/starboard/aft) +"cvm" = ( +/obj/structure/table/wood, +/obj/machinery/cassette/dj_station{ + pixel_y = 12 + }, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "cvn" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 4 @@ -7358,8 +7502,7 @@ /obj/structure/table/reinforced, /obj/structure/cable, /obj/machinery/door/window/left/directional/south{ - name = "Reception Desk"; - req_access = list("security") + name = "Reception Desk" }, /obj/machinery/door/window/brigdoor/left/directional/north{ name = "Reception Desk"; @@ -7371,11 +7514,8 @@ /turf/closed/wall/r_wall, /area/station/ai_monitored/command/storage/eva) "cwb" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/structure/tank_holder/extinguisher, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "cwB" = ( /obj/effect/turf_decal/trimline/dark_blue/line{ dir = 6 @@ -7417,6 +7557,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"cxf" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "cxk" = ( /obj/machinery/conveyor{ dir = 1; @@ -7428,21 +7573,10 @@ }, /turf/open/floor/plating, /area/station/cargo/storage) -"cxl" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/bodycontainer/morgue{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "cxp" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, -/obj/machinery/light/small/directional/west, -/obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark/side{ dir = 8 }, @@ -7453,23 +7587,11 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"cxW" = ( -/obj/structure/table/wood, -/obj/item/storage/box/matches{ - pixel_x = 4 - }, -/obj/item/clothing/mask/cigarette/cigar, -/obj/item/reagent_containers/cup/glass/flask/gold{ - pixel_x = 6; - pixel_y = 14 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "cxY" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 4 }, -/obj/structure/sign/poster/official/random/directional/east, +/obj/machinery/firealarm/directional/east, /turf/open/floor/iron/white, /area/station/science/research) "cye" = ( @@ -7492,11 +7614,11 @@ /turf/open/space, /area/space) "cyt" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/two, +/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/furniture_parts, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/starboard/aft) "cyB" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/line{ @@ -7514,7 +7636,7 @@ dir = 10 }, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ - dir = 6 + dir = 4 }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) @@ -7525,7 +7647,7 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/science) "czu" = ( /obj/structure/disposalpipe/segment{ @@ -7534,7 +7656,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "czB" = ( /obj/effect/turf_decal/stripes/line{ @@ -7548,20 +7670,36 @@ /obj/structure/cable, /obj/machinery/door/firedoor, /obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "kitchen_sec_shutters"; name = "Kitchen Shutters"; - dir = 8 + dir = 4 }, /turf/open/floor/iron/dark/textured, /area/station/service/kitchen) "czD" = ( -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = 5 }, /turf/open/floor/wood, /area/station/service/chapel/funeral) +"czE" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/break_room) "czJ" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/effect/turf_decal/trimline/blue/line{ @@ -7570,15 +7708,22 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"czU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "cAm" = ( /obj/item/radio/intercom/directional/east, +/obj/structure/table/wood, /turf/open/floor/carpet/purple, -/area/station/commons/dorms) +/area/station/commons/dorms/room3) +"cAw" = ( +/obj/structure/noticeboard/directional/west, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder/blue, +/obj/item/pen, +/obj/item/hand_labeler{ + pixel_y = -12 + }, +/turf/open/floor/wood, +/area/station/command/meeting_room) "cAy" = ( /obj/structure/closet/emcloset/anchored, /turf/open/floor/iron/dark/smooth_large, @@ -7597,12 +7742,12 @@ /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/starboard) "cAR" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/tile/dark_blue/full, /obj/effect/turf_decal/box/red, /obj/machinery/porta_turret/ai{ dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/turret_protected/ai_upload) "cBa" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ @@ -7615,22 +7760,27 @@ dir = 1 }, /obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) "cBe" = ( /obj/machinery/light/directional/south, /obj/machinery/status_display/evac/directional/south, /obj/machinery/duct, +/obj/effect/landmark/start/gary/rare, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) -"cBH" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +"cBo" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/sepia, +/area/station/service/library/artgallery) +"cBB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, /turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) +/area/station/medical/pharmacy) "cBM" = ( /obj/structure/table, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -7639,45 +7789,56 @@ /obj/effect/turf_decal/siding/thinplating/dark/corner{ dir = 8 }, -/obj/item/emergency_bed{ - pixel_x = -1 - }, -/obj/item/emergency_bed{ - pixel_x = 4 - }, /obj/item/storage/medkit/regular{ pixel_y = 1 }, /turf/open/floor/iron, /area/station/command/gateway) +"cBS" = ( +/obj/structure/cable, +/obj/structure/table/wood/fancy/blue, +/obj/item/phone{ + desc = "Supposedly a direct line to Nanotrasen Central Command. It's not even plugged in."; + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/assembly/timer{ + pixel_y = 6; + pixel_x = 6 + }, +/turf/open/floor/wood, +/area/station/command/meeting_room) +"cBY" = ( +/obj/effect/turf_decal/tile/dark_blue/full, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/bridge) "cCc" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "cCf" = ( /turf/closed/wall, /area/station/security/prison/shower) "cCi" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/trimline/neutral/filled/line, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/bed/pod{ + desc = "An old medical bed, just waiting for replacement with something up to date."; + name = "medical bed"; + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "cCp" = ( /obj/machinery/air_sensor/plasma_tank, /turf/open/floor/engine/plasma, /area/station/engineering/atmos) -"cCr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/table, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) "cCv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7686,27 +7847,48 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "cCy" = ( -/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/obj/effect/landmark/start/psychologist, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) +"cCB" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/purple/filled/line, +/obj/effect/landmark/blobstart, /turf/open/floor/iron/dark, -/area/station/science/research/abandoned) +/area/station/engineering/storage/tech) "cCF" = ( -/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/tile/red/full, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; location = "Security" }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, +/obj/structure/plasticflaps/opaque, +/turf/open/floor/iron/dark/smooth_large, /area/station/maintenance/department/security/brig) -"cCP" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 +"cDe" = ( +/obj/machinery/light/directional/south, +/turf/open/floor/carpet, +/area/station/service/chapel) +"cDg" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 10 }, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/obj/machinery/atmospherics/pipe/smart/simple/pink/hidden/layer2{ + dir = 9 + }, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/engineering/break_room) "cDu" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7723,65 +7905,6 @@ "cDv" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/science/xenobiology) -"cDA" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "Medical - Cryogenics"; - name = "medical camera"; - network = list("ss13","medbay") - }, -/obj/structure/table, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = -6; - pixel_y = 10 - }, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = 6; - pixel_y = 10 - }, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/beaker/cryoxadone, -/obj/item/storage/pill_bottle/mannitol, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/syringe/epinephrine, -/obj/item/wrench/medical, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/medical/cryo) -"cDC" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/table/glass, -/obj/item/paper_bin{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/pen/red{ - pixel_x = -4 - }, -/obj/item/book/manual/wiki/medicine, -/obj/item/book/manual/wiki/infections{ - pixel_x = 10; - pixel_y = 2 - }, -/obj/item/reagent_containers/syringe/antiviral, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/hand_labeler, -/obj/item/radio/headset/headset_med, -/obj/machinery/newscaster/directional/south, -/obj/item/clothing/glasses/science, -/obj/item/extrapolator, -/turf/open/floor/iron/white, -/area/station/medical/virology) "cDF" = ( /obj/effect/turf_decal/siding/thinplating/corner{ dir = 4 @@ -7793,12 +7916,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/side, /area/station/hallway/secondary/exit/departure_lounge) -"cDS" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "cEi" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -7806,23 +7923,24 @@ /obj/machinery/light/small/directional/east, /obj/structure/sign/warning/secure_area/directional/east, /obj/machinery/camera/autoname/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"cEm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "cEn" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"cEq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "cEx" = ( /obj/machinery/light/directional/east, /turf/open/floor/engine, @@ -7842,22 +7960,13 @@ /area/station/cargo/warehouse) "cEM" = ( /obj/machinery/airalarm/directional/north, -/obj/effect/spawner/random/trash/garbage, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "cEN" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "ce_privacy"; - name = "CE Office Shutters"; - dir = 4 - }, -/obj/machinery/door/poddoor/preopen{ - id = "engineering"; - name = "Engineering Blast Door" - }, -/turf/open/floor/plating, +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/turf/open/floor/iron/dark/corner, /area/station/command/heads_quarters/ce) "cEO" = ( /obj/effect/turf_decal/trimline/purple/filled/line, @@ -7883,15 +7992,11 @@ }, /turf/open/floor/iron/white, /area/station/science/lab) -"cEQ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/engineering/storage_shared) +"cFf" = ( +/obj/structure/cable, +/obj/structure/chair/plastic, +/turf/open/floor/wood, +/area/station/security/prison/rec) "cFj" = ( /obj/structure/closet, /obj/item/instrument/piano_synth, @@ -7903,15 +8008,10 @@ /turf/open/floor/wood, /area/station/maintenance/starboard/fore) "cFF" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/structure/closet/secure_closet/engineering_personal, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/engineering/storage_shared) +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/service/abandoned_gambling_den) "cFG" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/structure/sign/warning/hot_temp/directional/west, @@ -7931,7 +8031,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/mapping_helpers/mail_sorting/science/ordnance, -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) "cGc" = ( /obj/effect/turf_decal/stripes/line{ @@ -7943,6 +8043,10 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) +"cGe" = ( +/obj/structure/foamedmetal, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "cGh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7957,7 +8061,6 @@ /obj/effect/turf_decal/tile/purple/opposingcorners{ dir = 1 }, -/obj/machinery/light_switch/directional/east, /obj/machinery/camera/autoname/directional/east, /obj/structure/disposalpipe/trunk{ dir = 8 @@ -7965,19 +8068,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron/checker, /area/station/science/lab) -"cGk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/two, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"cGB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) "cGF" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 5 @@ -7985,27 +8075,31 @@ /turf/open/floor/iron, /area/station/science/ordnance) "cGM" = ( -/obj/machinery/light/directional/west, -/turf/open/floor/wood, -/area/station/security/prison/rec) +/obj/machinery/light/small/directional/south, +/obj/machinery/power/energy_accumulator/grounding_rod, +/turf/open/floor/plating, +/area/station/engineering/main) +"cGO" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/turf/open/floor/iron/dark/side, +/area/station/engineering/storage_shared) "cGR" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset/full, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"cHh" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/storage) -"cHp" = ( +"cHc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, /obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +/turf/open/floor/iron/dark/side{ + dir = 6 + }, +/area/station/service/janitor) +"cHh" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/storage) "cHD" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/rd) @@ -8029,11 +8123,16 @@ /turf/open/floor/iron, /area/station/tcommsat/computer) "cIv" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/security/prison/rec) +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Prison Garden" + }, +/turf/open/floor/iron/dark/textured, +/area/station/security/prison/garden) "cID" = ( /obj/effect/turf_decal/trimline/green/line{ dir = 1 @@ -8044,22 +8143,18 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "cIJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/abandoned_gambling_den) "cIL" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plating/airless, /area/space/nearstation) -"cIP" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) "cIV" = ( /obj/machinery/light/small/directional/east, /obj/effect/spawner/random/maintenance, @@ -8073,6 +8168,7 @@ dir = 4 }, /obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "cJi" = ( @@ -8080,6 +8176,10 @@ dir = 1 }, /obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ name = "Library" @@ -8091,65 +8191,59 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/confetti, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/turf/open/floor/iron/textured, +/area/station/engineering/main) "cJB" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"cJJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table, -/obj/item/storage/box/matches, -/obj/effect/spawner/random/entertainment/lighter{ - pixel_y = 4; - pixel_x = 4 - }, -/obj/effect/spawner/random/entertainment/lighter, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "cJN" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/cable, -/obj/structure/chair{ +/obj/structure/chair/sofa/bench/right{ dir = 8 }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) "cJO" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/spawner/random/structure/closet_maintenance, +/obj/machinery/airalarm/directional/south, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/service/abandoned_gambling_den) "cJW" = ( -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/secondary/exit/departure_lounge) -"cKk" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 5 - }, -/obj/machinery/camera/directional/east{ - c_tag = "Medical - Central, East"; - network = list("ss13","medbay"); - name = "medical camera" - }, -/obj/effect/turf_decal/trimline/dark_blue/corner{ +/obj/machinery/firealarm/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/turf/open/floor/iron/dark, +/area/station/security/prison/visit) +"cKc" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood, +/area/station/service/library) "cKn" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /turf/open/floor/iron, /area/station/science/ordnance) +"cKq" = ( +/obj/machinery/firealarm/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) "cKv" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -8204,24 +8298,14 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "cKS" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/structure/closet/secure_closet/atmospherics, +/turf/open/floor/iron/dark/side, +/area/station/engineering/atmos/office) "cLc" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/poddoor/preopen{ - id = "atmos"; - name = "Atmospherics Blast Door" - }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/ghost_critter_spawn, /turf/open/floor/plating, -/area/station/engineering/atmos/office) +/area/station/maintenance/starboard/fore) "cLl" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -8232,23 +8316,19 @@ /obj/machinery/atmospherics/pipe/layer_manifold/cyan/visible{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "cLs" = ( /turf/closed/wall, /area/station/cargo/lobby) "cLR" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /obj/effect/turf_decal/stripes/corner{ dir = 4 }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"cLU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "cLY" = ( /obj/structure/cable, /obj/machinery/camera/emp_proof/directional/north{ @@ -8262,18 +8342,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port) +"cMc" = ( +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "cMj" = ( /obj/structure/mirror/directional/west, /obj/structure/sink/directional/east, /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) -"cMq" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/multitool, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "cMv" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/structure/table/glass, @@ -8287,27 +8365,13 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"cMx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, +"cMy" = ( +/obj/structure/cable/layer1, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance{ - name = "Engineering Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"cMy" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space/nearstation) +/turf/open/floor/iron, +/area/station/engineering/storage) "cMA" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/mess, @@ -8318,8 +8382,12 @@ dir = 4 }, /obj/machinery/disposal/bin, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) +"cML" = ( +/obj/effect/turf_decal/vg_decals/atmos/oxygen, +/turf/open/floor/engine/o2, +/area/station/engineering/atmos) "cMT" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 @@ -8339,8 +8407,11 @@ /area/station/hallway/secondary/service) "cNc" = ( /obj/effect/turf_decal/tile/purple/fourcorners, +/obj/machinery/light/small/directional/east, /obj/machinery/camera/autoname/directional/east, -/obj/structure/chair, +/obj/structure/chair{ + dir = 8 + }, /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) @@ -8354,11 +8425,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"cNk" = ( -/obj/machinery/light/directional/north, -/obj/structure/flora/bush/jungle/a/style_random, -/turf/open/floor/grass, -/area/station/command/bridge) "cNm" = ( /obj/effect/decal/cleanable/cobweb, /obj/effect/spawner/random/trash/grille_or_waste, @@ -8369,6 +8435,19 @@ /obj/effect/spawner/random/clothing/costume, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"cNw" = ( +/obj/effect/turf_decal/trimline/green/filled/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/warning{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "cNz" = ( /obj/effect/turf_decal/trimline/purple/line, /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -8378,11 +8457,32 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "cNN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/line, +/obj/machinery/atmospherics/pipe/smart/simple/pink/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/primary/aft) +"cNO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"cNR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "cOa" = ( /obj/machinery/camera/autoname/directional/south, /obj/machinery/light/small/directional/south, @@ -8416,6 +8516,31 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"cOp" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/machinery/firealarm/directional/south, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/landmark/start/virologist, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"cOB" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Command - Meeting Room"; + name = "command camera" + }, +/obj/item/radio/intercom/directional/west, +/obj/structure/table, +/obj/machinery/recharger{ + pixel_x = -5 + }, +/obj/machinery/recharger{ + pixel_x = 5 + }, +/turf/open/floor/wood, +/area/station/command/meeting_room) "cOG" = ( /obj/effect/turf_decal/bot, /obj/structure/sign/nanotrasen{ @@ -8442,10 +8567,6 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "cPj" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8455,20 +8576,20 @@ /obj/effect/mapping_helpers/airlock/unres{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/starboard/fore) "cPo" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "cPr" = ( -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/lockers) +/obj/structure/table, +/obj/item/camera, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "cPI" = ( -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/item/storage/box/matches, /obj/effect/spawner/random/entertainment/cigarette_pack, /turf/open/floor/plating, @@ -8487,14 +8608,11 @@ /turf/open/floor/iron/white, /area/station/science/research) "cPV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/service/janitor) "cPX" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -8504,7 +8622,7 @@ /obj/machinery/computer/records/security{ dir = 4 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "cPZ" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ @@ -8515,30 +8633,33 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, /area/station/hallway/primary/aft) "cQe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "cQj" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/girder, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/maintenance/department/engine/atmos) "cQl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 5 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "cQs" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/frame/computer{ @@ -8554,13 +8675,6 @@ }, /turf/open/floor/iron/white, /area/station/science/auxlab) -"cQv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "cQA" = ( /obj/effect/turf_decal/tile/neutral/half, /obj/effect/turf_decal/tile/neutral/half{ @@ -8568,10 +8682,12 @@ }, /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_half{ - dir = 4 - }, +/turf/open/floor/iron/dark/smooth_half, /area/station/command/gateway) +"cQC" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "cQM" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 4 @@ -8584,15 +8700,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"cQO" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/structure/bodycontainer/morgue{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "cQR" = ( /obj/structure/table, /obj/item/transfer_valve{ @@ -8615,6 +8722,18 @@ /obj/effect/decal/cleanable/dirt, /turf/closed/wall/r_wall, /area/station/maintenance/department/engine/atmos) +"cQW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/dark/textured, +/area/station/service/abandoned_gambling_den) "cQY" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/grille_or_waste, @@ -8652,36 +8771,36 @@ /turf/closed/wall, /area/station/maintenance/department/cargo) "cRq" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/obj/machinery/oven/range, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) +/obj/structure/closet/emcloset/wall/directional/west, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "cRQ" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, /obj/machinery/camera/directional/north{ c_tag = "Commons - Vacant Office, North"; name = "commons camera" }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, /turf/open/floor/wood, /area/station/commons/vacant_room/office) "cSm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 }, -/obj/machinery/telecomms/broadcaster/preset_left, -/turf/open/floor/engine/telecomms, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) "cSq" = ( +/obj/effect/turf_decal/stripes/box, +/obj/machinery/light/small/directional/north, /obj/structure/disposalpipe/trunk, /obj/structure/disposaloutlet, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/cargo/sorting) "cSv" = ( /obj/effect/turf_decal/stripes/line, @@ -8697,16 +8816,8 @@ /obj/effect/landmark/navigate_destination/common/cryogenics, /turf/open/floor/iron/dark/textured, /area/station/hallway/secondary/exit/departure_lounge) -"cSw" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/engineering/break_room) "cSx" = ( -/obj/machinery/hydroponics/soil, +/obj/machinery/growing/soil, /turf/open/floor/grass, /area/station/service/chapel/funeral) "cSz" = ( @@ -8741,50 +8852,31 @@ /turf/open/floor/iron/dark/textured, /area/station/security/processing) "cSQ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) +/obj/item/wrench, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "cSY" = ( /obj/machinery/light/directional/west, /turf/open/floor/grass, /area/station/service/chapel/funeral) -"cTa" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"cTc" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/engineering/break_room) "cTn" = ( /mob/living/basic/pet/potty, /turf/open/floor/iron, /area/station/service/hydroponics) "cTq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/trash/garbage, +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, -/area/station/maintenance/port/fore) +/area/station/maintenance/port) "cTs" = ( /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = -5 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 }, -/obj/machinery/firealarm/directional/south, /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/light/small/directional/south, /turf/open/floor/iron/white, @@ -8798,10 +8890,10 @@ }, /obj/machinery/door/firedoor, /obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "kitchen_sec_shutters"; name = "Kitchen Shutters"; - dir = 8 + dir = 4 }, /obj/structure/displaycase/forsale/kitchen{ pixel_y = 10 @@ -8809,20 +8901,11 @@ /turf/open/floor/iron/dark/textured, /area/station/service/kitchen) "cTG" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, +/turf/open/floor/iron, /area/station/engineering/atmos/office) -"cTJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "cTK" = ( /obj/structure/sink/directional/south, -/obj/item/reagent_containers/cup/bucket, +/obj/effect/spawner/random/trash/bucket, /turf/open/floor/plating, /area/station/maintenance/port) "cTL" = ( @@ -8830,22 +8913,14 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/plating, /area/station/maintenance/department/science) -"cTT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/sign/departments/medbay/alt/directional/east, -/obj/machinery/camera/directional/east{ - c_tag = "Medical - Lobby"; - network = list("ss13","medbay"); - name = "medical camera" - }, -/obj/structure/chair/sofa/corp/right{ - dir = 8 +"cTW" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/obj/effect/turf_decal/trimline/purple/line, +/obj/machinery/station_map/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) "cUe" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor, @@ -8861,8 +8936,8 @@ pixel_x = 7 }, /obj/machinery/door/poddoor/shutters{ - id = "arrivals_security_post"; - name = "Security Post Shutters" + id = "arrivals_security_checkpoint"; + name = "Security Checkpoint Shutters" }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/auxiliary) @@ -8878,18 +8953,22 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"cUo" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "cUp" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) -"cUr" = ( -/obj/structure/sign/warning/radiation/directional/south, -/obj/machinery/light/small/directional/south, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "cUz" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 9 @@ -8899,33 +8978,17 @@ }, /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/table, -/obj/item/stack/wrapping_paper{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/storage/box, -/obj/item/storage/box, -/obj/item/storage/box, /turf/open/floor/iron/dark/side{ dir = 9 }, /area/station/cargo/sorting) -"cUD" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/obj/item/restraints/handcuffs, -/obj/item/assembly/flash/handheld, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"cUF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) +"cUL" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/sign/departments/engineering/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "cUR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8950,53 +9013,32 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) -"cVe" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/engineering_all, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "cVu" = ( /obj/effect/turf_decal/bot_red, /obj/structure/cable, /turf/open/floor/plating/airless, /area/space/nearstation) -"cVw" = ( -/obj/structure/cable, +"cVS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"cVR" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/iron/white, +/area/station/medical/chemistry) +"cVY" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/structure/chair/wood{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/main) -"cVY" = ( -/obj/effect/spawner/random/trash/cigbutt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/open/floor/wood, +/area/station/commons/vacant_room/office) "cWi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/dark_blue/filled/warning{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/dark_blue/warning, /obj/structure/cable, -/obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/area/station/command/bridge) "cWn" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -9015,18 +9057,15 @@ /obj/effect/turf_decal/trimline/dark_blue/line, /obj/structure/sign/warning/secure_area/directional/north, /obj/machinery/light/directional/north, -/obj/structure/chair{ - dir = 4 - }, +/obj/structure/chair/sofa/bench/right, /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "cWF" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/area/station/maintenance/department/engine/atmos) "cWI" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/brown/visible{ @@ -9052,6 +9091,18 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"cXh" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/pink/hidden, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/aft) "cXi" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -9067,21 +9118,34 @@ }, /turf/open/floor/iron/solarpanel/airless, /area/station/solars/starboard/aft) +"cXt" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/lockers) "cXu" = ( /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) -"cXJ" = ( -/obj/machinery/door/airlock/maintenance, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ +"cXz" = ( +/obj/effect/turf_decal/siding/thinplating{ dir = 1 }, +/obj/structure/chair/sofa/bench/right, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"cXE" = ( +/obj/machinery/light_switch/directional/north{ + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, +/obj/effect/turf_decal/bot, +/obj/structure/liquid_pump, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) +"cXJ" = ( +/obj/structure/falsewall, /turf/open/floor/plating, /area/station/maintenance/port/aft) "cXK" = ( @@ -9110,18 +9174,14 @@ }, /obj/machinery/requests_console/directional/north{ department = "Cargo Bay"; - name = "Cargo Bay Requests Console"; - supplies_requestable = 1 + name = "Cargo Bay Requests Console" }, +/obj/effect/mapping_helpers/requests_console/supplies, /obj/machinery/vending/wardrobe/cargo_wardrobe, /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/cargo/storage) -"cYh" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "cYs" = ( /obj/structure/sink/directional/south, /obj/structure/mirror/directional/north, @@ -9139,21 +9199,42 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"cYG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"cYI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) +"cYM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"cYN" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 +/obj/machinery/door/poddoor/preopen{ + id = "testlab"; + name = "Xenobiology Secure Chamber Blast Door" }, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/iron, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/door/window/left/directional/north{ + name = "Test Chamber"; + req_access = list("xenobiology") + }, +/obj/structure/liquid_barrier, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"cYN" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark, /area/station/hallway/primary/aft) +"cYV" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/machinery/status_display/evac/directional/west, +/obj/machinery/computer/diseasesplicer, +/turf/open/floor/iron/white, +/area/station/medical/virology) "cYX" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, @@ -9162,11 +9243,16 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos/pumproom) +"cZa" = ( +/obj/structure/sign/poster/official/no_erp/directional/west, +/obj/effect/spawner/random/vending/snackvend, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "cZl" = ( -/obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark/side, /area/station/tcommsat/computer) "cZs" = ( @@ -9181,19 +9267,7 @@ name = "Isolation Cell Hall Vent" }, /turf/open/floor/plating, -/area/station/security/prison) -"cZu" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/area/station/security/prison/safe) "cZI" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -9215,22 +9289,6 @@ /obj/structure/table/reinforced/plasmarglass, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"cZM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "Cytology Pen" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/liquid_barrier, -/turf/open/floor/engine, -/area/station/science/xenobiology) "cZU" = ( /obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -9257,11 +9315,6 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"daj" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/pdapainter/medbay, -/turf/open/floor/iron/dark/side, -/area/station/command/heads_quarters/cmo) "daN" = ( /obj/effect/mapping_helpers/broken_floor, /obj/item/circuitboard/machine/stasis, @@ -9276,12 +9329,14 @@ /turf/open/floor/iron, /area/station/science/robotics/lab) "daR" = ( -/obj/machinery/light/directional/south, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/mapping_helpers/apc/cell_5k, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) +/obj/machinery/firealarm/directional/east{ + pixel_y = 5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = -5 + }, +/turf/open/floor/carpet/black, +/area/station/security/bitden) "daT" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark/side, @@ -9304,71 +9359,43 @@ /obj/item/stock_parts/scanning_module/adv, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) +"dbz" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark/smooth_large, +/area/station/hallway/secondary/entry) "dbG" = ( /obj/machinery/shieldgen, /turf/open/floor/plating, /area/station/engineering/main) "dbO" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) -"dbS" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "dbW" = ( /obj/structure/bed, /obj/item/bedsheet/dorms, /obj/effect/landmark/start/prisoner, /turf/open/floor/wood/parquet, /area/station/security/prison/safe) -"dct" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"dcz" = ( -/obj/effect/turf_decal/trimline/green/filled/warning, -/obj/effect/turf_decal/trimline/green/warning{ +"dcq" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, -/area/station/hallway/primary/starboard) +/area/station/engineering/storage/tech) +"dcz" = ( +/obj/structure/bookcase/random/fiction, +/turf/open/floor/wood, +/area/station/service/library) "dcA" = ( -/obj/structure/closet/crate/coffin, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/fore) -"ddr" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/airalarm/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/turf/closed/wall, +/area/station/maintenance/department/engineering/central) "ddu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9376,17 +9403,16 @@ /obj/effect/turf_decal/bot, /obj/effect/landmark/secequipment, /obj/structure/cable, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "ddy" = ( /turf/closed/wall/r_wall, /area/station/maintenance/port) "ddB" = ( -/obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/maintenance/department/electrical) @@ -9395,23 +9421,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) -"ddL" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters"; - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/medical/exam_room) "ddQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9431,7 +9440,9 @@ /area/station/security/execution/transfer) "deb" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "dec" = ( @@ -9444,13 +9455,6 @@ /obj/structure/sign/departments/maint/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"dee" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "dej" = ( /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 5 @@ -9458,23 +9462,40 @@ /turf/open/floor/iron, /area/station/science/robotics/lab) "det" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/sepia, -/area/station/service/library/artgallery) +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1 + }, +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) "deB" = ( -/obj/effect/spawner/random/vending/snackvend, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/firealarm/directional/west{ + pixel_y = 5 + }, +/obj/machinery/light_switch/directional/west{ + pixel_y = -5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, /turf/open/floor/iron/dark, -/area/station/command/meeting_room) +/area/station/security/checkpoint/medical) "deF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/table/wood, -/obj/item/stack/package_wrap, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/obj/structure/bookcase/manuals/engineering, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/station/engineering/break_room) "deQ" = ( /obj/machinery/light/neon_lining{ dir = 8 @@ -9482,7 +9503,7 @@ /turf/open/floor/stone, /area/station/science/xenobiology) "deW" = ( -/obj/effect/turf_decal/trimline/neutral/filled/corner{ +/obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 }, /turf/open/floor/iron/dark, @@ -9503,10 +9524,10 @@ }, /obj/machinery/requests_console/directional/north{ department = "Robotics"; - name = "Robotics Requests Console"; - receive_ore_updates = 1; - supplies_requestable = 1 + name = "Robotics Requests Console" }, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/supplies, /obj/structure/disposalpipe/trunk{ dir = 8 }, @@ -9541,7 +9562,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/plating, -/area/station/maintenance/department/security/brig) +/area/station/security/brig) "dfV" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box, @@ -9551,6 +9572,7 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 }, +/obj/machinery/light/small/directional/south, /obj/machinery/gulag_teleporter, /turf/open/floor/iron/dark, /area/station/security/processing) @@ -9559,22 +9581,36 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/maintenance/port) +"dgf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) +"dgg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/window/spawner/directional/east, +/obj/machinery/chem_master, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "dgl" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) -"dgy" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters"; - dir = 8 +"dgr" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/medical/exam_room) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/storage) "dgz" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/space_heater, /turf/open/floor/iron, /area/station/engineering/storage) "dgD" = ( @@ -9594,24 +9630,16 @@ }, /obj/machinery/door/window/left/directional/north{ dir = 8; - name = "Reception Window" + name = "Reception" }, /obj/machinery/door/window/brigdoor/right/directional/east{ req_access = list("hop"); name = "Head of Personnel's Desk" }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; +/obj/machinery/door/poddoor/shutters{ id = "hop"; - name = "Privacy Shutters" - }, -/obj/item/paper_bin{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/pen{ - pixel_x = 3; - pixel_y = 4 + name = "Privacy Shutters"; + dir = 8 }, /turf/open/floor/iron/dark/textured, /area/station/command/heads_quarters/hop) @@ -9629,12 +9657,18 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) -"dgP" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +"dgN" = ( +/obj/effect/turf_decal/tile/green/fourcorners, +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/service_all, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"dgP" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "dgR" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 4 @@ -9642,10 +9676,19 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos) "dgS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology/glass{ + name = "Pathology Pen" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/turf/open/floor/iron/white/textured, +/area/station/medical/virology) "dgT" = ( /obj/effect/turf_decal/trimline/neutral/filled/warning{ dir = 1 @@ -9654,14 +9697,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) +"dhc" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "dhd" = ( /obj/machinery/space_heater, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"dhi" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/r_wall, -/area/station/maintenance/department/engine/atmos) "dhq" = ( /obj/effect/turf_decal/bot, /obj/structure/table, @@ -9671,7 +9719,8 @@ /turf/open/floor/iron, /area/station/maintenance/starboard/aft) "dhs" = ( -/turf/closed/wall/r_wall, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/station/engineering/atmos/pumproom) "dhz" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -9689,36 +9738,45 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "dhL" = ( -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /obj/effect/turf_decal/tile/neutral/opposingcorners{ dir = 1 }, /obj/effect/turf_decal/tile/blue, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "dhZ" = ( -/obj/structure/table/wood, -/obj/machinery/reagentgrinder{ - pixel_y = 8 +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = -5 }, +/obj/structure/closet/secure_closet/bar, /turf/open/floor/wood, /area/station/service/bar/backroom) +"did" = ( +/obj/machinery/status_display/evac/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/commons/fitness/recreation) "dim" = ( -/obj/machinery/computer/bank_machine, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/bot_white/left, +/obj/machinery/airalarm/directional/west, +/obj/structure/closet/crate/silvercrate, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) "dio" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ + dir = 6 }, -/turf/open/floor/iron/dark, -/area/station/service/library/printer) +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/engineering/transit_tube) "dix" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -9736,32 +9794,15 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/security/prison/garden) -"diy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/medical/storage) "diA" = ( +/obj/machinery/light/small/directional/west, /obj/structure/sign/poster/random/directional/west, /obj/machinery/space_heater, /turf/open/floor/plating, /area/station/maintenance/department/science) "diI" = ( /obj/structure/cable, -/obj/structure/chair/wood{ +/obj/structure/chair/plastic{ dir = 8 }, /turf/open/floor/wood, @@ -9771,20 +9812,16 @@ /turf/open/floor/engine/vacuum, /area/station/science/ordnance/burnchamber) "diY" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/security/glass{ - name = "Armory" +/obj/machinery/light/small/directional/east, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/iron/dark/side{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/security/armory, -/turf/open/floor/iron/dark/textured, -/area/station/ai_monitored/security/armory) +/area/station/security/prison) "djl" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Command - Secure Eva Storage"; +/obj/machinery/light/small/directional/south, +/obj/machinery/camera/motion/directional/south{ + c_tag = "Command - EVA Storage, Secure"; name = "motion-sensitive command camera" }, /obj/structure/closet/crate/rcd, @@ -9805,17 +9842,6 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"djT" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) -"djX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/construction) "dkb" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -9835,41 +9861,10 @@ /obj/machinery/duct, /turf/open/floor/iron/white/textured, /area/station/science/research) -"dkY" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/structure/table, -/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, -/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, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) -"dlc" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/engineering/break_room) "dle" = ( /obj/structure/sign/departments/engineering/directional/west, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/seven, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/maintenance/port/aft) "dli" = ( @@ -9883,17 +9878,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/commons/storage/primary) -"dlp" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/machinery/light/directional/north, -/obj/structure/table, -/obj/item/stack/cable_coil, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/engineering/break_room) "dlt" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -9901,11 +9885,20 @@ /turf/open/floor/iron/white, /area/station/science/xenobiology) "dly" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/blue/line, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/pump, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ dir = 1 }, -/obj/effect/turf_decal/trimline/yellow/line, -/turf/open/floor/iron, /area/station/hallway/primary/aft) "dlC" = ( /obj/docking_port/stationary{ @@ -9926,18 +9919,20 @@ /turf/open/floor/iron, /area/station/cargo/lobby) "dlI" = ( -/obj/machinery/atmospherics/pipe/smart/simple/brown/visible{ - dir = 6 +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 1 }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "dlY" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/siding/wideplating_new/dark{ dir = 4 }, -/obj/machinery/telecomms/server/presets/command, -/turf/open/floor/engine/telecomms, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) "dmh" = ( /obj/machinery/light/directional/west, @@ -9947,15 +9942,13 @@ }, /area/station/commons/fitness) "dmm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 10 }, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) +/turf/open/floor/iron, +/area/station/engineering/main) "dmt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 9 }, @@ -9981,17 +9974,8 @@ /obj/machinery/plumbing/ooze_sucker{ mapping_id = "6" }, -/obj/machinery/light/floor/has_bulb, /turf/open/floor/engine, /area/station/science/xenobiology) -"dnn" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/obj/structure/closet/secure_closet/psychology, -/obj/item/toy/plush/moth{ - name = "Dr. Moff" - }, -/turf/open/floor/wood, -/area/station/medical/psychology) "dnp" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -10003,10 +9987,14 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) "dnA" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "dnE" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -10016,9 +10004,13 @@ /obj/effect/turf_decal/box, /turf/open/floor/iron/dark/smooth_large, /area/station/security/office) -"dnR" = ( -/turf/closed/wall/r_wall, -/area/station/medical/storage) +"dnK" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "dnV" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -10030,6 +10022,7 @@ /turf/open/floor/engine, /area/station/ai_monitored/command/storage/satellite) "dnW" = ( +/obj/machinery/duct, /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, /area/station/engineering/main) @@ -10078,10 +10071,18 @@ /obj/machinery/duct, /turf/open/floor/plastic, /area/station/security/prison/safe) +"doy" = ( +/obj/machinery/duct, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "doA" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/structure/cable, +/obj/structure/sign/warning/rad_shelter/directional/north, +/turf/open/floor/iron/dark, +/area/station/security/prison) "doH" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -10124,6 +10125,11 @@ /obj/machinery/plumbing/ooze_compressor, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"doT" = ( +/obj/structure/ghost_critter_spawn, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "doW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10137,29 +10143,32 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/disposal) -"dpd" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "dpo" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/structure/table, -/obj/item/book/manual/wiki/cooking_to_serve_man, -/obj/item/reagent_containers/condiment/enzyme{ - pixel_x = 9; - pixel_y = 3 - }, -/obj/item/reagent_containers/condiment/flour, -/obj/item/reagent_containers/condiment/rice, -/obj/item/reagent_containers/condiment/sugar{ - pixel_x = -5 - }, -/obj/item/storage/fancy/egg_box, +/obj/structure/closet/crate, +/obj/effect/spawner/random/contraband/prison, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/item/reagent_containers/cup/bowl, +/obj/item/kitchen/fork/plastic, +/obj/item/kitchen/fork/plastic, +/obj/item/kitchen/fork/plastic, +/obj/item/kitchen/spoon/plastic, +/obj/item/kitchen/spoon/plastic, +/obj/item/kitchen/spoon/plastic, +/obj/item/knife/plastic, +/obj/item/knife/plastic, +/obj/item/knife/plastic, +/obj/item/storage/bag/tray/cafeteria, +/obj/item/storage/bag/tray/cafeteria, +/obj/item/storage/bag/tray/cafeteria, +/obj/item/storage/bag/tray/cafeteria, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses, /turf/open/floor/iron/kitchen, /area/station/security/prison/mess) "dpu" = ( @@ -10205,24 +10214,28 @@ dir = 1 }, /area/station/commons/dorms) -"dqg" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters" - }, -/turf/open/floor/plating, -/area/station/medical/break_room) "dqt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/machinery/duct, -/turf/open/floor/plating, +/obj/structure/chair/sofa/bench/left{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"dqu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) "dqx" = ( /obj/structure/weightmachine/stacklifter, @@ -10233,15 +10246,29 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/department/security/brig) -"drg" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/science) +"dqO" = ( +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 8 }, -/obj/machinery/vending/wardrobe/viro_wardrobe, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) +"dqX" = ( +/obj/effect/turf_decal/trimline/green/filled/warning, +/obj/effect/turf_decal/trimline/green/warning{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) "dro" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -10258,41 +10285,21 @@ /obj/effect/landmark/navigate_destination/dockescpod1, /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/entry) +"drq" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/showroomfloor, +/area/station/service/abandoned_gambling_den) "dru" = ( /obj/structure/chair/stool/directional/west, /obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/commons/dorms) -"drv" = ( -/obj/machinery/computer/teleporter{ - dir = 1 - }, -/obj/machinery/button/door/directional/west{ - id = "tele_shutter"; - name = "Teleporter Shutter Control"; - req_access = list("teleporter") - }, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) "drH" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, /turf/open/floor/carpet, /area/station/service/chapel) -"drJ" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/computer/security/telescreen/cmo{ - dir = 4; - pixel_x = -30 - }, -/obj/machinery/modular_computer/preset/id{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) "drQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -10313,6 +10320,15 @@ dir = 8 }, /area/station/cargo/miningoffice) +"dsc" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/machinery/light/directional/south, +/obj/machinery/station_map/directional/south, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) "dsd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10328,7 +10344,6 @@ /area/station/maintenance/starboard/aft) "dsn" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/chair{ dir = 4 }, @@ -10339,12 +10354,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/lab) -"dsE" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) "dsR" = ( /obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, @@ -10352,43 +10361,37 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "dsU" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/filled/warning{ +/obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 }, -/obj/effect/turf_decal/trimline/neutral/corner{ +/obj/effect/turf_decal/trimline/green/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"dsV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/structure/bonfire, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "dsX" = ( /turf/open/floor/iron, /area/station/command/heads_quarters/ce) -"dtm" = ( -/obj/machinery/suit_storage_unit/atmos, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"dtT" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 8 +"dto" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 }, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 4 +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/area/station/medical/cryo) +"dua" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/computer/crew, +/turf/open/floor/iron, +/area/station/medical/paramedic) "dub" = ( /obj/structure/chair/office{ dir = 8 @@ -10401,15 +10404,31 @@ }, /turf/open/floor/iron, /area/station/science/ordnance) +"duk" = ( +/obj/machinery/light/directional/east, +/obj/machinery/newscaster/directional/east, +/obj/machinery/computer/crew{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) +"dun" = ( +/obj/effect/turf_decal/tile/blue/full, +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/holopad, +/turf/open/floor/iron/large, +/area/station/medical/paramedic) "duu" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/security/courtroom) -"duE" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "duF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/red/filled/corner{ @@ -10435,24 +10454,13 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "dvd" = ( -/obj/machinery/light/directional/east, +/obj/machinery/light/small/directional/east, /obj/item/radio/intercom/prison/directional/east, /turf/open/floor/iron/dark, /area/station/security/prison) "dvO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "library_desk_shutters"; - name = "Library Desk Shutters"; - dir = 1 - }, -/obj/machinery/libraryscanner, -/turf/open/floor/iron/dark/textured, -/area/station/service/library/printer) +/turf/closed/wall, +/area/station/medical/paramedic) "dvS" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -10478,13 +10486,10 @@ /obj/machinery/camera/autoname/directional/north, /obj/structure/sign/warning/biohazard/directional/north, /obj/structure/table/reinforced/plasmarglass, -/obj/item/experi_scanner{ - pixel_x = 4 - }, -/obj/item/clothing/gloves/latex, -/obj/item/clothing/glasses/science, /obj/item/wirecutters, -/obj/item/screwdriver, +/obj/item/screwdriver{ + pixel_y = 8 + }, /turf/open/floor/iron/white, /area/station/science/xenobiology) "dws" = ( @@ -10498,30 +10503,20 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "dwz" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"dwB" = ( -/obj/effect/spawner/random/structure/table, -/obj/item/assembly/igniter, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"dwH" = ( -/obj/effect/turf_decal/trimline/blue/warning{ +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 8 +/obj/machinery/camera/directional/east{ + c_tag = "Security - Interrogation"; + name = "security camera"; + network = list("ss13","interrogation") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/security/interrogation) "dwJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10553,28 +10548,18 @@ /obj/structure/sign/departments/security/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"dxA" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/light/small/directional/east, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/showroomfloor, -/area/station/medical/break_room) "dxH" = ( +/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/engineering{ - name = "EVA Storage" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/welded, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/iron/textured, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/grunge{ + name = "Bar" + }, +/turf/open/floor/iron/dark/textured, +/area/station/service/abandoned_gambling_den) "dxP" = ( /obj/effect/turf_decal/trimline/neutral/filled/warning{ dir = 1 @@ -10590,10 +10575,25 @@ /obj/effect/turf_decal/tile/green/fourcorners, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) +"dyq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/service/janitor) "dyv" = ( /obj/structure/filingcabinet, -/turf/open/floor/iron/dark, +/turf/open/floor/carpet/green, /area/station/commons/vacant_room/office) +"dyE" = ( +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage) "dyI" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -10615,22 +10615,9 @@ /turf/open/floor/iron/dark/textured, /area/station/security/warden) "dyL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "dyU" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -10646,34 +10633,44 @@ /area/station/science/xenobiology) "dzl" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/cable, /obj/machinery/vending/boozeomat/all_access, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"dzH" = ( -/obj/machinery/computer/crew{ +"dzE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) -"dzI" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/surgery) +/obj/machinery/duct, +/obj/machinery/door/airlock/bathroom{ + name = "Bathroom"; + id_tag = "cap_bathroom" + }, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/captain/private) +"dzH" = ( +/obj/structure/flora/bush/jungle/b/style_random, +/turf/open/floor/grass, +/area/station/hallway/primary/central) "dzP" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/table/glass, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 + }, +/obj/machinery/requests_console/directional/east{ + department = "Security"; + name = "Security Requests Console" + }, +/obj/structure/table/reinforced, +/obj/machinery/recharger, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/security/checkpoint/medical) "dzR" = ( -/obj/effect/turf_decal/siding/wood/corner, /obj/machinery/light/small/directional/west, -/obj/structure/sign/painting/library{ - pixel_x = -32 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/pumproom) "dzU" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/structure/cable, @@ -10692,6 +10689,11 @@ }, /turf/open/floor/plastic, /area/station/security/prison/safe) +"dzZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/chair_flipped, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "dAg" = ( /obj/machinery/airalarm/directional/east, /obj/machinery/camera/autoname/directional/east, @@ -10703,17 +10705,14 @@ /turf/open/floor/iron/showroomfloor, /area/station/command/heads_quarters/rd) "dAo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, /obj/structure/sign/warning/radiation/directional/west, /obj/machinery/light/small/directional/west, -/obj/effect/mapping_helpers/apc/cell_5k, +/obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, +/obj/effect/mapping_helpers/apc/cell_5k, /obj/structure/chair{ dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/south, /obj/effect/landmark/start/station_engineer, /turf/open/floor/iron, /area/station/engineering/engine_smes) @@ -10732,10 +10731,24 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "dAB" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/table/wood, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/dresser, /turf/open/floor/wood, -/area/station/commons/dorms) +/area/station/commons/dorms/room5) +"dAN" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/obj/machinery/requests_console/directional/north{ + department = "Security"; + name = "Security Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "dAR" = ( /obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, @@ -10783,13 +10796,9 @@ }, /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/welded, /obj/effect/mapping_helpers/airlock/unres{ dir = 4 }, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "dBA" = ( @@ -10801,45 +10810,58 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"dBH" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/firealarm/directional/north, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/side{ - dir = 9 +"dBB" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 }, -/area/station/engineering/break_room) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "dBO" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/service/library/printer) -"dBU" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/iron, -/area/station/construction) -"dCc" = ( +/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ - dir = 4 + dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, -/turf/open/floor/engine, -/area/station/medical/cryo) -"dCd" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/table/reinforced, -/obj/item/storage/fancy/cigarettes/cigars{ - pixel_y = 14 +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/corporate{ + id_tag = "bs_bolt"; + name = "Blueshield's Office" }, -/obj/item/lighter{ - pixel_y = -6 +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/blueshield) +"dBZ" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/machinery/chem_heater, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) +"dCg" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = -5 + }, +/obj/machinery/computer/teleporter{ + dir = 4 }, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/command/teleporter) +"dCs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "dCt" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -10848,50 +10870,24 @@ "dCw" = ( /turf/closed/wall, /area/station/science/lab) -"dCA" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/light_switch/directional/north{ - pixel_x = -8 - }, -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Psychology Office"; - name = "Psychology Office Fax Machine" - }, -/turf/open/floor/wood, -/area/station/medical/psychology) "dCB" = ( /obj/effect/spawner/random/structure/chair_maintenance{ dir = 8 }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"dCC" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/structure/closet/secure_closet/personal/patient, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) "dCP" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 }, /obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/station_map/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "dCT" = ( /obj/structure/flora/grass/jungle/b/style_random, /turf/open/floor/grass, /area/station/hallway/secondary/exit/departure_lounge) -"dCZ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hydroponics_shutters"; - name = "Hydroponics Shutters" - }, -/turf/open/floor/plating, -/area/station/service/hydroponics) "dDd" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -10899,30 +10895,22 @@ /obj/machinery/light/directional/west, /obj/structure/extinguisher_cabinet/directional/west, /obj/structure/closet/emcloset/anchored, +/obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) "dDn" = ( /obj/machinery/light/small/directional/east, -/obj/effect/spawner/random/structure/tank_holder, +/obj/structure/sign/warning/vacuum/external/directional/east, +/obj/structure/tank_holder/extinguisher, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) "dDp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/station/service/library/lounge) -"dDC" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 }, -/obj/structure/table, -/obj/item/plant_analyzer, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) +/turf/open/floor/iron/white, +/area/station/medical/office) "dDE" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/decal/cleanable/dirt, @@ -10930,7 +10918,8 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "dDF" = ( -/obj/machinery/vending/clothing, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "dDZ" = ( @@ -10945,12 +10934,59 @@ }, /area/station/service/theater) "dEg" = ( +/obj/machinery/light/small/directional/south, /obj/machinery/camera/directional/south{ c_tag = "Arrivals - Escape Pod Bay 2"; name = "arrivals camera" }, +/obj/structure/chair{ + dir = 1 + }, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/entry) +"dEl" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/door_buttons/access_button{ + idDoor = "pathology_airlock_interior"; + idSelf = "pathology_airlock_control"; + name = "Pathology Access Button"; + pixel_y = 6; + req_access = list("pathology"); + pixel_x = -24 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology{ + autoclose = 0; + frequency = 1449; + id_tag = "pathology_airlock_interior"; + name = "Pathology Interior Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/iron/white/textured, +/area/station/medical/virology) +"dEo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured, +/area/station/science/research) +"dEs" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor/plating, +/area/station/maintenance/port) "dEu" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/carbon_dioxide, @@ -10959,6 +10995,7 @@ /area/station/science/ordnance/storage) "dEE" = ( /obj/effect/turf_decal/trimline/red/filled/line, +/obj/machinery/status_display/evac/directional/south, /obj/structure/chair{ dir = 4 }, @@ -10969,43 +11006,18 @@ /turf/closed/wall/r_wall, /area/station/security/prison/visit) "dEH" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/five, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/closed/wall, +/area/station/medical/chemistry) "dEK" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"dEL" = ( -/obj/effect/spawner/random/structure/table, -/obj/item/weldingtool/mini{ - pixel_y = 8; - pixel_x = -4 - }, -/obj/item/storage/fancy/cigarettes{ - pixel_y = 2; - pixel_x = 8 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"dEQ" = ( -/obj/item/cigbutt/cigarbutt{ - pixel_x = 7 - }, -/obj/item/phone{ - desc = "Supposedly a direct line to Nanotrasen Central Command. It's not even plugged in."; - pixel_x = -3; - pixel_y = 3 - }, -/obj/structure/table/wood, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "dFp" = ( -/obj/structure/table/wood, -/obj/item/storage/dice, +/obj/structure/chair/plastic{ + dir = 4 + }, /turf/open/floor/wood, /area/station/security/prison/rec) "dFq" = ( @@ -11015,10 +11027,14 @@ /turf/open/floor/grass, /area/station/hallway/secondary/exit/departure_lounge) "dFA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/firealarm/directional/west{ + pixel_y = 5 }, -/turf/open/floor/carpet/royalblue, +/obj/machinery/light_switch/directional/west{ + pixel_y = -5 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, /area/station/command/heads_quarters/captain) "dFB" = ( /obj/effect/turf_decal/trimline/blue/warning{ @@ -11031,10 +11047,10 @@ /area/station/hallway/primary/central) "dFC" = ( /obj/effect/turf_decal/delivery, -/obj/structure/cable, /obj/machinery/light/small/directional/south, -/obj/machinery/status_display/evac/directional/south, /obj/machinery/camera/autoname/directional/south, +/obj/machinery/newscaster/directional/south, +/obj/structure/cable, /turf/open/floor/iron/large, /area/station/engineering/gravity_generator) "dFP" = ( @@ -11045,6 +11061,11 @@ dir = 4 }, /area/station/commons/locker) +"dFR" = ( +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "dFT" = ( /obj/machinery/camera/directional/north{ c_tag = "Engineering - Atmospherics Carbon Dioxide Chamber"; @@ -11053,22 +11074,43 @@ /turf/open/floor/engine/co2, /area/station/engineering/atmos) "dFW" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 10 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) -"dGg" = ( -/obj/structure/chair/sofa/right/brown{ - dir = 8 - }, -/turf/open/floor/carpet/blue, -/area/station/medical/psychology) "dGu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/station/maintenance/port) +"dGy" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer, +/turf/open/floor/iron/white, +/area/station/medical/cryo) +"dGJ" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/machinery/button/door/directional/south{ + req_access = list("security"); + name = "Security Post Shutters Control"; + id = "engi_security_post" + }, +/obj/structure/table, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = -9 + }, +/obj/item/radio/off{ + pixel_x = 6 + }, +/obj/item/screwdriver{ + pixel_y = 10 + }, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "dGM" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 @@ -11084,18 +11126,19 @@ /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/wood, /area/station/commons/vacant_room/office) +"dGY" = ( +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/commons/dorms) "dHb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, /obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/starboard/aft) "dHc" = ( /obj/structure/disposalpipe/segment, @@ -11108,20 +11151,11 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"dHd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "dHj" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/entry) -"dHn" = ( -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "dHx" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -11132,29 +11166,34 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"dHz" = ( -/obj/effect/turf_decal/stripes/end, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table/glass, -/obj/item/wrench/medical, -/obj/item/storage/pill_bottle/epinephrine{ - pixel_x = 8; - pixel_y = 5 - }, -/obj/item/reagent_containers/cup/beaker/large, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/hypospray/medipen/morphine{ - pixel_y = 12 - }, -/obj/item/reagent_containers/hypospray/medipen/morphine{ - pixel_y = 6 - }, -/turf/open/floor/iron/dark, -/area/station/medical/exam_room) "dIb" = ( /obj/machinery/mechpad, /turf/open/floor/iron, /area/station/science/robotics/mechbay) +"dIg" = ( +/obj/structure/sign/poster/random/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"dIh" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/table, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson{ + pixel_x = 3; + pixel_y = 9 + }, +/obj/item/flashlight{ + pixel_x = -3; + pixel_y = -6 + }, +/obj/item/flashlight{ + pixel_y = -12; + pixel_x = 3 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "dIp" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -11162,21 +11201,26 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat_interior) "dIu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/restraints/handcuffs/cable/zipties/used, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"dIE" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/disposalpipe/junction/flip{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/chair/office, +/obj/effect/landmark/start/chief_engineer, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) +"dIC" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 8 }, +/obj/effect/turf_decal/trimline/blue/warning{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "dIF" = ( /obj/effect/turf_decal/trimline/purple/corner{ dir = 8 @@ -11202,19 +11246,11 @@ dir = 5 }, /area/station/service/theater) -"dIM" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "dIO" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/machinery/light/directional/west, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, /obj/structure/chair/office/light{ dir = 1 }, @@ -11248,6 +11284,54 @@ /obj/effect/turf_decal/trimline/purple/filled/line, /turf/open/floor/iron/white, /area/station/science/research) +"dJx" = ( +/obj/machinery/computer/records/medical{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) +"dJA" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/machinery/airalarm/directional/north, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/structure/table/reinforced/rglass, +/obj/item/reagent_containers/syringe{ + name = "steel point" + }, +/obj/item/clothing/mask/surgical, +/obj/item/reagent_containers/cup/bottle/epinephrine, +/obj/item/reagent_containers/cup/bottle/multiver, +/obj/item/clothing/neck/stethoscope, +/obj/item/clothing/gloves/latex, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/iron/white, +/area/station/security/medical) +"dJB" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/break_room) +"dJT" = ( +/obj/structure/table, +/obj/item/book/manual/wiki/chemistry{ + pixel_x = -7; + pixel_y = 5 + }, +/obj/item/book/manual/wiki/plumbing{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/item/hand_labeler, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "dJV" = ( /obj/machinery/light/neon_lining{ dir = 8 @@ -11272,14 +11356,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/robotics/mechbay) -"dKm" = ( -/obj/structure/flora/grass/jungle/b/style_random, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/grass, -/area/station/command/bridge) "dKn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -11295,23 +11371,13 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, -/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/station/security/processing) -"dKB" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/obj/item/toy/plush/beeplushie, -/turf/open/floor/grass, -/area/station/command/bridge) "dKQ" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) "dLp" = ( /obj/effect/turf_decal/trimline/red/filled/line{ @@ -11336,32 +11402,67 @@ }, /obj/effect/turf_decal/stripes/line, /obj/structure/sign/warning/vacuum/external/directional/south, +/obj/machinery/camera/autoname/directional/west, +/obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"dMb" = ( -/obj/structure/sign/poster/random/directional/east, +"dLL" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 6 + }, +/obj/machinery/station_map/directional/south, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"dLV" = ( +/obj/structure/sink/directional/west, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) +"dLZ" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) +"dMb" = ( +/obj/structure/sign/poster/random/directional/east, /obj/structure/closet/emcloset, /obj/item/clothing/head/costume/festive, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"dMg" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/cable, +/obj/structure/table/reinforced/rglass, +/obj/item/emergency_bed{ + pixel_y = 7 + }, +/obj/item/emergency_bed{ + pixel_y = 14 + }, +/obj/item/emergency_bed{ + pixel_y = 21 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "dMl" = ( /obj/machinery/computer/upload/borg{ dir = 4 }, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai_upload) -"dMq" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 8 +"dMo" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +/obj/structure/sign/poster/official/safety_eye_protection/directional/west, +/obj/machinery/light/small/directional/west, +/obj/structure/chemical_manufacturer, /turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/area/station/medical/pharmacy) "dMC" = ( /obj/machinery/firealarm/directional/south, /obj/machinery/vending/cigarette, @@ -11371,15 +11472,9 @@ /turf/closed/wall, /area/station/science/genetics) "dMR" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Central Hallway North-East" - }, -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/service/lawoffice) "dMV" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -11412,7 +11507,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering/glass{ - name = "Engineering Foyer" + name = "Engineering Office" }, /obj/effect/mapping_helpers/airlock/access/any/engineering/general, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, @@ -11427,7 +11522,7 @@ /turf/open/floor/carpet/green, /area/station/commons/locker) "dNt" = ( -/obj/machinery/light/directional/east, +/obj/machinery/light/small/directional/south, /turf/open/floor/wood, /area/station/security/prison/rec) "dNu" = ( @@ -11467,9 +11562,6 @@ /turf/open/floor/iron/dark, /area/station/security/prison) "dOf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, @@ -11483,7 +11575,7 @@ dir = 8 }, /obj/machinery/camera/directional/east{ - c_tag = "Arrivals Hallway" + c_tag = "Arrivals - Hallway" }, /obj/structure/sign/directions/medical/directional/east{ pixel_y = 9 @@ -11497,17 +11589,14 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"dOo" = ( -/obj/structure/table/glass, -/obj/machinery/light/directional/south, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +"dOs" = ( +/obj/structure/table, +/obj/item/camera_film, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "dOt" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, +/obj/machinery/light/small/directional/north, +/obj/structure/reagent_dispensers/plumbed, /turf/open/floor/plating, /area/station/maintenance/port) "dOx" = ( @@ -11521,13 +11610,17 @@ /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron/white, /area/station/science/research) -"dOM" = ( -/obj/structure/disposalpipe/trunk{ - dir = 2 +"dOL" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/rack{ + icon = 'icons/obj/stationobjs.dmi'; + icon_state = "minibar"; + name = "skeletal minibar" }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron, -/area/station/construction) +/obj/item/storage/fancy/candle_box, +/obj/item/storage/fancy/candle_box, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "dOS" = ( /turf/closed/wall, /area/station/security/prison/work) @@ -11543,7 +11636,6 @@ /turf/open/floor/engine/n2o, /area/station/engineering/atmos) "dPh" = ( -/obj/machinery/camera/autoname/directional/south, /obj/machinery/airalarm/directional/south, /turf/open/floor/grass, /area/station/hallway/primary/central) @@ -11558,7 +11650,8 @@ /turf/open/floor/wood, /area/station/commons/vacant_room/office) "dPD" = ( -/obj/structure/closet/secure_closet/freezer/fridge, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/structure/closet/secure_closet/freezer/kitchen, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) "dPF" = ( @@ -11568,27 +11661,22 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/white, /area/station/science/research) +"dPH" = ( +/obj/effect/turf_decal/tile/purple/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"dPK" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/grass, +/area/station/medical/virology) "dPO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/airlock/grunge{ - name = "Stall 1" - }, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) -"dPP" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/rnd/production/circuit_imprinter, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/engineering/break_room) +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) "dPT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -11597,25 +11685,19 @@ /area/station/science/ordnance/storage) "dPU" = ( /obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/structure/crate, /obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/structure/chair_flipped{ + dir = 4 + }, /turf/open/floor/wood, /area/station/maintenance/port/fore) "dQg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/dark_blue/filled/warning{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_blue/warning{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "dQh" = ( /obj/effect/spawner/random/structure/chair_flipped{ dir = 8 @@ -11632,6 +11714,13 @@ }, /turf/open/floor/engine, /area/station/science/ordnance/burnchamber) +"dQC" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning, +/obj/effect/turf_decal/trimline/blue/warning{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "dQE" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -11654,65 +11743,55 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) -"dRb" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/machinery/medical_kiosk, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"dRd" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/bureaucracy/folder, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) -"dRp" = ( -/obj/structure/chair/comfy/black{ +"dQR" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/turf_decal/trimline/yellow/line{ dir = 1 }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood, -/area/station/service/library) -"dRH" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 10 - }, +/obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"dRn" = ( +/turf/open/floor/iron/dark/smooth_large, +/area/station/hallway/secondary/entry) +"dRp" = ( +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"dRH" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "dRJ" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/structure/rack, /obj/effect/spawner/random/techstorage/ai_all, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) -"dRR" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/green/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "dRS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) +"dRU" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/obj/machinery/button/door/directional/north{ + id = "engi_office_shutters"; + name = "Engineering Shutters Control"; + req_access = list("engineering") + }, +/obj/machinery/modular_computer/preset/civilian, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/station/engineering/break_room) "dSb" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -11728,10 +11807,6 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/entry) -"dSr" = ( -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/office) "dSI" = ( /obj/effect/turf_decal/box/white{ color = "#9FED58" @@ -11777,15 +11852,6 @@ /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) -"dTG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) "dTK" = ( /obj/structure/chair{ dir = 4 @@ -11793,6 +11859,18 @@ /obj/effect/landmark/start/security_officer, /turf/open/floor/iron/dark, /area/station/security/office) +"dTM" = ( +/obj/machinery/button/door/directional/north{ + id = "bs_bathroom"; + name = "Bathroom Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4; + pixel_x = -6 + }, +/obj/machinery/shower/directional/west, +/obj/structure/drain, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/blueshield) "dTN" = ( /obj/effect/artifact_spawner, /turf/open/floor/engine, @@ -11808,22 +11886,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/circuit, /area/station/ai_monitored/command/nuke_storage) -"dTX" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ +"dTZ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/newscaster/directional/north, +/obj/structure/table/reinforced, +/obj/machinery/fax{ + fax_name = "Chief Engineer's Office"; + name = "Chief Engineer's Fax Machine" + }, /turf/open/floor/iron/dark/side{ dir = 1 }, -/area/station/engineering/break_room) -"dTZ" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/iron/white, -/area/station/medical/office) +/area/station/command/heads_quarters/ce) "dUc" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -11855,9 +11931,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"dUm" = ( -/turf/closed/wall, -/area/station/medical/chemistry) "dUt" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -11875,9 +11948,10 @@ /obj/machinery/door/window/right/directional/north{ name = "Ore Redemption" }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "cargo_desk"; - name = "Cargo Desk Shutters" + name = "Cargo Desk Shutters"; + dir = 1 }, /turf/open/floor/iron/dark/textured, /area/station/cargo/office) @@ -11896,11 +11970,16 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"dUX" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "dVe" = ( /obj/effect/turf_decal/delivery/white, -/obj/machinery/light/directional/north, -/obj/structure/closet/crate/critter, -/obj/effect/spawner/random/clothing/kittyears_or_rabbitears, +/obj/structure/closet/crate, +/obj/effect/spawner/random/maintenance, /turf/open/floor/iron, /area/station/cargo/warehouse) "dVk" = ( @@ -11910,17 +11989,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) -"dVx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "dVT" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -11937,24 +12005,11 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/exit/departure_lounge) -"dVZ" = ( -/obj/machinery/light/built/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"dWs" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) -"dWN" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, +"dWu" = ( /obj/structure/cable, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/command/heads_quarters/cmo) +/obj/machinery/power/apc/auto_name/directional/south, +/turf/open/floor/wood, +/area/station/command/meeting_room) "dWS" = ( /turf/closed/wall/r_wall, /area/station/maintenance/starboard/fore) @@ -11962,20 +12017,18 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/service/chapel/funeral) -"dXw" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger{ - pixel_y = 9; - pixel_x = 7 - }, -/obj/machinery/recharger{ - pixel_y = 9; - pixel_x = -5 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/blueshield) +"dXi" = ( +/obj/machinery/camera/autoname/directional/west, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/wood, +/area/station/service/library) +"dXF" = ( +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark/side, +/area/station/hallway/secondary/exit/departure_lounge) "dXL" = ( +/obj/effect/turf_decal/bot, +/obj/structure/cable, /obj/structure/table, /obj/item/electronics/airlock{ pixel_x = -7; @@ -11995,17 +12048,8 @@ pixel_y = 8 }, /obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) -"dXR" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/structure/table/glass, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "dXW" = ( /obj/effect/turf_decal/tile/purple/opposingcorners{ dir = 1 @@ -12033,13 +12077,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/science/robotics/mechbay) -"dYg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "dYt" = ( /turf/open/floor/engine, /area/station/science/xenobiology) @@ -12054,15 +12091,22 @@ dir = 5 }, /area/station/cargo/storage) -"dYx" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 +"dYz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 5 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/table, +/obj/item/book/manual/wiki/engineering_guide{ + pixel_x = -7 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/obj/item/book/manual/wiki/engineering_construction{ + pixel_x = 7 + }, +/turf/open/floor/iron, +/area/station/engineering/break_room) "dYI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/red/filled/corner, @@ -12080,17 +12124,6 @@ dir = 4 }, /area/station/engineering/gravity_generator) -"dYS" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/table/glass, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/item/wrench/medical, -/obj/item/stack/cable_coil, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "dYV" = ( /obj/machinery/camera/directional/north{ c_tag = "Engineering - Atmospherics Oxygen Chamber"; @@ -12098,23 +12131,6 @@ }, /turf/open/floor/engine/o2, /area/station/engineering/atmos) -"dYW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Security Post - Engineering" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/dark/textured, -/area/station/security/checkpoint/engineering) "dZe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12122,6 +12138,11 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/prison/garden) +"dZs" = ( +/obj/effect/turf_decal/tile/green/fourcorners, +/obj/structure/sign/poster/official/cohiba_robusto_ad/directional/south, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "dZu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12137,9 +12158,10 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "dZE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12163,10 +12185,13 @@ /turf/open/floor/engine/air, /area/station/engineering/atmos) "dZU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/janitor, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, /area/station/service/janitor) "dZV" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -12174,15 +12199,17 @@ }, /turf/open/floor/engine, /area/station/science/ordnance/storage) +"dZW" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/structure/bodycontainer/morgue, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "eaa" = ( /obj/machinery/duct, /turf/open/floor/carpet/red, /area/station/security/prison/safe) -"eac" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "eae" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12207,25 +12234,23 @@ /obj/machinery/door/firedoor, /obj/structure/table/reinforced, /obj/machinery/door/window/left/directional/north{ - name = "Robotics Desk" + name = "Reception" }, /obj/machinery/door/window/left/directional/south{ name = "Robotics Desk"; req_access = list("robotics") }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "robotics_sci_shutters"; - name = "Robotics Shutters" + name = "Robotics Shutters"; + dir = 1 }, /obj/structure/desk_bell{ pixel_x = 7; pixel_y = 7 }, -/turf/open/floor/iron/white/textured, +/turf/open/floor/iron/textured, /area/station/science/robotics/lab) -"eav" = ( -/turf/closed/wall, -/area/station/medical/exam_room) "eaw" = ( /obj/structure/sign/warning/biohazard/directional/east, /obj/effect/turf_decal/tile/neutral/anticorner, @@ -12240,22 +12265,18 @@ dir = 1 }, /area/station/command/gateway) -"eaB" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "eaC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/structure/cable/layer1, +/obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering{ name = "Main SMES Room" }, @@ -12263,7 +12284,6 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/structure/cable/layer1, /turf/open/floor/iron/textured, /area/station/engineering/engine_smes) "eaE" = ( @@ -12284,18 +12304,17 @@ /turf/open/floor/grass, /area/station/service/hydroponics) "eaS" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/structure/table/reinforced, -/obj/item/folder/yellow{ - pixel_y = 4 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/machinery/computer/security{ + dir = 8 }, -/obj/item/multitool, -/obj/machinery/light/directional/east, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/security/checkpoint/medical) "eaV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor/has_bulb, +/obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/entry) "eaW" = ( @@ -12305,6 +12324,11 @@ /obj/structure/bodycontainer/morgue, /turf/open/floor/iron/white, /area/station/security/medical) +"ebg" = ( +/obj/structure/chair/comfy/black, +/obj/effect/landmark/start/chief_medical_officer, +/turf/open/floor/wood, +/area/station/command/meeting_room) "ebp" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -12333,8 +12357,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) +"ebN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/structure/table/wood/fancy/royalblue, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) "ebO" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 10 }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ @@ -12343,30 +12375,29 @@ /turf/open/floor/engine/vacuum, /area/station/science/ordnance/freezerchamber) "ebS" = ( -/obj/machinery/computer/atmos_control/oxygen_tank{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/obj/machinery/computer/atmos_control/oxygen_tank{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "ecf" = ( -/obj/structure/sign/warning/no_smoking/directional/north, /obj/effect/turf_decal/bot, +/obj/structure/sign/warning/no_smoking/directional/north, /obj/structure/closet/radiation, /turf/open/floor/iron, /area/station/science/ordnance) "ecg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/computer/monitor{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/dark, +/area/station/command/bridge) "ech" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -12375,25 +12406,47 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/white, /area/station/science/research) +"ecm" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/table/reinforced, +/obj/item/multitool, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "ecF" = ( /obj/structure/rack, /obj/item/storage/briefcase, /turf/open/floor/wood, /area/station/service/lawoffice) -"ecX" = ( +"ecG" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 + dir = 6 }, -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 8 +/obj/structure/table/reinforced/rglass, +/obj/item/emergency_bed{ + pixel_y = 14 }, -/obj/structure/table/glass, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/iron/white, +/area/station/medical/surgery) +"ecX" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 4 + }, +/turf/open/space/basic, +/area/space/nearstation) "edc" = ( -/obj/item/storage/pill_bottle, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/hallway/secondary/exit/departure_lounge) "edD" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/checker, @@ -12409,6 +12462,13 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, /area/station/security/brig/entrance) +"edH" = ( +/obj/structure/window/spawner/directional/south, +/obj/machinery/computer/atmos_alert{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/break_room) "edP" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/effect/turf_decal/plaque{ @@ -12435,9 +12495,15 @@ dir = 9 }, /obj/effect/turf_decal/trimline/neutral/corner, +/obj/machinery/camera/autoname/directional/west, /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"eeb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/bot_assembly/floorbot, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "eed" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -12453,15 +12519,30 @@ /obj/effect/spawner/random/trash/food_packaging, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"eeC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/wood, +/area/station/security/prison/rec) "eeM" = ( /obj/machinery/button/door/directional/south{ id = "dorm_6"; name = "Dorm Bolt Control"; normaldoorcontrol = 1; - specialfunctions = 4 + specialfunctions = 4; + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = 5; + pixel_y = -34 }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/structure/chair/stool/directional/north, /turf/open/floor/carpet/red, -/area/station/commons/dorms) +/area/station/commons/dorms/room6) "eeV" = ( /obj/structure/sign/poster/official/random/directional/north, /obj/structure/closet/secure_closet/personal, @@ -12469,14 +12550,6 @@ dir = 1 }, /area/station/commons/locker) -"efb" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/table/reinforced, -/obj/item/taperecorder, -/obj/item/tape/random, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "efo" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -12504,7 +12577,6 @@ /turf/open/floor/plating, /area/station/engineering/atmos) "efB" = ( -/obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom/directional/east, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12516,23 +12588,12 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/science/ordnance/storage) -"efV" = ( -/obj/effect/turf_decal/trimline/blue/filled/end{ - dir = 1 - }, -/obj/structure/table/glass, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 6 - }, -/obj/item/healthanalyzer, -/obj/item/gun/syringe, -/turf/open/floor/iron/white, -/area/station/medical/storage) "efW" = ( -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/carpet, -/area/station/service/chapel) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/service/library/lounge) "egs" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -12541,6 +12602,7 @@ /obj/structure/closet/firecloset{ anchored = 1 }, +/obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) "egC" = ( @@ -12560,78 +12622,105 @@ }, /area/station/cargo/lobby) "egM" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +/obj/machinery/door/window/left/directional/south{ + name = "Labor Camp Observation"; + req_access = list("security") + }, /turf/open/floor/iron/dark, -/area/station/security/detectives_office) +/area/station/security/processing) +"egR" = ( +/obj/structure/chair/comfy/black, +/obj/effect/landmark/start/research_director, +/turf/open/floor/wood, +/area/station/command/meeting_room) "ehj" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/structure/cable, -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks/beer{ - dir = 4 - }, +/obj/machinery/duct, /turf/open/floor/wood, /area/station/service/bar) -"ehr" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"ehB" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/machinery/light_switch/directional/west, -/obj/machinery/light/small/directional/west, -/obj/structure/disposalpipe/trunk{ +"ehk" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark/side{ +/obj/effect/turf_decal/trimline/blue/line{ dir = 8 }, -/area/station/engineering/break_room) -"ehP" = ( -/obj/structure/sign/warning/secure_area/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"eia" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) +"ehq" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, +/obj/item/storage/pill_bottle, /turf/open/floor/plating, -/area/station/maintenance/central) +/area/station/maintenance/starboard/aft) +"ehr" = ( +/obj/effect/spawner/random/trash/moisture_trap, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) +"ehG" = ( +/obj/machinery/smartfridge/organ, +/turf/closed/wall, +/area/station/medical/surgery) +"eia" = ( +/obj/machinery/button/door/directional/east{ + id = "cap_bathroom"; + name = "Bathroom Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4; + pixel_y = 6 + }, +/obj/machinery/shower/directional/north, +/obj/structure/drain, +/obj/item/soap/deluxe, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/captain/private) "eib" = ( /obj/structure/cable, /obj/machinery/power/smes, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) -"eie" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/line, -/obj/machinery/station_map/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/starboard) "eil" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/execution) +"ein" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/structure/bodycontainer/morgue{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "eiO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/obj/effect/spawner/random/structure/chair_flipped{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/iron/white/textured, +/area/station/medical/office) +"eiY" = ( +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = -5 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/upgraded, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "ejc" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/dark/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible{ @@ -12641,76 +12730,48 @@ /area/station/science/ordnance) "ejh" = ( /obj/effect/turf_decal/bot, +/obj/structure/cable, /turf/open/floor/iron/large, /area/station/commons/storage/primary) -"eji" = ( -/obj/machinery/status_display/supply{ - pixel_x = -32 - }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -6; - pixel_y = 7 - }, -/obj/item/stamp/head/qm{ - pixel_x = 8; - pixel_y = 12 - }, -/obj/item/stamp{ - pixel_x = 8; - pixel_y = 6 - }, -/obj/item/stamp/denied{ - pixel_x = 8 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) "ejt" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/auxiliary) "ejv" = ( -/obj/structure/table/wood, -/obj/machinery/cassette/adv_cassette_deck{ - pixel_y = 8 +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 }, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "ejw" = ( /obj/structure/table/wood, /obj/item/camera_film, /obj/item/camera, /turf/open/floor/wood, /area/station/security/prison/rec) -"ejy" = ( -/obj/effect/turf_decal/stripes/line, +"ejD" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/obj/machinery/door/airlock/atmos{ - name = "Turbine Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/effect/landmark/navigate_destination/incinerator, -/turf/open/floor/iron/textured, -/area/station/maintenance/department/engine/atmos) -"ejE" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, /obj/machinery/duct, +/obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/port) +"ejE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) "ejK" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/machinery/camera/autoname/directional/east, @@ -12720,32 +12781,19 @@ /obj/machinery/status_display/ai/directional/east, /turf/open/floor/iron/white, /area/station/science/research) -"ejP" = ( -/obj/machinery/computer/crew, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"ejR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "ekn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/wood{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/smithing) "ekx" = ( /obj/effect/turf_decal/tile/neutral/half, -/obj/effect/turf_decal/box/white, +/obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -12753,21 +12801,17 @@ /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/command/nuke_storage) "ekL" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) -"ekU" = ( -/obj/effect/spawner/random/structure/table, -/obj/item/assembly/timer, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "ell" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -12780,47 +12824,33 @@ /obj/machinery/syndicatebomb/training, /turf/open/floor/iron/dark, /area/station/security/office) +"elt" = ( +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "elu" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ dir = 1 }, +/obj/machinery/newscaster/directional/south, /obj/machinery/computer/security{ dir = 1 }, -/obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron/dark, /area/station/security/office) -"elU" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/obj/structure/fireaxecabinet/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"ema" = ( -/mob/living/basic/chicken/brown{ - forced_gender = "male" - }, -/turf/open/floor/grass, -/area/station/service/hydroponics) +"elS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_corner, +/area/station/service/chapel) "emc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/carpet/black, +/obj/structure/cable, +/obj/machinery/netpod, +/turf/open/floor/catwalk_floor/iron_dark, /area/station/security/bitden) -"emd" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/delivery, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark, -/area/station/medical/medbay/central) "emg" = ( /obj/effect/turf_decal/tile/green/half/contrasted, /turf/open/floor/iron/dark/side{ @@ -12838,23 +12868,6 @@ }, /turf/open/floor/iron/large, /area/station/science/robotics/mechbay) -"emv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/bathroom{ - name = "Bathroom" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/captain/private) "emI" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -12863,17 +12876,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) -"emN" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "emS" = ( /obj/effect/turf_decal/bot_white, /obj/machinery/light_switch/directional/west, @@ -12887,27 +12889,14 @@ /turf/open/floor/iron/white, /area/station/science/research) "emZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) +/turf/open/floor/wood, +/area/station/medical/psychology) "enc" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/maintenance/starboard/fore) -"enf" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) "ent" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/components/binary/pump{ @@ -12925,29 +12914,21 @@ dir = 8 }, /obj/machinery/light/small/directional/west, -/obj/machinery/firealarm/directional/west, +/obj/machinery/status_display/ai/directional/west, /obj/structure/table, /obj/item/storage/medkit/regular, /turf/open/floor/iron/dark/side{ dir = 8 }, /area/station/commons/storage/primary) -"eny" = ( -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "enB" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners{ +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/turf_decal/trimline/green/line{ dir = 1 }, -/obj/machinery/button/door/directional/north{ - id = "kitchen_sec_shutters"; - name = "Kitchen Shutters Control"; - req_access = list("kitchen") - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) "enD" = ( /obj/machinery/airalarm/directional/west, /obj/item/kirbyplants/random, @@ -12955,7 +12936,6 @@ /area/station/service/chapel/funeral) "enE" = ( /obj/machinery/light/directional/east, -/obj/effect/decal/cleanable/dirt, /obj/machinery/computer/atmos_control/nocontrol/incinerator{ dir = 8 }, @@ -12976,15 +12956,16 @@ /area/station/security/prison/visit) "eoo" = ( /obj/machinery/light/directional/north, +/obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark, /area/station/security/prison/visit) -"eos" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/ghost_critter_spawn, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +"eop" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/table, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "eot" = ( /obj/machinery/light/small/directional/south, /obj/structure/sign/poster/random/directional/south, @@ -13014,21 +12995,15 @@ /turf/open/floor/iron, /area/station/science/robotics/lab) "eoJ" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ dir = 4 }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"eoL" = ( -/obj/machinery/space_heater, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "eoS" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/fore) "epc" = ( @@ -13036,11 +13011,6 @@ /obj/effect/spawner/random/trash/box, /turf/open/floor/plating, /area/station/maintenance/port) -"epd" = ( -/obj/effect/spawner/random/maintenance, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/central) "epk" = ( /turf/open/floor/iron/dark/side, /area/station/commons/locker) @@ -13048,26 +13018,6 @@ /obj/effect/spawner/random/structure/musician/piano/random_piano, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"epF" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) "epO" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 @@ -13077,7 +13027,6 @@ codes_txt = "delivery;dir=4"; location = "QM #5" }, -/obj/structure/sign/poster/random/directional/west, /turf/open/floor/iron/dark/side{ dir = 8 }, @@ -13086,50 +13035,38 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/chair/wood{ +/obj/structure/chair/plastic{ dir = 1 }, /turf/open/floor/wood, /area/station/security/prison/rec) "eqa" = ( -/obj/effect/turf_decal/trimline/purple/filled/warning{ - dir = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/science/research) -"eql" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/table/reinforced, -/obj/item/reagent_containers/cup/glass/bottle/navy_rum{ - pixel_x = 7; - pixel_y = 13 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = 6 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/storage/box/handcuffs{ - pixel_y = -5; - pixel_x = -6 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +"eqe" = ( +/obj/machinery/light/directional/north, +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/wood, +/area/station/service/library) "eqm" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) -"eqC" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 1 +"eqx" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 8 }, -/turf/open/floor/iron/dark/side{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/area/station/engineering/storage_shared) +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "eqJ" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -13137,7 +13074,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/fore) "eqS" = ( /obj/machinery/light/directional/north, @@ -13147,21 +13084,20 @@ }, /area/station/commons/dorms) "erd" = ( -/obj/structure/railing{ - dir = 8 +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 }, -/turf/open/ballpit, -/area/station/security/bitden) +/area/station/security/prison/safe) "eri" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ +/obj/structure/cable, +/obj/structure/chair{ dir = 4 }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/effect/landmark/start/security_officer, +/turf/open/floor/iron/dark, +/area/station/security/office) "erA" = ( /obj/effect/turf_decal/bot, /obj/structure/window/reinforced/spawner/directional/north, @@ -13169,6 +13105,12 @@ /obj/machinery/flasher/portable, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/security/armory) +"erB" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "erC" = ( /obj/item/stack/spacecash/c1000{ pixel_y = 11; @@ -13179,7 +13121,7 @@ /turf/open/floor/eighties/red, /area/station/service/theater) "erQ" = ( -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/item/paper_bin, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) @@ -13190,25 +13132,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"erV" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"esk" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Chemistry Factory" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/effect/landmark/navigate_destination/chemfactory, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "esr" = ( /obj/effect/turf_decal/trimline/blue/filled/warning, /obj/effect/turf_decal/trimline/blue/warning{ @@ -13219,15 +13142,10 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"ess" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "esy" = ( /obj/structure/chair/sofa/left/maroon{ dir = 4 }, -/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark/side{ dir = 8 }, @@ -13255,22 +13173,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 5 - }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) "etg" = ( -/obj/structure/chair, -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/iron, -/area/station/engineering/storage) -"etn" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/obj/effect/turf_decal/trimline/green/line{ + dir = 4 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "etp" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -13286,12 +13200,25 @@ }, /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/security/checkpoint/supply) "ett" = ( -/obj/machinery/teleport/station, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = 5 + }, +/obj/machinery/newscaster/directional/east, +/obj/structure/table/wood, +/obj/item/toy/plush/moth{ + name = "Dr. Moff" + }, +/obj/item/toy/figure/psychologist{ + pixel_x = 9; + pixel_y = -9 + }, +/turf/open/floor/wood, +/area/station/medical/psychology) "etx" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -13314,14 +13241,26 @@ dir = 1 }, /area/station/service/hydroponics/garden) -"etL" = ( -/obj/machinery/holopad/secure, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) -"etV" = ( -/obj/machinery/chem_master/condimaster{ - name = "CondiMaster Neo" +"etJ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/vending/wallmed/directional/west, +/obj/structure/table/reinforced/rglass, +/obj/item/wrench/medical, +/obj/item/tank/internals/anesthetic, +/obj/item/tank/internals/anesthetic{ + pixel_x = 3; + pixel_y = -3 }, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/mask/surgical, +/turf/open/floor/iron/white, +/area/station/medical/surgery) +"etV" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/structure/closet/secure_closet/freezer/meat, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) "etW" = ( @@ -13337,19 +13276,22 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "euj" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/processor/preset_three, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) "euq" = ( /obj/machinery/space_heater, /turf/open/floor/plating, /area/station/maintenance/department/eva) +"euC" = ( +/obj/effect/turf_decal/trimline/yellow/filled/end{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "euK" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ @@ -13358,7 +13300,8 @@ /turf/open/floor/plating, /area/station/engineering/atmos/pumproom) "euP" = ( -/obj/machinery/camera/autoname/directional/west, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, /obj/structure/table/reinforced, /obj/machinery/computer/security/telescreen/ordnance{ dir = 4 @@ -13373,14 +13316,6 @@ /obj/structure/cable/multilayer/connected, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) -"eva" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/structure/cable, -/obj/machinery/computer/security{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) "evd" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; @@ -13418,9 +13353,20 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/prison/visit) -"evr" = ( -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) +"evq" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"evs" = ( +/obj/machinery/light/broken/directional/west, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/structure/table, +/obj/item/taperecorder, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "evt" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/frame/machine, @@ -13433,17 +13379,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, /turf/open/floor/engine, /area/station/security/execution) -"evv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/virology) "evx" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) +"evA" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "evD" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -13456,13 +13411,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"ewn" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "ewB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -13472,22 +13420,22 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"ewE" = ( -/obj/structure/sign/warning/vacuum/external/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "ewG" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 8 }, /obj/machinery/camera/autoname/directional/west, -/obj/machinery/airalarm/directional/west, /obj/structure/chair/office/light{ dir = 1 }, /turf/open/floor/iron/dark, /area/station/science/server) +"ewK" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "ewM" = ( /obj/machinery/camera/directional/north{ c_tag = "Science - Artifact Lab, Test Chamber"; @@ -13496,11 +13444,15 @@ }, /turf/open/floor/engine, /area/station/science/explab) -"ewZ" = ( -/obj/machinery/power/floodlight, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/atmos) +"ewP" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) +"exa" = ( +/obj/machinery/shower/directional/north, +/obj/structure/drain, +/turf/open/floor/iron/white/textured_large, +/area/station/medical/exam_room) "exf" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/effect/turf_decal/stripes/line{ @@ -13532,17 +13484,19 @@ }, /obj/machinery/button/door/directional/east{ id = "qm_warehouse"; - name = "Warehouse Door Control"; + name = "Warehouse Shutters Control"; req_access = list("cargo") }, -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start/cargo_technician, /turf/open/floor/iron/dark/side{ dir = 4 }, /area/station/cargo/storage) +"exq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/service/abandoned_gambling_den) "ext" = ( /obj/machinery/conveyor_switch/oneway{ dir = 8; @@ -13551,33 +13505,6 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/disposal) -"exw" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/directional/south, -/obj/machinery/computer/operating{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/medical/exam_room) -"exz" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central) -"exD" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/virology/glass{ - name = "Isolation B" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, -/turf/open/floor/iron/white/textured, -/area/station/medical/virology) "exG" = ( /obj/structure/hoop{ dir = 4 @@ -13586,19 +13513,6 @@ dir = 8 }, /area/station/security/prison/workout) -"exJ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/camera/directional/north{ - c_tag = "Medical - Pathology, Secondary Lab"; - name = "medical camera"; - network = list("ss13","medbay") - }, -/obj/structure/reagent_dispensers/wall/virusfood/directional/north, -/obj/machinery/disease2/centrifuge, -/turf/open/floor/iron/white, -/area/station/medical/virology) "exO" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -13607,10 +13521,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/port) "exU" = ( @@ -13635,11 +13546,13 @@ /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) "eyp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/spawner/random/engineering/tank, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) "eyt" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -13656,18 +13569,22 @@ /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) "eyN" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/tile, /area/station/service/library/artgallery) "eyU" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/machinery/light_switch/directional/east, -/obj/machinery/firealarm/directional/south, +/obj/machinery/light_switch/directional/east{ + pixel_y = -5 + }, +/obj/machinery/firealarm/directional/east{ + pixel_y = 5 + }, +/obj/item/radio/intercom/directional/south, /obj/structure/rack, /obj/item/storage/toolbox/mechanical, /obj/item/multitool, @@ -13693,11 +13610,23 @@ /turf/open/floor/iron, /area/station/maintenance/disposal) "ezP" = ( -/obj/effect/turf_decal/trimline/purple/filled/warning{ - dir = 6 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/science/research) +"ezR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) "ezY" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -13707,10 +13636,6 @@ /turf/open/floor/iron/dark/side, /area/station/commons/locker) "ezZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -13718,8 +13643,8 @@ name = "Funeral Parlor Maintenance" }, /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/service/chapel/funeral) "eAg" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 8 @@ -13732,12 +13657,16 @@ /turf/open/floor/iron, /area/station/hallway/secondary/service) "eAp" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/chair/office{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) +"eAu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/service/library) "eAS" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -13765,11 +13694,20 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "eBn" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/closet/secure_closet/bar, +/obj/machinery/airalarm/directional/west, +/obj/structure/closet/secure_closet{ + req_access = list("bar"); + name = "Gun Locker" + }, +/obj/item/storage/box/rubbershot, +/obj/item/storage/box/beanbag, +/obj/item/gun/ballistic/shotgun/doublebarrel, /turf/open/floor/wood, /area/station/service/bar/backroom) +"eBs" = ( +/obj/effect/spawner/random/trash/box, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "eBw" = ( /obj/structure/bed, /obj/item/bedsheet/dorms, @@ -13791,7 +13729,7 @@ /obj/item/clothing/shoes/sneakers/black, /obj/item/clothing/shoes/sneakers/black, /obj/item/clothing/shoes/sneakers/black, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) "eBF" = ( /obj/effect/turf_decal/trimline/neutral/filled/warning{ @@ -13805,19 +13743,33 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"eBP" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"eBQ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/light/small/directional/south, +/obj/machinery/defibrillator_mount/directional/south, +/obj/structure/table/optable, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "eBR" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/light/small/directional/south, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_y = 4 - }, -/obj/item/folder/red{ - pixel_y = 6 - }, -/obj/item/pen{ - pixel_y = 6 +/obj/machinery/camera/directional/south{ + c_tag = "Security - Post, Cargo"; + name = "security camera" }, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder/red, +/obj/item/pen, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) "eBU" = ( @@ -13848,47 +13800,27 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) -"eCJ" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 5 - }, -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/kitchen, -/area/station/security/prison/mess) -"eCO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/food_or_drink/booze{ - pixel_x = 4; - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = -5; - pixel_y = 6 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"eDg" = ( +"eCG" = ( +/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 1 }, +/obj/structure/cable, +/obj/machinery/door/window/left/directional/south, +/turf/open/floor/iron/dark/textured, +/area/station/service/abandoned_gambling_den) +"eCJ" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/iron/large, +/area/station/security/prison/work) +"eDg" = ( /obj/structure/sign/warning/secure_area/directional/west, /obj/machinery/shower/directional/east, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology/hallway) -"eDk" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/glass, -/obj/item/paper_bin, -/obj/item/folder/white, -/obj/item/pen, -/turf/open/floor/iron/white, -/area/station/medical/office) "eDD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/open/floor/plating, @@ -13906,41 +13838,14 @@ dir = 1 }, /area/station/commons/dorms) -"eDW" = ( -/obj/effect/turf_decal/siding/dark_blue{ - dir = 5 - }, -/obj/effect/turf_decal/siding/dark_blue/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "eED" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, /obj/machinery/light/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/science/research) -"eEP" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/engineering/storage_shared) "eFe" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -13967,8 +13872,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) +"eFJ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/machinery/button/door/directional/north{ + id = "med_priv_2"; + name = "Privacy Shutters Control" + }, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_b) "eFM" = ( /obj/effect/turf_decal/tile/neutral/anticorner, /obj/effect/turf_decal/tile/neutral{ @@ -13979,6 +13898,15 @@ dir = 1 }, /area/station/engineering/gravity_generator) +"eFO" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "eFV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -13992,10 +13920,10 @@ /obj/effect/turf_decal/trimline/yellow/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/simple/pink/hidden{ - dir = 10 +/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden, +/turf/open/floor/iron/dark/side{ + dir = 8 }, -/turf/open/floor/iron, /area/station/hallway/primary/aft) "eGa" = ( /obj/effect/turf_decal/stripes/line, @@ -14029,15 +13957,12 @@ /turf/open/floor/iron, /area/station/science/ordnance) "eGw" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=1"; - location = "Bridge" - }, -/obj/structure/plasticflaps/opaque, -/obj/machinery/duct, -/turf/open/floor/iron/dark, +/turf/open/floor/plating, /area/station/maintenance/central) +"eGD" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/wood, +/area/station/service/library) "eGI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -14045,7 +13970,7 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) "eGM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -14054,8 +13979,20 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/fore) +"eGN" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, +/area/station/engineering/break_room) "eGT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14065,11 +14002,9 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "eGV" = ( -/obj/structure/sign/poster/random/directional/west, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/four, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "eGX" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -14082,27 +14017,48 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, -/obj/machinery/newscaster/directional/north, -/obj/machinery/photocopier, -/turf/open/floor/iron, +/obj/machinery/camera/directional/north{ + c_tag = "Engineering - Chief Engineer's Office"; + name = "engineering camera" + }, +/obj/machinery/keycard_auth/directional/north{ + pixel_y = 34 + }, +/obj/machinery/button/door/directional/north{ + id = "atmos"; + name = "Atmospherics Lockdown"; + pixel_x = 11 + }, +/obj/machinery/button/door/directional/north{ + id = "engineering"; + name = "Engineering Lockdown"; + pixel_x = -11 + }, +/obj/machinery/button/door/directional/north{ + id = "secure_storage"; + name = "Engineering Secure Storage" + }, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, /area/station/command/heads_quarters/ce) +"eHi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) +"eHm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "eHO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron, /area/station/commons/storage/primary) -"eIh" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/radio/intercom/directional/north, -/obj/structure/closet/secure_closet/medical2, -/obj/item/clothing/mask/breath/medical, -/obj/item/clothing/mask/breath/medical, -/turf/open/floor/iron/white, -/area/station/medical/surgery) -"eIj" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "eIw" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/effect/turf_decal/plaque{ @@ -14110,18 +14066,24 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"eIJ" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/light_switch/directional/north, -/obj/machinery/suit_storage_unit/engine, -/turf/open/floor/iron, -/area/station/engineering/main) -"eIP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"eIy" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, -/turf/open/floor/grass, -/area/station/medical/virology) +/obj/structure/sign/poster/official/random/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/medical/paramedic) +"eIJ" = ( +/obj/machinery/status_display/evac/directional/east, +/obj/structure/filingcabinet, +/turf/open/floor/iron/dark, +/area/station/security/prison/visit) "eIW" = ( /obj/structure/sign/poster/official/random/directional/north, /obj/machinery/status_display/evac/directional/east, @@ -14137,27 +14099,23 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/research) -"eJo" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/light_switch/directional/south{ - pixel_x = -8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +"eJk" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/structure/chair_flipped{ + dir = 8 }, -/turf/open/floor/engine, -/area/station/medical/cryo) +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"eJo" = ( +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/central) "eJp" = ( -/obj/machinery/light/directional/west, -/obj/machinery/status_display/evac/directional/north, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/maintenance/department/science) +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "eJq" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/mess, @@ -14173,25 +14131,21 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "eJA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/wood, -/turf/open/floor/wood, -/area/station/security/prison/rec) +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/security/prison/garden) "eJD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/button/door/directional/north{ - id = "blueshield_office" - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/station/hallway/primary/central) "eJG" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, /obj/machinery/airalarm/directional/east, /obj/machinery/washing_machine, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) "eKm" = ( /obj/machinery/atmospherics/miner/oxygen, @@ -14211,15 +14165,25 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 }, -/obj/machinery/light/directional/west, +/obj/machinery/light/small/directional/west, +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/iron, /area/station/engineering/storage) -"eKA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 +"eKx" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 }, -/obj/machinery/telecomms/server/presets/service, -/turf/open/floor/engine/telecomms, +/obj/effect/turf_decal/trimline/blue/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) +"eKA" = ( +/obj/machinery/telecomms/server/presets/command, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) "eKK" = ( /obj/machinery/atmospherics/components/tank/air{ @@ -14227,10 +14191,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"eKT" = ( -/obj/effect/spawner/random/trash/box, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "eKY" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -14244,40 +14204,52 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "eLl" = ( -/obj/machinery/light/small/built/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "Chief Medical Officer's Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/cmo, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/cmo) "eLo" = ( /obj/machinery/light/floor/has_bulb, /obj/machinery/duct, /turf/open/floor/plastic, /area/station/security/prison/safe) -"eLx" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/small/directional/west, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/table/glass, -/obj/item/storage/medkit/regular{ - pixel_x = 6; - pixel_y = 6 +"eLy" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 }, -/obj/item/storage/medkit/brute{ - pixel_x = 3; - pixel_y = 3 +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_y = 10 }, -/obj/item/storage/medkit/brute, -/obj/item/storage/medkit/brute{ - pixel_x = -3; - pixel_y = -3 +/obj/item/storage/toolbox/mechanical{ + pixel_y = 4 }, -/obj/machinery/door/window/left/directional/east{ - name = "First-Aid Supplies"; - req_access = list("medical") +/obj/item/storage/belt/utility, +/obj/item/flashlight, +/obj/item/clothing/glasses/meson/engine{ + pixel_x = 4; + pixel_y = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) +/obj/item/pipe_dispenser, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/storage_shared) "eLA" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -14286,8 +14258,8 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/poddoor/preopen{ id = "execution_fireblast" }, @@ -14300,18 +14272,6 @@ }, /turf/open/floor/engine, /area/station/security/execution) -"eMa" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Engineering - Tech Storage"; - name = "engineering camera" - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "eMb" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -14330,10 +14290,10 @@ /turf/open/floor/iron/dark/textured, /area/station/security/evidence) "eMc" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/effect/turf_decal/tile/purple/full, /obj/effect/turf_decal/delivery, /obj/machinery/duct, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "eMh" = ( /obj/effect/turf_decal/trimline/brown/filled/warning{ @@ -14343,14 +14303,6 @@ dir = 5 }, /area/station/cargo/storage) -"eMi" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "eMz" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/components/trinary/filter{ @@ -14373,43 +14325,36 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor/has_bulb, /turf/open/floor/iron/dark, /area/station/security/processing) "eNi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) -"eNn" = ( -/obj/machinery/light/directional/south, -/obj/structure/sign/flag/nanotrasen/directional/south, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "eNs" = ( /turf/closed/wall, /area/station/hallway/primary/central) "eNx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 }, -/obj/machinery/atmospherics/components/binary/pump/on/supply/hidden{ - dir = 1 +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/hallway/primary/aft) "eNC" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"eNH" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/ghost_critter_spawn, -/turf/open/floor/plating, -/area/station/security/prison) "eNK" = ( /obj/effect/turf_decal/trimline/brown/filled/warning, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -14450,28 +14395,9 @@ dir = 8 }, /area/station/cargo/storage) -"eOc" = ( -/obj/effect/turf_decal/trimline/red/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 5 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/station_map/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) "eOe" = ( -/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/engineering/engine_smes) -"eOj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "eOt" = ( /obj/effect/turf_decal/trimline/neutral/warning, /obj/effect/turf_decal/trimline/neutral/filled/warning{ @@ -14495,32 +14421,50 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"ePa" = ( -/obj/structure/table/wood, +"eOV" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/assembly/timer, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) +"eOZ" = ( +/obj/structure/sink/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"ePa" = ( +/obj/structure/closet/secure_closet/psychology, +/turf/open/floor/wood, +/area/station/medical/psychology) "ePb" = ( /obj/structure/disposalpipe/segment, /obj/effect/spawner/random/trash/garbage, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/cargo) "ePf" = ( -/obj/item/storage/secure/safe/directional/east, -/obj/item/kirbyplants/random, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/depsec/medical, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/medical) "ePr" = ( /obj/machinery/suit_storage_unit/standard_unit, /turf/open/floor/iron/white/textured, /area/station/science/auxlab) "ePv" = ( -/obj/machinery/grill, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/kitchen, -/area/station/security/prison/mess) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/security/prison/rec) "ePw" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 @@ -14529,16 +14473,8 @@ /obj/structure/sign/warning/secure_area/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"ePO" = ( -/obj/item/radio/intercom/directional/east, -/obj/structure/table/reinforced, -/obj/item/radio/off, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "ePQ" = ( /obj/machinery/light/small/directional/west, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, /obj/structure/bed/dogbed, /mob/living/basic/pet/dog/bullterrier{ name = "Walter"; @@ -14547,15 +14483,15 @@ }, /turf/open/floor/wood, /area/station/service/lawoffice) -"ePU" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) "ePX" = ( -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, /area/station/service/janitor) +"ePY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "eQj" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 @@ -14565,15 +14501,23 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) -"eQm" = ( -/obj/effect/turf_decal/box, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/virology) +"eQk" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"eQs" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/bookcase{ + name = "Forbidden Knowledge" + }, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) +"eQv" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "eQw" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -14589,10 +14533,9 @@ name = "Kitchen and Bar"; req_access = list("kitchen") }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "kitchen_sec_shutters"; - name = "Kitchen Shutters"; - dir = 1 + name = "Kitchen Shutters" }, /turf/open/floor/iron/dark/textured, /area/station/service/kitchen) @@ -14603,15 +14546,16 @@ /turf/open/floor/engine, /area/station/science/ordnance/freezerchamber) "eQN" = ( -/obj/structure/chair/comfy/black{ - dir = 8 - }, -/obj/structure/sign/painting/library{ - pixel_y = 32 +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/camera/directional/east{ + c_tag = "Medical - Office"; + network = list("ss13","medbay"); + name = "medical camera" }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/service/library) +/obj/structure/closet/secure_closet/medical3, +/obj/item/wrench/medical, +/turf/open/floor/iron/white, +/area/station/medical/office) "eQO" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 8 @@ -14619,61 +14563,59 @@ /obj/structure/table/wood, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"eQZ" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/closet/secure_closet/medical3, -/obj/item/wrench/medical, +"eRo" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Medical - Exam Room, West"; + network = list("ss13","medbay"); + name = "medical camera" + }, +/obj/item/radio/intercom/directional/east, +/obj/machinery/computer/operating{ + dir = 8 + }, /turf/open/floor/iron/white, -/area/station/medical/office) +/area/station/medical/exam_room) "eRr" = ( +/obj/machinery/power/apc/auto_name/directional/north, /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, -/obj/machinery/button/door/directional/north{ - id = "secure_storage"; - name = "Engineering Secure Storage" - }, -/obj/machinery/button/door/directional/north{ - id = "engineering"; - name = "Engineering Lockdown"; - pixel_x = -11 - }, -/obj/machinery/button/door/directional/north{ - id = "atmos"; - name = "Atmospherics Lockdown"; - pixel_x = 11 - }, +/obj/structure/cable, /obj/structure/table/reinforced, -/obj/machinery/fax{ - fax_name = "Chief Engineer's Office"; - name = "Chief Engineer's Fax Machine" +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/turf/open/floor/iron/dark/side{ + dir = 1 }, -/obj/machinery/keycard_auth/directional/north{ - pixel_y = 34 - }, -/turf/open/floor/iron, /area/station/command/heads_quarters/ce) -"eRs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +"eRL" = ( +/obj/effect/turf_decal/tile/red/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "eRQ" = ( -/obj/machinery/vending/cigarette, /obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/obj/machinery/status_display/ai/directional/north, +/obj/structure/rack, +/obj/item/circuitboard/machine/exoscanner{ + pixel_y = 3 + }, +/obj/item/circuitboard/machine/exoscanner, +/obj/item/circuitboard/machine/exoscanner{ + pixel_y = -3 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "eRV" = ( /obj/effect/turf_decal/trimline/purple/filled/warning, /turf/open/floor/iron/white, /area/station/science/genetics) "eRY" = ( -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = -5 + }, /turf/open/floor/wood, /area/station/commons/vacant_room/office) "eSd" = ( @@ -14681,16 +14623,20 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "eSr" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/engineering/material_cheap, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "eSC" = ( /obj/effect/turf_decal/delivery/white, -/obj/machinery/light/directional/south, /obj/structure/closet/crate/freezer, /obj/effect/spawner/random/maintenance, /turf/open/floor/iron, /area/station/cargo/warehouse) +"eSE" = ( +/obj/machinery/atmospherics/components/tank, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "eSL" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -14719,30 +14665,12 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) -"eTd" = ( -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "eTg" = ( -/obj/structure/reagent_dispensers/plumbed{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"eTo" = ( -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 1 +/obj/structure/closet/toolcloset, +/turf/open/floor/iron/dark/side{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/engineering/atmos/office) "eTq" = ( /obj/structure/cable, /obj/machinery/power/terminal{ @@ -14757,15 +14685,19 @@ /turf/open/floor/iron/white, /area/station/science/xenobiology) "eTx" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 +/obj/machinery/status_display/evac/directional/west, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/chair/sofa/bench{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/dark_blue/line, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) +"eTA" = ( +/obj/machinery/light/small/directional/east, +/mob/living/carbon/human/species/monkey, +/turf/open/floor/grass, +/area/station/medical/virology) "eTG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -14790,20 +14722,12 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "eUa" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/dark_red/arrow_ccw{ - dir = 8 + dir = 4 }, -/turf/open/floor/iron, +/obj/structure/cable, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) "eUr" = ( /obj/effect/spawner/random/engineering/tracking_beacon, @@ -14812,6 +14736,15 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) +"eUz" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 10 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "eUB" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -14846,10 +14779,15 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "eUO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/security/detectives_office) +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/machinery/station_map/directional/east, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) "eUW" = ( /turf/open/floor/wood, /area/station/service/chapel/funeral) @@ -14867,9 +14805,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/port) "eVB" = ( @@ -14887,23 +14822,20 @@ }, /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/aft) -"eVL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +"eVJ" = ( +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/station/command/meeting_room) "eVT" = ( -/obj/effect/spawner/random/engineering/tank, +/obj/machinery/airalarm/directional/west, +/obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/maintenance/department/security/brig) -"eVV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "eVZ" = ( /obj/effect/turf_decal/tile/green, /obj/structure/table, @@ -14923,26 +14855,12 @@ dir = 9 }, /area/station/service/hydroponics) -"eWa" = ( -/obj/structure/bed, -/obj/item/bedsheet/medical, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) "eWd" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/vending/coffee, +/obj/item/kirbyplants/photosynthetic, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"eWq" = ( -/obj/structure/toilet{ - dir = 8 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/captain/private) "eWs" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 6 @@ -14983,16 +14901,16 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "eWx" = ( -/obj/effect/turf_decal/trimline/neutral/filled/warning{ +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 10 }, -/obj/effect/turf_decal/trimline/neutral/corner{ +/obj/effect/turf_decal/trimline/yellow/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, /area/station/hallway/primary/aft) "eWG" = ( /obj/effect/turf_decal/stripes/line{ @@ -15008,47 +14926,29 @@ /obj/structure/table, /turf/open/floor/iron/dark, /area/station/security/prison) -"eXv" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"eXy" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Security Post - Medbay" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/dark/textured, -/area/station/security/checkpoint/medical) "eXJ" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/pink/visible/layer2, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"eXL" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/cable, +/obj/machinery/door/window/brigdoor/left/directional/south{ + name = "Command Desk"; + req_access = list("command") + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "eXV" = ( -/obj/machinery/light/small/directional/west, +/obj/machinery/light/small/directional/south, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/port) -"eYm" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/status_display/evac/directional/west, -/obj/structure/table/reinforced, -/obj/item/pinpointer/nuke, -/obj/item/melee/baton, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +"eYv" = ( +/turf/closed/wall, +/area/station/asteroid) "eYI" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/light/small/directional/south, @@ -15060,13 +14960,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/holding_cell) -"eYU" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "eYX" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -15074,16 +14967,6 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/dark, /area/station/security/prison/visit) -"eYZ" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/table/wood, -/obj/item/razor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/flashlight/lamp/green, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "eZf" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -15101,16 +14984,8 @@ /obj/machinery/computer/crew{ dir = 4 }, -/turf/open/floor/iron/showroomfloor, -/area/station/security/warden) -"eZC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/obj/structure/closet/secure_closet/atmospherics, /turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) +/area/station/security/warden) "eZG" = ( /turf/closed/wall/r_wall, /area/station/engineering/gravity_generator) @@ -15123,21 +14998,15 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/prison/workout) -"eZR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/airalarm/directional/south, -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/item/storage/backpack/duffelbag/med/surgery, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"fab" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/computer/monitor, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +"eZS" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/structure/mirror/directional/east, +/obj/structure/sink/directional/west, +/obj/machinery/iv_drip, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "faw" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/small/directional/west, @@ -15153,60 +15022,91 @@ /obj/structure/disposalpipe/junction/flip{ dir = 8 }, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"fbk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/engine/telecomms, -/area/station/tcommsat/server) -"fbm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +"faC" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 }, +/obj/effect/turf_decal/trimline/blue/warning, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"faD" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"fbx" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"fbk" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ dir = 8 }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server) +"fbw" = ( +/obj/structure/table, +/obj/item/toy/figure/qm, +/turf/open/floor/wood, +/area/station/command/heads_quarters/qm) +"fbx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/station/cargo/miningoffice) "fby" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/machinery/airalarm/directional/north, +/obj/machinery/computer/exoscanner_control, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"fbE" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/main) +"fbG" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/holopad, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/exam_room) "fbT" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/wood, -/area/station/maintenance/starboard/aft) -"fbU" = ( -/obj/structure/chair/sofa/corp/right{ - dir = 4 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/structure/table, +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_x = -9; + pixel_y = 18 + }, +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_y = 18 + }, +/obj/item/grenade/chem_grenade/smart_metal_foam{ + pixel_x = 9; + pixel_y = 18 + }, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, +/area/station/engineering/storage_shared) "fce" = ( /obj/effect/turf_decal/tile/neutral/anticorner{ dir = 8 @@ -15220,11 +15120,10 @@ }, /area/station/command/gateway) "fch" = ( -/obj/structure/table, -/obj/item/shovel/spade, -/obj/item/plant_analyzer, -/obj/item/cultivator, -/obj/item/reagent_containers/cup/watering_can, +/obj/machinery/light/directional/south, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/machinery/biogenerator, /turf/open/floor/iron/dark, /area/station/security/prison/garden) "fck" = ( @@ -15243,14 +15142,17 @@ /turf/open/floor/iron/vaporwave, /area/station/command/heads_quarters/rd) "fcr" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 }, -/obj/effect/turf_decal/trimline/neutral/line{ +/obj/effect/turf_decal/trimline/yellow/line{ dir = 8 }, +/obj/machinery/light/small/directional/east, /obj/structure/sign/warning/secure_area/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, /area/station/hallway/primary/aft) "fcR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -15260,33 +15162,19 @@ /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /obj/effect/mapping_helpers/airlock/unres, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/starboard/aft) -"fcY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "fdb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 }, -/obj/machinery/door/airlock/grunge{ - name = "Stall 2" +/turf/open/floor/iron/dark/side{ + dir = 6 }, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) +/area/station/hallway/primary/aft) "fde" = ( /obj/structure/chair{ dir = 8 @@ -15299,22 +15187,18 @@ /obj/structure/grille, /turf/open/space, /area/space/nearstation) -"fdC" = ( -/obj/structure/sign/departments/aisat/directional/south, -/obj/machinery/camera/directional/south{ - c_tag = "Engineering - MiniSat Transit Pod Access, External"; - network = list("ss13","rd","xeno_pens"); - name = "engineering camera"; - start_active = 1 - }, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 8 - }, +"fdz" = ( +/obj/machinery/light/built/directional/south, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "fdI" = ( -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -15325,6 +15209,23 @@ /obj/effect/spawner/random/trash/food_packaging, /turf/open/floor/iron/white, /area/station/maintenance/port/fore) +"fdQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/duct, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Closet" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/commons/vacant_room/commissary) "fdT" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating/airless, @@ -15335,16 +15236,25 @@ /turf/open/floor/iron, /area/station/maintenance/starboard/aft) "fei" = ( -/obj/machinery/light/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"fep" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/box, +/obj/machinery/holopad, +/turf/open/floor/iron/large, +/area/station/hallway/primary/aft) +"fek" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) +/obj/structure/closet/secure_closet/chemical, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) +"fep" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/medical/cryo) "feq" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/effect/turf_decal/trimline/neutral/line{ @@ -15353,28 +15263,13 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"fex" = ( -/obj/structure/railing{ - dir = 4; - layer = 4.1 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/plating/airless, -/area/space/nearstation) "feD" = ( /obj/structure/closet/wardrobe/green, +/obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/commons/locker) -"feS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/greenglow, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) "feW" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/mess, @@ -15394,16 +15289,6 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"fft" = ( -/obj/structure/rack, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil{ - pixel_y = 7; - pixel_x = 3 - }, -/obj/item/crowbar/red, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "ffw" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -15427,26 +15312,32 @@ /obj/effect/spawner/random/maintenance/three, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"ffz" = ( -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "ffH" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, +/obj/machinery/status_display/evac/directional/west, /obj/item/kirbyplants/random, /turf/open/floor/iron/dark/side{ dir = 8 }, /area/station/cargo/storage) -"fge" = ( +"ffI" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 + dir = 6 }, -/obj/machinery/light/small/directional/north, -/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/trimline/blue/corner{ + dir = 1 + }, +/obj/machinery/light/small/directional/east, +/obj/item/kirbyplants/random, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/medbay/central) +"fge" = ( +/obj/machinery/light/directional/east, +/obj/machinery/status_display/ai/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "fgj" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/freezerchamber) @@ -15460,10 +15351,11 @@ "fgw" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/machinery/camera/autoname/directional/north, +/obj/machinery/firealarm/directional/east, /obj/structure/chair{ dir = 8 }, -/obj/machinery/firealarm/directional/east, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "fgC" = ( @@ -15489,32 +15381,18 @@ dir = 1 }, /obj/machinery/disposal/bin, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, +/turf/open/floor/iron/dark, /area/station/service/janitor) "fgE" = ( /obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) -"fgI" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/computer/crew, -/turf/open/floor/iron, -/area/station/medical/paramedic) -"fgN" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "Surgery" +"fgR" = ( +/obj/structure/reagent_dispensers/plumbed{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/iron/white/textured, -/area/station/medical/surgery) +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "fgW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -15532,6 +15410,7 @@ dir = 8 }, /obj/machinery/light/small/directional/east, +/obj/machinery/status_display/evac/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "fhe" = ( @@ -15555,45 +15434,49 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ - name = "Security Post - Arrivals" + name = "Security Checkpoint - Arrivals" }, /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/dark/textured, /area/station/security/checkpoint/customs/auxiliary) "fhD" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 5 }, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/freezerchamber) -"fii" = ( -/obj/structure/table/wood, -/obj/machinery/cassette/dj_station{ - pixel_y = 12 - }, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) -"fim" = ( +"fie" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Closet" + }, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/effect/mapping_helpers/airlock/unres{ dir = 1 }, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"fiq" = ( -/obj/structure/sign/painting/library{ - pixel_y = -32 +"fii" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) +"fiq" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/closet/secure_closet/medical1, +/turf/open/floor/iron/white, +/area/station/medical/office) "fir" = ( /obj/effect/turf_decal/trimline/brown/line{ dir = 8 @@ -15604,6 +15487,19 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"fiv" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/turf/open/floor/iron/dark/side, +/area/station/engineering/break_room) +"fiw" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/power/shieldwallgen, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "fiA" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/machinery/light/directional/south, @@ -15612,7 +15508,6 @@ "fiB" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/structure/filingcabinet, -/obj/machinery/status_display/ai/directional/north, /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) "fiC" = ( @@ -15625,33 +15520,31 @@ /obj/machinery/status_display/ai/directional/west, /turf/open/floor/carpet, /area/station/service/chapel) +"fiT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) +"fiU" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/nuke_storage) "fjo" = ( /obj/machinery/light/small/directional/south, /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron/dark/side, /area/station/commons/fitness) +"fjv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/ghost_critter_spawn, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "fjx" = ( /obj/item/radio/intercom/directional/north, /turf/open/floor/wood, /area/station/service/chapel/funeral) -"fjE" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/medical/psychology) -"fjH" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/bodycontainer/morgue{ - dir = 2 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "fjT" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted, /obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ @@ -15663,43 +15556,34 @@ /obj/structure/chair/office/light{ dir = 8 }, -/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) -"fkC" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "fkD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/brig/entrance) +"fkJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "fkT" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/atmospherics/components/tank/air{ + dir = 8 }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/maintenance/port/aft) "flc" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/structure/railing{ - dir = 8 +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/chair/sofa/bench/right{ + dir = 4 }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) @@ -15707,20 +15591,29 @@ /turf/closed/wall, /area/station/security/courtroom) "fli" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/hop) "flo" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/north, /obj/structure/disposalpipe/trunk, /obj/machinery/disposal/bin, /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/cargo/miningoffice) +"flq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/table/wood, +/obj/item/storage/crayons, +/turf/open/floor/wood, +/area/station/service/library/lounge) "flr" = ( /obj/structure/sign/warning/rad_shelter/directional/east, /turf/open/floor/iron/dark, @@ -15733,21 +15626,11 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"flu" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/chair/sofa/corp/left{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "flJ" = ( -/obj/structure/table/wood, +/obj/structure/table/wood/fancy/black, /obj/item/storage/photo_album/chapel, /obj/item/camera, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "flK" = ( /obj/effect/turf_decal/trimline/red/filled/line{ @@ -15755,10 +15638,11 @@ }, /obj/effect/turf_decal/trimline/red/corner, /obj/structure/table, -/obj/item/gun/energy/laser/practice, /obj/item/gun/energy/laser/practice{ - pixel_x = 2; - pixel_y = 5 + pixel_y = 6 + }, +/obj/item/gun/energy/laser/practice{ + pixel_y = -3 }, /turf/open/floor/iron/dark, /area/station/security/office) @@ -15785,6 +15669,7 @@ dir = 8 }, /obj/effect/mapping_helpers/mail_sorting/service/bar, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/hallway/secondary/service) "flU" = ( @@ -15797,6 +15682,11 @@ /obj/item/tank/internals/anesthetic, /turf/open/floor/iron/white, /area/station/science/robotics/lab) +"flV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/engineering/material_cheap, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "fmb" = ( /obj/effect/turf_decal/trimline/brown/filled/warning, /turf/open/floor/iron/dark/side, @@ -15835,21 +15725,14 @@ }, /obj/structure/reagent_dispensers/wall/peppertank/directional/north, /obj/machinery/requests_console/directional/east{ - anon_tips_receiver = 1; - assistance_requestable = 1; department = "Security"; name = "Security Requests Console" }, -/obj/structure/closet/secure_closet/security/cargo, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, +/obj/structure/closet/secure_closet/security/cargo/blueshirt, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) -"fni" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/newscaster/directional/north, -/obj/machinery/light/small/directional/north, -/obj/structure/filingcabinet, -/turf/open/floor/wood, -/area/station/medical/psychology) "fnt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -15880,7 +15763,7 @@ }, /obj/machinery/newscaster/directional/west, /obj/machinery/washing_machine, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) "fnK" = ( /obj/structure/disposalpipe/segment{ @@ -15896,30 +15779,29 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/commons/dorms) +"fnU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/commons/vacant_room/commissary) "fon" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, -/obj/machinery/status_display/evac/directional/west, /obj/machinery/light/directional/west, /obj/effect/turf_decal/trimline/red/line{ dir = 4 }, +/obj/machinery/station_map/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"fop" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"foq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +"fow" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/machinery/smartfridge/chemistry/preloaded, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "foE" = ( -/obj/machinery/camera/autoname/directional/east, /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 4 }, @@ -15927,12 +15809,14 @@ dir = 8 }, /obj/machinery/firealarm/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "foK" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/structure/cable, -/obj/item/radio/intercom/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/ai_slipper{ @@ -15965,37 +15849,48 @@ /turf/open/floor/iron/dark, /area/station/maintenance/disposal) "fpk" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/light/small/directional/west, +/obj/machinery/vending/wardrobe/medi_wardrobe, +/turf/open/floor/iron/white, +/area/station/medical/office) +"fpq" = ( +/obj/machinery/airalarm/directional/north, +/obj/structure/table, +/obj/item/storage/belt/utility, +/obj/item/clothing/mask/breath, +/obj/item/multitool{ + pixel_x = 6 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/item/t_scanner{ + pixel_x = -6 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/iron/dark/side{ + dir = 1 }, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/primary/central) -"fpp" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/engineering/atmos/office) +"fpy" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/light/directional/north, -/obj/machinery/status_display/ai/directional/north, -/obj/machinery/rnd/production/protolathe/department/engineering, -/turf/open/floor/iron/dark/side{ +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "chem_factory_shutters"; + name = "Chem Factory Shutter"; dir = 1 }, -/area/station/engineering/break_room) +/turf/open/floor/iron/white/textured, +/area/station/medical/chemistry) "fpF" = ( /obj/structure/flora/rock/pile/jungle/style_random, /obj/structure/flora/tree/jungle/small/style_random, /turf/open/floor/grass, /area/station/hallway/primary/aft) +"fpJ" = ( +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "fpM" = ( /obj/effect/turf_decal/trimline/brown/filled/warning{ dir = 8 @@ -16008,47 +15903,31 @@ dir = 8 }, /area/station/cargo/sorting) -"fpN" = ( -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/south, -/mob/living/basic/chicken{ - forced_gender = "female" - }, -/turf/open/floor/grass, -/area/station/service/hydroponics) "fpO" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, /obj/effect/turf_decal/tile/neutral{ dir = 4 }, /obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "fpV" = ( /obj/machinery/atmospherics/pipe/smart/manifold/brown/visible{ - dir = 4 + dir = 1 }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) "fpY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/table/wood, -/obj/item/paper_bin, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/effect/turf_decal/tile/brown/fourcorners, +/obj/machinery/firealarm/directional/east, +/obj/machinery/computer/department_orders/medical{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/office) "fqe" = ( /turf/closed/wall/r_wall, /area/station/security/processing) -"fqj" = ( -/obj/structure/closet/crate, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) "fqk" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 @@ -16063,7 +15942,7 @@ /obj/effect/spawner/random/structure/table, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "fqH" = ( /obj/structure/dresser, /turf/open/floor/wood, @@ -16076,12 +15955,12 @@ /turf/open/floor/plating, /area/station/maintenance/department/cargo) "fqJ" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/south, +/obj/item/radio/intercom/directional/west, /obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, -/obj/item/radio/intercom/directional/west, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/smithing) "fqQ" = ( @@ -16106,18 +15985,9 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "fro" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/landmark/start/gary, +/turf/open/floor/carpet, +/area/station/maintenance/starboard/fore) "frv" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/engineering/toolbox, @@ -16125,17 +15995,10 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "frw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/maintenance/department/engine) "frx" = ( /obj/structure/chair/stool/directional/east, /obj/effect/landmark/start/assistant, @@ -16144,14 +16007,12 @@ }, /area/station/commons/fitness) "frC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, /obj/machinery/light/small/directional/west, /obj/item/radio/intercom/directional/west, -/obj/machinery/camera/autoname/directional/west, -/obj/structure/closet/crate, -/obj/item/stack/ore/iron, +/obj/machinery/camera/directional/west{ + c_tag = "Cargo - Mining Dock"; + name = "cargo camera" + }, /turf/open/floor/iron/dark/smooth_large, /area/station/cargo/miningoffice) "frS" = ( @@ -16184,30 +16045,56 @@ /area/station/ai_monitored/command/storage/satellite) "fsH" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"fte" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/structure/bed/medical/emergency, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/turf/open/floor/iron/dark, +/area/station/service/abandoned_gambling_den) "ftk" = ( /turf/open/floor/grass, /area/station/hallway/primary/central) "ftr" = ( -/obj/effect/spawner/random/trash/mess, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/welded, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "fuc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/trash/box, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/structure/table/reinforced/rglass, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/item/paper_bin{ + pixel_x = -7 + }, +/obj/item/clipboard{ + pixel_x = -7 + }, +/obj/item/folder/white{ + pixel_x = -7 + }, +/obj/item/pen{ + pixel_x = -7 + }, +/obj/item/book/manual/wiki/grenades{ + pixel_x = 7 + }, +/obj/item/book/manual/wiki/plumbing{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/item/book/manual/wiki/chemistry{ + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "fuf" = ( /mob/living/carbon/human/species/monkey, /turf/open/floor/grass, @@ -16218,38 +16105,20 @@ /turf/open/floor/iron/white, /area/station/science/research) "fuM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/cable/layer1, -/turf/open/floor/iron, -/area/station/engineering/engine_smes) +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "fuS" = ( /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/prison/mess) "fvh" = ( -/obj/structure/disposalpipe/sorting/mail{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/mapping_helpers/mail_sorting/service/hop_office, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"fvk" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=2"; - location = "Engineering" - }, -/obj/structure/plasticflaps/opaque, -/turf/open/floor/iron, -/area/station/maintenance/port/aft) +/obj/structure/disposalpipe/segment, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "fvn" = ( /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark, @@ -16271,18 +16140,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) "fvH" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/qm) +/obj/machinery/light/small/directional/north, +/obj/structure/chair/comfy/brown, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/break_room) +"fvT" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/holopad, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/virology) "fvV" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/item/wirecutters, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/turf/open/floor/plating, +/area/station/cargo/drone_bay) "fvW" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/plating/airless, @@ -16318,7 +16193,7 @@ /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) "fwt" = ( /obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ @@ -16335,25 +16210,20 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "fwB" = ( -/obj/machinery/light/floor/has_bulb, +/obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "fwT" = ( -/obj/machinery/light/directional/west, -/obj/structure/sign/painting/library{ - pixel_x = -32 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 }, -/turf/open/floor/wood, -/area/station/service/library) -"fxh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/light/small/directional/east, +/obj/structure/disposalpipe/trunk{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) +/obj/machinery/disposal/bin, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "fxk" = ( /turf/closed/wall/r_wall, /area/station/engineering/main) @@ -16363,21 +16233,12 @@ /obj/item/toy/plush/snakeplushie, /turf/open/floor/wood, /area/station/maintenance/starboard/fore) -"fxy" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light_switch/directional/south{ - pixel_x = 8 - }, -/obj/item/radio/intercom/directional/west, -/obj/structure/filingcabinet/chestdrawer, -/obj/item/storage/secure/briefcase, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) "fxF" = ( /obj/effect/turf_decal/trimline/green/line{ dir = 1 }, /obj/effect/turf_decal/trimline/green/filled/line, +/obj/structure/sign/poster/official/random/directional/south, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, @@ -16391,11 +16252,22 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "fxI" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/rd) +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"fxJ" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/chair/sofa/bench/left{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "fxL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -16405,21 +16277,11 @@ }, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"fxN" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/obj/machinery/requests_console/auto_name/directional/south, -/obj/machinery/vending/assist, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "fxU" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ - dir = 4 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/iron, +/obj/item/kirbyplants/random, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, /area/station/hallway/primary/aft) "fyc" = ( /obj/effect/turf_decal/trimline/red/filled/line{ @@ -16433,12 +16295,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/security/brig) -"fyf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "fyt" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ @@ -16458,30 +16314,34 @@ /obj/effect/turf_decal/trimline/yellow/line{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, /area/station/hallway/primary/aft) -"fyK" = ( -/obj/structure/chair/office, -/obj/effect/landmark/start/brig_physician, -/turf/open/floor/iron/white, -/area/station/security/medical) "fyZ" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/line{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/engineering/engine_smes) +/obj/machinery/light/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) "fza" = ( /obj/effect/turf_decal/trimline/dark_red/filled/warning{ dir = 4 }, +/obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "fzi" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8; - name = "Mix to Filter" +/obj/machinery/atmospherics/components/binary/pump{ + name = "Mix to Scrubbers"; + dir = 8 }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) @@ -16491,21 +16351,17 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) +"fzD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/sepia, +/area/station/service/library/artgallery) "fzI" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box, /turf/open/floor/iron/large, /area/station/service/hydroponics) -"fzJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/structure/table/wood, -/obj/machinery/requests_console/auto_name/directional/west, -/obj/machinery/newscaster/directional/north, -/obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "fzM" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -16522,32 +16378,35 @@ /turf/open/floor/iron/white, /area/station/science/research) "fAa" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/glass, -/obj/item/clothing/mask/surgical, -/obj/item/clothing/mask/surgical{ - pixel_y = 8 +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 }, -/obj/item/wrench/medical, -/obj/item/book/manual/wiki/surgery, -/obj/item/tank/internals/anesthetic, -/obj/item/tank/internals/anesthetic, -/turf/open/floor/iron/white, -/area/station/medical/surgery) +/obj/machinery/light_switch/directional/north{ + pixel_x = 5 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage) "fAf" = ( /obj/machinery/vending/coffee, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) "fAn" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 10 }, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/newscaster/directional/north, +/obj/structure/closet/secure_closet/chemical, +/obj/item/wrench/medical, +/obj/item/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "fAq" = ( /obj/structure/closet/secure_closet/personal/cabinet, /turf/open/floor/carpet/purple, -/area/station/commons/dorms) +/area/station/commons/dorms/room3) "fAE" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -16561,19 +16420,18 @@ /area/station/ai_monitored/turret_protected/aisat/foyer) "fAQ" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, +/obj/effect/decal/cleanable/oil/streak, +/obj/structure/table, /turf/open/floor/stone, /area/station/smithing) "fBd" = ( -/obj/structure/chair/office, +/obj/structure/chair/wood, /turf/open/floor/carpet/red, /area/station/commons/vacant_room/office) "fBh" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, /obj/machinery/light/small/directional/east, -/obj/machinery/camera/autoname/directional/east, +/obj/machinery/firealarm/directional/east, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "fBi" = ( @@ -16600,52 +16458,25 @@ /turf/open/floor/plating, /area/station/maintenance/port) "fBY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/engineering/engine_smes) "fCb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/carpet, -/area/station/service/library) -"fCd" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/light_switch/directional/west, -/obj/structure/rack, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 7 - }, -/obj/item/storage/medkit/regular{ - pixel_y = 3 - }, -/obj/item/storage/box/bodybags, -/turf/open/floor/iron/white, -/area/station/security/medical) +/obj/effect/turf_decal/tile/blue/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "fCw" = ( /obj/effect/spawner/random/structure/table, /obj/effect/spawner/random/entertainment/cigarette_pack, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "fCE" = ( -/obj/machinery/door/airlock/corporate{ - name = "Blueshield's Quarters" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/structure/railing{ + dir = 4 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) "fCT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -16660,6 +16491,7 @@ dir = 8 }, /obj/structure/closet/emcloset/anchored, +/obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "fDe" = ( @@ -16668,30 +16500,29 @@ /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "fDg" = ( -/obj/structure/dresser, -/turf/open/floor/carpet/purple, -/area/station/commons/dorms) +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/light/directional/west, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "fDt" = ( /obj/machinery/duct, /turf/open/floor/wood/large, /area/station/security/prison/safe) -"fDA" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "fDB" = ( /obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/kirbyplants/random, +/obj/structure/rack, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags{ + pixel_y = 3 + }, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) "fDD" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "fDG" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -16703,10 +16534,10 @@ }, /turf/open/floor/iron/dark/textured, /area/station/service/chapel/funeral) -"fDQ" = ( -/obj/structure/closet/firecloset{ - anchored = 1 - }, +"fEa" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) "fEm" = ( @@ -16762,6 +16593,15 @@ /obj/effect/spawner/random/structure/grille, /turf/open/space/basic, /area/space/nearstation) +"fES" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "fET" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -16770,20 +16610,49 @@ /area/station/security/checkpoint/supply) "fEX" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/door/airlock/corporate{ - name = "Blueshield's Quarters" +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/chair/sofa/bench/right{ + dir = 8 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/blueshield) +/area/station/hallway/primary/central) "fFd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/starboard) +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/light/small/directional/east, +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty{ + pixel_y = 5; + pixel_x = -4 + }, +/obj/item/stack/sheet/iron/fifty{ + pixel_y = 5 + }, +/obj/item/stack/sheet/plasteel{ + amount = 10; + pixel_y = 5; + pixel_x = 4 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 5; + pixel_x = -4 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 5 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 5; + pixel_x = 4 + }, +/obj/item/stack/rods/fifty, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/storage_shared) "fFe" = ( /obj/structure/bed, /obj/item/bedsheet/dorms, @@ -16791,10 +16660,15 @@ /turf/open/floor/wood/large, /area/station/security/prison/safe) "fFr" = ( -/obj/structure/cable, /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"fFK" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "fFP" = ( /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark/side{ @@ -16815,13 +16689,20 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark, /area/station/security/brig) +"fFT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/chair_maintenance{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "fFV" = ( /turf/closed/wall, /area/station/solars/port/aft) "fGh" = ( /obj/structure/sign/warning/test_chamber/directional/north, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "fGl" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ @@ -16832,26 +16713,37 @@ dir = 10 }, /area/station/commons/storage/primary) +"fGn" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/table, +/obj/item/hand_tele, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"fGu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "fGD" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, +/obj/machinery/light/directional/north, /obj/structure/sign/warning/no_smoking/directional/north, -/obj/machinery/space_heater, -/turf/open/floor/iron, -/area/station/engineering/storage) -"fGH" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/structure/chair/sofa/corp/right{ +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/machinery/disposal/bin, +/turf/open/floor/iron, +/area/station/engineering/storage) "fGO" = ( /obj/structure/extinguisher_cabinet/directional/north, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -16861,6 +16753,11 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"fGP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/station/medical/virology) "fHb" = ( /obj/structure/flora/rock/pile/jungle/style_random, /obj/structure/flora/tree/jungle/small/style_random, @@ -16875,17 +16772,14 @@ /obj/structure/cable, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"fHo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 +/area/station/maintenance/department/engineering/central) +"fHn" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark/side{ + dir = 8 }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/engineering/atmos/office) "fHz" = ( /obj/structure/sign/warning/vacuum/directional/north, /obj/structure/table, @@ -16952,14 +16846,15 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/foyer) "fIt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/west, /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/airalarm/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/smithing) "fIw" = ( @@ -16981,11 +16876,11 @@ }, /area/station/commons/storage/primary) "fIH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) +/obj/machinery/light/small/directional/west, +/obj/machinery/duct, +/obj/item/bikehorn/rubberducky, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/captain/private) "fII" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -16995,13 +16890,8 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/main) -"fIO" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "fIV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/chair/plastic, /turf/open/floor/wood, /area/station/security/prison/rec) "fIX" = ( @@ -17012,22 +16902,17 @@ dir = 1 }, /obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ name = "Detective's Office" }, /obj/effect/mapping_helpers/airlock/access/any/security/detective, /obj/effect/landmark/navigate_destination/det, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured, /area/station/security/detectives_office) -"fJd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "fJh" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -17041,40 +16926,33 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron/dark, /area/station/security/office) "fJl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) "fJn" = ( /turf/open/floor/iron/dark/side{ dir = 4 }, /area/station/service/janitor) -"fJr" = ( -/obj/effect/turf_decal/stripes/end, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/shower/directional/south, -/turf/open/floor/iron/white/textured, -/area/station/security/medical) "fJv" = ( -/obj/structure/bed{ - dir = 4 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/turf/open/floor/iron, +/area/station/engineering/main) "fJx" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 9 }, /obj/machinery/newscaster/directional/north, /obj/structure/sign/poster/random/directional/west, -/obj/machinery/vending/wardrobe/cargo_wardrobe, +/obj/machinery/recharge_station, /turf/open/floor/iron/dark/side{ dir = 9 }, @@ -17091,17 +16969,23 @@ }, /turf/open/floor/wood, /area/station/service/chapel/funeral) +"fKd" = ( +/obj/machinery/firealarm/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "fKj" = ( /turf/closed/wall, /area/station/maintenance/department/science/xenobiology) "fKo" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) "fKp" = ( /obj/effect/decal/cleanable/dirt, @@ -17115,8 +16999,10 @@ "fKX" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/item/radio/intercom/directional/east, -/obj/structure/chair/office, -/obj/effect/landmark/start/detective, +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/folder/red, +/obj/item/pen, /turf/open/floor/iron/dark, /area/station/security/detectives_office) "fLf" = ( @@ -17143,30 +17029,24 @@ dir = 8 }, /obj/machinery/light/directional/east, +/obj/machinery/status_display/evac/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "fLJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/public/glass{ - name = "Cafeteria" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/shower/directional/west, +/obj/structure/drain, +/turf/open/floor/iron/textured_large, +/area/station/engineering/main) "fLO" = ( -/obj/machinery/light/small/broken/directional/north, -/obj/structure/toilet{ +/obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 4 }, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/chemist, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "fMd" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -17185,33 +17065,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /turf/open/floor/plating, /area/station/science/server) -"fMm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "bridge_blast_doors"; - name = "Bridge Access Blast Door" - }, -/obj/machinery/door/airlock/command/glass{ - name = "Conference Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/command/meeting_room) "fMq" = ( /obj/effect/turf_decal/bot, +/obj/machinery/status_display/ai/directional/south, /obj/structure/cable, /obj/machinery/power/terminal{ dir = 8 @@ -17229,9 +17085,12 @@ /turf/open/floor/iron/dark/textured, /area/station/hallway/secondary/entry) "fMv" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/prison/workout) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/carpet/black, +/area/station/security/bitden) "fMx" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -17249,7 +17108,7 @@ c_tag = "Service - Chapel Office, Backroom"; name = "service camera" }, -/obj/structure/table/wood, +/obj/structure/table/wood/fancy/black, /obj/item/clothing/under/misc/burial, /obj/item/clothing/under/misc/burial, /obj/item/clothing/under/misc/burial, @@ -17261,21 +17120,6 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel/office) -"fNe" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) -"fNr" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "fNy" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted, /obj/structure/reagent_dispensers/fueltank, @@ -17285,27 +17129,30 @@ /obj/effect/spawner/random/engineering/tank, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"fNH" = ( +/obj/structure/cable, +/obj/structure/table/wood/fancy/blue, +/turf/open/floor/wood, +/area/station/command/meeting_room) +"fNW" = ( +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table/reinforced, +/obj/item/experi_scanner, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "fOe" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) "fOn" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 10 }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"fOz" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "fOA" = ( /turf/closed/wall/r_wall, /area/space/nearstation) @@ -17323,6 +17170,7 @@ req_access = list("maint_tunnels"); pixel_x = 6 }, +/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, /turf/open/floor/iron, /area/station/maintenance/disposal) @@ -17330,14 +17178,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/science/robotics/lab) -"fOV" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "apothecary_shutters"; - name = "Apothecary Shutters" - }, -/turf/open/floor/plating, -/area/station/medical/pharmacy) "fOZ" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 4 @@ -17347,15 +17187,10 @@ }, /area/station/service/hydroponics) "fPj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/pink/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/obj/effect/decal/cleanable/dirt, +/obj/item/chair, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "fPp" = ( /obj/machinery/atmospherics/components/binary/pump/off/supply/hidden{ dir = 8 @@ -17376,14 +17211,24 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/port) "fPL" = ( -/obj/machinery/light_switch/directional/east, +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, /obj/machinery/light/small/directional/east, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 }, /obj/structure/table, -/obj/machinery/recharger, -/turf/open/floor/iron/showroomfloor, +/obj/machinery/recharger{ + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, +/obj/machinery/recharger{ + pixel_x = -5 + }, +/turf/open/floor/iron/dark, /area/station/security/lockers) "fPN" = ( /turf/closed/wall, @@ -17404,14 +17249,13 @@ }, /area/station/service/hydroponics) "fQq" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/chair{ - dir = 4 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) +/obj/structure/chair/sofa/bench/left, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/iron, +/area/station/engineering/main) "fQt" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -17432,14 +17276,23 @@ /obj/effect/landmark/navigate_destination/dockesc, /turf/open/floor/iron/dark/textured, /area/station/hallway/secondary/exit/departure_lounge) +"fQB" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_b) "fQI" = ( /turf/open/floor/iron/checker, /area/station/maintenance/port/fore) "fQJ" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/engineering/tank, /turf/open/floor/plating, /area/station/maintenance/department/security/brig) "fQS" = ( @@ -17475,38 +17328,35 @@ /turf/open/floor/iron/white/textured, /area/station/science/research) "fRq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/machinery/holopad, +/turf/open/floor/iron/large, +/area/station/commons/fitness/recreation) "fRr" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, /obj/structure/table, /obj/item/clothing/gloves/color/yellow, -/obj/item/storage/toolbox/electrical{ - pixel_y = 5 +/obj/item/flashlight{ + pixel_y = 9 }, /turf/open/floor/iron, /area/station/engineering/storage) "fRx" = ( -/obj/effect/decal/cleanable/blood/old, +/obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"fRK" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/turf/open/floor/grass, +/area/station/medical/virology) "fRT" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, /obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/white/smooth_large, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, /area/station/maintenance/department/science) "fRU" = ( /obj/structure/disposalpipe/segment{ @@ -17515,14 +17365,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) "fRW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/obj/effect/landmark/blobstart, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 6 + }, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/service/abandoned_gambling_den) "fSg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17567,14 +17418,32 @@ dir = 6 }, /area/station/cargo/sorting) -"fSM" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue{ +"fSB" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) +"fSG" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/liquid_barrier, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/science/xenobio, +/turf/open/floor/plating, +/area/station/science/xenobiology) "fSW" = ( +/obj/effect/turf_decal/siding/wood, /obj/machinery/modular_computer/preset/id, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) @@ -17583,14 +17452,22 @@ /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) -"fTg" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 +"fTh" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 6 }, -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/trimline/dark_blue/line, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/item/flashlight/lamp/green{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/pen{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/open/floor/wood, +/area/station/service/library) "fTi" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -17600,7 +17477,7 @@ /turf/open/floor/iron/dark, /area/station/security/prison) "fTr" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/spawner/structure/window, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -17620,100 +17497,44 @@ }, /area/station/security/prison/workout) "fTE" = ( -/obj/structure/closet/toolcloset, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/construction) +/area/station/engineering/main) "fTT" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/iv_drip, /turf/open/floor/iron/white, /area/station/maintenance/port/fore) "fTU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/service) -"fUf" = ( -/obj/effect/turf_decal/trimline/red/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/station_map/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) +/obj/machinery/airalarm/directional/north, +/obj/machinery/light/small/directional/north, +/obj/machinery/vending/boozeomat, +/turf/open/floor/wood, +/area/station/service/bar) "fUs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port) -"fUU" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) -"fUV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "fUX" = ( +/obj/machinery/light/directional/north, /obj/machinery/newscaster/directional/north, +/obj/item/kirbyplants/random, /turf/open/floor/wood, /area/station/security/detectives_office) -"fVg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/xenobio, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/liquid_barrier, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "fVh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 }, -/turf/open/floor/iron, -/area/station/service/janitor) -"fVi" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters{ - id = "engi_security_post"; - name = "Security Post Shutters"; - dir = 8 +/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/turf/open/floor/plating, -/area/station/security/checkpoint/engineering) +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "fVj" = ( /obj/effect/turf_decal/trimline/brown/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17723,12 +17544,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/dark/side, /area/station/cargo/sorting) -"fVn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "fVA" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17752,16 +17567,6 @@ }, /turf/open/floor/iron, /area/station/cargo/office) -"fVP" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "fVR" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -17778,14 +17583,14 @@ /area/station/ai_monitored/turret_protected/ai) "fVU" = ( /obj/machinery/light/small/broken/directional/north, -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/item/stock_parts/manipulator, /obj/item/stock_parts/manipulator, /obj/item/stock_parts/manipulator, /obj/item/stock_parts/cell/lead, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "fVV" = ( /obj/structure/chair/sofa/bench{ dir = 4 @@ -17796,7 +17601,11 @@ /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 9 }, -/obj/machinery/light_switch/directional/west, +/obj/machinery/button/door/directional/west{ + id = "robotics_sci_shutters"; + name = "Robotics Shutters Control"; + req_access = list("robotics") + }, /obj/structure/chair/office{ dir = 1 }, @@ -17829,7 +17638,6 @@ /obj/effect/turf_decal/trimline/red/line{ dir = 8 }, -/obj/machinery/airalarm/directional/east, /obj/machinery/light/directional/east, /obj/structure/chair{ dir = 8 @@ -17837,11 +17645,22 @@ /obj/effect/landmark/start/security_assistant, /turf/open/floor/iron/dark, /area/station/security/brig) +"fWR" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/bed/double{ + dir = 4 + }, +/obj/item/bedsheet/nanotrasen/double{ + dir = 4 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "fWY" = ( +/obj/machinery/camera/autoname/directional/west, /obj/structure/chair/sofa/right/maroon{ dir = 4 }, -/obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark/side{ dir = 8 }, @@ -17861,6 +17680,8 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "fXj" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "fXk" = ( @@ -17868,6 +17689,36 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) +"fXu" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/belt/medical, +/obj/item/storage/belt/medical, +/obj/item/clothing/neck/stethoscope, +/obj/item/clothing/neck/stethoscope, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/regular, +/obj/item/clothing/glasses/regular, +/obj/item/clothing/glasses/regular, +/turf/open/floor/iron/white, +/area/station/medical/storage) +"fXB" = ( +/obj/machinery/light/directional/east, +/obj/structure/table/reinforced/rglass, +/obj/item/book/manual/wiki/medicine, +/obj/item/crowbar/red, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "fXE" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, @@ -17886,6 +17737,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, +/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) "fXZ" = ( @@ -17896,7 +17748,6 @@ dir = 4 }, /obj/structure/sign/departments/custodian/directional/west, -/obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "fYg" = ( @@ -17919,12 +17770,6 @@ /obj/effect/mapping_helpers/airlock/access/all/service/general, /turf/open/floor/iron/dark/textured, /area/station/hallway/secondary/service) -"fYh" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/airalarm/directional/east, -/obj/machinery/medical_kiosk, -/turf/open/floor/iron/dark, -/area/station/medical/exam_room) "fYj" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line, /obj/machinery/light/directional/south, @@ -17932,7 +17777,7 @@ /turf/open/floor/iron/dark, /area/station/security/courtroom) "fYu" = ( -/obj/machinery/light/small/directional/east, +/obj/machinery/light/directional/east, /obj/structure/sign/poster/official/random/directional/east, /obj/structure/table/reinforced, /obj/item/book/manual/wiki/robotics_cyborgs{ @@ -17944,22 +17789,10 @@ /turf/open/floor/iron, /area/station/science/robotics/mechbay) "fYx" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"fYL" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/computer/crew{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/trash/grille_or_waste, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "fYX" = ( /obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 @@ -17971,27 +17804,25 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos) "fZp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"fZy" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters"; - dir = 1 +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/medical/paramedic) +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"fZy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/carpet/black, +/area/station/security/bitden) "fZB" = ( /turf/open/floor/wood, /area/station/service/bar) -"fZD" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) "fZK" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 @@ -18000,17 +17831,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"fZN" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/structure/table, -/obj/item/electronics/apc, -/obj/item/electronics/airlock, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "fZO" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 4 @@ -18023,16 +17843,17 @@ "fZT" = ( /obj/machinery/light/directional/east, /obj/structure/sign/poster/random/directional/east, +/obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "fZX" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) "gaa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18047,28 +17868,23 @@ /turf/open/floor/iron, /area/station/commons/fitness/recreation) "gai" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/plating, -/area/station/maintenance/port) +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "gap" = ( /obj/effect/turf_decal/delivery, /obj/structure/ore_box, /turf/open/floor/plating, /area/station/maintenance/port) -"gav" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "gax" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/bot, -/obj/machinery/status_display/evac/directional/west, /obj/machinery/light/small/directional/west, /obj/machinery/vending/imported, /turf/open/floor/iron/dark, @@ -18080,33 +17896,24 @@ /obj/structure/table, /obj/structure/reagent_dispensers/wall/peppertank/directional/north, /obj/machinery/recharger{ - pixel_x = -7 + pixel_x = -5 }, /obj/machinery/airalarm/directional/east, /obj/machinery/light/directional/north, /obj/machinery/recharger{ - pixel_x = 7 - }, -/obj/item/clothing/ears/earmuffs{ - pixel_x = -3; - pixel_y = -5 - }, -/obj/item/clothing/glasses/sunglasses{ - pixel_x = 8; - pixel_y = 10 - }, -/obj/machinery/camera/autoname/directional/east{ - dir = 6 + pixel_x = 5 }, -/turf/open/floor/iron/showroomfloor, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron/dark, /area/station/security/warden) -"gbh" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +"gaH" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 }, -/obj/structure/cable, +/obj/structure/reagent_dispensers/wall/virusfood/directional/south, +/obj/machinery/disease2/diseaseanalyser, /turf/open/floor/iron/white, -/area/station/medical/surgery) +/area/station/medical/virology) "gbn" = ( /obj/structure/sink/directional/south, /obj/structure/mirror/directional/north, @@ -18126,6 +17933,7 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 }, +/obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron/white, /area/station/science/lab) "gbM" = ( @@ -18138,7 +17946,8 @@ /area/station/maintenance/department/cargo) "gbS" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/dresser, +/obj/structure/chair/office, +/obj/effect/landmark/start/detective, /turf/open/floor/iron/dark, /area/station/security/detectives_office) "gcq" = ( @@ -18154,14 +17963,9 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 9 }, +/obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/engineering/storage) -"gcu" = ( -/obj/machinery/light/directional/east, -/obj/structure/table, -/obj/item/taperecorder, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) "gcx" = ( /obj/structure/chair/wood{ dir = 4 @@ -18174,14 +17978,12 @@ "gcD" = ( /turf/closed/wall/r_wall, /area/station/engineering/storage/tech) -"gcH" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "gdg" = ( /obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/camera/autoname/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Security - Evidence Storage"; + name = "security camera" + }, /obj/machinery/light/small/directional/south, /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, @@ -18190,10 +17992,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/evidence) -"gdk" = ( -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "gdm" = ( /obj/effect/turf_decal/trimline/green/filled/warning, /obj/effect/turf_decal/trimline/green/warning{ @@ -18208,35 +18006,17 @@ /obj/machinery/duct, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/area/station/maintenance/department/science) "gdw" = ( /obj/machinery/portable_atmospherics/canister, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"gdx" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/closet/firecloset/full, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"gdB" = ( -/obj/item/radio/intercom/directional/north, -/obj/structure/closet/crate, -/obj/item/crowbar/red, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) "gea" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/lobby) -"geu" = ( -/obj/structure/table, -/obj/item/stock_parts/subspace/amplifier, -/obj/item/stock_parts/subspace/amplifier, -/obj/item/stock_parts/subspace/amplifier, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "gey" = ( /obj/machinery/duct, /turf/open/floor/wood/tile, @@ -18245,13 +18025,29 @@ /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 6 }, -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = 5 + }, /obj/structure/closet/secure_closet/courtroom, /obj/item/gavelhammer, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"geC" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"geG" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "geR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/brown/visible, +/obj/machinery/atmospherics/pipe/smart/manifold/brown/visible{ + dir = 8 + }, /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) @@ -18263,38 +18059,24 @@ dir = 8 }, /obj/machinery/light/small/directional/east, +/obj/machinery/camera/autoname/directional/east, /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, /obj/effect/mapping_helpers/apc/cell_5k, /obj/effect/mapping_helpers/apc/full_charge, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"gfn" = ( -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/dark_blue/line, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/port) "gfA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/wood, +/area/station/security/prison/rec) "gfF" = ( -/obj/structure/closet/secure_closet/freezer/meat{ - req_access = null +/obj/machinery/chem_master/condimaster{ + name = "CondiMaster Neo" }, /turf/open/floor/iron/kitchen, /area/station/security/prison/mess) "gfI" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron, @@ -18329,6 +18111,16 @@ dir = 4 }, /area/station/service/theater) +"ggy" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "ggz" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -18341,8 +18133,9 @@ /area/station/science/genetics) "ggR" = ( /obj/item/radio/intercom/directional/east, +/obj/structure/table/wood, /turf/open/floor/carpet/red, -/area/station/commons/dorms) +/area/station/commons/dorms/room6) "ggV" = ( /obj/effect/spawner/random/structure/chair_flipped{ dir = 4 @@ -18356,51 +18149,16 @@ }, /obj/machinery/camera/motion/directional/north{ c_tag = "AI Sat - AI Chamber North"; - network = list("aicore") + network = list("aicore"); + name = "ai camera" }, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) "ghk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"ghn" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door_buttons/access_button{ - idDoor = "xeno_airlock_exterior"; - idSelf = "xeno_airlock_control"; - name = "Access Button"; - req_access = list("xenobiology"); - pixel_x = 24 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - autoclose = 0; - frequency = 1449; - id_tag = "xeno_airlock_exterior"; - name = "Xenobiology Lab External Airlock" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/liquid_barrier, -/turf/open/floor/iron/white/textured, -/area/station/science/xenobiology/hallway) +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "ghp" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -18409,26 +18167,26 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark/textured, /area/station/hallway/secondary/entry) +"ghr" = ( +/turf/open/floor/glass/reinforced, +/area/station/service/abandoned_gambling_den) "ghs" = ( /obj/effect/turf_decal/trimline/red/filled/warning, /obj/structure/chair/office, /obj/effect/landmark/start/warden, /obj/structure/cable, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "ghA" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/barricade/wooden, /turf/open/floor/plating, +/area/station/maintenance/department/engine) +"ghG" = ( +/obj/structure/sign/poster/random/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, /area/station/maintenance/port/aft) -"ghH" = ( -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/virology) "ghN" = ( /obj/machinery/light/floor/has_bulb, /obj/effect/landmark/event_spawn, @@ -18439,6 +18197,11 @@ dir = 5 }, /area/station/commons/fitness) +"gie" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "gim" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/window/brigdoor/left/directional/east{ @@ -18479,18 +18242,19 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/prison) +"giO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/service/abandoned_gambling_den) "giZ" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 +/obj/machinery/camera/directional/east{ + c_tag = "Maintenance - External Access, Northwest"; + name = "maintenance camera" }, -/obj/structure/cable, -/obj/structure/reagent_dispensers/wall/peppertank/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/customs/auxiliary) -"gja" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/engineering/break_room) +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "gjb" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line{ @@ -18513,6 +18277,25 @@ /obj/structure/flora/bush/lavendergrass/style_random, /turf/open/floor/grass, /area/station/hallway/secondary/exit/departure_lounge) +"gjH" = ( +/turf/closed/wall, +/area/station/commons/dorms/room6) +"gjV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/engineering/tank, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"gki" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/lockers) +"gkj" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron, +/area/station/maintenance/starboard/aft) "gkw" = ( /obj/machinery/light/directional/west, /obj/machinery/status_display/evac/directional/west, @@ -18521,22 +18304,8 @@ }, /area/station/commons/fitness) "gkG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command/glass{ - name = "Chief Engineer's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/ce, -/turf/open/floor/iron/textured, +/turf/open/floor/iron, /area/station/command/heads_quarters/ce) "gkH" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -18555,13 +18324,17 @@ dir = 8 }, /obj/structure/cable, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "gkM" = ( -/obj/machinery/door/window/right/directional/south, -/obj/structure/table/wood/fancy, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "gkP" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -18592,54 +18365,22 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/office) -"gli" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "gln" = ( /obj/structure/lattice, /obj/structure/sign/warning/radiation/directional/east, /turf/open/space/basic, /area/space/nearstation) -"glB" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters"; +"glU" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, -/turf/open/floor/iron/white/textured, -/area/station/medical/cryo) +/obj/structure/mirror/directional/west, +/obj/structure/sink/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "gmc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "Teleport Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/teleporter, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/iron/dark/textured, -/area/station/command/teleporter) +/turf/open/floor/wood, +/area/station/command/meeting_room) "gmh" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -18655,32 +18396,30 @@ /turf/open/floor/iron/dark/textured, /area/station/security/warden) "gmo" = ( +/obj/machinery/light/floor/has_bulb, /mob/living/basic/slime, /turf/open/floor/engine, /area/station/science/xenobiology) -"gmC" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"gmD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ - dir = 1 +"gmy" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 6 }, -/turf/open/floor/engine, -/area/station/medical/cryo) +/obj/structure/reagent_dispensers/wall/virusfood/directional/south, +/obj/machinery/disease2/diseaseanalyser, +/turf/open/floor/iron/white, +/area/station/medical/virology) "gmE" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/engine/n2, /area/station/engineering/atmos) "gmK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/wood/large, -/area/station/commons/dorms) +/area/station/commons/dorms/room1) "gmN" = ( /obj/machinery/light/directional/west, /obj/machinery/computer/security/telescreen/entertainment/directional/west, @@ -18689,13 +18428,9 @@ }, /area/station/commons/fitness/recreation) "gmT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/obj/effect/spawner/random/trash/cigbutt, -/obj/item/broken_bottle, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/turf/open/floor/iron/dark/side, +/area/station/engineering/break_room) "gmU" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -18706,26 +18441,23 @@ /obj/effect/spawner/random/bureaucracy/pen, /turf/open/floor/iron/white, /area/station/science/lab) -"gna" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ +"gnj" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 4 }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/north, -/mob/living/basic/chicken/brown{ - forced_gender = "female" +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 10 }, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"gnj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/pipe/smart/simple/pink/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/simple/pink/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/aft) "gnk" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 @@ -18738,13 +18470,15 @@ /obj/effect/turf_decal/trimline/red/line{ dir = 1 }, +/obj/machinery/light/small/directional/south, +/obj/machinery/firealarm/directional/south, /obj/machinery/button/flasher{ id = "holding_flash"; name = "Holding Cell Flasher"; pixel_y = -26; - req_access = list("security") + req_access = list("security"); + pixel_x = -8 }, -/obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark, /area/station/security/brig) "goc" = ( @@ -18774,17 +18508,9 @@ dir = 1 }, /obj/structure/closet/emcloset/anchored, +/obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"gow" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "goz" = ( /obj/effect/turf_decal/trimline/green/filled/warning{ dir = 1 @@ -18809,30 +18535,37 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/engineering/main) -"goI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"goP" = ( +"goD" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/fore) +"goP" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) "goR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/security/prison/rec) +/obj/machinery/camera/directional/east{ + c_tag = "Security - Prison, Workshop"; + network = list("ss13","prison"); + name = "security camera" + }, +/obj/machinery/airalarm/directional/east, +/obj/structure/chair/plastic{ + dir = 1 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/security/prison/work) "gpi" = ( /obj/machinery/light/directional/north, /obj/machinery/button/door/directional/north{ @@ -18904,6 +18637,16 @@ }, /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai) +"gqf" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/structure/closet/crate, +/obj/item/crowbar/red, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "gqj" = ( /obj/machinery/atmospherics/components/unary/passive_vent{ name = "freezer passive vent" @@ -18916,13 +18659,16 @@ }, /obj/machinery/light/directional/west, /obj/machinery/airalarm/directional/west, -/obj/structure/table/glass, +/obj/structure/table/reinforced/rglass, /obj/machinery/computer/records/medical/laptop, /turf/open/floor/iron/white, /area/station/science/genetics) "gqq" = ( -/obj/structure/sign/poster/official/ian/directional/north, -/obj/structure/filingcabinet/chestdrawer, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/photocopier, +/obj/machinery/computer/security/telescreen/vault{ + pixel_y = 32 + }, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) "gqF" = ( @@ -18932,7 +18678,15 @@ /obj/structure/closet/secure_closet/warden, /obj/item/clothing/mask/gas/sechailer, /obj/item/key/security, -/turf/open/floor/iron/showroomfloor, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -5 + }, +/obj/item/clothing/glasses/sunglasses{ + pixel_x = 8; + pixel_y = 10 + }, +/turf/open/floor/iron/dark, /area/station/security/warden) "gqK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -18944,6 +18698,7 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 }, +/obj/machinery/light/directional/west, /obj/machinery/autolathe, /turf/open/floor/iron, /area/station/science/robotics/lab) @@ -18965,6 +18720,9 @@ /area/station/hallway/primary/fore) "grz" = ( /obj/machinery/camera/autoname/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/security/prison) "grB" = ( @@ -18974,7 +18732,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/fore) "grF" = ( /obj/effect/spawner/random/maintenance, @@ -18984,19 +18742,20 @@ /obj/effect/turf_decal/siding/thinplating{ dir = 4 }, -/obj/structure/chair{ +/obj/structure/chair/sofa/bench{ dir = 8 }, -/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) "grI" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 6 }, -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = 5 }, /obj/machinery/light/small/directional/east, /obj/structure/closet/wardrobe/mixed, @@ -19013,16 +18772,15 @@ /area/station/science/research) "grO" = ( /obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, /turf/open/floor/iron/dark, /area/station/service/chapel) "grW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 }, -/obj/machinery/firealarm/directional/east, /obj/structure/cable/layer1, /turf/open/floor/iron, /area/station/engineering/engine_smes) @@ -19040,11 +18798,6 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/disposal) -"gsl" = ( -/obj/item/stack/ore/slag, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "gsz" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -19058,34 +18811,19 @@ /turf/open/floor/plating, /area/station/maintenance/department/science) "gsA" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"gsI" = ( -/obj/machinery/requests_console/directional/south{ - anon_tips_receiver = 1; - assistance_requestable = 1; - department = "Bridge"; - name = "Bridge Requests Console"; - can_send_announcements = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) -"gtd" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/light_switch/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) +"gte" = ( +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/clothing/gloves, +/obj/effect/spawner/random/clothing/gloves, +/obj/effect/spawner/random/clothing/gloves, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "gti" = ( /obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, @@ -19097,6 +18835,12 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/processing) +"gtq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) "gtx" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 4 @@ -19105,6 +18849,7 @@ dir = 8 }, /obj/machinery/light/directional/east, +/obj/machinery/status_display/ai/directional/east, /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) @@ -19127,13 +18872,14 @@ dir = 9 }, /area/station/service/hydroponics) -"gtL" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/landmark/start/chief_engineer, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) +"gtM" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/easel, +/obj/item/canvas/twentythree_twentythree, +/obj/item/canvas/twentythree_nineteen, +/obj/item/canvas/nineteen_nineteen, +/turf/open/floor/wood, +/area/station/service/library/lounge) "gtN" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, @@ -19168,16 +18914,11 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat_interior) -"guA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/white, -/area/station/medical/office) +"gub" = ( +/obj/structure/table/wood, +/obj/item/toy/cards/deck/tarot, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "guB" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -19208,7 +18949,6 @@ /obj/item/book/manual/wiki/security_space_law{ pixel_y = 5 }, -/obj/item/pen/red, /obj/machinery/button/door/directional/east{ id = "law_office_shutters"; name = "Law Office Shutters Control"; @@ -19217,57 +18957,53 @@ /turf/open/floor/wood, /area/station/service/lawoffice) "gvb" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/camera/autoname/directional/west, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/carpet, -/area/station/service/library) -"gvc" = ( -/obj/effect/turf_decal/siding/wood/corner{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/stone, -/area/station/smithing) -"gvd" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/science) +"gvc" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, /turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"gvi" = ( -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) -"gvo" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/item/radio/intercom/directional/south, -/obj/machinery/computer/security{ +/area/station/maintenance/department/science/xenobiology) +"gvm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"gvn" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"gvD" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ +/turf/open/floor/wood, +/area/station/service/library/private) +"gvo" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"gvD" = ( /obj/machinery/blackbox_recorder, -/turf/open/floor/engine/telecomms, +/obj/structure/cable, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) "gvF" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/south, +/obj/machinery/status_display/ai/directional/south, /obj/machinery/computer/records/security{ dir = 1 }, @@ -19277,7 +19013,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "gvO" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -19288,6 +19024,7 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) "gvR" = ( +/obj/structure/window/reinforced/spawner/directional/south, /obj/structure/table/reinforced, /obj/machinery/chem_dispenser/drinks{ dir = 1 @@ -19302,15 +19039,32 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"gwa" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 +"gvX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Closet" + }, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"gwq" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "gwz" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/corner{ dir = 4 @@ -19325,23 +19079,14 @@ dir = 1 }, /area/station/service/hydroponics) -"gwS" = ( -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) -"gwW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/structure/plaque/static_plaque/atmos{ - pixel_y = -32 - }, -/obj/machinery/firealarm/directional/west, +"gwJ" = ( +/obj/machinery/light/directional/south, +/obj/machinery/status_display/evac/directional/south, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/structure/closet/secure_closet/atmospherics, /turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) +/area/station/command/bridge) "gwY" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /obj/machinery/camera/directional/west{ @@ -19369,17 +19114,22 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 }, -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = -5 + }, +/obj/item/radio/intercom/directional/west, /obj/structure/chair{ dir = 4 }, -/obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark, /area/station/security/execution) "gxx" = ( -/obj/effect/decal/cleanable/blood/splatter, +/obj/machinery/light/small/directional/north, /turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/area/station/cargo/drone_bay) "gxH" = ( /turf/closed/wall, /area/station/science/breakroom) @@ -19387,30 +19137,46 @@ /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/rack, /obj/item/clothing/suit/armor/bulletproof{ - pixel_x = -3; + pixel_x = 6; pixel_y = 3 }, -/obj/item/clothing/suit/armor/bulletproof, /obj/item/clothing/suit/armor/bulletproof{ - pixel_x = 3; + pixel_x = 6 + }, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = 6; pixel_y = -3 }, /obj/item/clothing/head/helmet/alt{ - pixel_x = -3; + pixel_x = -6; pixel_y = 3 }, -/obj/item/clothing/head/helmet/alt, /obj/item/clothing/head/helmet/alt{ - pixel_x = 3; + pixel_x = -6 + }, +/obj/item/clothing/head/helmet/alt{ + pixel_x = -6; pixel_y = -3 }, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"gxO" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "gxP" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "gxT" = ( /obj/machinery/atmospherics/miner/nitrogen, /obj/machinery/portable_atmospherics/canister/nitrogen, @@ -19421,6 +19187,68 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"gya" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/light/small/directional/north, +/obj/machinery/door/window/left/directional/south{ + name = "First-Aid Supplies"; + req_access = list("medical") + }, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/medkit/regular{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/storage/medkit/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/toxin, +/obj/item/storage/medkit/toxin{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/iron/white, +/area/station/medical/storage) +"gyc" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos) +"gyl" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/light/small/directional/east, +/obj/structure/table, +/obj/item/toner/extreme, +/obj/item/toner/extreme, +/obj/item/toner/extreme, +/obj/item/toner/large{ + pixel_y = 9 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/storage_shared) +"gyn" = ( +/obj/structure/bookcase/random/reference, +/turf/open/floor/wood, +/area/station/service/library) "gyo" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -19436,44 +19264,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"gyt" = ( -/obj/structure/flora/grass/jungle/b/style_random, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/leavy/style_random, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/grass, -/area/station/command/bridge) -"gyv" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "bridge_windows"; - name = "Bridge View Blast doors"; - pixel_x = -6; - pixel_y = -2 - }, -/obj/machinery/button/door{ - id = "bridge_blast_doors"; - name = "Bridge Access Blast doors"; - pixel_x = 6; - pixel_y = -2 - }, -/obj/machinery/button/door{ - id = "eva_shutters"; - name = "EVA Shutters"; - pixel_x = 6; - pixel_y = 8 - }, -/obj/machinery/button/door{ - id = "tele_shutter"; - name = "Teleporter Shutters"; - pixel_x = -6; - pixel_y = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "gyw" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -19500,22 +19290,24 @@ req_access = list("genetics") }, /obj/machinery/door/window/left/directional/south{ - name = "Genetics Desk" + name = "Reception" }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "genetics_shutters"; - name = "Genetics Shutters"; - dir = 1 + name = "Genetics Shutters" }, /obj/structure/desk_bell{ pixel_x = 7 }, /turf/open/floor/iron/white/textured, /area/station/science/genetics) -"gzt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/medical/virology) +"gzw" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "gzy" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -19549,26 +19341,21 @@ dir = 1 }, /area/station/commons/dorms) -"gzD" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/obj/machinery/light/directional/south, -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/components/binary/pump/on/scrubbers/visible/layer2{ - dir = 4; - name = "External Ports to Filter" - }, -/turf/open/floor/iron/dark/side{ - dir = 10 +"gzG" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/area/station/engineering/break_room) -"gzP" = ( -/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/duct, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) +"gzI" = ( +/obj/structure/flora/rock/pile/jungle/style_random, +/obj/item/food/grown/banana, +/turf/open/floor/grass, +/area/station/medical/virology) "gzQ" = ( /obj/effect/turf_decal/bot_white, /obj/effect/spawner/random/maintenance, @@ -19578,12 +19365,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"gzT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/wood, -/area/station/medical/psychology) "gzX" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -19599,15 +19380,10 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/port) -"gAf" = ( -/obj/effect/decal/cleanable/blood/footprints, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) "gAj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/xenobiology) "gAk" = ( @@ -19641,30 +19417,20 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "gAI" = ( -/obj/structure/chair/comfy/beige{ +/obj/structure/chair/comfy/brown{ dir = 4 }, /obj/effect/landmark/start/assistant, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) -"gAJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 4 - }, -/obj/machinery/duct, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "gAM" = ( /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, /turf/closed/wall/r_wall, /area/station/maintenance/department/engine/atmos) "gAX" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /obj/machinery/light/small/directional/north, /turf/open/floor/wood, /area/station/commons/locker) @@ -19675,44 +19441,49 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) -"gBF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ +"gBo" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, -/obj/structure/sign/warning/no_smoking/directional/north, -/turf/open/floor/iron/textured, -/area/station/engineering/main) -"gBL" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) +"gBv" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/airalarm/directional/south, +/obj/machinery/vending/wardrobe/medi_wardrobe, +/turf/open/floor/iron/white, +/area/station/medical/storage) +"gBF" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/directional/east, +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/atmos{ - name = "Atmospherics Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/door/poddoor/preopen{ - id = "atmos"; - name = "Atmospherics Blast Door" - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) +/area/station/engineering/storage/tech) "gBR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage) +"gBW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage) +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "gCi" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -19753,6 +19524,16 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) +"gCM" = ( +/obj/effect/turf_decal/trimline/red/filled/corner, +/obj/effect/turf_decal/trimline/red/line{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "gCP" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -19761,9 +19542,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/commons/fitness/recreation) -"gCT" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/department/medical) "gCX" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/light, @@ -19774,40 +19552,6 @@ /obj/effect/landmark/start/security_assistant, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"gDn" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/closet/crate/freezer, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/o_plus{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/reagent_containers/blood/o_minus, -/obj/item/reagent_containers/blood/b_plus, -/obj/item/reagent_containers/blood/b_minus, -/obj/item/reagent_containers/blood/a_plus, -/obj/item/reagent_containers/blood/a_minus, -/obj/item/reagent_containers/blood/lizard, -/obj/item/reagent_containers/blood/ethereal, -/obj/item/reagent_containers/blood{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/reagent_containers/blood{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/reagent_containers/blood{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) "gDq" = ( /obj/machinery/portable_atmospherics/canister/plasma, /turf/open/floor/plating, @@ -19815,17 +19559,11 @@ "gDV" = ( /obj/machinery/newscaster/directional/west, /obj/machinery/vending/wardrobe/jani_wardrobe, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/service/janitor) -"gEh" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/machinery/plumbing/pill_press, /turf/open/floor/iron/dark, -/area/station/medical/chemistry) +/area/station/service/janitor) +"gEg" = ( +/turf/closed/wall/r_wall, +/area/station/medical/psychology) "gEi" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 @@ -19841,11 +19579,12 @@ }, /area/station/cargo/storage) "gEs" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/confetti, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/storage) "gEt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -19877,6 +19616,12 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/engineering/storage) +"gET" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/service/library/lounge) "gEY" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 8 @@ -19907,13 +19652,55 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port) -"gFJ" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"gFu" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"gGe" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/structure/table/reinforced/rglass, +/obj/item/paper_bin{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/folder/white{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/pen/red{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/book/manual/wiki/medicine{ + pixel_x = 7 + }, +/obj/item/book/manual/wiki/infections{ + pixel_x = 7; + pixel_y = 3 + }, +/obj/item/hand_labeler, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/radio/headset/headset_med, +/obj/item/clothing/glasses/science, +/obj/item/extrapolator, +/obj/item/device/antibody_scanner, +/obj/item/device/antibody_scanner, +/obj/item/healthanalyzer, +/obj/item/clothing/glasses/hud/health, +/turf/open/floor/iron/white, +/area/station/medical/virology) "gGh" = ( /turf/closed/wall/r_wall, /area/station/science/server) @@ -19923,13 +19710,22 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) +"gGs" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "gGu" = ( /obj/structure/disposalpipe/trunk, /obj/machinery/disposal/bin, /obj/machinery/light_switch/directional/north{ - pixel_x = -8 + pixel_x = -5 + }, +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 }, -/obj/machinery/firealarm/directional/north, /turf/open/floor/wood, /area/station/service/lawoffice) "gGx" = ( @@ -19946,31 +19742,65 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"gGG" = ( +"gGD" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/engine, -/area/station/ai_monitored/turret_protected/aisat_interior) -"gGI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/newscaster/directional/east, -/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" + }, +/obj/machinery/door/poddoor/preopen{ + id = "bridge_exterior_blast_doors"; + name = "Bridge Exterior Access Blast Door" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/landmark/navigate_destination/bridge, +/turf/open/floor/iron/dark/textured, +/area/station/command/bridge) +"gGG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/engine, +/area/station/ai_monitored/turret_protected/aisat_interior) +"gGI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/newscaster/directional/east, +/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) -"gGL" = ( -/obj/structure/table/glass, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +"gGJ" = ( +/obj/machinery/firealarm/directional/west{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/west{ + pixel_y = 5 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) +"gGV" = ( +/obj/machinery/light/floor/has_bulb, +/turf/open/floor/iron/kitchen, +/area/station/security/prison/mess) "gGX" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 @@ -19987,21 +19817,22 @@ /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) "gHc" = ( -/obj/machinery/newscaster/directional/west, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/food_or_drink/snack, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "gHr" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/service/chapel) "gHs" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, +/obj/structure/cable, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) +"gHu" = ( +/turf/open/floor/iron/dark/smooth_half{ + dir = 8 + }, +/area/station/service/chapel) "gHv" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 1 @@ -20016,24 +19847,13 @@ dir = 1 }, /area/station/service/hydroponics) -"gHE" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "bridge_blast_doors"; - name = "Bridge Access Blast Door" - }, -/turf/open/floor/iron/dark/textured, -/area/station/command/bridge) +"gHK" = ( +/obj/structure/chair/stool/bar/directional/south, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "gHO" = ( /obj/machinery/shower/directional/north, -/obj/effect/landmark/start/hangover, +/obj/structure/drain, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) "gHQ" = ( @@ -20046,12 +19866,28 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "gHS" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"gIa" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/break_room) "gIe" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 @@ -20065,8 +19901,18 @@ /turf/open/floor/iron/kitchen, /area/station/service/kitchen) "gIg" = ( -/turf/closed/wall, -/area/station/command/bridge) +/obj/structure/table, +/obj/machinery/recharger, +/obj/item/paper/fluff/ids_for_dummies, +/obj/item/toy/figure/ian{ + pixel_x = -9 + }, +/obj/item/toy/figure/hop{ + pixel_y = 13; + pixel_x = -9 + }, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/hop) "gIn" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -20087,27 +19933,10 @@ /obj/machinery/door/poddoor/shutters/preopen{ id = "hydro_kitchen_shutters"; name = "Hydro-Kitchen Shutters"; - dir = 8 + dir = 4 }, /turf/open/floor/iron/dark/textured, /area/station/service/hydroponics) -"gIv" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/checkpoint/engineering) -"gIw" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/obj/structure/closet/secure_closet/brig_physician, -/obj/item/clothing/suit/jacket/straight_jacket, -/turf/open/floor/iron/white, -/area/station/security/medical) "gIy" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -20116,10 +19945,9 @@ dir = 4 }, /obj/item/radio/intercom/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/turf/open/floor/iron/dark/side{ + dir = 8 }, -/turf/open/floor/iron, /area/station/hallway/primary/aft) "gIA" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -20132,26 +19960,32 @@ /obj/structure/sign/warning/vacuum/external/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"gIF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "gIG" = ( /turf/open/floor/carpet, /area/station/service/chapel) "gIR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/engineering/engine_smes) "gIY" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 1 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 10 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/hallway/primary/aft) "gJb" = ( /obj/machinery/airalarm/directional/east, /obj/structure/chair/pew/right{ @@ -20174,19 +20008,10 @@ }, /turf/open/floor/wood, /area/station/service/chapel/funeral) -"gJq" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Engineering Lobby"; - name = "Engineering Lobby Fax Machine" - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/engineering/break_room) +"gJp" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard/aft) "gJI" = ( /obj/structure/reagent_dispensers/plumbed{ dir = 4 @@ -20194,51 +20019,44 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "gJJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Dorm 2" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "gJK" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 +/obj/machinery/space_heater, +/turf/open/floor/iron/dark/side{ + dir = 9 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/security/prison/garden) +/area/station/security/prison) "gJM" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /turf/open/floor/plating, /area/station/security/prison/mess) "gJO" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/bureaucracy/folder, -/obj/effect/spawner/random/bureaucracy/pen, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/storage) "gJU" = ( -/obj/effect/turf_decal/delivery/red, +/obj/effect/turf_decal/bot_red, /obj/machinery/status_display/evac/directional/west, /obj/machinery/suit_storage_unit/standard_unit, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/large, /area/station/ai_monitored/command/storage/eva) "gJY" = ( /turf/closed/wall, /area/station/cargo/storage) +"gJZ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/light/small/directional/south, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark/side, +/area/station/engineering/break_room) "gKd" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -20252,22 +20070,24 @@ /turf/open/floor/iron/white, /area/station/science/genetics) "gKj" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "gKk" = ( /obj/structure/sign/warning/cold_temp/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"gKq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +"gKt" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/break_room) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "gKA" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -20277,13 +20097,25 @@ }, /turf/open/floor/engine, /area/station/security/execution) +"gKC" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) +"gKH" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "gKN" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engi_lobby_shutters"; - name = "Engineering Lobby Shutters"; - dir = 4 +/obj/machinery/door/poddoor/shutters{ + id = "engi_break_room_shutters"; + name = "Engineering Shutters"; + dir = 8 }, /obj/machinery/door/poddoor/preopen{ id = "engineering"; @@ -20298,6 +20130,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "gKT" = ( @@ -20310,8 +20143,35 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/research) +"gKU" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/west, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/cell_10k, +/obj/effect/mapping_helpers/apc/full_charge, +/obj/machinery/suit_storage_unit/atmos, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) +"gLa" = ( +/obj/machinery/light/directional/east, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/station/service/library) +"gLf" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Engineering - MiniSat Transit Pod Access, External"; + network = list("ss13","rd","xeno_pens"); + name = "engineering camera"; + start_active = 1 + }, +/obj/effect/turf_decal/tile/dark_blue{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) "gLh" = ( -/turf/open/floor/iron, +/turf/open/floor/iron/dark/corner, /area/station/hallway/secondary/exit/departure_lounge) "gLp" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, @@ -20321,14 +20181,6 @@ /obj/effect/landmark/observer_start, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"gLs" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - amount = 5 - }, -/obj/item/flashlight, -/turf/open/floor/iron, -/area/station/construction) "gLv" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 @@ -20384,10 +20236,13 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "gLN" = ( +/obj/effect/turf_decal/box, +/obj/machinery/holopad, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/commons/dorms) +/obj/structure/cable, +/turf/open/floor/iron/large, +/area/station/cargo/miningoffice) "gLS" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 @@ -20397,12 +20252,21 @@ }, /turf/open/floor/iron/dark, /area/station/security/holding_cell) +"gLT" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/structure/bodycontainer/morgue{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "gLW" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp{ pixel_y = 3 }, -/turf/open/floor/iron/dark, +/turf/open/floor/carpet/green, /area/station/commons/vacant_room/office) "gLY" = ( /obj/machinery/smartfridge, @@ -20414,6 +20278,14 @@ }, /turf/open/space/basic, /area/space) +"gMe" = ( +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/computer/rdconsole{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "gMm" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 @@ -20477,23 +20349,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/starboard/aft) -"gNk" = ( -/obj/structure/table, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock{ - pixel_x = -7; - pixel_y = 9 - }, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil{ - pixel_y = 7; - pixel_x = 3 - }, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) "gNn" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -20506,27 +20363,27 @@ "gNB" = ( /obj/machinery/light/small/directional/north, /obj/structure/sign/warning/electric_shock/directional/north, -/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"gNM" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 +"gNL" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 }, -/obj/machinery/light/small/directional/east, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/structure/chair/sofa/bench/left, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) "gNS" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/item/stack/sheet/cardboard{ + amount = 14 }, -/obj/machinery/camera/directional/east{ - c_tag = "Security - Prison Workshop"; - network = list("ss13","prison") +/obj/item/stack/package_wrap, +/turf/open/floor/iron/dark/side{ + dir = 6 }, -/turf/open/floor/iron/dark, /area/station/security/prison/work) "gNX" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -20546,14 +20403,6 @@ /obj/item/assembly/signaler, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) -"gOb" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/station_map/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/starboard) "gOh" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -20568,6 +20417,15 @@ }, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/foyer) +"gOp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/grass, +/area/station/medical/virology) +"gOr" = ( +/obj/structure/chair, +/turf/open/floor/iron/white, +/area/station/medical/virology) "gOs" = ( /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, @@ -20584,18 +20442,9 @@ }, /turf/open/floor/iron/white/textured, /area/station/science/xenobiology) -"gOz" = ( -/obj/structure/flora/grass/jungle/b/style_random, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/mob/living/basic/butterfly, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/grass, -/area/station/command/bridge) "gOA" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "gOE" = ( /obj/effect/turf_decal/stripes/line{ @@ -20605,39 +20454,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/foyer) -"gOK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "gOR" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) -"gOS" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/status_display/evac/directional/west, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/table/glass, -/obj/item/wrench/medical, -/obj/item/wrench/medical{ - pixel_x = 4; - pixel_y = 4 +/obj/structure/reagent_dispensers/wall/peppertank/directional/east, +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = -5 }, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 8 +/obj/machinery/recharger{ + pixel_x = 5 }, -/obj/item/storage/toolbox/electrical, -/obj/machinery/door/window/right/directional/east{ - name = "Miscellaneous Medical Supplies"; - req_access = list("medical") +/obj/item/gun_maintenance_supplies{ + pixel_y = 10 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "gPa" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/effect/turf_decal/trimline/yellow/line{ @@ -20656,29 +20486,25 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "gPd" = ( /obj/structure/cable, /turf/closed/wall/r_wall, /area/station/security/holding_cell) -"gPu" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) "gPM" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, /obj/structure/cable, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) +"gPO" = ( +/obj/machinery/airalarm/directional/south, +/obj/structure/table/wood, +/obj/effect/spawner/random/trash/food_packaging, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "gPS" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, @@ -20686,11 +20512,8 @@ /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) "gPV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/telecomms/receiver/preset_right, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/bus/preset_one, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) "gQi" = ( /obj/machinery/light/small/directional/south, @@ -20702,8 +20525,9 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 9 }, -/obj/item/radio/intercom/directional/west, +/obj/structure/extinguisher_cabinet/directional/west, /obj/structure/chair, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark/side{ dir = 9 }, @@ -20732,20 +20556,15 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat_interior) "gQO" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/table/wood, -/obj/machinery/door/window/brigdoor/left/directional/north{ - name = "Captain's Desk"; - req_access = list("captain") - }, -/obj/item/book/manual/wiki/security_space_law, -/obj/effect/spawner/random/entertainment/coin, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) -"gQT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/structure/table/wood, +/obj/item/paper_bin/carbon, +/obj/item/folder/white, +/obj/item/pen, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "gQX" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/effect/turf_decal/stripes/line{ @@ -20757,13 +20576,6 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron/white, /area/station/science/research) -"gRa" = ( -/obj/machinery/light/small/directional/east, -/obj/structure/closet/crate/coffin, -/obj/effect/decal/cleanable/dirt, -/obj/structure/noticeboard/directional/east, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/fore) "gRc" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/end{ dir = 1 @@ -20772,12 +20584,12 @@ /turf/open/floor/iron/dark/telecomms, /area/station/science/server) "gRf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron, +/area/station/engineering/main) "gRk" = ( /obj/structure/table/wood, /obj/item/phone{ @@ -20827,44 +20639,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/chair/wood, +/obj/machinery/holopad, /turf/open/floor/wood, /area/station/security/prison/rec) -"gRZ" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/leafy, -/turf/open/floor/grass, -/area/station/command/bridge) -"gSl" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"gSm" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 +"gRN" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 }, -/obj/item/storage/secure/safe/directional/north, -/obj/machinery/disease2/diseaseanalyser, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/structure/disposaloutlet, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"gSg" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/office) "gSn" = ( /obj/effect/turf_decal/trimline/purple/filled/warning, /turf/open/floor/iron/white, /area/station/science/research) -"gSr" = ( -/obj/machinery/light_switch/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/construction) -"gSs" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "gSu" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -20881,28 +20675,73 @@ /turf/open/floor/iron/dark/textured, /area/station/security/prison/safe) "gSz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/service/library/printer) -"gSA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/service/abandoned_gambling_den) +"gSA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, /obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/fore) "gSB" = ( +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/machinery/light/small/directional/south, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/cell_10k, /obj/machinery/quantum_server, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured, +/turf/open/floor/iron/dark, /area/station/security/bitden) +"gSC" = ( +/obj/structure/sign/painting/library_private{ + pixel_y = -32 + }, +/obj/structure/table/wood, +/obj/item/device/cassette_tape/friday{ + pixel_y = 2; + pixel_x = 9 + }, +/obj/item/device/walkman{ + pixel_y = 7; + pixel_x = -8 + }, +/obj/item/device/walkman{ + pixel_y = 7; + pixel_x = -8 + }, +/obj/item/device/walkman{ + pixel_y = 7; + pixel_x = -8 + }, +/obj/item/device/walkman{ + pixel_y = 7; + pixel_x = -8 + }, +/obj/item/device/walkman{ + pixel_y = 7; + pixel_x = -8 + }, +/obj/item/device/walkman{ + pixel_y = 7; + pixel_x = -8 + }, +/obj/item/device/walkman{ + pixel_y = 7; + pixel_x = -8 + }, +/obj/item/device/walkman{ + pixel_y = 7; + pixel_x = -8 + }, +/obj/item/device/walkman{ + pixel_y = 7; + pixel_x = -8 + }, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "gSE" = ( /turf/open/floor/carpet/purple, /area/station/command/heads_quarters/rd) @@ -20910,7 +20749,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "gSL" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -20922,7 +20761,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/chair, +/obj/structure/chair/sofa/bench/right, /obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/hallway/primary/aft) @@ -20950,11 +20789,8 @@ }, /area/station/cargo/office) "gTp" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 1 - }, /obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology/hallway) "gTH" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -20964,6 +20800,13 @@ dir = 8 }, /area/station/cargo/storage) +"gTK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/wood, +/area/station/service/library/private) "gTL" = ( /obj/machinery/light/neon_lining{ dir = 4 @@ -20973,22 +20816,22 @@ /area/station/science/xenobiology) "gUl" = ( /obj/machinery/light_switch/directional/south, +/obj/machinery/camera/autoname/directional/south, +/obj/structure/punching_bag, /turf/open/floor/iron/dark, /area/station/security/prison/workout) "gUp" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/light_switch/directional/south{ - pixel_x = 8 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/service/library/printer) +/obj/machinery/vending/wardrobe/chem_wardrobe, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "gUS" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/disposalpipe/trunk{ - dir = 2 - }, +/obj/structure/disposalpipe/trunk, /obj/machinery/disposal/delivery_chute{ dir = 4 }, @@ -21004,19 +20847,26 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/eighties/red, /area/station/service/theater) -"gVo" = ( -/obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "gVB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/duct, +/obj/machinery/door/airlock/bathroom{ + name = "Bathroom"; + id_tag = "bs_bathroom" + }, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/blueshield) +"gVG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/obj/structure/chair/wood, +/obj/effect/landmark/start/assistant, +/turf/open/floor/wood, +/area/station/service/library/lounge) "gVK" = ( /obj/machinery/conveyor{ id = "QMLoad" @@ -21025,25 +20875,24 @@ /turf/open/floor/plating, /area/station/cargo/storage) "gVQ" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/machinery/computer/records/security{ dir = 8 }, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 4 - }, -/obj/structure/sign/warning/secure_area/directional/west, +/obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/dark, -/area/station/hallway/primary/central) -"gVV" = ( +/area/station/command/bridge) +"gVU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/chair{ +/obj/machinery/door/firedoor, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) +"gVV" = ( +/turf/open/floor/iron/dark/side{ dir = 1 }, -/obj/effect/landmark/start/janitor, -/obj/machinery/duct, -/turf/open/floor/iron, /area/station/service/janitor) "gWi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -21067,51 +20916,51 @@ /obj/effect/turf_decal/bot_white/left, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) -"gWE" = ( -/obj/effect/turf_decal/bot, -/obj/structure/closet/crate, -/obj/item/pickaxe, -/obj/item/mining_scanner, +"gWu" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/sign/departments/engineering/directional/north, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) -"gWG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"gWz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay Storage" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) +/turf/open/floor/iron, +/area/station/security/prison/safe) +"gWA" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 + }, +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood, +/area/station/service/library) "gWI" = ( +/obj/machinery/light/small/directional/north, /obj/machinery/camera/directional/north{ c_tag = "Arrivals - Docking Bay 3"; name = "arrivals camera" }, +/obj/structure/chair, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/entry) "gWL" = ( -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/structure/table/wood, +/obj/item/flashlight/lamp{ + pixel_y = 3 }, -/turf/open/floor/iron/dark, -/area/station/service/chapel) +/turf/open/floor/carpet/blue, +/area/station/commons/vacant_room/office) "gXk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, /obj/machinery/meter/layer4, +/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "gXm" = ( @@ -21135,24 +20984,38 @@ /area/station/maintenance/starboard/fore) "gXL" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/table/reinforced, /obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table/reinforced, /obj/item/storage/box/zipties, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) "gXO" = ( -/obj/effect/turf_decal/trimline/red/filled/corner, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, /obj/effect/turf_decal/trimline/red/line{ - dir = 9 + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) +"gXP" = ( +/obj/structure/bed{ + dir = 4 + }, +/obj/item/bedsheet/medical{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "gXW" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/structure/chair{ dir = 8 }, +/obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "gXZ" = ( @@ -21162,8 +21025,15 @@ "gYl" = ( /obj/structure/disposalpipe/segment, /obj/machinery/space_heater, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) +"gYp" = ( +/obj/machinery/airalarm/directional/east, +/obj/item/radio/intercom/directional/south, +/obj/structure/table/wood, +/obj/item/toy/figure/curator, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "gYt" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, /obj/machinery/atmospherics/pipe/layer_manifold/yellow/visible{ @@ -21174,24 +21044,26 @@ /area/station/engineering/atmos) "gYF" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white/left, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/turf_decal/bot_white, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) "gYH" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/prison) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/table/wood, +/obj/item/storage/dice, +/turf/open/floor/wood, +/area/station/security/prison/rec) "gYL" = ( /obj/machinery/airalarm/directional/east, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "gYS" = ( /obj/effect/turf_decal/box, @@ -21229,19 +21101,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/silver/glass{ +/obj/machinery/door/airlock/silver{ name = "Chapel Office" }, /obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, /turf/open/floor/iron/dark/textured, /area/station/service/chapel/office) -"gZw" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +"gZd" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) +/obj/machinery/light/directional/north, +/obj/item/kirbyplants/random, +/turf/open/floor/iron, +/area/station/engineering/main) "gZC" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 @@ -21255,8 +21128,13 @@ /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 }, -/obj/machinery/firealarm/directional/west, -/obj/structure/table/glass, +/obj/machinery/firealarm/directional/west{ + pixel_y = -6 + }, +/obj/machinery/light_switch/directional/west{ + pixel_y = 3 + }, +/obj/structure/table, /obj/item/hatchet, /obj/item/cultivator, /obj/item/crowbar/red, @@ -21280,10 +21158,10 @@ /turf/open/floor/iron/dark, /area/station/security/processing) "hao" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/table/wood, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/dresser, /turf/open/floor/carpet/purple, -/area/station/commons/dorms) +/area/station/commons/dorms/room3) "haq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21294,24 +21172,20 @@ /turf/open/floor/wood, /area/station/command/heads_quarters/qm) "hat" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"haD" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/machinery/airalarm/directional/east, +/obj/machinery/vending/wardrobe/engi_wardrobe, +/turf/open/floor/iron/dark/side{ + dir = 4 }, -/obj/effect/turf_decal/trimline/blue/line, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"haH" = ( -/obj/machinery/computer/security/hos, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/engineering/storage_shared) +"haG" = ( +/obj/machinery/light/directional/south, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/station/service/library/private) "haO" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/effect/turf_decal/plaque{ @@ -21320,31 +21194,22 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "hbb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"hbj" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/flora/bush/leafy, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/grass/jungle/b/style_random, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters"; - dir = 8 +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ + dir = 10 }, -/turf/open/floor/grass, -/area/station/medical/medbay/central) +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) "hbt" = ( /obj/effect/spawner/random/structure/chair_flipped{ dir = 4 }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"hbO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/moisture_trap, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "hbW" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -21388,10 +21253,6 @@ /obj/machinery/smartfridge/extract/preloaded, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"hcx" = ( -/obj/structure/foamedmetal, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "hcB" = ( /obj/machinery/power/port_gen/pacman/pre_loaded, /turf/open/floor/plating, @@ -21407,7 +21268,13 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "hcK" = ( -/obj/structure/sink/kitchen/directional/south, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = -5 + }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, @@ -21418,24 +21285,37 @@ /turf/open/floor/iron/checker, /area/station/maintenance/port/fore) "hdi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/office, -/obj/effect/landmark/start/depsec/engineering, /turf/open/floor/iron/dark, /area/station/security/checkpoint/engineering) "hdj" = ( /turf/closed/wall, /area/station/hallway/secondary/service) "hdl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/structure/chair_flipped{ - dir = 4 +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/right/directional/east{ + name = "Medbay Front Desk"; + req_access = list("medical") }, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) +/obj/machinery/door/window/left/directional/west{ + name = "Medbay Front Desk" + }, +/obj/machinery/door/poddoor/shutters{ + id = "medbay_desk_shutters"; + name = "Medbay Front Desk Shutters"; + dir = 8 + }, +/obj/structure/desk_bell{ + pixel_x = -6 + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/office) "hdm" = ( -/obj/structure/chair/stool/directional/north, +/obj/structure/chair/plastic{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/security/prison) "hdC" = ( @@ -21450,6 +21330,14 @@ /obj/effect/landmark/navigate_destination/common/fitness, /turf/open/floor/iron/dark/textured, /area/station/commons/dorms/laundry) +"hdF" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/main) "hdQ" = ( /obj/effect/turf_decal/box, /obj/effect/turf_decal/stripes/corner, @@ -21469,30 +21357,25 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start/cargo_technician, +/obj/effect/spawner/random/structure/crate, /turf/open/floor/iron/dark/side{ dir = 4 }, /area/station/cargo/sorting) +"hea" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "hee" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/window/reinforced/tinted/spawner/directional/south, +/obj/structure/window/reinforced/tinted, /obj/structure/toilet{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/security/prison/safe) -"hei" = ( -/obj/structure/flora/grass/jungle/b/style_random, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/grass, -/area/station/command/bridge) "hen" = ( /obj/effect/turf_decal/trimline/neutral/line{ dir = 10 @@ -21502,6 +21385,13 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"heo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "hey" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -21530,39 +21420,43 @@ name = "Hydroponics" }, /obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, +/obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/service/hydroponics) +"heR" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table/wood/fancy, +/obj/effect/spawner/random/decoration/statue{ + spawn_loot_chance = 35 + }, +/obj/structure/sign/painting/large/library{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "hfb" = ( /obj/effect/turf_decal/stripes/line{ - dir = 4 + dir = 6 }, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) -"hff" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "cmo_shutters"; - name = "CMO Office Shutters"; - dir = 4 - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/cmo) "hfh" = ( -/obj/structure/mirror/directional/north, -/obj/structure/sink/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/built/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/stripes/line, +/obj/structure/window/spawner/directional/south, +/obj/structure/table/reinforced/rglass, +/obj/item/burner/fuel{ + pixel_y = 4 + }, +/obj/item/storage/box/beakers, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/dropper, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "hfF" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/structure/table/glass, /obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/door/window{ - base_state = "right"; - dir = 8; - icon_state = "right"; +/obj/machinery/door/window/brigdoor/right/directional/west{ name = "Core Modules"; req_access = list("captain") }, @@ -21575,9 +21469,6 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "hfI" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -21593,23 +21484,16 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"hfZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/area/station/engineering/atmos/storage) "hgf" = ( -/obj/machinery/status_display/ai/directional/south, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 4 +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage) +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/command/heads_quarters/cmo) "hgg" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 @@ -21622,21 +21506,16 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) -"hgi" = ( -/obj/effect/spawner/random/trash/box, -/obj/effect/spawner/random/maintenance/two, +"hgh" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) +"hgQ" = ( +/obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/fore) -"hgw" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/table/glass, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/upgraded, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/area/station/maintenance/department/engine/atmos) "hhj" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -21656,9 +21535,35 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/security/office) +"hhq" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/wood, +/area/station/service/library/lounge) "hhs" = ( /turf/open/floor/iron/white, /area/station/science/auxlab) +"hhu" = ( +/obj/effect/turf_decal/tile/dark_blue/full, +/obj/machinery/light/small/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Central Hallway, West - HoP Line"; + name = "hallway camera" + }, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/iron/dark/smooth_large, +/area/station/hallway/primary/central) +"hhC" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "hhG" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 @@ -21668,26 +21573,28 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) +"hhJ" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/structure/sign/directions/cryo/directional/north{ + pixel_y = 23 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) "hhK" = ( /turf/open/floor/iron/dark/side{ dir = 9 }, /area/station/commons/locker) -"hih" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +"hie" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/airalarm/directional/south, +/obj/machinery/computer/operating{ + dir = 1 }, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/area/station/medical/surgery) "hil" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -21725,14 +21632,29 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/iron, /area/station/maintenance/disposal) -"hjc" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 - }, +"hiz" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/closet/firecloset, /turf/open/floor/plating, -/area/station/maintenance/port/fore) -"hjd" = ( -/obj/structure/disposalpipe/segment{ +/area/station/maintenance/department/engine) +"hiR" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/trimline/red/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"hjc" = ( +/obj/effect/spawner/random/structure/chair_maintenance{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"hjd" = ( +/obj/structure/disposalpipe/segment{ dir = 6 }, /obj/structure/closet/emcloset, @@ -21769,30 +21691,20 @@ dir = 10 }, /obj/structure/table, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil{ - pixel_y = 7; - pixel_x = 3 - }, /obj/item/electronics/airlock, /obj/item/electronics/airlock{ - pixel_x = -7; + pixel_x = -6; pixel_y = 9 }, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil{ + pixel_y = 3; + pixel_x = 3 + }, /turf/open/floor/iron, /area/station/engineering/storage) -"hjU" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/vehicle/ridden/wheelchair{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "hjZ" = ( -/turf/open/floor/iron, +/turf/open/floor/glass/reinforced, /area/station/security/prison/workout) "hkf" = ( /turf/open/floor/iron/dark/side{ @@ -21803,20 +21715,17 @@ /obj/effect/turf_decal/siding/thinplating{ dir = 4 }, -/obj/structure/chair{ +/obj/structure/chair/sofa/bench/right{ dir = 8 }, +/obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) "hkj" = ( -/obj/machinery/space_heater/improvised_chem_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"hkl" = ( -/obj/effect/spawner/random/engineering/material_cheap, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/atmos/office) "hkm" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 @@ -21832,25 +21741,29 @@ /area/station/ai_monitored/command/storage/eva) "hkz" = ( /obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet/red, /area/station/security/courtroom) "hkO" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/obj/effect/landmark/start/hangover, +/obj/machinery/airalarm/directional/east, +/obj/structure/chair/stool/directional/south, /turf/open/floor/carpet/blue, -/area/station/commons/dorms) +/area/station/commons/dorms/room2) "hkQ" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 }, +/obj/machinery/light/small/directional/north, +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, /obj/structure/chair, -/obj/machinery/firealarm/directional/east, -/obj/machinery/light_switch/directional/north, /turf/open/floor/iron/dark, /area/station/security/processing) "hkR" = ( -/obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, /obj/machinery/space_heater, /turf/open/floor/iron, @@ -21859,6 +21772,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) +"hlb" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/machinery/vending/engivend, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/storage_shared) "hll" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/window/brigdoor/left/directional/east{ @@ -21866,63 +21791,18 @@ req_access = list("ai_upload") }, /obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; + dir = 4; id = "tertiary_ai_core_shutters"; name = "Tertiary AI Core Shutters" }, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) -"hln" = ( -/obj/structure/sink/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"hlp" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 6 - }, -/obj/structure/cable/layer1, -/turf/open/floor/iron, -/area/station/engineering/main) "hlu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/wood, /area/station/service/lawoffice) -"hlw" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/virology{ - autoclose = 0; - frequency = 1449; - id_tag = "pathology_airlock_interior"; - name = "Pathology Interior Airlock" - }, -/obj/machinery/door_buttons/access_button{ - idDoor = "pathology_airlock_interior"; - idSelf = "pathology_airlock_control"; - name = "Pathology Access Button"; - pixel_y = 6; - req_access = list("pathology"); - pixel_x = -24 - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/medical/virology) "hlD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21936,24 +21816,15 @@ dir = 8 }, /area/station/hallway/secondary/service) -"hlK" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical{ - desc = "Danger. Very robust. Did someone change this?" - }, -/obj/item/crowbar/large{ - desc = "Sic semper tyrannis."; - name = "The One Free Engineer's crowbar" +"hlL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/dark, /area/station/command/bridge) -"hlL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/port_gen/pacman/pre_loaded, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "hlP" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -21970,6 +21841,14 @@ }, /turf/open/floor/stone, /area/station/science/xenobiology) +"hml" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Service - Library, Printer Room"; + name = "service camera" + }, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "hmq" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 10 @@ -21978,43 +21857,50 @@ /turf/open/floor/iron/white, /area/station/science/circuits) "hmF" = ( -/obj/machinery/computer/order_console/bitrunning{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured, -/area/station/security/bitden) -"hnr" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/radio/intercom/prison/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/security/prison) +"hmP" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/obj/machinery/computer/operating{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) +"hmZ" = ( +/mob/living/carbon/human/species/monkey, +/turf/open/floor/grass, +/area/station/medical/virology) "hnu" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /obj/item/storage/secure/safe/hos{ pixel_x = 35 }, /obj/structure/closet/secure_closet/hos, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) -"hnB" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/spawner/random/structure/chair_flipped{ - dir = 8 +"hny" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/light/small/directional/east, +/obj/item/storage/secure/safe/caps_spare/directional/east, +/obj/structure/table/reinforced, +/obj/item/disk/nuclear{ + pixel_x = -7 }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/obj/item/disk/nuclear/fake/obvious{ + name = "nuclear authentication disk"; + pixel_x = 7 + }, +/obj/item/pinpointer/nuke, +/obj/machinery/keycard_auth/directional/east{ + pixel_y = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "hnH" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -22034,10 +21920,10 @@ /turf/open/floor/iron, /area/station/hallway/primary/aft) "hoa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/dorms) +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole, +/turf/open/floor/wood, +/area/station/service/library) "hoe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -22047,14 +21933,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron/large, /area/station/hallway/secondary/service) -"hol" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/break_room) "hoq" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -22072,10 +21953,13 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/service/kitchen/coldroom) -"hoJ" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/medical/virology) +"hoR" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/structure/chair/sofa/bench, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) "hoX" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -22083,23 +21967,25 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"hph" = ( +"hpb" = ( +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/cable/layer1, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) +"hph" = ( /obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/obj/structure/cable, /obj/machinery/holopad, /turf/open/floor/iron/large, /area/station/engineering/engine_smes) "hpl" = ( /turf/open/floor/iron/dark/side, /area/station/commons/dorms) -"hpm" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/modular_computer/preset/id, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "hps" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 4 @@ -22116,12 +22002,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) -"hpu" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/security_all, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "hpy" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -22135,7 +22015,9 @@ /area/station/security/office) "hpB" = ( /obj/structure/cable, -/obj/structure/chair/stool/directional/west, +/obj/structure/chair/plastic{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/security/prison) "hpC" = ( @@ -22145,23 +22027,21 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "hpL" = ( -/obj/structure/dresser, -/turf/open/floor/wood/large, -/area/station/commons/dorms) +/obj/effect/spawner/random/vending/snackvend, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "hpM" = ( -/turf/closed/wall, -/area/station/construction) -"hpU" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "hpW" = ( -/obj/structure/sink/directional/west, -/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/west, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/maintenance/department/engineering/central) "hpY" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -22169,9 +22049,11 @@ "hqm" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 }, -/obj/machinery/firealarm/directional/south, /turf/open/floor/iron/white, /area/station/science/explab) "hqv" = ( @@ -22182,15 +22064,24 @@ /obj/structure/sign/warning/electric_shock/directional/east, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"hqF" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/machinery/firealarm/directional/south, +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/landmark/start/virologist, +/turf/open/floor/iron/white, +/area/station/medical/virology) "hqK" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 8 }, /obj/item/radio/intercom/directional/south, -/obj/machinery/light_switch/directional/west, /obj/structure/closet{ name = "Evidence Closet" }, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark, /area/station/security/evidence) "hqM" = ( @@ -22200,19 +22091,21 @@ /area/station/science/xenobiology) "hqN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, /area/station/hallway/secondary/exit/departure_lounge) "hqV" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/disposalpipe/trunk{ - dir = 2 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 }, -/obj/machinery/disposal/bin, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) +/obj/structure/cable, +/obj/structure/sink/directional/west, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/break_room) "hqW" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -22239,7 +22132,6 @@ /turf/open/floor/iron/dark/telecomms, /area/station/science/server) "hrH" = ( -/obj/machinery/light/directional/north, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; name = "Distro to Waste" @@ -22263,13 +22155,10 @@ /turf/open/floor/iron/dark/textured, /area/station/security/prison/rec) "hsc" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/atmospherics/pipe/smart/simple/pink/hidden{ - dir = 4 - }, -/obj/structure/closet/firecloset, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) "hsf" = ( /obj/effect/spawner/random/structure/chair_maintenance{ dir = 8 @@ -22282,30 +22171,12 @@ /obj/machinery/computer/atmos_control/ordnancemix, /turf/open/floor/iron, /area/station/science/ordnance) -"hso" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/blue/corner, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "hsp" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 5 }, /turf/open/floor/engine, /area/station/science/xenobiology) -"hsr" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) "hsB" = ( /obj/structure/table/wood, /obj/effect/spawner/random/entertainment/lighter{ @@ -22328,24 +22199,38 @@ /obj/effect/turf_decal/trimline/dark_red/corner{ dir = 8 }, +/obj/machinery/camera/motion/directional/east{ + c_tag = "AI - Upload, East"; + network = list("aiupload"); + name = "ai camera" + }, /obj/item/radio/intercom/directional/east{ broadcasting = 1; frequency = 1447; listening = 0; name = "AI Private Channel" }, -/obj/machinery/camera/motion/directional/east{ - c_tag = "AI - Upload East"; - network = list("aiupload") - }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"hsT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +"hsN" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, -/turf/open/floor/carpet, -/area/station/service/library) +/obj/machinery/light/small/directional/south, +/obj/structure/sign/poster/official/random/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/medical/paramedic) +"hsT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "hsY" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -22362,27 +22247,66 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/security/brig/entrance) -"hte" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/sign/flag/nanotrasen/directional/east, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"hts" = ( -/obj/structure/disposalpipe/segment, +"htv" = ( +/obj/structure/disposalpipe/junction{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) +"htE" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/obj/machinery/station_map/directional/west, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/hallway/primary/aft) "htF" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) +"htN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/library) +"htV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/structure/cable, +/obj/structure/liquid_barrier, +/obj/machinery/door/airlock/research/glass{ + name = "Kill Chamber"; + normalspeed = 0 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/turf/open/floor/iron/white/textured, +/area/station/science/xenobiology) +"htW" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "htX" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 @@ -22393,14 +22317,17 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"huo" = ( -/obj/machinery/power/port_gen/pacman/pre_loaded, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +"hui" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/open/floor/carpet/green, +/area/station/service/abandoned_gambling_den) "hur" = ( -/obj/structure/reagent_dispensers/plumbed{ +/obj/effect/turf_decal/caution/red{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "hus" = ( @@ -22408,6 +22335,7 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 }, +/obj/machinery/light/directional/north, /obj/structure/sign/poster/official/random/directional/north, /obj/machinery/lapvend, /turf/open/floor/iron/dark, @@ -22433,10 +22361,10 @@ /obj/machinery/door/window/right/directional/east{ name = "Brig Entrance Desk" }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "brig_post"; name = "Security Shutters"; - dir = 8 + dir = 4 }, /obj/structure/desk_bell{ pixel_y = 2; @@ -22445,31 +22373,16 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/brig/entrance) -"huH" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 6 - }, -/obj/machinery/light/directional/south, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "huJ" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable/layer1, -/obj/machinery/door/airlock/external{ - name = "Engineering External Access" +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 4 }, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/main) +/obj/machinery/light/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "hvc" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -22487,28 +22400,25 @@ dir = 1 }, /obj/structure/table, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -3 - }, /obj/item/reagent_containers/condiment/peppermill{ - pixel_x = 3 + pixel_x = -9; + pixel_y = 9 + }, +/obj/machinery/reagentgrinder{ + pixel_y = 8 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -9 }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"hvm" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/table/glass, -/obj/item/storage/box/beakers, -/obj/item/reagent_containers/cup/beaker/large, -/obj/item/reagent_containers/dropper, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) "hvs" = ( /obj/machinery/airalarm/directional/north, +/obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/dark, /area/station/security/prison/workout) "hvz" = ( +/obj/machinery/light/small/directional/south, /obj/structure/closet/emcloset/anchored, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/entry) @@ -22531,32 +22441,12 @@ }, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/aisat_interior) -"hvU" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/glass, -/obj/machinery/fax{ - fax_name = "Medical Office"; - name = "Medical Office Fax Machine" - }, -/turf/open/floor/iron/white, -/area/station/medical/office) -"hvW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/storage) "hvX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/atmospherics/components/tank{ + dir = 1 }, /turf/open/floor/plating, -/area/station/maintenance/department/science) +/area/station/maintenance/starboard/aft) "hwe" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 @@ -22564,20 +22454,6 @@ /obj/effect/turf_decal/trimline/red/warning, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"hwk" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/camera/directional/east{ - c_tag = "Medical - Operating Room"; - network = list("ss13","medbay"); - name = "medical camera" - }, -/obj/machinery/airalarm/directional/east, -/obj/machinery/light/small/directional/east, -/obj/structure/table/glass, -/obj/item/storage/backpack/duffelbag/med/surgery, -/turf/open/floor/iron/white, -/area/station/medical/surgery) "hwr" = ( /obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -22617,11 +22493,24 @@ /obj/effect/mapping_helpers/airlock/access/all/science/ordnance, /turf/open/floor/iron/white/textured, /area/station/science/explab) -"hxe" = ( -/obj/structure/closet/emcloset, +"hwB" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/table, +/obj/effect/spawner/random/engineering/tool, +/obj/effect/spawner/random/engineering/tool{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/reagent_containers/syringe, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/starboard/aft) +"hxe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) "hxi" = ( /obj/effect/turf_decal/trimline/brown/filled/warning, /obj/structure/disposalpipe/segment{ @@ -22629,16 +22518,11 @@ }, /turf/open/floor/iron/dark/side, /area/station/cargo/sorting) -"hxt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/medical/storage) "hxu" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/south, +/obj/machinery/airalarm/directional/south, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) "hxv" = ( @@ -22669,9 +22553,9 @@ /turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) "hxM" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/obj/structure/filingcabinet, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "hxS" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -22685,7 +22569,6 @@ /turf/open/floor/iron/white, /area/station/science/auxlab) "hxV" = ( -/obj/machinery/airalarm/directional/south, /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 }, @@ -22703,13 +22586,13 @@ /turf/open/floor/plating, /area/station/engineering/atmos) "hyb" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, /obj/machinery/airalarm/directional/east, /obj/effect/mapping_helpers/airalarm/all_access, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/power/terminal{ + dir = 1 + }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "hyd" = ( @@ -22720,12 +22603,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"hyy" = ( -/obj/machinery/station_map/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/commons/dorms) +"hyj" = ( +/obj/structure/table/wood, +/obj/effect/spawner/random/bureaucracy/folder, +/obj/effect/spawner/random/bureaucracy/pen, +/turf/open/floor/wood, +/area/station/service/library/lounge) +"hyo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/chair/office, +/obj/effect/landmark/start/depsec/engineering, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "hzc" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/small/directional/east, @@ -22742,7 +22632,7 @@ /turf/open/floor/plating/airless, /area/station/ai_monitored/turret_protected/aisat/atmos) "hzA" = ( -/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) "hzK" = ( @@ -22776,18 +22666,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, /turf/open/floor/plating, /area/station/maintenance/port/aft) "hAo" = ( /obj/effect/turf_decal/tile/purple/opposingcorners{ dir = 1 }, -/obj/machinery/firealarm/directional/east, +/obj/machinery/firealarm/directional/east{ + pixel_y = 5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = -5 + }, /obj/machinery/vending/wardrobe/science_wardrobe, /turf/open/floor/iron/checker, /area/station/science/lab) @@ -22799,6 +22689,30 @@ }, /turf/open/floor/iron/dark/side, /area/station/cargo/miningoffice) +"hAV" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/table/reinforced/rglass, +/obj/item/clothing/suit/apron/surgical{ + pixel_x = 5 + }, +/obj/item/clothing/suit/apron/surgical{ + pixel_x = 5 + }, +/obj/item/book/manual/wiki/surgery{ + pixel_x = -6 + }, +/obj/item/clothing/glasses/hud/health{ + pixel_x = -7 + }, +/obj/item/reagent_containers/medigel/sterilizine{ + pixel_x = 5; + pixel_y = 10 + }, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "hBe" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 4 @@ -22817,27 +22731,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"hBi" = ( -/obj/structure/closet/secure_closet/personal/patient, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) "hBp" = ( /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) -"hBx" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/office) -"hBG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +"hBI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) "hBK" = ( /obj/effect/turf_decal/stripes/box, /obj/machinery/camera/autoname/directional/west, @@ -22847,16 +22749,13 @@ /turf/open/floor/iron/large, /area/station/science/robotics/mechbay) "hBR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/structure/mirror/directional/west, +/obj/structure/sink/directional/east, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "hCe" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -22868,15 +22767,23 @@ /obj/effect/mapping_helpers/airlock/access/all/service/general, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/hallway/secondary/service) "hCj" = ( /turf/open/floor/iron/dark/side{ dir = 10 }, /area/station/commons/locker) +"hCx" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "hCz" = ( /obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/tank/air, +/obj/structure/table, +/obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "hCH" = ( @@ -22891,37 +22798,73 @@ /area/station/service/hydroponics/garden) "hCN" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 8 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/iron/textured, -/area/station/maintenance/starboard/aft) -"hCP" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) +"hCP" = ( +/obj/effect/turf_decal/tile/blue/full, +/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/door/window/right/directional/north{ + name = "Medical Deliveries"; + req_access = list("medical") + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "med_lockdown"; + name = "Medbay Emergency Lockdown Shutters" + }, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/medbay/central) +"hCZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 + }, +/obj/structure/sign/poster/official/cleanliness/directional/south, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"hDi" = ( +/obj/machinery/light/directional/east, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = 3; + pixel_y = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "hDl" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/captain/private) +"hDo" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/camera/directional/south{ + c_tag = "Medical - Cryogenics"; + name = "medical camera"; + network = list("ss13","medbay") + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/components/binary/volume_pump/on{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "hDp" = ( /turf/closed/wall/r_wall, /area/station/security/brig) @@ -22936,10 +22879,9 @@ /obj/machinery/door/window/left/directional/south{ name = "Brig Entrance Desk" }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "brig_post"; - name = "Security Shutters"; - dir = 1 + name = "Security Shutters" }, /obj/structure/desk_bell{ pixel_y = 2; @@ -22947,6 +22889,20 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig/entrance) +"hDv" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron, +/area/station/engineering/main) +"hDz" = ( +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/machinery/light/directional/east, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/computer/security/hos{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "hDE" = ( /obj/structure/tank_dispenser, /turf/open/floor/iron/white, @@ -22963,11 +22919,8 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "hDN" = ( +/obj/machinery/light/small/directional/east, /obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 13 - }, /obj/item/book/manual/wiki/detective{ pixel_x = -7; pixel_y = 5 @@ -22987,12 +22940,28 @@ /turf/open/floor/wood, /area/station/security/detectives_office) "hDP" = ( -/obj/structure/chair/comfy/brown{ +/obj/machinery/status_display/evac/directional/east, +/obj/structure/chair/sofa/left/brown, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) +"hDT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/effect/landmark/start/captain, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) +"hEh" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/machinery/camera/directional/east{ + c_tag = "Security - Post, Engineering"; + name = "security camera" + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "hEi" = ( /obj/structure/table, /obj/item/clothing/mask/balaclava{ @@ -23004,23 +22973,6 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) -"hEk" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/table/glass, -/obj/machinery/door/window/left/directional/east{ - name = "Miscellaneous Medical Supplies"; - req_access = list("medical") - }, -/obj/item/healthanalyzer, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/regular, -/obj/item/clothing/glasses/regular, -/obj/item/clothing/glasses/regular, -/turf/open/floor/iron/white, -/area/station/medical/storage) "hEq" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/small/directional/south, @@ -23031,31 +22983,18 @@ }, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) -"hEy" = ( +"hEt" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 + dir = 9 }, -/obj/effect/turf_decal/box/corners{ - dir = 1 +/obj/structure/bed{ + dir = 4 }, -/obj/machinery/status_display/ai/directional/north, -/obj/machinery/plumbing/pill_press, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry) -"hEC" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/disposalpipe/segment{ +/obj/item/bedsheet/medical{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/mapping_helpers/apc/cell_5k, -/obj/machinery/duct, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_a) "hEL" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -23072,14 +23011,16 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/exit/departure_lounge) -"hEZ" = ( -/obj/structure/chair/comfy/black{ +"hEV" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark_blue/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/chief_medical_officer, +/obj/machinery/station_map/directional/east, /turf/open/floor/iron/dark, -/area/station/command/meeting_room) +/area/station/hallway/primary/central) "hFk" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 @@ -23089,10 +23030,17 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "hFr" = ( -/obj/machinery/griddle, -/obj/effect/turf_decal/bot, +/obj/structure/table/reinforced, +/obj/machinery/microwave{ + pixel_y = 5 + }, /turf/open/floor/iron/kitchen, /area/station/security/prison/mess) +"hFz" = ( +/obj/structure/window/spawner/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/engineering/break_room) "hFF" = ( /obj/structure/table, /obj/item/pai_card, @@ -23117,6 +23065,21 @@ /obj/structure/reagent_dispensers/cooking_oil, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) +"hFY" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/camera/directional/east{ + c_tag = "Command - Teleporter Room"; + name = "command camera" + }, +/obj/machinery/airalarm/directional/east, +/obj/structure/rack, +/obj/item/tank/internals/oxygen, +/obj/item/clothing/mask/gas, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "hGa" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/engineering/tool, @@ -23139,7 +23102,9 @@ /turf/open/floor/wood, /area/station/security/detectives_office) "hGk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 4 + }, /turf/open/floor/catwalk_floor, /area/station/engineering/atmos) "hGm" = ( @@ -23151,40 +23116,25 @@ /turf/open/floor/engine/n2, /area/station/engineering/atmos) "hGH" = ( -/obj/structure/sign/warning/electric_shock/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/engineering/storage) +/obj/machinery/light/small/directional/north, +/obj/machinery/power/port_gen/pacman/super, +/turf/open/floor/plating, +/area/station/engineering/main) "hGS" = ( -/obj/machinery/light/small/directional/east, /obj/structure/closet/firecloset/full, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"hGZ" = ( -/obj/effect/turf_decal/trimline/red/filled/corner, -/obj/effect/turf_decal/trimline/red/line{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "hHd" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/window/brigdoor/left/directional/south{ - name = "Security Post Desk"; + name = "Security Checkpoint Desk"; req_access = list("security") }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) -"hHs" = ( -/obj/effect/spawner/random/trash/hobo_squat, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "hHw" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -23246,6 +23196,10 @@ }, /turf/open/floor/iron/white, /area/station/science/circuits) +"hHX" = ( +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/command/meeting_room) "hIb" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/spawner/random/structure/crate, @@ -23253,7 +23207,7 @@ /area/station/maintenance/port/aft) "hIe" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /turf/open/floor/iron/white, /area/station/science/xenobiology) "hIk" = ( @@ -23283,12 +23237,19 @@ /turf/open/floor/iron/dark, /area/station/security/office) "hIE" = ( -/obj/machinery/light/directional/west, /obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, +/turf/open/floor/iron/dark, /area/station/service/janitor) +"hIN" = ( +/obj/effect/turf_decal/tile/dark_blue/full, +/obj/effect/turf_decal/delivery, +/obj/machinery/camera/directional/north{ + c_tag = "Command - Bridge Deliveries"; + name = "command camera" + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/bridge) "hIU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -23296,20 +23257,32 @@ /turf/open/floor/iron/white, /area/station/science/xenobiology) "hIW" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 6 +/obj/structure/table/wood, +/obj/machinery/cassette/adv_cassette_deck{ + pixel_y = 8 + }, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) +"hJa" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/prison) +"hJb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"hJb" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/glass, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/iron, +/area/station/engineering/break_room) "hJi" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -23317,11 +23290,7 @@ /turf/open/floor/iron, /area/station/cargo/sorting) "hJr" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/simple/brown/visible{ @@ -23329,35 +23298,36 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) -"hJs" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 +"hKb" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = 6 }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/effect/turf_decal/trimline/dark_blue/line, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"hJV" = ( -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/machinery/station_map/engineering/directional/south, +/obj/item/healthanalyzer, /turf/open/floor/iron/white, -/area/station/science/research) +/area/station/medical/storage) "hKf" = ( /obj/machinery/shieldgen, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "hKj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /turf/open/floor/plating/airless, /area/station/ai_monitored/turret_protected/aisat/atmos) "hKq" = ( -/obj/structure/flora/grass/jungle/b, -/mob/living/basic/butterfly, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/flora/bush/grassy/style_random, -/turf/open/floor/grass, -/area/station/command/bridge) +/obj/machinery/camera/directional/north{ + c_tag = "Medical - Psychology Office"; + name = "medical camera"; + network = list("ss13","medbay") + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "hKs" = ( /obj/machinery/camera/directional/west{ c_tag = "AI Sat - External, Southeast"; @@ -23367,32 +23337,29 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "hKz" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/light/small/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/obj/machinery/vending/mechcomp, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured, +/area/station/medical/medbay/aft) "hKA" = ( -/obj/structure/chair/office{ +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/computer/crew{ dir = 4 }, -/obj/effect/landmark/start/librarian, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) +/turf/open/floor/iron/white, +/area/station/medical/office) "hKC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/port_gen/pacman/pre_loaded, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"hKH" = ( +/obj/structure/displaycase/trophy, +/turf/open/floor/wood, +/area/station/service/library) "hKM" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock" @@ -23403,18 +23370,34 @@ /turf/open/floor/iron/dark/textured_large, /area/station/security/processing) "hKX" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "engineering"; + name = "Engineering Blast Door" }, -/obj/structure/chair{ +/obj/machinery/door/poddoor/shutters{ + id = "engi_pass_shutters"; + name = "Engineering Shutters"; dir = 8 }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/turf/open/floor/plating, +/area/station/engineering/break_room) +"hLe" = ( +/obj/structure/rack, +/obj/item/mop, +/obj/item/reagent_containers/cup/bottle/ammonia, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/security/prison) +"hLs" = ( +/obj/machinery/computer/security/telescreen/entertainment/directional/north, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/wood, +/area/station/service/library/private) "hLt" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 9 @@ -23425,15 +23408,9 @@ /turf/open/floor/iron/dark, /area/station/science/server) "hLv" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Central Hallway, West - HoP Line"; - name = "hallway camera" - }, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/tile/dark_blue/full, /obj/effect/turf_decal/delivery/white, -/obj/machinery/light/small/directional/north, -/obj/machinery/ticket_machine/directional/north, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) "hLB" = ( /obj/effect/turf_decal/stripes/line{ @@ -23443,7 +23420,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port) "hLH" = ( @@ -23475,19 +23451,25 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/wood, /area/station/service/chapel/funeral) -"hLX" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/chair_flipped{ - dir = 8 +"hMe" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/obj/machinery/disposal/bin, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "hMn" = ( /obj/machinery/light/directional/west, -/obj/structure/chair/stool/directional/north, -/obj/item/radio/intercom/directional/west, +/obj/structure/bed/double{ + dir = 4 + }, +/obj/item/bedsheet/dorms_double{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, /turf/open/floor/wood/large, -/area/station/commons/dorms) +/area/station/commons/dorms/room1) "hMw" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, @@ -23505,43 +23487,51 @@ /turf/open/floor/iron, /area/station/command/gateway) "hMB" = ( -/obj/machinery/requests_console/directional/west{ - department = "Chapel"; - name = "Chapel Requests Console"; - assistance_requestable = 1 +/obj/machinery/camera/directional/west{ + c_tag = "Service - Chapel Office"; + name = "service camera" }, +/obj/item/radio/intercom/directional/west, /obj/structure/chair/comfy/brown{ dir = 4 }, /obj/effect/landmark/start/chaplain, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "hMD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) +/obj/machinery/duct, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/service/janitor) +"hME" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "hMJ" = ( -/obj/effect/turf_decal/tile/red/fourcorners, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 }, -/obj/machinery/firealarm/directional/south, /obj/machinery/airalarm/directional/east, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"hMW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 +/turf/open/floor/iron/dark/side{ + dir = 6 }, -/turf/open/floor/iron/white, -/area/station/medical/surgery) +/area/station/security/interrogation) "hNi" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 5 @@ -23552,20 +23542,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/breakroom) -"hNo" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/footprints, -/obj/machinery/door/airlock/maintenance, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "hNp" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -23583,21 +23559,31 @@ /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/starboard) "hNt" = ( -/obj/machinery/light/directional/north, /obj/machinery/status_display/evac/directional/north, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) -"hNB" = ( +"hNA" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/command/teleporter) +/area/station/medical/morgue) "hNJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/mob_spawn/corpse/human/assistant, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/airlock/maintenance{ + name = "Gambling Den Maintenance" + }, +/obj/machinery/duct, +/turf/open/floor/iron/dark/textured, +/area/station/service/abandoned_gambling_den) "hNM" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/effect/turf_decal/plaque{ @@ -23651,19 +23637,13 @@ /obj/effect/turf_decal/box, /turf/open/floor/iron/large, /area/station/command/gateway) -"hOn" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 10 +"hOr" = ( +/obj/structure/chair/office{ + dir = 8 }, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/newscaster/directional/north, -/obj/structure/closet/secure_closet/chemical, -/obj/item/wrench/medical, -/obj/item/radio/headset/headset_med, -/obj/item/radio/headset/headset_med, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) +/obj/effect/landmark/start/blueshield, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "hOt" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -23684,16 +23664,26 @@ /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "hPf" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/medkit/regular, +/obj/item/toy/figure/md{ + pixel_y = 15; + pixel_x = -11 + }, +/turf/open/floor/iron/white, +/area/station/medical/office) +"hPs" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/chair/stool/directional/south, +/turf/open/floor/carpet/purple, +/area/station/commons/dorms/room3) "hPx" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/door/poddoor/shutters/window{ +/obj/machinery/door/poddoor/shutters{ id = "station_away_gate"; name = "Gateway Access Shutters" }, @@ -23714,13 +23704,17 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 }, -/obj/machinery/airalarm/directional/east, +/obj/structure/reagent_dispensers/wall/peppertank/directional/east, /obj/structure/table, /obj/item/radio/off, /obj/item/crowbar/red, /obj/item/assembly/flash/handheld, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/auxiliary) +"hPC" = ( +/obj/machinery/power/floodlight, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "hPM" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, @@ -23753,53 +23747,21 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/wood, /area/station/security/detectives_office) -"hQe" = ( +"hQP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail{ - dir = 8 - }, -/obj/effect/mapping_helpers/mail_sorting/medbay/chemistry, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"hQK" = ( -/obj/structure/ghost_critter_spawn, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"hQL" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 4 - }, -/obj/structure/table, -/obj/item/stock_parts/subspace/transmitter, -/obj/item/stock_parts/subspace/transmitter, -/obj/item/stock_parts/subspace/treatment, -/obj/item/stock_parts/subspace/treatment, -/obj/item/stock_parts/subspace/treatment, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) -"hQP" = ( -/obj/structure/sign/poster/random/directional/east, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/entertainment/drugs, -/obj/effect/spawner/random/entertainment/lighter, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) -"hQZ" = ( +/area/station/medical/medbay/lobby) +"hQX" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/turf/open/floor/iron/white, +/area/station/medical/virology) "hRe" = ( /obj/machinery/light/small/directional/north, /obj/machinery/camera/directional/north{ @@ -23809,11 +23771,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"hRl" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "hRt" = ( /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ dir = 8 @@ -23822,7 +23779,7 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) "hRA" = ( -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/port/aft) @@ -23830,12 +23787,9 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/obj/structure/table/reinforced, -/obj/machinery/recharger{ - pixel_x = -7 - }, -/obj/machinery/recharger{ - pixel_x = 7 +/obj/machinery/camera/directional/east{ + c_tag = "Security - Armory, East"; + name = "security camera" }, /obj/machinery/button/door/directional/east{ id = "armory_side_access"; @@ -23843,9 +23797,11 @@ req_access = list("armory"); pixel_y = -6 }, -/obj/machinery/camera/directional/east{ - c_tag = "Security - Armory, East"; - name = "security camera" +/obj/machinery/button/door/directional/east{ + id = "armory_desk"; + name = "Armory Desk Shutters Control"; + req_access = list("armory"); + pixel_y = 6 }, /obj/machinery/button/door/directional/east{ id = "armory_window_shutters"; @@ -23854,11 +23810,13 @@ pixel_y = 6; pixel_x = 38 }, -/obj/machinery/button/door/directional/east{ - id = "armory_desk"; - name = "Armory Desk Shutters Control"; - req_access = list("armory"); - pixel_y = 6 +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = -9 + }, +/obj/machinery/recharger, +/obj/machinery/recharger{ + pixel_x = 9 }, /obj/item/toy/figure/warden{ pixel_y = 14 @@ -23866,19 +23824,16 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "hRV" = ( -/obj/machinery/vending/games, -/turf/open/floor/iron/dark/side{ - dir = 4 +/obj/structure/chair/sofa/right/maroon{ + dir = 8 }, +/turf/open/floor/iron, /area/station/commons/fitness/recreation) "hSc" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, -/area/station/medical/medbay/central) +/area/station/maintenance/department/engine) "hSi" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/stripes/line{ @@ -23898,12 +23853,17 @@ }, /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/port) +"hSp" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark/side, +/area/station/engineering/break_room) "hSr" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/two, +/obj/machinery/space_heater, /turf/open/floor/plating, -/area/station/maintenance/department/science) +/area/station/maintenance/department/science/xenobiology) "hSy" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -23912,7 +23872,7 @@ /obj/machinery/computer/prisoner/management{ dir = 4 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "hSz" = ( /obj/effect/turf_decal/trimline/green/filled/line{ @@ -23939,18 +23899,12 @@ }, /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_half{ - dir = 4 - }, +/turf/open/floor/iron/dark/smooth_half, /area/station/command/gateway) -"hTn" = ( -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "hTs" = ( /obj/structure/closet/secure_closet/personal/cabinet, /turf/open/floor/carpet/blue, -/area/station/commons/dorms) +/area/station/commons/dorms/room2) "hTx" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -23959,7 +23913,6 @@ /area/station/cargo/storage) "hTE" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /obj/machinery/meter, /turf/open/floor/plating, @@ -23971,9 +23924,9 @@ "hTS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "cmo_shutters"; - name = "CMO Office Shutters"; +/obj/machinery/door/poddoor/shutters{ + id = "cmo_office_shutters"; + name = "CMO's Office Shutters"; dir = 1 }, /turf/open/floor/plating, @@ -23987,6 +23940,7 @@ c_tag = "Arrivals - Bay 1, Lower Hallway"; name = "arrivals camera" }, +/obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "hUt" = ( @@ -23995,24 +23949,29 @@ /turf/open/floor/iron/dark/side, /area/station/commons/fitness) "hUA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/structure/easel, +/obj/item/canvas/twentythree_twentythree, +/obj/item/canvas/twentythree_nineteen, +/obj/item/canvas/nineteen_nineteen, +/turf/open/floor/wood, +/area/station/service/library/lounge) "hUQ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "bridge_blast_doors"; + name = "Bridge Access Blast Door" + }, /turf/open/floor/plating, /area/station/command/bridge) "hUS" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/machinery/airalarm/directional/south, -/obj/structure/chair{ +/obj/structure/chair/sofa/bench/left{ dir = 1 }, -/obj/effect/landmark/start/hangover, /obj/machinery/camera/autoname/directional/south, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) "hUW" = ( @@ -24023,15 +23982,11 @@ dir = 4 }, /obj/machinery/light/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/brig) -"hVl" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/medical/cryo) "hVF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24046,6 +24001,13 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) +"hWa" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/structure/closet/crate/freezer/blood, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "hWv" = ( /obj/structure/sign/poster/ripped/directional/east, /obj/structure/bed/pod, @@ -24053,24 +24015,8 @@ /obj/effect/landmark/start/mime, /turf/open/floor/carpet/black, /area/station/service/theater) -"hWx" = ( -/obj/structure/disposalpipe/junction{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "hWF" = ( -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, +/obj/effect/turf_decal/tile/green/anticorner/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold/green/visible{ dir = 1 }, @@ -24091,18 +24037,6 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/dark, /area/station/security/prison) -"hXj" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) "hXt" = ( /turf/open/floor/iron/white, /area/station/science/genetics) @@ -24110,26 +24044,32 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, -/obj/machinery/firealarm/directional/north, +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, /obj/machinery/light_switch/directional/north{ - pixel_x = -8 + pixel_x = -5 }, /obj/structure/table, /obj/machinery/cell_charger, /obj/item/stock_parts/cell/upgraded, +/obj/item/toy/figure/cargotech{ + pixel_y = 13 + }, /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/cargo/storage) -"hXU" = ( +"hXQ" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/south, /obj/structure/table, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/obj/item/crowbar/large, +/obj/item/storage/medkit/regular{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/open/floor/iron/dark/side, +/area/station/engineering/storage_shared) "hYj" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 8 @@ -24149,12 +24089,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/station/security/office) -"hYl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) "hYC" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -24170,8 +24104,13 @@ /area/station/hallway/primary/fore) "hYH" = ( /obj/structure/sign/warning/biohazard/directional/north, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/white, +/obj/machinery/camera/directional/north{ + c_tag = "Maintenance - Science Pass-through, Xenobiology Access"; + name = "maintenance camera"; + network = list("ss13","rd","xeno") + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, /area/station/maintenance/department/science) "hYM" = ( /obj/effect/turf_decal/trimline/brown/filled/line, @@ -24205,23 +24144,32 @@ /turf/closed/wall, /area/station/commons/dorms/laundry) "hZj" = ( -/obj/machinery/door/window/left/directional/north{ - name = "Labor Camp Observation"; - req_access = list("security") +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/directional/west, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/structure/rack, +/obj/item/storage/briefcase{ + pixel_x = -3; + pixel_y = 3 }, +/obj/item/storage/secure/briefcase, /turf/open/floor/iron/dark, -/area/station/security/processing) +/area/station/security/detectives_office) "hZp" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/iron/dark/side, /area/station/commons/locker) +"hZF" = ( +/obj/item/radio/intercom/directional/west, +/turf/open/floor/wood, +/area/station/service/library/lounge) "hZS" = ( -/obj/effect/turf_decal/delivery/red, +/obj/effect/turf_decal/bot_red, /obj/structure/cable, /obj/machinery/suit_storage_unit/standard_unit, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/large, /area/station/ai_monitored/command/storage/eva) "iac" = ( /obj/structure/table, @@ -24230,12 +24178,28 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"iah" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) "iap" = ( /obj/effect/turf_decal/trimline/neutral/filled/warning{ dir = 8 }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"iar" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/light/directional/south, +/obj/structure/sign/flag/nanotrasen/directional/south, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/command/heads_quarters/cmo) "iay" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 @@ -24252,6 +24216,11 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"iaD" = ( +/obj/item/radio/intercom/directional/south, +/obj/structure/closet/secure_closet/captains, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "iaE" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/light/directional/east, @@ -24259,18 +24228,12 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "iaL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, /obj/machinery/light/directional/east, /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, /obj/structure/closet/l3closet/scientist, /obj/item/extinguisher, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology/hallway) "iaT" = ( /turf/closed/wall, @@ -24281,6 +24244,19 @@ }, /turf/open/floor/iron, /area/station/science/ordnance) +"ibg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/service/library) +"ibp" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/computer/message_monitor{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "ibw" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -24305,12 +24281,13 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"icr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/mob_spawn/corpse/human/damaged, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +"ibZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "icu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -24319,8 +24296,8 @@ /area/station/command/heads_quarters/hos) "icv" = ( /obj/effect/turf_decal/bot, +/obj/machinery/status_display/evac/directional/south, /obj/machinery/power/port_gen/pacman/pre_loaded, -/obj/machinery/newscaster/directional/south, /turf/open/floor/iron/large, /area/station/engineering/gravity_generator) "icx" = ( @@ -24332,33 +24309,34 @@ /obj/structure/cable, /turf/open/space/basic, /area/station/solars/starboard/fore) -"icT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table, -/obj/item/airlock_painter/decal/tile{ - pixel_x = -5; - pixel_y = 6 - }, -/obj/item/airlock_painter{ - pixel_x = 7; - pixel_y = 5 +"icV" = ( +/obj/structure/sign/painting/library{ + pixel_x = -32 }, -/obj/item/airlock_painter/decal{ - pixel_x = 5; - pixel_y = -1 +/obj/item/radio/intercom/directional/north, +/obj/structure/table/wood, +/obj/effect/spawner/random/bureaucracy/briefcase{ + spawn_loot_count = 2; + spawn_random_offset = 1 }, -/obj/item/toner/extreme, -/obj/item/toner/extreme, -/obj/item/toner/extreme, -/obj/item/toner/large, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) +/turf/open/floor/wood, +/area/station/service/library/private) "icZ" = ( /obj/machinery/computer/mech_bay_power_console{ dir = 1 }, /turf/open/floor/iron, /area/station/cargo/warehouse) +"ide" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/machinery/status_display/evac/directional/north, +/obj/machinery/modular_computer/preset/cargochat/engineering, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/break_room) "idJ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark/side{ @@ -24378,19 +24356,10 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "iea" = ( +/obj/machinery/status_display/ai/directional/north, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) -"iej" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) "ieE" = ( /obj/structure/cable, /obj/machinery/power/solar{ @@ -24403,13 +24372,6 @@ /obj/docking_port/stationary/escape_pod, /turf/open/space/basic, /area/space) -"ieL" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/machinery/defibrillator_mount/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) "ieP" = ( /obj/effect/turf_decal/trimline/green/filled/warning, /obj/effect/turf_decal/trimline/green/warning{ @@ -24419,20 +24381,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"ifb" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/structure/chair/sofa/corp{ - dir = 8 - }, -/obj/effect/landmark/start/assistant, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) "ifj" = ( /obj/machinery/light/neon_lining{ dir = 4 @@ -24442,6 +24390,17 @@ }, /turf/open/floor/stone, /area/station/science/xenobiology) +"ifr" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/blue/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "ifC" = ( /obj/effect/turf_decal/trimline/green/filled/warning{ dir = 8 @@ -24474,6 +24433,7 @@ dir = 6 }, /obj/item/kirbyplants/random, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "igl" = ( @@ -24481,7 +24441,9 @@ dir = 1 }, /obj/effect/turf_decal/trimline/purple/line, -/obj/structure/table, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/chair/sofa/bench/right, +/obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "igm" = ( @@ -24505,11 +24467,12 @@ }, /area/station/service/theater) "ihg" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/blue/corner{ dir = 1 }, -/obj/structure/closet/emcloset, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "ihh" = ( @@ -24519,7 +24482,7 @@ "iho" = ( /obj/structure/closet/secure_closet/personal/cabinet, /turf/open/floor/wood/large, -/area/station/commons/dorms) +/area/station/commons/dorms/room1) "ihC" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/item/kirbyplants/random, @@ -24530,32 +24493,63 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) +"ihK" = ( +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/wood, +/area/station/command/meeting_room) +"ihO" = ( +/obj/structure/cable, +/obj/effect/spawner/random/trash/cigbutt, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) "ihP" = ( /obj/structure/sign/warning/rad_shelter/directional/west, /turf/open/floor/iron/dark, /area/station/security/prison) +"iib" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/light/small/directional/south, +/obj/machinery/door/window/left/directional/north{ + name = "Miscellaneous Medical Supplies"; + req_access = list("medical") + }, +/obj/structure/table/reinforced/rglass, +/obj/item/gun/syringe, +/turf/open/floor/iron/white, +/area/station/medical/storage) "iiv" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/disposal) "iix" = ( -/obj/effect/landmark/blobstart, +/obj/structure/foamedmetal, /turf/open/floor/plating, /area/station/service/hydroponics) "iiC" = ( -/obj/machinery/cryopod/prison{ - dir = 8 +/obj/machinery/camera/autoname/directional/north, +/obj/structure/closet/secure_closet/freezer/kitchen{ + req_access = null }, -/turf/open/floor/iron/dark, -/area/station/security/prison/safe) +/turf/open/floor/iron/kitchen, +/area/station/security/prison/mess) "iiE" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 4 }, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) +"iiQ" = ( +/obj/structure/chair/office, +/obj/effect/landmark/start/brig_physician, +/turf/open/floor/iron/white, +/area/station/security/medical) +"iiR" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "ija" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -24563,6 +24557,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/cable, /obj/machinery/door/airlock/engineering/glass{ name = "Server Room" }, @@ -24570,16 +24565,9 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /turf/open/floor/iron/dark/textured_large, /area/station/tcommsat/computer) -"ijg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "ijj" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -24591,58 +24579,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) -"ijl" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/left/directional/east{ - name = "Apothecary Desk"; - req_access = list("pharmacy") - }, -/obj/machinery/door/window/right/directional/west{ - name = "Apothecary Desk" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "apothecary_shutters"; - name = "Apothecary Shutters"; - dir = 8 - }, -/obj/structure/desk_bell{ - pixel_x = -6 - }, -/turf/open/floor/iron, -/area/station/medical/pharmacy) "ijn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Construction Area Maintenance" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, +/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "ijp" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/engine/plasma, /area/station/engineering/atmos) "ijG" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2, /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"ijI" = ( -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "ijM" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 @@ -24657,11 +24610,6 @@ /obj/effect/decal/cleanable/blood/gibs/old, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"ijZ" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "ika" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -24669,17 +24617,31 @@ /obj/machinery/computer/apc_control{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/command/heads_quarters/ce) +"ike" = ( +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/structure/table/reinforced, +/obj/item/pinpointer/nuke, +/obj/item/melee/baton, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "iki" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 4 }, -/obj/structure/closet/toolcloset, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/dark/side{ - dir = 8 + dir = 4 }, -/area/station/engineering/storage_shared) +/area/station/command/heads_quarters/ce) "ikm" = ( /obj/effect/turf_decal/box, /obj/effect/turf_decal/stripes/corner, @@ -24690,15 +24652,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/holopad, -/turf/open/floor/iron/large, +/turf/open/floor/iron/white/smooth_large, /area/station/science/auxlab) "iko" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/obj/machinery/shower/directional/west, -/turf/open/floor/iron/white/textured, -/area/station/medical/medbay/central) +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "ikp" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ @@ -24710,9 +24672,11 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, -/obj/machinery/firealarm/directional/north, +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/north{ - pixel_x = 8 + pixel_x = 5 }, /obj/structure/table, /obj/item/paper_bin, @@ -24722,12 +24686,29 @@ dir = 1 }, /area/station/cargo/office) +"ikt" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/obj/item/hand_tele{ + pixel_x = -19 + }, +/obj/item/melee/chainofcommand{ + pixel_x = -15 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "ikD" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 }, /turf/open/floor/iron/white, /area/station/science/genetics) +"ikP" = ( +/obj/structure/sign/poster/random/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "ikU" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 @@ -24774,35 +24755,16 @@ }, /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/central) -"ilj" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/table/glass, -/obj/item/healthanalyzer, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/gloves/latex, -/obj/item/storage/box/beakers, -/obj/item/storage/box/syringes{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/box/tube{ - pixel_y = 4; - pixel_x = -2 - }, -/obj/machinery/newscaster/directional/south, -/obj/item/storage/box/monkeycubes/mousecubes, -/obj/item/storage/box/monkeycubes/mousecubes{ - pixel_x = 6; - pixel_y = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) "iln" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) +"ilu" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "ilE" = ( /obj/structure/chair{ dir = 1 @@ -24832,13 +24794,13 @@ /turf/open/floor/iron/dark, /area/station/security/office) "ilX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, /turf/open/floor/wood, -/area/station/command/heads_quarters/captain) +/area/station/medical/psychology) "imb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -24853,26 +24815,6 @@ }, /turf/open/floor/engine, /area/station/science/ordnance/burnchamber) -"imn" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/requests_console/directional/east{ - assistance_requestable = 1; - department = "Engineering"; - name = "Engineering Requests Console"; - supplies_requestable = 1 - }, -/obj/structure/table, -/obj/machinery/light/small/directional/east, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/construction/plumbing/engineering, -/obj/item/plunger, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage_shared) "imo" = ( /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/dark/side{ @@ -24895,23 +24837,31 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/atmos) "imx" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 1 }, /obj/machinery/meter, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"imB" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/west, +/obj/machinery/space_heater, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "imG" = ( -/obj/machinery/light/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "imH" = ( /obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/cable, -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 + }, /obj/machinery/light_switch/directional/south{ - pixel_x = -8 + pixel_x = -5 }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/auxiliary) @@ -24935,34 +24885,46 @@ /turf/open/floor/iron/white, /area/station/science/research) "imV" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "ina" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 }, -/obj/machinery/telecomms/bus/preset_four, -/turf/open/floor/engine/telecomms, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner, +/obj/machinery/light/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) "inn" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm/directional/east, /obj/structure/cable, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/department/electrical) "ins" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark/smooth_large, +/area/station/hallway/secondary/entry) +"inA" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical{ + desc = "Danger. Very robust. Did someone change this?" + }, +/obj/item/crowbar/large{ + desc = "Sic semper tyrannis."; + name = "The One Free Engineer's crowbar" + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "inB" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, /turf/open/floor/iron/dark, @@ -24989,43 +24951,43 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /turf/open/floor/plating, /area/station/engineering/atmos) -"ioi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +"inV" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "iol" = ( /obj/structure/flora/bush/fullgrass/style_random, /obj/structure/flora/bush/jungle/c/style_random, /turf/open/floor/grass, /area/station/hallway/primary/aft) "iom" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 6 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/wood, +/area/station/service/library) "ioq" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/structure/table_or_rack, +/obj/item/storage/box/lights/mixed, +/obj/effect/spawner/random/entertainment/plushie, /turf/open/floor/plating, -/area/station/maintenance/department/science) +/area/station/maintenance/department/science/xenobiology) "ior" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/break_room) "ioJ" = ( -/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm/directional/south, /obj/structure/table, +/obj/machinery/cell_charger, /obj/item/stock_parts/cell/high, -/obj/machinery/airalarm/directional/south, /turf/open/floor/iron, /area/station/engineering/engine_smes) "ioZ" = ( @@ -25033,30 +24995,27 @@ dir = 1 }, /obj/effect/spawner/random/vending/snackvend, -/obj/structure/sign/directions/cryo/directional/north{ - pixel_y = 23 - }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) "ipb" = ( -/obj/effect/turf_decal/box, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/prison/garden) +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/security/prison) "ipd" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/tile/dark_blue/full, /obj/machinery/light/small/directional/west, -/obj/machinery/camera/directional/west{ - c_tag = "AI - Upload Access" +/obj/machinery/camera/motion/directional/west{ + c_tag = "AI - Upload Access"; + network = list("ss13","aiupload"); + name = "ai camera" }, /obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/box, +/obj/machinery/holopad, /obj/structure/cable, -/obj/machinery/recharge_station, -/obj/effect/landmark/start/cyborg, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/turret_protected/ai_upload_foyer) "ipj" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ @@ -25066,21 +25025,36 @@ /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) "ipp" = ( -/turf/open/floor/wood, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/window/spawner/directional/north, +/obj/machinery/chem_master, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "ipt" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, /obj/structure/cable, -/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen{ + desc = "Used for monitoring medbay to ensure patient safety."; + name = "Medbay Monitor"; + network = list("medbay") + }, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/security/checkpoint/medical) "ipC" = ( +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, /obj/structure/chair{ dir = 8 }, -/obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark/side{ dir = 4 }, @@ -25101,11 +25075,13 @@ /area/station/maintenance/starboard/fore) "ipH" = ( /obj/machinery/light/small/directional/east, -/obj/structure/filingcabinet, /obj/machinery/requests_console/directional/east{ department = "Law Office"; name = "Law Office Requests Console" }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, +/obj/structure/filingcabinet, /turf/open/floor/wood, /area/station/service/lawoffice) "ipL" = ( @@ -25140,28 +25116,9 @@ "iqi" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/machinery/suit_storage_unit/industrial/loader, /turf/open/floor/iron, /area/station/cargo/warehouse) -"iqm" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/structure/table/glass, -/obj/item/emergency_bed{ - pixel_y = 6 - }, -/obj/item/emergency_bed{ - pixel_y = 11 - }, -/obj/item/emergency_bed{ - pixel_y = 13 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/medical/paramedic) "iqq" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 4 @@ -25172,16 +25129,6 @@ /obj/effect/landmark/start/warden, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"iqs" = ( -/obj/effect/turf_decal/trimline/brown/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/machinery/station_map/engineering/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) "iqD" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -25195,29 +25142,41 @@ }, /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/port) +"iqG" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 8 + }, +/obj/effect/mapping_helpers/mail_sorting/medbay/cmo_office, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "iqM" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/line{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "iqN" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/trimline/dark_blue/line, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) -"iqP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) +"iqP" = ( +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) "iqQ" = ( @@ -25225,28 +25184,6 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/wood, /area/station/service/chapel/funeral) -"iqR" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/table/glass, -/obj/item/book/manual/wiki/infections{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/item/book/manual/wiki/surgery{ - pixel_x = -4; - pixel_y = 3 - }, -/obj/item/book/manual/wiki/medicine{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/book/manual/wiki/chemistry{ - pixel_x = 5 - }, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/command/heads_quarters/cmo) "iqS" = ( /obj/structure/closet/crate, /obj/item/clothing/under/color/lightpurple, @@ -25260,28 +25197,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"irg" = ( -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/floor/grass, -/area/station/command/bridge) -"irm" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/surgery) -"irn" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ +"irp" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/cryopod/prison{ dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, /turf/open/floor/iron/dark/side{ dir = 8 }, -/area/station/engineering/storage/tech) +/area/station/security/prison/safe) "irt" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 @@ -25320,14 +25244,29 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/office) +"isn" = ( +/obj/machinery/light/directional/north, +/obj/structure/sign/painting/library{ + pixel_y = 32 + }, +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/station/service/library) "isM" = ( -/obj/machinery/status_display/evac/directional/south, /obj/structure/easel, /obj/item/canvas/twentythree_twentythree, /obj/item/canvas/twentythree_nineteen, /obj/item/canvas/twentythree_twentythree, /turf/open/floor/iron/dark/side, /area/station/commons/fitness/recreation) +"isR" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/north, +/mob/living/basic/chicken, +/turf/open/floor/grass, +/area/station/service/hydroponics) "ita" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -25335,17 +25274,25 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"itd" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/iron/large, +/area/station/security/prison/safe) "itm" = ( +/obj/effect/turf_decal/siding/wood, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, /obj/structure/table, /obj/machinery/fax{ fax_name = "Head of Personnel's Office"; name = "Head of Personnel's Fax Machine" }, +/obj/machinery/airalarm/directional/north, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) "itv" = ( @@ -25366,7 +25313,7 @@ /area/station/maintenance/disposal/incinerator) "itB" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "itE" = ( @@ -25379,47 +25326,45 @@ /turf/open/floor/iron/white, /area/station/science/lab) "itK" = ( -/obj/machinery/light/built/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "itL" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Engineering Storage Maintenance" + }, +/obj/structure/disposalpipe/segment, /obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/obj/effect/spawner/random/trash/garbage, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/engineering/storage) "itM" = ( /obj/machinery/camera/directional/east{ c_tag = "Telecomms Monitoring"; network = list("tcomms") }, -/obj/structure/tank_holder/oxygen, /turf/open/floor/iron/dark/side{ dir = 5 }, /area/station/tcommsat/computer) "itN" = ( /obj/machinery/light_switch/directional/south{ - pixel_x = -8 + pixel_x = -5 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 }, -/obj/machinery/firealarm/directional/south, /obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark/side, /area/station/commons/dorms) -"itU" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "itV" = ( /obj/effect/turf_decal/bot_white/right, /turf/open/floor/plating/airless, @@ -25437,30 +25382,56 @@ }, /turf/open/floor/wood, /area/station/service/lawoffice) +"iue" = ( +/obj/machinery/status_display/supply{ + pixel_x = -32 + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 7 + }, +/obj/item/stamp/head/qm{ + pixel_x = 8; + pixel_y = 12 + }, +/obj/item/stamp{ + pixel_x = 8; + pixel_y = 6 + }, +/obj/item/stamp/denied{ + pixel_x = 8 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/qm) +"iuj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "ium" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "cell_pub_shutters"; - name = "Security Shutters"; - dir = 1 + name = "Security Shutters" }, /turf/open/floor/plating, /area/station/security/brig) "iuo" = ( +/obj/effect/spawner/random/structure/girder, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) +"iuq" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/obj/machinery/door/airlock/external{ - name = "External Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "iuu" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -25470,6 +25441,16 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) +"iuy" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) "iuF" = ( /obj/machinery/light/directional/south, /obj/machinery/chem_master, @@ -25497,9 +25478,9 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "iuJ" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/tile/dark_blue/full, /obj/effect/turf_decal/bot_white, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) "iuK" = ( /obj/effect/turf_decal/tile/blue/fourcorners, @@ -25512,22 +25493,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"iuQ" = ( -/obj/machinery/computer/atmos_alert, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/engineering/main) -"iuR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/sign/warning/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/shower/directional/east, -/turf/open/floor/iron/white/textured, -/area/station/medical/virology) "iuT" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance/two, @@ -25535,11 +25500,8 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "iuU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/telecomms/server/presets/supply, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/server/presets/security, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) "ivb" = ( /obj/effect/turf_decal/stripes/line{ @@ -25555,9 +25517,10 @@ /obj/machinery/door/window/left/directional/north{ name = "Public Autolathe" }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "cargo_desk"; - name = "Cargo Desk Shutters" + name = "Cargo Desk Shutters"; + dir = 1 }, /turf/open/floor/iron/dark/textured, /area/station/cargo/office) @@ -25578,14 +25541,11 @@ dir = 8 }, /obj/machinery/camera/directional/north{ - c_tag = "Hallway - Central North" + c_tag = "Hallway - Central, Northwest"; + name = "hallway camera" }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"ivi" = ( -/obj/structure/displaycase/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "ivj" = ( /obj/effect/turf_decal/stripes/end, /obj/structure/sign/warning/electric_shock/directional/south, @@ -25598,6 +25558,7 @@ "ivl" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/camera/autoname/directional/south, +/obj/structure/extinguisher_cabinet/directional/south, /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) @@ -25616,13 +25577,6 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/atmos) -"ivt" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "ivH" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/effect/turf_decal/plaque{ @@ -25630,25 +25584,20 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"ivM" = ( -/obj/structure/closet/crate/solarpanel_small, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/engineering/main) "ivS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "iwa" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 + dir = 10 }, -/obj/structure/cable, -/obj/machinery/computer/station_alert{ - dir = 4 +/obj/machinery/suit_storage_unit/ce, +/turf/open/floor/iron/dark/side{ + dir = 10 }, -/turf/open/floor/iron, /area/station/command/heads_quarters/ce) "iwf" = ( /obj/structure/table, @@ -25701,6 +25650,18 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"iwW" = ( +/obj/machinery/button/door/directional/east{ + id = "med_break_bathroom"; + name = "Bathroom Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4; + pixel_y = 6 + }, +/obj/machinery/shower/directional/north, +/obj/structure/drain, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) "iwZ" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -25714,13 +25675,12 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"ixc" = ( -/obj/structure/disposalpipe/junction{ +"ixk" = ( +/obj/effect/turf_decal/box/corners{ dir = 1 }, -/obj/structure/chair/wood, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "ixw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -25728,16 +25688,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/carpet/green, /area/station/commons/locker) -"ixC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) "ixJ" = ( /obj/machinery/camera/autoname/directional/west, /obj/item/storage/secure/safe/directional/west, @@ -25747,6 +25697,13 @@ /obj/item/computer_disk/ordnance, /turf/open/floor/iron/vaporwave, /area/station/command/heads_quarters/rd) +"ixK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "iya" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -25761,84 +25718,43 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, /turf/open/floor/iron/textured, /area/station/engineering/storage) -"iyc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "aisat-pathatmos-maint-passthrough" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/department/engine/atmos) -"iye" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"iyf" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "iym" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/structure/sign/warning/no_smoking/directional/south, -/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/newscaster/directional/east, +/obj/structure/closet/secure_closet/chief_medical, +/obj/item/screwdriver, +/obj/item/clothing/head/costume/nursehat, /turf/open/floor/iron/dark, -/area/station/hallway/primary/central) -"iyt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/station/command/heads_quarters/cmo) +"iyC" = ( +/obj/effect/turf_decal/box/corners, +/obj/machinery/camera/directional/south{ + c_tag = "Medical - Chemistry Factory, South"; + name = "medical camera"; + network = list("ss13","medbay") }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"iyy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/ghost_critter_spawn, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/obj/machinery/chem_master, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "iyE" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 9 }, /obj/effect/turf_decal/trimline/yellow/corner, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"iyG" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/virology/glass{ - name = "Isolation A" +/turf/open/floor/iron/dark/side{ + dir = 9 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, -/turf/open/floor/iron/white/textured, -/area/station/medical/virology) +/area/station/hallway/primary/aft) "iyI" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) "iyL" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, @@ -25846,16 +25762,16 @@ /obj/item/toy/figure/borg, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"iyZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +"iza" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 +/obj/machinery/firealarm/directional/north, +/obj/machinery/light_switch/directional/north{ + pixel_x = 8 }, -/obj/item/radio/intercom/directional/west, /turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/area/station/medical/virology) "izg" = ( /obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -25863,8 +25779,9 @@ }, /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/obj/machinery/camera/autoname/directional/north{ - dir = 9 +/obj/machinery/camera/directional/north{ + c_tag = "Hallway - West, Western End"; + name = "hallway camera" }, /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, @@ -25873,10 +25790,50 @@ /obj/structure/water_source/puddle, /turf/open/floor/grass, /area/station/hallway/primary/central) +"izy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor/left/directional/east{ + name = "Blueshield Desk"; + req_access = list("captain") + }, +/obj/machinery/door/window/right/directional/west{ + name = "Reception" + }, +/obj/machinery/door/poddoor/shutters{ + id = "bs_desk"; + name = "Desk Shutters"; + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/blueshield) +"izQ" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/light/small/directional/west, +/obj/structure/sign/nanotrasen{ + pixel_x = -32 + }, +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "izU" = ( -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron, +/turf/open/floor/glass/reinforced, /area/station/engineering/main) +"izX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, +/obj/structure/table, +/turf/open/floor/stone, +/area/station/smithing) "iAb" = ( /obj/effect/turf_decal/bot, /turf/open/floor/engine, @@ -25885,33 +25842,27 @@ /obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron/dark/side, /area/station/cargo/lobby) -"iAn" = ( +"iAo" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/structure/chair/sofa/bench/left{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"iAv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/engineering{ - name = "Construction Area" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/landmark/navigate_destination/common/construction, -/turf/open/floor/plating, -/area/station/construction) -"iAo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/turf/open/floor/iron/white, +/area/station/medical/chemistry) +"iAK" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/duct, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) -"iAG" = ( -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/area/station/medical/exam_room) "iAS" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -25919,34 +25870,37 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/office) -"iAU" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) -"iBl" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/obj/machinery/light_switch/directional/south{ - pixel_x = 5 - }, -/obj/machinery/firealarm/directional/south{ - pixel_x = -5 +"iAZ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/structure/table, -/obj/machinery/recharger{ - pixel_y = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Captain's Quarters" }, +/obj/effect/mapping_helpers/airlock/access/all/command/captain, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/captain/private) +"iBc" = ( +/obj/machinery/vending/coffee, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) +/area/station/command/bridge) +"iBi" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "iBo" = ( /obj/structure/reagent_dispensers/plumbed{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/security/prison) "iBz" = ( /obj/machinery/light/small/directional/west, @@ -25971,18 +25925,6 @@ }, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) -"iCo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"iCv" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/medical_all, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "iCB" = ( /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, @@ -25992,27 +25934,9 @@ /obj/structure/sign/departments/engineering/directional/north, /turf/open/space/basic, /area/space/nearstation) -"iCW" = ( -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/green/corner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"iDb" = ( -/obj/structure/reagent_dispensers/plumbed{ - dir = 8 +"iDb" = ( +/obj/structure/reagent_dispensers/plumbed{ + dir = 8 }, /turf/open/floor/plating, /area/station/maintenance/port/fore) @@ -26021,12 +25945,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/maintenance/port/fore) -"iDj" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) "iDt" = ( /obj/structure/cable, /turf/open/floor/iron/white, @@ -26036,25 +25954,6 @@ /obj/structure/cable, /turf/open/floor/plating/airless, /area/space/nearstation) -"iDE" = ( -/obj/structure/sign/departments/medbay/alt/directional/east, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"iDK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/bed, -/obj/item/bedsheet/medical, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) "iDN" = ( /obj/machinery/camera/directional/north{ c_tag = "AI Sat - External, South"; @@ -26063,8 +25962,16 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"iEa" = ( -/obj/effect/spawner/random/vending/colavend, +"iDY" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating, +/area/station/engineering/main) +"iEM" = ( +/obj/structure/disposalpipe/junction/flip, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/command/bridge) "iEO" = ( @@ -26081,33 +25988,11 @@ /obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, /turf/open/floor/iron/dark/textured, /area/station/service/hydroponics) -"iEZ" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/obj/structure/table/reinforced, -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) "iFb" = ( /obj/machinery/light/small/directional/east, /obj/structure/sign/warning/rad_shelter/directional/east, /turf/open/floor/iron/dark, /area/station/security/prison) -"iFj" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"iFo" = ( -/obj/item/kirbyplants/random, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/wood, -/area/station/security/prison/rec) "iFw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26130,78 +26015,50 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/service{ +/obj/machinery/door/airlock/service/glass{ name = "Kitchen Counter" }, /obj/effect/mapping_helpers/airlock/access/all/service/kitchen, /turf/open/floor/iron/dark/textured, /area/station/service/kitchen) "iFK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/chair/stool/bar/directional/south, /turf/open/floor/wood, -/area/station/maintenance/starboard/fore) +/area/station/service/abandoned_gambling_den) "iFL" = ( -/obj/machinery/requests_console/directional/south{ - department = "Bar"; - name = "Bar Requests Console"; - supplies_requestable = 1 - }, -/obj/structure/table, -/obj/item/book/manual/wiki/barman_recipes{ - pixel_y = 4 - }, -/obj/item/storage/box/drinkingglasses{ - pixel_x = -6 - }, -/obj/item/storage/box/drinkingglasses{ - pixel_x = 6 +/obj/machinery/light/small/directional/south, +/obj/machinery/newscaster/directional/south, +/obj/structure/disposalpipe/trunk{ + dir = 4 }, +/obj/machinery/disposal/bin, /turf/open/floor/wood, /area/station/service/bar) "iFN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/science/ordnance) -"iGf" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/engine, -/area/station/medical/cryo) -"iGh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/three, +"iFR" = ( +/obj/structure/table, +/obj/item/canvas/twentythree_nineteen, +/obj/item/canvas/nineteen_nineteen, +/obj/item/storage/crayons, +/obj/item/storage/crayons, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"iGj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "iGm" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/item/radio/intercom/directional/west{ - broadcasting = 1; - frequency = 1447; - listening = 0; - name = "AI Private Channel" +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 }, -/obj/machinery/flasher/directional/west{ - id = "AI"; - pixel_y = -9 +/obj/machinery/light/directional/south, +/obj/structure/sign/directions/cryo/directional/south{ + dir = 4; + pixel_y = -23 }, /turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) +/area/station/hallway/primary/port) "iGp" = ( /obj/machinery/newscaster/directional/west, /obj/structure/table/reinforced, @@ -26221,7 +26078,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "iGG" = ( @@ -26244,6 +26100,11 @@ }, /turf/open/floor/iron/dark, /area/station/security/evidence) +"iHb" = ( +/obj/effect/turf_decal/box, +/obj/machinery/holopad, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/prison/garden) "iHe" = ( /obj/machinery/light/small/directional/south, /obj/machinery/camera/autoname/directional/south, @@ -26251,19 +26112,23 @@ /turf/open/floor/wood/large, /area/station/security/prison/safe) "iHk" = ( -/obj/item/radio/intercom/directional/south, -/obj/structure/table/wood, -/obj/item/storage/photo_album/library, -/obj/item/taperecorder, -/obj/item/camera, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "iHC" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 }, /turf/open/floor/iron/white, /area/station/science/circuits) +"iHJ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/item/radio/intercom/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "iHO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26288,15 +26153,6 @@ /obj/effect/landmark/start/cyborg, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/satellite) -"iId" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "iIh" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/supply) @@ -26309,19 +26165,9 @@ /obj/structure/sign/departments/security/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"iIr" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/effect/turf_decal/stripes/box, -/obj/machinery/rnd/production/techfab/department/medical, -/turf/open/floor/iron/white, -/area/station/medical/storage) "iIy" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -26333,57 +26179,50 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) +"iID" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "iIF" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"iII" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/sign/poster/official/no_erp/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"iIZ" = ( +/turf/open/floor/iron/dark, +/area/station/service/abandoned_gambling_den) +"iIX" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 10 }, -/obj/machinery/defibrillator_mount/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/iv_drip, /turf/open/floor/iron/white, /area/station/medical/exam_room) -"iJc" = ( -/obj/effect/spawner/random/engineering/material_cheap, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"iJl" = ( +"iJa" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/structure/rack, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/mask/gas{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/gas, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/effect/mapping_helpers/apc/cell_5k, -/obj/item/tank/internals/oxygen/yellow{ - pixel_x = 5; - pixel_y = -3 + dir = 1 }, +/obj/machinery/light/small/directional/north, +/obj/item/radio/intercom/directional/north, +/obj/structure/table, +/obj/item/crowbar/red, /turf/open/floor/iron/dark/side{ - dir = 8 + dir = 1 }, /area/station/engineering/break_room) +"iJc" = ( +/obj/effect/spawner/random/engineering/material_cheap, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "iJp" = ( -/obj/structure/reagent_dispensers/watertank, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, /turf/open/floor/plating, -/area/station/maintenance/department/security/brig) +/area/station/maintenance/starboard/fore) "iJv" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -26408,7 +26247,6 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/chair{ dir = 1 }, @@ -26427,38 +26265,33 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"iJR" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/machinery/disease2/centrifuge, -/turf/open/floor/iron/white, -/area/station/medical/virology) "iJX" = ( -/obj/machinery/airalarm/directional/west, -/obj/structure/kitchenspike, +/obj/machinery/airalarm/directional/north, +/obj/effect/mapping_helpers/airalarm/all_access, +/obj/effect/mapping_helpers/airalarm/tlv_cold_room, +/obj/structure/table, +/obj/item/wrench, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) +"iJZ" = ( +/obj/structure/cable, +/obj/structure/window/spawner/directional/south, +/obj/structure/filingcabinet/security, +/turf/open/floor/iron, +/area/station/engineering/break_room) "iKf" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/small/directional/west, -/obj/structure/rack, -/obj/item/storage/briefcase{ - pixel_x = -3; - pixel_y = 3 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 }, -/obj/item/storage/secure/briefcase, +/obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark, -/area/station/security/detectives_office) -"iKB" = ( -/obj/machinery/gibber, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) +/area/station/security/processing) "iKJ" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/engine/atmos) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "iKL" = ( /obj/effect/turf_decal/trimline/brown/line{ dir = 8 @@ -26469,25 +26302,29 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"iKN" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood, +/area/station/service/library/private) "iKO" = ( -/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron/dark, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/checker, /area/station/security/prison/shower) -"iKY" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/glass, -/obj/item/clothing/suit/apron/surgical, -/obj/item/clothing/glasses/hud/health, -/turf/open/floor/iron/white, -/area/station/medical/surgery) -"iLb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/firecloset/full, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +"iKZ" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/shower/directional/east, +/obj/machinery/light/small/built/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/service/abandoned_gambling_den) "iLe" = ( /obj/machinery/light/directional/south, /obj/structure/sign/poster/official/no_erp/directional/south, @@ -26511,50 +26348,38 @@ id = "dorm_5"; name = "Dorm Bolt Control"; normaldoorcontrol = 1; - specialfunctions = 4 + specialfunctions = 4; + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = 5; + pixel_y = 34 }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/structure/chair/stool/directional/south, /turf/open/floor/wood, -/area/station/commons/dorms) +/area/station/commons/dorms/room5) "iLr" = ( +/obj/machinery/light/small/directional/north, /obj/machinery/camera/directional/north{ c_tag = "Arrivals - Escape Pod Bay 1"; name = "arrivals camera" }, +/obj/structure/chair, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/entry) "iLs" = ( /obj/machinery/airalarm/directional/east, /obj/structure/table, +/obj/item/stack/sheet/iron/fifty{ + pixel_y = 6 + }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) -"iLu" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/right/directional/east{ - name = "Medbay Front Desk"; - req_access = list("medical") - }, -/obj/machinery/door/window/left/directional/west{ - name = "Medbay Front Desk" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "medbay_desk_shutters"; - name = "Medbay Front Desk Shutters"; - dir = 4 - }, -/obj/structure/desk_bell{ - pixel_x = -6 - }, -/obj/item/paper_bin{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/pen{ - pixel_x = 3; - pixel_y = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) "iLB" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -26565,18 +26390,6 @@ dir = 4 }, /area/station/service/chapel) -"iLZ" = ( -/turf/closed/wall/r_wall, -/area/station/science/research/abandoned) -"iMj" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/machinery/disease2/diseaseanalyser, -/obj/machinery/airalarm/directional/west, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/virology) "iMo" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 @@ -26596,7 +26409,7 @@ "iMt" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "iMx" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ @@ -26619,6 +26432,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/gravity_generator) +"iMG" = ( +/obj/effect/turf_decal/tile/dark_blue/full, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/bridge) "iMN" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 8 @@ -26626,8 +26444,10 @@ /obj/effect/turf_decal/trimline/dark_blue/line{ dir = 4 }, -/obj/machinery/airalarm/directional/west, -/obj/machinery/camera/autoname/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Hallway - Central, East"; + name = "hallway camera" + }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "iMQ" = ( @@ -26645,8 +26465,23 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/security/prison/shower) +"iMR" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/break_room) "iNd" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/north, /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, /area/station/maintenance/department/security/brig) @@ -26659,15 +26494,17 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"iNx" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/vending/tool, -/turf/open/floor/iron/dark/side{ +"iNl" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/atmos/office) +"iNq" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, -/area/station/engineering/storage_shared) +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "iNG" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/engineering/tank, @@ -26688,10 +26525,13 @@ /turf/open/floor/iron/dark, /area/station/security/brig) "iNS" = ( -/obj/structure/sign/poster/contraband/random/directional/south, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/structure/window/spawner/directional/south, +/obj/machinery/chem_mass_spec, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "iNT" = ( /obj/effect/turf_decal/tile/purple/opposingcorners{ dir = 1 @@ -26702,19 +26542,26 @@ /turf/open/floor/iron/checker, /area/station/science/lab) "iNY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Security"; - location = "EVA2" +/obj/structure/table/wood, +/obj/item/storage/photo_album{ + pixel_y = 2 }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/fore) +/obj/item/clothing/head/helmet/skull{ + desc = "The skull of a Syndicate nuclear operatives commander flayed and displayed as a trophy."; + name = "Skull Trophy"; + pixel_y = 4 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "iNZ" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/door/airlock/research/glass{ - name = "Freeze Chamber Exterior Airlock" + name = "Freeze Chamber Exterior Airlock"; + id_tag = "ord_freezer_bolt" }, /obj/effect/mapping_helpers/airlock/access/all/science/ordnance, /obj/effect/mapping_helpers/airlock/locked, @@ -26755,22 +26602,30 @@ /obj/effect/landmark/start/detective, /turf/open/floor/carpet/red, /area/station/security/detectives_office) +"iOs" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "iOC" = ( /obj/effect/turf_decal/stripes/line, +/obj/structure/cable/multilayer/connected, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/multilayer/connected, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) "iOG" = ( -/obj/machinery/light/small/built/directional/south, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"iOJ" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/line{ + dir = 8 + }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) +"iOJ" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 }, @@ -26813,15 +26668,49 @@ dir = 8 }, /area/station/service/hydroponics) -"iPu" = ( +"iOY" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/machinery/camera/directional/west{ + c_tag = "Medical - Pathology, Hallway, West"; + name = "medical camera"; + network = list("ss13","medbay") + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"iOZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/ghost_critter_spawn, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"iPi" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/west, +/obj/machinery/status_display/evac/directional/west, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) +"iPm" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) +"iPu" = ( /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 6 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/red, +/area/station/security/courtroom) "iPQ" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted, /obj/structure/chair/sofa/bench/left{ @@ -26829,6 +26718,23 @@ }, /turf/open/floor/iron/dark, /area/station/security/processing) +"iPZ" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 6 + }, +/obj/machinery/camera/directional/east{ + c_tag = "Medical - Pathology, Hallway, East"; + network = list("ss13","medbay"); + name = "medical camera" + }, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/box/monkeycubes, +/obj/item/toy/figure/virologist{ + pixel_y = 13; + pixel_x = -9 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "iQd" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/maintenance, @@ -26847,36 +26753,21 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "iQE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"iQM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command/glass{ - name = "Chief Medical Officer's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/cmo, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/white/textured, -/area/station/command/heads_quarters/cmo) +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/storage) "iQR" = ( /obj/effect/turf_decal/box, -/obj/structure/disposalpipe/junction/flip{ - dir = 2 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/structure/disposalpipe/segment, /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) @@ -26884,13 +26775,18 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/machinery/airalarm/directional/south, /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/department/cargo) "iRe" = ( -/obj/structure/bookcase/random/nonfiction, -/turf/open/floor/wood, -/area/station/service/library) +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "iRl" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrous_output{ dir = 8 @@ -26899,41 +26795,31 @@ /area/station/engineering/atmos) "iRq" = ( /obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "iRs" = ( /obj/machinery/light/directional/east, +/obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron/dark/side{ dir = 4 }, /area/station/commons/fitness/recreation) -"iRv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/airlock/engineering/glass{ - name = "Engineering Storage" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable/layer1, -/turf/open/floor/iron/textured, -/area/station/engineering/storage) "iRy" = ( /obj/effect/spawner/random/structure/chair_flipped{ dir = 1 }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"iRJ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) "iRQ" = ( /obj/effect/turf_decal/box, /obj/effect/turf_decal/stripes/corner, @@ -26946,6 +26832,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/atmos) +"iRY" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance/three, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "iSa" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -26964,10 +26855,27 @@ /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 8 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) +"iSp" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Command - Bridge, East"; + name = "command camera" + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "iSr" = ( -/obj/effect/decal/cleanable/glass, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/keycard_auth/directional/south, +/obj/machinery/pdapainter/medbay, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) +"iSD" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Air to Distro"; + target_pressure = 250 + }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "iSI" = ( @@ -26975,38 +26883,37 @@ /turf/open/floor/wood, /area/station/commons/vacant_room/office) "iSM" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 }, -/obj/machinery/light/directional/south, -/obj/vehicle/ridden/wheelchair{ - dir = 1 +/obj/effect/turf_decal/trimline/blue/line{ + dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/obj/structure/sign/departments/medbay/alt/directional/east, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "iTg" = ( /obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/chair, +/obj/structure/chair/sofa/bench, /obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"iTi" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 4 - }, -/obj/structure/sign/warning/secure_area/directional/west, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "iTo" = ( /turf/open/floor/iron/chapel{ dir = 4 }, /area/station/service/chapel) +"iUc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/iron, +/area/station/engineering/break_room) "iUf" = ( /obj/structure/chair/sofa/bench/left{ dir = 4 @@ -27021,11 +26928,12 @@ /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) "iUt" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) +/obj/machinery/medipen_refiller, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "iUx" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -27039,7 +26947,6 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "iUz" = ( -/obj/structure/sign/departments/medbay/alt/directional/west, /turf/open/floor/iron/dark, /area/station/command/bridge) "iUB" = ( @@ -27049,57 +26956,69 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/obj/structure/cable, /obj/machinery/airalarm/directional/west, +/obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/gravity_generator) +"iUQ" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/structure/chair_flipped{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "iVh" = ( +/obj/machinery/light/directional/south, +/obj/structure/sign/poster/contraband/missing_gloves/directional/east, +/obj/structure/cable, /obj/machinery/power/terminal{ dir = 8 }, -/obj/structure/sign/poster/contraband/missing_gloves/directional/east, -/obj/machinery/light/directional/south, -/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/electrical) "iVj" = ( -/obj/machinery/light/directional/east, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - pixel_x = -5; - pixel_y = 3 +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 }, -/turf/open/floor/wood, -/area/station/service/library) +/turf/open/floor/iron, +/area/station/engineering/main) "iVq" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 }, /turf/closed/wall/r_wall, /area/station/security/holding_cell) -"iVC" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/window/brigdoor/left/directional/east{ - name = "Chief Medical Officer's Desk"; - req_access = list("cmo") +"iVx" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"iVH" = ( +/obj/structure/toilet{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/structure/sink/directional/south, +/obj/structure/mirror/directional/north, +/obj/effect/landmark/start/captain, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/captain/private) "iVI" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"iWd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/table/wood, +/obj/effect/spawner/random/entertainment/plushie, +/turf/open/floor/wood, +/area/station/security/prison/rec) "iWk" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /obj/machinery/airalarm/directional/west, @@ -27119,15 +27038,11 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) "iWu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) "iWw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -27135,37 +27050,10 @@ /area/station/service/chapel) "iWI" = ( /obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/entertainment/coin, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"iWL" = ( -/obj/machinery/light/directional/south, -/obj/structure/noticeboard/directional/south, -/obj/machinery/computer/slot_machine, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) -"iWX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"iXg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/binary/pump/on/layer2{ - name = "External to Filter" - }, -/obj/machinery/atmospherics/components/binary/pump/on/layer4{ - dir = 1; - name = "Air to External" - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"iXh" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/virology) "iXl" = ( /obj/structure/flora/bush/fullgrass/style_random, /obj/structure/flora/bush/flowers_br/style_random, @@ -27204,7 +27092,7 @@ /area/station/security/execution/transfer) "iXR" = ( /obj/machinery/vending/wardrobe/chap_wardrobe, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "iXS" = ( /obj/effect/turf_decal/trimline/red/filled/line{ @@ -27254,12 +27142,9 @@ dir = 1 }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/department/cargo) @@ -27268,17 +27153,15 @@ /turf/open/floor/iron, /area/station/cargo/sorting) "iYH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, +/obj/machinery/door/airlock/maintenance{ + name = "Library Maintenance" + }, /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/open/floor/catwalk_floor, +/area/station/service/library/lounge) "iYK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -27288,9 +27171,14 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"iYP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark, +/area/station/security/prison/garden) "iYW" = ( /obj/effect/decal/cleanable/cobweb, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "iYZ" = ( @@ -27332,13 +27220,10 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos) "iZD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/structure/chair/wood, +/turf/open/floor/iron/dark, +/area/station/service/abandoned_gambling_den) "iZM" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/warning, /obj/structure/cable, @@ -27346,17 +27231,11 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/science/server) -"iZW" = ( -/mob/living/basic/chicken{ - forced_gender = "male" - }, -/turf/open/floor/grass, -/area/station/service/hydroponics) "jac" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/obj/machinery/light/directional/east, +/obj/machinery/light/small/directional/east, /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron/dark, /area/station/security/execution) @@ -27398,22 +27277,12 @@ dir = 4 }, /area/station/commons/fitness) -"jbg" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/iron, -/area/station/engineering/break_room) "jbt" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, /obj/machinery/shower/directional/east, -/obj/structure/sign/poster/official/random/directional/west, +/obj/structure/drain, /turf/open/floor/iron/white, /area/station/science/genetics/cloning) "jbA" = ( @@ -27430,31 +27299,25 @@ }, /area/station/holodeck/rec_center) "jbM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, +/obj/effect/turf_decal/trimline/blue/line, +/obj/machinery/light/directional/north, /turf/open/floor/iron/white, -/area/station/maintenance/department/science) +/area/station/medical/medbay/central) "jbP" = ( /obj/machinery/airalarm/directional/south, /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark, /area/station/security/prison/mess) "jbQ" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/chair/stool/directional/north, /turf/open/floor/wood/large, -/area/station/commons/dorms) -"jbR" = ( -/obj/structure/bodycontainer/morgue{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +/area/station/commons/dorms/room1) "jbY" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/effect/spawner/random/engineering/material_cheap, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) @@ -27492,18 +27355,6 @@ /obj/effect/turf_decal/trimline/red/line, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"jct" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/warning{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/warning{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "jcB" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, @@ -27519,8 +27370,8 @@ /turf/open/floor/wood, /area/station/security/prison/rec) "jcG" = ( -/obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) "jcU" = ( @@ -27536,7 +27387,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) "jdb" = ( /obj/machinery/firealarm/directional/west, @@ -27548,40 +27399,56 @@ /turf/open/floor/plating, /area/station/tcommsat/computer) "jdh" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"jdA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/cable/layer1, +/obj/structure/table/reinforced, /turf/open/floor/iron, -/area/station/engineering/engine_smes) +/area/station/command/heads_quarters/ce) +"jdA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/table, +/obj/item/storage/box/matches, +/obj/effect/spawner/random/entertainment/lighter{ + pixel_y = 4; + pixel_x = 4 + }, +/obj/effect/spawner/random/entertainment/lighter, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"jdC" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister/anesthetic_mix, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "jdJ" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 10 }, /turf/open/floor/engine, /area/station/science/xenobiology) -"jdN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/plumbed{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "jdV" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/cargo) +"jee" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) "jef" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27591,31 +27458,44 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "jet" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/welded, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/engine_smes) "jeu" = ( /obj/structure/sign/warning/radiation/directional/east, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, +/obj/machinery/camera/directional/east{ + c_tag = "Maintenance - Science Pass-through, Ordnance, Burn Chamber Release Window"; + name = "maintenance camera"; + network = list("ss13","rd") + }, +/turf/open/floor/iron, /area/station/maintenance/department/science) +"jev" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark/smooth_large, +/area/station/hallway/secondary/exit/departure_lounge) +"jeI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/atmos/office) "jeL" = ( -/obj/effect/decal/cleanable/oil, /obj/effect/turf_decal/siding/wood{ dir = 1 }, /obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/smithing) +"jfC" = ( +/obj/machinery/duct, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "jfI" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -27640,10 +27520,9 @@ dir = 1 }, /area/station/cargo/storage) -"jgz" = ( -/obj/structure/table/glass, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +"jgu" = ( +/turf/open/floor/wood/tile, +/area/station/commons/dorms/room4) "jgH" = ( /obj/effect/spawner/random/structure/table, /obj/effect/spawner/random/maintenance, @@ -27656,18 +27535,12 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 }, +/obj/machinery/light/directional/east, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/light/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"jgV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/medical/psychology) "jgW" = ( /obj/effect/turf_decal/tile/neutral/half{ dir = 4 @@ -27679,27 +27552,35 @@ dir = 8 }, /area/station/command/gateway) -"jgZ" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/keycard_auth/directional/south, -/obj/machinery/newscaster/directional/east, -/obj/structure/closet/secure_closet/chief_medical, -/obj/item/screwdriver, -/obj/item/clothing/head/costume/nursehat, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) "jhf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) +/obj/structure/lattice, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/space/basic, +/area/space/nearstation) "jhj" = ( /obj/machinery/light/small/directional/south, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"jhk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/liquid_barrier, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/science/xenobio, +/turf/open/floor/plating, +/area/station/science/xenobiology) "jhq" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -27707,7 +27588,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/science) "jhr" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ @@ -27724,6 +27605,16 @@ /obj/structure/cable/layer3, /turf/open/floor/engine, /area/station/ai_monitored/command/storage/satellite) +"jhB" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/airalarm/directional/south, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder/white, +/obj/item/pen, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "jhE" = ( /obj/machinery/power/rad_collector, /turf/open/floor/plating, @@ -27733,15 +27624,13 @@ /turf/open/floor/iron/dark, /area/station/service/chapel) "jhR" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/dark_red/arrow_cw{ - dir = 8 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/security/prison/shower) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/table/wood, +/obj/item/storage/dice, +/turf/open/floor/wood, +/area/station/security/prison/rec) "jic" = ( /obj/effect/decal/cleanable/cobweb, /obj/item/radio/intercom/directional/west, @@ -27750,22 +27639,8 @@ /turf/open/floor/wood, /area/station/service/lawoffice) "jit" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"jiu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "jiy" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/iron/showroomfloor, @@ -27784,24 +27659,29 @@ /area/station/maintenance/port/fore) "jjk" = ( /obj/machinery/camera/autoname/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 6 }, +/obj/item/storage/toolbox/mechanical, /turf/open/floor/iron, /area/station/science/ordnance/office) "jjm" = ( +/obj/machinery/light/small/directional/north, /obj/structure/sign/poster/random/directional/north, /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/department/science) -"jjs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"jju" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/security/courtroom) "jjx" = ( +/obj/machinery/light/small/directional/east, /obj/machinery/cryopod{ dir = 8 }, @@ -27829,21 +27709,15 @@ /turf/open/floor/plating, /area/station/engineering/atmos/pumproom) "jjV" = ( -/obj/machinery/computer/atmos_control/nitrogen_tank{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/obj/machinery/computer/atmos_control/nitrogen_tank{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"jkd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron/white, -/area/station/medical/virology) "jke" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -27856,29 +27730,23 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"jkt" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +"jki" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/stone, +/area/station/smithing) +"jkv" = ( +/obj/effect/turf_decal/tile/dark_blue{ dir = 4 }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/structure/chair/sofa/corp/right{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) -"jkz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, +/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/dark, -/area/station/command/teleporter) +/area/station/engineering/transit_tube) "jkD" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/tile/dark_blue/full, /obj/effect/turf_decal/bot_white, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) "jkE" = ( /obj/item/food/canned/beans, @@ -27895,65 +27763,62 @@ /turf/open/floor/plating, /area/station/maintenance/department/cargo) "jkJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ +/obj/structure/chair/stool/directional/east, +/turf/open/floor/iron/dark/side{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/commons/fitness) "jkQ" = ( /obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 }, /obj/machinery/light/directional/north, -/obj/structure/sign/poster/official/random/directional/north, +/obj/machinery/station_map/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "jkU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/main) -"jli" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/spawner/random/trash/graffiti, /turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"jlo" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/obj/structure/cable, -/obj/machinery/duct, +/area/station/engineering/main) +"jkZ" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/wood, +/area/station/service/library/private) +"jli" = ( +/obj/effect/turf_decal/tile/blue/full, +/obj/effect/turf_decal/box, +/obj/machinery/holopad, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/heads_quarters/cmo) +"jlr" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/chemistry) "jlu" = ( +/obj/machinery/light/small/directional/south, /obj/structure/closet/emcloset, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/entry) +"jlx" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/firealarm/directional/north, +/obj/machinery/light_switch/directional/north{ + pixel_x = -8 + }, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/storage_shared) "jlA" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, @@ -27964,7 +27829,7 @@ /obj/structure/cable, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "jlN" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 @@ -27977,22 +27842,6 @@ dir = 1 }, /area/station/cargo/office) -"jlO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable/layer1, -/turf/open/floor/iron, -/area/station/engineering/storage) -"jlX" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "jmc" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/effect/turf_decal/trimline/yellow/line{ @@ -28001,34 +27850,38 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"jmd" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 +"jmg" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "engineering"; + name = "Engineering Blast Door" }, -/obj/effect/turf_decal/trimline/red/line, -/obj/structure/chair/sofa/corp/right{ +/obj/machinery/atmospherics/pipe/layer_manifold/cyan/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters{ + id = "engi_pass_shutters"; + name = "Engineering Shutters"; dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/turf/open/floor/plating, +/area/station/engineering/break_room) "jmh" = ( /turf/closed/wall, /area/station/service/hydroponics/garden) "jmn" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/structure/sign/flag/nanotrasen/directional/north, /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/structure/filingcabinet, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) -"jmo" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/light/small/directional/south, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/engineering/break_room) "jmy" = ( /turf/open/floor/iron, /area/station/cargo/miningoffice) @@ -28041,9 +27894,8 @@ /area/station/engineering/gravity_generator) "jmQ" = ( /obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/trunk{ - dir = 4 + dir = 1 }, /obj/machinery/disposal/bin, /turf/open/floor/iron/dark, @@ -28058,15 +27910,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"jnb" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ - dir = 5 - }, -/obj/effect/turf_decal/tile/dark_blue, -/obj/structure/sign/warning/secure_area/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) "jnc" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/structure/chair{ @@ -28080,37 +27923,37 @@ /turf/open/space/basic, /area/space/nearstation) "jnS" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/red/filled/warning{ +/obj/machinery/door/poddoor/shutters{ + id = "engi_security_post"; + name = "Security Post Shutters"; dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/plating, /area/station/security/checkpoint/engineering) -"jnY" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ +"joc" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/obj/structure/sign/poster/official/help_others/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"joc" = ( /obj/machinery/washing_machine, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/checker, /area/station/security/prison/shower) "joj" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/chair/office{ dir = 8 }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, +/obj/effect/landmark/start/medical_doctor, /turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/area/station/medical/office) +"jot" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder/yellow, +/obj/item/pen, +/turf/open/floor/iron, +/area/station/engineering/break_room) "jou" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -28139,11 +27982,16 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos) "jpg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 5 + }, +/obj/machinery/newscaster/directional/north, +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/office) "jpN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, @@ -28151,20 +27999,38 @@ "jpQ" = ( /obj/item/radio/intercom/directional/north, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) "jpU" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/structure/sign/warning/pods/directional/south, -/obj/structure/reagent_dispensers/watertank, +/obj/machinery/space_heater, /turf/open/floor/iron, /area/station/engineering/storage) +"jqd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/table, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"jqh" = ( +/obj/structure/chair/comfy/black, +/obj/effect/landmark/start/chief_engineer, +/turf/open/floor/wood, +/area/station/command/meeting_room) +"jqp" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners{ + dir = 1 + }, +/obj/machinery/oven/range, +/turf/open/floor/iron/kitchen, +/area/station/service/kitchen) "jqs" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -28182,13 +28048,23 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science) +"jqW" = ( +/obj/structure/table/wood/fancy/royalblue, +/obj/item/storage/fancy/cigarettes/cigars{ + pixel_y = 21 + }, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_y = 7 + }, +/obj/item/lighter{ + pixel_y = 7; + pixel_x = 7 + }, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) "jrr" = ( /obj/structure/chair{ dir = 4 @@ -28209,45 +28085,50 @@ dir = 5 }, /obj/structure/table/reinforced, -/obj/item/storage/box/flashbangs{ - pixel_x = -3; - pixel_y = -3 +/obj/item/clothing/mask/gas/sechailer{ + pixel_y = -6; + pixel_x = -6 }, -/obj/item/storage/box/flashes, -/obj/item/storage/box/teargas{ - pixel_x = 3; - pixel_y = 3 +/obj/item/clothing/mask/gas/sechailer{ + pixel_y = -6; + pixel_x = 6 }, -/obj/item/storage/box/handcuffs{ - pixel_y = 5; +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = -6 + }, +/obj/item/clothing/mask/gas/sechailer{ pixel_x = 6 }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"jsa" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 4 +/obj/item/clothing/mask/gas/sechailer{ + pixel_y = 6; + pixel_x = -6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"jsd" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 +/obj/item/clothing/mask/gas/sechailer{ + pixel_y = 6; + pixel_x = 6 }, -/obj/structure/table, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, +/obj/item/flashlight/seclite{ + pixel_y = -6 + }, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite{ + pixel_y = 6 + }, +/obj/item/clothing/head/helmet/toggleable/justice, /turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) +/area/station/ai_monitored/security/armory) +"jrG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/curtain/cloth, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/service/abandoned_gambling_den) +"jsb" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/shaker, +/obj/item/reagent_containers/dropper, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "jse" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -28263,10 +28144,11 @@ /area/station/security/prison/visit) "jsB" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/obj/effect/spawner/random/trash/garbage, +/obj/structure/easel, +/obj/item/canvas/twentythree_twentythree, +/obj/item/canvas/twentythree_twentythree, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/starboard/aft) "jsQ" = ( /obj/structure/table, /obj/item/clothing/under/rank/prisoner{ @@ -28291,13 +28173,24 @@ }, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) +"jtl" = ( +/obj/machinery/light/directional/east, +/obj/structure/bookcase/random/religion, +/turf/open/floor/wood, +/area/station/service/library) "jto" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/table_or_rack, /obj/item/storage/box/lights/mixed, /obj/item/toy/plush/slimeplushie, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"jtv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "jty" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 1 @@ -28308,11 +28201,9 @@ /turf/open/floor/iron, /area/station/hallway/primary/aft) "jtE" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "jtU" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, @@ -28320,30 +28211,9 @@ /obj/effect/spawner/random/clothing/costume, /turf/open/floor/iron, /area/station/maintenance/disposal) -"jub" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/science) "juc" = ( /turf/open/floor/iron, /area/station/service/hydroponics) -"jug" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/cable, -/obj/structure/plaque/static_plaque/golden/commission/box, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"jui" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) "juj" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/carbon_input{ dir = 8 @@ -28356,25 +28226,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/dorms) -"jun" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/item/radio/intercom/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/engine, -/area/station/medical/cryo) "juH" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) "juU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 +/obj/structure/chair/sofa/left/maroon{ + dir = 4 }, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) "jvd" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -28383,11 +28244,11 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/door/airlock/external{ name = "Escape Pod Three" }, /obj/effect/landmark/navigate_destination/dockescpod3, -/obj/structure/cable, /turf/open/floor/iron/dark/textured_large, /area/station/maintenance/department/security) "jve" = ( @@ -28397,32 +28258,14 @@ /area/station/security/execution) "jvi" = ( /obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"jvj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/psychology, -/obj/machinery/door/airlock/medical{ - name = "Psychology Office" - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/psychology) "jvt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/turf/open/floor/wood, -/area/station/service/library/private) +/obj/structure/bed, +/obj/item/bedsheet/cmo, +/obj/effect/landmark/start/chief_medical_officer, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "jvu" = ( /turf/closed/wall, /area/station/commons/fitness) @@ -28430,16 +28273,19 @@ /obj/machinery/power/port_gen/pacman/pre_loaded, /turf/open/floor/plating, /area/station/engineering/main) +"jvN" = ( +/turf/closed/wall, +/area/station/commons/dorms/room5) "jvO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/commons/fitness/recreation) "jwc" = ( /obj/structure/extinguisher_cabinet/directional/east, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ +/obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 }, -/obj/effect/turf_decal/trimline/dark_blue/line{ +/obj/effect/turf_decal/trimline/neutral/line{ dir = 8 }, /obj/machinery/light/directional/east, @@ -28462,14 +28308,17 @@ }, /area/station/command/gateway) "jwt" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/four, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/structure/transit_tube/crossing, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/space, +/area/space/nearstation) "jwu" = ( -/obj/structure/displaycase/trophy, -/turf/open/floor/wood, -/area/station/service/library) +/obj/effect/turf_decal/trimline/yellow/filled/corner, +/turf/open/floor/iron, +/area/station/engineering/main) "jww" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ @@ -28498,6 +28347,14 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) +"jwG" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/station/medical/virology) +"jwN" = ( +/turf/closed/wall, +/area/station/medical/patients_rooms/room_b) "jwP" = ( /obj/effect/turf_decal/bot, /obj/structure/closet/crate, @@ -28523,45 +28380,52 @@ dir = 1 }, /obj/structure/sign/warning/secure_area/directional/south, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "jxd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/dark_red/corner{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"jxf" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering Shared Storage" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, +/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "engi-shared-storage" + }, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/storage_shared) +"jxh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 4 + }, +/area/station/service/chapel) "jxl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"jxr" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/table/glass, -/obj/item/clothing/glasses/science, -/obj/item/clothing/glasses/science{ - pixel_x = 2; - pixel_y = 4 - }, -/obj/item/reagent_containers/cup/beaker/large, -/obj/item/reagent_containers/cup/beaker/large{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/beaker{ - pixel_x = 8; - pixel_y = 2 - }, -/obj/item/reagent_containers/dropper, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) +"jxm" = ( +/obj/machinery/light/floor/has_bulb, +/turf/open/floor/engine, +/area/station/science/xenobiology) "jxy" = ( /turf/closed/wall, /area/station/maintenance/starboard/fore) @@ -28574,44 +28438,21 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"jxM" = ( -/obj/vehicle/ridden/wheelchair{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"jxN" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/obj/item/radio/intercom/directional/west, -/obj/structure/rack, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/mask/gas{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/gas, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/oxygen/yellow{ - pixel_x = 5; - pixel_y = -3 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/engineering/break_room) "jya" = ( -/obj/effect/turf_decal/box/white, +/obj/effect/turf_decal/box, /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/turret_protected/ai_upload) "jyb" = ( /obj/item/radio/intercom/directional/east, -/obj/machinery/light/small/directional/east, /obj/structure/table, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 6; + pixel_x = -3 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 6 + }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) "jyf" = ( @@ -28619,12 +28460,18 @@ /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"jyp" = ( +/obj/machinery/firealarm/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) "jyz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, /turf/open/floor/wood/large, -/area/station/commons/dorms) +/area/station/commons/dorms/room1) "jyE" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -28636,19 +28483,30 @@ /area/station/maintenance/port/fore) "jyS" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "robotics_pub_shutters"; - name = "Robotics Shutters"; - dir = 1 + name = "Robotics Shutters" }, /obj/structure/cable, /turf/open/floor/plating, /area/station/science/robotics/lab) +"jyV" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "jzd" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/crate, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/area/station/engineering/main) "jze" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/effect/turf_decal/plaque{ @@ -28678,16 +28536,13 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark/corner, /area/station/commons/storage/primary) -"jzw" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ +"jzJ" = ( +/obj/structure/chair/comfy/black{ dir = 8 }, -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/iron, +/area/station/engineering/break_room) "jzQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -28705,37 +28560,17 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"jAi" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/office) "jAm" = ( /obj/structure/table/wood, /obj/effect/spawner/random/entertainment/deck, /turf/open/floor/wood, /area/station/security/prison/rec) "jAw" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"jAA" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) -"jAL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "jAO" = ( /obj/effect/turf_decal/box, /obj/effect/turf_decal/stripes/corner{ @@ -28774,34 +28609,15 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) "jBv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/telecomms/receiver/preset_left, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/bus/preset_two, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) -"jBF" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden, -/obj/machinery/meter, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"jBZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Medical Break Room Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +"jBx" = ( +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/security_all, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "jCb" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -28820,6 +28636,7 @@ dir = 1 }, /obj/machinery/light/directional/south, +/obj/machinery/station_map/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "jCy" = ( @@ -28839,23 +28656,25 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"jCM" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, +"jCD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/table, -/obj/item/folder/white, -/obj/item/folder/blue{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/folder/blue{ - pixel_x = 3; - pixel_y = 2 +/turf/open/floor/iron/dark/side{ + dir = 8 }, -/obj/item/stamp/head/cmo, -/turf/open/floor/iron/dark/side, -/area/station/command/heads_quarters/cmo) +/area/station/engineering/atmos/office) +"jCL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/table/wood, +/obj/item/paper_bin, +/turf/open/floor/wood, +/area/station/service/library/lounge) "jCP" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -28864,9 +28683,20 @@ /turf/open/floor/iron/dark, /area/station/security/processing) "jCY" = ( -/obj/machinery/vending/wardrobe/curator_wardrobe, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/transit_tube/station/dispenser/reverse/flipped{ + dir = 4 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/engineering/transit_tube) "jDc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -28874,13 +28704,30 @@ /mob/living/simple_animal/bot/secbot/beepsky/officer, /turf/open/floor/iron/dark, /area/station/security/brig) +"jDf" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow{ + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "jDg" = ( /turf/closed/wall, /area/station/science/ordnance/storage) "jDj" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/plating/airless, +/area/space/nearstation) "jDp" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer2, @@ -28890,10 +28737,19 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port) +"jDr" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/structure/closet/secure_closet/engineering_personal, +/turf/open/floor/iron, +/area/station/engineering/main) "jDy" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28902,7 +28758,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/science) "jDz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -28912,14 +28768,24 @@ /turf/open/floor/iron, /area/station/maintenance/port/fore) "jDD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) "jDX" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/obj/item/radio/intercom/directional/north, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/pen{ + pixel_x = -5; + pixel_y = 5 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "jEd" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -28941,6 +28807,14 @@ /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/port) +"jEt" = ( +/obj/structure/rack/shelf, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/head/helmet/toggleable/riot{ + pixel_y = 6 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "jEw" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -28953,41 +28827,31 @@ "jEI" = ( /obj/structure/table, /obj/item/kitchen/fork/plastic, -/obj/machinery/firealarm/directional/west, -/obj/machinery/light/small/directional/west, +/obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/security/prison/mess) +"jEL" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/light/directional/south, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron, +/area/station/engineering/main) "jEW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, /turf/open/floor/wood/tile, -/area/station/commons/dorms) +/area/station/commons/dorms/room4) "jEX" = ( /obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/iron/dark, /area/station/security/processing) "jEY" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, +/obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, +/obj/effect/mapping_helpers/apc/cell_5k, +/turf/open/floor/iron/dark/side, /area/station/security/prison/safe) -"jFb" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/glass, -/obj/item/emergency_bed{ - pixel_y = 6 - }, -/obj/item/emergency_bed{ - pixel_y = 12 - }, -/obj/machinery/button/door/directional/east{ - id = "surgery_privacy"; - name = "Surgery Privacy Shutters Control" - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery) "jFe" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 @@ -29002,11 +28866,11 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 8 }, -/obj/structure/cable, +/obj/item/radio/intercom/directional/south, /obj/machinery/computer/security{ dir = 4 }, -/obj/item/radio/intercom/directional/south, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/auxiliary) "jFo" = ( @@ -29021,7 +28885,8 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 }, -/obj/structure/table/glass, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/table/reinforced/rglass, /obj/item/crowbar/red, /obj/item/reagent_containers/cup/beaker{ pixel_x = 8; @@ -29031,11 +28896,25 @@ /obj/item/flashlight/pen, /obj/item/radio/headset/headset_medsci, /obj/item/infuser_book, +/obj/item/toy/figure/geneticist{ + pixel_y = 11; + pixel_x = -11 + }, /turf/open/floor/iron/white, /area/station/science/genetics) "jFx" = ( /turf/open/floor/circuit/green, /area/station/engineering/gravity_generator) +"jFA" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 4 + }, +/obj/structure/sign/departments/maint/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "jFF" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -29050,24 +28929,21 @@ /turf/open/floor/iron, /area/station/maintenance/disposal) "jFP" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/structure/cable, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 8 }, -/obj/machinery/vending/engivend, -/obj/machinery/camera/directional/west{ - c_tag = "Engineering - Equipment Storage"; - name = "engineering camera" - }, -/obj/structure/sign/warning/electric_shock/directional/west, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/storage) "jGl" = ( -/obj/effect/turf_decal/bot, -/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/engineering/main) "jGm" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/atmospheric_technician, /obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ dir = 10 @@ -29082,19 +28958,25 @@ /turf/open/floor/plating, /area/station/maintenance/department/cargo) "jGt" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/sign/warning/rad_shelter/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/prison) +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron/dark/side, +/area/station/security/interrogation) +"jGu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "jGx" = ( /obj/machinery/plumbing/ooze_sucker{ - mapping_id = "4"; + mapping_id = "3"; dir = 1 }, -/obj/machinery/light/floor/has_bulb, /turf/open/floor/engine, /area/station/science/xenobiology) "jGA" = ( @@ -29129,12 +29011,14 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "jHa" = ( -/obj/structure/closet/crate/trashcart/laundry, -/obj/item/clothing/shoes/sneakers/orange, -/obj/item/clothing/shoes/sneakers/orange, -/obj/item/clothing/shoes/sneakers/orange, -/obj/item/clothing/shoes/sneakers/orange, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, /obj/machinery/firealarm/directional/south, +/obj/machinery/light_switch/directional/south{ + pixel_x = -8 + }, +/obj/structure/closet/crate/trashcart/laundry, /obj/item/clothing/under/rank/prisoner/skirt{ pixel_x = 9; pixel_y = 5 @@ -29151,7 +29035,11 @@ pixel_x = 9; pixel_y = 5 }, -/turf/open/floor/iron/dark, +/obj/item/clothing/shoes/sneakers/orange, +/obj/item/clothing/shoes/sneakers/orange, +/obj/item/clothing/shoes/sneakers/orange, +/obj/item/clothing/shoes/sneakers/orange, +/turf/open/floor/iron/checker, /area/station/security/prison/shower) "jHh" = ( /obj/structure/lattice, @@ -29164,23 +29052,25 @@ /turf/open/space/basic, /area/space/nearstation) "jHl" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/trimline/neutral/filled/warning{ dir = 8 }, -/obj/effect/turf_decal/trimline/yellow/line{ +/obj/effect/turf_decal/trimline/neutral/warning{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold/cyan/hidden, -/turf/open/floor/iron, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/hallway/primary/aft) "jHm" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/line{ dir = 1 }, -/obj/machinery/camera/directional/south{ - c_tag = "Port Hallway Center" - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, @@ -29194,22 +29084,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"jHx" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/ghost_critter_spawn, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"jHI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "jHN" = ( /turf/open/floor/iron/dark/side{ dir = 1 @@ -29220,17 +29094,28 @@ id = "dorm_4"; name = "Dorm Bolt Control"; normaldoorcontrol = 1; - specialfunctions = 4 + specialfunctions = 4; + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 }, +/obj/machinery/light_switch/directional/north{ + pixel_x = 5; + pixel_y = 34 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/structure/chair/stool/directional/south, /turf/open/floor/wood/tile, -/area/station/commons/dorms) +/area/station/commons/dorms/room4) "jIp" = ( /obj/machinery/firealarm/directional/north, /turf/open/floor/wood, /area/station/service/chapel/funeral) "jIr" = ( /obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/window/reinforced/tinted/spawner/directional/south, +/obj/structure/window/reinforced/tinted, /obj/structure/toilet{ dir = 4 }, @@ -29250,7 +29135,7 @@ /turf/open/floor/plating, /area/station/maintenance/port) "jII" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; name = "N2 to Pure" @@ -29258,11 +29143,16 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos) "jIO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/clothing, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) +"jJh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "jJk" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, @@ -29273,36 +29163,39 @@ /turf/open/floor/iron/large, /area/station/commons/dorms) "jJq" = ( +/obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/iron/white, +/obj/machinery/holopad, +/turf/open/floor/iron/white/smooth_large, /area/station/science/genetics/cloning) -"jJr" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "jJz" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "library_desk_shutters"; - name = "Library Desk Shutters"; - dir = 1 +/obj/machinery/light/directional/north, +/obj/machinery/requests_console/directional/north{ + department = "Pharmacy"; + name = "Pharmacy Requests Console"; + supplies_requestable = 1; + receive_ore_updates = 1; + assistance_requestable = 1 }, -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen/red, -/obj/item/pen/blue{ - pixel_x = 3; - pixel_y = 3 +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/structure/table/reinforced/rglass, +/obj/item/reagent_containers/cup/bottle/epinephrine, +/obj/item/reagent_containers/dropper, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma{ + pixel_x = -6; + pixel_y = 6 }, -/turf/open/floor/iron/dark/textured, -/area/station/service/library/printer) +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "jJF" = ( /obj/structure/chair/office{ dir = 4 @@ -29310,32 +29203,12 @@ /obj/effect/landmark/start/quartermaster, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) -"jJW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, +"jKa" = ( +/obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Paramedic Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"jKa" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/iron/dark/textured, @@ -29345,48 +29218,20 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/brig) -"jKh" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/break_room) "jKn" = ( /obj/machinery/camera/autoname/directional/south, /obj/machinery/light/small/directional/south, +/obj/structure/extinguisher_cabinet/directional/south, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/iron/white, /area/station/science/xenobiology) "jKu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/sign/painting/library{ - pixel_x = -32 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) -"jKv" = ( -/obj/structure/table, -/obj/item/storage/toolbox/electrical{ - pixel_y = 10 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 4 - }, -/obj/item/storage/belt/utility, -/obj/item/flashlight, -/obj/item/clothing/glasses/meson/engine{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/pipe_dispenser, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) +/obj/machinery/shower/directional/east, +/obj/structure/drain, +/turf/open/floor/iron/textured_large, +/area/station/engineering/main) "jKA" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -29400,9 +29245,6 @@ /turf/open/floor/iron/dark, /area/station/security/courtroom) "jKB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, /obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/engineering/engine_smes) @@ -29421,28 +29263,21 @@ "jKW" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/light/directional/west, -/obj/structure/closet/emcloset, /obj/machinery/firealarm/directional/west, +/obj/structure/closet/emcloset, +/obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "jLa" = ( -/obj/structure/closet/firecloset{ - anchored = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"jLf" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, -/obj/effect/turf_decal/trimline/blue/warning{ +/obj/effect/turf_decal/trimline/blue/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +/obj/machinery/light/directional/west, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/area/station/medical/medbay/aft) "jLl" = ( /obj/machinery/camera/autoname/directional/east, /obj/structure/chair/wood{ @@ -29458,6 +29293,13 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron/white, /area/station/science/lab) +"jLr" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/storage) "jLu" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -29467,19 +29309,6 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/security/armory) -"jLI" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/machinery/light_switch/directional/west, -/obj/structure/chair/sofa/corp{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "jLL" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -29489,15 +29318,14 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/atmos) "jLQ" = ( -/obj/machinery/duct, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) +/obj/effect/decal/cleanable/dirt, +/obj/structure/ghost_critter_spawn, +/turf/open/floor/plating, +/area/station/maintenance/port) "jLR" = ( /obj/effect/turf_decal/trimline/brown/filled/warning{ dir = 10 }, -/obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark/side{ dir = 10 }, @@ -29518,20 +29346,14 @@ pixel_x = 7 }, /obj/item/hand_labeler, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) -"jLU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"jMb" = ( -/obj/machinery/light/small/directional/east, -/obj/structure/cable/layer1, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/main) +"jMa" = ( +/obj/machinery/stasis{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "jMj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29539,20 +29361,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"jMs" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/airalarm/directional/east, -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/obj/item/t_scanner, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/break_room) "jMP" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ @@ -29561,20 +29372,35 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"jMT" = ( -/obj/item/stack/ore/slag, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "jNa" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"jNd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"jNg" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "jNm" = ( -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = 5 }, /obj/machinery/suit_storage_unit/standard_unit, /turf/open/floor/iron/white/textured, @@ -29584,16 +29410,22 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/execution) "jNL" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /turf/open/floor/iron/dark, /area/station/science/breakroom) +"jNT" = ( +/obj/item/radio/intercom/directional/south, +/obj/structure/table_frame, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "jNZ" = ( -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "jOc" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -29602,29 +29434,36 @@ /turf/open/floor/wood, /area/station/commons/vacant_room/office) "jOi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/chair_maintenance{ +/obj/structure/chair/wood{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "jOm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/telecomms/server/presets/engineering, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/server/presets/medical, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) "jOr" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/chair/stool/directional/north, /turf/open/floor/wood/tile, -/area/station/commons/dorms) +/area/station/commons/dorms/room4) "jOx" = ( -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"jOI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/structure/disposalpipe/segment{ dir = 4 }, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) +"jOM" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 + }, +/obj/structure/sign/poster/official/help_others/directional/south, +/obj/machinery/light/directional/south, +/obj/structure/chair{ + dir = 1 + }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "jON" = ( @@ -29636,6 +29475,9 @@ /turf/open/floor/iron/white, /area/station/maintenance/port/fore) "jOV" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /obj/machinery/keycard_auth/directional/east, /obj/structure/bed/dogbed/lia, /mob/living/basic/carp/pet/lia, @@ -29645,107 +29487,104 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"jPc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/material_analyzer, +/turf/open/floor/stone, +/area/station/smithing) "jPm" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, /obj/machinery/light/directional/west, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark/side{ dir = 8 }, /area/station/cargo/lobby) "jPq" = ( -/obj/structure/flora/grass/jungle/b/style_random, -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/style_random, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/cassette/mailbox, +/turf/open/floor/wood, +/area/station/service/library/lounge) "jPt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 }, -/obj/machinery/telecomms/broadcaster/preset_right, -/turf/open/floor/engine/telecomms, -/area/station/tcommsat/server) -"jPP" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/security/brig) +/obj/structure/cable, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server) +"jPy" = ( +/obj/structure/noticeboard/directional/west, +/obj/structure/table/wood, +/obj/item/storage/photo_album/library, +/obj/item/taperecorder, +/obj/item/camera_film, +/obj/item/camera, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) +"jPA" = ( +/obj/machinery/vending/boozeomat/all_access, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "jPZ" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, -/obj/machinery/light/directional/west, /obj/machinery/button/door/directional/west{ id = "prison_release"; name = "Labor Camp Shuttle Lockdown"; - req_access = list("brig") + req_access = list("security"); + pixel_y = 6 }, /obj/machinery/computer/shuttle/labor{ dir = 4 }, +/obj/machinery/button/door/directional/west{ + id = "labor_dock_bolt"; + name = "Labor Camp Shuttle Dock Airlock Control"; + req_access = list("security"); + pixel_y = -6 + }, /turf/open/floor/iron/dark, /area/station/security/processing) -"jQb" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ +"jQr" = ( +/obj/effect/turf_decal/trimline/blue/line{ dir = 1 }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "Chief Medical Officer's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/cmo, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/cmo) -"jQu" = ( -/turf/open/floor/wood, -/area/station/commons/locker) -"jQO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/light/directional/south, +/obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark, -/area/station/medical/morgue) -"jQQ" = ( +/area/station/hallway/primary/central) +"jQs" = ( +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"jQZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) -"jRe" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +"jQu" = ( +/turf/open/floor/wood, +/area/station/commons/locker) +"jRl" = ( +/obj/machinery/door/window/left/directional/south, +/obj/structure/table/wood/fancy, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "jRr" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable, +/obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ name = "Armory" }, -/obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/security/armory, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/security/armory) @@ -29757,23 +29596,9 @@ /area/station/science/breakroom) "jRA" = ( /obj/item/radio/intercom/directional/west, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"jRC" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) -"jRM" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "apothecary_shutters"; - name = "Apothecary Shutters"; - dir = 4 - }, -/turf/open/floor/plating, -/area/station/medical/pharmacy) "jRP" = ( /obj/effect/turf_decal/tile/green/anticorner/contrasted{ dir = 8 @@ -29786,60 +29611,38 @@ }, /area/station/service/hydroponics) "jRY" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/obj/structure/sign/painting/library{ - pixel_x = -32 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) -"jRZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 10 - }, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light_switch/directional/south{ - pixel_x = -8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/medical/virology) "jSh" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/landmark/start/head_of_personnel, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/hop) +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central) "jSu" = ( -/obj/structure/extinguisher_cabinet/directional/west, /obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/structure/chair{ +/obj/machinery/light/small/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Aft Primary Hallway North" + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/structure/chair/sofa/bench/right{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, /area/station/hallway/primary/aft) "jSC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"jSM" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/pink/hidden{ - dir = 4 +"jSG" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/obj/machinery/atmospherics/components/unary/cryo_cell, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "jSO" = ( /obj/machinery/door/firedoor/border_only{ dir = 4 @@ -29847,6 +29650,11 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/grass, /area/station/service/hydroponics) +"jSP" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/bz, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "jSX" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/effect/turf_decal/trimline/dark_blue/warning{ @@ -29863,15 +29671,10 @@ /obj/effect/landmark/start/security_assistant, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"jTi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/obj/machinery/duct, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/storage) +"jTc" = ( +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/plating, +/area/station/commons/vacant_room/commissary) "jTs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29903,9 +29706,7 @@ /turf/open/floor/iron/textured, /area/station/science/ordnance/storage) "jUa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "jUb" = ( @@ -29918,13 +29719,18 @@ /obj/structure/sign/departments/maint/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"jUk" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +"jUe" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/obj/machinery/station_map/engineering/directional/north, /turf/open/floor/iron, -/area/station/hallway/primary/aft) +/area/station/engineering/main) +"jUk" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/glass/reinforced, +/area/station/service/abandoned_gambling_den) "jUm" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -29949,10 +29755,12 @@ /turf/open/floor/wood, /area/station/service/lawoffice) "jUC" = ( -/obj/machinery/light/small/broken/directional/north, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/siding/thinplating/corner, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "jUD" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -29968,11 +29776,11 @@ /turf/open/floor/iron/dark/textured, /area/station/commons/storage/primary) "jVd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/machinery/airalarm/directional/west, +/obj/structure/rack, +/obj/effect/spawner/random/engineering/tool, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "jVm" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -29983,7 +29791,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/chair, +/obj/structure/chair/sofa/bench, /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/aft) @@ -29994,9 +29802,9 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "jVE" = ( -/obj/structure/table/wood, +/obj/structure/table/wood/fancy/black, /obj/item/flashlight/lamp, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "jVP" = ( /obj/effect/turf_decal/bot_white, @@ -30005,23 +29813,13 @@ /area/station/cargo/warehouse) "jVQ" = ( /obj/machinery/camera/directional/west{ - c_tag = "Science - Ordnance Launch Access"; - name = "science camera"; - network = list("ss13","rd") - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 + c_tag = "Maintenance - External Access, East"; + name = "maintenance camera" }, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"jVS" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "jVU" = ( /obj/structure/cable/multilayer/connected, /turf/open/floor/plating/airless, @@ -30041,9 +29839,6 @@ }, /turf/open/floor/stone, /area/station/science/xenobiology) -"jWy" = ( -/turf/closed/wall/r_wall, -/area/station/construction) "jWA" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -30079,25 +29874,29 @@ }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start/cargo_technician, /turf/open/floor/iron/dark/side{ dir = 4 }, /area/station/cargo/storage) "jWT" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/layer_manifold/general/hidden{ - dir = 4 - }, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engi_lobby_shutters"; - name = "Engineering Lobby Shutters"; - dir = 4 - }, /obj/machinery/door/poddoor/preopen{ id = "engineering"; name = "Engineering Blast Door" }, +/obj/machinery/atmospherics/pipe/layer_manifold/pink/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters{ + id = "engi_pass_shutters"; + name = "Engineering Shutters"; + dir = 8 + }, /turf/open/floor/plating, /area/station/engineering/break_room) "jXh" = ( @@ -30110,20 +29909,34 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"jXr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/closet/secure_closet/personal/patient, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) "jXu" = ( -/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/spawner/directional/east, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/science) +"jXB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/corporate{ + id_tag = "bs_bolt"; + name = "Blueshield's Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/blueshield) "jXV" = ( /obj/structure/chair{ dir = 1 @@ -30131,12 +29944,6 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"jYc" = ( -/obj/machinery/light/small/broken/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/gibs/old, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) "jYd" = ( /obj/machinery/corral_corner{ mapping_id = "2" @@ -30156,12 +29963,12 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/cable, /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/command/maintenance, /obj/effect/mapping_helpers/airlock/unres{ dir = 8 }, -/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/eva) "jYp" = ( @@ -30197,24 +30004,42 @@ /obj/machinery/light/directional/east, /turf/open/floor/grass, /area/station/science/genetics) -"jYQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +"jYL" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 9 }, -/obj/machinery/airalarm/directional/north, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/structure/table/reinforced/rglass, -/obj/item/reagent_containers/syringe{ - name = "steel point" +/obj/machinery/button/door/directional/north{ + id = "engi_pass_shutters"; + name = "Engineering Shutters Control"; + req_access = list("engineering") + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/station/engineering/break_room) +"jYP" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/structure/table, +/obj/machinery/fax{ + fax_name = "Engineering Lobby"; + name = "Engineering Lobby Fax Machine" + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/break_room) +"jYT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/item/clothing/mask/surgical, -/obj/item/reagent_containers/cup/bottle/epinephrine, -/obj/item/reagent_containers/cup/bottle/multiver, -/obj/item/clothing/neck/stethoscope, -/obj/item/clothing/gloves/latex, -/obj/item/reagent_containers/spray/cleaner, /turf/open/floor/iron/white, -/area/station/security/medical) +/area/station/medical/chemistry) "jZa" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 5 @@ -30222,22 +30047,18 @@ /obj/item/radio/intercom/directional/north, /obj/structure/table, /obj/item/stack/sheet/iron/fifty{ - pixel_y = 5; - pixel_x = -4 - }, + pixel_y = 6; + pixel_x = -3 + }, /obj/item/stack/sheet/glass/fifty{ - pixel_y = 5 + pixel_y = 6 }, /turf/open/floor/iron/white, /area/station/science/lab) "jZe" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/machinery/telecomms/server/presets/common, +/turf/open/floor/circuit/green/telecomms, +/area/station/tcommsat/server) "jZl" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/iron/textured, @@ -30271,10 +30092,6 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"jZI" = ( -/obj/item/radio/intercom/directional/west, -/turf/open/floor/carpet/blue, -/area/station/medical/psychology) "jZY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30284,10 +30101,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"kag" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/construction) "kau" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -30304,21 +30117,22 @@ id = "engineering"; name = "Engineering Blast Door" }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engi_lobby_shutters"; - name = "Engineering Lobby Shutters"; - dir = 4 +/obj/machinery/door/poddoor/shutters{ + id = "engi_office_shutters"; + name = "Engineering Shutters"; + dir = 8 }, /turf/open/floor/plating, /area/station/engineering/break_room) -"kaL" = ( -/obj/structure/disposalpipe/segment, +"kaH" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/turf/open/floor/iron/dark, +/area/station/medical/paramedic) "kaP" = ( /obj/machinery/door/window/brigdoor/right/directional/east{ req_access = list("rd"); @@ -30326,13 +30140,21 @@ }, /turf/open/floor/iron/vaporwave, /area/station/command/heads_quarters/rd) -"kbA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +"kaX" = ( +/obj/structure/reagent_dispensers/plumbed{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/turf/open/floor/plating, +/area/station/maintenance/port) +"kbj" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/airalarm/directional/south, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/paramedic, +/turf/open/floor/iron, +/area/station/medical/paramedic) "kbB" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 @@ -30357,38 +30179,51 @@ /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) "kbE" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/structure/sign/painting/library{ - pixel_y = 32 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood, -/area/station/service/library) -"kbR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/structure/transit_tube, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/transit_tube) "kbT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/dark/side, /area/station/commons/locker) +"kcf" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) +"kch" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer4{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"kcr" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/security/prison/work) +"kcM" = ( +/obj/structure/cable, +/turf/open/floor/carpet/black, +/area/station/security/bitden) "kde" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/components/tank/air{ + dir = 4 + }, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/area/station/maintenance/port/aft) "kdp" = ( /obj/machinery/computer/holodeck{ dir = 4 @@ -30396,38 +30231,69 @@ /turf/open/floor/iron/dark, /area/station/commons/fitness) "kdy" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/wood, -/area/station/service/library/private) +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 10 + }, +/obj/machinery/recharge_station, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/engineering/break_room) +"kdC" = ( +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) "kdH" = ( /obj/structure/cable, /turf/open/floor/engine, /area/station/science/ordnance/storage) -"kdQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ +"kdK" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 8 +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/o_plus{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/reagent_containers/blood/o_minus, +/obj/item/reagent_containers/blood/b_plus, +/obj/item/reagent_containers/blood/b_minus, +/obj/item/reagent_containers/blood/a_plus, +/obj/item/reagent_containers/blood/a_minus, +/obj/item/reagent_containers/blood/lizard, +/obj/item/reagent_containers/blood/ethereal, +/obj/item/reagent_containers/blood{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/reagent_containers/blood{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/reagent_containers/blood{ + pixel_x = -3; + pixel_y = -3 }, -/obj/machinery/duct, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/area/station/medical/virology) "kdZ" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 }, -/obj/effect/turf_decal/trimline/neutral/line{ +/obj/effect/turf_decal/trimline/yellow/line{ dir = 8 }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, /obj/structure/sign/departments/maint/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, /area/station/hallway/primary/aft) "keg" = ( /obj/structure/flora/grass/jungle/a/style_random, @@ -30443,20 +30309,14 @@ /area/station/hallway/primary/starboard) "ken" = ( /obj/machinery/light_switch/directional/east, +/obj/structure/extinguisher_cabinet/directional/south, /obj/effect/spawner/random/structure/crate, /turf/open/floor/iron, /area/station/maintenance/disposal) -"keo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/closet/l3closet/virology, -/turf/open/floor/iron/white, -/area/station/medical/virology) "ker" = ( /obj/structure/lattice/catwalk, -/obj/item/stack/cable_coil, /obj/structure/sign/warning/electric_shock/directional/north, +/obj/item/stack/cable_coil, /turf/open/space, /area/station/solars/starboard/fore) "keu" = ( @@ -30473,23 +30333,11 @@ /area/station/command/meeting_room) "keI" = ( /obj/structure/cable, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 4 +/obj/effect/turf_decal/trimline/dark_blue/filled/end{ + dir = 1 }, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) -"keT" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/effect/turf_decal/stripes, -/obj/machinery/door/window/brigdoor/left/directional/south{ - name = "Command Chair"; - req_access = list("command") - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "kfa" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -30502,16 +30350,9 @@ }, /area/station/commons/fitness) "kfc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, /obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) +/turf/open/floor/iron, +/area/station/engineering/break_room) "kfe" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ @@ -30523,16 +30364,6 @@ "kfl" = ( /turf/closed/wall, /area/station/construction/mining/aux_base) -"kfB" = ( -/obj/structure/table, -/obj/item/book/manual/wiki/engineering_construction{ - pixel_x = 6 - }, -/obj/item/book/manual/wiki/engineering_guide{ - pixel_x = -6 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) "kfC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30576,20 +30407,30 @@ }, /obj/machinery/door/firedoor, /obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "bar_sec_shutters"; name = "Bar Shutters"; - dir = 8 + dir = 4 }, /turf/open/floor/iron/dark/textured, /area/station/service/bar) "kfT" = ( /turf/closed/wall/r_wall, /area/station/security/evidence) +"kgc" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "kgn" = ( /obj/machinery/growing/tray, /turf/open/floor/iron, /area/station/service/hydroponics) +"kgu" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall, +/area/station/maintenance/department/engine) "kgv" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -30629,10 +30470,11 @@ /area/station/ai_monitored/turret_protected/ai_upload) "kgS" = ( /obj/machinery/light/small/built/directional/south, +/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, /obj/structure/frame/machine, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "kgZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30649,13 +30491,16 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"khd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) +"khi" = ( +/obj/structure/sign/painting/library{ + pixel_y = 32 + }, +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood, +/area/station/service/library) "khr" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -30667,13 +30512,15 @@ "khD" = ( /turf/closed/wall/r_wall, /area/station/maintenance/starboard/aft) -"khP" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 +"khF" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/structure/sign/warning/no_smoking/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/iron/dark/corner, +/area/station/maintenance/starboard/aft) "khZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30687,7 +30534,7 @@ /area/station/science/research) "kie" = ( /obj/machinery/airalarm/directional/south, -/obj/structure/table/wood, +/obj/structure/table/wood/fancy/black, /obj/item/book/granter/action/spell/smoke/lesser{ name = "mysterious old book of cloud-chasing" }, @@ -30703,35 +30550,41 @@ /turf/open/floor/iron/dark, /area/station/service/chapel/office) "kiu" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/fore) "kiv" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/open/space/basic, /area/space/nearstation) -"kiw" = ( +"kix" = ( /obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/stripes/end{ - dir = 4 +/obj/machinery/button/door/directional/west{ + id = "med_front_desk_shutters"; + name = "Front Desk Shutters Control"; + req_access = list("medical"); + pixel_y = -5 }, -/obj/machinery/stasis{ - dir = 4 +/obj/machinery/button/door/directional/west{ + id = "medbay_foyer"; + name = "Medbay Doors Bolt Control"; + req_access = list("medical"); + pixel_y = 5; + specialfunctions = 4; + normaldoorcontrol = 1 }, -/turf/open/floor/iron/dark, -/area/station/medical/exam_room) +/obj/structure/filingcabinet, +/turf/open/floor/iron/white, +/area/station/medical/office) "kiC" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/closet/secure_closet/security/sec, +/obj/machinery/newscaster/directional/west, +/obj/structure/closet/secure_closet/security/sec/blueshirt, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) "kiI" = ( @@ -30741,10 +30594,7 @@ /turf/open/floor/carpet, /area/station/hallway/secondary/entry) "kiM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, +/obj/item/wrench, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "kiT" = ( @@ -30773,47 +30623,53 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/science) "kjA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/side, /area/station/security/prison/workout) -"kjC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/blood/tracks, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/starboard/fore) "kjD" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/table/wood/fancy, -/obj/effect/spawner/random/decoration/statue{ - spawn_loot_chance = 35 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) -"kjH" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/computer/security, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"kjM" = ( -/obj/effect/turf_decal/trimline/purple/filled/line, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) -"kjO" = ( -/obj/effect/spawner/random/trash/hobo_squat, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/maintenance/department/engine) +"kjO" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = -5 + }, +/obj/structure/table/glass, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "kjP" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/department/electrical) +"kjV" = ( +/obj/machinery/firealarm/directional/west{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/west{ + pixel_y = 5 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/pumproom) "kkb" = ( /obj/structure/table/wood, /obj/item/storage/box/cups, @@ -30824,16 +30680,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/table/wood, -/obj/item/camera_film{ - pixel_x = -4; - pixel_y = 4 - }, -/turf/open/floor/iron/dark, +/obj/item/paper_bin, +/obj/item/folder, +/obj/item/pen, +/turf/open/floor/carpet/green, /area/station/commons/vacant_room/office) "kkp" = ( /obj/effect/turf_decal/tile/purple/fourcorners, +/obj/machinery/light/small/directional/west, /obj/machinery/camera/autoname/directional/west, -/obj/structure/chair, +/obj/structure/chair{ + dir = 4 + }, /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) @@ -30842,33 +30700,30 @@ dir = 9 }, /obj/machinery/airalarm/directional/west, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, +/obj/machinery/button/door/directional/north{ + id = "cargo_security_post"; + name = "Security Post Shutters Control"; + req_access = list("security") + }, /obj/machinery/computer/security/mining{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) "kkt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/machinery/door/airlock/grunge{ - name = "Stall 3" - }, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron, +/area/station/engineering/storage) "kkz" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/machinery/computer/records/security{ dir = 8 }, /obj/machinery/button/door/directional/north{ - id = "departures_security_post"; - name = "Security Post Shutters Control"; + id = "departures_security_checkpoint"; + name = "Security Checkpoint Shutters Control"; req_access = list("security") }, /turf/open/floor/iron/dark, @@ -30879,18 +30734,10 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "kkH" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/table/wood, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/dresser, /turf/open/floor/carpet/blue, -/area/station/commons/dorms) -"kkR" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"kle" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) +/area/station/commons/dorms/room2) "klm" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -30901,21 +30748,21 @@ /turf/open/floor/iron/white, /area/station/science/research) "klo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 6 }, -/obj/machinery/light/small/directional/west, -/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage) +/area/station/engineering/atmos/pumproom) "klr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 +/obj/machinery/button/door/directional/south{ + id = "apothecary_sec_desk_shutters"; + name = "Secondary Desk Shutters Control"; + req_access = list("pharmacy") }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/chem_dispenser, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "klx" = ( /turf/open/floor/iron/dark/side{ dir = 9 @@ -30928,19 +30775,23 @@ }, /turf/open/space/basic, /area/space) +"klM" = ( +/obj/effect/turf_decal/bot, +/obj/structure/fireaxecabinet/directional/north, +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "klQ" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/item/storage/box/firingpins, -/obj/item/storage/box/firingpins{ - pixel_y = 3; - pixel_x = 3 - }, -/obj/item/gun/energy/temperature/security, -/obj/item/gun/energy/ionrifle, +/obj/machinery/ammo_workbench, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"klV" = ( +/obj/machinery/newscaster/directional/west, +/obj/structure/table, +/obj/item/storage/box/cups, +/turf/open/floor/wood, +/area/station/command/meeting_room) "klX" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/maintenance/five, @@ -30965,21 +30816,17 @@ /area/station/security/brig/entrance) "kmX" = ( /obj/machinery/newscaster/directional/north, -/obj/machinery/light/directional/north, +/obj/machinery/light/small/directional/north, /obj/structure/table/reinforced, /obj/item/storage/belt/utility, /obj/item/clothing/glasses/welding, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) -"kne" = ( -/obj/structure/flora/bush/jungle/b/style_random, -/mob/living/basic/butterfly, -/turf/open/floor/grass, -/area/station/command/bridge) "kni" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/disposal) "knl" = ( @@ -30991,16 +30838,21 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"kno" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/structure/table/wood, -/obj/item/storage/photo_album/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "knr" = ( /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, /area/station/security/prison) +"kns" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/obj/structure/rack, +/obj/item/wallframe/apc, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/break_room) "knt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -31021,55 +30873,66 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"knW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/obj/structure/cable, +/obj/structure/liquid_barrier, +/obj/machinery/door/airlock/hatch{ + name = "Cytology Pen" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/turf/open/floor/iron/dark/textured, +/area/station/science/xenobiology) "knX" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible, /turf/open/space/basic, /area/space/nearstation) "knY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 + dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"knZ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/dark/side{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Captain's Office" }, -/area/station/engineering/break_room) +/obj/effect/mapping_helpers/airlock/access/all/command/captain, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/captain) "kod" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, +/turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/starboard/fore) "koo" = ( -/obj/structure/chair/comfy/black{ - dir = 8 +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/service/library) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/command/heads_quarters/cmo) "kos" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -31089,25 +30952,33 @@ }, /turf/open/space/basic, /area/space) -"koO" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +"koM" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"koP" = ( -/obj/structure/chair/stool/directional/west, +/obj/structure/chair/sofa/bench/left, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"koP" = ( +/obj/structure/chair/stool/directional/west, /obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark/side{ dir = 8 }, /area/station/commons/fitness) +"kpd" = ( +/obj/item/radio/intercom/directional/south, +/obj/structure/table/wood, +/obj/effect/spawner/random/food_or_drink/snack, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "kpg" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 5 @@ -31116,45 +30987,40 @@ /turf/open/floor/iron/white, /area/station/science/circuits) "kpn" = ( -/obj/structure/table, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/white, -/area/station/maintenance/department/science) +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "kpr" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/hallway/primary/port) -"kpt" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/sign/departments/chemistry/pharmacy/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"kpu" = ( -/obj/machinery/computer/prisoner/management, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"kpB" = ( -/turf/closed/wall, -/area/station/medical/morgue) +"kps" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "kpE" = ( /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, /area/station/maintenance/department/security/brig) "kpJ" = ( -/obj/item/tank/internals/oxygen, -/obj/item/clothing/mask/breath, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/closet/secure_closet/medical3, +/obj/item/wrench/medical, +/turf/open/floor/iron/white, +/area/station/medical/office) "kpP" = ( -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, +/obj/machinery/requests_console/directional/west{ + department = "Chapel"; + name = "Chapel Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/assistance, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "kpW" = ( /obj/item/radio/intercom/prison/directional/south, @@ -31170,37 +31036,25 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) -"kqn" = ( +"kqp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/effect/landmark/event_spawn, /obj/machinery/holopad, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/central) -"kqp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/security/prison/rec) +/turf/open/floor/carpet/black, +/area/station/security/bitden) "kqr" = ( -/obj/item/radio/intercom/directional/east, -/obj/machinery/button/door/directional/south{ - id = "library_desk_shutters"; - name = "Library Desk Shutters Control"; - req_access = list("library") +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 }, -/obj/machinery/modular_computer/preset/curator{ - dir = 8 +/obj/machinery/atm/directional/north, +/obj/structure/table/glass, +/obj/item/storage/medkit/regular{ + pixel_x = 6; + pixel_y = 6 }, -/turf/open/floor/iron/dark, -/area/station/service/library/printer) +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "kqu" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -31231,15 +31085,12 @@ dir = 4 }, /area/station/cargo/miningoffice) -"kqX" = ( -/obj/machinery/door/airlock/grunge{ - name = "Bitrunner Den" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor, -/area/station/security/bitden) +"krA" = ( +/obj/machinery/light/built/directional/east, +/obj/structure/table/wood, +/obj/item/storage/dice, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "krD" = ( /obj/machinery/camera/autoname/directional/west, /obj/machinery/atmospherics/components/unary/passive_vent{ @@ -31254,13 +31105,11 @@ /turf/open/floor/iron/white, /area/station/science/research) "krH" = ( -/obj/effect/turf_decal/box, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "krQ" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 @@ -31282,11 +31131,18 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/security/brig) +"krW" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/status_display/ai/directional/north, +/turf/open/floor/iron, +/area/station/engineering/storage) "krY" = ( -/obj/machinery/light/small/built/directional/east, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/secondary/exit/departure_lounge) "ksa" = ( /turf/open/space/basic, /area/space) @@ -31295,14 +31151,12 @@ dir = 1 }, /obj/structure/cable, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) "ksl" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/sink/directional/east, -/obj/machinery/defibrillator_mount/directional/west, +/obj/item/radio/intercom/directional/east, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/chemistry) "ksp" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 @@ -31312,34 +31166,74 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/brig) +"kst" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/hop) "ksu" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"ksM" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Medical West Side Entrance" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 }, -/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/white/textured, +/area/station/medical/medbay/central) +"ksL" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/machinery/smartfridge/chemistry/preloaded, +/turf/open/floor/iron/white, /area/station/medical/chemistry) +"ksR" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/station/service/library/lounge) "ksZ" = ( -/obj/structure/chair/wood{ - dir = 8 +/obj/machinery/light/small/directional/north, +/obj/machinery/griddle, +/turf/open/floor/iron/kitchen, +/area/station/security/prison/mess) +"ktn" = ( +/obj/machinery/atmospherics/components/binary/volume_pump{ + dir = 8; + name = "Waste Collection" }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/wood, -/area/station/security/prison/rec) +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"ktq" = ( +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/grill, +/turf/open/floor/iron/kitchen, +/area/station/security/prison/mess) "ktt" = ( /obj/machinery/light/directional/west, /obj/structure/table, /obj/item/storage/box/prisoner{ - pixel_y = 8 + pixel_y = 8; + pixel_x = 7 + }, +/obj/item/storage/box/prisoner{ + pixel_x = 7 + }, +/obj/item/toy/figure/prisoner{ + pixel_x = -7 }, -/obj/item/storage/box/prisoner, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "kua" = ( @@ -31358,7 +31252,8 @@ }, /obj/machinery/camera/motion/directional/south{ c_tag = "AI Sat - AI Chamber South"; - network = list("aicore") + network = list("aicore"); + name = "ai camera" }, /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -31366,21 +31261,27 @@ }, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) +"kun" = ( +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/main) "kuz" = ( /obj/structure/sign/poster/random/directional/south, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science) -"kuC" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) "kuJ" = ( /obj/machinery/newscaster/directional/west, /obj/machinery/vending/wardrobe/robo_wardrobe, /turf/open/floor/iron, /area/station/science/robotics/mechbay) +"kvg" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "kvh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -31414,7 +31315,7 @@ name = "Locker Room Shutters Control"; req_access = list("security") }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "kvC" = ( /obj/effect/turf_decal/trimline/red/filled/line, @@ -31424,27 +31325,19 @@ /obj/machinery/bluespace_vendor/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"kvD" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "kvL" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/turf/open/floor/plating, -/area/station/engineering/atmos/storage) +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "kvW" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/science) +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "kvX" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 }, /obj/effect/turf_decal/trimline/dark_blue/line, -/obj/machinery/newscaster/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) @@ -31466,46 +31359,46 @@ /obj/item/pen, /turf/open/floor/iron/dark, /area/station/security/office) +"kwg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "kwk" = ( -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage) -"kwB" = ( -/obj/effect/turf_decal/tile/dark_blue/full, /obj/effect/turf_decal/box, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, -/area/station/command/bridge) +/area/station/engineering/transit_tube) "kwG" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters{ + id = "cmo_office_shutters"; + name = "CMO's Office Shutters"; + dir = 8 + }, +/turf/open/floor/plating, +/area/station/command/heads_quarters/cmo) +"kwK" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "library_desk_shutters"; - name = "Library Desk Shutters"; - dir = 1 - }, -/obj/structure/table/wood, -/obj/structure/desk_bell{ - pixel_y = 7; - pixel_x = 7 - }, -/turf/open/floor/iron/dark/textured, -/area/station/service/library/printer) -"kwT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/obj/machinery/door/airlock/maintenance{ + name = "Forging Lab Maintenance" }, -/obj/effect/turf_decal/box/corners, -/obj/structure/closet/secure_closet/chemical, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry) +/obj/effect/mapping_helpers/airlock/access/any/science/general, +/obj/effect/mapping_helpers/airlock/access/any/supply/general, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "kwV" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -31516,9 +31409,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "kxd" = ( @@ -31538,10 +31428,8 @@ /turf/closed/wall, /area/station/commons/dorms) "kxp" = ( -/obj/structure/frame/machine, -/obj/item/circuitboard/machine/chem_master, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/closed/wall, +/area/station/medical/surgery) "kxq" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 @@ -31552,18 +31440,12 @@ /turf/open/floor/iron/dark, /area/station/security/holding_cell) "kxu" = ( -/obj/machinery/light_switch/directional/south, -/obj/structure/table, -/obj/item/shovel/spade, -/obj/item/plant_analyzer, -/obj/item/cultivator, -/obj/item/reagent_containers/cup/watering_can, -/obj/machinery/firealarm/directional/west, +/obj/machinery/composters, /turf/open/floor/iron/dark, /area/station/security/prison/garden) "kxC" = ( /obj/effect/turf_decal/tile/orange/fourcorners, -/obj/structure/window/reinforced/tinted/spawner/directional/south, +/obj/structure/window/reinforced/tinted, /obj/structure/toilet{ dir = 4 }, @@ -31575,55 +31457,19 @@ /obj/structure/cable, /obj/effect/turf_decal/box, /obj/machinery/holopad, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "kxM" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/structure/flora/bush/leafy, /turf/open/floor/grass, /area/station/hallway/secondary/exit/departure_lounge) -"kxR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "kxU" = ( /obj/effect/spawner/random/structure/chair_flipped{ dir = 8 }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"kxV" = ( -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"kya" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/command/heads_quarters/cmo) -"kyl" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"kyt" = ( -/obj/effect/turf_decal/box, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/bridge) "kyu" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -31632,14 +31478,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/duct, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/service{ name = "Bar Backroom" }, /obj/effect/mapping_helpers/airlock/access/all/service/bar, -/obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/service/bar/backroom) +"kyB" = ( +/obj/structure/sign/painting/library{ + pixel_x = -32 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "kyX" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -31648,7 +31503,9 @@ dir = 4 }, /obj/structure/sign/departments/engineering/directional/west, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/hallway/primary/aft) "kyY" = ( /obj/structure/cable, @@ -31673,40 +31530,11 @@ /turf/open/floor/carpet/purple, /area/station/command/heads_quarters/rd) "kzh" = ( -/obj/machinery/computer/quantum_console, -/obj/machinery/light/neon_lining{ - dir = 8 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/textured, +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/item/radio/intercom/prison/directional/south, +/obj/machinery/byteforge, +/turf/open/floor/iron/dark, /area/station/security/bitden) -"kzi" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) -"kzt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance{ - name = "Medbay Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "kzv" = ( /obj/machinery/atmospherics/components/trinary/mixer/flipped, /turf/open/floor/iron, @@ -31738,6 +31566,10 @@ dir = 8 }, /area/station/commons/fitness/recreation) +"kAb" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "kAo" = ( /obj/effect/turf_decal/trimline/red/warning{ dir = 8 @@ -31745,8 +31577,16 @@ /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) +"kAx" = ( +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/security/courtroom) "kAS" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/small/directional/east, @@ -31755,9 +31595,20 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/port) "kAV" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/science) +/obj/machinery/firealarm/directional/west, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"kAW" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "kBh" = ( /obj/structure/chair/stool/directional/south, /obj/machinery/light/small/directional/north, @@ -31785,33 +31636,62 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/security/prison/safe) -"kBL" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) -"kCA" = ( +"kBK" = ( +/obj/effect/turf_decal/trimline/neutral/filled/warning, +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/kitchenspike, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) -"kCF" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) -"kCL" = ( +/obj/machinery/duct, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"kCQ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/area/station/medical/medbay/aft) +"kBL" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/table/reinforced/rglass, +/obj/item/book/manual/wiki/infections{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/book/manual/wiki/surgery{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/book/manual/wiki/medicine{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/book/manual/wiki/chemistry{ + pixel_x = 5 + }, +/turf/open/floor/iron/checker{ dir = 1 }, +/area/station/command/heads_quarters/cmo) +"kCA" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/cargo_shelf, /obj/machinery/light/small/directional/north, -/obj/structure/table, -/obj/item/analyzer, -/obj/item/healthanalyzer, /turf/open/floor/iron, -/area/station/engineering/storage/tech) +/area/station/cargo/warehouse) +"kCD" = ( +/obj/effect/turf_decal/trimline/red/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"kCF" = ( +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "kCR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -31821,6 +31701,10 @@ }, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) +"kCU" = ( +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/plating, +/area/station/maintenance/central) "kCZ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, @@ -31841,50 +31725,34 @@ /obj/machinery/door/window/left/directional/north{ name = "Hydroponics Desk" }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "hydroponics_shutters"; - name = "Hydroponics Shutters" + name = "Hydroponics Shutters"; + dir = 1 }, /turf/open/floor/iron/dark/textured, /area/station/service/hydroponics) -"kDd" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/button/door/directional/north{ - id = "engi_lobby_shutters"; - name = "Engineering Lobby Shutters Control" - }, -/obj/machinery/camera/autoname/directional/north, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/empty, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/engineering/break_room) +"kDc" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) "kDe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/blobstart, /turf/open/floor/iron, /area/station/maintenance/department/electrical) -"kDg" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/obj/machinery/station_map/engineering/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/brig) "kDm" = ( -/obj/effect/landmark/blobstart, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/closed/wall/r_wall, +/area/station/security/checkpoint/medical) "kDx" = ( /obj/machinery/firealarm/directional/east, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/machinery/space_heater, /turf/open/floor/iron/dark/side{ dir = 6 }, @@ -31895,38 +31763,16 @@ /turf/open/floor/plating, /area/station/engineering/atmos) "kDS" = ( +/obj/machinery/airalarm/directional/south, /obj/machinery/photocopier, /turf/open/floor/wood, /area/station/service/lawoffice) "kEl" = ( -/obj/machinery/newscaster/directional/east, -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/service/library/printer) -"kEq" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/obj/machinery/airalarm/directional/south, -/obj/structure/reagent_dispensers/wall/peppertank/directional/east, -/obj/machinery/camera/directional/south{ - c_tag = "Security - Medical Post"; - name = "medical camera"; - network = list("ss13","medbay") - }, -/obj/machinery/computer/records/security{ - dir = 1 - }, +/obj/machinery/status_display/evac/directional/east, +/obj/structure/rack, +/obj/item/crowbar/red, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"kEt" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/engineering/transit_tube) "kEL" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -31936,13 +31782,18 @@ }, /obj/effect/turf_decal/trimline/neutral/corner, /obj/item/kirbyplants/random, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"kEM" = ( +/obj/machinery/airalarm/directional/west, +/obj/structure/table, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "kEN" = ( /obj/machinery/plumbing/ooze_sucker{ mapping_id = "5" }, -/obj/machinery/light/floor/has_bulb, /turf/open/floor/engine, /area/station/science/xenobiology) "kEX" = ( @@ -31959,64 +31810,29 @@ /obj/machinery/atm/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"kFf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, -/obj/machinery/atmospherics/components/tank/air{ - dir = 4 +"kFe" = ( +/obj/structure/chair{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/white, +/area/station/medical/virology) "kFk" = ( /turf/closed/wall/r_wall, /area/station/security/bitden) -"kFu" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "kFw" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/machinery/light/small/directional/west, -/obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, /obj/effect/mapping_helpers/apc/cell_5k, /turf/open/floor/iron, /area/station/engineering/gravity_generator) -"kFE" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/atmospherics/components/binary/pump/on/supply/visible/layer4{ - dir = 8; - name = "Air to External Ports" - }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/engineering/break_room) -"kFI" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "kFK" = ( -/obj/effect/turf_decal/stripes/line, +/obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/mob/living/basic/mouse/brown/tom, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/side, /area/station/security/prison/work) "kFM" = ( /obj/machinery/navbeacon{ @@ -32029,23 +31845,30 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "kFQ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /obj/machinery/light/directional/east, /obj/structure/sign/flag/nanotrasen/directional/east, /obj/machinery/suit_storage_unit/hos, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) -"kFV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/obj/item/kirbyplants/random, -/obj/structure/sign/poster/contraband/random/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"kGn" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +"kGo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/machinery/holopad, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) +"kGq" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/break_room) "kGr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32073,37 +31896,34 @@ /turf/open/floor/iron/dark/textured_large, /area/station/cargo/miningoffice) "kHg" = ( -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/wood, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/office) "kHh" = ( -/obj/machinery/door/window/left/directional/south, -/obj/structure/table/wood/fancy, -/obj/structure/sign/painting/large/library{ +/obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) -"kHk" = ( -/obj/structure/sign/warning/secure_area/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/turf/open/floor/iron, +/area/station/engineering/storage) "kHw" = ( /obj/item/paper/crumpled, /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) "kHL" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Engineering - Atmospherics Pumping Room"; - name = "engineering camera" +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) +/obj/machinery/door/firedoor, +/turf/open/floor/iron/textured, +/area/station/engineering/main) "kHP" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, @@ -32115,8 +31935,17 @@ /turf/open/floor/engine, /area/station/science/explab) "kIl" = ( -/obj/machinery/light_switch/directional/south, +/obj/machinery/light/small/directional/south, /obj/machinery/camera/autoname/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = -5 + }, +/obj/structure/chair/plastic{ + dir = 8 + }, /turf/open/floor/wood, /area/station/security/prison/rec) "kIn" = ( @@ -32139,9 +31968,11 @@ }, /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, -/area/station/maintenance/port/fore) +/area/station/commons/fitness) "kIA" = ( /obj/machinery/suit_storage_unit/security, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -32150,26 +31981,36 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"kIE" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/airalarm/directional/west, +/obj/structure/tank_dispenser, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "kIQ" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/rack, /obj/structure/window/reinforced/spawner/directional/north, /obj/item/clothing/suit/armor/vest/alt/sec{ pixel_y = 3; - pixel_x = -3 + pixel_x = 6 + }, +/obj/item/clothing/suit/armor/vest/alt/sec{ + pixel_x = 6 }, -/obj/item/clothing/suit/armor/vest/alt/sec, /obj/item/clothing/suit/armor/vest/alt/sec{ pixel_y = -3; - pixel_x = 3 + pixel_x = 6 }, /obj/item/clothing/head/helmet/sec{ - pixel_x = -3; + pixel_x = -6; pixel_y = 3 }, -/obj/item/clothing/head/helmet/sec, /obj/item/clothing/head/helmet/sec{ - pixel_x = 3; + pixel_x = -6 + }, +/obj/item/clothing/head/helmet/sec{ + pixel_x = -6; pixel_y = -3 }, /turf/open/floor/iron/dark, @@ -32182,7 +32023,7 @@ /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/closet/secure_closet/security/sec, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "kJa" = ( /obj/effect/turf_decal/box, @@ -32192,8 +32033,7 @@ /obj/machinery/camera/directional/south{ c_tag = "AI Chamber - Secondary Core"; name = "core camera"; - network = list("aicore"); - dir = 5 + network = list("aicore") }, /obj/machinery/flasher/directional/north{ id = "AI"; @@ -32202,9 +32042,23 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) "kJo" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/wood, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/tile/yellow/full, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/poddoor/preopen{ + id = "engineering"; + name = "Engineering Blast Door" + }, +/obj/machinery/door/window/left/directional/east{ + name = "Atmospherics Deliveries"; + req_access = list("atmospherics") + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos/office) "kJs" = ( /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark/side{ @@ -32220,18 +32074,12 @@ /area/station/hallway/secondary/service) "kJy" = ( /obj/effect/turf_decal/stripes/end, +/obj/machinery/light/small/directional/south, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, /turf/open/floor/engine, /area/station/security/execution) -"kJA" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "kJI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/graffiti, @@ -32251,31 +32099,31 @@ /turf/open/floor/iron, /area/station/commons/storage/primary) "kKi" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/structure/bed{ + dir = 4 }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/captain/private) +/obj/effect/spawner/random/bedsheet{ + dir = 4 + }, +/obj/effect/landmark/start/psychologist, +/turf/open/floor/wood, +/area/station/medical/psychology) "kKm" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ dir = 1 }, -/obj/machinery/light_switch/directional/south, /obj/machinery/light/directional/south, +/obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark, /area/station/security/office) "kKw" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/window/left/directional/south{ - name = "Engineering Deliveries"; - req_access = list("engineering") +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 }, +/obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, -/area/station/engineering/storage) +/area/station/engineering/main) "kKH" = ( /obj/effect/turf_decal/stripes/end, /turf/open/floor/plating/airless, @@ -32286,28 +32134,15 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/maintenance/port/fore) -"kLd" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/obj/machinery/light/directional/south, -/obj/machinery/firealarm/directional/south, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/engineering/break_room) "kLf" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/closed/wall, +/area/station/medical/exam_room) "kLj" = ( /turf/open/floor/carpet/neon/simple/pink, /area/station/science/xenobiology) "kLr" = ( /turf/closed/wall/r_wall, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) "kLu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32315,14 +32150,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/port) -"kLK" = ( +"kLF" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/chair/comfy/shuttle{ - dir = 1; - name = "Command Seat"; - desc = "A comfortable, secure seat. It has a more sturdy looking buckling system for smoother captaining." +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/modular_computer/preset/id{ + dir = 8 }, -/obj/effect/landmark/start/captain, /turf/open/floor/iron/dark, /area/station/command/bridge) "kLO" = ( @@ -32339,33 +32172,31 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/general, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, -/area/station/maintenance/port) -"kMh" = ( -/obj/structure/chair/sofa/left/brown{ - dir = 8 +/area/station/cargo/storage) +"kMz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/chair/wood{ + dir = 1 }, -/turf/open/floor/carpet/blue, -/area/station/medical/psychology) +/turf/open/floor/wood, +/area/station/service/library/lounge) "kMC" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/binary/pump/on/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "kMD" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "kME" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/obj/machinery/requests_console/directional/south{ - department = "Kitchen"; - name = "Kitchen Requests Console"; - supplies_requestable = 1 - }, /obj/structure/table, /obj/machinery/microwave{ pixel_y = 6 @@ -32373,18 +32204,40 @@ /turf/open/floor/iron/kitchen, /area/station/service/kitchen) "kMH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Security"; + location = "EVA2" + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) +"kMQ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/purple/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "kMR" = ( /obj/machinery/holopad, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/iron, /area/station/maintenance/department/electrical) "kMW" = ( -/obj/machinery/newscaster/directional/west, -/obj/machinery/vending/cart, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/computer/cargo{ + dir = 4 + }, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) "kMY" = ( @@ -32420,20 +32273,6 @@ dir = 1 }, /area/station/commons/locker) -"kNv" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/machinery/newscaster/directional/south, -/obj/machinery/light/directional/south, -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/landmark/start/paramedic, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/medical/paramedic) "kNw" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -32449,7 +32288,50 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/iron/dark/textured, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) +"kNy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"kNA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/box, +/turf/open/floor/plating, +/area/station/maintenance/department/science) +"kNH" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door_buttons/access_button{ + idDoor = "xeno_airlock_exterior"; + idSelf = "xeno_airlock_control"; + name = "Access Button"; + req_access = list("xenobiology"); + pixel_x = 26 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/structure/liquid_barrier, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + autoclose = 0; + frequency = 1449; + id_tag = "xeno_airlock_exterior"; + name = "Xenobiology Lab External Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/iron/white/textured, +/area/station/science/xenobiology/hallway) "kNJ" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -32463,19 +32345,11 @@ }, /area/station/service/hydroponics/garden) "kOa" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/morgue{ - name = "Curator's Study"; - req_access = list("library"); - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/service/library/printer) +/obj/machinery/airalarm/directional/west, +/obj/item/storage/secure/safe/directional/south, +/obj/machinery/suit_storage_unit/cmo, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "kOi" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/brown/visible{ @@ -32483,11 +32357,19 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) -"kOk" = ( -/obj/structure/cable, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron/dark, -/area/station/security/prison) +"kOl" = ( +/obj/machinery/light/small/broken/directional/south, +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/bottle/whiskey{ + pixel_y = 7; + pixel_x = -7 + }, +/obj/item/reagent_containers/cup/glass/bottle/rum{ + pixel_x = 6; + pixel_y = 3 + }, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "kOo" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/corner{ dir = 1 @@ -32502,13 +32384,6 @@ name = "Holodeck Projector Floor" }, /area/station/holodeck/rec_center) -"kOB" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/obj/effect/landmark/start/captain, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) "kOK" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 @@ -32521,6 +32396,19 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) +"kOM" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = -5 + }, +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_b) "kOW" = ( /obj/effect/spawner/random/structure/chair_maintenance, /obj/effect/mapping_helpers/burnt_floor, @@ -32532,6 +32420,14 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/foyer) +"kPh" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) "kPj" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -32546,27 +32442,16 @@ /area/station/command/heads_quarters/hos) "kPm" = ( /obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "kPo" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 4 - }, -/obj/machinery/firealarm/directional/north, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/light_switch/directional/north{ - pixel_x = -8 - }, -/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage) -"kPv" = ( -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/starboard/aft) "kPJ" = ( /obj/machinery/corral_corner{ mapping_id = "1" @@ -32582,24 +32467,12 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"kPL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "kQe" = ( /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"kQi" = ( -/obj/machinery/computer/message_monitor, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "kQj" = ( /obj/structure/disposalpipe/sorting/mail/flip{ dir = 4 @@ -32608,16 +32481,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/mapping_helpers/mail_sorting/science/xenobiology, -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) -"kQk" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/chair/office, -/obj/effect/landmark/start/research_director, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "kQo" = ( /obj/machinery/light/directional/west, +/obj/structure/chair/sofa/left/maroon{ + dir = 4 + }, +/obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark/side{ dir = 8 }, @@ -32628,35 +32499,22 @@ dir = 4 }, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "kQx" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, /obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ dir = 1 }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "kQz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table/reinforced, -/obj/item/computer_disk/atmos{ - pixel_y = 6; - pixel_x = 4 - }, -/obj/item/storage/fancy/cigarettes/cigars, -/obj/item/lighter{ - pixel_y = -6 - }, -/obj/item/toy/figure/ce{ - pixel_y = 12; - pixel_x = -8 - }, -/turf/open/floor/iron, +/obj/effect/turf_decal/box, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/iron/large, /area/station/command/heads_quarters/ce) "kQK" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) @@ -32685,24 +32543,16 @@ /obj/item/stack/ore/uranium, /turf/open/floor/plating, /area/station/maintenance/port) -"kQU" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/turf_decal/caution/stand_clear, -/obj/machinery/door/poddoor/preopen{ - id = "bridge_blast_doors"; - name = "Bridge Access Blast Door" - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "kQX" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Engineering - Atmospherics Pumping Room"; + name = "engineering camera" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold/supply/visible{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) "kRc" = ( @@ -32724,28 +32574,12 @@ dir = 1 }, /area/station/cargo/office) -"kRo" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "kRu" = ( /obj/structure/lattice/catwalk, -/obj/item/stack/cable_coil, /obj/structure/sign/warning/electric_shock/directional/north, +/obj/item/stack/cable_coil, /turf/open/space, /area/station/solars/port/fore) -"kRw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "kRK" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -32770,7 +32604,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/box, -/turf/open/floor/iron, +/turf/open/floor/iron/large, /area/station/tcommsat/computer) "kSL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -32780,15 +32614,20 @@ /turf/open/floor/plating, /area/station/maintenance/port) "kSU" = ( -/obj/structure/bookcase/random/religion, -/turf/open/floor/wood, -/area/station/service/library) -"kSX" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Chief Medical Officer's Quarters" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/cmo, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/cmo) "kTj" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -32808,20 +32647,10 @@ /turf/open/floor/iron/dark/textured, /area/station/service/hydroponics/garden) "kTq" = ( -/obj/machinery/light/directional/east, /obj/machinery/firealarm/directional/east, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) -"kTy" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "kTz" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -32835,6 +32664,14 @@ /obj/effect/landmark/navigate_destination/dockescpod4, /turf/open/floor/iron/dark/textured_large, /area/station/engineering/storage) +"kTE" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/purple/line, +/obj/machinery/station_map/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "kUa" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -32845,22 +32682,13 @@ dir = 4 }, /obj/structure/cable, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) -"kUf" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "kUm" = ( -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/storage) +/obj/structure/table, +/obj/effect/spawner/random/maintenance/five, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "kUp" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -32886,13 +32714,9 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "kUB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/structure/filingcabinet, +/turf/open/floor/carpet/blue, +/area/station/commons/vacant_room/office) "kUI" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -32913,8 +32737,23 @@ /obj/effect/turf_decal/box, /obj/machinery/holopad, /obj/machinery/duct, -/turf/open/floor/iron/white/smooth_large, +/turf/open/floor/iron/showroomfloor, /area/station/science/research) +"kUM" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/warning{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "kUP" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/machinery/light/directional/west, @@ -32922,15 +32761,17 @@ /obj/effect/spawner/random/techstorage/command_all, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) -"kUV" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 +"kUQ" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/computer/crew{ + dir = 1 }, -/turf/open/floor/engine/telecomms, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"kUV" = ( +/obj/machinery/telecomms/server/presets/supply, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) "kVb" = ( /obj/structure/table, @@ -32949,9 +32790,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/port/aft) "kVk" = ( @@ -32964,10 +32802,20 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "kVn" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/liquid_barrier, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/science/xenobio, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/security/brig) +/area/station/science/xenobiology) "kVq" = ( /obj/machinery/duct, /obj/machinery/light/neon_lining{ @@ -32987,6 +32835,14 @@ /obj/item/stock_parts/cell/high, /turf/open/floor/plating, /area/station/engineering/main) +"kVE" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table/wood/fancy, +/obj/effect/spawner/random/decoration/statue{ + spawn_loot_chance = 35 + }, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "kVF" = ( /obj/machinery/duct, /turf/open/floor/carpet/orange, @@ -33016,7 +32872,7 @@ dir = 8 }, /obj/structure/extinguisher_cabinet/directional/west, -/obj/structure/table/glass, +/obj/structure/table, /obj/item/food/grown/wheat, /obj/item/food/grown/watermelon, /obj/item/food/grown/watermelon, @@ -33049,13 +32905,15 @@ id_tag = "dorm_2"; name = "Dorm 2" }, +/obj/structure/cable, /turf/open/floor/iron/dark/textured, -/area/station/commons/dorms) +/area/station/commons/dorms/room2) "kWu" = ( /obj/structure/nestbox, /turf/open/floor/grass, /area/station/service/hydroponics) "kWy" = ( +/obj/effect/turf_decal/bot, /obj/structure/table, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow{ @@ -33067,21 +32925,41 @@ /obj/item/clothing/gloves/color/yellow{ pixel_y = 9 }, -/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) +"kWG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/door/airlock/maintenance{ + name = "Departures Medical Post Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/medical/treatment_center) "kWI" = ( -/obj/structure/easel, -/obj/item/canvas/twentythree_twentythree, -/obj/item/canvas/twentythree_twentythree, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"kWN" = ( -/obj/machinery/computer/cryopod/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark, +/obj/machinery/light/small/directional/north, +/obj/machinery/iv_drip, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) +"kWN" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, /area/station/security/prison/safe) "kWT" = ( /obj/effect/spawner/random/trash/moisture_trap, @@ -33107,22 +32985,6 @@ /obj/item/shovel, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) -"kXf" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/window/left/directional/north{ - name = "Atmospherics Deliveries"; - req_access = list("atmospherics") - }, -/turf/open/floor/iron/dark, -/area/station/engineering/break_room) -"kXq" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 1 - }, -/obj/machinery/shower/directional/north, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) "kXx" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -33130,40 +32992,45 @@ /obj/effect/turf_decal/trimline/neutral/line, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"kXH" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "kXK" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/seed_extractor, -/obj/machinery/camera/autoname/directional/south, -/obj/effect/turf_decal/bot, +/obj/structure/table, +/obj/item/shovel/spade, +/obj/item/plant_analyzer, +/obj/item/cultivator, +/obj/item/reagent_containers/cup/watering_can, /turf/open/floor/iron/dark, /area/station/security/prison/garden) "kXL" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 8 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/engineering{ - name = "Auxiliary Construction Storage" +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/iron/white/textured, +/area/station/medical/office) "kXN" = ( -/obj/structure/dresser, -/turf/open/floor/wood/tile, -/area/station/commons/dorms) +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/structure/table/reinforced, +/obj/item/reagent_containers/cup/glass/bottle/whiskey{ + pixel_y = 7; + pixel_x = 7 + }, +/obj/item/reagent_containers/cup/glass/flask{ + pixel_x = -6; + pixel_y = 9 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -5; + pixel_y = 3 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "kYa" = ( /obj/machinery/light/directional/west, /obj/item/radio/intercom/directional/west, @@ -33175,18 +33042,6 @@ /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"kYx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/camera/directional/north{ - c_tag = "Medical - Pathology Access"; - name = "medical camera"; - network = list("ss13","medbay") - }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/iron/white, -/area/station/medical/virology) "kYB" = ( /obj/structure/table, /obj/item/storage/cans/sixbeer, @@ -33201,12 +33056,16 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) +"kYL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/service/janitor) "kYR" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "ce_privacy"; - name = "CE Office Shutters" +/obj/machinery/door/poddoor/shutters{ + id = "ce_office_shutters"; + name = "CE's Office Shutters" }, /obj/machinery/door/poddoor/preopen{ id = "engineering"; @@ -33215,29 +33074,17 @@ /turf/open/floor/plating, /area/station/command/heads_quarters/ce) "kYU" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/bureaucracy/briefcase{ - spawn_loot_count = 2; - spawn_random_offset = 1 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/wood, -/area/station/service/library/private) -"kYW" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) -"kZe" = ( -/obj/machinery/light/directional/east, -/obj/structure/table/wood, -/obj/item/camera_film, -/obj/item/camera{ - pixel_y = 16 +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/cmo) +"kZc" = ( +/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/wood, -/area/station/command/heads_quarters/captain) +/area/station/service/bar) "kZf" = ( /obj/structure/table, /obj/item/toy/crayon/spraycan{ @@ -33250,6 +33097,21 @@ /obj/item/paint_palette, /turf/open/floor/iron/dark/side, /area/station/commons/fitness/recreation) +"kZo" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"kZw" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/wood, +/area/station/command/meeting_room) +"kZz" = ( +/obj/machinery/telecomms/processor/preset_four, +/turf/open/floor/circuit/green/telecomms, +/area/station/tcommsat/server) "kZD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33257,41 +33119,60 @@ /obj/structure/cable/layer1, /turf/open/floor/iron, /area/station/engineering/storage) -"kZM" = ( +"kZE" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology/glass{ + name = "Secondary Pathology Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/turf/open/floor/iron/white/textured, +/area/station/medical/virology) +"kZH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, /turf/open/floor/iron/dark, -/area/station/command/teleporter) +/area/station/command/bridge) "kZN" = ( /obj/structure/flora/bush/jungle/a/style_random, /turf/open/floor/grass, /area/station/hallway/secondary/exit/departure_lounge) "kZS" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /obj/machinery/button/door/incinerator_vent_atmos_aux{ - pixel_x = -8; + pixel_x = -7; pixel_y = -24 }, /obj/machinery/button/door/incinerator_vent_atmos_main{ - pixel_x = -8; + pixel_x = -7; pixel_y = -36 }, +/obj/machinery/button/ignition/incinerator/atmos{ + pixel_y = -24; + pixel_x = 7 + }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"laj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/mask/breath, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "lat" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/machinery/newscaster/directional/north, /obj/structure/railing{ dir = 4 @@ -33305,15 +33186,14 @@ /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) "laO" = ( -/obj/structure/closet/secure_closet/freezer/kitchen, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/coldroom, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) "laR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/structure/window/reinforced/tinted, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +/area/station/ai_monitored/command/storage/eva) "lbf" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/effect/turf_decal/trimline/blue/line{ @@ -33321,14 +33201,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"lbp" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/engineering/break_room) "lbC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33337,18 +33209,10 @@ dir = 4 }, /area/station/commons/fitness/recreation) -"lbJ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "lbK" = ( /obj/structure/noticeboard/directional/north, /obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_y = 4 - }, +/obj/item/paper_bin, /obj/effect/spawner/random/bureaucracy/folder{ pixel_y = 6 }, @@ -33358,24 +33222,43 @@ /turf/open/floor/wood, /area/station/service/chapel/funeral) "lbL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters{ - id = "tele_shutter"; - name = "Teleporter Access Shutter"; - dir = 8 +/obj/machinery/light/directional/south, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/iron/dark/textured, -/area/station/command/teleporter) +/turf/open/floor/wood, +/area/station/medical/psychology) "lca" = ( /obj/structure/sign/warning/radiation/directional/west, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) +"lco" = ( +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) +"lct" = ( +/obj/machinery/light/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) +"lcD" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/modular_computer/preset/command{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"lcE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "lcI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33391,6 +33274,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/gravity_generator) +"lcP" = ( +/obj/structure/table/wood, +/obj/item/book/manual/wiki/security_space_law, +/obj/effect/spawner/random/entertainment/coin, +/obj/item/toy/figure/captain{ + pixel_x = -12 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "lcS" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 8 @@ -33407,41 +33299,14 @@ /obj/effect/turf_decal/trimline/neutral/filled/line, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"lcX" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "ldz" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"ldF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/central) -"ldV" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) +"ldS" = ( +/turf/closed/wall/r_wall, +/area/station/medical/chemistry) "ldX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33450,6 +33315,26 @@ dir = 4 }, /area/station/commons/fitness) +"lea" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters{ + id = "kitchen_sec_shutters"; + name = "Kitchen Shutters"; + dir = 1 + }, +/obj/structure/desk_bell{ + pixel_y = 2; + pixel_x = -6 + }, +/turf/open/floor/iron/dark/textured, +/area/station/service/kitchen) "lej" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -33461,10 +33346,20 @@ }, /turf/open/floor/iron/dark/textured, /area/station/commons/dorms/laundry) -"leq" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +"lem" = ( +/obj/machinery/airalarm/directional/west, +/obj/structure/table/reinforced/rglass, +/obj/item/emergency_bed{ + pixel_y = 7 + }, +/obj/item/emergency_bed{ + pixel_y = 14 + }, +/obj/item/emergency_bed{ + pixel_y = 21 + }, +/turf/open/floor/iron/dark, +/area/station/medical/paramedic) "ley" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -33472,15 +33367,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"lez" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "leA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -33519,9 +33405,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "leN" = ( @@ -33542,6 +33425,32 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) +"lfd" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/table/reinforced/rglass, +/obj/item/paper_bin{ + pixel_y = 5; + pixel_x = -8 + }, +/obj/item/folder/red{ + pixel_x = 7 + }, +/obj/item/folder/white{ + pixel_x = 7; + pixel_y = 3 + }, +/obj/item/pen{ + pixel_x = 7 + }, +/obj/item/emergency_bed{ + pixel_y = 7 + }, +/turf/open/floor/iron/white, +/area/station/security/medical) "lfg" = ( /obj/effect/turf_decal/trimline/neutral/filled/warning{ dir = 4 @@ -33552,100 +33461,84 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/iron/dark/side{ dir = 4 }, -/turf/open/floor/iron, /area/station/hallway/primary/aft) "lfi" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/station_map/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) +"lfj" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 + }, +/obj/machinery/vending/wardrobe/viro_wardrobe, +/turf/open/floor/iron/white, +/area/station/medical/virology) "lfm" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/door/firedoor, /obj/machinery/door/airlock/grunge{ name = "Cleaning Closet" }, -/obj/machinery/duct, -/turf/open/floor/plating, +/turf/open/floor/iron/dark/textured, /area/station/security/prison) "lfo" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/corner, +/obj/effect/turf_decal/trimline/yellow/filled/warning, /obj/structure/cable/layer1, /turf/open/floor/iron, /area/station/engineering/main) -"lfw" = ( -/obj/structure/sign/warning/secure_area/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/maintenance/department/science) -"lfx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +"lfs" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/engineering/engine_smes) -"lfD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 1 +/obj/effect/turf_decal/trimline/green/line{ + dir = 8 }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"lfI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/item/grown/bananapeel, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) +"lfw" = ( +/obj/structure/sign/warning/secure_area/directional/south, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/maintenance/department/engine/atmos) +/area/station/maintenance/department/science) +"lfx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/engine_smes) "lfT" = ( -/obj/machinery/airalarm/directional/south, /obj/machinery/light/directional/south, /obj/structure/filingcabinet/chestdrawer, /turf/open/floor/iron/dark/side, /area/station/tcommsat/computer) -"lgs" = ( -/obj/effect/decal/cleanable/dirt, +"lgx" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) +/area/station/medical/morgue) "lgB" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_burn_chamber_input, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/burnchamber) "lhd" = ( -/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, +/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/maintenance/department/engine) "lhg" = ( /obj/machinery/duct, /turf/open/floor/iron/kitchen, @@ -33655,19 +33548,26 @@ /obj/machinery/button/door/directional/north{ id = "iso_cell_hall_vent"; name = "Isolation Cell Hall Vent Control"; - req_access = list("brig"); + req_access = list("security"); pixel_x = 6 }, /obj/machinery/button/door/directional/north{ id = "iso_cell_hall_bolt"; name = "Isolation Cell Hall Bolt Control"; - req_access = list("brig"); + req_access = list("security"); normaldoorcontrol = 1; specialfunctions = 4; pixel_x = -6 }, /turf/open/floor/iron/dark, /area/station/security/prison) +"lhn" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "lho" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -33689,12 +33589,11 @@ }, /obj/machinery/button/door/directional/south{ id = "eva_shutters"; - name = "EVA Shutters"; + name = "EVA Storage Shutters Control"; req_access = list("command"); pixel_x = -7 }, /obj/structure/rack, -/obj/machinery/light_switch/directional/east, /obj/item/storage/toolbox/electrical{ pixel_y = 6 }, @@ -33704,6 +33603,12 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) +"lhs" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/open/floor/carpet/green, +/area/station/service/abandoned_gambling_den) "lhv" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/effect/turf_decal/trimline/dark_blue/warning{ @@ -33721,14 +33626,18 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos) -"lhN" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 +"lhG" = ( +/obj/machinery/door/window/left/directional/north, +/obj/structure/table/wood/fancy/blue, +/obj/structure/sign/painting/library{ + pixel_y = -32 }, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) +"lhN" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "lig" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -33740,55 +33649,79 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "liB" = ( -/obj/effect/turf_decal/stripes/end, -/obj/machinery/firealarm/directional/east, +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, /obj/machinery/camera/autoname/directional/east, -/obj/machinery/light_switch/directional/south, +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, /obj/structure/closet/emcloset, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology/hallway) "liC" = ( -/obj/effect/turf_decal/delivery/red, +/obj/effect/turf_decal/bot_red, /obj/machinery/light/directional/east, /obj/structure/sign/warning/electric_shock/directional/east, /obj/machinery/suit_storage_unit/standard_unit, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/large, /area/station/ai_monitored/command/storage/eva) "liD" = ( -/obj/structure/table/reinforced, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/grunge{ + name = "Bitrunner Den" }, +/obj/effect/landmark/navigate_destination/common/bitrunner, /turf/open/floor/iron/dark/textured, /area/station/security/bitden) "liE" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/commons/dorms) +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/machinery/computer/prisoner/management{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "liM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/effect/spawner/random/trash/garbage, +/obj/machinery/door/poddoor/shutters{ + id = "medical_security_post"; + name = "Security Post Shutters"; + dir = 1 + }, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/security/checkpoint/medical) "liN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "engineering"; + name = "Engineering Blast Door" }, -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"liQ" = ( -/obj/machinery/light/small/directional/west, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/engineering/storage) +"liQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/service/abandoned_gambling_den) "liV" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 @@ -33802,6 +33735,10 @@ /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) "ljt" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/keycard_auth/directional/west, /obj/structure/cable, /obj/machinery/computer/accounting{ dir = 4 @@ -33811,23 +33748,6 @@ "ljv" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/security) -"ljS" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "Captain's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/captain/private) "ljY" = ( /obj/structure/lattice, /obj/structure/sign/warning/secure_area/directional/east, @@ -33856,10 +33776,26 @@ /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) "lkq" = ( -/obj/machinery/vending/boozeomat, -/obj/machinery/airalarm/directional/west, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/structure/table, +/obj/item/book/manual/wiki/barman_recipes{ + pixel_y = 4 + }, +/obj/item/storage/box/drinkingglasses{ + pixel_x = -6 + }, +/obj/item/storage/box/drinkingglasses{ + pixel_x = 6 + }, /turf/open/floor/wood, /area/station/service/bar) +"lku" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "lkR" = ( /obj/machinery/the_singularitygen, /turf/open/floor/plating, @@ -33869,23 +33805,44 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/wood, /area/station/service/chapel/funeral) +"lkX" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/structure/closet/crate/freezer/surplus_limbs, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "lld" = ( /obj/machinery/space_heater, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"lls" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 +"llg" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 6 }, -/obj/structure/chair{ +/obj/machinery/computer/records/pathology{ dir = 8 }, -/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"llk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"lls" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters{ + id = "engi_office_shutters"; + name = "Engineering Shutters"; + dir = 8 + }, +/obj/machinery/door/poddoor/preopen{ + id = "engineering"; + name = "Engineering Blast Door" + }, +/turf/open/floor/plating, +/area/station/engineering/break_room) "llG" = ( /obj/machinery/door/airlock/grunge{ id_tag = "toilet_3"; @@ -33897,83 +33854,60 @@ /turf/closed/wall, /area/station/engineering/atmos/pumproom) "llR" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 5 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/office) -"llW" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/sign/warning/doors/directional/west, -/obj/machinery/light/small/directional/west, -/obj/machinery/door/poddoor/preopen{ - id = "bridge_blast_doors"; - name = "Bridge Access Blast Door" - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"lme" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) -"lmm" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, +/obj/effect/spawner/random/maintenance, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "lmw" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) +"lmJ" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/blue/filled/line, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "lmK" = ( /obj/machinery/plumbing/ooze_sucker{ mapping_id = "1"; dir = 1 }, -/obj/machinery/light/floor/has_bulb, /turf/open/floor/engine, /area/station/science/xenobiology) +"lmR" = ( +/obj/structure/sign/poster/random/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "lmX" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "detective_office_shutters"; name = "Detective Office Shutters"; dir = 1 }, /turf/open/floor/plating, /area/station/security/detectives_office) -"lng" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/structure/disposaloutlet{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +"lmY" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/holopad, +/turf/open/floor/iron/dark/smooth_large, +/area/station/medical/morgue) "lnm" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /obj/structure/sign/departments/xenobio/directional/north, -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) "lnp" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -33993,20 +33927,9 @@ /turf/open/floor/iron/white, /area/station/science/xenobiology) "lnu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"lnw" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/machinery/vending/medical, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/service/abandoned_gambling_den) "lnE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -34014,36 +33937,54 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"lnK" = ( +/obj/machinery/modular_computer/preset/id{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "lnS" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/tank_holder, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"lnT" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "loc" = ( +/obj/machinery/light/small/directional/south, /obj/vehicle/sealed/mecha/working/ripley/cargo, /turf/open/floor/iron/recharge_floor, /area/station/cargo/warehouse) "loe" = ( -/obj/structure/table/glass, +/obj/structure/table, /obj/item/hemostat, /obj/item/stock_parts/manipulator, /obj/effect/spawner/random/trash/garbage, /turf/open/floor/iron/white, /area/station/maintenance/port/fore) +"loo" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "lor" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/commons/fitness) -"lou" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, +"los" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/break_room) +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) +"lox" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) "loy" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -34052,7 +33993,6 @@ dir = 8 }, /obj/machinery/light/directional/east, -/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "loG" = ( @@ -34070,29 +34010,30 @@ }, /turf/open/floor/iron/dark, /area/station/cargo/sorting) -"loQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "loR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/holopad, -/obj/structure/ghost_critter_spawn, -/turf/open/floor/iron/large, +/turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/exit/departure_lounge) +"lpb" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "lpc" = ( -/obj/structure/chair/office, -/turf/open/floor/wood, -/area/station/service/library/private) +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/main) "lpk" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -34118,24 +34059,39 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/obj/machinery/door/airlock/atmos{ + name = "Turbine Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/effect/landmark/navigate_destination/incinerator, +/turf/open/floor/catwalk_floor/iron, +/area/station/maintenance/disposal/incinerator) +"lpE" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Command - Captain's Office"; + name = "command camera" + }, +/obj/machinery/computer/communications{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "lpR" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"lqb" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 +/turf/open/floor/iron/dark, +/area/station/service/abandoned_gambling_den) +"lpW" = ( +/obj/effect/turf_decal/trimline/green/filled/warning{ + dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/iron/white, -/area/station/medical/pharmacy) +/area/station/medical/virology) "lqh" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -34143,13 +34099,22 @@ /obj/effect/turf_decal/trimline/red/line, /turf/open/floor/iron/dark, /area/station/security/office) -"lqU" = ( -/obj/machinery/power/apc/auto_name/directional/west, +"lqr" = ( +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/west, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) +/turf/open/floor/plating, +/area/station/maintenance/department/engine) +"lqu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) +"lqF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/mob/living/carbon/human/species/monkey, +/turf/open/floor/grass, +/area/station/medical/virology) "lqY" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -34161,16 +34126,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/atmos) -"lrc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "lrd" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 @@ -34178,18 +34133,8 @@ /obj/effect/turf_decal/trimline/red/line{ dir = 10 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"lrg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "lrm" = ( /obj/structure/table/wood/poker, /obj/item/toy/cards/deck{ @@ -34199,34 +34144,51 @@ pixel_y = 8 }, /turf/open/floor/carpet/green, -/area/station/maintenance/starboard/aft) +/area/station/service/abandoned_gambling_den) "lrp" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/light/small/directional/south, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/effect/turf_decal/tile/yellow/full, +/obj/effect/turf_decal/delivery, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + location = "Atmospherics" + }, +/obj/structure/plasticflaps/opaque, +/turf/open/floor/iron/dark/smooth_large, +/area/station/maintenance/department/engine/atmos) "lrv" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/execution) +"lrx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) +"lry" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/holopad, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/treatment_center) "lrB" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) -"lrF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) "lsa" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 }, /obj/machinery/camera/motion/directional/north{ - c_tag = "Command - EVA Storage North"; + c_tag = "Command - EVA Storage, North"; name = "motion-sensitive command camera" }, +/obj/structure/extinguisher_cabinet/directional/north, /obj/machinery/space_heater, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) @@ -34238,24 +34200,22 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat_interior) "lsx" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/bot, +/obj/machinery/plate_press, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/security/prison/work) +"lsA" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/obj/structure/closet/crate/hydroponics, -/obj/item/botanical_lexicon, -/obj/item/seeds/tree, -/obj/effect/spawner/random/contraband/prison, -/obj/item/seeds/pumpkin, -/obj/item/seeds/wheat, -/obj/item/seeds/ambrosia, -/obj/item/seeds/grass, -/obj/item/seeds/carrot, -/obj/item/seeds/potato, -/obj/item/seeds/garlic, -/obj/item/seeds/onion, -/obj/item/paper/guides/jobs/hydroponics, -/turf/open/floor/iron/dark, -/area/station/security/prison/garden) +/obj/effect/turf_decal/trimline/blue/line, +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "lsC" = ( /obj/structure/chair/wood{ dir = 4 @@ -34274,20 +34234,35 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/light/floor/has_bulb, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) +"lsJ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Operating Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, +/obj/effect/mapping_helpers/airlock/unres, +/turf/open/floor/iron/white/textured, +/area/station/medical/surgery) "lsQ" = ( /obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/iron/dark, /area/station/security/courtroom) "lsR" = ( /obj/effect/turf_decal/tile/green/half/contrasted, /obj/machinery/light/directional/north, -/obj/machinery/firealarm/directional/north, +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, /obj/machinery/light_switch/directional/north{ - pixel_x = -8 + pixel_x = -5 }, /obj/structure/chair, /obj/effect/landmark/start/botanist, @@ -34305,6 +34280,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/reinforced, /area/station/science/xenobiology) +"lte" = ( +/obj/structure/disposalpipe/sorting/mail, +/obj/effect/mapping_helpers/mail_sorting/medbay/virology, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "ltg" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -34312,7 +34296,10 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) "ltj" = ( -/obj/structure/sink/kitchen/directional/east, +/obj/structure/table/reinforced, +/obj/machinery/reagentgrinder{ + pixel_y = 9 + }, /turf/open/floor/iron/kitchen, /area/station/security/prison/mess) "ltp" = ( @@ -34329,9 +34316,18 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"ltw" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/disposaloutlet, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) "ltB" = ( -/obj/structure/cable, -/obj/effect/turf_decal/delivery/red, +/obj/effect/turf_decal/bot_red, /obj/machinery/suit_storage_unit/standard_unit, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/command/storage/eva) @@ -34349,50 +34345,64 @@ }, /turf/open/floor/iron/dark/textured, /area/station/service/janitor) -"ltG" = ( -/turf/closed/wall/r_wall, -/area/station/security/checkpoint/medical) "ltM" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/construction/mining/aux_base) -"lup" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/item/kirbyplants/random, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) -"luq" = ( +"lug" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/door/airlock/maintenance, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door_buttons/access_button{ + dir = 1; + idDoor = "pathology_airlock_exterior"; + idSelf = "pathology_airlock_control"; + name = "Pathology Access Button"; + pixel_x = -6; + pixel_y = -24; + req_access = list("pathology") + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology{ + autoclose = 0; + frequency = 1449; + id_tag = "pathology_airlock_exterior"; + name = "Pathology Exterior Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/turf/open/floor/iron/white/textured, +/area/station/medical/virology) +"luq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /obj/effect/mapping_helpers/airlock/unres{ - dir = 8 + dir = 1 }, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/commons/fitness/recreation) "lus" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"lut" = ( -/obj/effect/spawner/random/trash/box, -/obj/effect/spawner/random/engineering/toolbox, -/obj/effect/spawner/random/food_or_drink/booze, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"lut" = ( +/obj/machinery/smartfridge/chemistry/preloaded, +/turf/closed/wall, +/area/station/medical/pharmacy) "luw" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -34419,13 +34429,11 @@ /obj/item/food/grown/banana, /turf/open/floor/grass, /area/station/hallway/primary/central) -"luP" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/light_switch/directional/east, -/obj/machinery/modular_computer/preset/command{ - dir = 8; - name = "Captain's PC"; - desc = "The Captain's personal computer, the keys are sticky with spilled soda." +"luL" = ( +/obj/machinery/light/directional/south, +/obj/machinery/status_display/ai/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, /turf/open/floor/iron/dark, /area/station/command/bridge) @@ -34451,38 +34459,30 @@ }, /turf/open/floor/engine, /area/station/science/ordnance/burnchamber) +"lvc" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/iron/showroomfloor, +/area/station/service/abandoned_gambling_den) "lvd" = ( -/obj/structure/table/wood, -/obj/item/radio/radio_mic{ - pixel_y = 7 - }, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) -"lve" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/directional/east, -/obj/structure/sign/poster/official/random/directional/east, -/obj/structure/closet/secure_closet/medical3, -/obj/item/wrench/medical, -/turf/open/floor/iron/white, -/area/station/medical/office) +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/station/engineering/transit_tube) "lvg" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "med_lockdown"; + name = "Medbay Emergency Lockdown Shutters" }, +/turf/open/floor/plating, +/area/station/medical/medbay/central) +"lvl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"lvl" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/prison/workout) +/turf/open/floor/carpet/black, +/area/station/security/bitden) "lvp" = ( /obj/machinery/duct, /obj/effect/turf_decal/stripes/line{ @@ -34493,26 +34493,39 @@ "lvI" = ( /obj/machinery/airalarm/directional/north, /obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 6 - }, +/obj/machinery/light/small/directional/north, +/obj/effect/spawner/random/food_or_drink/donkpockets, /turf/open/floor/iron, /area/station/cargo/warehouse) +"lvK" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "lvP" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 }, -/obj/machinery/camera/autoname/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Science - Circuit Lab"; + name = "science camera"; + network = list("ss13","rd") + }, /turf/open/floor/iron/white, /area/station/science/circuits) "lvR" = ( -/obj/machinery/door/window/right/directional/north, -/obj/structure/table/wood/fancy/blue, -/obj/structure/sign/painting/library{ - pixel_y = -32 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 }, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) +/obj/machinery/airalarm/directional/east, +/obj/structure/chair/sofa/corp/left{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "lvV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34523,10 +34536,6 @@ /obj/effect/landmark/start/security_officer, /turf/open/floor/iron/dark, /area/station/security/office) -"lwa" = ( -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "lwj" = ( /obj/structure/cable/layer1, /turf/open/floor/plating/airless, @@ -34538,9 +34547,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -34550,7 +34556,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/station/maintenance/port/fore) +/area/station/commons/locker) "lws" = ( /obj/machinery/atmospherics/components/unary/passive_vent{ dir = 4 @@ -34558,76 +34564,71 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "lwx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/structure/chair{ + dir = 8 + }, /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/hop) -"lwy" = ( -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "lwL" = ( -/obj/structure/sign/warning/vacuum/external/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"lxc" = ( -/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/hallway/primary/aft) +"lwX" = ( +/obj/effect/turf_decal/tile/dark_blue/full, +/obj/effect/turf_decal/bot, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + location = "Bridge" + }, +/obj/machinery/duct, +/obj/structure/plasticflaps/opaque, +/turf/open/floor/iron/dark/smooth_large, +/area/station/maintenance/central) +"lxf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/wood, +/area/station/command/meeting_room) "lxi" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /obj/structure/sign/warning/electric_shock/directional/east, /turf/open/floor/plating, /area/station/engineering/gravity_generator) -"lxA" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"lxK" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/break_room) -"lxS" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"lyj" = ( -/obj/effect/turf_decal/stripes/line{ +"lxy" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ + dir = 5 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/xenobio, -/obj/structure/liquid_barrier, -/obj/structure/disposalpipe/segment{ +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) +"lxA" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/atmospherics/pipe/smart/simple/pink/hidden{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +/obj/structure/closet/firecloset, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) "lyp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/camera/directional/south{ - c_tag = "Command - Head of Personnel's Office"; - name = "command camera" +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) @@ -34635,37 +34636,54 @@ /turf/open/floor/iron/dark, /area/station/science/breakroom) "lyv" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/chair_maintenance{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "lyw" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, /obj/structure/table/reinforced, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/mask/gas/sechailer, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = 3; +/obj/item/storage/box/flashbangs{ + pixel_x = -6; pixel_y = -3 }, -/obj/item/flashlight/seclite{ - pixel_x = -3; - pixel_y = -3 +/obj/item/storage/box/flashes{ + pixel_x = -6 }, -/obj/item/flashlight/seclite, -/obj/item/flashlight/seclite{ - pixel_x = 3; - pixel_y = 3 +/obj/item/storage/box/teargas{ + pixel_y = 3; + pixel_x = -6 }, -/obj/item/clothing/head/helmet/toggleable/justice, +/obj/item/storage/box/handcuffs{ + pixel_y = -3; + pixel_x = 6 + }, +/obj/item/storage/box/firingpins{ + pixel_x = 6 + }, +/obj/item/storage/box/firingpins{ + pixel_y = 3; + pixel_x = 6 + }, +/obj/item/disk/ammo_workbench/advanced, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"lyy" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/light/small/directional/north, +/obj/machinery/modular_computer/preset/civilian, +/turf/open/floor/iron, +/area/station/medical/paramedic) +"lyA" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/break_room) "lyC" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -34683,6 +34701,14 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/engineering/atmos/storage) +"lyF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/holopad, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "lyI" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/effect/turf_decal/plaque{ @@ -34697,17 +34723,36 @@ /obj/structure/chair{ dir = 4 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "lyR" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/west, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/service/library/private) +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "lyT" = ( -/obj/item/radio/intercom/directional/north, -/turf/open/floor/wood, -/area/station/service/bar/backroom) +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/autodrobe, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) +"lyU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) "lyV" = ( /obj/effect/turf_decal/box, /obj/effect/turf_decal/stripes/corner{ @@ -34721,31 +34766,32 @@ /area/station/ai_monitored/turret_protected/aisat_interior) "lyX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "lzt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/meter/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "lzu" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/burnchamber) "lzw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/space_heater, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"lzD" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/chair/sofa/bench/left{ + dir = 8 }, -/obj/machinery/station_map/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"lzy" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "lzT" = ( /turf/open/floor/plating, /area/station/maintenance/department/electrical) @@ -34753,13 +34799,14 @@ /turf/closed/wall, /area/station/service/library/lounge) "lAg" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, /obj/structure/table/wood, -/obj/machinery/newscaster/directional/south, /obj/machinery/fax{ fax_name = "Law Office"; name = "Law Office Fax Machine" }, -/obj/machinery/light/small/directional/south, /turf/open/floor/wood, /area/station/service/lawoffice) "lAP" = ( @@ -34773,7 +34820,7 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "lAT" = ( -/obj/structure/sign/poster/contraband/random/directional/east, +/obj/structure/sign/poster/random/directional/east, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/aft) @@ -34781,8 +34828,6 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 }, -/obj/machinery/light/directional/east, -/obj/structure/extinguisher_cabinet/directional/east, /obj/structure/table, /obj/item/stack/sheet/iron/fifty{ pixel_y = 5; @@ -34802,10 +34847,9 @@ /turf/open/floor/wood, /area/station/service/library/lounge) "lBg" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/railing, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "lBq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -34814,18 +34858,18 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) "lBu" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/two, +/obj/machinery/atmospherics/components/tank/air{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/port/fore) "lBB" = ( -/obj/machinery/light/small/directional/south, /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, /obj/effect/mapping_helpers/apc/cell_5k, /obj/item/storage/bag/trash, /obj/item/storage/bag/trash, -/turf/open/floor/plating, +/turf/open/floor/iron/dark/side, /area/station/security/prison) "lBC" = ( /obj/structure/weightmachine/stacklifter, @@ -34833,6 +34877,11 @@ dir = 5 }, /area/station/commons/fitness/recreation) +"lBE" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "lBH" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/iron/showroomfloor, @@ -34842,7 +34891,11 @@ /obj/effect/turf_decal/trimline/green/line{ dir = 1 }, -/obj/machinery/camera/autoname/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Hallway - West, Central, 1"; + name = "hallway camera" + }, +/obj/machinery/station_map/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) "lBO" = ( @@ -34862,8 +34915,13 @@ /obj/structure/closet/firecloset{ anchored = 1 }, +/obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"lBX" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "lBZ" = ( /obj/effect/turf_decal/trimline/red/filled/warning, /obj/effect/turf_decal/trimline/red/warning{ @@ -34871,23 +34929,9 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"lCa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/dark_blue/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "lCf" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron/dark, @@ -34897,6 +34941,9 @@ /turf/open/floor/wood, /area/station/security/detectives_office) "lCn" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, /obj/item/radio/intercom{ dir = 8; pixel_x = -28 @@ -34907,25 +34954,13 @@ /turf/open/floor/wood, /area/station/command/heads_quarters/hop) "lCo" = ( -/obj/machinery/oven/range, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/kitchen, -/area/station/security/prison/mess) -"lCs" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 +/obj/structure/chair/plastic{ + dir = 1 }, -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 4 +/turf/open/floor/iron/dark/side{ + dir = 8 }, -/obj/machinery/light/directional/south, -/obj/structure/bed/medical/emergency, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"lCu" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/security/prison/work) "lCw" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -34933,8 +34968,14 @@ "lCI" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/structure/cable, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) +"lCN" = ( +/obj/effect/turf_decal/tile/yellow/full, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos/office) "lCP" = ( /obj/structure/sink/directional/south, /obj/structure/mirror/directional/north, @@ -34980,6 +35021,17 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/science) +"lDQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) +"lDR" = ( +/obj/effect/spawner/random/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "lDW" = ( /obj/machinery/corral_corner{ mapping_id = "4" @@ -34995,15 +35047,6 @@ "lDX" = ( /turf/closed/wall/r_wall, /area/station/command/bridge) -"lDZ" = ( -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "lEa" = ( /obj/structure/cable, /obj/structure/reagent_dispensers/watertank/high, @@ -35011,8 +35054,27 @@ /area/station/security/prison/garden) "lEf" = ( /obj/item/radio/intercom/directional/east, +/obj/structure/table/wood, /turf/open/floor/carpet/blue, -/area/station/commons/dorms) +/area/station/commons/dorms/room2) +"lEj" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/obj/structure/chair/sofa/bench/right, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/iron, +/area/station/engineering/main) +"lEl" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/folder, +/obj/item/pen, +/turf/open/floor/wood, +/area/station/service/library) +"lEo" = ( +/turf/closed/wall, +/area/station/engineering/storage_shared) "lEp" = ( /obj/structure/table, /obj/effect/turf_decal/bot, @@ -35030,10 +35092,8 @@ /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 }, -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/iron, +/obj/effect/spawner/random/vending/colavend, +/turf/open/floor/iron/dark/side, /area/station/hallway/primary/aft) "lEI" = ( /obj/machinery/navbeacon{ @@ -35044,30 +35104,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 5 }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "lER" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"lEU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, /obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 + dir = 9 }, /turf/open/floor/iron/white, -/area/station/medical/storage) +/area/station/medical/treatment_center) "lEZ" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -35096,58 +35142,48 @@ /obj/structure/cable, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/medical/glass{ - name = "Medical Side Entrance" + name = "Medical North Side Entrance" }, /obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/iron/dark/textured, +/turf/open/floor/iron/white/textured, /area/station/medical/medbay/central) -"lFJ" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ +"lFE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hos) +"lFJ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/machinery/door/poddoor/shutters{ id = "robotics_garage"; - name = "Garage Shutters" + name = "Robotics Garage Shutters" }, /turf/open/floor/iron/dark/textured, /area/station/science/robotics/mechbay) -"lFY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "lGd" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/structure/sign/departments/engineering/directional/south, -/obj/machinery/camera/directional/south{ - c_tag = "Engineering - Atmospherics Incinerator Access"; - name = "engineering camera" - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/area/station/engineering/atmos/pumproom) "lGp" = ( /obj/effect/spawner/random/structure/furniture_parts, /turf/open/floor/plating, /area/station/maintenance/port/fore) "lGt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "library_desk_shutters"; - name = "Library Desk Shutters"; - dir = 1 +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 8 }, -/obj/structure/table/wood, -/obj/item/camera_film, -/turf/open/floor/iron/dark/textured, -/area/station/service/library/printer) +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "lGD" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -35166,7 +35202,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/cargo/office) "lGI" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -35194,41 +35230,27 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) -"lGW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) "lHd" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /turf/closed/wall/r_wall, /area/station/maintenance/disposal/incinerator) -"lHg" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) "lHi" = ( /turf/closed/wall/r_wall, /area/station/security/holding_cell) -"lHm" = ( -/obj/structure/table/wood, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/recharger, -/obj/item/melee/chainofcommand, -/obj/item/hand_tele, -/obj/item/toy/figure/captain{ - pixel_x = -12 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "lHt" = ( /obj/effect/turf_decal/delivery, /obj/machinery/portable_atmospherics/canister/plasma, /turf/open/floor/engine, /area/station/science/ordnance/storage) +"lHB" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/machinery/firealarm/directional/north, +/obj/structure/rack, +/obj/item/wrench/medical, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "lHF" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -35240,20 +35262,50 @@ "lHR" = ( /turf/closed/wall, /area/station/maintenance/department/eva) +"lHS" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_b) "lHY" = ( /obj/machinery/atmospherics/components/binary/valve/digital{ name = "Freeze Chamber" }, /turf/open/floor/iron, /area/station/science/ordnance) +"lId" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/structure/bodycontainer/morgue, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"lIh" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/rnd/production/protolathe/department/engineering, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/break_room) "lIt" = ( -/obj/effect/turf_decal/box, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/holopad, /obj/machinery/duct, -/turf/open/floor/iron/dark/smooth_large, +/obj/machinery/holopad, +/turf/open/floor/iron/checker, /area/station/security/prison/shower) "lIF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -35265,27 +35317,16 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 9 }, -/obj/machinery/firealarm/directional/north, -/obj/machinery/light_switch/directional/north{ - pixel_x = 8 - }, -/obj/structure/table/glass, -/obj/item/emergency_bed{ - pixel_y = 6 - }, -/obj/item/emergency_bed{ - pixel_y = 12 - }, +/obj/structure/table/reinforced/rglass, /turf/open/floor/iron/white, /area/station/science/genetics) "lIO" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/trimline/red/filled/corner, -/obj/effect/turf_decal/stripes/line{ +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/carpet/black, -/area/station/security/bitden) +/turf/open/floor/iron, +/area/station/security/prison/safe) "lIQ" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ @@ -35293,28 +35334,24 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"lIS" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 + }, +/obj/machinery/photocopier, +/turf/open/floor/wood, +/area/station/service/library/lounge) "lIY" = ( -/obj/machinery/duct, +/obj/structure/mirror/directional/east, +/obj/structure/sink/directional/west, /turf/open/floor/wood, /area/station/service/bar/backroom) -"lIZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ +"lJj" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"lJj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "lJr" = ( /obj/machinery/camera/directional/north{ c_tag = "Engineering - Atmospherics Nitrogen Chamber"; @@ -35323,59 +35360,35 @@ /turf/open/floor/engine/n2, /area/station/engineering/atmos) "lJA" = ( -/obj/effect/spawner/random/structure/girder, +/obj/machinery/light/small/broken/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/port) -"lJC" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +"lJI" = ( +/obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, -/area/station/command/meeting_room) -"lJD" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/ash, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"lJH" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/firealarm/directional/east, -/obj/structure/bodycontainer/morgue{ +/area/station/engineering/atmos/pumproom) +"lJZ" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"lJK" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/table_frame, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"lJU" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/blue/corner{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/item/kirbyplants/random, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Patient Room 2" + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/patients_rooms/room_b) "lKe" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage) "lKk" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -35383,6 +35396,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/sand/plating, /obj/machinery/door/airlock/external{ name = "External Access" }, @@ -35392,32 +35406,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"lKr" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"lKt" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, -/obj/structure/closet/secure_closet/chemical, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry) "lKu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/prison/workout) +"lKw" = ( +/obj/effect/turf_decal/bot, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/large, +/area/station/commons/storage/primary) "lKO" = ( /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, @@ -35425,6 +35423,24 @@ "lKY" = ( /turf/closed/wall, /area/station/hallway/secondary/exit/departure_lounge) +"lKZ" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/structure/table/reinforced/rglass, +/obj/item/emergency_bed{ + pixel_y = 7 + }, +/obj/item/emergency_bed{ + pixel_y = 14 + }, +/obj/item/emergency_bed{ + pixel_y = 21 + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/medical/paramedic) "lLb" = ( /obj/structure/cable, /obj/machinery/power/smes, @@ -35442,26 +35458,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) -"lLh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "lLi" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -35517,15 +35513,6 @@ /obj/effect/landmark/start/security_officer, /turf/open/floor/iron/dark, /area/station/security/processing) -"lLG" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "lLH" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -35539,18 +35526,10 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/atmos) -"lLJ" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) "lLK" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm/directional/east, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/eva) "lLP" = ( @@ -35562,10 +35541,10 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "lLZ" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/table/wood, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/dresser, /turf/open/floor/wood/large, -/area/station/commons/dorms) +/area/station/commons/dorms/room1) "lMb" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /turf/open/floor/iron/dark, @@ -35590,56 +35569,48 @@ /obj/machinery/power/energy_accumulator/grounding_rod/anchored, /turf/open/floor/plating/airless, /area/space/nearstation) +"lMP" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "lMT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/prison) -"lNp" = ( -/obj/structure/table, +"lMZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/white, -/area/station/medical/virology) -"lNr" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/airalarm/directional/east, -/obj/item/stack/sheet/iron/fifty{ - pixel_y = 5; - pixel_x = -4 - }, -/obj/item/stack/sheet/iron/fifty{ - pixel_y = 5 - }, -/obj/item/stack/sheet/plasteel{ - amount = 10; - pixel_y = 5; - pixel_x = 4 - }, -/obj/item/stack/sheet/glass/fifty{ - pixel_y = 5; - pixel_x = -4 - }, -/obj/item/stack/sheet/glass/fifty{ - pixel_y = 5 - }, -/obj/item/stack/sheet/glass/fifty{ - pixel_y = 5; - pixel_x = 4 - }, -/obj/item/stack/rods/fifty, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage_shared) +/area/station/medical/surgery) +"lNb" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/iron/large, +/area/station/engineering/atmos/office) +"lNt" = ( +/obj/structure/sign/poster/random/directional/south, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "lNw" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light/small/directional/south, /obj/structure/sign/departments/court/directional/south, /obj/structure/chair{ @@ -35648,24 +35619,28 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) +"lNx" = ( +/obj/effect/turf_decal/trimline/red/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) "lNF" = ( -/obj/effect/decal/cleanable/glass, -/obj/machinery/duct, +/obj/structure/foamedmetal, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/engineering/main) "lNG" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"lNK" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/effect/landmark/start/chemist, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) "lNO" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -35674,61 +35649,61 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/white, /area/station/science/research) +"lNT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "lNW" = ( /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/commons/fitness) +"lNZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset{ + anchored = 1 + }, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) +"lOf" = ( +/obj/machinery/light/directional/north, +/obj/machinery/button/door/directional/north{ + id = "cap_privacy"; + name = "Privacy Shutters Control"; + req_access = list("command") + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "lOo" = ( /obj/machinery/power/energy_accumulator/tesla_coil, /turf/open/floor/plating, /area/station/engineering/main) -"lOq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +"lOt" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/airlock/research/glass{ - name = "Kill Chamber"; - normalspeed = 0 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/liquid_barrier, -/turf/open/floor/iron/freezer, -/area/station/science/xenobiology) -"lOA" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=1"; - location = "Medbay" +/obj/machinery/door/poddoor/preopen{ + id = "bridge_exterior_blast_doors"; + name = "Bridge Exterior Access Blast Door" }, -/obj/structure/plasticflaps/opaque, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) +/turf/open/floor/plating, +/area/station/command/bridge) "lOJ" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/grass, -/area/station/hallway/primary/central) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "lOM" = ( /obj/structure/chair/pew/left{ dir = 8 }, -/obj/effect/landmark/start/hangover, +/obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, /area/station/service/chapel) -"lOP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/chem_heater/withbuffer, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) "lPf" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance, @@ -35745,15 +35720,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/brig) -"lPu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) "lPX" = ( /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 4 @@ -35773,62 +35739,55 @@ }, /obj/machinery/light/directional/east, /obj/structure/cable, -/obj/structure/closet/secure_closet/security/sec, +/obj/structure/closet/secure_closet/security/sec/blueshirt, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/auxiliary) +"lQk" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "lQw" = ( -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/iron, /area/station/maintenance/disposal) "lQB" = ( -/obj/structure/table, -/obj/item/canvas/twentythree_nineteen, -/obj/item/canvas/nineteen_nineteen, -/obj/item/storage/crayons, -/obj/item/storage/crayons, -/obj/machinery/light/small/built/directional/north, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, /turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/area/station/engineering/main) "lQK" = ( +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; name = "Plasma Outlet Pump" }, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 4 - }, /obj/machinery/atmospherics/components/binary/pump/layer4{ dir = 8; name = "Plasma to Turbine" }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"lQO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) "lRi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/service/janitor) "lRp" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 }, -/obj/machinery/firealarm/directional/north, +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/north{ - pixel_x = 8 + pixel_x = 5 }, /obj/structure/disposalpipe/trunk{ dir = 8 @@ -35839,12 +35798,6 @@ dir = 5 }, /area/station/cargo/sorting) -"lRy" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) "lRD" = ( /turf/closed/wall, /area/station/cargo/miningoffice) @@ -35858,29 +35811,16 @@ /obj/item/stack/ore/titanium, /turf/open/floor/plating, /area/station/maintenance/port) -"lSO" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/engineering/storage_shared) "lTk" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"lTv" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/engineering/break_room) +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "lTB" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance, @@ -35893,16 +35833,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"lTJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "lTP" = ( /obj/effect/turf_decal/trimline/neutral/corner{ dir = 1 @@ -35912,6 +35842,14 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"lUn" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/structure/chair/sofa/bench, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/iron, +/area/station/engineering/main) "lUr" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -35927,6 +35865,17 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/port) +"lUE" = ( +/obj/effect/turf_decal/trimline/green/filled/warning{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) "lUM" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/bot_white/left, @@ -35939,6 +35888,13 @@ /obj/structure/closet/crate/silvercrate, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) +"lUO" = ( +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/machinery/computer/aifixer{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "lUP" = ( /turf/open/floor/iron, /area/station/hallway/secondary/service) @@ -35959,35 +35915,33 @@ "lVb" = ( /obj/vehicle/ridden/janicart, /obj/item/key/janitor, -/turf/open/floor/iron/dark/side, +/turf/open/floor/iron/dark, /area/station/service/janitor) "lVd" = ( -/obj/structure/cable, -/obj/structure/chair/stool/directional/north, +/obj/machinery/light/directional/east, +/obj/structure/table, /turf/open/floor/iron/dark, /area/station/security/prison/mess) -"lVh" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/cmo) "lVj" = ( /obj/machinery/button/door/directional/north{ id = "dorm_1"; name = "Dorm Bolt Control"; normaldoorcontrol = 1; - specialfunctions = 4 + specialfunctions = 4; + pixel_x = 5 }, -/turf/open/floor/wood/large, -/area/station/commons/dorms) -"lVu" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/obj/machinery/light_switch/directional/north{ + pixel_x = 5; + pixel_y = 34 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/structure/chair/stool/directional/south, +/turf/open/floor/wood/large, +/area/station/commons/dorms/room1) "lVI" = ( /obj/structure/cable, /turf/closed/wall/r_wall, @@ -36007,21 +35961,11 @@ dir = 6 }, /obj/machinery/firealarm/directional/east, +/obj/machinery/light_switch/directional/east{ + pixel_y = -10 + }, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"lWA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/duct, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "lWH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -36032,32 +35976,19 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/service/chapel) -"lWL" = ( -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/obj/effect/landmark/start/psychologist, -/turf/open/floor/carpet/blue, -/area/station/medical/psychology) "lXl" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 + dir = 4 }, -/obj/structure/closet/toolcloset, -/obj/item/crowbar/large, -/obj/machinery/light/small/directional/west, +/obj/structure/disposalpipe/segment, +/obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark/side{ - dir = 8 + dir = 4 }, -/area/station/engineering/storage_shared) +/area/station/command/heads_quarters/ce) "lXu" = ( /turf/open/floor/iron/white, /area/station/science/lab) -"lXy" = ( -/obj/structure/closet/emcloset, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "lXL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/chair_flipped{ @@ -36065,9 +35996,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"lXN" = ( -/turf/open/floor/iron/dark, -/area/station/command/bridge) "lYa" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -36086,75 +36014,33 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/commons/vacant_room/office) -"lYg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) "lYj" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/vending/wardrobe/bar_wardrobe, -/turf/open/floor/wood, -/area/station/service/bar/backroom) -"lYp" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/components/binary/valve/digital/on{ + name = "Waste Release"; dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "aisat-pathatmos-maint-passthrough" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron_dark, +/turf/open/floor/plating, /area/station/maintenance/starboard/aft) "lYr" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, /obj/structure/sign/warning/no_smoking/directional/south, -/obj/machinery/light/directional/south, -/turf/open/floor/circuit/green/telecomms/mainframe, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) "lYB" = ( -/obj/structure/chair/office{ +/obj/structure/chair/wood{ dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/carpet/blue, /area/station/commons/vacant_room/office) -"lYL" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/engineering/main) "lYM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/photocopier, -/turf/open/floor/iron/dark, +/turf/open/floor/carpet/green, /area/station/commons/vacant_room/office) -"lYQ" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/computer/crew{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) -"lZk" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"lZs" = ( -/turf/closed/wall, -/area/station/security/office) "lZu" = ( /obj/effect/turf_decal/bot, /obj/structure/sign/poster/official/random/directional/south, @@ -36182,7 +36068,6 @@ /turf/open/space/basic, /area/space) "lZA" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -36190,14 +36075,14 @@ /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "lZD" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/main) +/turf/open/floor/iron/sepia, +/area/station/service/library/artgallery) "lZJ" = ( -/obj/structure/chair/comfy/beige{ +/obj/structure/chair/comfy/brown{ dir = 1 }, +/obj/effect/landmark/start/hangover, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) "lZP" = ( @@ -36209,6 +36094,12 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"lZQ" = ( +/obj/structure/easel, +/obj/item/canvas/twentythree_twentythree, +/obj/item/canvas/twentythree_twentythree, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "lZR" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -36223,6 +36114,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ name = "Courtroom" @@ -36240,15 +36132,17 @@ /area/station/ai_monitored/security/armory) "mac" = ( /obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark/side{ dir = 5 }, /area/station/commons/locker) "mai" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/research/abandoned) +/obj/structure/lattice, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/space/basic, +/area/space/nearstation) "mak" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -36262,16 +36156,6 @@ /obj/item/stack/sheet/mineral/plasma, /turf/open/floor/iron/white, /area/station/science/circuits) -"mar" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/effect/turf_decal/stripes, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/door/window/brigdoor/right/directional/south{ - name = "Command Chair"; - req_access = list("command") - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "maz" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ @@ -36282,61 +36166,49 @@ "maC" = ( /turf/open/floor/iron/dark, /area/station/commons/fitness) -"maG" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/office) -"maJ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/light/small/directional/north, -/obj/machinery/status_display/evac/directional/north, -/obj/structure/table, -/obj/item/phone, -/turf/open/floor/iron/dark/side{ - dir = 1 +"maE" = ( +/obj/machinery/button/door/directional/north{ + id = "bsq_to_cq"; + name = "Quarters Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4 }, -/area/station/engineering/break_room) +/obj/structure/closet/secure_closet/blueshield, +/obj/item/storage/backpack/blueshield, +/obj/item/storage/backpack/duffelbag/blueshield, +/obj/item/storage/backpack/satchel/blueshield, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "maL" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating/reinforced, /area/station/maintenance/department/science) -"maP" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/line{ +"maS" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "maX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/effect/turf_decal/siding/wood{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/wood, /area/station/commons/vacant_room/office) +"mbi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/station/maintenance/port) "mbo" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_half, /area/station/service/chapel) -"mbp" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/engineering/storage_shared) "mbx" = ( /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) @@ -36344,7 +36216,6 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 }, -/obj/machinery/camera/autoname/directional/south, /obj/structure/table, /obj/item/radio/off{ pixel_x = -6 @@ -36357,21 +36228,14 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) -"mbF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "mbK" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/clothing/head/beret, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/fuel_pellet, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "mbN" = ( /obj/effect/turf_decal/trimline/brown/filled/warning{ dir = 10 @@ -36381,19 +36245,12 @@ dir = 10 }, /area/station/cargo/lobby) -"mbP" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/iron/white, -/area/station/medical/virology) "mbU" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/chair/sofa/bench/left{ dir = 4 }, -/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "mbV" = ( @@ -36403,6 +36260,16 @@ dir = 4 }, /area/station/commons/fitness) +"mbZ" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 8 + }, +/obj/effect/mapping_helpers/mail_sorting/medbay/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "mcd" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor, @@ -36419,8 +36286,8 @@ pixel_y = 7 }, /obj/machinery/door/poddoor/shutters{ - id = "arrivals_security_post"; - name = "Security Post Shutters"; + id = "arrivals_security_checkpoint"; + name = "Security Checkpoint Shutters"; dir = 1 }, /turf/open/floor/iron/dark, @@ -36436,33 +36303,44 @@ /turf/open/floor/plating, /area/station/security/checkpoint/supply) "mcz" = ( -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 + }, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = -5 }, /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister, /turf/open/floor/engine, /area/station/science/ordnance/storage) "mcG" = ( -/obj/effect/spawner/random/structure/table, -/obj/item/clothing/mask/gas, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/vending/engivend, +/turf/open/floor/iron, +/area/station/engineering/storage) +"mcO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine/atmos) "mcU" = ( -/obj/machinery/shower/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/soap/homemade, -/obj/effect/turf_decal/trimline/dark_red/arrow_cw{ +/obj/machinery/camera/autoname/directional/east, +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole/bookmanagement{ dir = 8 }, -/turf/open/floor/iron/showroomfloor, -/area/station/security/prison/shower) +/turf/open/floor/wood, +/area/station/security/prison/rec) "mcY" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "sec_lockers"; name = "Locker Room Shutters" }, @@ -36472,7 +36350,8 @@ /obj/effect/turf_decal/trimline/yellow/filled/warning, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/structure/cable, +/turf/open/floor/iron/dark/side, /area/station/command/heads_quarters/ce) "mdp" = ( /obj/effect/turf_decal/stripes/line{ @@ -36486,11 +36365,21 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/storage) -"mdw" = ( -/obj/machinery/shower/directional/east, -/obj/effect/decal/cleanable/dirt, +"mdq" = ( +/obj/machinery/firealarm/directional/west, +/obj/structure/closet/l3closet/virology, +/obj/machinery/camera/directional/north{ + c_tag = "Medical - Pathology, Access"; + name = "medical camera"; + network = list("ss13","medbay") + }, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"mdA" = ( +/obj/machinery/duct, +/obj/effect/spawner/random/engineering/material_cheap, /turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/area/station/commons/vacant_room/commissary) "mdC" = ( /turf/open/floor/iron/dark/smooth_large, /area/station/cargo/storage) @@ -36515,8 +36404,11 @@ /turf/open/floor/iron, /area/station/maintenance/disposal) "mei" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/checker, /area/station/security/prison/shower) "mej" = ( /obj/machinery/camera/autoname/directional/south, @@ -36524,22 +36416,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) -"meB" = ( -/obj/structure/flora/grass/jungle/b/style_random, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/leafy, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/grass, -/area/station/command/bridge) -"meN" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/chair/office{ +"meQ" = ( +/obj/structure/chair/comfy/black{ dir = 1 }, -/obj/effect/landmark/start/head_of_security, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/effect/landmark/start/captain, +/turf/open/floor/wood, +/area/station/command/meeting_room) "meR" = ( /obj/machinery/portable_atmospherics/canister/plasma, /obj/machinery/atmospherics/miner/plasma, @@ -36564,36 +36447,44 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 2 - }, +/obj/structure/disposalpipe/junction, /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/science/research) "mft" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) "mfu" = ( -/obj/effect/turf_decal/tile/red/fourcorners, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, /obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, /area/station/security/interrogation) "mfv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/sign/poster/random/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine/atmos) "mfE" = ( /obj/machinery/growing/soil, /turf/open/floor/grass, /area/station/security/prison/garden) +"mfR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/atmos/office) "mgd" = ( /obj/machinery/conveyor{ dir = 4; @@ -36627,25 +36518,26 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "mhf" = ( +/obj/effect/turf_decal/siding/wood, /obj/structure/cable, /obj/machinery/computer/security/hos, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) "mht" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/table/reinforced, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, /obj/structure/window/reinforced/spawner/directional/south, -/obj/item/radio, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) "mhA" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, +/obj/structure/extinguisher_cabinet/directional/north, /obj/structure/table, -/obj/machinery/reagentgrinder{ - pixel_y = 8 - }, +/obj/item/toy/figure/chef, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) "mhD" = ( @@ -36653,12 +36545,18 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "mhM" = ( -/obj/machinery/light/directional/west, /obj/machinery/firealarm/directional/west, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) +"mhP" = ( +/obj/machinery/duct, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "mhS" = ( /obj/machinery/corral_corner{ mapping_id = "2" @@ -36671,18 +36569,31 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"mih" = ( -/obj/machinery/light/directional/east, -/obj/machinery/power/energy_accumulator/tesla_coil, -/turf/open/floor/plating, -/area/station/engineering/main) +"mhY" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/office) +"mie" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/structure/window/spawner/directional/south, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder/yellow, +/obj/item/pen, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/break_room) "min" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "rd_office"; - name = "RD Office Privacy Shutters"; - dir = 1 +/obj/machinery/door/poddoor/shutters{ + id = "rd_office_shutters"; + name = "RD's Office Shutters" }, /turf/open/floor/plating, /area/station/command/heads_quarters/rd) @@ -36704,74 +36615,40 @@ /area/station/hallway/secondary/entry) "miz" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"miL" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/bed/medical/emergency, +/obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, -/area/station/maintenance/department/medical) +/area/station/maintenance/starboard/aft) +"miL" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/iron, +/area/station/engineering/main) "miM" = ( +/obj/machinery/light/directional/west, /obj/machinery/button/door/directional/west{ id = "external_engine_storage"; name = "External Engine Storage Control"; req_access = list("engineering") }, -/obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark/smooth_large, /area/station/engineering/main) -"miU" = ( -/obj/machinery/light/floor/has_bulb, -/obj/machinery/door/airlock/highsecurity{ - name = "Blueshield's Equipment Room" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) -"miX" = ( +"mjk" = ( +/obj/structure/extinguisher_cabinet/directional/south, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/bin, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron, +/area/station/maintenance/department/science) "mjw" = ( /obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_y = 4 - }, -/obj/effect/spawner/random/bureaucracy/folder{ - pixel_y = 6 - }, -/obj/effect/spawner/random/bureaucracy/pen{ - pixel_y = 5 - }, +/obj/item/paper_bin, +/obj/item/folder, +/obj/item/pen, /turf/open/floor/iron/dark, /area/station/service/chapel) "mjz" = ( /turf/open/space/basic, /area/station/cargo/mining/asteroid_magnet) -"mjA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/light_switch/directional/north{ - pixel_x = -8 - }, -/obj/machinery/button/door/directional/north{ - pixel_x = 6; - id = "chem_factory_shutters"; - req_access = list("pharmacy") - }, -/obj/structure/cable, -/obj/machinery/camera/directional/north{ - c_tag = "Medical - Chemistry Factory"; - name = "medical camera"; - network = list("ss13","medbay") - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "mjC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36782,11 +36659,6 @@ dir = 8 }, /obj/machinery/camera/autoname/directional/west, -/obj/machinery/button/door/directional/west{ - id = "robotics_sci_shutters"; - name = "Robotics Privacy Shutters Control"; - req_access = list("robotics") - }, /obj/structure/table, /obj/item/storage/belt/utility, /obj/item/borg/upgrade/rename, @@ -36810,26 +36682,57 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) -"mky" = ( -/obj/effect/turf_decal/trimline/red/filled/warning, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/execution) -"mkE" = ( -/obj/structure/disposalpipe/sorting/mail, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/mail_sorting/engineering/general, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/engineering/break_room) +"mkx" = ( +/obj/structure/table/wood, +/obj/item/phone{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/machinery/recharger{ + pixel_x = -4; + pixel_y = -1 + }, +/obj/item/paper_bin{ + pixel_y = 4; + pixel_x = 9 + }, +/obj/item/stamp/head/hos{ + pixel_x = 10; + pixel_y = 6 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hos) +"mky" = ( +/obj/effect/turf_decal/trimline/red/filled/warning, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/security/execution) +"mkE" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/cable, +/obj/structure/table/reinforced/rglass, +/obj/machinery/fax{ + fax_name = "Chief Medical Officer's Office"; + name = "Chief Medical Officer's Fax Machine" + }, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/command/heads_quarters/cmo) "mkG" = ( /turf/open/floor/iron, /area/station/hallway/primary/aft) +"mkP" = ( +/obj/effect/turf_decal/box/corners, +/obj/structure/closet/secure_closet/chemical, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "mkR" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -36897,32 +36800,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark, /area/station/security/prison/visit) -"mlw" = ( -/obj/machinery/requests_console/directional/west{ - anon_tips_receiver = 1; - assistance_requestable = 1; - department = "Captain's Desk"; - name = "Captain's Requests Console"; - can_send_announcements = 1 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/folder/blue, -/obj/item/pen/fountain, -/obj/item/stamp/head/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) -"mlJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "mlK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -36933,21 +36810,8 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) -"mlQ" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/line, -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/landmark/start/assistant, -/obj/machinery/station_map/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) "mmf" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, @@ -36977,15 +36841,25 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"mmV" = ( -/obj/machinery/light/directional/north, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_y = 4 +"mmS" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 }, -/obj/effect/spawner/random/bureaucracy/pen{ +/obj/machinery/light/small/directional/east, +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/east{ pixel_y = 5 }, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) +"mmV" = ( +/obj/machinery/light/directional/north, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder, +/obj/item/pen, /turf/open/floor/iron/dark/side{ dir = 1 }, @@ -36996,26 +36870,6 @@ }, /turf/open/floor/engine/vacuum, /area/station/engineering/atmos) -"mnl" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/machinery/light/directional/south, -/obj/structure/table/glass, -/obj/item/storage/fancy/cigarettes{ - pixel_x = 2 - }, -/obj/item/lighter{ - pixel_x = -7; - pixel_y = 6 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) -"mnx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "mnA" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -37023,15 +36877,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) -"mnV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/science) "mnW" = ( /obj/machinery/atmospherics/pipe/smart/simple/general/visible{ dir = 9 @@ -37042,6 +36889,7 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 1 }, +/obj/machinery/light/small/directional/north, /obj/machinery/gulag_item_reclaimer{ pixel_y = 30 }, @@ -37085,35 +36933,23 @@ /turf/open/floor/wood, /area/station/maintenance/starboard/fore) "moK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"moS" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/break_room) +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "mpi" = ( /obj/structure/lattice, /obj/structure/sign/warning/docking/directional/east, /turf/open/space, /area/space/nearstation) "mpo" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/ash, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "engineering"; + name = "Engineering Blast Door" + }, /turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/area/station/engineering/main) "mpw" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -37130,20 +36966,13 @@ }, /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) -"mpP" = ( -/obj/structure/chair/office/light{ - dir = 1 - }, -/obj/effect/landmark/start/virologist, -/turf/open/floor/iron/white, -/area/station/medical/virology) "mpQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/light/directional/south, -/obj/machinery/status_display/evac/directional/south, -/obj/machinery/medical_kiosk, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/airalarm/directional/west, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/patients_rooms/room_a) "mpW" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 @@ -37152,9 +36981,11 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "mpY" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron/dark/side, -/area/station/engineering/break_room) +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) "mqm" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, @@ -37177,20 +37008,11 @@ /obj/effect/landmark/start/head_of_security, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) -"mqX" = ( -/obj/effect/turf_decal/trimline/neutral/filled/warning{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/warning, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "mqZ" = ( /obj/effect/turf_decal/stripes/line{ - dir = 4 + dir = 1 }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark/smooth_large, /area/station/service/chapel/funeral) "mra" = ( @@ -37206,7 +37028,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/plating, -/area/station/maintenance/port/fore) +/area/station/security/processing) "mri" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -37243,7 +37065,10 @@ /obj/machinery/light/directional/west, /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/structure/filingcabinet, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder, +/obj/item/pen, /turf/open/floor/iron/white, /area/station/science/explab) "mrF" = ( @@ -37258,12 +37083,14 @@ }, /area/station/service/hydroponics/garden) "mrG" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/gateway) +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/commons/storage/primary) "mrI" = ( /obj/structure/chair{ dir = 8 @@ -37275,11 +37102,11 @@ /turf/open/floor/iron/dark, /area/station/commons/fitness) "mrM" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, /obj/effect/turf_decal/tile/neutral{ dir = 4 }, /obj/effect/turf_decal/tile/blue, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, /obj/machinery/computer/atmos_control/air_tank{ dir = 8 }, @@ -37301,25 +37128,13 @@ /obj/machinery/meter, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"mrW" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) "mrX" = ( /obj/effect/turf_decal/stripes/line{ - dir = 6 + dir = 4 }, -/obj/machinery/status_display/evac/directional/west, -/obj/machinery/suit_storage_unit/cmo, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "mse" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /turf/open/floor/iron/dark/smooth_large, /area/station/tcommsat/computer) @@ -37331,20 +37146,6 @@ /obj/effect/landmark/start/station_engineer, /turf/open/floor/iron, /area/station/engineering/main) -"mst" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/external{ - name = "External Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "msF" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 10 @@ -37357,17 +37158,6 @@ dir = 10 }, /area/station/cargo/storage) -"msH" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/break_room) "msO" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -37387,9 +37177,16 @@ /turf/open/floor/iron/white, /area/station/security/medical) "mta" = ( -/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, /obj/structure/reagent_dispensers/wall/peppertank/directional/east, +/obj/machinery/newscaster/directional/north, /obj/structure/table/wood, +/obj/item/toy/figure/hos{ + pixel_x = -9; + pixel_y = 7 + }, /obj/item/storage/box/seccarts{ pixel_x = 4; pixel_y = 6 @@ -37400,18 +37197,11 @@ /obj/item/taperecorder{ pixel_x = 4 }, -/obj/item/toy/figure/hos{ - pixel_x = -9; - pixel_y = 7 - }, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) -"mtc" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/transit_tube) +"mtq" = ( +/turf/closed/wall/r_wall, +/area/station/security/prison/shower) "mtH" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer2{ dir = 5 @@ -37420,18 +37210,17 @@ /turf/open/floor/plating, /area/station/engineering/atmos) "mtN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/library/private) +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "mug" = ( +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) -"mup" = ( -/obj/machinery/chem_dispenser, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) "muu" = ( /obj/machinery/light/directional/east, /obj/machinery/power/apc/auto_name/directional/east, @@ -37440,18 +37229,11 @@ /turf/open/floor/iron/dark/smooth_large, /area/station/maintenance/department/security) "muy" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/turf/open/floor/wood, +/area/station/service/bar) "muz" = ( /obj/effect/turf_decal/trimline/brown/filled/line, /obj/machinery/status_display/ai/directional/south, @@ -37483,25 +37265,59 @@ /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) "muO" = ( -/obj/effect/spawner/random/structure/table, -/obj/item/poster/random_official, -/obj/item/poster/random_official{ - pixel_y = 7 +/obj/machinery/light/small/directional/south, +/obj/machinery/newscaster/directional/south, +/obj/structure/table, +/obj/item/folder/yellow{ + pixel_x = 3; + pixel_y = 6 }, -/obj/item/poster/random_official{ +/obj/item/folder/yellow{ + pixel_x = 3; pixel_y = 3 }, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/item/folder/yellow{ + pixel_x = 3 + }, +/obj/item/paper_bin{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/pen{ + pixel_x = -5; + pixel_y = 5 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"muU" = ( +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = 5 + }, +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/cmo) "mvb" = ( /obj/machinery/button/door/directional/south{ id = "dorm_2"; name = "Dorm Bolt Control"; normaldoorcontrol = 1; - specialfunctions = 4 + specialfunctions = 4; + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 }, +/obj/machinery/light_switch/directional/south{ + pixel_x = 5; + pixel_y = -34 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/structure/chair/stool/directional/north, /turf/open/floor/carpet/blue, -/area/station/commons/dorms) +/area/station/commons/dorms/room2) "mvc" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -37510,54 +37326,35 @@ /obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) -"mvh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"mvk" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/structure/table, -/obj/item/paper_bin, -/obj/effect/spawner/random/bureaucracy/folder, -/obj/effect/spawner/random/bureaucracy/pen, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/break_room) "mvr" = ( /obj/structure/flora/rock/pile/jungle/large/style_random, /obj/structure/flora/tree/jungle/style_random, /turf/open/floor/grass, /area/station/hallway/secondary/exit/departure_lounge) -"mvA" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters{ - id = "medical_security_post"; - name = "Security Post Shutters"; - dir = 8 - }, -/turf/open/floor/plating, -/area/station/security/checkpoint/medical) "mvF" = ( /obj/structure/closet/crate/trashcart, /obj/effect/spawner/random/contraband/prison, /obj/effect/spawner/random/trash/garbage, /obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, /area/station/security/prison) -"mvN" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 9 +"mvH" = ( +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = 5 }, -/obj/effect/turf_decal/trimline/blue/corner, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/item/storage/box/handcuffs{ + pixel_x = -9; + pixel_y = 3 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "mvS" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -37581,6 +37378,13 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"mwm" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_b) "mwn" = ( /obj/machinery/power/energy_accumulator/grounding_rod, /turf/open/floor/plating, @@ -37593,7 +37397,6 @@ /turf/open/floor/iron, /area/station/command/gateway) "mwK" = ( -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "mwQ" = ( @@ -37621,38 +37424,26 @@ /obj/item/raw_anomaly_core/random, /turf/open/floor/iron, /area/station/science/ordnance) +"mxg" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/west, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/storage_shared) "mxi" = ( /obj/structure/foamedmetal, /turf/open/floor/plating, /area/station/maintenance/department/eva) -"mxn" = ( -/turf/closed/wall, -/area/station/medical/break_room) "mxo" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, /turf/open/floor/iron/white, /area/station/science/explab) -"mxr" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/computer/crew{ - dir = 8 - }, -/obj/machinery/button/door/directional/east{ - pixel_y = 6; - id = "cmo_shutters"; - name = "CMO Office Shutters Control"; - req_access = list("cmo") - }, -/obj/machinery/button/door/directional/east{ - pixel_y = -6; - id = "med_lockdown"; - name = "Medical Lockdown" - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) "mxu" = ( /obj/structure/closet/wardrobe/white, /obj/item/clothing/shoes/jackboots, @@ -37661,27 +37452,16 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "mxw" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/station/cargo/miningoffice) -"mxy" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/table/glass, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 3; - pixel_y = 3 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +"mxF" = ( +/obj/effect/turf_decal/trimline/purple/filled/line, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/white, +/area/station/science/research) "mxN" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/effect/turf_decal/trimline/yellow/line{ @@ -37694,17 +37474,30 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "myj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/window/spawner/directional/east, +/obj/structure/table/reinforced/rglass, +/obj/item/burner/fuel{ + pixel_y = 4 + }, +/obj/item/storage/box/beakers, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/dropper, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "myr" = ( /obj/machinery/light/directional/west, -/obj/structure/chair/stool/directional/north, -/obj/item/radio/intercom/directional/west, +/obj/structure/bed/double{ + dir = 4 + }, +/obj/item/bedsheet/dorms_double{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, /turf/open/floor/wood/tile, -/area/station/commons/dorms) +/area/station/commons/dorms/room4) "myv" = ( /obj/structure/cable, /obj/machinery/power/solar{ @@ -37713,32 +37506,47 @@ }, /turf/open/floor/iron/solarpanel/airless, /area/station/solars/port/aft) -"myJ" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/south, -/obj/machinery/vending/cigarette, +"myz" = ( +/obj/machinery/light/built/directional/north, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/command/meeting_room) +/area/station/service/abandoned_gambling_den) "myR" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) +"mzf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/table, +/obj/effect/decal/cleanable/blood/old, +/obj/item/radio{ + desc = "An old handheld radio. You could use it, if you really wanted to."; + icon_state = "radio"; + name = "old radio" + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "mzn" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/structure/cable, -/obj/structure/bed/pod{ - desc = "An old medical bed, just waiting for replacement with something up to date."; - name = "medical bed" +/obj/structure/table/reinforced/rglass, +/obj/item/storage/medkit/regular{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = 3 }, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) "mzp" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 }, -/obj/machinery/light_switch/directional/west, -/obj/structure/table/glass, +/obj/structure/table, /obj/item/cultivator, /obj/item/hatchet, /obj/item/crowbar/red, @@ -37792,16 +37600,6 @@ /obj/effect/turf_decal/trimline/purple/filled/line, /turf/open/floor/iron/white, /area/station/science/genetics) -"mAd" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/computer/operating{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "mAr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -37812,9 +37610,14 @@ /turf/open/floor/iron/dark, /area/station/security/office) "mAB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/built/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Commons - Vacant Commissary"; + name = "commons camera" + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/commons/vacant_room/commissary) "mAC" = ( /obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -37833,15 +37636,15 @@ /area/station/science/research) "mAO" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 + dir = 9 }, +/obj/effect/turf_decal/trimline/yellow/corner, /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ - dir = 10 + dir = 6 + }, +/turf/open/floor/iron/dark/side{ + dir = 9 }, -/turf/open/floor/iron, /area/station/hallway/primary/aft) "mAR" = ( /obj/effect/turf_decal/bot, @@ -37850,15 +37653,17 @@ /turf/open/floor/engine, /area/station/science/ordnance/storage) "mBa" = ( -/obj/structure/chair/stool/bar/directional/south, -/turf/open/floor/carpet/green, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "mBp" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, /obj/machinery/processor, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) @@ -37873,6 +37678,7 @@ /turf/open/floor/iron/dark, /area/station/security/courtroom) "mBX" = ( +/obj/machinery/light/small/directional/east, /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, /obj/effect/spawner/random/structure/table_or_rack, @@ -37892,6 +37698,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"mCl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "mCr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -37923,23 +37736,51 @@ "mDi" = ( /turf/closed/wall, /area/station/security/bitden) +"mDl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "mDv" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/engine) -"mDz" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/east, -/obj/item/kirbyplants/random/dead, -/turf/open/floor/iron/vaporwave, -/area/station/command/heads_quarters/rd) +"mDM" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) +"mDP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "mDR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"mEc" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Break Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/iron/white/textured, +/area/station/medical/break_room) "mEf" = ( /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 1 @@ -37956,11 +37797,18 @@ "mEg" = ( /turf/open/floor/wood, /area/station/commons/vacant_room/office) +"mEi" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/light/small/directional/west, +/obj/structure/sign/painting/library{ + pixel_x = -32 + }, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "mEl" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/structure/cable, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) "mEs" = ( @@ -37971,10 +37819,10 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"mEy" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +"mEz" = ( +/obj/structure/dresser, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "mEH" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/cable, @@ -37998,42 +37846,41 @@ /obj/effect/turf_decal/trimline/yellow/line{ dir = 4 }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, +/obj/machinery/status_display/evac/directional/west, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/hallway/primary/aft) +"mFi" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/defibrillator_mount/directional/south, +/obj/machinery/iv_drip, +/obj/item/reagent_containers/blood, +/turf/open/floor/iron/white, +/area/station/security/medical) "mFK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"mFR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/box/corners, -/obj/machinery/smartfridge/chemistry/preloaded, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry) +/area/station/service/abandoned_gambling_den) +"mFO" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/virology) "mFS" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/commons/fitness) -"mFY" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) -"mGb" = ( -/turf/open/floor/iron/white, -/area/station/medical/virology) -"mGu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, +"mGe" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, /turf/open/floor/wood, -/area/station/maintenance/starboard/fore) +/area/station/service/abandoned_gambling_den) +"mGu" = ( +/obj/structure/chair/comfy/brown, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "mGB" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -38056,7 +37903,6 @@ /area/station/hallway/primary/starboard) "mHm" = ( /obj/effect/turf_decal/tile/yellow, -/obj/machinery/light/small/directional/east, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, @@ -38064,25 +37910,11 @@ dir = 4 }, /area/station/tcommsat/computer) -"mHp" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/table/glass, -/obj/item/clothing/glasses/hud/health, -/obj/item/toy/figure/cmo{ - pixel_y = 8; - pixel_x = -4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"mHw" = ( -/obj/machinery/light/directional/north, -/obj/machinery/airalarm/directional/north, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/iron, -/area/station/construction) +"mHH" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/holopad, +/turf/open/floor/wood, +/area/station/security/detectives_office) "mHO" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -38099,10 +37931,31 @@ "mHQ" = ( /turf/closed/wall, /area/station/service/janitor) +"mHS" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/light/small/directional/south, +/obj/machinery/duct, +/obj/structure/rack, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags{ + pixel_y = 3 + }, +/obj/item/storage/box/bodybags{ + pixel_y = 6 + }, +/obj/item/clothing/gloves/latex, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "mIf" = ( -/obj/effect/turf_decal/trimline/brown/filled/line, -/turf/open/floor/iron/dark/side, -/area/station/engineering/break_room) +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/plaque/static_plaque/golden/captain{ + pixel_y = -32 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "mIh" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, @@ -38134,9 +37987,9 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "mIF" = ( -/obj/effect/turf_decal/stripes/box, -/obj/machinery/telecomms/hub/preset, -/turf/open/floor/engine/telecomms, +/obj/machinery/ntnet_relay, +/obj/structure/cable, +/turf/open/floor/circuit/telecomms, /area/station/tcommsat/server) "mIK" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ @@ -38146,52 +37999,37 @@ /turf/open/floor/iron/kitchen, /area/station/service/kitchen) "mIL" = ( -/obj/machinery/button/door/directional/east{ - id = "custodial_shutters"; - name = "Custodial Shutters Control"; - req_access = list("janitor") - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark/side{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/area/station/service/janitor) +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "mIP" = ( /obj/machinery/airalarm/directional/east, /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/port) -"mIU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "mJa" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /obj/machinery/light/small/directional/south, -/obj/machinery/light_switch/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = 5 + }, /turf/open/floor/wood, /area/station/commons/locker) "mJo" = ( /obj/machinery/space_heater, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"mJu" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_y = 5 - }, -/obj/item/folder/white{ - pixel_y = 7 - }, -/obj/item/pen{ - pixel_y = 7 - }, -/obj/item/stamp/head/rd{ - pixel_y = 10 - }, -/turf/open/floor/carpet/purple, -/area/station/command/heads_quarters/rd) "mJw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -38221,22 +38059,9 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) -"mKC" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "mKE" = ( /obj/machinery/shower/directional/south, +/obj/structure/drain, /turf/open/floor/iron/showroomfloor, /area/station/security/prison/shower) "mKW" = ( @@ -38257,17 +38082,6 @@ dir = 10 }, /area/station/service/hydroponics) -"mLe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table, -/obj/effect/decal/cleanable/blood/old, -/obj/item/radio{ - desc = "An old handheld radio. You could use it, if you really wanted to."; - icon_state = "radio"; - name = "old radio" - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "mLh" = ( /obj/structure/chair{ dir = 1 @@ -38277,27 +38091,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/visit) -"mLH" = ( -/turf/closed/wall/r_wall, -/area/station/security/checkpoint/engineering) -"mLN" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/table/reinforced, -/obj/item/pinpointer/nuke, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"mLW" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/bed/dogbed/renault, -/mob/living/basic/pet/fox/renault, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) -"mMm" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/modular_computer/preset/id, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "mMt" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -38305,10 +38098,12 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "mMv" = ( -/obj/machinery/button/flasher{ - id = "hopflash"; - pixel_x = 6; - pixel_y = 34 +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/button/door/directional/north{ + pixel_x = -6; + id = "hop_queue"; + name = "Queue Shutters Control"; + req_access = list("hop") }, /obj/machinery/button/door/directional/north{ pixel_x = 6; @@ -38316,23 +38111,18 @@ name = "Privacy Shutters Control"; req_access = list("hop") }, -/obj/machinery/button/door/directional/north{ +/obj/machinery/button/ticket_machine{ pixel_x = -6; - id = "hop_queue"; - name = "Queue Shutters Control"; - req_access = list("hop") + pixel_y = 34 }, -/obj/machinery/light_switch/directional/north{ - pixel_x = -4; +/obj/machinery/button/flasher{ + id = "hopflash"; + pixel_x = 6; pixel_y = 34 }, /obj/machinery/pdapainter, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) -"mMI" = ( -/obj/structure/sign/departments/engineering/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "mMQ" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/effect/turf_decal/plaque{ @@ -38349,12 +38139,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail{ - dir = 2 - }, +/obj/structure/disposalpipe/sorting/mail, /obj/effect/mapping_helpers/mail_sorting/science/experimentor_lab, /turf/open/floor/iron/white, /area/station/science/explab) +"mMX" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/white, +/area/station/medical/virology) "mMY" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 @@ -38366,6 +38162,7 @@ /area/station/security/brig) "mNd" = ( /obj/effect/turf_decal/tile/green/half/contrasted, +/obj/machinery/duct, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/port) @@ -38392,15 +38189,20 @@ /obj/machinery/atmospherics/pipe/smart/simple/pink/visible, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"mNz" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "mNF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/dark_red/arrow_ccw{ +/obj/effect/turf_decal/trimline/dark_red/corner{ dir = 1 }, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "mNW" = ( @@ -38427,29 +38229,26 @@ /obj/effect/mapping_helpers/airlock/access/all/science/rd, /turf/open/floor/iron/dark/textured, /area/station/science/server) -"mOs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table_frame, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) "mOv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/left/directional/west{ + name = "Apothecary Desk"; + req_access = list("pharmacy") }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/machinery/door/poddoor/preopen{ - id = "xenobiomain"; - name = "Containment Blast Door" +/obj/machinery/door/window/right/directional/east{ + name = "Apothecary Desk" }, -/obj/effect/mapping_helpers/airlock/unres{ +/obj/machinery/door/poddoor/shutters{ + id = "apothecary_pri_desk_shutters"; + name = "Apothecary Primary Desk Shutters"; dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/structure/desk_bell{ + pixel_x = 6 + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "mOB" = ( /obj/machinery/door/firedoor, /obj/effect/spawner/structure/window, @@ -38463,7 +38262,6 @@ /obj/effect/turf_decal/trimline/neutral/line{ dir = 1 }, -/obj/machinery/light/small/directional/south, /obj/structure/sign/departments/maint/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) @@ -38495,22 +38293,13 @@ dir = 4 }, /area/station/cargo/storage) -"mPa" = ( -/obj/machinery/light_switch/directional/north{ - pixel_x = -5 - }, -/obj/machinery/firealarm/directional/north{ - pixel_x = 5 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +"mOZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 }, -/obj/machinery/duct, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "mPg" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/carbon_dioxide, @@ -38535,54 +38324,37 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"mPL" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/structure/chair/sofa/corp/left{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "mQo" = ( -/obj/machinery/camera/autoname/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Maintenance - Science Pass-through, Artifact Lab"; + name = "maintenance camera"; + network = list("ss13","rd") + }, +/obj/machinery/status_display/evac/directional/north, /obj/structure/table, /obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "mQx" = ( -/obj/machinery/light_switch/directional/east, -/obj/machinery/chem_master/condimaster{ - name = "CondiMaster Neo" +/obj/structure/closet/secure_closet/freezer/meat{ + req_access = null }, -/obj/effect/turf_decal/bot, /turf/open/floor/iron/kitchen, /area/station/security/prison/mess) "mQA" = ( +/obj/machinery/status_display/evac/directional/west, /obj/structure/chair/sofa/corp{ - color = "#7fb3d5"; dir = 4 }, -/obj/structure/cable, -/turf/open/floor/carpet/cyan, +/turf/open/floor/carpet/blue, /area/station/ai_monitored/turret_protected/ai_upload) "mQF" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /obj/machinery/atmospherics/pipe/smart/manifold4w/pink/visible/layer2, /turf/closed/wall/r_wall, /area/station/maintenance/disposal/incinerator) -"mQM" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/storage/tech) "mQR" = ( /obj/effect/turf_decal/trimline/neutral/filled/warning, /obj/effect/turf_decal/trimline/neutral/warning{ @@ -38605,57 +38377,44 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/commons/dorms/laundry) -"mRi" = ( -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) "mRp" = ( /obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 5 +/obj/item/clothing/gloves/color/orange, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -9; + pixel_y = 9 }, -/obj/item/clipboard{ - pixel_x = -3; - pixel_y = 7 +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = 9; + pixel_y = 9 }, -/obj/effect/spawner/random/bureaucracy/pen{ - pixel_y = 5; - pixel_x = -3 +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = -9; + pixel_y = 3 }, -/obj/item/toy/figure/janitor{ - pixel_x = 8 +/obj/item/grenade/chem_grenade/cleaner{ + pixel_y = 3 }, -/turf/open/floor/iron/dark/side{ - dir = 1 +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = 9; + pixel_y = 3 }, +/turf/open/floor/iron/dark, /area/station/service/janitor) "mRx" = ( /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/prison) "mRD" = ( +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) +"mRG" = ( /obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Gambling Den" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 + dir = 1 }, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/starboard/aft) -"mRG" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/airalarm/directional/west, -/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/area/station/engineering/atmos/storage) "mRL" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/wood/corner{ @@ -38664,29 +38423,35 @@ /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/security/prison/garden) "mRM" = ( /obj/machinery/status_display/ai/directional/west, /turf/open/floor/iron/vaporwave, /area/station/command/heads_quarters/rd) -"mRQ" = ( -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/item/food/grown/banana, -/obj/machinery/light/small/directional/west, -/turf/open/floor/grass, -/area/station/medical/virology) +"mSe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mopbucket, +/obj/item/mop, +/turf/open/floor/plating, +/area/station/maintenance/port) "mSx" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"mSO" = ( -/obj/machinery/skill_station, +"mSC" = ( +/obj/machinery/vending/boozeomat/all_access, /turf/open/floor/wood, -/area/station/service/library/lounge) +/area/station/command/heads_quarters/captain) +"mSO" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/item/radio/intercom/directional/west, +/obj/structure/filingcabinet/chestdrawer, +/obj/item/storage/secure/briefcase, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "mSP" = ( /obj/structure/lattice/catwalk, /obj/structure/sign/departments/security/directional/south, @@ -38705,18 +38470,23 @@ }, /area/station/commons/fitness) "mTk" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/bucket{ - pixel_y = 6; - pixel_x = -4 - }, -/obj/item/reagent_containers/cup/bucket{ - pixel_y = 8; - pixel_x = 9 +/obj/machinery/firealarm/directional/east{ + pixel_y = 5 }, -/turf/open/floor/iron/dark/side{ - dir = 6 +/obj/machinery/light_switch/directional/east{ + pixel_y = -5 }, +/obj/item/radio/intercom/directional/south, +/obj/structure/table, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/item/crowbar/red, +/obj/item/storage/box/mousetraps, +/obj/item/storage/box/mousetraps, +/obj/item/restraints/legcuffs/beartrap, +/obj/item/restraints/legcuffs/beartrap, +/obj/item/restraints/legcuffs/beartrap, +/turf/open/floor/iron/dark, /area/station/service/janitor) "mTp" = ( /obj/effect/turf_decal/stripes/line{ @@ -38738,23 +38508,13 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/commons/toilet/restrooms) -"mTC" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/requests_console/auto_name/directional/north{ - department = "Virology"; - name = "Pathology Requests Console"; - receive_ore_updates = 1 - }, -/obj/machinery/computer/records/pathology, -/turf/open/floor/iron/white, -/area/station/medical/virology) "mTR" = ( -/obj/machinery/light/small/directional/north, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "mTT" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -38771,6 +38531,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/textured, /area/station/science/lab) +"mTV" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = -5 + }, +/obj/machinery/recharger{ + pixel_x = 5 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "mTW" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 10 @@ -38780,15 +38550,14 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"mUa" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/light_switch/directional/north{ - pixel_x = -8 +"mUu" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/obj/structure/table, -/obj/item/clothing/glasses/blindfold, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "mUw" = ( /turf/open/floor/wood, /area/station/service/lawoffice) @@ -38810,15 +38579,9 @@ /turf/open/floor/iron/textured, /area/station/engineering/gravity_generator) "mUF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/mob/living/carbon/human/species/monkey, -/turf/open/floor/grass, -/area/station/medical/virology) -"mUJ" = ( -/obj/machinery/vending/boozeomat/all_access, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) +/obj/effect/spawner/random/trash/moisture_trap, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "mUM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -38836,7 +38599,7 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, -/obj/machinery/camera/autoname/directional/north, +/obj/machinery/status_display/ai/directional/north, /turf/open/floor/iron, /area/station/engineering/main) "mVa" = ( @@ -38859,12 +38622,25 @@ /area/station/security/checkpoint/science) "mVx" = ( /obj/structure/cable, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) +"mVC" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/trimline/red/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/box, +/obj/machinery/holopad, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/checkpoint/engineering) "mVD" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, +/obj/structure/extinguisher_cabinet/directional/east, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) @@ -38872,16 +38648,15 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark, /area/station/security/prison) -"mVT" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"mVS" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron, -/area/station/engineering/engine_smes) +/obj/structure/bodycontainer/morgue{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "mVX" = ( /obj/effect/turf_decal/trimline/neutral/filled/end{ dir = 8 @@ -38904,14 +38679,15 @@ /turf/closed/wall, /area/station/security/prison/workout) "mWn" = ( -/turf/open/floor/iron/dark/corner, -/area/station/commons/fitness/recreation) -"mWp" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/item/radio/intercom/directional/west, +/obj/structure/chair/sofa/right/maroon{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/commons/fitness) "mWC" = ( /obj/machinery/power/terminal{ dir = 4 @@ -38933,50 +38709,37 @@ /obj/machinery/door/window/right/directional/north{ name = "Public Biogenerator" }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "hydroponics_shutters"; - name = "Hydroponics Shutters" + name = "Hydroponics Shutters"; + dir = 1 }, /turf/open/floor/iron/dark/textured, /area/station/service/hydroponics) -"mWJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +"mWO" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/medkit/regular{ + pixel_x = 6; + pixel_y = 6 }, -/obj/machinery/medical_kiosk, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"mXb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/item/storage/medkit/o2{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/o2, +/obj/item/storage/medkit/o2{ + pixel_x = -3; + pixel_y = -3 }, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/area/station/medical/storage) "mXe" = ( -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/item/taperecorder, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"mXg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Apothecary" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) "mXr" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/structure/closet/secure_closet/medical2, @@ -38998,48 +38761,29 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/fore) -"mXK" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/command/heads_quarters/cmo) "mXM" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) -"mXS" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/light/directional/south, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/engineering/storage_shared) -"mXX" = ( -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/captain/private) "mXY" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, +/obj/machinery/station_map/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) +"mYl" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, -/area/station/maintenance/department/security/brig) -"mYy" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 +/area/station/maintenance/port/aft) +"mYI" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/trimline/red/line{ + dir = 1 }, -/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/hallway/primary/central) -"mYC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/area/station/security/office) "mYW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -39065,13 +38809,10 @@ }, /turf/open/floor/iron/dark/side, /area/station/cargo/miningoffice) -"mZv" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/mob/living/basic/butterfly, -/turf/open/floor/grass, -/area/station/command/bridge) +"mZs" = ( +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "mZG" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, @@ -39080,16 +38821,6 @@ /obj/structure/cable, /turf/open/floor/iron/white/smooth_large, /area/station/science/research) -"mZM" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/effect/spawner/random/clothing/gloves, -/obj/effect/spawner/random/entertainment/cigarette_pack, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) "mZO" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 @@ -39099,6 +38830,13 @@ }, /turf/open/floor/iron/dark, /area/station/science/breakroom) +"mZR" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/trimline/red/line{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "mZT" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -39106,48 +38844,31 @@ /obj/machinery/dna_scannernew, /turf/open/floor/iron/white, /area/station/science/genetics) +"nad" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "nai" = ( /obj/machinery/duct, /obj/effect/landmark/start/hangover, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) -"nak" = ( -/obj/structure/disposalpipe/junction/flip, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "nax" = ( /obj/machinery/firealarm/directional/south{ pixel_x = -5 }, /turf/open/floor/carpet/neon/simple/pink, /area/station/science/xenobiology) -"naB" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/structure/sign/poster/official/periodic_table/directional/west, -/obj/structure/chemical_manufacturer, -/obj/item/integrated_circuit/chemical, -/obj/item/stock_parts/cell/high, -/obj/item/multitool, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"naG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/photocopier, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "naK" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 }, -/obj/machinery/camera/autoname/directional/east{ - dir = 6 - }, +/obj/machinery/camera/autoname/directional/east, /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) @@ -39160,30 +38881,22 @@ /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"nbg" = ( +/obj/effect/spawner/random/structure/girder, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "nbm" = ( /obj/machinery/airalarm/directional/west, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "nbF" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/department/electrical) -"nbI" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/empty, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/break_room) "nbP" = ( -/obj/effect/spawner/random/trash/garbage, +/obj/machinery/light/small/directional/north, +/obj/structure/reagent_dispensers/plumbed, /turf/open/floor/plating, /area/station/maintenance/port/fore) "ncd" = ( @@ -39197,9 +38910,7 @@ /turf/open/floor/engine/o2, /area/station/engineering/atmos) "ncq" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 5 - }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) @@ -39221,30 +38932,21 @@ /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/table, +/obj/item/toy/figure/miner, /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/cargo/miningoffice) "ncG" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/composters, -/obj/effect/turf_decal/bot, +/obj/machinery/camera/autoname/directional/south, +/obj/machinery/airalarm/directional/south, +/obj/machinery/seed_extractor, /turf/open/floor/iron/dark, /area/station/security/prison/garden) -"ndh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, +"ncV" = ( +/obj/machinery/light/small/directional/east, /turf/open/floor/plating, -/area/station/maintenance/department/medical) +/area/station/maintenance/port/fore) "ndi" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -39259,19 +38961,12 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"ndm" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/structure/tank_holder/oxygen/yellow, -/turf/open/floor/iron, -/area/station/engineering/main) "ndr" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/chair/sofa/bench{ dir = 4 }, -/obj/effect/landmark/start/hangover, +/obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "ndy" = ( @@ -39279,17 +38974,12 @@ /obj/effect/spawner/random/structure/grille, /turf/open/space, /area/space/nearstation) -"ndE" = ( -/obj/structure/flora/bush/jungle/c/style_random, -/mob/living/carbon/human/species/monkey, -/turf/open/floor/grass, -/area/station/medical/virology) "ndK" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 9 }, /obj/machinery/airalarm/directional/north, -/obj/structure/table/glass, +/obj/structure/table/reinforced/rglass, /obj/item/storage/pill_bottle/mutadone{ pixel_x = 8; pixel_y = 12 @@ -39312,21 +39002,17 @@ }, /turf/open/floor/iron/white, /area/station/science/genetics/cloning) -"ndM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "ndQ" = ( /obj/structure/table, /obj/item/folder/red, /obj/item/taperecorder, /turf/open/floor/iron/textured, /area/station/security/interrogation) +"nea" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/photocopier, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "neo" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/structure/disposalpipe/segment{ @@ -39342,18 +39028,41 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "nev" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/directional/north, +/obj/machinery/requests_console/directional/north{ + department = "Chief Engineer's Desk"; + name = "Chief Engineer's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_y = 6 + }, +/obj/item/clipboard{ + pixel_y = 6 + }, +/obj/item/folder/yellow{ + pixel_y = 6 + }, +/obj/item/pen{ + pixel_y = 4 + }, +/obj/item/stamp/head/ce, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/command/heads_quarters/ce) +"neF" = ( +/obj/effect/turf_decal/trimline/green/filled/warning, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/virology/glass{ - name = "Pathology Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, /obj/machinery/duct, -/turf/open/floor/iron/white/textured, +/turf/open/floor/iron/white, /area/station/medical/virology) "neG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39362,7 +39071,7 @@ /obj/structure/chair{ dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "neW" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -39377,26 +39086,10 @@ /obj/machinery/power/smes/engineering, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) -"nfc" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/plating/airless, -/area/space/nearstation) "nfj" = ( /obj/effect/spawner/random_bar/box, /turf/closed/wall, /area/station/maintenance/port) -"nfm" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "nfq" = ( /obj/effect/turf_decal/tile/green{ dir = 1 @@ -39412,9 +39105,9 @@ }, /obj/machinery/requests_console/directional/north{ department = "Mining"; - name = "Mining Requests Console"; - supplies_requestable = 1 + name = "Mining Requests Console" }, +/obj/effect/mapping_helpers/requests_console/supplies, /obj/structure/table, /obj/machinery/microwave{ pixel_y = 6 @@ -39429,18 +39122,24 @@ /turf/open/floor/wood, /area/station/maintenance/starboard/fore) "nfw" = ( -/obj/machinery/camera/autoname/directional/west{ - dir = 10 +/obj/machinery/camera/directional/west{ + c_tag = "Hallway - Central, Park, East"; + name = "hallway camera" }, /obj/machinery/light/small/directional/west, /turf/open/floor/grass, /area/station/hallway/primary/central) "nfz" = ( +/obj/machinery/light/directional/east, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/stone, /area/station/smithing) "nfR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ dir = 4 @@ -39450,23 +39149,19 @@ "nga" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/ai_upload) -"ngb" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = -3; - pixel_y = 3 +"nge" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 10 }, -/obj/item/stack/cable_coil, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) +/obj/structure/reagent_dispensers/plumbed{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "ngl" = ( /obj/item/target/alien, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"ngu" = ( -/obj/machinery/airalarm/directional/west, -/turf/open/floor/wood, -/area/station/medical/psychology) "ngz" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -39481,39 +39176,68 @@ /obj/item/radio/intercom/prison/directional/east, /turf/open/floor/wood, /area/station/security/prison/rec) -"ngK" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, -/turf/closed/wall, -/area/station/maintenance/starboard/aft) "ngM" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 1 }, -/obj/structure/cable, +/obj/machinery/airalarm/directional/west, /obj/machinery/requests_console/directional/north{ anon_tips_receiver = 1; assistance_requestable = 1; department = "Security"; name = "Security Requests Console" }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, /obj/machinery/computer/records/security{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/auxiliary) +"ngS" = ( +/obj/effect/turf_decal/tile/dark_blue, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) +"ngT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) +"ngV" = ( +/obj/machinery/requests_console/directional/west{ + department = "Atmospherics"; + name = "Atmospherics Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/structure/window/spawner/directional/south, +/obj/machinery/computer/atmos_control/nocontrol/master{ + dir = 1 + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/atmos/office) "ngX" = ( -/obj/structure/table/glass, +/obj/structure/table, /obj/item/restraints/handcuffs/cable/zipties, /obj/item/reagent_containers/blood/random, /turf/open/floor/iron/white, /area/station/maintenance/port/fore) "nha" = ( +/obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/station/commons/vacant_room/office) +"nhh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/service/library) "nhn" = ( /obj/machinery/door/airlock/research/glass/incinerator/ordmix_exterior{ name = "Burn Chamber Exterior Airlock" @@ -39524,12 +39248,21 @@ /turf/open/floor/engine/vacuum, /area/station/science/ordnance/burnchamber) "nhq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/tile/yellow/full, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/poddoor/preopen{ + id = "engineering"; + name = "Engineering Blast Door" + }, +/obj/machinery/door/window/left/directional/north{ + name = "Engineering Deliveries"; + req_access = list("engineering") + }, +/turf/open/floor/iron/large, +/area/station/engineering/storage) "nhr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -39540,15 +39273,28 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/checker, /area/station/science/lab) +"nhv" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Maintenance - Science Pass-through, Ordnance"; + name = "maintenance camera"; + network = list("ss13","rd") + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/maintenance/department/science) "nhL" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/effect/spawner/random/bureaucracy/pen, -/turf/open/floor/wood, -/area/station/service/library/private) +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/iron/white, +/area/station/medical/office) "nhQ" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 6 }, @@ -39569,45 +39315,43 @@ /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) "nhT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/item/radio/intercom/directional/south, -/obj/structure/table/glass, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 6 - }, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/item/kirbyplants/random, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) "nia" = ( /turf/closed/wall, /area/station/solars/starboard/aft) -"nil" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +"nit" = ( +/obj/machinery/light/directional/east, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/machinery/modular_computer/preset/curator{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"nir" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "niu" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 }, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) +"niv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "niA" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 }, /obj/machinery/light/small/directional/south, /obj/machinery/camera/motion/directional/south{ - c_tag = "Vault"; - network = list("vault") + c_tag = "Command - Vault"; + network = list("vault"); + name = "motion-sensitive command camera" }, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) @@ -39616,13 +39360,6 @@ /obj/structure/grille, /turf/open/floor/plating/airless, /area/space/nearstation) -"niD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "niF" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -39638,7 +39375,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/supply/mining, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/cargo/miningoffice) "niG" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/effect/turf_decal/trimline/yellow/line{ @@ -39668,13 +39405,22 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) +"njw" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "njN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/starboard/aft) "njX" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -39688,11 +39434,18 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "nkb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/baseturf_helper/reinforced_plating, +/obj/machinery/duct, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/port) +"nkc" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/door/window/brigdoor/left/directional/north{ + name = "Chief Medical Officer's Desk"; + req_access = list("cmo") + }, /turf/open/floor/iron/dark, -/area/station/security/execution) +/area/station/command/bridge) "nke" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -39704,11 +39457,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/security/execution/transfer) -"nkf" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "nki" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 @@ -39723,14 +39471,18 @@ }, /obj/structure/table/reinforced, /obj/item/soap/nanotrasen, +/obj/item/storage/box/trackimp{ + pixel_x = -9; + pixel_y = 9 + }, /obj/item/storage/box/hug{ - pixel_x = 5; - pixel_y = 7 + pixel_y = 9 }, -/obj/item/toy/plush/carpplushie{ - name = "Jeff"; - desc = "An adorable stuffed toy that resembles a space carp. The warden was given Jeff to soothe rampant anger issues" +/obj/item/storage/box/chemimp{ + pixel_x = 9; + pixel_y = 9 }, +/obj/item/storage/lockbox/loyalty, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "nkv" = ( @@ -39761,49 +39513,23 @@ /turf/open/floor/plating, /area/station/maintenance/department/cargo) "nld" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/port) -"nle" = ( -/obj/effect/turf_decal/tile/brown/fourcorners, -/obj/item/radio/intercom/directional/east, -/obj/machinery/modular_computer/preset/cargochat/medical{ - dir = 8 +/obj/structure/chair/wood{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/office) +/turf/open/floor/wood, +/area/station/commons/vacant_room/office) "nlg" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/extinguisher_cabinet/directional/west, -/obj/structure/chair{ +/obj/structure/chair/sofa/bench/left{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) -"nlh" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "apothecary_shutters"; - name = "Apothecary Shutters"; - dir = 8 - }, -/turf/open/floor/plating, -/area/station/medical/pharmacy) "nli" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) @@ -39849,9 +39575,9 @@ /turf/open/floor/wood, /area/station/service/lawoffice) "nmf" = ( -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/department/science) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/hallway/secondary/service) "nmm" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39861,39 +39587,28 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"nmu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters{ - id = "tele_shutter"; - name = "Teleporter Access Shutter"; - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/command/teleporter) "nmw" = ( -/obj/structure/bed/double{ - dir = 4 - }, -/obj/item/bedsheet/nanotrasen/double{ - dir = 4 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) +/obj/machinery/growing/soil, +/turf/open/floor/grass, +/area/station/hallway/primary/central) +"nmz" = ( +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/station/command/meeting_room) +"nmX" = ( +/obj/effect/spawner/random/trash/graffiti, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "nmY" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/destructible/cult/item_dispenser/archives/library, -/obj/item/book/codex_gigas, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "nns" = ( /obj/effect/turf_decal/box, +/obj/structure/cable, /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/security/checkpoint/supply) @@ -39921,7 +39636,6 @@ /area/station/construction/mining/aux_base) "nnE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "nnG" = ( @@ -39943,20 +39657,25 @@ /turf/open/floor/iron/dark, /area/station/security/brig) "nnZ" = ( -/obj/item/radio/intercom/directional/north, +/obj/machinery/light/small/directional/north, /obj/structure/table, -/obj/item/stack/package_wrap, -/obj/item/hand_labeler, -/obj/item/crowbar/red, -/obj/item/storage/box/mousetraps, -/obj/item/storage/box/mousetraps, -/obj/item/restraints/legcuffs/beartrap, -/obj/item/restraints/legcuffs/beartrap, -/obj/item/restraints/legcuffs/beartrap, -/turf/open/floor/iron/dark/side{ - dir = 1 +/obj/item/reagent_containers/cup/bucket{ + pixel_y = 6; + pixel_x = -6 + }, +/obj/item/reagent_containers/cup/bucket{ + pixel_y = 9; + pixel_x = 6 }, +/turf/open/floor/iron/dark, /area/station/service/janitor) +"noa" = ( +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/obj/effect/landmark/start/head_of_security, +/turf/open/floor/wood, +/area/station/command/meeting_room) "noh" = ( /obj/effect/spawner/random/structure/grille, /obj/structure/lattice, @@ -39974,28 +39693,15 @@ pixel_x = -8 }, /obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) -"noJ" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Break Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, +"noo" = ( /obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/medical/break_room) +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "noM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/chair_flipped{ - dir = 8 +/obj/machinery/atmospherics/components/binary/volume_pump/on{ + name = "Waste Release" }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) @@ -40020,6 +39726,7 @@ /area/station/maintenance/port/fore) "noQ" = ( /obj/machinery/duct, +/obj/structure/window/reinforced/spawner/directional/south, /obj/structure/table/reinforced, /obj/machinery/chem_dispenser/drinks/beer{ dir = 1 @@ -40031,6 +39738,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"npc" = ( +/obj/machinery/light/directional/west, +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen/red, +/obj/item/pen/blue{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "npm" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -40039,22 +39757,39 @@ /obj/structure/cable, /obj/structure/table, /obj/machinery/ecto_sniffer, +/obj/item/toy/figure/roboticist{ + pixel_x = -9 + }, /turf/open/floor/iron, /area/station/science/robotics/lab) -"npo" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ +"npz" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 + }, +/obj/structure/rack, +/obj/item/stack/sheet/iron/twenty, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, +/area/station/engineering/break_room) +"npB" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 }, /turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"npz" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/area/station/medical/chemistry) "nqm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/floor/has_bulb, /turf/open/floor/iron/dark/side{ dir = 1 }, @@ -40065,108 +39800,75 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison) -"nqE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti, -/obj/effect/decal/cleanable/confetti, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"nqG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white, -/area/station/medical/virology) "nqN" = ( -/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/layer1, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer1, /turf/open/floor/iron, /area/station/engineering/engine_smes) "nrd" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/north, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "nrh" = ( /obj/structure/chair/sofa/bench/right, /turf/open/floor/plating, /area/station/maintenance/department/cargo) "nrk" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 + dir = 6 }, -/obj/structure/closet/secure_closet/engineering_electrical, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, /turf/open/floor/iron/dark/side{ - dir = 8 + dir = 6 }, -/area/station/engineering/storage_shared) +/area/station/command/heads_quarters/ce) "nrl" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 }, /obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, /turf/open/floor/stone, /area/station/smithing) -"nrr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/burnt_floor, -/obj/item/clothing/mask/gas/clown_hat, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "nrz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_half, /area/station/service/chapel) -"nrA" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/item/radio/intercom/directional/south, -/obj/structure/table/glass, -/obj/machinery/reagentgrinder{ - pixel_y = 8 - }, -/obj/item/stack/sheet/mineral/plasma, -/obj/item/stack/sheet/mineral/plasma{ - pixel_x = -6; - pixel_y = 6 +"nrI" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 4 }, -/obj/machinery/light/small/directional/south, +/obj/structure/closet/firecloset/wall/directional/east, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/science/research) "nrJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/blue/filled/line, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "nrN" = ( /obj/structure/flora/bush/fullgrass/style_random, /obj/structure/flora/bush/grassy/style_random, /turf/open/floor/grass, /area/station/hallway/primary/aft) +"nrT" = ( +/obj/structure/bodycontainer/morgue{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "nrX" = ( /obj/machinery/light/small/directional/north, +/obj/machinery/camera/autoname/directional/north, /obj/machinery/atm/directional/north, /obj/structure/closet/secure_closet/personal, /turf/open/floor/iron/dark/side{ @@ -40181,13 +39883,6 @@ }, /turf/open/floor/iron/dark/side, /area/station/cargo/storage) -"nsd" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/surgery) "nse" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40198,18 +39893,25 @@ /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) "nsk" = ( -/obj/structure/bookcase{ - name = "Forbidden Knowledge" +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/structure/sign/painting/library_private{ - pixel_y = -32 +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + id_tag = "medbay_foyer"; + name = "Medbay" }, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) -"nsn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/unres, +/obj/effect/landmark/navigate_destination/med, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "med_lockdown"; + name = "Medbay Emergency Lockdown Shutters"; + dir = 1 + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/medbay/central) "nst" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40217,20 +39919,22 @@ /turf/open/floor/iron, /area/station/engineering/main) "nsw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/dark_red/arrow_cw, -/turf/open/floor/iron/showroomfloor, -/area/station/security/prison/shower) +/obj/machinery/door/poddoor/shutters{ + id = "bitrunner_den"; + name = "Bitrunner Den Shutters"; + dir = 8 + }, +/turf/open/floor/plating, +/area/station/security/bitden) "nsA" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/machinery/light/directional/north, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/iron/dark, +/obj/structure/filingcabinet, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "nsB" = ( /obj/machinery/light/small/directional/south, @@ -40240,9 +39944,10 @@ /area/station/maintenance/port/fore) "nta" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/food_packaging, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/area/station/maintenance/starboard/aft) "ntc" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible, /turf/closed/wall/r_wall, @@ -40256,6 +39961,18 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) +"ntm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/airlock/grunge{ + name = "Stall 3" + }, +/turf/open/floor/iron/showroomfloor, +/area/station/service/abandoned_gambling_den) "ntz" = ( /obj/structure/sign/warning/vacuum/external/directional/south, /obj/effect/turf_decal/tile/yellow/half/contrasted, @@ -40301,12 +40018,31 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) +"ntZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "nub" = ( /obj/structure/barricade/wooden, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"nuc" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/corporate{ + id_tag = "bsq_to_cq"; + name = "Blueshield's Quarters to Captain's Quarters" + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/blueshield) "nue" = ( -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) @@ -40328,20 +40064,22 @@ /area/station/hallway/secondary/service) "nuv" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/eva) -"nuA" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"nuN" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 4 +"nuK" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 }, -/obj/machinery/shower/directional/east, -/turf/open/floor/iron/white/textured, -/area/station/medical/medbay/central) +/obj/machinery/button/door/directional/south{ + id = "med_priv_1"; + name = "Privacy Shutters Control" + }, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_a) "nuS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40352,28 +40090,15 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"nuY" = ( -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/virology) "nvj" = ( -/obj/effect/turf_decal/siding/dark_blue/end{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) -"nvr" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/machinery/power/floodlight, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/closet/firecloset/full, /turf/open/floor/iron/dark, -/area/station/medical/chemistry) +/area/station/hallway/primary/central) "nvt" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/line{ @@ -40392,10 +40117,17 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron/dark, /area/station/security/office) -"nvX" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +"nvB" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/white, /area/station/medical/exam_room) "nwa" = ( @@ -40420,19 +40152,10 @@ /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/entry) "nwj" = ( -/obj/machinery/light/directional/south, -/obj/structure/table/wood, -/obj/item/paper_bin/carbon{ - pixel_y = 4 - }, -/obj/effect/spawner/random/bureaucracy/folder{ - pixel_y = 6 - }, -/obj/effect/spawner/random/bureaucracy/pen{ - pixel_y = 6 +/turf/open/floor/iron/dark/corner{ + dir = 8 }, -/turf/open/floor/carpet/blue, -/area/station/medical/psychology) +/area/station/hallway/secondary/exit/departure_lounge) "nwu" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -40449,18 +40172,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"nwB" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "nwM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40479,11 +40190,12 @@ /turf/open/floor/iron, /area/station/cargo/storage) "nxm" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/structure/railing{ dir = 4 }, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/plating/airless, +/area/space/nearstation) "nxn" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/effect/turf_decal/trimline/blue/line{ @@ -40508,19 +40220,6 @@ /obj/effect/spawner/random/techstorage/rnd_secure_all, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) -"nxB" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "nxD" = ( /obj/structure/bed{ dir = 4 @@ -40531,9 +40230,6 @@ /obj/effect/landmark/start/prisoner, /turf/open/floor/carpet/blue, /area/station/security/prison/safe) -"nxF" = ( -/turf/closed/wall, -/area/station/medical/patients_rooms/room_a) "nxG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -40545,6 +40241,7 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/showroomfloor, /area/station/command/heads_quarters/rd) "nxU" = ( @@ -40568,6 +40265,9 @@ /obj/structure/closet/emcloset/anchored, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"nyh" = ( +/turf/open/floor/carpet/blue, +/area/station/commons/dorms/room2) "nyn" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 5 @@ -40575,9 +40275,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /turf/open/floor/iron/dark, /area/station/science/server) +"nyt" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "nyH" = ( /turf/open/floor/wood, -/area/station/commons/dorms) +/area/station/commons/dorms/room5) "nyI" = ( /obj/effect/turf_decal/box, /obj/effect/turf_decal/stripes/corner, @@ -40589,55 +40301,32 @@ /obj/effect/turf_decal/siding/wood/corner, /turf/open/floor/wood, /area/station/commons/vacant_room/office) -"nyT" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer4{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"nyU" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/table/glass, -/obj/item/storage/box/beakers, -/obj/item/storage/box/syringes{ - pixel_x = 4; - pixel_y = 4 +"nyQ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 }, -/obj/machinery/door/window/right/directional/west{ - name = "Miscellaneous Medical Supplies"; - req_access = list("medical") +/obj/structure/cable, +/obj/structure/table, +/obj/item/storage/belt/utility, +/obj/item/storage/box, +/obj/item/storage/box, +/turf/open/floor/iron/dark/side{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) +/area/station/engineering/break_room) "nyW" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, /obj/machinery/door/firedoor, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/dark/textured, /area/station/hallway/primary/aft) "nzn" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/iron/dark, /area/station/security/prison/visit) -"nzx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "nzC" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -40651,27 +40340,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) -"nzH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"nzR" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "nzT" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ @@ -40679,10 +40347,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"nzW" = ( -/mob/living/carbon/human/species/monkey, -/turf/open/floor/grass, -/area/station/medical/virology) "nzX" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -40698,18 +40362,34 @@ /obj/effect/mapping_helpers/airlock/access/any/security/detective, /turf/open/floor/iron/dark/textured, /area/station/security/detectives_office) -"nAc" = ( -/obj/machinery/newscaster/directional/east, -/obj/structure/table/wood, -/obj/item/flashlight/lamp, +"nAa" = ( +/obj/effect/turf_decal/box, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/holopad, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/bridge) +"nAc" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Library - Private Study"; + name = "library camera" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, /turf/open/floor/wood, /area/station/service/library/private) -"nAK" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 +"nAj" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, +/obj/machinery/light/directional/west, +/obj/machinery/teleport/station, /turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/area/station/command/teleporter) "nAM" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/light_switch/directional/north{ @@ -40722,7 +40402,7 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 }, -/obj/structure/noticeboard/directional/north, +/obj/machinery/station_map/directional/north, /turf/open/floor/iron/white, /area/station/science/research) "nAR" = ( @@ -40742,13 +40422,13 @@ /area/station/commons/fitness/recreation) "nBb" = ( /obj/machinery/light/small/directional/west, -/obj/machinery/conveyor{ - id = "package_sort_2" - }, /obj/machinery/camera/directional/west{ - c_tag = "Cargo - Delivery Office"; + c_tag = "Cargo - Delivery Office, West"; name = "cargo camera" }, +/obj/machinery/conveyor{ + id = "package_sort_2" + }, /turf/open/floor/iron/dark, /area/station/cargo/sorting) "nBk" = ( @@ -40771,15 +40451,22 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/maintenance/department/eva) +"nBp" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/break_room) "nBD" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/table/reinforced, /obj/item/storage/box/prisoner{ - pixel_x = -6 + pixel_y = 12 }, /obj/item/storage/box/prisoner{ - pixel_x = 6; - pixel_y = 12 + pixel_x = -6 }, /turf/open/floor/iron/dark, /area/station/security/processing) @@ -40787,10 +40474,22 @@ /turf/closed/wall, /area/station/maintenance/starboard/aft) "nBH" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/computer/apc_control, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/effect/turf_decal/box, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/checkpoint/medical) +"nBJ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/iron, +/area/station/engineering/break_room) "nBQ" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/line{ @@ -40809,13 +40508,13 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "nBV" = ( -/obj/structure/disposalpipe/junction{ - dir = 2 +/obj/structure/disposalpipe/junction/flip{ + dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/science) "nBX" = ( /obj/effect/turf_decal/trimline/neutral/line, @@ -40825,11 +40524,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"nCa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil/slippery, -/turf/open/floor/iron, -/area/station/maintenance/department/engine/atmos) "nCp" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, @@ -40841,28 +40535,50 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/showroomfloor, /area/station/security/prison/shower) -"nCA" = ( -/obj/effect/landmark/blobstart, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central) "nCB" = ( +/obj/machinery/camera/autoname/directional/north, /obj/structure/chair/sofa/middle/maroon, /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/commons/fitness) +"nCK" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Security - Prison, Bitrunning Den"; + name = "security camera" + }, +/obj/structure/chair/plastic{ + dir = 1 + }, +/turf/open/floor/carpet/black, +/area/station/security/bitden) +"nCP" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "nCY" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/airalarm/directional/south, -/obj/item/kirbyplants/random, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "nDn" = ( -/obj/effect/spawner/random/trash/hobo_squat, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/structure/chair/sofa/corp{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "nDq" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/wood{ @@ -40899,6 +40615,23 @@ pixel_y = -3 }, /obj/item/ammo_box/magazine/m35/rubber, +/obj/item/ammo_box/magazine/m35/rubber{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/m35/rubber{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/ammo_box/magazine/m35/rubber{ + pixel_x = -6; + pixel_y = -6 + }, +/obj/item/ammo_box/magazine/m35/rubber{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/ammo_box/magazine/m35/rubber, /obj/item/ammo_box/magazine/m35/rubber{ pixel_x = 3; pixel_y = 3 @@ -40910,54 +40643,60 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "nDw" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/greenglow, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty{ + pixel_x = -7; + pixel_y = 7 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 7 + }, +/obj/item/wrench/medical, +/obj/item/stack/cable_coil, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "nDy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/prison/visit) +"nDF" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/white, +/area/station/medical/storage) "nDK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/service/hydroponics/garden) -"nEj" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 +"nEb" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 4 }, -/obj/machinery/light/small/directional/south, -/obj/machinery/station_map/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/port) -"nEn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/computer/communications, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) -"nEx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer4, /turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/area/station/engineering/storage/tech) "nEI" = ( /obj/effect/spawner/random/trash/hobo_squat, +/obj/effect/mob_spawn/corpse/human/assistant, /turf/open/floor/plating, /area/station/maintenance/port/fore) "nEU" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /obj/machinery/door/poddoor/shutters{ - id = "arrivals_security_post"; - name = "Security Post Shutters"; + id = "arrivals_security_checkpoint"; + name = "Security Checkpoint Shutters"; dir = 1 }, /turf/open/floor/plating, @@ -40969,6 +40708,14 @@ /obj/structure/sign/warning/electric_shock/directional/west, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"nFf" = ( +/obj/structure/disposalpipe/junction/yjunction, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "nFn" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 @@ -40976,14 +40723,21 @@ /obj/structure/chair/stool/directional/west, /turf/open/floor/iron/dark, /area/station/security/brig) +"nFo" = ( +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron/dark/side, +/area/station/cargo/storage) "nFw" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 }, -/obj/machinery/modular_computer/preset/id{ +/obj/machinery/computer/station_alert{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/command/heads_quarters/ce) "nFK" = ( /obj/effect/turf_decal/tile/red/fourcorners, @@ -40992,26 +40746,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) -"nFM" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/left/directional/west{ - name = "Apothecary Desk"; - req_access = list("pharmacy") - }, -/obj/machinery/door/window/right/directional/east{ - name = "Apothecary Desk" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "apothecary_shutters"; - name = "Apothecary Shutters"; - dir = 4 - }, -/obj/structure/desk_bell{ - pixel_x = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "nFR" = ( /obj/effect/turf_decal/tile/red/full, /obj/effect/turf_decal/box, @@ -41022,24 +40756,23 @@ /turf/open/floor/iron/dark/smooth_large, /area/station/security/checkpoint/escape) "nGg" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/ghost_critter_spawn, -/turf/open/floor/iron/dark, +/turf/open/floor/glass/reinforced, /area/station/commons/fitness/recreation) "nGl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair/wood, -/turf/open/floor/wood, -/area/station/security/prison/rec) +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/security/prison/mess) "nGn" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/port/fore) "nGp" = ( -/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, /obj/structure/cable, -/turf/open/floor/iron/dark, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/iron/checker, /area/station/security/prison/shower) "nGs" = ( /obj/machinery/duct, @@ -41062,37 +40795,19 @@ }, /obj/structure/table/reinforced, /obj/item/paper_bin, -/obj/effect/spawner/random/bureaucracy/folder, -/obj/effect/spawner/random/bureaucracy/pen, +/obj/item/folder, +/obj/item/pen, /turf/open/floor/iron/checker, /area/station/science/lab) "nGG" = ( /obj/structure/closet/secure_closet/personal/cabinet, /turf/open/floor/carpet/red, -/area/station/commons/dorms) +/area/station/commons/dorms/room6) "nGW" = ( /obj/effect/decal/cleanable/generic, /obj/effect/decal/cleanable/robot_debris/down, /turf/open/floor/iron/checker, /area/station/maintenance/port/fore) -"nHi" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/structure/table/glass, -/obj/item/emergency_bed{ - pixel_y = 6 - }, -/obj/item/emergency_bed{ - pixel_y = 11 - }, -/obj/item/emergency_bed{ - pixel_y = 13 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/medical/paramedic) "nHp" = ( /obj/structure/flora/grass/jungle/a/style_random, /obj/structure/flora/bush/sparsegrass/style_random, @@ -41117,30 +40832,39 @@ }, /area/station/commons/fitness/recreation) "nHY" = ( -/obj/effect/spawner/random/trash/mess, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters{ + id = "hydroponics_shutters"; + name = "Hydroponics Shutters"; + dir = 1 + }, /turf/open/floor/plating, -/area/station/maintenance/department/science) +/area/station/service/hydroponics) "nIa" = ( /obj/machinery/light/directional/west, -/obj/structure/chair/stool/directional/south, +/obj/structure/bed/double{ + dir = 4 + }, +/obj/item/bedsheet/dorms_double{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, /turf/open/floor/carpet/red, -/area/station/commons/dorms) +/area/station/commons/dorms/room6) "nIb" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/camera/directional/west{ c_tag = "Engineering - Atmospherics Incinerator"; name = "engineering camera" }, +/obj/machinery/firealarm/directional/west{ + pixel_y = 5 + }, /obj/machinery/atmospherics/components/tank/plasma, -/obj/structure/sign/warning/no_smoking{ - pixel_x = -28 +/obj/machinery/light_switch/directional/west{ + pixel_y = -5 }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"nIh" = ( -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/research/abandoned) "nIs" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -41159,7 +40883,7 @@ dir = 4 }, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/department/science) "nIt" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ @@ -41169,15 +40893,18 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) +"nIw" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "nIx" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"nIA" = ( -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/captain/private) "nIC" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -41192,21 +40919,31 @@ /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/security/execution) +"nII" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/machinery/suit_storage_unit/captain, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "nIN" = ( -/obj/effect/decal/cleanable/generic, -/obj/effect/spawner/random/trash/hobo_squat, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/closed/wall, +/area/station/medical/virology) +"nIP" = ( +/turf/closed/wall, +/area/station/commons/dorms/room2) "nIW" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 + }, /obj/machinery/light_switch/directional/south{ - pixel_x = -8 + pixel_x = -5 }, /obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "nJa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -41221,9 +40958,13 @@ /turf/open/floor/iron/white, /area/station/science/xenobiology) "nJc" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) "nJi" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -41236,8 +40977,9 @@ id_tag = "dorm_4"; name = "Dorm 4" }, +/obj/structure/cable, /turf/open/floor/iron/dark/textured, -/area/station/commons/dorms) +/area/station/commons/dorms/room4) "nJk" = ( /turf/open/floor/carpet/green, /area/station/commons/locker) @@ -41245,13 +40987,22 @@ /obj/effect/turf_decal/trimline/red/filled/warning, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) +"nJr" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "nJx" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/table/wood, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/dresser, /turf/open/floor/wood/tile, -/area/station/commons/dorms) +/area/station/commons/dorms/room4) "nJy" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -41261,10 +41012,10 @@ }, /obj/machinery/door/firedoor, /obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "bar_sec_shutters"; name = "Bar Shutters"; - dir = 8 + dir = 4 }, /obj/structure/desk_bell{ pixel_y = 2; @@ -41278,11 +41029,6 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"nJL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/storage/primary) "nJN" = ( /obj/effect/turf_decal/trimline/neutral/line{ dir = 4 @@ -41315,32 +41061,19 @@ /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/turret_protected/ai) "nKe" = ( -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/stripes/end{ - dir = 4 +/obj/effect/turf_decal/box, +/obj/structure/closet/crate, +/obj/item/stack/license_plates/empty/fifty, +/obj/item/stack/license_plates/empty/fifty, +/obj/item/stack/license_plates/empty/fifty, +/turf/open/floor/iron/dark/side{ + dir = 5 }, -/obj/effect/landmark/start/prisoner, -/turf/open/floor/carpet/black, -/area/station/security/bitden) -"nKf" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/light/small/directional/south, -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"nKn" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/area/station/security/prison/work) "nKo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison/workout) +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark, +/area/station/security/prison) "nKr" = ( /turf/closed/wall, /area/station/solars/starboard/fore) @@ -41348,9 +41081,15 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/engine/o2, /area/station/engineering/atmos) +"nKz" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/button/door/directional/north{ + id = "maint_bar_shutters"; + name = "Bar Shutters Control" + }, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "nKP" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/firealarm/directional/south, /obj/structure/extinguisher_cabinet/directional/east, /obj/machinery/cryopod{ dir = 8 @@ -41398,28 +41137,12 @@ dir = 9 }, /area/station/hallway/secondary/service) -"nLa" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 4 - }, -/obj/machinery/station_map/engineering/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) -"nLl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "nLC" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - pixel_x = -5; - pixel_y = 3 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 }, -/turf/open/floor/wood, -/area/station/service/library) +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "nLE" = ( /turf/open/space, /area/space) @@ -41430,11 +41153,6 @@ /obj/structure/particle_accelerator/particle_emitter/left, /turf/open/floor/plating/airless, /area/space/nearstation) -"nLS" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/item/grown/bananapeel, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "nMm" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 @@ -41446,37 +41164,30 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "nMn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/station/service/library) +/turf/closed/wall, +/area/station/medical/cryo) +"nMo" = ( +/obj/effect/turf_decal/box, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/machinery/holopad, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/break_room) +"nMp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "nMq" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) -"nMx" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "nMG" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"nML" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "nMW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -41484,15 +41195,25 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/sorting) -"nNs" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +"nNt" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "med_priv_2"; + name = "Privacy Shutters"; + dir = 4 }, -/obj/machinery/vending/engivend, -/turf/open/floor/iron/dark/side{ +/turf/open/floor/plating, +/area/station/medical/patients_rooms/room_b) +"nNu" = ( +/obj/structure/disposalpipe/junction{ dir = 1 }, -/area/station/engineering/storage_shared) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "nNH" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/structure/table, @@ -41506,31 +41227,16 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"nNK" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/small/directional/north, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/firealarm/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "Medical - Exam Room"; - name = "medical camera"; - network = list("ss13","medbay") - }, -/obj/machinery/light_switch/directional/north{ - pixel_x = 8 - }, -/obj/machinery/computer/operating{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/medical/exam_room) "nNM" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 }, /obj/machinery/light/directional/east, /obj/machinery/airalarm/directional/east, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start/cargo_technician, /turf/open/floor/iron/dark/side{ dir = 4 }, @@ -41550,9 +41256,10 @@ /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) "nNQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/table/reinforced, +/obj/item/stack/sheet/mineral/coal/five, /turf/open/floor/wood, /area/station/smithing) "nNV" = ( @@ -41574,10 +41281,14 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, +/obj/machinery/camera/directional/north{ + c_tag = "Cargo - Mining Office"; + name = "cargo camera" + }, /obj/machinery/airalarm/directional/north, /obj/structure/table, /obj/item/storage/medkit/regular{ - pixel_x = 3; + pixel_x = 6; pixel_y = 6 }, /turf/open/floor/iron/dark/side{ @@ -41590,25 +41301,24 @@ /area/station/security/prison/safe) "nOu" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"nOv" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/white, +/area/station/medical/virology) "nOw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/warehouse) -"nOF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "nOK" = ( /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark/side{ @@ -41619,18 +41329,26 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) +"nOO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/wood, +/area/station/service/library/lounge) "nOZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +/obj/effect/turf_decal/tile/blue/full, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/medbay/central) "nPf" = ( -/turf/closed/wall, -/area/station/command/heads_quarters/captain/private) +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "nPl" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -41638,44 +41356,27 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"nPp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) -"nPq" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/effect/turf_decal/trimline/neutral/line{ +"nPt" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"nPx" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/obj/structure/sign/departments/maint/directional/south, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"nPs" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/structure/table, -/obj/item/aicard, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) -"nPx" = ( +/obj/structure/cable, /obj/structure/table, /obj/structure/bedsheetbin, -/obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/checker, /area/station/security/prison/shower) "nPz" = ( /obj/structure/flora/bush/large/style_random, /turf/open/floor/grass, /area/station/hallway/secondary/exit/departure_lounge) "nPC" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/tile/dark_blue/full, /obj/effect/turf_decal/loading_area/white{ dir = 8 }, @@ -41684,25 +41385,33 @@ id = "hop_queue"; name = "HoP Queue Shutters" }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) "nPI" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/dark, +/turf/open/floor/glass/reinforced, /area/station/commons/fitness/recreation) "nPL" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/machinery/airalarm/directional/south, +/obj/structure/table/wood, +/obj/machinery/fax{ + fax_name = "Psychology Office"; + name = "Psychology Office Fax Machine" + }, +/turf/open/floor/wood, +/area/station/medical/psychology) "nPR" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 }, /turf/open/floor/iron, /area/station/science/robotics/lab) +"nQh" = ( +/obj/structure/chair/sofa/bench/solo{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "nQm" = ( /obj/effect/turf_decal/trimline/green/filled/warning, /obj/effect/turf_decal/trimline/green/warning{ @@ -41711,25 +41420,37 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/port) "nQn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/trash/garbage, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"nQD" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/science) -"nQM" = ( +"nQw" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 + dir = 4 }, /turf/open/floor/iron/white, -/area/station/medical/storage) -"nQN" = ( -/obj/effect/mapping_helpers/broken_floor, +/area/station/medical/exam_room) +"nQC" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks{ + dir = 1 + }, /turf/open/floor/wood, -/area/station/maintenance/starboard/aft) +/area/station/service/abandoned_gambling_den) +"nQD" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/stone, +/area/station/smithing) +"nQN" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/computer/records/medical{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/office) "nRj" = ( /obj/effect/turf_decal/stripes/end, /obj/structure/cable, @@ -41751,18 +41472,22 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) -"nRE" = ( -/obj/machinery/door/airlock/external{ - name = "Exploration Shuttle Dock" +"nRo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/research/abandoned) +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron/textured, +/area/station/engineering/main) +"nRD" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/space_heater, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "nRV" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, @@ -41785,21 +41510,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"nSt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"nSy" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/small/directional/east, -/turf/open/floor/wood, -/area/station/service/bar/backroom) "nSF" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -41809,12 +41519,19 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat_interior) +"nSU" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/tank_dispenser, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "nTa" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/shower/directional/west, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/command/heads_quarters/cmo) "nTn" = ( /obj/structure/lattice, /obj/item/clothing/mask/animal/horsehead/cursed{ @@ -41830,32 +41547,29 @@ req_access = list("ai_upload") }, /obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; + dir = 8; id = "secondary_ai_core_shutters"; name = "Secondary AI Core Shutters" }, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) -"nTB" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/bottle/wine, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = -8; - pixel_y = 8 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = 8; - pixel_y = 8 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) "nTS" = ( -/obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/structure/cable, +/obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"nUh" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/machinery/computer/records/security{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "nUi" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -41863,17 +41577,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron/dark/side, /area/station/hallway/secondary/service) -"nUs" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 4 - }, -/obj/structure/table/glass, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "nUv" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -41888,17 +41591,21 @@ /obj/item/pen, /turf/open/floor/iron/dark, /area/station/security/brig/entrance) -"nUE" = ( -/obj/structure/sign/departments/science/directional/east, +"nUH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/engineering/atmos) "nUK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/structure/chair_flipped{ dir = 8 }, -/obj/machinery/vending/wardrobe/chem_wardrobe, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "nUQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -41914,12 +41621,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"nVa" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +"nVc" = ( +/obj/structure/chair/office/light{ + dir = 4 }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/obj/effect/landmark/start/librarian, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "nVk" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -41941,6 +41649,11 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/white, /area/station/science/research) +"nVu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/ghost_critter_spawn, +/turf/open/floor/iron/checker, +/area/station/maintenance/port/fore) "nVy" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /turf/open/floor/iron/dark, @@ -41952,6 +41665,10 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/landmark/start/scientist, /turf/open/floor/iron/white, /area/station/science/explab) "nVA" = ( @@ -41964,48 +41681,19 @@ /obj/structure/cable, /obj/machinery/door/poddoor/shutters{ id = "robotics_garage"; - name = "Garage Shutters" + name = "Robotics Garage Shutters" }, /turf/open/floor/iron/dark/textured, /area/station/science/robotics/mechbay) -"nVB" = ( -/obj/structure/table/wood, -/obj/item/phone{ - pixel_x = -6; - pixel_y = 10 - }, -/obj/machinery/recharger{ - pixel_x = -4; - pixel_y = -1 - }, -/obj/item/paper_bin{ - pixel_y = 4; - pixel_x = 9 - }, -/obj/item/stamp/head/hos{ - pixel_x = 10; - pixel_y = 6 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) "nVC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) -"nVN" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/dark_blue/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "nWh" = ( +/obj/machinery/duct, /obj/structure/table/reinforced, -/obj/item/reagent_containers/cup/soup_pot{ - pixel_x = 4; - pixel_y = 8 - }, /turf/open/floor/iron/kitchen, /area/station/security/prison/mess) "nWp" = ( @@ -42061,6 +41749,11 @@ /obj/machinery/door/poddoor/massdriver_ordnance, /turf/open/floor/plating, /area/station/science/ordnance/testlab) +"nWS" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) "nWT" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 6 @@ -42069,32 +41762,51 @@ /turf/open/floor/iron/white, /area/station/science/lab) "nXt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/dark_blue/full, +/obj/effect/turf_decal/box, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/landmark/navigate_destination/bridge, -/turf/open/floor/iron/dark/textured, -/area/station/command/bridge) +/obj/machinery/holopad, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/teleporter) "nXA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/trimline/red/filled/warning, /obj/structure/cable, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) +"nXD" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/sign/departments/exam_room/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"nXF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Meeting Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/iron/dark/textured, +/area/station/command/meeting_room) "nXP" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 @@ -42103,7 +41815,7 @@ /obj/machinery/computer/security{ dir = 4 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "nXR" = ( /obj/effect/turf_decal/tile/neutral/full, @@ -42122,8 +41834,11 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "nYb" = ( -/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, /obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) "nYd" = ( @@ -42135,20 +41850,36 @@ dir = 1 }, /area/station/cargo/miningoffice) +"nYe" = ( +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = 5 + }, +/obj/machinery/vending/games, +/turf/open/floor/wood, +/area/station/service/library/lounge) "nYl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/engine, /area/station/science/xenobiology) "nYx" = ( +/obj/machinery/camera/autoname/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/purple/filled/warning{ - dir = 10 - }, /obj/structure/cable, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/science/research) +"nYO" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "nYQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -42170,26 +41901,21 @@ /turf/open/floor/iron/dark/textured, /area/station/cargo/miningoffice) "nZa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 +/obj/machinery/light/small/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Service - Bar, Backroom"; + name = "service camera" }, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/fore) +/turf/open/floor/wood, +/area/station/service/bar/backroom) "nZd" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/turf/open/floor/plating, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) "nZg" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/cable/layer1, /turf/open/floor/iron, /area/station/engineering/main) "nZj" = ( @@ -42217,27 +41943,23 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/white, /area/station/science/explab) -"nZl" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "nZo" = ( /obj/machinery/power/port_gen/pacman/pre_loaded, /turf/open/floor/plating, /area/station/maintenance/department/security/brig) -"nZu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) +"nZt" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/holopad, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/surgery) "nZy" = ( /obj/structure/lattice/catwalk, -/obj/item/stack/cable_coil, /obj/structure/sign/warning/electric_shock/directional/south, +/obj/item/stack/cable_coil, /turf/open/space/basic, /area/station/solars/starboard/aft) "nZD" = ( @@ -42261,39 +41983,14 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/science) "nZX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) "oaa" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/contraband/prison, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/kitchen/fork/plastic, -/obj/item/kitchen/fork/plastic, -/obj/item/kitchen/fork/plastic, -/obj/item/kitchen/spoon/plastic, -/obj/item/kitchen/spoon/plastic, -/obj/item/kitchen/spoon/plastic, -/obj/item/knife/plastic, -/obj/item/knife/plastic, -/obj/item/knife/plastic, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/box/drinkingglasses, -/obj/machinery/light/directional/south, +/obj/machinery/light_switch/directional/south, /turf/open/floor/iron/kitchen, /area/station/security/prison/mess) "oak" = ( @@ -42320,9 +42017,18 @@ /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/turret_protected/aisat_interior) "oax" = ( -/obj/machinery/cassette/mailbox, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/machinery/light/small/directional/west, +/obj/structure/plaque/static_plaque/atmos{ + pixel_x = -32 + }, +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/landmark/start/atmospheric_technician, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/atmos/office) "oaC" = ( /obj/effect/turf_decal/tile/orange/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -42344,13 +42050,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"oaK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "oaN" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -42368,7 +42067,7 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 }, -/obj/structure/table/glass, +/obj/structure/table/reinforced/rglass, /obj/machinery/light/directional/east, /obj/item/wrench, /obj/item/clothing/gloves/latex, @@ -42397,12 +42096,11 @@ /obj/machinery/status_display/evac/directional/east, /turf/open/floor/iron/white, /area/station/science/genetics) -"oaZ" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/newscaster/directional/north, -/obj/structure/table/wood, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) +"oaX" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "obc" = ( /obj/structure/disposalpipe/sorting/mail{ dir = 4 @@ -42413,106 +42111,82 @@ /obj/effect/mapping_helpers/mail_sorting/service/library, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) +"obm" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "obt" = ( -/obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"obA" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) -"obC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/surgery) -"obV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +"obE" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/wood, +/area/station/service/library/private) "ocd" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/machinery/button/door/directional/west{ - id = "ce_privacy"; - name = "Privacy Shutters Control" - }, -/mob/living/basic/parrot/poly, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"ocg" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/storage) +/turf/closed/wall, +/area/station/medical/morgue) "och" = ( /obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/bot, /obj/structure/closet/crate/coffin, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) -"ocj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/medical/paramedic) "ocy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/altar_of_gods, -/obj/item/storage/book/bible, +/obj/item/book/bible, /turf/open/floor/carpet, /area/station/service/chapel) +"ocC" = ( +/obj/item/radio/intercom/prison/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/prison/mess) "ocD" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/cable, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"oda" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/table/glass, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/item/experi_scanner, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters{ + id = "kitchen_sec_shutters"; + name = "Kitchen Shutters"; + dir = 1 + }, +/obj/structure/displaycase/forsale/kitchen{ + pixel_y = 10 + }, +/turf/open/floor/iron/dark/textured, +/area/station/service/kitchen) +"ocN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"ocP" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "odm" = ( /obj/structure/closet/wardrobe/black, /turf/open/floor/iron/dark/side{ dir = 10 }, /area/station/commons/dorms) -"ody" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/firealarm/directional/west, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/iron, -/area/station/engineering/main) "odC" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -42532,10 +42206,6 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"odR" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "oed" = ( /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, @@ -42545,16 +42215,6 @@ /obj/item/flashlight/lamp, /turf/open/floor/iron/textured, /area/station/security/interrogation) -"oeF" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "oeH" = ( /obj/machinery/firealarm/directional/north{ pixel_x = 5 @@ -42578,51 +42238,49 @@ /obj/structure/sink/directional/east, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) -"ofl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/warning{ +"ofh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"ofs" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/turf/open/floor/iron/dark/side, -/area/station/engineering/break_room) +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured, +/area/station/science/research) "ofJ" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/effect/spawner/random/bureaucracy/pen{ - pixel_y = 6; - pixel_x = -6 +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 }, -/turf/open/floor/wood, -/area/station/service/library) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/aft) "oga" = ( /obj/machinery/firealarm/directional/west, +/obj/structure/extinguisher_cabinet/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/service/chapel/office) "ogd" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/blood/old, -/obj/item/gun/ballistic/rifle/boltaction/pipegun, -/obj/effect/mob_spawn/corpse/human/assistant, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/obj/machinery/door/window/right/directional/north, +/turf/open/floor/iron/dark/textured, +/area/station/service/abandoned_gambling_den) "ogg" = ( /obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, /obj/structure/sign/warning/vacuum/external/directional/north, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) @@ -42632,11 +42290,10 @@ /turf/open/floor/plating, /area/station/maintenance/department/science) "ogl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/service/janitor) +/mob/living/basic/slime, +/obj/machinery/light/floor/has_bulb, +/turf/open/floor/engine, +/area/station/science/xenobiology) "ogz" = ( /obj/structure/table/reinforced, /obj/item/food/grown/tomato, @@ -42654,16 +42311,11 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/light_switch/directional/east, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "ogK" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/item/radio/intercom/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) "ogR" = ( @@ -42672,9 +42324,9 @@ }, /obj/machinery/requests_console/directional/west{ department = "Hydroponics"; - name = "Hydroponics Requests Console"; - supplies_requestable = 1 + name = "Hydroponics Requests Console" }, +/obj/effect/mapping_helpers/requests_console/supplies, /obj/structure/closet/crate/hydroponics, /obj/item/wirecutters, /obj/item/wrench, @@ -42683,18 +42335,16 @@ dir = 8 }, /area/station/service/hydroponics) -"ogT" = ( -/obj/structure/flora/grass/jungle/b, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/leafy, -/turf/open/floor/grass, -/area/station/command/bridge) -"ogW" = ( -/obj/structure/sign/poster/official/moth_epi/directional/south, -/obj/structure/table/wood, -/obj/effect/spawner/random/food_or_drink/snack, -/turf/open/floor/carpet/cyan, -/area/station/medical/break_room) +"ogX" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "ogY" = ( /turf/closed/wall, /area/station/cargo/sorting) @@ -42702,19 +42352,8 @@ /obj/structure/sign/warning/secure_area/directional/south, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/emcloset, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) -"oha" = ( -/obj/structure/table/glass, -/obj/item/crowbar/red, -/obj/item/tank/internals/emergency_oxygen{ - pixel_x = -8 - }, -/obj/item/clothing/mask/breath{ - pixel_x = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) "ohf" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -42725,11 +42364,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, /turf/open/floor/plating, /area/station/maintenance/port) "ohg" = ( @@ -42761,15 +42395,13 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "ohm" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/table/reinforced/rglass, +/obj/machinery/computer/records/medical/laptop, +/turf/open/floor/iron/checker{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/engineering/main) +/area/station/command/heads_quarters/cmo) "ohw" = ( /obj/effect/turf_decal/trimline/purple/warning, /obj/effect/turf_decal/trimline/purple/filled/warning{ @@ -42808,25 +42440,16 @@ /area/station/hallway/primary/starboard) "oij" = ( /obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) -"oil" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"oip" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 1 - }, +"oim" = ( +/obj/machinery/light/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/area/station/engineering/break_room) +/turf/open/floor/iron/white, +/area/station/medical/virology) "oiB" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 @@ -42841,11 +42464,10 @@ dir = 8 }, /area/station/cargo/storage) -"oiN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) "oiO" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /obj/structure/cable, /turf/open/floor/wood, /area/station/commons/locker) @@ -42863,8 +42485,20 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) +"oiW" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/structure/table/reinforced/rglass, +/obj/item/emergency_bed{ + pixel_y = 14 + }, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "ojr" = ( -/obj/machinery/material_analyzer, +/obj/machinery/light/directional/east, +/obj/machinery/electroplater, /turf/open/floor/wood, /area/station/smithing) "oju" = ( @@ -42882,6 +42516,11 @@ }, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/atmos) +"ojw" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "ojO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42903,7 +42542,7 @@ /obj/effect/mapping_helpers/mail_sorting/science/rd_office, /obj/effect/mapping_helpers/mail_sorting/science/research, /obj/effect/mapping_helpers/mail_sorting/science/robotics, -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) "ojV" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -42929,14 +42568,8 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) "okq" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "okt" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, @@ -42947,29 +42580,34 @@ }, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) -"okW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, -/obj/machinery/chem_master, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry) -"olc" = ( -/obj/structure/disposalpipe/segment, +"okM" = ( +/obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/bridge) +"okN" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 }, -/obj/structure/railing{ +/obj/machinery/button/door/directional/west{ + id = "engi_break_room_shutters"; + name = "Engineering Shutters Control"; + req_access = list("engineering") + }, +/obj/structure/filingcabinet/security, +/turf/open/floor/iron/dark/side{ dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/area/station/engineering/break_room) +"olc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/station/maintenance/starboard/aft) "olp" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -42977,22 +42615,18 @@ /turf/open/floor/iron/dark, /area/station/security/prison/visit) "olq" = ( -/obj/structure/sign/poster/contraband/random/directional/east, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"olH" = ( -/obj/machinery/computer/atmos_control/nocontrol/master{ +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, -/obj/machinery/requests_console/directional/east{ - assistance_requestable = 1; - department = "Atmospherics"; - name = "Atmospherics Requests Console"; - supplies_requestable = 1 +/obj/effect/turf_decal/trimline/blue/line{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) +/obj/machinery/light/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "olQ" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 @@ -43002,31 +42636,37 @@ /obj/effect/landmark/start/cook, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"olX" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +"olT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/construction) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "oma" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"ome" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/mirror/directional/west, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +"omu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "omw" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -43037,6 +42677,11 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"omC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/cigbutt, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "omI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -43050,52 +42695,22 @@ /obj/structure/sign/warning/explosives/alt/directional/north, /turf/open/floor/iron/white, /area/station/science/research) -"omR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/computer/crew, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"omY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/keycard_auth{ - pixel_y = -24 - }, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "omZ" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/light_switch/directional/north{ - pixel_x = -8 - }, -/obj/machinery/photocopier, -/turf/open/floor/wood, -/area/station/service/library/lounge) -"one" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/machinery/station_map/engineering/directional/south, /turf/open/floor/iron/dark, -/area/station/hallway/primary/fore) -"onj" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/area/station/engineering/transit_tube) +"onk" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 }, -/obj/machinery/computer/records/pathology{ - dir = 8 +/obj/machinery/light/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"onk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/engineering/break_room) "onq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -43114,6 +42729,22 @@ }, /turf/open/space/basic, /area/space) +"onF" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/structure/chair/sofa/bench{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"onG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/paramedic) "onH" = ( /obj/machinery/light/small/directional/west, /obj/structure/sign/warning/rad_shelter/directional/west, @@ -43138,16 +42769,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/light/small/directional/south, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/fore) +"oop" = ( +/obj/effect/turf_decal/box/corners, +/obj/machinery/smartfridge/chemistry/preloaded, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "oox" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/port) +/obj/effect/spawner/random/trash/food_packaging, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "ooJ" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/effect/turf_decal/trimline/blue/line{ @@ -43157,54 +42790,49 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/item/kirbyplants/random, /obj/machinery/camera/directional/south{ - c_tag = "Central Hallway South"; + c_tag = "Hallway - Central, South"; name = "hallway camera" }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"ooM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) +"ooN" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "ooP" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/prison/workout) "ooS" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, +/obj/structure/window/reinforced/tinted, /obj/structure/toilet{ dir = 4 }, /turf/open/floor/plastic, /area/station/security/prison/safe) -"ooT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/booze{ - pixel_x = -8; - pixel_y = 9 - }, -/obj/item/reagent_containers/cup/rag{ - pixel_y = 7; - pixel_x = 9 - }, -/obj/item/toy/cattoy{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/white, -/area/station/maintenance/department/medical) "opa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"ope" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) "opr" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -43221,13 +42849,23 @@ }, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness/recreation) -"opG" = ( -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/grass, -/area/station/command/bridge) +"opA" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"opE" = ( +/obj/machinery/button/door/directional/east{ + id = "custodial_shutters"; + name = "Custodial Shutters Control"; + req_access = list("janitor") + }, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/service/janitor) "opK" = ( /obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43237,15 +42875,17 @@ /turf/open/floor/iron/dark/smooth_large, /area/station/security/execution/transfer) "opO" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"opP" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/firealarm/directional/west, -/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/engineering/central) +"opR" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, /turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/area/station/security/checkpoint/customs/auxiliary) "opU" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -43262,10 +42902,8 @@ /turf/open/floor/iron/dark/textured, /area/station/service/bar) "oqf" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 10 - }, -/obj/item/kirbyplants/random, +/obj/machinery/light/small/directional/east, +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) "oqp" = ( @@ -43285,15 +42923,12 @@ dir = 4 }, /obj/machinery/door/airlock/engineering/glass{ - name = "Engineering Foyer" + name = "Engineering Break Room" }, /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/any/engineering/general, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/dark/textured, /area/station/engineering/break_room) "oqC" = ( /obj/effect/turf_decal/stripes/line{ @@ -43307,26 +42942,22 @@ id_tag = "dorm_3"; name = "Dorm 3" }, +/obj/structure/cable, /turf/open/floor/iron/dark/textured, -/area/station/commons/dorms) +/area/station/commons/dorms/room3) "oqK" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/engine/atmos) -"oqN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "oqP" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) +"ora" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "orb" = ( /turf/closed/wall, /area/station/hallway/primary/fore) @@ -43342,10 +42973,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark/smooth_half{ +/turf/open/floor/iron/dark/smooth_half, +/area/station/command/gateway) +"oru" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/area/station/command/gateway) +/turf/open/floor/wood, +/area/station/service/library) "orz" = ( /obj/effect/turf_decal/trimline/dark_red/corner{ dir = 4 @@ -43360,58 +42995,26 @@ /area/station/ai_monitored/turret_protected/ai_upload) "orE" = ( /obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) "orM" = ( -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/effect/spawner/random/engineering/toolbox, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/aft) -"orW" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/light/small/directional/west, -/obj/machinery/vending/wardrobe/medi_wardrobe, -/turf/open/floor/iron/white, -/area/station/medical/office) -"osp" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"osE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/area/station/maintenance/department/engine) "osP" = ( -/obj/machinery/light/directional/north, /obj/machinery/computer/cryopod/directional/north, /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/hallway/secondary/exit/departure_lounge) "osY" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/table/wood, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/dresser, /turf/open/floor/carpet/red, -/area/station/commons/dorms) -"otg" = ( -/obj/structure/chair/comfy/black{ - dir = 8 - }, -/obj/effect/landmark/start/research_director, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) +/area/station/commons/dorms/room6) "otx" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/structure/table/glass, @@ -43426,15 +43029,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"otD" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 6 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/engineering/break_room) "otG" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 @@ -43454,21 +43048,12 @@ /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/obj/machinery/airalarm/directional/south, /obj/structure/disposalpipe/trunk{ dir = 8 }, /obj/machinery/disposal/bin, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"otO" = ( -/obj/structure/chair/comfy/black{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/chief_engineer, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "otQ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -43485,11 +43070,9 @@ /turf/open/floor/iron, /area/station/cargo/storage) "ouj" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central) +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/station/medical/psychology) "ouk" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -43513,12 +43096,7 @@ /obj/item/stock_parts/capacitor, /obj/item/stock_parts/capacitor, /turf/open/floor/plating, -/area/station/maintenance/port/aft) -"ouI" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) +/area/station/maintenance/department/engine) "ouL" = ( /obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43533,7 +43111,6 @@ /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/courtroom) "ouX" = ( @@ -43549,45 +43126,76 @@ }, /obj/effect/mapping_helpers/airlock/access/all/command/eva, /turf/open/floor/plating, -/area/station/maintenance/port/fore) +/area/station/ai_monitored/command/storage/eva) "ovc" = ( /obj/structure/weightmachine/weightlifter, /turf/open/floor/iron/dark, /area/station/security/prison/workout) "ovo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters{ + id = "medbay_desk_shutters"; + name = "Medbay Front Desk Shutters"; + dir = 4 + }, +/turf/open/floor/plating, +/area/station/medical/office) +"ovs" = ( +/obj/structure/chair/comfy/black{ + dir = 1 }, +/obj/effect/landmark/start/head_of_personnel, /turf/open/floor/wood, -/area/station/service/library/private) +/area/station/command/meeting_room) "ovt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/chapel{ dir = 1 }, /area/station/service/chapel) +"ovv" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/flask/gold{ + pixel_x = 3; + pixel_y = 11 + }, +/obj/item/storage/box/matches{ + pixel_x = 4; + pixel_y = -2 + }, +/obj/item/clothing/mask/cigarette/cigar{ + pixel_x = 4 + }, +/obj/item/razor{ + pixel_x = -8; + pixel_y = 4 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "ovA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ + dir = 1 }, -/obj/machinery/telecomms/server/presets/science, -/turf/open/floor/engine/telecomms, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 4 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) "ovM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "ovO" = ( -/obj/effect/spawner/random/structure/table, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/pill/maintenance{ - pixel_y = 8; - pixel_x = -7 +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/obj/effect/spawner/random/vending/snackvend, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/aft) "ovS" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 1 @@ -43615,11 +43223,6 @@ dir = 8 }, /area/station/command/gateway) -"owd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/crayons, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "ows" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -43629,12 +43232,14 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "owt" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/line{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "owu" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -43644,26 +43249,40 @@ /obj/machinery/air_sensor/air_tank, /turf/open/floor/engine/air, /area/station/engineering/atmos) -"owN" = ( -/obj/structure/chair/wood{ - dir = 4 +"owK" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 }, -/obj/effect/landmark/start/hangover, /turf/open/floor/wood, /area/station/service/library/lounge) -"owX" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"owY" = ( +"owN" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) +"owQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/ghost_critter_spawn, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured, +/area/station/science/research) +"owX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/maintenance/department/engine) "oxa" = ( /turf/closed/wall/r_wall, /area/station/security/prison/work) @@ -43683,17 +43302,6 @@ /obj/item/assault_pod/mining, /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) -"oxn" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) "oxt" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/structure/cable, @@ -43706,7 +43314,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/science) "oxO" = ( /obj/machinery/composters, @@ -43714,21 +43322,16 @@ /area/station/service/hydroponics) "oxS" = ( /obj/machinery/light/directional/south, -/obj/machinery/computer/security{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) +/obj/machinery/firealarm/directional/south, +/obj/structure/reagent_dispensers/watertank, +/obj/item/reagent_containers/cup/bucket, +/turf/open/floor/grass, +/area/station/hallway/primary/central) "oxX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"oxY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "oyi" = ( /turf/open/floor/engine, /area/station/engineering/engine_smes) @@ -43738,7 +43341,8 @@ c_tag = "Command - Gateway"; name = "command camera" }, -/obj/structure/table/reinforced, +/obj/structure/rack, +/obj/item/extinguisher, /turf/open/floor/iron, /area/station/command/gateway) "oym" = ( @@ -43750,12 +43354,14 @@ /turf/open/floor/iron/white, /area/station/science/research) "oyo" = ( -/obj/machinery/newscaster/directional/south, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks{ - dir = 4 +/obj/machinery/requests_console/directional/south{ + department = "Bar"; + name = "Bar Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/machinery/chem_master/condimaster{ + desc = "Looks like a knock-off chem-master. Perhaps useful for separating liquids when mixing drinks precisely. Also dispenses condiments."; + name = "HoochMaster Deluxe" }, /turf/open/floor/wood, /area/station/service/bar) @@ -43781,81 +43387,30 @@ /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/aisat/foyer) "oyG" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/stasis{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/service/library) "oyI" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 }, +/obj/machinery/airalarm/directional/east, +/obj/effect/mapping_helpers/airalarm/mixingchamber_access, /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 9 }, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/mixingchamber_access, /turf/open/floor/iron/dark, /area/station/science/ordnance/burnchamber) -"oyN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table, -/obj/item/storage/box/lights/mixed{ - pixel_y = 6; - pixel_x = -6 - }, -/obj/item/storage/box/lights/mixed{ - pixel_y = 6; - pixel_x = 6 - }, -/obj/item/lightreplacer{ - pixel_y = 10 - }, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) "oyS" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/engineering/main) -"ozh" = ( -/obj/effect/turf_decal/trimline/green/filled/warning, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/plating, +/area/station/maintenance/department/engineering/central) "ozj" = ( -/obj/machinery/light_switch/directional/south{ - pixel_x = 8 - }, -/obj/machinery/firealarm/directional/south, -/obj/structure/table/wood, -/obj/item/stack/sheet/iron/fifty{ - pixel_y = 5; - pixel_x = -4 - }, -/obj/item/stack/sheet/glass/fifty{ - pixel_y = 5 - }, -/obj/item/stack/cable_coil, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/wood, /area/station/service/bar/backroom) -"ozZ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/obj/structure/closet/secure_closet/engineering_welding, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/engineering/storage_shared) "oAa" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 @@ -43882,24 +43437,6 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron/dark, /area/station/science/robotics/mechbay) -"oAE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail{ - dir = 8 - }, -/obj/effect/mapping_helpers/mail_sorting/medbay/cmo_office, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"oAG" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 10 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "oAK" = ( /obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -43913,11 +43450,15 @@ /turf/open/space/basic, /area/station/solars/starboard/fore) "oAT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/light/small/directional/west, +/obj/structure/bed/pod{ + desc = "An old medical bed, just waiting for replacement with something up to date."; + name = "medical bed"; + dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/storage) +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "oAW" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -43927,9 +43468,9 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) "oAX" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) "oBh" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -43961,17 +43502,11 @@ name = "Garage Shutters Control"; req_access = list("robotics") }, -/obj/machinery/light_switch/directional/south{ - pixel_x = -6 +/obj/machinery/light_switch/directional/west{ + pixel_y = -5 }, /obj/machinery/firealarm/directional/west{ - pixel_y = -6 - }, -/obj/machinery/button/door/directional/west{ - id = "robotics_garage_shutters"; - name = "Mechbay Privacy Shutters Control"; - req_access = list("robotics"); - pixel_y = 6 + pixel_y = 5 }, /obj/structure/rack, /obj/item/storage/toolbox/mechanical{ @@ -43989,26 +43524,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail/flip{ - sortType = 6 +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/effect/mapping_helpers/mail_sorting/engineering/atmospherics, /turf/open/floor/iron, /area/station/hallway/primary/aft) "oBH" = ( /turf/closed/wall, /area/station/medical/pharmacy) -"oBQ" = ( -/obj/structure/sign/departments/engineering/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/starboard/aft) "oCd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44022,28 +43545,10 @@ /obj/structure/closet/secure_closet/brig, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"oCq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"oCv" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters"; - dir = 8 - }, -/turf/open/floor/plating, -/area/station/medical/cryo) "oCA" = ( -/obj/effect/turf_decal/delivery/red, +/obj/effect/turf_decal/bot_red, /obj/machinery/suit_storage_unit/standard_unit, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/large, /area/station/ai_monitored/command/storage/eva) "oCE" = ( /obj/effect/spawner/structure/window/reinforced, @@ -44051,31 +43556,21 @@ /turf/open/floor/plating, /area/station/ai_monitored/security/armory) "oCG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet/red, /area/station/security/courtroom) "oCJ" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table/wood, +/obj/structure/cable, +/obj/structure/reagent_forge, /turf/open/floor/wood, /area/station/smithing) "oDg" = ( /obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) -"oDi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "oDl" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -44092,6 +43587,12 @@ /obj/item/stock_parts/cell/upgraded, /turf/open/floor/iron, /area/station/maintenance/department/electrical) +"oDL" = ( +/obj/machinery/status_display/ai/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/atmos/office) "oDQ" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/iron/showroomfloor, @@ -44102,25 +43603,37 @@ /area/station/engineering/atmos/pumproom) "oDW" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/table/reinforced, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = -3; +/obj/structure/rack, +/obj/item/gun/grenadelauncher{ + pixel_y = 9 + }, +/obj/item/grenade/barrier{ + pixel_x = -6; pixel_y = 3 }, -/obj/item/clothing/mask/gas/sechailer, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = 3; - pixel_y = -3 +/obj/item/grenade/barrier{ + pixel_y = 3 + }, +/obj/item/grenade/barrier{ + pixel_x = 6; + pixel_y = 3 }, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "oEc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/hallway/secondary/service) +"oEu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "oEK" = ( /obj/effect/turf_decal/bot, /obj/machinery/field/generator/anchored, @@ -44151,11 +43664,9 @@ /turf/open/floor/iron/dark/textured, /area/station/service/bar/backroom) "oFj" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "oFm" = ( /obj/effect/turf_decal/trimline/green/line{ dir = 1 @@ -44173,13 +43684,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"oFq" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "oFy" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/trimline/red/filled/corner{ @@ -44194,13 +43698,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 10 }, /obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) +/turf/open/floor/plating, +/area/station/maintenance/port) "oGe" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -44218,6 +43721,37 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/iron/textured, /area/station/science/ordnance/office) +"oGl" = ( +/obj/structure/lattice, +/obj/machinery/camera/directional/south{ + c_tag = "AI Sat - External, Northeast"; + network = list("minisat"); + start_active = 1 + }, +/turf/open/space/basic, +/area/space/nearstation) +"oGL" = ( +/obj/effect/spawner/random/structure/girder, +/turf/open/floor/plating, +/area/station/maintenance/department/engineering/central) +"oGT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) +"oHa" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/machinery/status_display/evac/directional/south, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/security_assistant, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) "oHb" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -44247,46 +43781,40 @@ }, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) -"oHO" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +"oHP" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/obj/machinery/newscaster/directional/north, -/obj/machinery/autolathe, -/turf/open/floor/iron/dark/side{ - dir = 1 +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/firealarm/directional/west, +/obj/structure/chair{ + dir = 4 }, -/area/station/engineering/break_room) -"oHZ" = ( -/obj/structure/table/wood, -/obj/machinery/computer/records/security/laptop, -/obj/effect/turf_decal/siding/wood, -/obj/item/paper_bin{ - pixel_x = 15; - pixel_y = 2 +/obj/effect/landmark/start/cook, +/turf/open/floor/iron/kitchen, +/area/station/service/kitchen) +"oIb" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 4 }, -/obj/machinery/door/window/brigdoor/left/directional/south{ - req_access = list("command"); - name = "Blueshield Office" +/obj/structure/disposalpipe/segment{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters{ - id = "blueshield_office"; - name = "blueshield_shutters" - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) -"oIb" = ( -/turf/closed/wall, -/area/space/nearstation) +/turf/open/floor/iron, +/area/station/engineering/main) "oIc" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 }, /obj/machinery/light_switch/directional/south{ - pixel_x = -8 + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 }, -/obj/machinery/firealarm/directional/south, /obj/structure/filingcabinet, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) @@ -44296,15 +43824,21 @@ /obj/machinery/component_printer, /turf/open/floor/iron/white, /area/station/science/circuits) -"oIw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +"oIs" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Command - Bridge, Hall, West"; + name = "command camera" }, -/obj/structure/cable, -/obj/machinery/power/smes{ - charge = 5e+006 +/obj/structure/chair/sofa/bench/solo{ + dir = 8 }, -/turf/open/floor/engine/telecomms, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"oIw" = ( +/obj/machinery/light/directional/west, +/obj/structure/cable, +/obj/machinery/power/smes/engineering, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) "oIE" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ @@ -44313,12 +43847,26 @@ /obj/machinery/vending/dinnerware, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"oIF" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +"oII" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/camera/directional/south{ + c_tag = "Engineering - Tech Storage"; + name = "engineering camera" }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/transit_tube) +/obj/machinery/light/small/directional/south, +/obj/structure/table, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_x = -6; + pixel_y = 9 + }, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_x = -6 + }, +/obj/item/weldingtool/largetank{ + pixel_x = 11 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "oIJ" = ( /obj/machinery/status_display/ai/directional/east, /obj/structure/table/reinforced, @@ -44347,29 +43895,14 @@ /turf/closed/wall/r_wall, /area/station/science/research) "oJd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/table/reinforced, -/obj/item/rcl/pre_loaded, +/obj/item/paper/monitorkey, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) "oJt" = ( -/obj/machinery/electroplater, -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood, -/area/station/smithing) -"oJz" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, +/obj/structure/girder, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/science) "oJB" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -44381,39 +43914,57 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) -"oJJ" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "oJR" = ( /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, /area/station/maintenance/department/science) "oJX" = ( -/obj/structure/table, -/obj/item/folder/blue, -/obj/item/hand_labeler, +/obj/structure/bed/dogbed/ian, +/mob/living/basic/pet/dog/corgi/ian{ + dir = 8 + }, /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/hop) "oKb" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/liquid_barrier, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/science/xenobio, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/department/security/brig) +/area/station/science/xenobiology) "oKm" = ( /obj/effect/turf_decal/tile/brown/half/contrasted, /obj/machinery/requests_console/directional/south{ department = "Service Hall"; - name = "Service Hall Requests Console"; - supplies_requestable = 1 + name = "Service Hall Requests Console" }, +/obj/effect/mapping_helpers/requests_console/supplies, /obj/machinery/computer/department_orders/service{ dir = 1 }, /turf/open/floor/iron/dark/side, /area/station/hallway/secondary/service) +"oKo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/box, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"oKu" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/machinery/status_display/ai/directional/west, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/white, +/area/station/medical/virology) "oKw" = ( /obj/effect/turf_decal/arrows/white, /obj/effect/turf_decal/stripes/line{ @@ -44429,58 +43980,61 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "oKA" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, /obj/machinery/light/small/directional/west, -/obj/item/radio/intercom/prison/directional/west, /obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark, +/obj/item/radio/intercom/prison/directional/west, +/turf/open/floor/iron/checker, /area/station/security/prison/shower) +"oKD" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Head of Personnel's Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/hop, +/obj/effect/landmark/navigate_destination, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/hop) "oKE" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 }, -/obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "oKM" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ +/obj/effect/turf_decal/siding/thinplating{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/main) +"oKQ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 }, -/turf/open/floor/iron/dark/side{ - dir = 4 +/obj/machinery/light/small/directional/north, +/obj/machinery/light_switch/directional/north{ + pixel_x = -5 }, -/area/station/medical/paramedic) +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "oKS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, -/obj/structure/closet, -/obj/item/airlock_painter, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"oKW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/table/glass, -/obj/item/storage/box/beakers, -/obj/item/reagent_containers/cup/beaker/large, -/obj/item/reagent_containers/dropper, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) -"oKY" = ( -/obj/effect/turf_decal/stripes/end, -/obj/machinery/shower/directional/south, -/turf/open/floor/iron/white/textured, -/area/station/maintenance/department/medical) "oLb" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/structure/cable, @@ -44489,24 +44043,13 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload_foyer) "oLd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/science) "oLg" = ( /turf/closed/wall, @@ -44515,6 +44058,26 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/storage) +"oLk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Paramedic Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/iron/dark/textured, +/area/station/medical/paramedic) "oLq" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 8 @@ -44525,13 +44088,6 @@ dir = 4 }, /area/station/service/hydroponics) -"oLy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/chair_flipped{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "oLJ" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 @@ -44546,13 +44102,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"oLY" = ( -/obj/structure/lattice, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/space/basic, -/area/space/nearstation) "oMi" = ( /obj/structure/cable, /turf/open/floor/wood, @@ -44582,10 +44131,11 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) "oMB" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "oMD" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 1 @@ -44613,25 +44163,13 @@ }, /area/station/service/hydroponics) "oMK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /turf/open/floor/iron/freezer, /area/station/science/xenobiology) "oNc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/telecomms/server/presets/medical, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/server/presets/service, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) -"oNi" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/starboard/aft) "oNk" = ( /turf/closed/wall/r_wall, /area/station/command/teleporter) @@ -44646,6 +44184,11 @@ /obj/effect/mapping_helpers/airlock/access/any/security/detective, /turf/open/floor/iron/dark/textured, /area/station/security/detectives_office) +"oNu" = ( +/obj/machinery/firealarm/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "oNx" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -44662,32 +44205,30 @@ }, /obj/machinery/airalarm/directional/east, /obj/machinery/piratepad/civilian, -/obj/machinery/camera/autoname/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Cargo - Lobby"; + name = "cargo camera" + }, /turf/open/floor/iron/dark/side{ dir = 4 }, /area/station/cargo/lobby) "oNF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/engineering/tool, -/obj/effect/spawner/random/engineering/tool{ - pixel_x = 6; - pixel_y = 6 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 }, -/obj/item/reagent_containers/syringe, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"oNH" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/break_room) "oNL" = ( /turf/closed/wall, /area/station/commons/toilet/restrooms) "oOl" = ( -/obj/structure/reagent_dispensers/beerkeg, +/obj/machinery/light/small/directional/west, +/obj/item/radio/intercom/directional/west, +/obj/structure/table/wood, +/obj/item/toy/figure/bartender, /turf/open/floor/wood, /area/station/service/bar/backroom) "oOy" = ( @@ -44714,7 +44255,6 @@ "oOX" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) "oPd" = ( @@ -44745,16 +44285,14 @@ dir = 8 }, /area/station/commons/fitness/recreation) +"oPv" = ( +/obj/effect/turf_decal/trimline/purple/filled/line, +/obj/structure/sign/poster/official/random/directional/south, +/turf/open/floor/iron/white, +/area/station/science/research) "oPA" = ( /turf/open/floor/iron, /area/station/engineering/storage) -"oPE" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/surgery) "oPJ" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -44767,12 +44305,19 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"oPK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/wood{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/abandoned_gambling_den) "oPP" = ( /obj/structure/table/reinforced, /obj/item/storage/bag/tray, -/obj/item/kitchen/rollingpin{ - pixel_y = -4; - pixel_x = 4 +/obj/item/reagent_containers/cup/soup_pot{ + pixel_x = 4; + pixel_y = 8 }, /obj/item/reagent_containers/cup/soup_pot{ pixel_x = -4; @@ -44780,11 +44325,14 @@ }, /turf/open/floor/iron/kitchen, /area/station/security/prison/mess) -"oPX" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/computer/aifixer, +"oQc" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/machinery/computer/bank_machine, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/ai_monitored/command/nuke_storage) "oQl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44806,15 +44354,6 @@ /obj/structure/cable, /turf/open/floor/iron/large, /area/station/cargo/warehouse) -"oQv" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "oQE" = ( /obj/structure/chair/pew/right{ dir = 1 @@ -44847,11 +44386,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 2 +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/open/floor/iron, -/area/station/hallway/primary/aft) +/area/station/engineering/break_room) "oRg" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 @@ -44859,13 +44398,6 @@ /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron/white, /area/station/science/research) -"oRj" = ( -/obj/structure/table, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) "oRs" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/rack, @@ -44906,14 +44438,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/atmos) -"oSg" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/warning, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "oSm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44923,17 +44447,11 @@ }, /area/station/commons/fitness) "oSo" = ( -/obj/machinery/light/small/directional/east, +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/department/science) -"oSp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/xmastree, -/turf/open/floor/carpet, -/area/station/service/library) "oSr" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/girder, @@ -44943,8 +44461,11 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, -/obj/structure/chair, -/obj/effect/landmark/start/cargo_technician, +/obj/machinery/light/small/directional/north, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder/yellow, +/obj/item/pen, /turf/open/floor/iron/dark/side{ dir = 1 }, @@ -44953,44 +44474,11 @@ /obj/structure/table/wood/fancy/black, /turf/open/floor/carpet, /area/station/service/chapel) -"oTl" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/table/glass, -/obj/item/healthanalyzer, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/gloves/latex, -/obj/item/storage/box/beakers, -/obj/item/storage/box/syringes{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/box/tube{ - pixel_y = 4; - pixel_x = -2 - }, -/obj/machinery/firealarm/directional/south, -/obj/item/storage/box/monkeycubes/mousecubes, -/obj/item/storage/box/monkeycubes/mousecubes{ - pixel_x = 6; - pixel_y = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"oTy" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "oTD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/green/fourcorners, -/obj/machinery/light/small/directional/west, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/structure/table, +/obj/item/assembly/igniter, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "oTE" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 8 @@ -45026,28 +44514,19 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "oTN" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/requests_console/directional/north{ - department = "Pharmacy"; - name = "Pharmacy Requests Console"; - supplies_requestable = 1; - receive_ore_updates = 1; - assistance_requestable = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/table/glass, -/obj/item/reagent_containers/cup/bottle/epinephrine, -/obj/item/reagent_containers/dropper, -/obj/item/stack/sheet/mineral/plasma, -/obj/item/stack/sheet/mineral/plasma{ - pixel_x = -6; - pixel_y = 6 +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 }, -/obj/item/toy/figure/chemist, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "oTX" = ( /obj/effect/turf_decal/tile/green{ dir = 4 @@ -45057,16 +44536,29 @@ dir = 10 }, /area/station/service/hydroponics) -"oTZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "oUr" = ( +/obj/machinery/light/small/directional/west, /obj/structure/sign/warning/vacuum/external/directional/west, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"oUv" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/light/small/directional/south, +/obj/machinery/airalarm/directional/south, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/item/t_scanner, +/turf/open/floor/iron/dark/side, +/area/station/engineering/break_room) +"oUD" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Medical - Pathology, Isolation, Cell 2"; + network = list("ss13","medbay"); + name = "medical camera" + }, +/obj/structure/table, +/turf/open/floor/iron/white, +/area/station/medical/virology) "oUG" = ( /turf/open/floor/iron, /area/station/cargo/warehouse) @@ -45107,11 +44599,15 @@ /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) "oVA" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/item/radio/intercom/directional/south, -/obj/structure/tank_holder/extinguisher, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) +/obj/effect/turf_decal/tile/yellow/full, +/obj/effect/turf_decal/bot, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + location = "Engineering" + }, +/obj/structure/plasticflaps/opaque, +/turf/open/floor/iron/large, +/area/station/maintenance/department/engine) "oVC" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, @@ -45121,21 +44617,23 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, -/obj/machinery/light_switch/directional/north, -/obj/machinery/camera/autoname/directional/north, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/closet/crate, +/obj/item/stack/ore/silver{ + amount = 2 + }, +/obj/item/stack/ore/iron, /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/cargo/miningoffice) -"oVL" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) "oWd" = ( /obj/structure/sign/warning/electric_shock/directional/west, /obj/machinery/light/small/directional/west, /obj/machinery/airalarm/directional/north, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/maintenance/seven, /turf/open/floor/plating, /area/station/maintenance/port/aft) "oWe" = ( @@ -45156,21 +44654,12 @@ /turf/open/floor/iron/dark, /area/station/security/prison) "oWu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/morgue{ - name = "Private Study"; - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/turf/open/floor/iron/dark/textured, -/area/station/service/library/private) +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/cmo) "oWC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -45178,14 +44667,6 @@ /obj/machinery/duct, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) -"oWE" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light/small/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "oWG" = ( /obj/effect/turf_decal/trimline/neutral/filled/warning, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -45196,7 +44677,7 @@ "oWT" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/carpet/blue, -/area/station/commons/dorms) +/area/station/commons/dorms/room2) "oWV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -45206,9 +44687,7 @@ "oXb" = ( /obj/structure/cable, /obj/machinery/light/directional/east, -/obj/machinery/power/terminal{ - dir = 8 - }, +/obj/machinery/status_display/evac/directional/east, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) "oXi" = ( @@ -45228,16 +44707,21 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"oXO" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ +"oXy" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/chair/office/light{ +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/effect/landmark/start/chemist, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"oXN" = ( +/obj/structure/cable, +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) "oXS" = ( /obj/effect/spawner/random/structure/chair_maintenance{ dir = 4 @@ -45245,12 +44729,19 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "oYi" = ( -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 + }, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = -5 }, /obj/item/radio/intercom/directional/west, /obj/structure/table/reinforced, +/obj/machinery/camera/directional/south{ + c_tag = "Science - Ordnance Launcher"; + name = "science camera"; + network = list("ss13","rd") + }, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) "oYl" = ( @@ -45275,13 +44766,13 @@ /area/station/security/brig) "oYs" = ( /obj/effect/turf_decal/trimline/brown/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/requests_console/directional/south{ department = "Cargo Bay"; - name = "Cargo Bay Requests Console"; - supplies_requestable = 1 + name = "Cargo Bay Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/machinery/autolathe, /turf/open/floor/iron/dark/side, @@ -45294,16 +44785,15 @@ /obj/machinery/door/firedoor, /obj/structure/table/reinforced, /obj/machinery/door/window/right/directional/south{ - name = "RaD Desk" + name = "Reception" }, /obj/machinery/door/window/right/directional/north{ name = "RaD Desk"; req_access = list("science") }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "rad_shutters"; - name = "RaD Shutters"; - dir = 1 + name = "RaD Shutters" }, /obj/structure/desk_bell{ pixel_x = 7 @@ -45317,6 +44807,29 @@ /obj/machinery/rnd/production/circuit_imprinter/department/science, /turf/open/floor/iron/white, /area/station/science/lab) +"oYJ" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/keycard_auth/directional/east, +/obj/structure/closet/secure_closet/tac{ + req_access = list("captain") + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) +"oYQ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/requests_console/directional/east{ + department = "Engineering"; + name = "Engineering Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "oZb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -45341,26 +44854,39 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) "oZh" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "kitchen_sec_shutters"; - name = "Kitchen Shutters"; - dir = 4 +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/service/kitchen) +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) +"oZn" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/cell_5k, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/empty, +/obj/item/toy/figure/engineer{ + pixel_y = 11; + pixel_x = 11 + }, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, +/area/station/engineering/break_room) "oZv" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/gravity_generator) -"oZP" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/table/glass, -/obj/machinery/computer/records/medical/laptop, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/command/heads_quarters/cmo) +"oZy" = ( +/obj/machinery/stasis, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "oZQ" = ( /obj/effect/turf_decal/trimline/neutral/corner{ dir = 4 @@ -45373,69 +44899,51 @@ /area/station/hallway/secondary/entry) "oZV" = ( /obj/structure/chair/sofa/corp/left{ - color = "#7fb3d5"; dir = 4 }, -/turf/open/floor/carpet/cyan, +/turf/open/floor/carpet/blue, /area/station/ai_monitored/turret_protected/ai_upload) -"oZX" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/computer/records/security, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "pam" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/aft) "pan" = ( -/obj/machinery/power/port_gen/pacman/super, -/turf/open/floor/plating, -/area/station/engineering/main) -"pap" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, -/obj/machinery/light/directional/west, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/closet/radiation, +/obj/item/crowbar/large, +/turf/open/floor/iron, +/area/station/engineering/storage) +"pap" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/light/directional/east, +/obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/area/station/command/bridge) "pas" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/plumbed, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"pau" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/mop_bucket, -/obj/item/mop, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "paw" = ( -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement{ +/obj/machinery/light/small/directional/east, +/obj/structure/rack, +/turf/open/floor/iron/dark/side{ dir = 4 }, -/turf/open/floor/wood, -/area/station/security/prison/rec) +/area/station/security/prison/safe) "paH" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/clothing/gloves, -/obj/effect/spawner/random/clothing/gloves, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"paI" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ +/obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 8 }, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"paK" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/light/directional/west, -/obj/structure/sign/warning/no_smoking/directional/west, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/command/heads_quarters/ce) "paO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -45448,21 +44956,19 @@ /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "pbf" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/entertainment/drugs, -/obj/item/poster/random_contraband, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) -"pbg" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 +/obj/machinery/camera/directional/east{ + c_tag = "Medical - Pathology Pen"; + network = list("ss13","medbay"); + name = "medical camera" }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/grass, +/area/station/medical/virology) "pbv" = ( /obj/structure/chair/stool/directional/east, /obj/effect/landmark/start/assistant, @@ -45475,15 +44981,36 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/security/medical) -"pbG" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +"pbN" = ( +/obj/item/radio/intercom/directional/east, +/obj/structure/table/wood, +/turf/open/floor/wood/tile, +/area/station/commons/dorms/room4) +"pbT" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/structure/window/spawner/directional/south, +/obj/machinery/computer/atmos_control/nocontrol/master{ + dir = 1 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/break_room) "pch" = ( -/obj/machinery/washing_machine, -/obj/item/clothing/head/costume/santa, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/camera/directional/west{ + c_tag = "Medical - Pharmacy"; + name = "medical camera"; + network = list("ss13","medbay") + }, +/obj/machinery/status_display/evac/directional/west, +/obj/machinery/component_printer, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "pcp" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -45497,19 +45024,17 @@ /obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, /turf/open/floor/iron/dark/textured, /area/station/service/chapel/funeral) -"pcC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) +"pcw" = ( +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "pcF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/item/flashlight/flare, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "pcU" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -45526,6 +45051,12 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/lab) +"pde" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_a) "pdr" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -45541,11 +45072,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"pdB" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "pdN" = ( /turf/open/floor/iron, /area/station/command/gateway) @@ -45582,16 +45108,18 @@ /turf/open/floor/iron/white/textured, /area/station/science/xenobiology) "peO" = ( -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = 5 }, /turf/open/floor/wood, /area/station/service/bar) "peS" = ( /obj/structure/weightmachine/stacklifter, /turf/open/floor/iron/dark/side{ - dir = 6 + dir = 4 }, /area/station/commons/fitness/recreation) "pff" = ( @@ -45602,19 +45130,26 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos) "pfy" = ( -/obj/structure/table, -/obj/item/toy/ammo/gun, -/obj/item/toy/gun, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/commons/fitness/recreation) +/obj/structure/closet/firecloset/wall/directional/west, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "pfJ" = ( /obj/machinery/door/firedoor/border_only, /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/light/small/directional/west, /turf/open/floor/grass, /area/station/service/hydroponics) +"pfS" = ( +/obj/structure/sign/painting/library{ + pixel_y = 32 + }, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table/wood/fancy, +/obj/effect/spawner/random/decoration/statue{ + spawn_loot_chance = 35 + }, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "pgh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -45627,8 +45162,12 @@ }, /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/machinery/camera/autoname/directional/west, -/obj/structure/table/glass, +/obj/machinery/camera/directional/west{ + c_tag = "Science - Genetics"; + name = "science camera"; + network = list("ss13","rd") + }, +/obj/structure/table/reinforced/rglass, /obj/item/storage/box/monkeycubes, /turf/open/floor/iron/white, /area/station/science/genetics) @@ -45642,14 +45181,9 @@ }, /turf/open/space/basic, /area/space) -"pgu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "pgv" = ( /obj/machinery/light/small/directional/east, +/obj/machinery/newscaster/directional/east, /obj/machinery/vending/wardrobe/atmos_wardrobe, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) @@ -45702,6 +45236,19 @@ "pho" = ( /turf/open/floor/carpet/black, /area/station/service/theater) +"phq" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/break_room) "phr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -45711,20 +45258,6 @@ "pht" = ( /turf/open/floor/iron/dark/smooth_large, /area/station/engineering/storage) -"phW" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/requests_console/directional/east{ - department = "Chief Medical Officer's Desk"; - name = "Chief Medical Officer's Requests Console"; - anon_tips_receiver = 1; - assistance_requestable = 1; - can_send_announcements = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) "pia" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -45749,8 +45282,11 @@ dir = 6 }, /obj/machinery/light/small/directional/east, +/obj/machinery/light_switch/directional/east{ + pixel_y = -10 + }, +/obj/structure/extinguisher_cabinet/directional/south, /obj/machinery/firealarm/directional/east, -/obj/machinery/light_switch/directional/south, /turf/open/floor/iron/dark, /area/station/science/breakroom) "pin" = ( @@ -45759,27 +45295,25 @@ /obj/item/hand_labeler, /turf/open/floor/iron, /area/station/cargo/storage) -"piu" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/bed/medical/emergency, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"piD" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_priv_2"; - name = "Privacy Shutters"; - dir = 8 +"piC" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/holopad, +/turf/open/floor/iron/white/smooth_large, +/area/station/science/genetics) +"piO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/medical/patients_rooms/room_b) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "piY" = ( /obj/machinery/growing/tray, /turf/open/floor/grass, @@ -45790,10 +45324,10 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "pjq" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 }, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /obj/machinery/atmospherics/components/binary/pump/on{ dir = 8; name = "N2 Outlet Pump" @@ -45801,21 +45335,23 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos) "pjs" = ( -/obj/effect/spawner/random/structure/table_or_rack, +/obj/structure/rack, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"pjx" = ( -/obj/effect/spawner/random/structure/chair_flipped, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "pjD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) +"pjM" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/sign/poster/random/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "pjT" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 @@ -45827,15 +45363,17 @@ /obj/machinery/vending/coffee, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"pkf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +"pkd" = ( +/obj/machinery/firealarm/directional/west{ + pixel_y = 5 }, -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/turf/open/floor/engine, -/area/station/medical/cryo) +/obj/machinery/light_switch/directional/west{ + pixel_y = -5 + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/atmos/office) "pkn" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -45846,14 +45384,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, /turf/open/floor/plating, /area/station/maintenance/port) "pkv" = ( @@ -45871,40 +45404,36 @@ /obj/structure/machine/assembly_bench, /turf/open/floor/wood, /area/station/smithing) -"plg" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"plr" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/machinery/newscaster/directional/west, -/obj/structure/chair/sofa/corp/right{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "plt" = ( /obj/machinery/space_heater, /turf/open/floor/plating, /area/station/maintenance/port) +"plv" = ( +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/machinery/light/directional/west, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/modular_computer/preset/research{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "plz" = ( /obj/structure/bookcase/random, /turf/open/floor/wood, /area/station/security/prison/rec) "plG" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/engineering/vending_restock, /turf/open/floor/plating, /area/station/maintenance/port/aft) "plH" = ( -/obj/machinery/light/small/built/directional/south, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/carpet/green, -/area/station/maintenance/starboard/aft) +/obj/machinery/power/port_gen/pacman/pre_loaded, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"plI" = ( +/obj/structure/table/reinforced/plasmarglass, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "plK" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 8 @@ -45917,33 +45446,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/brig) -"plV" = ( -/obj/machinery/status_display/ai{ - pixel_x = -32 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/yellow/corner, -/obj/structure/table, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "pme" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/telecomms/bus/preset_two, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/hub/preset, +/obj/structure/cable, +/turf/open/floor/circuit/telecomms, /area/station/tcommsat/server) "pml" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ @@ -45977,20 +45483,19 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "pmt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/surgery) +/obj/machinery/status_display/ai/directional/south, +/turf/open/floor/wood, +/area/station/command/meeting_room) "pmv" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) +"pmF" = ( +/obj/effect/turf_decal/trimline/yellow/filled/end{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "pmQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -46001,31 +45506,30 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/engineering{ - name = "Construction Storage" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 +/obj/machinery/door/airlock/grunge{ + name = "Gambling Den" }, -/turf/open/floor/iron/textured, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/dark/textured, +/area/station/service/abandoned_gambling_den) "pmV" = ( /turf/closed/wall, /area/station/service/chapel) "pna" = ( -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = 5 }, /obj/structure/filingcabinet, /turf/open/floor/iron, /area/station/science/ordnance/office) "png" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "cargo_desk"; - name = "Cargo Desk Shutters" + name = "Cargo Desk Shutters"; + dir = 1 }, /turf/open/floor/plating, /area/station/cargo/office) @@ -46045,7 +45549,7 @@ codes_txt = "delivery;dir=4"; location = "Kitchen" }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/service) "pnG" = ( /obj/structure/table/wood, @@ -46053,10 +45557,10 @@ /turf/open/floor/carpet/red, /area/station/security/detectives_office) "pnU" = ( -/obj/effect/turf_decal/trimline/neutral/filled/warning{ +/obj/effect/turf_decal/trimline/red/filled/warning{ dir = 4 }, -/obj/effect/turf_decal/trimline/neutral/warning{ +/obj/effect/turf_decal/trimline/red/warning{ dir = 8 }, /obj/structure/disposalpipe/segment{ @@ -46066,13 +45570,18 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/office) +"poh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "poj" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "brig_post"; name = "Security Shutters"; - dir = 8 + dir = 4 }, /turf/open/floor/plating, /area/station/security/brig/entrance) @@ -46082,6 +45591,13 @@ }, /turf/open/floor/iron/white, /area/station/science/explab) +"poD" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + name = "freezer passive vent"; + dir = 1 + }, +/turf/open/floor/iron/freezer, +/area/station/science/xenobiology) "poG" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/command/nuke_storage) @@ -46091,10 +45607,10 @@ }, /obj/machinery/requests_console/directional/west{ department = "Science"; - name = "Science Requests Console"; - receive_ore_updates = 1; - supplies_requestable = 1 + name = "Science Requests Console" }, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/supplies, /obj/machinery/vending/coffee, /turf/open/floor/iron/dark, /area/station/science/breakroom) @@ -46107,6 +45623,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) +"ppi" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/commons/locker) "ppj" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 5 @@ -46119,13 +45641,12 @@ }, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) -"ppx" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/iron/dark/side, -/area/station/command/heads_quarters/cmo) +"ppv" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "ppL" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 5 @@ -46146,23 +45667,28 @@ }, /area/station/cargo/miningoffice) "ppN" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/white, +/area/station/medical/office) "ppP" = ( /turf/closed/wall/r_wall, /area/station/engineering/storage_shared) "ppS" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/dark_red/filled/line{ dir = 8 }, /obj/effect/turf_decal/trimline/dark_red/arrow_ccw{ dir = 1 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "ppU" = ( @@ -46177,11 +45703,13 @@ /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = 5 }, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) "pqo" = ( /obj/effect/turf_decal/bot, @@ -46190,9 +45718,8 @@ /area/station/engineering/main) "pqq" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, /obj/machinery/arc_forge, -/turf/open/floor/wood, +/turf/open/floor/stone, /area/station/smithing) "pqw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -46200,27 +45727,43 @@ /obj/structure/cable, /obj/structure/disposalpipe/junction/yjunction, /obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/fore) +"pqF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"pqL" = ( +/obj/structure/bookcase/random/nonfiction, +/turf/open/floor/wood, +/area/station/service/library) "pqQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/obj/effect/mapping_helpers/airlock/unres, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/cargo) "prb" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners{ +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters{ + id = "kitchen_sec_shutters"; + name = "Kitchen Shutters"; dir = 1 }, -/obj/structure/table, -/turf/open/floor/iron/kitchen, +/turf/open/floor/iron/dark/textured, /area/station/service/kitchen) "prc" = ( /obj/machinery/light/directional/north, @@ -46228,7 +45771,6 @@ dir = 1 }, /obj/effect/turf_decal/trimline/dark_blue/line, -/obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "prd" = ( @@ -46249,7 +45791,7 @@ /obj/machinery/light/small/directional/east, /obj/structure/cable, /obj/structure/closet/secure_closet/security/sec, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "prj" = ( /obj/effect/spawner/structure/window/reinforced, @@ -46261,37 +45803,16 @@ dir = 8 }, /obj/item/radio/intercom/directional/west, -/obj/structure/cable, /obj/machinery/computer/records/security{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) -"prn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/grunge{ - name = "Morgue" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) "prs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 }, -/obj/machinery/telecomms/bus/preset_one, -/turf/open/floor/engine/telecomms, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) "prw" = ( /obj/structure/cable, @@ -46300,6 +45821,11 @@ /obj/structure/filingcabinet, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) +"prz" = ( +/obj/structure/chair/wood, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood, +/area/station/service/library/lounge) "prA" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 @@ -46329,79 +45855,54 @@ /turf/open/floor/iron/large, /area/station/cargo/office) "prY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"psg" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 3 - }, -/turf/open/floor/wood, -/area/station/service/library) -"psz" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/item/radio/intercom/directional/south, +/obj/machinery/computer/operating{ dir = 1 }, -/obj/structure/table, -/obj/item/wallframe/apc, -/turf/open/floor/iron/dark/side{ +/turf/open/floor/iron/white, +/area/station/medical/surgery) +"psg" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark/side, +/area/station/engineering/storage_shared) +"psF" = ( +/obj/effect/turf_decal/siding/thinplating/corner{ dir = 1 }, -/area/station/engineering/break_room) -"psE" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/transit_tube/station/dispenser/reverse/flipped{ +/turf/open/floor/iron, +/area/station/engineering/main) +"psI" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/transit_tube) -"psF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) -"psI" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /obj/machinery/computer/atmos_control/plasma_tank{ dir = 8 }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "psO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/maintenance/department/science) +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "ptd" = ( -/obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/light/directional/south, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured, /area/station/science/research) "pte" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/corner, @@ -46410,46 +45911,13 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"ptg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "ptq" = ( /obj/machinery/light/directional/east, -/obj/machinery/status_display/evac/directional/east, +/obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark/side{ dir = 4 }, /area/station/commons/dorms) -"ptt" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) -"pty" = ( -/obj/effect/turf_decal/tile/brown/fourcorners, -/obj/machinery/computer/department_orders/engineering{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/break_room) "ptH" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -46468,20 +45936,11 @@ /obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"ptX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/cryo_cell{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/medical/cryo) "ptZ" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/showroomfloor, +/area/station/service/abandoned_gambling_den) "puc" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/effect/turf_decal/trimline/neutral/line{ @@ -46523,14 +45982,14 @@ pixel_x = -6; pixel_y = 24 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "puN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/carpet/purple, -/area/station/commons/dorms) +/area/station/commons/dorms/room3) "puO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -46551,8 +46010,9 @@ /area/station/service/kitchen) "puX" = ( /obj/structure/sign/warning/secure_area/directional/south, +/obj/effect/decal/cleanable/dirt, /obj/machinery/space_heater, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "puZ" = ( /obj/machinery/status_display/ai/directional/east, @@ -46563,11 +46023,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/turret_protected/ai) -"pvb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "pvh" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -46588,27 +46043,39 @@ /area/station/maintenance/department/cargo) "pvF" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 + }, /obj/machinery/light/small/directional/south, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = -5 }, -/obj/structure/chair{ +/obj/structure/chair/sofa/bench/right{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) +"pvI" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/light/small/directional/south, +/obj/structure/sign/warning/no_smoking/directional/south, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "pvL" = ( /turf/closed/wall, /area/station/medical/psychology) -"pvN" = ( -/obj/item/storage/secure/safe/directional/south, -/obj/machinery/light_switch/directional/south, -/obj/structure/bed, -/obj/item/bedsheet/cmo, -/obj/effect/landmark/start/chief_medical_officer, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/cmo) +"pwh" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/machinery/holopad, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/virology) "pwm" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -46637,6 +46104,22 @@ "pwp" = ( /turf/open/floor/iron/dark, /area/station/security/courtroom) +"pwI" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/warning{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "pwT" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 @@ -46647,33 +46130,20 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/brig) -"pxg" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 1 +"pxl" = ( +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/machinery/door/window/brigdoor/left/directional/south{ + name = "Head of Security's Desk"; + req_access = list("hos") }, -/obj/machinery/duct, -/obj/structure/table/glass, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/book/manual/wiki/medicine, -/obj/item/crowbar/red, -/obj/item/reagent_containers/spray/cleaner, /turf/open/floor/iron/dark, -/area/station/medical/exam_room) -"pxl" = ( -/obj/structure/dresser, -/turf/open/floor/carpet/red, -/area/station/commons/dorms) +/area/station/command/bridge) "pxp" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "pxw" = ( @@ -46697,34 +46167,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/side, /area/station/security/prison/workout) -"pxG" = ( -/obj/item/storage/box/bodybags, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/item/radio/intercom/directional/south, -/obj/structure/table, -/obj/item/storage/box/bodybags{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/storage/box/bodybags{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/bodybags, -/obj/item/clothing/gloves/latex, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"pxU" = ( -/obj/effect/decal/cleanable/dirt, +"pxT" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) +"pxU" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/smithing) +"pxW" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "pxY" = ( /obj/effect/turf_decal/tile/neutral/anticorner, /obj/effect/turf_decal/tile/neutral{ @@ -46744,11 +46206,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/gravity_generator) +"pyd" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/iron/dark/smooth_large, +/area/station/hallway/secondary/entry) "pye" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, /area/station/security/courtroom) @@ -46762,13 +46228,10 @@ /obj/effect/turf_decal/trimline/dark_blue/line, /obj/machinery/button/door/directional/north{ id = "eva_shutters"; - name = "EVA Shutters"; + name = "EVA Storage Shutters Control"; req_access = list("command"); pixel_x = -7 }, -/obj/structure/extinguisher_cabinet/directional/north{ - pixel_x = 5 - }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "pyA" = ( @@ -46783,6 +46246,9 @@ /area/station/ai_monitored/turret_protected/aisat/foyer) "pyE" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/aft) "pyH" = ( @@ -46791,39 +46257,39 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"pyP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "pyW" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/food_packaging, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/service/abandoned_gambling_den) "pyZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ +/obj/machinery/light/directional/west, +/obj/structure/chair/sofa/right/maroon{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/dark/side{ dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/commons/fitness) "pzc" = ( /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 5 }, -/obj/machinery/firealarm/directional/east, +/obj/machinery/firealarm/directional/east{ + pixel_y = 5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = -5 + }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -46832,19 +46298,14 @@ /turf/open/floor/iron, /area/station/science/robotics/lab) "pzi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"pzp" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "pzt" = ( /obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -46852,11 +46313,16 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"pzz" = ( -/obj/structure/table/reinforced, -/obj/structure/reagent_dispensers/wall/peppertank/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/blueshield) +"pzF" = ( +/obj/structure/sign/painting/library{ + pixel_y = 32 + }, +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood, +/area/station/service/library) "pzI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -46864,16 +46330,16 @@ /turf/open/floor/iron, /area/station/service/theater) "pzL" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/maintenance/starboard/aft) "pzP" = ( /obj/structure/chair/office{ dir = 8 }, +/obj/effect/landmark/start/station_engineer, /turf/open/floor/iron, /area/station/tcommsat/computer) "pzW" = ( @@ -46929,19 +46395,13 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "pBc" = ( /obj/effect/spawner/random/structure/table, -/obj/item/storage/box/donkpockets/donkpocketpizza, +/obj/effect/spawner/random/food_or_drink/donkpockets, /obj/item/knife/kitchen, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"pBp" = ( -/obj/structure/cable, -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/atmos/office) "pBu" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, @@ -46953,24 +46413,34 @@ "pBC" = ( /obj/structure/table/reinforced, /obj/item/storage/bag/tray, -/obj/item/kitchen/rollingpin{ - pixel_y = -4; - pixel_x = -5 - }, /obj/item/kitchen/rollingpin{ pixel_y = -4; pixel_x = 4 }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = -8; + pixel_y = 2 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -2; + pixel_y = 4 + }, /turf/open/floor/iron/kitchen, /area/station/security/prison/mess) "pBK" = ( /obj/machinery/light/small/directional/south, -/obj/machinery/camera/autoname/directional/south{ - dir = 5 - }, +/obj/machinery/camera/autoname/directional/south, /obj/machinery/duct, /turf/open/floor/carpet/purple, /area/station/security/prison/safe) +"pBT" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/machinery/vending/wallmed/directional/west, +/obj/structure/table, +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_a) "pBX" = ( /obj/machinery/corral_corner{ mapping_id = "3" @@ -46984,9 +46454,37 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "pCb" = ( -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/medkit/regular{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/item/wrench/medical, +/obj/item/gun/syringe, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/command/heads_quarters/cmo) +"pCd" = ( +/obj/machinery/button/door/directional/west{ + id = "bs_desk"; + name = "Blueshield Desk Shutters Control"; + pixel_y = 5 + }, +/obj/machinery/button/door/directional/west{ + id = "bs_bolt"; + name = "Blueshield Office Bolt Control"; + pixel_y = -5; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/machinery/modular_computer/preset/command{ + dir = 1; + pixel_y = -3 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "pCf" = ( /obj/structure/chair/stool/bamboo, /mob/living/carbon/human/species/monkey, @@ -46999,14 +46497,11 @@ /turf/open/floor/engine, /area/station/science/explab) "pCo" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/turf/open/floor/wood, -/area/station/service/bar/backroom) +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "pCs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, @@ -47018,12 +46513,12 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "pCA" = ( -/obj/effect/turf_decal/tile/red/fourcorners, +/obj/effect/turf_decal/tile/red/half/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/side, /area/station/security/interrogation) "pCI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -47043,26 +46538,42 @@ dir = 5 }, /area/station/cargo/lobby) -"pDl" = ( -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 6 +"pCP" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/exam_room) +"pCS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"pCX" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) "pDn" = ( /obj/structure/flora/bush/jungle/a/style_random, /turf/open/floor/grass, /area/station/hallway/primary/central) -"pDB" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 +"pDy" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 }, -/obj/structure/cable/layer1, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/structure/mirror/directional/west, +/obj/structure/sink/directional/east, +/obj/machinery/iv_drip, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "pDC" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -47078,29 +46589,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"pDD" = ( -/obj/effect/spawner/random/entertainment/arcade{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "pDJ" = ( /obj/machinery/light/small/directional/east, /obj/item/radio/intercom/chapel/directional/east, /obj/structure/chair, /turf/open/floor/iron/dark, /area/station/service/chapel/office) -"pDL" = ( -/obj/structure/rack, -/obj/item/mop, -/obj/item/reagent_containers/cup/bottle/ammonia, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/clothing/mask/breath, -/obj/item/storage/box/lights/mixed{ - pixel_x = 7 - }, -/turf/open/floor/plating, -/area/station/security/prison) "pDN" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/sign/warning/radiation/directional/east, @@ -47116,6 +46610,28 @@ /obj/machinery/status_display/evac/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"pDY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/poddoor/preopen{ + id = "bridge_blast_doors"; + name = "Bridge Access Blast Door" + }, +/turf/open/floor/iron/dark/textured, +/area/station/command/bridge) "pDZ" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -47171,41 +46687,37 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) +"pEQ" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "pEY" = ( /turf/closed/wall, /area/station/service/hydroponics) +"pFu" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/machinery/rnd/production/techfab/department/medical, +/turf/open/floor/iron/white, +/area/station/medical/storage) "pFJ" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ +/obj/structure/chair/wood{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"pFU" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Medical - Pathology Pen"; - name = "medical camera"; - network = list("ss13","medbay") - }, -/obj/effect/landmark/blobstart, -/turf/open/floor/grass, -/area/station/medical/virology) +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "pGu" = ( /obj/structure/table/wood, -/obj/effect/spawner/random/bureaucracy/folder, -/obj/effect/spawner/random/bureaucracy/pen, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/office) -"pGz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/components/unary/cryo_cell{ - dir = 8 +/obj/item/taperecorder{ + pixel_x = 9; + pixel_y = 9 }, -/turf/open/floor/engine, -/area/station/medical/cryo) +/turf/open/floor/carpet/blue, +/area/station/commons/vacant_room/office) "pGM" = ( +/obj/effect/mob_spawn/corpse/human/assistant, /turf/open/floor/wood, /area/station/maintenance/port/fore) "pGN" = ( @@ -47218,9 +46730,7 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "pGP" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /turf/open/floor/iron/white, /area/station/science/xenobiology) "pGS" = ( @@ -47241,7 +46751,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "pHj" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/line{ @@ -47250,6 +46760,12 @@ /obj/structure/sign/departments/botany/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) +"pHn" = ( +/obj/structure/sign/poster/random/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "pHr" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, @@ -47266,14 +46782,6 @@ "pHx" = ( /turf/open/floor/wood, /area/station/command/heads_quarters/qm) -"pHy" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 5 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/engineering/break_room) "pHz" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -47311,28 +46819,52 @@ /obj/effect/spawner/random/vending/colavend, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"pHN" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/camera/directional/west{ + c_tag = "Engineering - Atmospherics, Northwest"; + name = "engineering camera" + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) +"pHP" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/service/hydroponics/garden) "pHW" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/pink/visible/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "pHX" = ( -/obj/structure/table/wood, +/obj/structure/table/wood/fancy/black, /obj/item/storage/fancy/candle_box{ pixel_y = 5 }, /obj/item/storage/crayons, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) -"pIs" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 6 +"pIi" = ( +/obj/machinery/door/window/right/directional/south, +/obj/structure/table/wood/fancy, +/obj/structure/sign/painting/large/library{ + dir = 1 }, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) +"pIs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "pIw" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -47347,31 +46879,14 @@ /obj/effect/turf_decal/trimline/dark_blue/line{ dir = 10 }, -/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"pIF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "pIH" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/north, /obj/item/kirbyplants/random, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) -"pIJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/structure/bodycontainer/morgue{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "pIS" = ( /obj/machinery/conveyor{ dir = 8; @@ -47396,6 +46911,17 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"pJb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "pJz" = ( /obj/machinery/door/airlock/maintenance{ name = "Security Office Maintenance" @@ -47407,33 +46933,18 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/plating, -/area/station/maintenance/department/security/brig) +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/security/office) "pJV" = ( /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 6 }, /turf/open/floor/iron, /area/station/science/robotics/lab) -"pKc" = ( -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) -"pKj" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/table/reinforced, -/obj/item/taperecorder, -/obj/item/tape/random, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"pKq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/chair/office, -/obj/effect/landmark/start/depsec/medical, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +"pJW" = ( +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/carpet, +/area/station/hallway/secondary/entry) "pKw" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/structure/table/glass, @@ -47450,6 +46961,11 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"pKG" = ( +/obj/structure/sign/poster/random/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "pKO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/landmark/start/hangover, @@ -47457,14 +46973,6 @@ dir = 4 }, /area/station/service/chapel) -"pKQ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "pKS" = ( /obj/effect/decal/cleanable/cobweb, /obj/structure/cable, @@ -47503,20 +47011,19 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"pLn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "pLu" = ( /obj/machinery/atmospherics/components/binary/pump/off/supply/hidden{ dir = 4 }, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"pLB" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/green/filled/line, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "pLK" = ( /obj/structure/flora/bush/jungle/b/style_random, /turf/open/floor/grass, @@ -47557,6 +47064,18 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/security/medical) +"pMb" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "pMc" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 @@ -47580,6 +47099,11 @@ /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/department/science) +"pMI" = ( +/obj/machinery/camera/autoname/directional/south, +/obj/item/kirbyplants/random, +/turf/open/floor/wood, +/area/station/service/library) "pMU" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -47590,7 +47114,7 @@ /obj/structure/cable, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/grunge{ - name = "Blacksmithing" + name = "Forging Lab" }, /obj/effect/mapping_helpers/airlock/access/any/science/general, /obj/effect/mapping_helpers/airlock/access/any/supply/general, @@ -47601,14 +47125,38 @@ dir = 1 }, /obj/effect/turf_decal/trimline/neutral/line, -/obj/machinery/light/small/directional/north, +/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) +"pNA" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "pND" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Security Post - Medbay" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark/textured, +/area/station/security/checkpoint/medical) "pNK" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -47624,6 +47172,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured, /area/station/security/brig/entrance) +"pNP" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/firealarm/directional/north, +/obj/machinery/autolathe, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/break_room) "pNS" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -47636,48 +47194,19 @@ dir = 1 }, /obj/effect/turf_decal/trimline/red/line, -/obj/machinery/status_display/evac/directional/north, +/obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark, /area/station/security/office) -"pOj" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/tcomms_all, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) -"pOp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/structure/table/glass, -/obj/item/emergency_bed{ - pixel_y = 6 - }, -/obj/item/emergency_bed{ - pixel_y = 12 - }, -/turf/open/floor/iron/dark, -/area/station/medical/exam_room) "pOt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/machinery/door/airlock/maintenance{ name = "Courtroom Maintenance" }, /obj/effect/mapping_helpers/airlock/access/all/security/court, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/department/science) "pOx" = ( /obj/machinery/conveyor{ @@ -47706,19 +47235,19 @@ /turf/open/floor/iron, /area/station/cargo/storage) "pOC" = ( -/obj/item/radio/intercom/directional/west, -/obj/machinery/button/door/directional/north{ - id = "hos_privacy"; - name = "Privacy Shutters Control"; - pixel_x = -24 +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/button/door/directional/west{ + id = "hos_office"; + name = "Shutters Control"; + req_access = list("hos") }, /obj/machinery/requests_console/directional/north{ - anon_tips_receiver = 1; - assistance_requestable = 1; department = "Head of Security's Desk"; - name = "Head of Security Requests Console"; - can_send_announcements = 1 + name = "Head of Security Requests Console" }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, /obj/structure/table/wood, /obj/machinery/fax{ fax_name = "Head of Security's Office"; @@ -47732,28 +47261,20 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "pOH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light_switch/directional/north, -/obj/item/radio/intercom/prison/directional/east, -/obj/structure/closet/crate, -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/turf/open/floor/iron/dark, -/area/station/security/prison/work) -"pPq" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/status_display/ai/directional/north, -/obj/machinery/computer/atmos_control/nocontrol/master, +/obj/effect/turf_decal/bot, +/obj/machinery/plate_press, /turf/open/floor/iron/dark/side{ - dir = 1 + dir = 4 }, -/area/station/engineering/break_room) +/area/station/security/prison/work) "pPz" = ( /turf/closed/wall, /area/station/science/circuits) +"pPF" = ( +/obj/machinery/newscaster/directional/north, +/obj/structure/filingcabinet, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "pPM" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ @@ -47762,25 +47283,12 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"pQc" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron/dark/side, -/area/station/engineering/storage_shared) -"pQi" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/medical/medkit, -/turf/open/floor/carpet/cyan, -/area/station/medical/break_room) "pQl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, /obj/machinery/light/small/directional/east, -/obj/item/stack/ore/silver, /turf/open/floor/iron/dark/smooth_large, /area/station/cargo/miningoffice) "pQm" = ( -/obj/machinery/light/small/directional/east, +/obj/machinery/light/small/broken/directional/east, /obj/structure/frame/computer{ anchored = 1; dir = 8 @@ -47792,9 +47300,15 @@ dir = 10 }, /obj/structure/sign/poster/official/random/directional/west, -/obj/structure/table, +/obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"pQX" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "pRb" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -47808,16 +47322,13 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) "pRd" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"pRe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/trimline/red/line{ + dir = 1 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "pRn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, @@ -47834,33 +47345,25 @@ /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/fore) "pRD" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"pRL" = ( -/obj/machinery/status_display/evac/directional/west, -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 +/obj/machinery/light/directional/south, +/obj/structure/table/wood, +/obj/item/toy/figure/cmo{ + pixel_y = 12; + pixel_x = -8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/obj/item/clothing/neck/stethoscope, +/obj/item/flashlight/pen, +/obj/item/clothing/glasses/hud/health, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "pSn" = ( +/obj/machinery/light/small/directional/south, /obj/machinery/status_display/evac/directional/south, /obj/structure/table, -/obj/item/clothing/gloves/color/orange, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/grenade/chem_grenade/cleaner, -/obj/item/grenade/chem_grenade/cleaner, -/obj/item/grenade/chem_grenade/cleaner, -/turf/open/floor/iron/dark/side, +/obj/item/storage/box/lights/mixed, +/obj/item/storage/box/lights/mixed, +/obj/item/lightreplacer, +/turf/open/floor/iron/dark, /area/station/service/janitor) "pSt" = ( /obj/effect/turf_decal/stripes/line{ @@ -47877,66 +47380,50 @@ "pSA" = ( /turf/closed/wall/r_wall, /area/station/security/execution) -"pSN" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 +"pSJ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance" }, -/obj/effect/turf_decal/trimline/blue/corner, -/obj/machinery/iv_drip, -/turf/open/floor/iron/white, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/catwalk_floor, /area/station/medical/medbay/aft) +"pSV" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "pSW" = ( /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) -"pSY" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/modular_computer/preset/research{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"pTa" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/engineering/main) "pTC" = ( -/obj/machinery/light/floor/has_bulb, +/obj/machinery/duct, +/obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, -/area/station/maintenance/port/fore) +/area/station/maintenance/port) "pTE" = ( /obj/effect/turf_decal/stripes/red/line, /turf/open/floor/engine, /area/station/science/xenobiology) -"pTF" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command/glass{ - name = "Conference Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/hop, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/hop) "pTI" = ( /obj/machinery/light_switch/directional/west, /obj/machinery/recharge_station, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/department/electrical) +"pTJ" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "pTK" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -47947,11 +47434,25 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark, /area/station/security/brig) +"pTP" = ( +/obj/structure/bed/dogbed/renault, +/mob/living/basic/pet/fox/renault, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) "pTV" = ( /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) +"pUp" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) "pUu" = ( /obj/effect/turf_decal/trimline/neutral/filled/warning{ dir = 4 @@ -47962,68 +47463,69 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"pUw" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/button/door/directional/north{ - id = "engi_lobby_shutters"; - name = "Engineering Lobby Shutters Control" - }, -/obj/machinery/modular_computer/preset/civilian, -/turf/open/floor/iron/dark/side{ - dir = 9 +"pUT" = ( +/obj/machinery/light/directional/west, +/obj/structure/bed/double{ + dir = 4 }, -/area/station/engineering/break_room) -"pUP" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/item/bedsheet/dorms_double{ dir = 1 }, -/obj/machinery/light/small/directional/north, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"pUT" = ( -/obj/machinery/light/directional/west, -/obj/structure/chair/stool/directional/south, +/obj/effect/landmark/start/hangover, /turf/open/floor/carpet/purple, -/area/station/commons/dorms) +/area/station/commons/dorms/room3) "pVi" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/main) +"pVn" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/effect/landmark/start/bartender, +/turf/open/floor/wood, +/area/station/service/bar) "pVu" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/plumbed{ dir = 4 }, /turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/area/station/maintenance/department/science) "pVB" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, /turf/open/floor/wood, /area/station/service/lawoffice) -"pVI" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/item/kirbyplants/random, +"pVG" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Command - Bridge, West"; + name = "command camera" + }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"pVH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "pVJ" = ( /obj/structure/table/wood, /obj/effect/spawner/random/decoration/flower, /obj/effect/spawner/random/decoration/flower, /turf/open/floor/iron/dark, /area/station/service/chapel) +"pVV" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/requests_console/directional/west, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "pVZ" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/iron/chapel{ @@ -48037,22 +47539,27 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/light/small/directional/west, /turf/open/floor/plating, /area/station/maintenance/port/fore) "pWl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, -/obj/structure/sign/warning/no_smoking/directional/north, +/obj/machinery/light/small/directional/north, +/obj/machinery/newscaster/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/engineering/main) +"pWo" = ( +/obj/machinery/space_heater/improvised_chem_heater, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "pWC" = ( /obj/effect/turf_decal/trimline/brown/filled/line, /obj/effect/turf_decal/trimline/brown/line{ @@ -48060,17 +47567,22 @@ }, /obj/machinery/firealarm/directional/south, /obj/machinery/camera/directional/south{ - c_tag = "Arrivals - Lounge, South"; + c_tag = "Arrivals - Checkpoint, South"; name = "arrivals camera" }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "pWE" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "pWG" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 @@ -48089,9 +47601,8 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/light/floor/has_bulb, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine, /area/station/security/execution) "pWP" = ( @@ -48102,6 +47613,12 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"pWU" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "pWX" = ( /turf/closed/wall/r_wall, /area/station/science/breakroom) @@ -48109,9 +47626,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/obj/machinery/holopad, +/obj/machinery/duct, /turf/open/floor/wood, /area/station/service/bar) "pXd" = ( @@ -48121,11 +47637,22 @@ dir = 4 }, /area/station/commons/fitness/recreation) +"pXi" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "pXp" = ( -/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/main) "pXG" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -48140,9 +47667,10 @@ /obj/machinery/door/window/left/directional/north{ name = "Cargo Desk" }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "cargo_desk"; - name = "Cargo Desk Shutters" + name = "Cargo Desk Shutters"; + dir = 1 }, /obj/structure/desk_bell{ pixel_x = 7; @@ -48154,6 +47682,30 @@ "pXY" = ( /turf/open/floor/iron/showroomfloor, /area/station/security/prison/shower) +"pYd" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/aft) +"pYh" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 4 + }, +/obj/machinery/firealarm/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "pYv" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/item/kirbyplants/random, @@ -48168,6 +47720,11 @@ }, /turf/open/floor/stone, /area/station/science/xenobiology) +"pYA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "pYF" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -48175,6 +47732,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/effect/turf_decal/sand/plating, /obj/machinery/door/airlock/external{ name = "External Access" }, @@ -48185,23 +47743,29 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "pYI" = ( +/obj/effect/turf_decal/tile/purple/full, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/breakroom) +"pYX" = ( +/obj/machinery/firealarm/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"pZa" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "med_lockdown"; + name = "Medbay Emergency Lockdown Shutters"; dir = 1 }, -/area/station/commons/dorms) -"pYX" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, -/area/station/maintenance/port/aft) -"pZa" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/table, -/obj/item/camera_film, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/area/station/medical/medbay/central) "pZc" = ( /obj/structure/cargo_shelf, /turf/open/floor/iron, @@ -48210,50 +47774,74 @@ /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 8 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"pZs" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 +"pZh" = ( +/obj/structure/cable, +/obj/structure/table/wood/fancy/blue, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = 3 + }, +/turf/open/floor/wood, +/area/station/command/meeting_room) +"pZj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"pZs" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 }, /obj/machinery/airalarm/directional/north, /obj/machinery/autolathe, /turf/open/floor/iron/white, /area/station/science/lab) "pZC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/door/airlock/engineering{ name = "Electrical Maintenance" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /obj/effect/mapping_helpers/airlock/unres{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/electrical) +"pZD" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "pZR" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/closed/wall/r_wall, /area/station/science/ordnance/burnchamber) "pZU" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; name = "CO2 Outlet Pump" }, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "pZV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/iron, /area/station/maintenance/department/electrical) "pZX" = ( /obj/structure/bed, @@ -48261,6 +47849,12 @@ /obj/effect/landmark/start/prisoner, /turf/open/floor/wood, /area/station/security/prison/safe) +"pZY" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "qap" = ( /obj/structure/bed{ dir = 4 @@ -48272,23 +47866,31 @@ /turf/open/floor/carpet/purple, /area/station/security/prison/safe) "qax" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, -/obj/effect/landmark/start/hangover, +/obj/machinery/firealarm/directional/east{ + pixel_y = 5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = -5 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, /turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/area/station/medical/morgue) +"qay" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 1 + }, +/area/station/engineering/atmos) "qaG" = ( /turf/open/floor/iron/vaporwave, /area/station/service/library/printer) -"qbc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/office) "qbg" = ( /obj/structure/chair/office/light{ dir = 8 @@ -48304,34 +47906,37 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "qbk" = ( -/obj/effect/turf_decal/trimline/green/filled/warning, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/green/warning{ +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8 - }, -/obj/effect/mapping_helpers/mail_sorting/medbay/virology, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/obj/machinery/light/small/directional/north, +/obj/structure/sign/poster/official/random/directional/north, +/obj/effect/landmark/blobstart, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "qbm" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/science) "qbz" = ( /obj/structure/cable, -/obj/structure/chair/wood{ +/obj/structure/chair/plastic{ dir = 4 }, /turf/open/floor/wood, /area/station/security/prison/rec) +"qch" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "qcu" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -48352,13 +47957,18 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) +"qcN" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/chair/office/light, +/obj/effect/landmark/start/chief_medical_officer, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "qcP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/station/engineering/engine_smes) +/obj/structure/sign/poster/random/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/frame/machine, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "qcS" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -48366,10 +47976,9 @@ /turf/open/floor/iron/dark/side, /area/station/commons/locker) "qcT" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/item/kirbyplants/photosynthetic, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "qcU" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -48377,30 +47986,56 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/white, /area/station/science/research) -"qdj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +"qcX" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/structure/table, +/obj/item/electronics/airlock{ + pixel_x = -6; + pixel_y = 9 + }, +/obj/item/electronics/airlock, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil{ + pixel_y = 3; + pixel_x = 3 + }, +/turf/open/floor/iron/dark/side, +/area/station/engineering/storage_shared) "qdk" = ( /obj/structure/cable, -/obj/structure/bed/dogbed/ian, -/mob/living/basic/pet/dog/corgi/ian{ - dir = 8 - }, +/obj/structure/table, +/obj/item/papercutter, +/obj/item/hand_labeler, /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/hop) "qdl" = ( /obj/structure/filingcabinet, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) +"qdr" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/line{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "qds" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/commons/vacant_room/office) +"qdu" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 }, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/obj/item/radio/intercom/directional/east, /turf/open/floor/iron/white, -/area/station/science/xenobiology) +/area/station/medical/medbay/aft) "qdw" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ @@ -48449,10 +48084,12 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "qdV" = ( -/obj/structure/chair/comfy/black, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "qdZ" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -48470,21 +48107,23 @@ /turf/open/floor/iron/dark, /area/station/security/processing) "qed" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/department/electrical) "qej" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/door/firedoor, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/dark/textured, /area/station/hallway/primary/aft) "qem" = ( /turf/open/floor/carpet, @@ -48493,47 +48132,61 @@ /obj/machinery/atmospherics/components/binary/pump/on{ name = "Waste In" }, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) "qet" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=EVA2"; - location = "Dorm" + codes_txt = "patrol;next_patrol=Lockers"; + location = "EVA" + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) +"qeH" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"qeV" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/area/station/medical/morgue) "qeZ" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "rad_shutters"; - name = "RaD Shutters"; - dir = 1 + name = "RaD Shutters" }, /turf/open/floor/plating, /area/station/science/lab) -"qfa" = ( -/obj/machinery/smartfridge/organ, -/turf/closed/wall, -/area/station/medical/surgery) -"qfo" = ( -/obj/structure/cable, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) -"qfv" = ( -/obj/machinery/light/small/directional/east, -/obj/structure/sign/poster/official/random/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) +"qfn" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/delivery_chute{ + dir = 1 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) "qgd" = ( /obj/machinery/airalarm/directional/west, /obj/structure/chair/stool/directional/south, /obj/machinery/camera/directional/west{ - c_tag = "Engineering - Solar Control, Starboard Quarter"; + c_tag = "Engineering - Solar Control, Southeast"; name = "engineering camera" }, /turf/open/floor/plating, @@ -48584,7 +48237,7 @@ /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /turf/open/floor/plating, -/area/station/maintenance/port/fore) +/area/station/commons/vacant_room/office) "qgD" = ( /obj/machinery/light/small/directional/south, /obj/item/radio/intercom/directional/south, @@ -48600,9 +48253,11 @@ /turf/open/floor/stone, /area/station/science/xenobiology) "qgO" = ( -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) "qgR" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -48620,26 +48275,24 @@ /turf/open/floor/iron/dark, /area/station/security/execution) "qgZ" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "qha" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/carpet, -/area/station/service/library) +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/engineering/transit_tube) +"qhj" = ( +/obj/effect/turf_decal/vg_decals/atmos/carbon_dioxide, +/turf/open/floor/engine/co2, +/area/station/engineering/atmos) "qhp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/trash/mess, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, /turf/open/floor/plating, -/area/station/maintenance/port/aft) -"qhq" = ( -/obj/item/radio/intercom/directional/south, -/obj/machinery/vending/coffee, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/maintenance/starboard/aft) "qhr" = ( /obj/effect/turf_decal/trimline/brown/filled/line, /obj/effect/turf_decal/trimline/brown/line{ @@ -48661,21 +48314,20 @@ /obj/item/stock_parts/cell/high, /turf/open/floor/iron/white, /area/station/science/circuits) -"qhZ" = ( -/obj/structure/table, -/obj/item/hand_tele, +"qhW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/command/teleporter) +/area/station/commons/vacant_room/commissary) "qid" = ( +/obj/effect/turf_decal/siding/wood, /obj/structure/chair/wood, /turf/open/floor/wood, /area/station/security/detectives_office) "qik" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood/large, -/area/station/commons/dorms) +/obj/machinery/vending/cigarette, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "qiw" = ( /obj/structure/chair/stool/directional/west, /obj/effect/landmark/start/hangover, @@ -48690,10 +48342,11 @@ /turf/open/floor/carpet/red, /area/station/security/detectives_office) "qiM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/closet/firecloset{ + anchored = 1 + }, /turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/area/station/maintenance/starboard/aft) "qiT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -48706,33 +48359,35 @@ dir = 5 }, /area/station/hallway/secondary/service) +"qiV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/engineering/tank, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) +"qjj" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/machinery/vending/wallmed/directional/west, +/obj/structure/table, +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_b) "qjq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/xenobiology) "qjP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, +/turf/open/floor/iron/dark, /area/station/service/janitor) -"qkk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "qkl" = ( -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) +/obj/item/seeds/banana, +/turf/open/floor/grass, +/area/station/hallway/primary/central) "qkv" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -48740,8 +48395,10 @@ /obj/effect/turf_decal/trimline/yellow/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold/pink/hidden, -/turf/open/floor/iron, +/obj/machinery/atmospherics/pipe/layer_manifold/cyan/hidden, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/hallway/primary/aft) "qkw" = ( /obj/effect/turf_decal/stripes/line{ @@ -48761,27 +48418,27 @@ /area/station/hallway/primary/starboard) "qkB" = ( /obj/machinery/light/small/directional/south, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) -"qkC" = ( -/obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/cigbutt, /turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"qlb" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/area/station/maintenance/port/fore) +"qkP" = ( +/obj/structure/disposalpipe/sorting/mail, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/effect/mapping_helpers/mail_sorting/engineering/ce_office, +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"qle" = ( +/obj/machinery/light/small/broken/directional/north, +/obj/structure/toilet{ dir = 4 }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/structure/chair/sofa/corp/left{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/turf/open/floor/iron/showroomfloor, +/area/station/service/abandoned_gambling_den) "qlp" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -48795,6 +48452,15 @@ /obj/item/beacon, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"qlC" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 10 + }, +/obj/machinery/computer/records/pathology{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "qlI" = ( /obj/machinery/status_display/evac/directional/east, /obj/structure/table/wood, @@ -48811,8 +48477,7 @@ /turf/open/floor/iron/dark, /area/station/security/office) "qmb" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/trash/moisture_trap, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "qmd" = ( @@ -48825,27 +48490,18 @@ }, /turf/open/floor/plating/airless, /area/station/ai_monitored/turret_protected/aisat/atmos) -"qmm" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/delivery, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"qmw" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/side{ +"qmj" = ( +/obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, -/area/station/engineering/break_room) +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "qmB" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/chair/stool/directional/north, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) "qmK" = ( @@ -48856,66 +48512,64 @@ dir = 1 }, /area/station/commons/fitness) +"qmM" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "qmT" = ( /obj/effect/spawner/random/trash/graffiti, /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/department/science) "qmY" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"qnm" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Apothecary" }, -/obj/structure/chair/comfy/black, -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/iron/dark/side{ +/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) +"qnc" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/structure/chair_flipped{ dir = 4 }, -/area/station/engineering/break_room) -"qnq" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/dark_blue/line, -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start/assistant, -/obj/machinery/station_map/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "qnx" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, -/obj/machinery/requests_console/directional/north{ - department = "Chief Engineer's Desk"; - name = "Chief Engineer's Requests Console"; - assistance_requestable = 1; - supplies_requestable = 1; - can_send_announcements = 1 +/obj/machinery/airalarm/directional/north, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 1 }, -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/clothing/glasses/meson/engine, -/turf/open/floor/iron, /area/station/command/heads_quarters/ce) "qnE" = ( /turf/closed/wall, /area/station/service/library) "qnN" = ( -/obj/structure/cable, -/obj/machinery/light/floor/has_bulb, +/obj/machinery/light/directional/south, +/obj/item/radio/intercom/prison/directional/south, +/obj/structure/table, +/obj/item/shovel/spade, +/obj/item/plant_analyzer, +/obj/item/cultivator, +/obj/item/reagent_containers/cup/watering_can, /turf/open/floor/iron/dark, -/area/station/security/prison/mess) +/area/station/security/prison/garden) "qnR" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -48935,23 +48589,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance{ name = "Medbay Maintenance" }, /obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/maintenance/starboard/aft) -"qoa" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 5 - }, -/obj/machinery/station_map/engineering/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) +/turf/open/floor/plating, +/area/station/medical/medbay/central) "qos" = ( -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/wood, /area/station/service/bar/backroom) @@ -48981,6 +48626,22 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/breakroom) +"qoT" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/item/radio/intercom/directional/south, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"qoW" = ( +/obj/structure/filingcabinet, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "qpd" = ( /obj/machinery/light/neon_lining{ dir = 8 @@ -48997,16 +48658,20 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"qpi" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "ce_privacy"; - name = "CE Office Shutters"; +"qph" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/ce) +/obj/machinery/light/directional/west, +/obj/structure/closet/secure_closet/brig_physician, +/obj/item/clothing/suit/jacket/straight_jacket, +/turf/open/floor/iron/white, +/area/station/security/medical) +"qpi" = ( +/obj/machinery/light/directional/west, +/obj/machinery/status_display/evac/directional/west, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "qps" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/pink/visible/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, @@ -49027,18 +48692,37 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"qpB" = ( +"qpy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/light/small/directional/west, -/obj/machinery/camera/autoname/directional/west, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/white, -/area/station/science/auxlab) +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "library_desk_shutters"; + name = "Library Desk Shutters"; + dir = 1 + }, +/obj/machinery/libraryscanner, +/turf/open/floor/iron/dark/textured, +/area/station/service/library/printer) +"qpB" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/small/directional/west, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/white, +/area/station/science/auxlab) "qpF" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/burgundy, /turf/open/space, /area/space/nearstation) +"qpK" = ( +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "qpO" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -49053,6 +48737,12 @@ }, /turf/open/floor/iron, /area/station/science/xenobiology) +"qpS" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "qpY" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/directional/west, @@ -49060,15 +48750,20 @@ /turf/open/floor/engine, /area/station/science/ordnance/storage) "qqd" = ( -/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"qqi" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/item/clothing/suit/apron/chef, -/obj/item/clothing/head/soft/mime, -/turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"qqi" = ( +/obj/structure/closet/secure_closet/atmospherics, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/engineering/atmos/office) "qqu" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -49076,50 +48771,42 @@ /turf/open/floor/plating, /area/station/maintenance/port) "qqy" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"qqz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"qqz" = ( /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 5 }, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "qqC" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/wood, -/area/station/maintenance/starboard/aft) +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "qqD" = ( -/obj/machinery/door/window/brigdoor/right/directional/north{ - name = "Captain's Desk Door"; - req_access = list("captain") +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) -"qqH" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/bot, -/obj/machinery/vending/hydroseeds{ - slogan_delay = 700 +/obj/machinery/button/door/directional/west{ + id = "medbay_foyer"; + name = "Medbay Doors Control"; + pixel_y = -6; + req_access = list("medical"); + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/machinery/button/door/directional/west{ + id = "medical_security_post"; + name = "Security Post Shutters Control"; + req_access = list("security"); + pixel_y = 5 }, /turf/open/floor/iron/dark, -/area/station/security/prison/garden) +/area/station/security/checkpoint/medical) "qqJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -49128,7 +48815,6 @@ dir = 4 }, /obj/structure/sign/warning/secure_area/directional/south, -/obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/fore) "qqU" = ( @@ -49137,6 +48823,21 @@ }, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) +"qqZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "qra" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -49144,13 +48845,6 @@ /obj/machinery/holopad, /turf/open/floor/carpet, /area/station/service/chapel) -"qrh" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/rnd_all, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "qrn" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 6 @@ -49178,23 +48872,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/science/breakroom) -"qru" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "qrv" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 5 @@ -49208,19 +48885,17 @@ }, /area/station/security/prison/workout) "qrH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"qrN" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/box/corners, -/obj/machinery/chem_heater, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/command/heads_quarters/cmo) "qsk" = ( /turf/closed/indestructible{ desc = "A wall impregnated with Fixium, able to withstand massive explosions with ease"; @@ -49233,9 +48908,14 @@ /area/station/security/processing) "qss" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/stone, +/area/station/smithing) +"qsx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +/area/station/maintenance/department/science) "qsF" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -49246,12 +48926,17 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/foyer) "qsG" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/line{ +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/effect/turf_decal/trimline/brown/line{ dir = 1 }, /obj/machinery/camera/autoname/directional/south, -/obj/machinery/newscaster/directional/south, +/obj/machinery/requests_console/directional/south{ + department = "Security"; + name = "Security Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, /obj/machinery/modular_computer/preset/cargochat/security{ dir = 1 }, @@ -49269,36 +48954,42 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"qtQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/sink/kitchen/directional/south, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "qtW" = ( /obj/structure/table/wood, /obj/item/folder/blue, /obj/item/folder/blue{ pixel_x = 3; - pixel_y = 2 - }, -/obj/item/folder/blue{ - pixel_x = 4; - pixel_y = 4 + pixel_y = 3 }, /obj/item/folder/blue{ pixel_x = 6; pixel_y = 6 }, +/obj/item/folder/blue{ + pixel_x = 9; + pixel_y = 9 + }, /obj/item/stamp/law{ pixel_x = 8; pixel_y = 6 }, /obj/item/clothing/glasses/sunglasses/big, +/obj/item/pen/red{ + pixel_x = -6; + pixel_y = 9 + }, /turf/open/floor/wood, /area/station/service/lawoffice) +"qub" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/chair/wood{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood, +/area/station/service/library/lounge) "qud" = ( /obj/structure/chair/pew/right{ dir = 1 @@ -49314,7 +49005,7 @@ /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs{ pixel_x = -3; - pixel_y = 5 + pixel_y = 6 }, /obj/item/restraints/handcuffs{ pixel_y = 3 @@ -49323,15 +49014,25 @@ /turf/open/floor/iron/dark, /area/station/security/office) "qui" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "cmo_desk_shutters"; + name = "Desk Shutters"; + dir = 1 + }, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/iron/dark/side, +/area/station/command/heads_quarters/cmo) +"quN" = ( +/obj/machinery/light/directional/west, +/obj/structure/chair/plastic{ dir = 4 }, /turf/open/floor/wood, -/area/station/service/library/lounge) -"quP" = ( -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/security/prison/rec) "quQ" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/particle_accelerator/particle_emitter/center, @@ -49381,19 +49082,12 @@ /turf/open/floor/iron/dark/textured, /area/station/commons/storage/primary) "qva" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/easel, -/obj/item/canvas/twentythree_twentythree, -/obj/item/canvas/twentythree_twentythree, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"qvp" = ( -/obj/structure/transit_tube, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/engineering/transit_tube) +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/effect/landmark/start/chemist, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "qvz" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -49405,19 +49099,15 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/entry) -"qvA" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/structure/closet/firecloset, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "qvB" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/main) "qvC" = ( /obj/structure/window/reinforced/tinted/spawner/directional/east, /obj/structure/table, @@ -49429,21 +49119,30 @@ }, /turf/open/floor/iron/vaporwave, /area/station/command/heads_quarters/rd) -"qvM" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ +"qvR" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "qvX" = ( -/obj/effect/spawner/random/structure/crate, +/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/area/station/maintenance/department/engine) +"qvY" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 + }, +/obj/machinery/camera/directional/south{ + c_tag = "Hallway - West, Central, 2"; + name = "hallway camera" + }, +/obj/structure/sign/poster/official/random/directional/south, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/port) "qwd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -49459,20 +49158,25 @@ /obj/structure/cable, /turf/open/space, /area/station/solars/starboard/aft) -"qxd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/ghost_critter_spawn, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) -"qxl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +"qwG" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 }, -/obj/effect/mapping_helpers/dead_body_placer, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +/obj/machinery/camera/directional/east{ + c_tag = "Medical - Lobby"; + network = list("ss13","medbay"); + name = "medical camera" + }, +/obj/structure/chair/sofa/corp/right{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) +"qwY" = ( +/obj/machinery/airalarm/directional/north, +/turf/open/floor/wood, +/area/station/service/library) "qxm" = ( /obj/machinery/door/firedoor/border_only{ dir = 8 @@ -49498,11 +49202,6 @@ dir = 9 }, /area/station/cargo/storage) -"qxD" = ( -/obj/effect/turf_decal/delivery/red, -/obj/machinery/suit_storage_unit/void_old, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "qxJ" = ( /obj/structure/table, /obj/item/paper_bin, @@ -49514,9 +49213,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail{ - dir = 2 - }, +/obj/structure/disposalpipe/sorting/mail, /obj/effect/mapping_helpers/mail_sorting/supply/cargo_bay, /turf/open/floor/iron/dark/side, /area/station/cargo/office) @@ -49527,35 +49224,9 @@ /turf/open/floor/iron, /area/station/service/hydroponics) "qyd" = ( -/obj/machinery/light/floor/has_bulb, +/obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/entry) -"qyk" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/table/glass, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil{ - pixel_y = 7; - pixel_x = 3 - }, -/obj/item/assembly/timer, -/obj/item/assembly/timer, -/obj/item/assembly/timer, -/obj/item/assembly/igniter, -/obj/item/assembly/igniter, -/obj/item/assembly/igniter, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/screwdriver{ - pixel_x = 2; - pixel_y = 11 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "qyx" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -49569,39 +49240,46 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"qyD" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/light_switch/directional/south{ - pixel_x = -8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +"qzc" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/service/library) +"qzg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port) "qzh" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/white/smooth_large, -/area/station/maintenance/department/science) -"qzk" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_y = 4 +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 }, -/obj/effect/spawner/random/bureaucracy/folder{ - pixel_y = 6 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/spawner/random/bureaucracy/pen{ - pixel_y = 6 +/turf/open/floor/iron/dark/side{ + dir = 4 }, +/area/station/medical/paramedic) +"qzk" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/folder, +/obj/item/pen, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) "qzl" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/shower/directional/west, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/textured, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/turf/open/floor/iron, /area/station/engineering/main) "qzw" = ( /obj/effect/turf_decal/bot, @@ -49614,19 +49292,11 @@ /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/security/armory) "qzx" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/structure/table, +/obj/item/toy/ammo/gun, +/obj/item/toy/gun, +/turf/open/floor/iron/dark/side, +/area/station/commons/fitness/recreation) "qzL" = ( /obj/structure/mirror/directional/east, /obj/structure/sink/directional/west, @@ -49659,29 +49329,18 @@ dir = 10 }, /obj/item/radio/intercom/directional/west, +/obj/structure/extinguisher_cabinet/directional/south, /obj/structure/table, /turf/open/floor/iron/white, /area/station/science/explab) "qAf" = ( -/obj/machinery/status_display/evac/directional/west, -/obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, +/obj/machinery/door/firedoor, /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/central) -"qAj" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "qAk" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -49689,8 +49348,20 @@ "qAo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/floor/has_bulb, /turf/open/floor/iron/dark/side, /area/station/security/prison/workout) +"qAq" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/holopad, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "qAy" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/plating, @@ -49701,15 +49372,11 @@ /obj/machinery/portable_atmospherics/pump, /turf/open/floor/engine, /area/station/science/ordnance/storage) -"qAN" = ( -/obj/machinery/space_heater, -/turf/open/floor/plating, -/area/station/maintenance/central) "qAZ" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 }, -/obj/machinery/status_display/evac/directional/west, +/obj/structure/extinguisher_cabinet/directional/west, /obj/structure/filingcabinet, /turf/open/floor/iron/white, /area/station/science/lab) @@ -49720,25 +49387,26 @@ }, /area/station/hallway/secondary/exit/departure_lounge) "qBy" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 }, /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/machinery/firealarm/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, /turf/open/floor/stone, /area/station/smithing) "qBz" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/toilet{ - dir = 4 +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/chair, +/turf/open/floor/iron/checker{ + dir = 1 }, -/obj/effect/landmark/blobstart, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) +/area/station/command/heads_quarters/cmo) "qBR" = ( /obj/effect/turf_decal/tile/purple/opposingcorners{ dir = 1 @@ -49749,6 +49417,7 @@ /turf/open/floor/iron/checker, /area/station/science/lab) "qBU" = ( +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark/side{ dir = 8 }, @@ -49769,18 +49438,14 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/directional/north, +/obj/machinery/airalarm/directional/north, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/requests_console/directional/north{ - anon_tips_receiver = 1; - department = "Engineering"; - name = "Engineering Requests Console" - }, -/obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/engineering/main) "qCD" = ( @@ -49791,14 +49456,13 @@ /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) "qCL" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "kitchen_sec_shutters"; - name = "Kitchen Shutters"; - dir = 1 +/obj/item/radio/intercom/directional/west, +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/service/kitchen) +/turf/open/floor/wood, +/area/station/service/bar) "qCQ" = ( /turf/open/floor/iron, /area/station/science/ordnance) @@ -49811,18 +49475,10 @@ /turf/open/floor/wood, /area/station/commons/vacant_room/office) "qDz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, /obj/structure/sign/warning/radiation/directional/west, /obj/structure/cable/layer1, /turf/open/floor/iron, /area/station/engineering/engine_smes) -"qDK" = ( -/obj/machinery/light/directional/west, -/obj/machinery/vending/cigarette, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "qDZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -49868,42 +49524,26 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) "qEC" = ( -/obj/machinery/firealarm/directional/east, +/obj/machinery/light/directional/east, /turf/open/floor/iron/dark, /area/station/security/prison/workout) "qEI" = ( -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "qET" = ( /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/service/theater) -"qFc" = ( +"qFf" = ( /obj/effect/turf_decal/stripes/line{ - dir = 8 + dir = 1 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance{ - name = "Paramedic Office Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"qFf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Chapel Lobby" +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Chapel Lobby" }, /turf/open/floor/iron/dark/textured, /area/station/service/chapel) @@ -49934,38 +49574,43 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) -"qFP" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/spawner/random/engineering/toolbox, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"qFT" = ( +"qFM" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 + dir = 4 }, -/obj/structure/table/glass, -/obj/machinery/reagentgrinder{ - pixel_y = 8 +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) +"qFP" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 }, /turf/open/floor/iron/white, /area/station/medical/pharmacy) +"qGi" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 6 + }, +/obj/structure/reagent_dispensers/plumbed{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"qGp" = ( +/obj/machinery/light/directional/south, +/obj/structure/bookcase/random/nonfiction, +/turf/open/floor/wood, +/area/station/service/library) "qGq" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 }, /turf/open/floor/iron/white, /area/station/science/genetics) -"qGs" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) -"qGt" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/effect/landmark/start/head_of_security, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "qGx" = ( /obj/machinery/light/directional/east, /obj/structure/table/wood, @@ -49974,32 +49619,59 @@ /area/station/service/chapel/funeral) "qGy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ +/obj/effect/turf_decal/trimline/neutral/filled/warning{ dir = 8 }, -/obj/effect/turf_decal/trimline/yellow/warning{ +/obj/effect/turf_decal/trimline/neutral/warning{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/hallway/primary/aft) +"qGK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/moisture_trap, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "qGP" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ +/obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 }, -/obj/machinery/newscaster/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) +/turf/open/floor/iron/white, +/area/station/medical/surgery) "qHa" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/sign/warning/vacuum/external/directional/south, -/obj/structure/tank_holder/oxygen/yellow, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Main SMES Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/iron/textured, +/area/station/engineering/engine_smes) +"qHm" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/newscaster/directional/south, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/paramedic, /turf/open/floor/iron, -/area/station/engineering/main) +/area/station/medical/paramedic) "qHo" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -50014,12 +49686,16 @@ }, /area/station/service/hydroponics/garden) "qHp" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/line{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "qHq" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, /obj/structure/extinguisher_cabinet/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -50030,6 +49706,18 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) +"qHB" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/blue/corner{ + dir = 4 + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "qHC" = ( /obj/effect/turf_decal/trimline/neutral/filled/warning{ dir = 8 @@ -50046,14 +49734,10 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "qIg" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron, /area/station/engineering/main) "qIB" = ( @@ -50093,18 +49777,20 @@ /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 8 }, +/obj/structure/extinguisher_cabinet/directional/east, /obj/structure/closet/secure_closet/hydroponics, /turf/open/floor/iron/dark/side{ dir = 4 }, /area/station/service/hydroponics) "qIN" = ( -/obj/effect/decal/cleanable/blood/gibs/up, -/obj/machinery/light/small/built/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/machinery/status_display/ai/directional/south, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/security/execution/transfer) "qJc" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/station/maintenance/department/cargo) @@ -50122,6 +49808,7 @@ dir = 8 }, /obj/machinery/camera/autoname/directional/west, +/obj/machinery/status_display/ai/directional/west, /obj/structure/table, /obj/machinery/fax{ fax_name = "RaD"; @@ -50134,7 +49821,6 @@ /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/courtroom) "qJA" = ( @@ -50163,21 +49849,24 @@ /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) "qKy" = ( -/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 9 + }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "qKG" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 + dir = 5 }, -/obj/effect/turf_decal/trimline/yellow/line{ +/obj/effect/turf_decal/trimline/yellow/corner{ dir = 8 }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 5 }, -/turf/open/floor/iron, /area/station/hallway/primary/aft) "qKU" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -50189,13 +49878,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"qLk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/cobweb, -/obj/structure/frame/machine, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "qLz" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/warning{ dir = 1 @@ -50206,26 +49888,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"qLB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance{ - name = "Morgue Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "qLG" = ( /obj/machinery/flasher/directional/south{ id = "AI"; @@ -50233,52 +49895,34 @@ }, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) -"qLH" = ( -/obj/effect/turf_decal/trimline/red/filled/warning{ - dir = 8 - }, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron/dark, -/area/station/security/processing) -"qLR" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/burnt_floor, -/obj/item/grown/bananapeel, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "qMh" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) -"qMF" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ +/obj/structure/reagent_dispensers/plumbed{ dir = 4 }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/machinery/status_display/evac/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/fore) +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"qMF" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "qMO" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/table, /obj/machinery/camera/directional/east{ c_tag = "Engineering - Shared Storage"; name = "engineering camera" }, -/obj/item/stack/sheet/glass/fifty{ - pixel_y = 5; - pixel_x = -4 +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/structure/table, +/obj/item/stack/rods/fifty{ + pixel_y = 6; + pixel_x = -6 }, -/obj/item/stack/sheet/iron/fifty{ - pixel_y = 5 +/obj/item/stack/rods/fifty{ + pixel_y = 6; + pixel_x = 6 }, -/obj/item/stack/rods/fifty, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) "qMU" = ( @@ -50288,19 +49932,35 @@ /obj/effect/turf_decal/trimline/purple/line, /obj/machinery/light/directional/north, /obj/structure/sign/poster/official/random/directional/north, -/obj/structure/chair{ - dir = 8 - }, +/obj/structure/chair/sofa/bench/left, /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "qMY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 +/obj/effect/turf_decal/siding/wideplating_new/dark, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/engine/telecomms, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) +"qNf" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/rack, +/obj/item/aicard, +/obj/item/ai_module/reset, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"qNq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance{ + name = "Engineering Office Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/engineering/break_room) "qNB" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -50319,14 +49979,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"qNM" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/turf/open/floor/engine, -/area/station/medical/cryo) "qNN" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ @@ -50349,16 +50001,17 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/science/xenobiology) -"qOh" = ( -/obj/structure/table, -/obj/item/stock_parts/subspace/analyzer, -/obj/item/stock_parts/subspace/analyzer, -/obj/item/stock_parts/subspace/analyzer, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "qOl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) +"qOp" = ( +/obj/machinery/light/built/directional/west, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "qOu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, @@ -50369,24 +50022,17 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark/side, /area/station/commons/fitness) -"qOG" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) "qOH" = ( /turf/closed/wall, /area/station/medical/office) -"qOQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 +"qOJ" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) +/obj/machinery/power/shieldwallgen, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "qOR" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50395,11 +50041,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Science Maintenance Passthrough" - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) "qOX" = ( /obj/effect/turf_decal/stripes/line{ @@ -50418,37 +50060,23 @@ /obj/effect/landmark/navigate_destination, /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/entry) -"qPk" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +"qPn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/south, +/mob/living/basic/chicken, +/turf/open/floor/grass, +/area/station/service/hydroponics) "qPo" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/delivery/red, /obj/machinery/newscaster/directional/east, /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) -"qPx" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/left/directional/north{ - name = "Apothecary Desk"; - req_access = list("pharmacy") - }, -/obj/machinery/door/window/left/directional/south{ - name = "Apothecary Desk" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "apothecary_shutters"; - name = "Apothecary Shutters" - }, -/obj/structure/desk_bell{ - pixel_x = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "qPJ" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 4 @@ -50472,10 +50100,10 @@ /turf/open/floor/iron/dark, /area/station/security/execution) "qPP" = ( +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, /turf/open/floor/iron/showroomfloor, /area/station/command/heads_quarters/rd) "qPR" = ( @@ -50502,12 +50130,18 @@ /turf/open/floor/iron/white, /area/station/science/lab) "qQe" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/disposalpipe/segment, -/obj/machinery/light/small/directional/south, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/structure/table, +/obj/item/phone{ + pixel_x = 6; + pixel_y = 1 + }, +/obj/item/reagent_containers/cup/glass/mug/britcup{ + pixel_x = -6; + pixel_y = 11 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "qQf" = ( /turf/open/floor/iron/dark/corner{ dir = 1 @@ -50520,13 +50154,16 @@ /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "qQp" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, /obj/machinery/light/small/directional/east, +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible, /obj/machinery/meter, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "qQq" = ( -/obj/structure/chair/stool/directional/north, +/obj/structure/chair/plastic{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/security/prison/mess) "qQz" = ( @@ -50540,36 +50177,16 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/science/research) -"qQH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/chair_flipped{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "qQT" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, /obj/structure/chair, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/cargo/lobby) -"qQV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage) "qRc" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50580,13 +50197,18 @@ /turf/open/floor/iron, /area/station/engineering/main) "qRn" = ( -/obj/effect/turf_decal/box, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/white/smooth_large, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/machinery/bookbinder, +/turf/open/floor/wood, +/area/station/service/library/lounge) +"qRt" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/structure/sink/directional/south, +/obj/structure/mirror/directional/north, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/break_room) "qRD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -50606,6 +50228,12 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"qRN" = ( +/obj/machinery/atmospherics/components/tank/air{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "qRR" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -50619,24 +50247,25 @@ name = "Chief Engineer's Office" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/ce, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/dark/textured, /area/station/command/heads_quarters/ce) -"qSt" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +"qSu" = ( +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/item/radio/intercom/directional/north, -/obj/structure/table/reinforced/rglass, -/obj/machinery/computer/records/medical/laptop, -/turf/open/floor/iron/white, -/area/station/security/medical) +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "qSw" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/chair_flipped{ dir = 8 }, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "qSH" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -50654,11 +50283,6 @@ /obj/effect/mapping_helpers/airlock/access/all/science/general, /turf/open/floor/iron/white/textured, /area/station/science/circuits) -"qTi" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/closet/toolcloset, -/turf/open/floor/iron, -/area/station/construction) "qTs" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -50729,15 +50353,20 @@ dir = 4 }, /obj/machinery/portable_atmospherics/canister, -/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"qUs" = ( +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/machinery/computer/robotics{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "qUB" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, -/obj/machinery/camera/autoname/directional/north, -/obj/effect/spawner/random/structure/crate, +/obj/structure/filingcabinet, /turf/open/floor/iron/dark/side{ dir = 1 }, @@ -50759,38 +50388,11 @@ /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) "qUS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Side Entrance" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/central) -"qVb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/turf/closed/wall, +/area/station/medical/patients_rooms/room_a) "qVf" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -50799,26 +50401,31 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"qVD" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "qVH" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/ce) +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "qVR" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "qVX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) -"qWb" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/iron, -/area/station/engineering/break_room) +/area/station/medical/treatment_center) +"qWa" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "qWf" = ( /obj/structure/transit_tube/station/dispenser/reverse{ dir = 8 @@ -50832,31 +50439,55 @@ /turf/open/floor/carpet, /area/station/service/chapel) "qWn" = ( -/obj/structure/bonfire, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"qWu" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 6 +/obj/structure/table, +/obj/item/book/manual/wiki/atmospherics, +/obj/item/tank/internals/plasmaman/belt/empty{ + pixel_x = 9 }, -/obj/machinery/station_map/engineering/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"qWZ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 +/obj/item/tank/internals/plasmaman/belt/empty{ + pixel_x = -11 }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 +/obj/item/crowbar/red, +/obj/item/toy/figure/atmos{ + pixel_y = 16 + }, +/turf/open/floor/iron/dark/side{ + dir = 5 }, +/area/station/engineering/atmos/office) +"qWF" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/sign/departments/telecomms/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"qXb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) +"qWT" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/table/reinforced/rglass, +/obj/item/folder/white{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"qWZ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/obj/machinery/light/directional/west, +/obj/structure/sign/departments/telecomms/directional/west, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/hallway/primary/aft) +"qXb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -50868,7 +50499,7 @@ }, /area/station/hallway/secondary/service) "qXl" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/hallway/primary/central) "qXm" = ( @@ -50881,27 +50512,40 @@ /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) "qXp" = ( -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/power/terminal{ + dir = 8 + }, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server) +"qXs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"qXs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"qXG" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/light/small/directional/west, -/obj/structure/table/glass, -/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/service{ + name = "Printer Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/library, +/turf/open/floor/iron/dark/textured, +/area/station/service/library/printer) +"qXC" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, /turf/open/floor/iron/white, -/area/station/medical/surgery) +/area/station/medical/virology) "qXN" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 @@ -50911,13 +50555,19 @@ /obj/structure/sign/warning/electric_shock/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"qXO" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "qXR" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/obj/machinery/firealarm/directional/north, +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/north{ - pixel_x = 8 + pixel_x = 5 }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) @@ -50926,30 +50576,39 @@ /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "qYf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) +/obj/effect/turf_decal/trimline/red/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) "qYz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) +"qYD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/broken_bottle, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "qYN" = ( -/obj/machinery/vending/games, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "qYS" = ( /obj/structure/lattice, -/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ dir = 4 }, +/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible, /turf/open/space, /area/space/nearstation) "qYY" = ( @@ -50958,13 +50617,8 @@ /turf/open/floor/iron, /area/station/maintenance/port/fore) "qZj" = ( -/obj/effect/turf_decal/trimline/brown/filled/line, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light_switch/directional/south{ - pixel_x = -8 - }, -/turf/open/floor/iron/dark/side, -/area/station/cargo/lobby) +/turf/closed/wall, +/area/station/commons/dorms/room1) "qZk" = ( /turf/closed/wall/r_wall, /area/station/science/auxlab) @@ -50977,9 +50631,11 @@ }, /area/station/cargo/office) "qZo" = ( -/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) "qZu" = ( @@ -50990,23 +50646,14 @@ /turf/open/floor/iron/white, /area/station/science/research) "qZw" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 4; - name = "freezer passive vent" - }, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/receiver/preset_right, +/turf/open/floor/circuit/telecomms, /area/station/tcommsat/server) -"qZC" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) "qZF" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/blueshield) +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/station/hallway/primary/central) "rab" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ @@ -51019,26 +50666,23 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/disposal) "raq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/obj/effect/spawner/random/vending/snackvend, +/turf/open/floor/iron, +/area/station/engineering/main) "rau" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 }, /obj/effect/turf_decal/trimline/neutral/line, /obj/machinery/camera/directional/north{ - c_tag = "Arrivals - Lounge, North"; + c_tag = "Arrivals - Checkpoint, North"; name = "arrivals camera" }, /turf/open/floor/iron/dark, @@ -51053,10 +50697,6 @@ dir = 1 }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ name = "Library" @@ -51064,13 +50704,24 @@ /turf/open/floor/iron/dark/textured, /area/station/service/library) "raO" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/chair/comfy/black{ - dir = 1 +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/left/directional/north{ + name = "Apothecary Desk"; + req_access = list("pharmacy") }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/service/library) +/obj/machinery/door/window/left/directional/south{ + name = "Apothecary Desk" + }, +/obj/machinery/door/poddoor/shutters{ + id = "apothecary_sec_desk_shutters"; + name = "Apothecary Secodary Desk Shutters" + }, +/obj/structure/desk_bell{ + pixel_x = 6 + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "raY" = ( /obj/effect/turf_decal/trimline/brown/filled/line, /obj/machinery/conveyor{ @@ -51079,108 +50730,55 @@ }, /turf/open/floor/iron/dark/side, /area/station/cargo/storage) +"rbe" = ( +/obj/machinery/light/directional/east, +/obj/item/kirbyplants/random, +/turf/open/floor/wood, +/area/station/security/prison/rec) "rbf" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/table, -/obj/effect/turf_decal/bot, -/obj/machinery/processor{ - pixel_y = 6 - }, -/turf/open/floor/iron/kitchen, -/area/station/security/prison/mess) +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/dark, +/area/station/security/prison/garden) "rbo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, +/obj/machinery/telecomms/broadcaster/preset_left, /obj/structure/cable, -/turf/open/floor/engine/telecomms, +/turf/open/floor/circuit/telecomms, /area/station/tcommsat/server) -"rbv" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "rbH" = ( +/obj/machinery/light/small/directional/east, /obj/structure/sign/warning/vacuum/external/directional/east, -/obj/structure/closet/emcloset/anchored, +/obj/structure/tank_holder/oxygen, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"rbO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/xenobio, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/liquid_barrier, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) "rbW" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/obj/item/radio/intercom/directional/west, -/obj/structure/table/glass, -/obj/machinery/reagentgrinder{ - pixel_y = 8 - }, -/obj/item/stack/sheet/mineral/plasma, -/obj/item/stack/sheet/mineral/plasma{ - pixel_x = -6; - pixel_y = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/engineering/tool, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "rbY" = ( /turf/open/floor/plastic, /area/station/security/prison/safe) -"rcc" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) "rcf" = ( -/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/passive_vent{ + name = "freezer passive vent" + }, +/turf/open/floor/iron/freezer, +/area/station/science/xenobiology) +"rcj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) +"rcp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) -"rcp" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"rcu" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/obj/machinery/stasis, -/turf/open/floor/iron/dark, -/area/station/medical/exam_room) +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/service/library) "rcy" = ( /obj/structure/foamedmetal, /turf/open/floor/plating, /area/station/engineering/storage) -"rcz" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/textured, -/area/station/medical/medbay/aft) "rcC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51192,13 +50790,12 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "rcG" = ( -/obj/structure/table/wood, -/turf/open/floor/iron/dark, +/obj/structure/table/wood/fancy/black, +/obj/item/toy/figure/chaplain{ + pixel_y = -9 + }, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) -"rcJ" = ( -/obj/effect/landmark/blobstart, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "rcS" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 10 @@ -51211,7 +50808,7 @@ /area/station/hallway/primary/central) "rdb" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "detective_office_shutters"; name = "Detective Office Shutters"; dir = 4 @@ -51231,14 +50828,13 @@ /obj/machinery/duct, /obj/machinery/light/floor/has_bulb, /turf/open/floor/iron/dark, -/area/station/security/prison) +/area/station/security/prison/safe) "rdr" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/mapping_helpers/apc/cell_10k, -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/structure/cable, -/turf/open/floor/carpet/black, -/area/station/security/bitden) +/obj/machinery/computer/cryopod/directional/west, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/security/prison/safe) "rdt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51262,70 +50858,68 @@ /area/station/commons/dorms) "rdQ" = ( /obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) -"ref" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +"rei" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning, +/obj/effect/turf_decal/trimline/blue/warning{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "rer" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/office) +"reB" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/service{ - name = "Printer Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/library, -/turf/open/floor/iron/dark/textured, -/area/station/service/library/printer) -"reB" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/optable, -/turf/open/floor/iron/white, -/area/station/medical/surgery) -"reH" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Exploration Dock" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/science/research/abandoned) +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/textured, +/area/station/engineering/main) +"reQ" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "reT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/carpet/green, /area/station/commons/locker) +"rff" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/port_gen/pacman/pre_loaded, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "rfl" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"rfz" = ( -/turf/closed/wall, -/area/station/medical/virology) +"rfo" = ( +/obj/item/radio/intercom/directional/east, +/obj/structure/table/wood, +/turf/open/floor/wood/large, +/area/station/commons/dorms/room1) +"rfx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, +/turf/open/floor/iron/showroomfloor, +/area/station/service/abandoned_gambling_den) "rfB" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "rfS" = ( @@ -51357,29 +50951,15 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "rfY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/door/airlock/maintenance{ name = "CMO Office Maintenance" }, /obj/effect/mapping_helpers/airlock/access/all/medical/cmo, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"rgf" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/mob_spawn/corpse/human/charredskeleton, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/turf/open/floor/catwalk_floor, +/area/station/command/heads_quarters/cmo) "rgi" = ( /obj/structure/sign/warning/vacuum/external/directional/north, /obj/structure/cable, @@ -51388,31 +50968,6 @@ /obj/item/multitool, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) -"rgn" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/rack, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/multitool, -/obj/item/clothing/glasses/meson, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) -"rgv" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/camera/directional/west{ - c_tag = "Medical - Pharmacy"; - name = "medical camera"; - network = list("ss13","medbay") - }, -/obj/machinery/status_display/evac/directional/west, -/obj/machinery/component_printer, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "rgy" = ( /obj/structure/extinguisher_cabinet/directional/south, /obj/structure/table/wood, @@ -51429,10 +50984,27 @@ }, /turf/open/floor/wood, /area/station/commons/locker) -"rgH" = ( +"rgE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/molten_object/large, /obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/turf/open/floor/stone, +/area/station/smithing) +"rgJ" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"rgL" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/obj/structure/table, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "rgN" = ( /obj/structure/table/reinforced, /obj/item/pipe_dispenser, @@ -51454,13 +51026,22 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) +"rhh" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "rhs" = ( /obj/machinery/light/directional/east, /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "rhv" = ( /obj/effect/turf_decal/stripes/line, @@ -51484,30 +51065,28 @@ }, /turf/open/floor/engine, /area/station/science/explab) -"rhB" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/structure/table, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/crystal, -/obj/item/stock_parts/subspace/crystal, -/obj/item/stock_parts/subspace/crystal, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "rhD" = ( /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "rhE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) +"rhI" = ( +/obj/machinery/suit_storage_unit/security, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "rhW" = ( /turf/closed/wall/r_wall, /area/station/security/prison/mess) @@ -51566,22 +51145,12 @@ /turf/open/floor/iron/dark/side, /area/station/service/theater) "riF" = ( +/obj/machinery/firealarm/directional/north, /obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, -/area/station/security/prison) -"riQ" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 +/turf/open/floor/iron/dark/side{ + dir = 5 }, -/obj/machinery/light/small/directional/south, -/obj/machinery/station_map/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/starboard) -"rjd" = ( -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/area/station/security/prison) "rjf" = ( /obj/machinery/light/small/directional/west, /obj/item/radio/intercom/chapel/directional/east, @@ -51590,25 +51159,13 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel/office) -"rjj" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/side{ - dir = 10 +"rjp" = ( +/obj/structure/table/wood, +/obj/structure/cassette_rack/prefilled{ + pixel_y = 8 }, -/area/station/engineering/break_room) -"rjn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/full, -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/cmo) +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "rjK" = ( /obj/effect/turf_decal/arrows/red{ dir = 4; @@ -51620,9 +51177,18 @@ /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) "rjQ" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, -/area/station/medical/medbay/central) +/area/station/maintenance/department/security/brig) +"rjS" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/camera/autoname/directional/south, +/obj/structure/sign/plaques/kiddie/library{ + pixel_y = -32 + }, +/turf/open/floor/wood, +/area/station/service/library) "rjW" = ( /turf/open/floor/iron/dark/smooth_large, /area/station/engineering/main) @@ -51630,28 +51196,9 @@ /obj/effect/spawner/random/engineering/material_cheap, /turf/open/floor/iron, /area/station/cargo/warehouse) -"rky" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/light/small/directional/west, -/obj/machinery/duct, -/obj/machinery/door/window/right/directional/north{ - name = "Bridge Delivery"; - req_access = list("command") - }, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "rkB" = ( /turf/closed/wall, /area/station/science/genetics/cloning) -"rkE" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/airalarm/directional/east, -/obj/machinery/light/small/directional/east, -/obj/machinery/vending/wardrobe/medi_wardrobe, -/turf/open/floor/iron/white, -/area/station/medical/storage) "rkF" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -51667,8 +51214,7 @@ /turf/open/floor/iron/white/textured_large, /area/station/science/auxlab) "rkK" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/item/lightreplacer, /turf/open/floor/plating, /area/station/maintenance/port/aft) @@ -51676,6 +51222,25 @@ /obj/machinery/light/floor/has_bulb, /turf/open/floor/grass, /area/station/hallway/primary/central) +"rlc" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/cup/glass/trophy/bronze_cup{ + name = "Foam force security team competition 3rd place"; + pixel_x = -9; + pixel_y = 11 + }, +/obj/item/reagent_containers/cup/glass/trophy{ + desc = "You did good in the worst way possible."; + name = "Redshield 1st prize"; + pixel_x = 10; + pixel_y = 11 + }, +/obj/item/reagent_containers/cup/glass/trophy/silver_cup{ + name = "Head of shitcurity competition 2nd place"; + pixel_y = 8 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "rlk" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -51683,39 +51248,24 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"rlz" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +"rlt" = ( +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/service/library/private) "rlB" = ( /obj/structure/table, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/assembly/flash/handheld, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = -5 + }, +/obj/item/assembly/flash/handheld{ + pixel_x = -5 + }, /obj/item/toy/figure/secofficer{ - pixel_y = 4; - pixel_x = 9 + pixel_y = 3; + pixel_x = 7 }, /turf/open/floor/iron/dark, /area/station/security/office) -"rlE" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "rlF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51725,22 +51275,30 @@ }, /turf/open/floor/iron, /area/station/science/ordnance/office) +"rlG" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) "rlK" = ( -/obj/structure/cable, /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 1 }, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 1 + }, +/obj/effect/mapping_helpers/mail_sorting/engineering/general, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, +/obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/storage) -"rlP" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/command/bridge) "rlQ" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -51749,7 +51307,7 @@ /obj/machinery/turretid{ control_area = "/area/station/ai_monitored/turret_protected/ai_upload"; name = "AI Upload Turret Control"; - pixel_y = 25 + pixel_y = 26 }, /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, @@ -51758,10 +51316,6 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/port) -"rms" = ( -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating/airless, -/area/space/nearstation) "rmx" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 10 @@ -51770,55 +51324,18 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) -"rmB" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "bridge_blast_doors"; - name = "Bridge Access Blast Door" - }, -/turf/open/floor/iron/dark/textured, -/area/station/command/bridge) -"rmM" = ( -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"rmU" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/dark_blue/line, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +"rmJ" = ( +/obj/effect/turf_decal/vg_decals/atmos/nitrogen, +/turf/open/floor/engine/n2, +/area/station/engineering/atmos) +"rmR" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/station/asteroid) "rng" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/public/glass{ - name = "Cafeteria" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/iron/textured, -/area/station/maintenance/starboard/aft) +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "rnm" = ( /obj/machinery/light/directional/north, /obj/machinery/button/door/directional/north{ @@ -51836,11 +51353,19 @@ /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) "rnx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/violet/visible/layer2{ +/obj/machinery/atmospherics/pipe/smart/manifold/violet/visible{ dir = 1 }, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"rny" = ( +/obj/machinery/camera/autoname/directional/east, +/obj/structure/sign/calendar/directional/east, +/obj/machinery/computer/records/security{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "rnN" = ( /obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -51886,14 +51411,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark, /area/station/security/brig) -"roo" = ( -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/flora/bush/flowers_br/style_random, -/mob/living/basic/butterfly, -/turf/open/floor/grass, -/area/station/command/bridge) "rot" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -51914,17 +51431,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) -"roF" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/command/heads_quarters/cmo) "roO" = ( /obj/machinery/power/transmission_laser{ dir = 8 @@ -51932,17 +51440,14 @@ /turf/open/floor/engine, /area/station/engineering/engine_smes) "roS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, /obj/machinery/light/small/directional/north, +/obj/machinery/firealarm/directional/north, /obj/machinery/vending/cigarette, /turf/open/floor/wood, /area/station/commons/locker) -"rpa" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/machinery/disease2/incubator, -/turf/open/floor/iron/white, -/area/station/medical/virology) "rpd" = ( /obj/structure/sink/directional/south, /obj/structure/mirror/directional/north, @@ -51978,22 +51483,11 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "rpu" = ( -/obj/item/radio/intercom/directional/south, /obj/structure/bed, /obj/item/bedsheet/red, /obj/effect/landmark/start/detective, /turf/open/floor/wood, /area/station/security/detectives_office) -"rpz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "rpA" = ( /obj/effect/turf_decal/bot_white, /obj/structure/sign/poster/random/directional/north, @@ -52012,6 +51506,13 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) +"rpC" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) "rpI" = ( /obj/machinery/light/small/directional/east, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -52028,6 +51529,13 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/atmos) +"rpJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "rpP" = ( /obj/machinery/camera/autoname/directional/north, /obj/structure/sign/warning/biohazard/directional/north, @@ -52038,11 +51546,15 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 10 }, -/obj/machinery/camera/autoname/directional/west, -/obj/item/radio/intercom/directional/west, -/obj/structure/cable, -/obj/machinery/suit_storage_unit/ce, -/turf/open/floor/iron, +/obj/machinery/light/small/directional/west, +/obj/machinery/button/door/directional/west{ + id = "ce_office_shutters"; + name = "Privacy Shutters Control" + }, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, /area/station/command/heads_quarters/ce) "rqa" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -52050,7 +51562,7 @@ }, /obj/structure/extinguisher_cabinet/directional/east, /obj/machinery/washing_machine, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) "rqm" = ( /obj/effect/turf_decal/stripes/line{ @@ -52062,6 +51574,16 @@ /obj/item/target/alien/anchored, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) +"rqz" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/structure/sign/painting/library{ + pixel_x = -32 + }, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "rqP" = ( /obj/structure/chair, /obj/effect/landmark/start/scientist, @@ -52072,7 +51594,7 @@ dir = 8 }, /obj/machinery/light/small/directional/west, -/obj/structure/sign/warning/secure_area/directional/west, +/obj/structure/sign/warning/cold_temp/directional/west, /turf/open/floor/iron/dark/side{ dir = 8 }, @@ -52086,51 +51608,23 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"rrs" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/table/reinforced/rglass, -/obj/item/paper_bin{ - pixel_y = 6 - }, -/obj/item/folder/red{ - pixel_x = 3 - }, -/obj/item/folder/white{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/pen, -/obj/item/emergency_bed, -/turf/open/floor/iron/white, -/area/station/security/medical) "rrv" = ( /mob/living/carbon/human/species/monkey, /turf/open/floor/grass, /area/station/science/genetics) -"rrD" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "rrG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/welded, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"rrR" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "rsn" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 @@ -52145,16 +51639,6 @@ dir = 4 }, /area/station/cargo/lobby) -"rst" = ( -/obj/effect/turf_decal/box, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/obj/machinery/duct, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/virology) "rsx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -52164,43 +51648,52 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "rsR" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/spawner/random/engineering/toolbox, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "rtd" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 5 }, -/obj/machinery/light/small/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "Medical - Departures Post"; - name = "medical camera"; - network = list("ss13","medbay") +/obj/structure/cable, +/obj/structure/chair{ + dir = 4 }, +/obj/effect/landmark/start/medical_doctor, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) "rtq" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 8 }, -/obj/machinery/camera/directional/south{ - c_tag = "Port Hallway East" +/obj/machinery/duct, +/turf/open/floor/iron/dark/side{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/port) -"rtz" = ( -/turf/open/floor/iron/white, -/area/station/medical/break_room) +/area/station/service/hydroponics) "rtE" = ( /turf/open/floor/iron, /area/station/commons/fitness/recreation) "rtJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/cigbutt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"rtO" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/filingcabinet/security, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "rtP" = ( /obj/structure/frame/computer{ anchored = 1; @@ -52208,42 +51701,41 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) -"rtY" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/disposalpipe/segment, -/obj/machinery/camera/directional/east{ - c_tag = "Medical - CMO Office"; - network = list("ss13","medbay"); - name = "medical camera" - }, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/command/heads_quarters/cmo) "rud" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/machinery/composters, /turf/open/floor/iron/dark/side, /area/station/service/hydroponics/garden) +"ruf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/poddoor/preopen{ + id = "bridge_blast_doors"; + name = "Bridge Access Blast Door" + }, +/turf/open/floor/iron/dark/textured, +/area/station/command/bridge) "rug" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/port) "ruh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +/obj/machinery/light/small/directional/east, +/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/area/station/maintenance/department/engine/atmos) "run" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -52252,8 +51744,8 @@ }, /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/science/research) "ruu" = ( /obj/structure/cable, /obj/structure/cable/layer3, @@ -52263,23 +51755,28 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat_interior) "ruC" = ( -/obj/machinery/door/airlock/engineering{ - name = "Tech Storage" +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, /obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Tech Storage" + }, /obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, /obj/effect/landmark/navigate_destination/techstorage, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured, /area/station/engineering/storage/tech) "ruH" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/chair/office{ dir = 8 }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) "ruJ" = ( @@ -52298,12 +51795,6 @@ dir = 4 }, /area/station/service/hydroponics/garden) -"ruW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "rvf" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -52311,22 +51802,14 @@ /obj/machinery/status_display/ai/directional/west, /turf/open/floor/iron/white, /area/station/science/research) -"rvv" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/airalarm/directional/north, -/obj/structure/closet/secure_closet/medical1, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) "rvC" = ( +/obj/machinery/light/small/directional/north, /obj/structure/closet/l3closet/janitor, /obj/item/clothing/under/costume/maid, /obj/item/clothing/gloves/maid, /obj/item/clothing/head/costume/maidheadband, /obj/item/grenade/clusterbuster/cleaner, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, +/turf/open/floor/iron/dark, /area/station/service/janitor) "rvW" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -52363,19 +51846,42 @@ /obj/item/stack/sheet/plasteel/twenty, /turf/open/floor/iron, /area/station/science/robotics/lab) +"rvZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/structure/table/optable{ + desc = "A cold, hard place for your final rest."; + name = "Morgue Slab" + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "rwa" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/dark/visible/layer4{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"rwq" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/two, +"rwf" = ( +/obj/structure/chair/sofa/bench/solo{ + dir = 8 + }, /turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/area/station/command/bridge) +"rwh" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) +"rwq" = ( +/obj/structure/cable, +/obj/structure/chair/office{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "rws" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/sparker/directional/south{ @@ -52405,24 +51911,6 @@ /obj/structure/tank_dispenser, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"rwN" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/space_heater, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"rwR" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/firealarm/directional/west{ - pixel_y = -6 - }, -/obj/machinery/light_switch/directional/west{ - pixel_y = 3 - }, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/surgery) "rwW" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -52443,6 +51931,7 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, +/obj/machinery/light/small/directional/east, /obj/structure/table, /turf/open/floor/iron/dark, /area/station/security/execution) @@ -52452,12 +51941,13 @@ /turf/open/space/basic, /area/space/nearstation) "rxk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) +/obj/machinery/light/small/directional/south, +/obj/machinery/camera/autoname/directional/south, +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "rxl" = ( /obj/effect/turf_decal/bot/left, /turf/open/floor/engine, @@ -52492,9 +51982,10 @@ /obj/effect/turf_decal/trimline/yellow/line{ dir = 8 }, -/obj/machinery/light/directional/east, /obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, /area/station/hallway/primary/aft) "rxH" = ( /obj/effect/turf_decal/trimline/purple/filled/warning{ @@ -52502,30 +51993,41 @@ }, /turf/open/floor/iron/white, /area/station/science/genetics) -"rxR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"rxJ" = ( +/obj/effect/turf_decal/tile/dark_blue/full, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/light/small/directional/west, -/obj/machinery/newscaster/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) -"rxT" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/command/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/central) +/obj/machinery/duct, +/obj/machinery/door/poddoor/preopen{ + id = "bridge_blast_doors"; + name = "Bridge Access Blast Door" + }, +/obj/machinery/door/window/right/directional/west{ + name = "Bridge Deliveries"; + req_access = list("command") + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/bridge) +"rxT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/command/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/central) "ryc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52533,9 +52035,21 @@ /turf/open/floor/iron/dark, /area/station/tcommsat/computer) "ryl" = ( -/obj/structure/bookcase/random/adult, -/turf/open/floor/wood, -/area/station/service/library) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/morgue{ + name = "Private Study"; + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/station/service/library/private) "ryp" = ( /obj/machinery/mass_driver/trash{ dir = 8 @@ -52552,6 +52066,14 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"ryz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 8 + }, +/area/station/engineering/atmos) "ryL" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -52559,6 +52081,23 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/engine, /area/station/science/explab) +"ryM" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Teleporter Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/teleporter, +/obj/effect/landmark/navigate_destination, +/turf/open/floor/iron/dark/textured, +/area/station/command/teleporter) "ryN" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=Dorm"; @@ -52581,23 +52120,37 @@ /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, /obj/machinery/camera/motion/directional/west{ - c_tag = "AI - Upload West"; - network = list("aiupload") + c_tag = "AI - Upload, West"; + network = list("aiupload"); + name = "ai camera" }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "rzs" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/machinery/status_display/evac/directional/north, -/obj/structure/chair, -/turf/open/floor/iron/dark/side{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) +"rzz" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/table/reinforced/rglass, +/obj/item/wrench/medical, +/obj/item/wrench/medical{ + pixel_x = 4; + pixel_y = 4 }, -/area/station/cargo/storage) +/obj/item/storage/toolbox/mechanical{ + pixel_y = 7 + }, +/obj/item/storage/toolbox/electrical, +/turf/open/floor/iron/white, +/area/station/medical/storage) "rzG" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 }, /turf/open/floor/iron/dark, @@ -52617,20 +52170,23 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/dark/textured, /area/station/security/office) -"rzV" = ( -/obj/effect/turf_decal/tile/brown/fourcorners, -/obj/machinery/computer/department_orders/medical{ - dir = 8 +"rzW" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/office) -"rAk" = ( -/obj/effect/decal/cleanable/blood/tracks{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/machinery/light/directional/east, +/obj/machinery/vending/medical, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"rAh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "rAl" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -52661,7 +52217,6 @@ c_tag = "Security - Courtroom Northeast"; name = "security camera" }, -/obj/machinery/light_switch/directional/north, /obj/structure/filingcabinet, /turf/open/floor/iron/dark, /area/station/security/courtroom) @@ -52669,10 +52224,14 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/wood, /area/station/security/prison/rec) -"rAO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"rAH" = ( +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark/side{ + dir = 1 }, +/area/station/security/prison) +"rAO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -52682,15 +52241,18 @@ /obj/effect/turf_decal/trimline/yellow/warning{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, /area/station/hallway/primary/aft) "rAT" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 }, /obj/effect/turf_decal/trimline/red/warning, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "rAY" = ( @@ -52700,13 +52262,15 @@ /turf/open/floor/iron/vaporwave, /area/station/command/heads_quarters/rd) "rBa" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/box/corners{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/smartfridge/chemistry/preloaded, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry) +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "rBb" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -52733,23 +52297,27 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "rBk" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder{ - pixel_y = 9 +/obj/machinery/status_display/evac/directional/east, +/turf/open/floor/iron/dark, +/area/station/security/prison) +"rBn" = ( +/obj/effect/turf_decal/trimline/purple/line, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/kitchen, -/area/station/security/prison/mess) +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/starboard) "rBF" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, /obj/machinery/requests_console/directional/north{ - anon_tips_receiver = 1; - assistance_requestable = 1; department = "Security"; name = "Security Requests Console" }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, /obj/machinery/computer/records/security, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) @@ -52765,9 +52333,10 @@ /area/station/security/processing) "rCa" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "hydro_back_shutters"; - name = "Hydroponics Backroom Shutters" + name = "Hydroponics Backroom Shutters"; + dir = 1 }, /turf/open/floor/plating, /area/station/service/hydroponics) @@ -52776,12 +52345,8 @@ dir = 1 }, /obj/effect/turf_decal/trimline/red/line, -/obj/machinery/requests_console/directional/north{ - anon_tips_receiver = 1; - assistance_requestable = 1; - department = "Security"; - name = "Security Requests Console" - }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/office) "rCj" = ( @@ -52801,40 +52366,23 @@ /turf/open/floor/iron/dark, /area/station/science/server) "rCE" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/plate_press, -/turf/open/floor/iron/dark, -/area/station/security/prison/work) -"rCH" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/firealarm/directional/north, -/obj/machinery/light_switch/directional/north{ - pixel_x = -8 +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/side{ + dir = 10 }, -/obj/effect/decal/cleanable/dirt, -/obj/item/kirbyplants/photosynthetic, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) +/area/station/security/prison/work) "rCS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) +/obj/machinery/firealarm/directional/west{ + pixel_y = 5 + }, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "rCT" = ( /turf/closed/wall, /area/station/hallway/primary/starboard) -"rCW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) "rCZ" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot_white/right, -/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/bot_white, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, @@ -52877,13 +52425,8 @@ /turf/open/floor/circuit, /area/station/maintenance/department/electrical) "rDD" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/structure/closet/radiation, -/obj/item/crowbar/large, -/turf/open/floor/iron, -/area/station/engineering/storage) +/turf/closed/wall/r_wall, +/area/station/engineering/transit_tube) "rDG" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/effect/turf_decal/trimline/dark_blue/warning{ @@ -52920,6 +52463,14 @@ /obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/iron, /area/station/science/xenobiology) +"rDY" = ( +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/machinery/door/window/brigdoor/left/directional/south{ + name = "Research Director's Desk"; + req_access = list("rd") + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "rEd" = ( /obj/effect/spawner/random/structure/chair_flipped, /obj/effect/spawner/random/trash/cigbutt, @@ -52932,12 +52483,12 @@ "rEe" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/machinery/light_switch/directional/south{ - pixel_x = -6 + pixel_x = -5 }, /obj/machinery/button/door/directional/south{ id = "station_away_gate"; name = "Gateway Access Shutter Control"; - pixel_x = 6; + pixel_x = 5; req_access = list("gateway") }, /obj/effect/turf_decal/bot_white, @@ -52951,14 +52502,7 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 }, -/obj/machinery/light/directional/west, -/obj/structure/table, /obj/item/radio/intercom/directional/west, -/obj/item/folder/yellow, -/obj/item/clothing/ears/earmuffs{ - pixel_x = -2; - pixel_y = -3 - }, /turf/open/floor/iron, /area/station/engineering/storage) "rEo" = ( @@ -52966,8 +52510,8 @@ /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 }, -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron, +/obj/machinery/vending/coffee, +/turf/open/floor/iron/dark/side, /area/station/hallway/primary/aft) "rEv" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -52975,7 +52519,25 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"rEy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/cryo) +"rEz" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "rEE" = ( +/obj/structure/extinguisher_cabinet/directional/west, /obj/structure/chair/wood{ dir = 4 }, @@ -52994,22 +52556,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white/smooth_large, /area/station/science/research) -"rEJ" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/item/food/grown/banana, -/obj/machinery/light/small/directional/east, -/turf/open/floor/grass, -/area/station/medical/virology) -"rEK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery) "rEL" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, @@ -53019,14 +52565,6 @@ }, /turf/open/floor/iron, /area/station/science/xenobiology) -"rEO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/atmos) "rEP" = ( /obj/machinery/light/small/directional/north, /obj/machinery/status_display/evac/directional/north, @@ -53034,15 +52572,19 @@ dir = 1 }, /area/station/commons/locker) -"rFd" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/north, -/obj/machinery/light/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +"rEU" = ( +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom/directional/west, +/obj/machinery/suit_storage_unit/atmos, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) +"rFb" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 8; + name = "freezer passive vent" }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "rFk" = ( /turf/closed/wall, /area/station/medical/medbay/central) @@ -53053,21 +52595,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/maintenance/port) -"rFO" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/keycard_auth{ - pixel_x = -24 - }, -/obj/structure/table/reinforced, -/obj/item/folder/blue{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/flashlight/lamp{ - pixel_y = 3 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "rFP" = ( /obj/effect/turf_decal/trimline/neutral/line{ dir = 4 @@ -53082,11 +52609,19 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/cargo) +"rGg" = ( +/turf/open/floor/plating, +/area/station/maintenance/port) +"rGt" = ( +/obj/machinery/light/built/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/iron/dark, +/area/station/service/abandoned_gambling_den) "rGu" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/station/asteroid) "rGz" = ( /obj/structure/bed{ dir = 4 @@ -53098,13 +52633,10 @@ /turf/open/floor/plastic, /area/station/security/prison/safe) "rGH" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +/obj/machinery/firealarm/directional/east, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "rGL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53115,8 +52647,9 @@ /area/station/commons/fitness/recreation) "rGN" = ( /obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/auxiliary) "rGT" = ( @@ -53137,8 +52670,7 @@ /turf/open/floor/engine, /area/station/ai_monitored/command/storage/satellite) "rHd" = ( -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ +/obj/effect/turf_decal/tile/green/half/contrasted{ dir = 4 }, /obj/machinery/computer/atmos_control/mix_tank{ @@ -53147,14 +52679,6 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) "rHl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"rHn" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -53163,14 +52687,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "Surgery" +/obj/machinery/door/airlock/medical/glass{ + name = "Chemistry Factory" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/surgery, -/obj/effect/mapping_helpers/airlock/unres, -/obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, +/obj/effect/landmark/navigate_destination/chemfactory, /turf/open/floor/iron/white/textured, -/area/station/medical/surgery) +/area/station/medical/chemistry) "rHp" = ( /obj/machinery/power/smes{ capacity = 9e+006; @@ -53182,6 +52705,15 @@ /obj/effect/turf_decal/stripes/box, /turf/open/floor/iron/dark/textured_large, /area/station/maintenance/disposal/incinerator) +"rHq" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "rHt" = ( /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, @@ -53201,15 +52733,25 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "rHG" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) -"rHN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/duct, +/obj/machinery/door/airlock/grunge{ + name = "Gambling Den" + }, +/turf/open/floor/iron/dark/textured, +/area/station/service/abandoned_gambling_den) +"rHN" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 4 }, /turf/open/floor/wood, /area/station/service/bar) @@ -53236,22 +52778,10 @@ }, /turf/open/floor/plating, /area/station/science/ordnance/testlab) -"rIv" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/blue/corner, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/camera/directional/west{ - c_tag = "Medical - Central, West"; - name = "medical camera"; - network = list("ss13","medbay"); - dir = 10 - }, -/obj/machinery/airalarm/directional/west, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +"rIx" = ( +/obj/structure/bookcase/random/adult, +/turf/open/floor/wood, +/area/station/service/library) "rIC" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/effect/turf_decal/trimline/neutral/line{ @@ -53290,31 +52820,37 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/holopad, +/obj/machinery/light/floor/has_bulb, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"rJk" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/north, +/mob/living/basic/chicken, +/turf/open/floor/grass, +/area/station/service/hydroponics) "rJp" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "rJu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/camera/directional/west{ - c_tag = "Telecomms Server Room"; - network = list("tcomms") - }, -/obj/machinery/ntnet_relay, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/bus/preset_three, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) "rJz" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 }, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) +/obj/structure/sign/poster/official/periodic_table/directional/west, +/obj/structure/chemical_manufacturer, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "rJM" = ( /obj/machinery/firealarm/directional/north{ pixel_x = 5 @@ -53344,44 +52880,33 @@ /turf/open/floor/iron/white, /area/station/science/xenobiology) "rKd" = ( -/obj/item/cigbutt, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/effect/spawner/random/engineering/tracking_beacon, /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 }, +/obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"rKe" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/detectives_office) "rKU" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/science) "rKX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 }, -/obj/machinery/door/airlock/public/glass{ - name = "Dorm 1" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/starboard/aft) -"rLe" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/turf/open/floor/iron/dark/side{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) +/area/station/engineering/break_room) "rLs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53390,7 +52915,6 @@ /turf/open/floor/iron, /area/station/cargo/storage) "rLH" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/layer_manifold/pink/visible, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) @@ -53401,24 +52925,40 @@ /turf/open/floor/iron/dark, /area/station/security/courtroom) "rLP" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, /obj/structure/chair/office{ dir = 8 }, /obj/effect/landmark/start/head_of_personnel, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) +"rLQ" = ( +/obj/effect/mapping_helpers/dead_body_placer, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "rLX" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/white, /area/station/science/circuits) "rMc" = ( -/obj/effect/turf_decal/box/white, +/obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/command/storage/eva) +"rMk" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/light/directional/south, +/obj/structure/chair/sofa/bench/left{ + dir = 1 + }, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/iron, +/area/station/engineering/main) "rMm" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ @@ -53436,40 +52976,43 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/engineering/main) -"rMK" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/line{ +"rMz" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"rMN" = ( -/obj/machinery/light_switch/directional/west, -/obj/structure/table, -/obj/item/storage/belt/utility, -/obj/item/t_scanner{ - pixel_x = -6 +/obj/structure/cable, +/obj/structure/chair{ + dir = 4 }, -/obj/item/multitool{ - pixel_x = 6 +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) +"rMM" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 }, -/obj/item/clothing/mask/breath, -/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/machinery/light/directional/north, +/obj/machinery/station_map/directional/north, /turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) -"rMS" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/light/directional/west, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron, -/area/station/engineering/main) -"rMV" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/item/clothing/mask/gas, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/hallway/secondary/entry) +"rMT" = ( +/obj/effect/turf_decal/tile/blue/full, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Medical - Deliveries"; + name = "medical camera"; + network = list("ss13","medbay") + }, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/medbay/central) +"rMV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "rNd" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrogen_input{ dir = 8 @@ -53478,32 +53021,35 @@ /area/station/engineering/atmos) "rNx" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "robotics_garage_shutters"; - name = "Robotics Shutters"; - dir = 4 - }, +/obj/structure/cable, /turf/open/floor/plating, /area/station/science/robotics/mechbay) "rNA" = ( /obj/effect/spawner/random/vending/colavend, /turf/open/floor/wood, /area/station/commons/locker) -"rOg" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +"rNF" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"rNL" = ( +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/structure/chair/office/light{ dir = 8 }, -/turf/open/floor/iron/white, -/area/station/medical/office) +/obj/effect/landmark/start/research_director, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "rOt" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/poster/random/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating, -/area/station/maintenance/department/security/brig) +/turf/closed/wall, +/area/station/commons/dorms/room3) "rOu" = ( -/obj/machinery/camera/autoname/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Commons - Cryogenics, Departures"; + name = "commons camera" + }, /obj/structure/sign/poster/official/help_others/directional/west, /obj/machinery/cryopod{ dir = 4 @@ -53561,31 +53107,29 @@ /turf/open/floor/iron/dark, /area/station/security/prison/visit) "rOR" = ( -/obj/structure/sign/painting/library{ - pixel_y = -32 - }, -/obj/structure/easel, -/obj/item/canvas/twentythree_twentythree, -/obj/item/canvas/nineteen_nineteen, -/obj/item/canvas/twentythree_nineteen, -/turf/open/floor/wood, -/area/station/service/library/lounge) -"rOV" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty{ - pixel_y = 5; - pixel_x = -4 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 }, -/obj/item/stack/sheet/glass/fifty{ - pixel_y = 5 +/obj/machinery/vending/tool, +/turf/open/floor/iron/dark/side{ + dir = 4 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/engineering/main) +/area/station/engineering/storage_shared) "rOW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/engineering/main) +"rPh" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 + }, +/obj/item/radio/intercom/directional/north, +/obj/structure/rack, +/obj/item/wallframe/camera, +/turf/open/floor/iron/dark/side{ + dir = 5 + }, +/area/station/engineering/break_room) "rPn" = ( /obj/machinery/light/small/directional/west, /obj/machinery/camera/autoname/directional/west, @@ -53593,17 +53137,16 @@ /area/station/science/xenobiology) "rPJ" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +/obj/effect/spawner/random/vending/snackvend, /turf/open/floor/plating, -/area/station/maintenance/department/medical) +/area/station/service/abandoned_gambling_den) "rPK" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/status_display/evac/directional/west, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/medkit/advanced, /turf/open/floor/iron/dark, -/area/station/command/meeting_room) +/area/station/command/bridge) "rPQ" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -53626,51 +53169,41 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"rQb" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/light/directional/south, -/obj/machinery/station_map/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) -"rQn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/construction) "rQs" = ( -/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, /obj/machinery/light/small/directional/west, /obj/machinery/camera/directional/west{ c_tag = "Security - Head of Security Room"; name = "security camera" }, +/obj/item/radio/intercom/directional/west, /obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/reagent_containers/cup/glass/bottle/navy_rum{ - pixel_x = 7; - pixel_y = 13 +/obj/item/reagent_containers/cup/glass/bottle/whiskey{ + pixel_y = 14; + pixel_x = 7 }, /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ pixel_x = 6 }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -3; + pixel_y = 8 + }, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) "rQv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/plumbed{ +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/machinery/newscaster/directional/west, +/obj/structure/chair/sofa/corp/right{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"rQz" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "rQO" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ @@ -53684,15 +53217,24 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark, /area/station/security/brig) +"rQU" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/light/small/directional/south, +/obj/item/radio/intercom/directional/south, +/obj/machinery/vending/medical, +/turf/open/floor/iron/white, +/area/station/medical/storage) +"rQX" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/light/directional/west, +/obj/structure/sign/warning/secure_area/directional/west, +/obj/machinery/vending/assist, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "rRb" = ( /obj/effect/turf_decal/trimline/brown/filled/warning{ dir = 9 }, -/obj/machinery/button/door/directional/west{ - id = "cargo_desk"; - name = "Cargo Desk Shutters"; - req_access = list("cargo") - }, /turf/open/floor/iron/dark/side{ dir = 9 }, @@ -53727,12 +53269,39 @@ /obj/machinery/mech_bay_recharge_port, /turf/open/floor/plating, /area/station/maintenance/department/electrical) +"rRU" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "rRZ" = ( -/turf/closed/wall, -/area/station/maintenance/department/medical) -"rSc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/circuit/green/telecomms/mainframe, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/department/engine/atmos) +"rSc" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) "rSo" = ( /obj/effect/spawner/random/trash/graffiti, @@ -53755,6 +53324,16 @@ /obj/structure/foamedmetal, /turf/open/floor/plating, /area/station/maintenance/department/science) +"rSN" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/storage) "rSO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -53771,27 +53350,30 @@ /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, -/obj/machinery/modular_computer/preset/id{ - dir = 4 - }, +/obj/machinery/light/small/directional/west, /obj/machinery/camera/directional/west{ - c_tag = "Security - Arrivals Checkpoint"; + c_tag = "Security - Checkpoint, Arrivals"; name = "security camera" }, /obj/machinery/button/door/directional/west{ - id = "arrivals_security_post"; - name = "Security Post Shutters Control"; + id = "arrivals_security_checkpoint"; + name = "Security Checkpoint Shutters Control"; req_access = list("security") }, -/obj/machinery/light/small/directional/west, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/auxiliary) "rTf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/north, +/obj/machinery/chem_heater/withbuffer, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "rTm" = ( /obj/machinery/camera/autoname/directional/south, /obj/structure/cable, @@ -53816,11 +53398,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port) @@ -53848,19 +53425,16 @@ /turf/open/floor/iron/dark, /area/station/security/processing) "rTF" = ( -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/engineering/break_room) -"rTK" = ( -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/cmo) +/obj/machinery/light/small/directional/north, +/obj/machinery/field/generator, +/turf/open/floor/plating, +/area/station/engineering/main) +"rTL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "rTM" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ @@ -53887,13 +53461,20 @@ /turf/closed/wall/r_wall, /area/station/command/heads_quarters/captain) "rTV" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/camera/directional/south{ + c_tag = "Command - Head of Personnel's Office"; + name = "command camera" + }, /obj/machinery/requests_console/directional/south{ - anon_tips_receiver = 1; - assistance_requestable = 1; department = "Head of Personnel's Desk"; - name = "Head of Personnel's Requests Console"; - can_send_announcements = 1 + name = "Head of Personnel's Requests Console" }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) "rUf" = ( @@ -53918,7 +53499,6 @@ "rUm" = ( /obj/machinery/camera/autoname/directional/south, /obj/machinery/airalarm/directional/south, -/obj/machinery/light_switch/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, @@ -53943,26 +53523,19 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"rUZ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/line{ +"rVm" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 4 }, -/obj/machinery/camera/directional/west{ - c_tag = "Aft Primary Hallway North" +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 8 }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"rVw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/obj/machinery/camera/directional/east{ + c_tag = "Hallway - Central, West"; + name = "hallway camera" + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "rVz" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -53985,10 +53558,6 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/maintenance/department/security) -"rWe" = ( -/obj/effect/spawner/random/structure/chair_maintenance, -/turf/open/floor/plating/airless, -/area/space/nearstation) "rWp" = ( /obj/structure/chair, /obj/effect/landmark/start/shaft_miner, @@ -54038,22 +53607,13 @@ /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "rXH" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "Head of Personnel" +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/door/window/brigdoor/left/directional/north{ + name = "Chief Engineer's Desk"; + req_access = list("ce") }, -/obj/effect/mapping_helpers/airlock/access/all/command/hop, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/hop) +/turf/open/floor/iron/dark, +/area/station/command/bridge) "rXM" = ( /obj/structure/bed/pod, /obj/item/bedsheet/random, @@ -54065,6 +53625,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"rXT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "rYe" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/atmos) @@ -54080,6 +53646,15 @@ }, /turf/open/floor/iron/dark/textured, /area/station/service/chapel) +"rYy" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "rYz" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 5 @@ -54127,13 +53702,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "rZw" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/obj/effect/turf_decal/box/red, /obj/machinery/airalarm/directional/east, /obj/effect/mapping_helpers/airalarm/mixingchamber_access, -/obj/effect/turf_decal/box/red, /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/iron/dark, /area/station/science/ordnance/freezerchamber) @@ -54147,6 +53722,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/engineering/main) "rZB" = ( @@ -54159,21 +53735,12 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"rZH" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/structure/sign/poster/official/walk/directional/south, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "rZN" = ( /obj/structure/lattice, -/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ dir = 4 }, +/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible, /turf/open/space, /area/space/nearstation) "rZO" = ( @@ -54196,12 +53763,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/brig) -"saa" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) "san" = ( /obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -54223,16 +53784,17 @@ dir = 8 }, /area/station/command/gateway) +"sat" = ( +/obj/machinery/light/directional/east, +/turf/open/floor/iron/kitchen, +/area/station/security/prison/mess) "say" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/obj/machinery/shower/directional/east, -/obj/effect/landmark/start/chemist, -/turf/open/floor/noslip{ - icon_state = "textured_dark" - }, -/area/station/medical/chemistry) +/obj/machinery/light/small/directional/east, +/obj/structure/table, +/obj/item/stack/rods/ten, +/obj/item/assembly/prox_sensor, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "saI" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -54241,7 +53803,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) "saV" = ( /obj/effect/spawner/structure/window/reinforced, @@ -54272,20 +53834,15 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "sbB" = ( -/obj/item/radio/intercom/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Science - Auxiliary Lab"; + name = "science camera"; + network = list("ss13","rd") + }, +/obj/structure/extinguisher_cabinet/directional/south, /obj/machinery/suit_storage_unit/standard_unit, /turf/open/floor/iron/white/textured, /area/station/science/auxlab) -"sbI" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/disposaloutlet, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) "sbL" = ( /obj/machinery/light/directional/east, /obj/structure/extinguisher_cabinet/directional/east, @@ -54295,32 +53852,16 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light/small/directional/south, /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"sce" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/white, -/area/station/medical/office) "scf" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/bot, /obj/machinery/vending/assist, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) -"scp" = ( -/obj/structure/table/wood, -/obj/machinery/computer/records/medical/laptop{ - dir = 8 - }, -/turf/open/floor/carpet/blue, -/area/station/medical/psychology) "scD" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 @@ -54348,6 +53889,12 @@ }, /turf/open/floor/iron/textured, /area/station/security/interrogation) +"scQ" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/landmark/start/gary, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/service/abandoned_gambling_den) "scR" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/siding/wood{ @@ -54363,16 +53910,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark/side, /area/station/cargo/storage) -"sdE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "sdL" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -54384,8 +53921,6 @@ /turf/open/floor/wood, /area/station/security/prison/rec) "sea" = ( -/obj/machinery/light/small/built/directional/north, -/obj/structure/sign/warning/no_smoking/directional/north, /obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/item/tank/internals/emergency_oxygen{ @@ -54407,19 +53942,6 @@ /obj/machinery/ore_silo, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) -"sep" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/flora/grass/jungle/b/style_random, -/obj/structure/flora/bush/grassy/style_random, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters"; - dir = 8 - }, -/turf/open/floor/grass, -/area/station/medical/medbay/central) "set" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -54437,9 +53959,8 @@ /turf/open/floor/iron/white/textured, /area/station/science/explab) "seu" = ( -/obj/machinery/computer/station_alert, -/obj/machinery/newscaster/directional/north, /obj/machinery/camera/autoname/directional/north, +/obj/machinery/computer/station_alert, /turf/open/floor/iron, /area/station/engineering/main) "sey" = ( @@ -54449,25 +53970,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"seJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"seN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "seP" = ( /turf/closed/wall/r_wall, /area/station/maintenance/solars/starboard/aft) @@ -54494,28 +53996,37 @@ /obj/machinery/power/port_gen/pacman/pre_loaded, /turf/open/floor/plating, /area/station/maintenance/department/electrical) +"sfs" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 1 + }, +/obj/effect/mapping_helpers/mail_sorting/medbay/virology, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "sfu" = ( -/obj/machinery/button/ignition/incinerator/atmos, -/turf/closed/wall/r_wall, -/area/station/maintenance/disposal/incinerator) +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/maintenance/three, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "sfz" = ( +/obj/effect/turf_decal/stripes/box, +/obj/machinery/light/small/directional/south, /obj/structure/disposalpipe/trunk{ dir = 1 }, /obj/machinery/disposal/delivery_chute{ dir = 1 }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/cargo/sorting) "sfC" = ( /turf/closed/wall, /area/station/service/chapel/office) "sfI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -54524,51 +54035,57 @@ }, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/effect/landmark/navigate_destination/common/starboardquartersolar, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/solars/starboard/aft) "sgh" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 }, /obj/structure/cable, -/obj/machinery/status_display/ai/directional/west, /turf/open/floor/iron, /area/station/engineering/gravity_generator) -"sgJ" = ( -/obj/item/tank/internals/oxygen, -/obj/item/clothing/mask/breath, +"sgI" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"sgM" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +/area/station/commons/vacant_room/commissary) +"sgJ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 6 }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) +/obj/structure/sign/warning/vacuum/external/directional/south, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron, +/area/station/engineering/main) +"sgM" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "sgT" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"sgY" = ( -/obj/effect/decal/cleanable/vomit/old, -/obj/effect/mob_spawn/corpse/human/assistant, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "shc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/sepia, +/area/station/service/library/artgallery) "shm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, /area/station/security/prison/work) +"shq" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/duct, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/blueshield) "shu" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -54581,21 +54098,20 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"shv" = ( -/obj/item/radio/intercom/directional/south, -/obj/structure/table_frame/wood, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) "shx" = ( -/obj/structure/sign/plaques/kiddie/library, -/turf/closed/wall, -/area/station/service/library/artgallery) -"shC" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/leavy/style_random, -/turf/open/floor/grass, -/area/station/command/bridge) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) +"shz" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "shF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/smooth_large, @@ -54631,6 +54147,11 @@ }, /turf/open/floor/iron, /area/station/command/gateway) +"siB" = ( +/obj/machinery/light/built/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "siE" = ( /turf/closed/wall/r_wall, /area/station/maintenance/central) @@ -54665,9 +54186,12 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "sjs" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/prison) +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/prison/work) "sjw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -54679,13 +54203,34 @@ }, /area/station/hallway/secondary/service) "sjy" = ( -/obj/structure/bookcase/random/fiction, -/turf/open/floor/wood, -/area/station/service/library) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/duct, +/obj/machinery/door/airlock/grunge{ + name = "Morgue" + }, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/medical/morgue, +/turf/open/floor/iron/dark/textured, +/area/station/medical/morgue) "sjF" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, /turf/open/floor/iron, /area/station/maintenance/port/fore) +"sjM" = ( +/obj/structure/table, +/obj/item/clothing/glasses/blindfold, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "sjV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -54696,7 +54241,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "ske" = ( /turf/open/floor/iron, @@ -54708,6 +54253,17 @@ dir = 6 }, /area/station/commons/storage/primary) +"sku" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) +"skz" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/storage) "skA" = ( /obj/structure/rack, /obj/item/storage/bag/ore, @@ -54730,30 +54286,29 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) -"skE" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 +"skI" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 }, -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/machinery/status_display/evac/directional/east, +/obj/machinery/computer/diseasesplicer, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/area/station/medical/virology) "skJ" = ( -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) -"skR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/obj/machinery/airalarm/directional/south, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/obj/machinery/light/small/directional/east, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/structure/chair/sofa/corp{ - dir = 8 +/obj/machinery/disposal/bin, +/turf/open/floor/wood, +/area/station/command/meeting_room) +"skS" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/obj/machinery/light/directional/east, +/turf/open/floor/wood, +/area/station/service/library/lounge) "slc" = ( /obj/structure/chair/stool/directional/west, /obj/effect/landmark/start/hangover, @@ -54762,7 +54317,7 @@ }, /area/station/commons/fitness) "slh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4, /obj/machinery/meter/layer4, /turf/open/floor/iron/dark, /area/station/engineering/atmos) @@ -54786,6 +54341,17 @@ /obj/machinery/recharger, /turf/open/floor/iron/dark, /area/station/security/processing) +"sls" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/commons/vacant_room/commissary) "slt" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical{ @@ -54818,6 +54384,19 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/maintenance/port) +"slz" = ( +/obj/machinery/button/door/directional/north{ + id = "library_desk_shutters"; + name = "Library Desk Shutters Control"; + req_access = list("library") + }, +/obj/machinery/newscaster/directional/east, +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole/bookmanagement{ + dir = 8 + }, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "slS" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -54828,7 +54407,14 @@ /obj/machinery/button/door/directional/south{ id = "prison_release"; name = "Labor Camp Shuttle Lockdown"; - req_access = list("brig") + req_access = list("security"); + pixel_x = 6 + }, +/obj/machinery/button/door/directional/south{ + id = "labor_dock_bolt"; + name = "Labor Camp Shuttle Dock Airlock Control"; + req_access = list("security"); + pixel_x = -6 }, /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/preopen{ @@ -54836,15 +54422,23 @@ name = "Prisoner Processing Blast Door" }, /obj/machinery/door/airlock/security/glass{ - name = "Labor Shuttle Dock" + name = "Labor Camp Shuttle Dock"; + id_tag = "labor_dock_bolt" }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/dark/textured, /area/station/security/processing) "smr" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/gibs/core, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/box, +/obj/machinery/holopad, +/turf/open/floor/iron/large, +/area/station/cargo/drone_bay) "sms" = ( /turf/closed/wall, /area/station/service/chapel/funeral) @@ -54853,6 +54447,7 @@ dir = 1 }, /obj/machinery/light/small/directional/north, +/obj/machinery/firealarm/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, @@ -54883,10 +54478,24 @@ dir = 8 }, /area/station/commons/locker) +"smR" = ( +/obj/structure/sign/painting/library{ + pixel_y = -32 + }, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/table/wood/fancy/blue, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) +"sna" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/storage) "snd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark, +/obj/structure/rack, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, /area/station/security/prison/safe) "snh" = ( /obj/machinery/camera/directional/north{ @@ -54919,7 +54528,6 @@ dir = 8 }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) "snq" = ( @@ -54947,28 +54555,17 @@ /obj/structure/chair{ dir = 8 }, -/obj/machinery/light_switch/directional/east, /turf/open/floor/iron/dark/side{ dir = 4 }, /area/station/hallway/secondary/service) -"snz" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery) "snL" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/item/stack/sheet/iron/ten, /obj/item/stack/cable_coil, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "snQ" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 @@ -54981,6 +54578,12 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"sob" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_b) "soc" = ( /obj/effect/spawner/random/structure/chair_maintenance, /turf/open/floor/plating, @@ -54992,22 +54595,16 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) -"son" = ( -/obj/machinery/light/directional/west, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/mapping_helpers/apc/cell_10k, -/obj/effect/mapping_helpers/apc/full_charge, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) "sos" = ( -/obj/structure/cable, /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/binary/valve/digital/layer2{ +/obj/structure/cable, +/obj/machinery/atmospherics/components/binary/volume_pump/layer2{ name = "Emergency Waste Release" }, -/obj/machinery/atmospherics/components/binary/valve/digital/layer4{ - name = "Emergency Air Supply" +/obj/machinery/atmospherics/components/binary/pump/layer4{ + dir = 1; + name = "Emergency Air Supply"; + target_pressure = 250 }, /turf/open/floor/plating/reinforced, /area/station/science/xenobiology/hallway) @@ -55018,6 +54615,9 @@ /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) "soW" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -55025,9 +54625,18 @@ /turf/open/floor/wood, /area/station/command/heads_quarters/hos) "spb" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Closet" + }, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/floor/plating, /area/station/maintenance/starboard/aft) "spo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -55052,24 +54661,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"spJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/button/door/directional/north{ - id = "cap_privacy"; - name = "Privacy Shutters Control"; - pixel_x = 6 - }, -/obj/machinery/light_switch/directional/north{ - pixel_x = -6 - }, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "sqj" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/chair{ @@ -55078,63 +54669,24 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"sqV" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/table/reinforced, -/obj/item/skub, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "sqZ" = ( -/obj/structure/table/wood, +/obj/structure/table/wood/fancy/black, /obj/item/paper_bin, -/obj/effect/spawner/random/bureaucracy/folder{ - pixel_y = 2 - }, -/obj/effect/spawner/random/bureaucracy/pen{ - pixel_y = 2 - }, -/turf/open/floor/iron/dark, +/obj/item/folder, +/obj/item/pen/fountain, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) -"sre" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"sry" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/white/textured, -/area/station/medical/virology) "srQ" = ( -/obj/effect/turf_decal/delivery/red, +/obj/effect/turf_decal/bot_red, /obj/machinery/light/directional/west, /obj/machinery/suit_storage_unit/standard_unit, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/large, /area/station/ai_monitored/command/storage/eva) "srS" = ( -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/grass, -/area/station/command/bridge) -"ssd" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) -"ssi" = ( -/obj/effect/turf_decal/bot, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/structure/table/wood, +/obj/machinery/computer/records/medical/laptop, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "ssz" = ( /obj/machinery/light/small/directional/south, /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, @@ -55143,7 +54695,8 @@ dir = 8 }, /obj/machinery/airlock_sensor/incinerator_atmos{ - pixel_y = 24 + pixel_y = 24; + pixel_x = 8 }, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) @@ -55172,15 +54725,22 @@ /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "stB" = ( -/obj/machinery/firealarm/directional/south, -/turf/open/floor/wood, -/area/station/security/prison/rec) +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/structure/table, +/obj/machinery/button/door/directional/east{ + id = "bitrunner_den"; + name = "Bitrunner Den Shutters Control" + }, +/turf/open/floor/iron/dark, +/area/station/security/bitden) "stD" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 }, /obj/effect/turf_decal/trimline/dark_blue/line, -/obj/structure/table, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/chair/sofa/bench/left, +/obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "stI" = ( @@ -55193,28 +54753,18 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"stP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "stR" = ( /obj/effect/turf_decal/tile/purple/opposingcorners{ dir = 1 }, /obj/machinery/requests_console/directional/east{ - anon_tips_receiver = 1; - assistance_requestable = 1; department = "Research Lab"; - name = "Research Requests Console"; - receive_ore_updates = 1; - can_send_announcements = 1 + name = "Research Requests Console" }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/ore_update, /obj/structure/table/reinforced, /obj/machinery/cell_charger, /obj/item/stock_parts/cell/upgraded, @@ -55223,7 +54773,7 @@ "stU" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/machinery/light/directional/west, -/obj/structure/chair, +/obj/structure/chair/sofa/bench/right, /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) @@ -55252,8 +54802,9 @@ }, /area/station/service/hydroponics) "sux" = ( +/obj/machinery/light/small/directional/south, /obj/structure/reagent_dispensers/watertank, -/turf/open/floor/iron/dark/side, +/turf/open/floor/iron/dark, /area/station/service/janitor) "suC" = ( /obj/machinery/conveyor{ @@ -55267,13 +54818,10 @@ /turf/open/floor/iron/dark, /area/station/maintenance/disposal) "suE" = ( -/obj/machinery/newscaster/directional/south, -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/effect/spawner/random/bureaucracy/folder, -/obj/effect/spawner/random/bureaucracy/pen, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) +/obj/machinery/light/small/directional/south, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "suH" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat_interior) @@ -55283,31 +54831,14 @@ dir = 8 }, /area/station/commons/fitness/recreation) -"suU" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/iron/dark/textured, -/area/station/command/bridge) "suW" = ( /obj/machinery/requests_console/directional/west{ - assistance_requestable = 1; department = "Quartermaster's Desk"; - name = "Quartermaster's Desk Requests Console"; - supplies_requestable = 1; - can_send_announcements = 1 + name = "Quartermaster's Desk Requests Console" }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/supplies, /obj/structure/table, /obj/machinery/fax{ fax_name = "Quartermaster's Office"; @@ -55333,7 +54864,16 @@ }, /obj/effect/mapping_helpers/airlock/access/any/service/lawyer, /turf/open/floor/plating, -/area/station/maintenance/port/fore) +/area/station/service/lawoffice) +"svc" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/turf/open/floor/catwalk_floor/iron, +/area/station/maintenance/department/science) "svg" = ( /obj/effect/turf_decal/stripes/corner, /obj/structure/extinguisher_cabinet/directional/north, @@ -55357,14 +54897,15 @@ /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/exit/departure_lounge) "svK" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/carpet, -/area/station/service/library) +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "svN" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 @@ -55379,23 +54920,6 @@ dir = 1 }, /area/station/commons/fitness) -"svV" = ( -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/restraints/handcuffs{ - pixel_y = 3 - }, -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"svX" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, -/turf/closed/wall/r_wall, -/area/station/maintenance/starboard/aft) "swd" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -55423,14 +54947,19 @@ /obj/item/clothing/mask/gas, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) +"swz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) "swJ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ +/obj/item/radio/intercom/directional/north, +/obj/machinery/computer/station_alert, +/turf/open/floor/iron/dark/side{ dir = 1 }, -/obj/machinery/light/directional/north, -/obj/machinery/space_heater, -/turf/open/floor/iron, -/area/station/engineering/storage) +/area/station/engineering/atmos/office) "swR" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -55442,14 +54971,53 @@ pixel_x = -5; pixel_y = 3 }, +/obj/item/toy/figure/lawyer{ + pixel_x = 9 + }, /turf/open/floor/wood, /area/station/service/lawoffice) +"sxf" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/structure/table, +/obj/item/reagent_containers/cup/beaker/cryoxadone{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/reagent_containers/cup/beaker/cryoxadone{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/beaker/cryoxadone{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/beaker/cryoxadone{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/beaker/cryoxadone{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/storage/pill_bottle/mannitol, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_y = -4 + }, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "sxi" = ( -/obj/machinery/light/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "sxo" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -55463,49 +55031,42 @@ }, /area/station/command/gateway) "sxJ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/reagent_dispensers/wall/virusfood/directional/west, -/obj/machinery/computer/diseasesplicer, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"sxS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/public/glass{ - name = "Dorms Cross-through" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/starboard/aft) -"sxX" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 + dir = 1 }, -/obj/machinery/vending/wardrobe/engi_wardrobe, -/obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage_shared) -"syI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"syP" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/chair/office{ - dir = 1 +/area/station/engineering/break_room) +"sxS" = ( +/turf/closed/wall, +/area/station/medical/storage) +"syu" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/table, +/obj/item/analyzer, +/obj/item/assembly/signaler{ + pixel_y = 11; + pixel_x = -6 + }, +/obj/item/assembly/signaler{ + pixel_y = 11; + pixel_x = 6 + }, +/obj/item/healthanalyzer, +/obj/item/plant_analyzer{ + pixel_y = 3; + pixel_x = 3 }, -/obj/effect/landmark/start/chief_medical_officer, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/engineering/storage/tech) +"syM" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "syW" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/blobstart, @@ -55548,21 +55109,12 @@ /obj/effect/landmark/navigate_destination/gateway, /turf/open/floor/iron/textured, /area/station/command/gateway) -"szW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "szY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/light/directional/east, +/obj/structure/sign/departments/engineering/directional/east, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) "sAh" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 @@ -55587,63 +55139,40 @@ }, /area/station/cargo/storage) "sAH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/sepia, -/area/station/service/library/artgallery) +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/status_display/evac/directional/west, +/turf/open/floor/iron, +/area/station/engineering/main) "sAJ" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "genetics_shutters"; - name = "Genetics Shutters"; - dir = 1 + name = "Genetics Shutters" }, /turf/open/floor/plating, /area/station/science/genetics) -"sAM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "sAN" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"sAQ" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/coffee{ - pixel_x = -8; - pixel_y = 6 +"sAT" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 }, -/obj/item/reagent_containers/cup/glass/coffee{ - pixel_x = 10; - pixel_y = 1 +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 }, -/turf/open/floor/iron, -/area/station/engineering/break_room) +/obj/machinery/light_switch/directional/south{ + pixel_x = 5 + }, +/turf/open/floor/iron/white, +/area/station/medical/office) "sAY" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"sBq" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/machinery/disease2/incubator, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"sBs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery) "sBx" = ( /obj/effect/turf_decal/tile/green/anticorner/contrasted, /turf/open/floor/iron/dark/corner{ @@ -55654,7 +55183,7 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "sBO" = ( /obj/effect/turf_decal/stripes/line, @@ -55670,23 +55199,16 @@ }, /obj/effect/mapping_helpers/airlock/access/any/security/detective, /turf/open/floor/plating, -/area/station/maintenance/port/fore) +/area/station/security/detectives_office) "sBS" = ( /turf/closed/wall, /area/station/tcommsat/computer) "sBT" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/sign/warning/doors/directional/east, -/obj/machinery/light/small/directional/east, -/obj/machinery/door/poddoor/preopen{ - id = "bridge_blast_doors"; - name = "Bridge Access Blast Door" - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/machinery/firealarm/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "sCj" = ( /obj/machinery/status_display/evac/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ @@ -55694,6 +55216,22 @@ }, /turf/open/floor/iron, /area/station/science/ordnance) +"sCt" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 12 + }, +/obj/item/storage/toolbox/electrical{ + pixel_y = 6 + }, +/obj/item/storage/toolbox/electrical, +/obj/item/multitool, +/obj/item/clothing/glasses/welding{ + pixel_y = 12 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "sDi" = ( /obj/item/radio/intercom/directional/east{ freerange = 1; @@ -55726,12 +55264,6 @@ }, /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai) -"sDk" = ( -/obj/machinery/shower/directional/north, -/obj/item/soap/deluxe, -/obj/item/bikehorn/rubberducky, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/captain/private) "sDl" = ( /obj/structure/filingcabinet, /turf/open/floor/carpet/red, @@ -55741,10 +55273,13 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/obj/machinery/camera/directional/east, +/obj/machinery/camera/autoname/directional/east, /obj/structure/table, -/obj/machinery/recharger, -/turf/open/floor/iron/showroomfloor, +/obj/item/toy/plush/carpplushie{ + name = "Jeff"; + desc = "An adorable stuffed toy that resembles a space carp. The warden was given Jeff to soothe rampant anger issues" + }, +/turf/open/floor/iron/dark, /area/station/security/lockers) "sDr" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ @@ -55753,24 +55288,32 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/dark/side, /area/station/service/hydroponics) "sDz" = ( /turf/closed/wall, /area/station/commons/locker) +"sDC" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/bot_white/right, +/obj/structure/filingcabinet, +/obj/item/folder/documents, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/nuke_storage) "sEf" = ( +/turf/open/floor/iron/dark/side{ + dir = 5 + }, +/area/station/service/janitor) +"sEm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/janitor) -"sEm" = ( -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=EVA2"; + location = "Dorm" }, -/obj/effect/turf_decal/trimline/dark_blue/line, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "sEr" = ( @@ -55778,28 +55321,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/execution) -"sEB" = ( -/obj/structure/closet/crate, -/obj/item/clothing/head/utility/hardhat/red, -/obj/item/clothing/head/utility/hardhat/red, -/obj/item/clothing/head/utility/hardhat/red, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/obj/item/bodypart/arm/right/robot, -/obj/item/bodypart/arm/right/robot, -/obj/item/bodypart/arm/right/robot, -/obj/item/extinguisher, -/obj/item/extinguisher, -/obj/item/extinguisher, +"sEA" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, +/obj/effect/spawner/random/trash/hobo_squat, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/starboard/aft) "sEO" = ( /turf/closed/wall/r_wall, /area/station/science/xenobiology/hallway) @@ -55829,27 +55355,16 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"sFp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "sFv" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Security Post - Arrivals" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/dark/textured, -/area/station/security/checkpoint/customs/auxiliary) +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"sFE" = ( +/obj/machinery/firealarm/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "sFH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -55867,7 +55382,6 @@ }, /area/station/service/theater) "sGk" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/portable_atmospherics/canister, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 @@ -55878,6 +55392,33 @@ /obj/structure/sign/poster/random/directional/east, /turf/open/floor/iron, /area/station/cargo/warehouse) +"sGp" = ( +/obj/machinery/door/window/right/directional/north, +/obj/structure/table/wood/fancy/blue, +/obj/structure/sign/painting/library{ + pixel_y = -32 + }, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) +"sGF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/starboard/aft) +"sGP" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/disposalpipe/segment, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/security/brig) +"sGT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table/wood, +/obj/item/storage/photo_album/prison, +/turf/open/floor/wood, +/area/station/security/prison/rec) "sHl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -55893,19 +55434,12 @@ /obj/effect/turf_decal/bot_white/left, /turf/open/floor/plating/airless, /area/space/nearstation) -"sHG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) "sHP" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 }, -/turf/open/floor/wood, -/area/station/service/library/private) +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "sHR" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/warning{ dir = 8 @@ -55937,34 +55471,41 @@ /turf/open/floor/iron, /area/station/science/ordnance) "sIK" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/effect/turf_decal/trimline/dark_blue/line, -/obj/effect/landmark/start/hangover, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "sIW" = ( /obj/effect/turf_decal/siding/wood{ - dir = 5 + dir = 1 }, /obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil/streak, /turf/open/floor/stone, /area/station/smithing) +"sJa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "sJi" = ( -/obj/effect/turf_decal/trimline/purple/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/shower/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, +/obj/structure/drain, +/turf/open/floor/iron/showroomfloor, /area/station/science/research) "sJl" = ( /obj/effect/turf_decal/bot, -/obj/machinery/light/small/directional/south, /obj/structure/closet/crate, /obj/item/stack/ore/glass/basalt, /obj/item/stack/ore/glass/basalt, @@ -55976,6 +55517,13 @@ "sJm" = ( /turf/open/floor/iron/dark, /area/station/security/prison/garden) +"sJq" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/newscaster/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) "sJH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -56002,30 +55550,19 @@ /obj/item/pickaxe, /turf/open/floor/plating, /area/station/maintenance/port) -"sJW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/textured, -/area/station/medical/medbay/aft) "sKd" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/electrolyzer, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "sKg" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/item/storage/box/trackimp{ - pixel_x = -3 +/obj/structure/rack, +/obj/item/gun/energy/ionrifle{ + pixel_y = 3 }, -/obj/item/storage/box/chemimp{ - pixel_x = 6 +/obj/item/gun/energy/temperature/security{ + pixel_y = -3 }, -/obj/item/storage/lockbox/loyalty, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "sKj" = ( @@ -56046,35 +55583,21 @@ }, /turf/open/space/basic, /area/space/nearstation) -"sKr" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/mirror/directional/west, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "sKs" = ( /obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) -"sKy" = ( +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"sKC" = ( /obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/vending/wallmed/directional/west, -/obj/structure/closet/crate/freezer/blood, -/obj/machinery/light/small/directional/west, -/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/vending/drugs, /turf/open/floor/iron/white, -/area/station/medical/surgery) -"sKK" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/machinery/station_map/engineering/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/office) +/area/station/medical/storage) +"sKN" = ( +/obj/machinery/airalarm/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "sKX" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer2{ @@ -56090,15 +55613,13 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "sLa" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/light/directional/south, -/obj/structure/cable, -/obj/item/stack/sheet/cardboard{ - amount = 14 +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 }, -/obj/item/stack/package_wrap, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/dark, -/area/station/security/prison/work) +/area/station/hallway/secondary/entry) "sLg" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -56113,27 +55634,13 @@ /obj/effect/turf_decal/stripes/end{ dir = 1 }, -/obj/machinery/camera/directional/north{ - c_tag = "Security - Justice Chamber Airlock"; - name = "security camera" - }, +/obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/engine, /area/station/security/execution) -"sLl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "sLn" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/obj/effect/landmark/start/hangover, /turf/open/floor/carpet/purple, -/area/station/commons/dorms) +/area/station/commons/dorms/room3) "sLo" = ( /obj/structure/table, /turf/open/floor/iron/dark/side{ @@ -56141,33 +55648,40 @@ }, /area/station/commons/dorms) "sLz" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/wood, -/area/station/service/library/lounge) -"sLG" = ( -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/service/library) -"sLK" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 }, -/obj/structure/sign/flag/nanotrasen/directional/south, -/turf/open/floor/iron/cafeteria{ - dir = 8 +/obj/effect/turf_decal/trimline/blue/corner, +/obj/machinery/medical_kiosk, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"sLA" = ( +/obj/machinery/light_switch/directional/south{ + pixel_x = 8 }, -/area/station/command/heads_quarters/cmo) -"sLP" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/firealarm/directional/south, +/obj/machinery/vending/hydroseeds{ + slogan_delay = 700 }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 +/turf/open/floor/iron/dark, +/area/station/security/prison/garden) +"sLG" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/structure/railing, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"sLP" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 }, /obj/machinery/duct, /turf/open/floor/plating, @@ -56175,6 +55689,7 @@ "sMe" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/random/directional/west, +/obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "sMk" = ( @@ -56190,6 +55705,30 @@ }, /turf/open/space, /area/space/nearstation) +"sMv" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) +"sMw" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/light/small/directional/south, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/cryo) +"sMx" = ( +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "sMy" = ( /obj/effect/turf_decal/trimline/neutral/filled/warning, /obj/effect/turf_decal/trimline/neutral/warning{ @@ -56201,21 +55740,8 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "sMI" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Prison Garden" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured, -/area/station/security/prison/garden) -"sMN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain) +/turf/open/floor/carpet/black, +/area/station/security/bitden) "sMO" = ( /obj/machinery/computer/message_monitor{ dir = 4 @@ -56226,24 +55752,19 @@ /turf/open/floor/iron/dark, /area/station/tcommsat/computer) "sMS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/backpack/duffelbag, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "sMY" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/structure/closet/emcloset, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, /obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"sNb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/structure/closet/emcloset, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) "sNf" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/line{ @@ -56267,124 +55788,169 @@ }, /obj/machinery/newscaster/directional/south, /obj/structure/table, -/obj/item/multitool, +/obj/item/stack/sheet/iron/fifty{ + pixel_y = 5; + pixel_x = -4 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 5 + }, /turf/open/floor/iron/dark/side, /area/station/cargo/office) "sNp" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/main) "sNK" = ( -/obj/structure/table/wood, -/obj/structure/cassette_rack/prefilled{ - pixel_y = 8 - }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/vaporwave, /area/station/service/library/printer) -"sNP" = ( -/obj/effect/decal/cleanable/dirt, +"sNO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central) +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/grunge{ + name = "Morgue" + }, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/medical/morgue, +/turf/open/floor/iron/dark/textured, +/area/station/medical/morgue) "sNZ" = ( /obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/port/fore) "sOa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/item/radio/intercom/prison/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/prison) +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = -5 + }, +/obj/effect/turf_decal/box, +/obj/structure/closet/crate, +/obj/effect/spawner/random/contraband/prison, +/obj/item/stack/license_plates/empty/fifty, +/obj/item/stack/license_plates/empty/fifty, +/obj/item/stack/license_plates/empty/fifty, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/station/security/prison/work) "sOh" = ( -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/effect/turf_decal/delivery, +/obj/machinery/status_display/evac/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/command/heads_quarters/cmo) "sOm" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, /obj/machinery/door/airlock/highsecurity{ name = "Secure Tech Storage" }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/turf/open/floor/iron/dark, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/effect/mapping_helpers/airlock/access/any/engineering/tech_storage, +/turf/open/floor/iron/dark/textured, /area/station/engineering/storage/tech) "sOo" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/station/service/chapel) -"sOp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/engine, -/area/station/medical/cryo) -"sOV" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/vending/coffee, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) +"sOH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/red, +/area/station/security/courtroom) +"sPm" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/white/smooth_large, +/area/station/science/auxlab) "sPy" = ( -/obj/structure/cable, +/obj/effect/turf_decal/siding/wideplating_new/dark, /obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/light/directional/north, -/turf/open/floor/circuit/green/telecomms/mainframe, +/obj/structure/cable, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) +"sPz" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 + }, +/obj/machinery/skill_station, +/turf/open/floor/wood, +/area/station/service/library/lounge) "sPC" = ( /obj/structure/flora/grass/jungle/b/style_random, /turf/open/floor/grass, /area/station/hallway/primary/central) -"sPJ" = ( -/obj/structure/closet/radiation, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"sPN" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "sPR" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/department/science) +"sPW" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/medical/virology) "sPX" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/structure/sign/warning/cold_temp/directional/west, /turf/open/floor/plating/reinforced, /area/station/science/research) +"sPY" = ( +/obj/machinery/computer/operating{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "sQf" = ( /obj/structure/table/wood, -/obj/item/taperecorder{ - pixel_x = 9; - pixel_y = 9 - }, -/turf/open/floor/iron/dark, +/obj/item/paper_bin, +/obj/item/folder, +/obj/item/pen, +/turf/open/floor/carpet/blue, /area/station/commons/vacant_room/office) "sQo" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, /turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/area/station/command/bridge) "sQv" = ( /obj/effect/turf_decal/trimline/brown/line{ dir = 8 @@ -56447,6 +56013,27 @@ /obj/effect/landmark/carpspawn, /turf/open/space/basic, /area/space) +"sQW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/poddoor/shutters{ + id = "library_desk_shutters"; + name = "Library Desk Shutters"; + dir = 1 + }, +/obj/structure/table/wood, +/obj/structure/desk_bell{ + pixel_y = 7; + pixel_x = 7 + }, +/obj/item/pen, +/turf/open/floor/iron/dark/textured, +/area/station/service/library/printer) "sRp" = ( /obj/structure/flora/rock/style_random, /turf/open/floor/grass, @@ -56471,7 +56058,12 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 5 }, -/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = 5 + }, /obj/structure/disposalpipe/trunk{ dir = 8 }, @@ -56479,6 +56071,7 @@ /turf/open/floor/iron/white, /area/station/science/genetics) "sRJ" = ( +/obj/machinery/light/small/directional/west, /obj/machinery/cryopod{ dir = 4 }, @@ -56510,6 +56103,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/explab) +"sSr" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/command/meeting_room) "sSA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -56519,30 +56121,22 @@ }, /area/station/commons/fitness) "sSM" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, /obj/machinery/telecomms/message_server/preset, -/turf/open/floor/engine/telecomms, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) "sSP" = ( -/obj/structure/chair/comfy/black{ - dir = 8 +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer4{ + dir = 4 }, -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/iron, -/area/station/engineering/break_room) +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "sTi" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/effect/turf_decal/tile/purple/full, /obj/effect/turf_decal/delivery, /obj/machinery/light/small/directional/west, -/obj/machinery/camera/autoname/directional/west{ - dir = 10 - }, -/turf/open/floor/iron/dark, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "sTD" = ( /obj/effect/turf_decal/delivery, @@ -56604,10 +56198,17 @@ }, /area/station/cargo/miningoffice) "sUx" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/turf/open/floor/wood, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/obj/item/radio/intercom/directional/west, +/obj/structure/chair/sofa/corp{ + dir = 4 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "sUK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -56616,19 +56217,10 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) -"sUW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/chair/sofa/corp/left{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "sVg" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/light/small/directional/south, +/obj/machinery/firealarm/directional/south, /turf/open/floor/iron/white, /area/station/science/research) "sVp" = ( @@ -56643,23 +56235,19 @@ dir = 1 }, /area/station/hallway/secondary/exit/departure_lounge) -"sVE" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/defibrillator_mount/directional/west, -/obj/machinery/computer/operating{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery) +"sVB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "sVK" = ( -/obj/structure/sign/poster/contraband/random/directional/west, +/obj/structure/sign/poster/random/directional/west, /obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/effect/spawner/random/engineering/material_cheap, /turf/open/floor/plating, /area/station/maintenance/port/fore) "sVO" = ( -/obj/machinery/light/small/directional/west, +/obj/machinery/light/directional/west, /obj/structure/sign/poster/official/random/directional/west, /obj/structure/table/reinforced, /obj/machinery/cell_charger, @@ -56704,40 +56292,23 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/station/solars/starboard/fore) -"sWg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "sWl" = ( -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/effect/spawner/random/entertainment/toy_figure, /obj/machinery/airalarm/directional/south, /turf/open/floor/iron, /area/station/maintenance/disposal) "sWm" = ( +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, /obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) -"sWn" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/machinery/atm/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "sWq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/telecomms/processor/preset_one, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/processor/preset_two, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) "sWt" = ( /obj/structure/table/reinforced, @@ -56752,21 +56323,30 @@ /obj/item/gps, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) +"sWv" = ( +/obj/structure/destructible/cult/item_dispenser/archives/library, +/obj/item/book/codex_gigas, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "sWx" = ( /obj/structure/disposalpipe/segment{ dir = 10 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, +/turf/open/floor/iron/dark, /area/station/service/janitor) "sWy" = ( /turf/open/floor/iron, /area/station/engineering/storage_shared) "sWE" = ( /obj/item/radio/intercom/directional/west, +/obj/structure/chair/sofa/left/maroon{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark/side{ dir = 8 }, @@ -56777,34 +56357,29 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "sWO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/camera/directional/west{ + c_tag = "Command - CMO's Quarters"; + name = "command camera" + }, +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/effect/spawner/random/structure/furniture_parts, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/cmo) "sWP" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 5 }, /obj/machinery/photocopier, -/obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/dark/side{ dir = 5 }, /area/station/cargo/office) -"sWU" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +"sWS" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/east, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "sWX" = ( /obj/machinery/holopad, /turf/open/floor/wood, @@ -56814,7 +56389,11 @@ dir = 4 }, /obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/camera/autoname/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Science - Genetics, Cloning Lab"; + network = list("ss13","rd"); + name = "science camera" + }, /obj/machinery/computer/cloning{ dir = 8 }, @@ -56832,6 +56411,16 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"sXm" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/medical/paramedic) "sXx" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 4 @@ -56851,21 +56440,13 @@ }, /turf/open/floor/engine/o2, /area/station/engineering/atmos) -"sXC" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/landmark/start/chief_engineer, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "sXL" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 10 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/chemistry) "sXO" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -56877,17 +56458,15 @@ name = "Radiation Shutters" }, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"sYb" = ( -/obj/effect/turf_decal/stripes/line{ +/area/station/maintenance/department/engineering/central) +"sXS" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/computer/apc_control{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/turf/open/floor/iron/dark, +/area/station/command/bridge) "sYe" = ( /obj/effect/turf_decal/trimline/dark_red/warning{ dir = 8 @@ -56896,15 +56475,16 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "sYi" = ( -/obj/machinery/door/airlock/external{ - name = "Exploration Shuttle Dock" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/research/abandoned) +/obj/effect/turf_decal/trimline/blue/line{ + dir = 8 + }, +/obj/structure/sign/departments/psychology/directional/east, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "sYk" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating/reinforced, @@ -56917,12 +56497,21 @@ /turf/open/floor/engine/vacuum, /area/station/engineering/atmos) "sYt" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 4 - }, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) "sYv" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) "sYw" = ( @@ -56939,6 +56528,26 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) +"sYD" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/structure/table, +/obj/item/storage/box/lights/mixed{ + pixel_y = 6; + pixel_x = -6 + }, +/obj/item/storage/box/lights/mixed{ + pixel_y = 6; + pixel_x = 6 + }, +/obj/item/lightreplacer{ + pixel_y = 10 + }, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/storage_shared) "sYH" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -56967,72 +56576,32 @@ dir = 4 }, /area/station/cargo/sorting) -"sZe" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 +"sZj" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 10 }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) +"sZt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light_switch/directional/north{ - pixel_x = -4 - }, -/obj/machinery/door_buttons/airlock_controller{ - idExterior = "pathology_airlock_exterior"; - idInterior = "pathology_airlock_interior"; - idSelf = "pathology_airlock_control"; - name = "Pathology Access Console"; - pixel_y = 24; - req_access = list("pathology"); - pixel_x = 6 - }, -/obj/machinery/camera/directional/north{ - c_tag = "Medical - Pathology, Primary Lab"; - name = "medical camera"; - network = list("ss13","medbay") - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"sZi" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"sZj" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"sZo" = ( -/obj/effect/spawner/random/structure/girder, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"sZt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/effect/turf_decal/box, /obj/machinery/holopad, -/turf/open/floor/iron/large, +/turf/open/floor/iron/white/smooth_large, /area/station/science/explab) "sZC" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/directional/west, +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"sZG" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/pharmacy) +/obj/machinery/recharge_station, +/obj/effect/landmark/start/cyborg, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "sZI" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -57045,38 +56614,36 @@ /area/station/science/breakroom) "sZN" = ( /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) "sZR" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/effect/turf_decal/tile/purple/full, /obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "sZV" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 4; - name = "freezer passive vent" +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/iron/freezer, -/area/station/science/xenobiology) +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) "sZY" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "engineering"; - name = "Engineering Blast Door" +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 }, -/turf/open/floor/plating, -/area/station/engineering/storage) -"tal" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/machinery/button/door/directional/east{ - id = "tele_shutter"; - name = "Teleporter Shutter Control"; - req_access = list("teleporter") +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/machinery/light_switch/directional/south{ + pixel_x = -5 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "tar" = ( /obj/machinery/duct, /turf/open/floor/iron, @@ -57088,18 +56655,35 @@ /turf/open/floor/engine/co2, /area/station/engineering/atmos) "taA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) +"taM" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/light/small/directional/south, +/obj/structure/rack, +/obj/item/extinguisher, +/turf/open/floor/iron/dark/side, +/area/station/engineering/break_room) "taN" = ( /obj/structure/table, /obj/item/radio/off, /obj/item/screwdriver, /turf/open/floor/iron/dark, /area/station/security/office) +"tbb" = ( +/obj/effect/turf_decal/trimline/green/filled/corner, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "tbc" = ( /obj/effect/turf_decal/tile/neutral/half{ dir = 8 @@ -57112,17 +56696,19 @@ dir = 8 }, /area/station/command/gateway) -"tbg" = ( -/turf/open/floor/wood, -/area/station/security/detectives_office) -"tbn" = ( +"tbe" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) +"tbg" = ( +/turf/open/floor/wood, +/area/station/security/detectives_office) "tbo" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -57136,30 +56722,6 @@ "tbp" = ( /turf/closed/wall, /area/station/hallway/primary/aft) -"tbt" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/small/directional/east, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/table/glass, -/obj/item/storage/medkit/regular{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/storage/medkit/toxin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/toxin, -/obj/item/storage/medkit/toxin{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/machinery/door/window/right/directional/west{ - name = "First-Aid Supplies"; - req_access = list("medical") - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) "tbw" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 9 @@ -57169,27 +56731,24 @@ dir = 1 }, /obj/structure/sign/warning/vacuum/external/directional/north, +/obj/machinery/camera/autoname/directional/west, +/obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"tbG" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ +"tbI" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/table, -/obj/item/radio/off, -/obj/item/screwdriver{ - pixel_y = 10 +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"tbI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/cable_coil/cut, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "tbO" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/effect/turf_decal/trimline/neutral/line{ @@ -57197,6 +56756,19 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"tbT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/table, +/obj/effect/spawner/random/food_or_drink/booze{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -5; + pixel_y = 6 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "tbY" = ( /obj/effect/decal/cleanable/cobweb, /obj/effect/spawner/random/structure/table_or_rack, @@ -57213,58 +56785,46 @@ /obj/effect/landmark/start/prisoner, /turf/open/floor/carpet/orange, /area/station/security/prison/safe) -"tck" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/station_map/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/starboard) -"tco" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/button/door/directional/north{ - id = "med_priv_2"; - name = "Privacy Shutters Control" - }, -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) "tcw" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/port/aft) "tcF" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/food_or_drink/refreshing_beverage, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/obj/effect/turf_decal/bot, +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty{ + pixel_y = 5; + pixel_x = -4 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 5 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "tcH" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/white, +/area/station/medical/office) +"tcI" = ( +/obj/structure/sign/poster/random/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "tcJ" = ( -/obj/machinery/keycard_auth{ - pixel_x = -24 - }, -/obj/machinery/computer/cargo{ +/obj/effect/turf_decal/siding/wood{ dir = 4 }, +/obj/machinery/vending/cart, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) "tcM" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hos_privacy"; - name = "HoS Office Privacy Shutters" +/obj/machinery/door/poddoor/shutters{ + id = "hos_office"; + name = "HoS Office Shutters" }, /turf/open/floor/plating, /area/station/command/heads_quarters/hos) @@ -57277,10 +56837,6 @@ "tcP" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance) -"tcR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "tcY" = ( /turf/closed/wall, /area/station/security/interrogation) @@ -57295,32 +56851,30 @@ dir = 8 }, /obj/machinery/light/directional/west, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"tds" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/light/small/directional/north, +/obj/machinery/airalarm/directional/north, +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/tcomms_all, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "tdv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "tdz" = ( -/obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, /obj/machinery/door/poddoor/shutters{ id = "cap_privacy"; dir = 1 }, /turf/open/floor/plating, /area/station/command/heads_quarters/captain) -"tdG" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/structure/closet/secure_closet/engineering_personal, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/engineering/storage_shared) "tdR" = ( /obj/structure/cable, /obj/machinery/power/energy_accumulator/tesla_coil/anchored, @@ -57338,9 +56892,6 @@ /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/chair{ dir = 4 }, @@ -57380,16 +56931,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/turret_protected/ai) -"teM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/closet/secure_closet/atmospherics, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) "teQ" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 @@ -57403,7 +56944,6 @@ /turf/open/floor/iron, /area/station/science/robotics/lab) "teS" = ( -/obj/machinery/status_display/evac/directional/north, /obj/machinery/announcement_system, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) @@ -57413,29 +56953,31 @@ dir = 8 }, /area/station/commons/fitness/recreation) +"tfi" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/box, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"tfo" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Science - Genetics, Monkey Pen"; + network = list("ss13","rd"); + name = "science camera" + }, +/turf/open/floor/grass, +/area/station/science/genetics) "tfF" = ( /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) -"tfG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 1 - }, -/obj/machinery/vending/medical, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "tfN" = ( -/obj/machinery/light/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door/directional/south{ - id = "chem_factory_shutters"; - req_access = list("pharmacy") +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/structure/closet/secure_closet/engineering_personal, +/turf/open/floor/iron, +/area/station/engineering/main) "tfS" = ( /obj/machinery/airalarm/directional/west, /obj/effect/spawner/random/structure/chair_flipped{ @@ -57443,6 +56985,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"tfZ" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/machinery/light/directional/south, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/virology) "tgl" = ( /obj/machinery/light/neon_lining{ dir = 8 @@ -57451,9 +56999,13 @@ /turf/open/floor/stone, /area/station/science/xenobiology) "tgq" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, /obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/blueshield) +/obj/machinery/door/window/right/directional/east, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "tgG" = ( /turf/closed/wall, /area/station/maintenance/department/engine/atmos) @@ -57471,48 +57023,38 @@ "tgW" = ( /obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/holopad, -/turf/open/floor/iron/large, +/turf/open/floor/iron/white/smooth_large, /area/station/science/ordnance/testlab) "thf" = ( /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"thk" = ( -/obj/structure/chair/sofa/corp/left{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "thA" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 9 +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 1 }, -/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) -"thD" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/bed, -/obj/item/bedsheet/medical, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) "thT" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2, +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold, /obj/machinery/air_sensor/ordnance_freezer_chamber, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/freezerchamber) "tir" = ( -/turf/closed/wall/r_wall, -/area/station/medical/virology) -"tiN" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/line, /obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) +"tiN" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/chair/stool/directional/south, /turf/open/floor/carpet/red, -/area/station/commons/dorms) +/area/station/commons/dorms/room6) "tiT" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 4 @@ -57532,17 +57074,11 @@ }, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ - name = "Labor Shuttle Dock" + name = "Labor Camp Shuttle Dock" }, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/dark/textured, /area/station/security/processing) -"tja" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/virology) "tjB" = ( /obj/machinery/duct, /obj/effect/turf_decal/stripes/line{ @@ -57560,14 +57096,6 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron/white, /area/station/science/research) -"tjH" = ( -/obj/item/radio/intercom/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "tjI" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ @@ -57576,6 +57104,14 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmos) +"tjL" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured, +/area/station/medical/exam_room) "tjP" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -57583,47 +57119,51 @@ /obj/effect/turf_decal/trimline/blue/line{ dir = 8 }, -/obj/machinery/airalarm/directional/east, /obj/machinery/camera/directional/east{ c_tag = "Central Hallway East - Teleporter Access"; name = "hallway camera" }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"tjR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +"tjW" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/camera/directional/east{ + c_tag = "Command - CMO's Office"; + network = list("ss13","medbay"); + name = "command camera" }, -/obj/structure/sign/departments/medbay/alt/directional/east, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/turf/open/floor/iron/checker{ + dir = 1 }, -/obj/machinery/disposal/bin, -/obj/machinery/light/directional/east, +/area/station/command/heads_quarters/cmo) +"tkc" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/light/small/directional/east, +/obj/machinery/stasis, /turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/area/station/medical/treatment_center) "tkC" = ( +/obj/effect/turf_decal/stripes/end, +/obj/machinery/light/small/directional/south, /obj/structure/disposalpipe/trunk{ dir = 1 }, /obj/structure/disposaloutlet{ dir = 1 }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/cargo/sorting) "tkE" = ( /obj/machinery/camera/autoname/directional/south, /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) "tkP" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 }, -/obj/structure/table/glass, +/obj/structure/table, /obj/item/reagent_containers/spray/plantbgone, /obj/item/reagent_containers/spray/pestspray{ pixel_x = 3; @@ -57640,8 +57180,9 @@ }, /area/station/service/hydroponics/garden) "tkR" = ( -/obj/structure/table, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/radio/intercom/directional/north, +/obj/structure/table, /obj/item/storage/toolbox/mechanical{ pixel_y = 10 }, @@ -57664,32 +57205,17 @@ /area/station/cargo/storage) "tln" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/wood, -/obj/item/clipboard, -/obj/item/folder/red, -/obj/item/pen, +/obj/structure/chair/office{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/security/detectives_office) "tlp" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) -"tlq" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light_switch/directional/south{ - pixel_x = -8 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "tlz" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -57714,23 +57240,11 @@ }, /obj/effect/spawner/random/entertainment/money, /turf/open/floor/carpet/green, -/area/station/maintenance/starboard/aft) -"tlI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "testlab"; - name = "Xenobiology Secure Chamber Blast Door" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, -/obj/machinery/door/window/left/directional/north{ - name = "Test Chamber"; - req_access = list("xenobiology") - }, -/obj/structure/liquid_barrier, -/turf/open/floor/engine, +/area/station/service/abandoned_gambling_den) +"tlL" = ( +/obj/structure/sign/warning/electric_shock/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/turf/open/floor/iron/white, /area/station/science/xenobiology) "tlO" = ( /turf/closed/wall/r_wall, @@ -57747,13 +57261,21 @@ /obj/item/pai_card, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"tmj" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"tmt" = ( +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, +/obj/effect/spawner/random/vending/colavend, +/turf/open/floor/iron/white, +/area/station/medical/break_room) +"tmB" = ( +/obj/structure/cable, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) "tmI" = ( /obj/structure/flora/bush/fullgrass/style_random, /obj/structure/flora/bush/jungle/b/style_random, @@ -57764,25 +57286,28 @@ /obj/effect/turf_decal/trimline/yellow/warning{ dir = 1 }, -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/sorting/mail{ + dir = 2 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/effect/mapping_helpers/mail_sorting/service/hop_office, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "tmQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ +/obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/structure/closet/firecloset, -/obj/machinery/camera/directional/south{ - c_tag = "Central Hallway Southeast"; - name = "hallway camera" +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark/side{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/area/station/engineering/storage_shared) "tmR" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/clothing/costume, @@ -57801,10 +57326,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) -"tnt" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) "tnu" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 @@ -57812,22 +57333,21 @@ /obj/effect/turf_decal/trimline/green/line, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"tnv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/service/library/private) "tnK" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 9 }, -/obj/machinery/firealarm/directional/north, /obj/structure/sign/poster/official/random/directional/west, /obj/structure/disposalpipe/trunk, /obj/machinery/disposal/bin, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"tnM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) "tnN" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 @@ -57836,37 +57356,50 @@ /turf/open/floor/iron/kitchen, /area/station/service/kitchen) "tnQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/newscaster/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/aft) "tnW" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/iron, /area/station/cargo/warehouse) -"tof" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +"toc" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/medkit/regular{ + pixel_x = 6; + pixel_y = 6 }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"toh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"toi" = ( -/obj/machinery/station_map/engineering/directional/south, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/maintenance/department/science) +/obj/item/storage/medkit/fire{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/fire, +/obj/item/storage/medkit/fire{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/iron/white, +/area/station/medical/storage) +"tod" = ( +/obj/structure/sign/poster/random/directional/north, +/obj/structure/table, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"toh" = ( +/obj/structure/kitchenspike, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "tom" = ( /obj/machinery/light/small/directional/south, /obj/machinery/duct, @@ -57877,11 +57410,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark, /area/station/engineering/gravity_generator) -"tot" = ( -/obj/machinery/teleport/hub, -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) "tou" = ( /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 4 @@ -57898,10 +57426,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"toN" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "toY" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 8 @@ -57911,6 +57435,10 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig/entrance) +"tpf" = ( +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port) "tpk" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/security/maintenance, @@ -57933,26 +57461,26 @@ /obj/effect/landmark/start/roboticist, /turf/open/floor/iron/dark, /area/station/science/robotics/mechbay) +"tpz" = ( +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/iron/white, +/area/station/medical/virology) "tpC" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"tpL" = ( -/obj/effect/turf_decal/stripes/line{ +"tpE" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/warning{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark_blue/warning, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "tpO" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -57970,32 +57498,19 @@ /turf/open/floor/iron/dark/textured, /area/station/service/kitchen) "tpU" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/dark_blue/line, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) -"tpV" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, /obj/structure/table/reinforced, -/obj/machinery/recharger{ - pixel_x = 7 - }, -/obj/machinery/recharger{ - pixel_x = -7 - }, +/obj/item/folder/red, +/obj/item/pen, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/security/checkpoint/medical) "tqd" = ( -/obj/structure/bed{ - dir = 4 - }, -/obj/item/bedsheet/random{ - dir = 4 - }, +/obj/structure/disposalpipe/segment, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/engineering/transit_tube) "tqj" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/light/small/directional/east, @@ -58040,22 +57555,35 @@ /turf/open/floor/iron/dark, /area/station/security/holding_cell) "tqT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance{ + name = "Engineering Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"trg" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/dresser, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) +/area/station/engineering/main) "trh" = ( /obj/structure/sign/departments/engineering/directional/south, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"trn" = ( +/obj/structure/table, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/construction/plumbing, +/obj/item/plunger, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "trv" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 @@ -58069,23 +57597,22 @@ }, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) -"trQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +"trF" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 +/obj/machinery/requests_console/directional/south{ + department = "Kitchen"; + name = "Kitchen Requests Console" }, +/obj/effect/mapping_helpers/requests_console/supplies, +/turf/open/floor/iron/kitchen, +/area/station/service/kitchen) +"trQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood, /turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/area/station/service/abandoned_gambling_den) "trS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -58133,21 +57660,15 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/iron/dark/textured_large, /area/station/engineering/atmos/storage) -"tsh" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "tsi" = ( -/obj/effect/turf_decal/stripes/end, /obj/structure/sink/directional/east, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology/hallway) -"tsv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"tsp" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "tsw" = ( /obj/structure/table, /obj/item/storage/dice, @@ -58156,8 +57677,7 @@ /area/station/commons/dorms) "tsD" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/mop_bucket, -/obj/item/mop, +/obj/effect/spawner/random/trash/caution_sign, /turf/open/floor/plating, /area/station/maintenance/port) "tsL" = ( @@ -58180,50 +57700,71 @@ /obj/structure/rack, /obj/structure/window/reinforced/spawner/directional/south, /obj/item/clothing/suit/armor/riot{ - pixel_x = -3; + pixel_x = 6; pixel_y = 3 }, -/obj/item/clothing/suit/armor/riot, /obj/item/clothing/suit/armor/riot{ - pixel_x = 3; + pixel_x = 6 + }, +/obj/item/clothing/suit/armor/riot{ + pixel_x = 6; pixel_y = -3 }, /obj/item/shield/riot{ - pixel_x = -3; + pixel_x = -6; pixel_y = 3 }, -/obj/item/shield/riot, /obj/item/shield/riot{ - pixel_x = 3; + pixel_x = -6 + }, +/obj/item/shield/riot{ + pixel_x = -6; pixel_y = -3 }, +/obj/item/clothing/head/helmet/toggleable/riot, +/obj/item/clothing/head/helmet/toggleable/riot{ + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/toggleable/riot{ + pixel_y = 6 + }, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"ttl" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, +"tsV" = ( +/obj/effect/turf_decal/tile/dark_blue/full, +/obj/effect/turf_decal/delivery, +/obj/machinery/duct, +/turf/open/floor/iron/dark/smooth_large, /area/station/command/bridge) -"tto" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "ttr" = ( -/obj/structure/cable, -/obj/structure/chair/wood{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/iron/white/textured, +/area/station/medical/storage) "ttt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/security/prison/workout) +"ttC" = ( +/obj/structure/window/reinforced/tinted/spawner/directional/east, +/obj/item/kirbyplants/random/dead, +/turf/open/floor/iron/vaporwave, +/area/station/command/heads_quarters/rd) "ttD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -58233,7 +57774,7 @@ "ttK" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/machinery/light/small/directional/south, -/obj/structure/chair{ +/obj/structure/chair/sofa/bench/left{ dir = 8 }, /turf/open/floor/iron/dark, @@ -58253,20 +57794,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) -"tuk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "Chief Medical Officer's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/cmo, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/cmo) "tum" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/chair_maintenance{ @@ -58282,9 +57809,7 @@ /area/station/maintenance/port/aft) "tux" = ( /obj/structure/table, -/obj/item/paper_bin{ - pixel_y = 4 - }, +/obj/item/paper_bin, /obj/effect/spawner/random/bureaucracy/folder{ pixel_y = 6 }, @@ -58293,12 +57818,24 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) -"tuX" = ( -/obj/structure/reagent_dispensers/plumbed{ - dir = 8 +"tuK" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 }, -/turf/open/floor/plating, -/area/station/maintenance/central) +/obj/structure/table, +/obj/item/airlock_painter/decal/tile{ + pixel_y = 9 + }, +/obj/item/airlock_painter{ + pixel_y = 3 + }, +/obj/item/airlock_painter/decal{ + pixel_y = -3 + }, +/turf/open/floor/iron/dark/side{ + dir = 5 + }, +/area/station/engineering/storage_shared) "tvc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -58308,12 +57845,10 @@ /area/station/security/prison/rec) "tve" = ( /obj/structure/chair/sofa/corp/right{ - color = "#7fb3d5"; dir = 4 }, -/obj/structure/cable, /obj/machinery/light/directional/west, -/turf/open/floor/carpet/cyan, +/turf/open/floor/carpet/blue, /area/station/ai_monitored/turret_protected/ai_upload) "tvh" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ @@ -58331,19 +57866,14 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "tvk" = ( -/obj/effect/spawner/random/structure/chair_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"tvl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/structure/mineral_door/wood, /obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) +/turf/open/floor/iron/dark/textured, +/area/station/service/abandoned_gambling_den) "tvo" = ( /obj/effect/spawner/random/structure/chair_flipped{ dir = 4 @@ -58360,20 +57890,19 @@ /turf/open/floor/iron/dark, /area/station/security/execution) "tvs" = ( -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 +/obj/effect/turf_decal/tile/blue/full, +/obj/effect/turf_decal/bot, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + location = "Medbay" }, -/area/station/commons/fitness/recreation) +/obj/structure/plasticflaps/opaque, +/turf/open/floor/iron/white/smooth_large, +/area/station/maintenance/starboard/aft) "tvt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/office) -"tvC" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/power/shieldwallgen, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) "tvH" = ( /obj/structure/chair{ dir = 4 @@ -58391,23 +57920,29 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "tvQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ +/obj/structure/cable, +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Art Gallery" +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/table/reinforced/rglass, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science{ + pixel_x = 2; + pixel_y = 4 }, -/turf/open/floor/iron/dark/textured, -/area/station/service/library/artgallery) -"tvS" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/large, -/area/station/engineering/break_room) +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/cup/beaker{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/reagent_containers/dropper, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "tvV" = ( /obj/effect/turf_decal/trimline/purple/filled/corner, /turf/open/floor/iron/white, @@ -58421,6 +57956,10 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/smooth_large, /area/station/security/prison) +"tvY" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "tvZ" = ( /obj/effect/spawner/structure/window, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -58428,7 +57967,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/commons/locker) +"twb" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/central) "twi" = ( +/obj/effect/turf_decal/tile/red/full, /obj/effect/turf_decal/delivery, /obj/structure/disposalpipe/segment{ dir = 4 @@ -58437,18 +57982,8 @@ name = "Security Delivery"; req_access = list("security") }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/security/office) -"twj" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters{ - id = "medical_security_post"; - name = "Security Post Shutters"; - dir = 1 - }, -/turf/open/floor/plating, -/area/station/security/checkpoint/medical) "twl" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -58462,19 +57997,38 @@ }, /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) +"twv" = ( +/obj/structure/table/wood, +/obj/machinery/fax{ + fax_name = "Captain's Office"; + name = "Captain's Fax Machine" + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "twN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/modular_computer/preset/id{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/command/heads_quarters/ce) "twO" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/wood, -/area/station/service/library) -"twQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/effect/turf_decal/tile/yellow/full, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Engineering - Deliveries"; + name = "engineering camera" }, +/turf/open/floor/iron/large, +/area/station/engineering/storage) +"twQ" = ( +/obj/machinery/duct, /turf/open/floor/iron, /area/station/engineering/main) "twS" = ( @@ -58492,14 +58046,27 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "twU" = ( -/obj/machinery/camera/autoname/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Service - Custodial Closet"; + name = "service camera" + }, /obj/structure/table, -/obj/item/storage/box/lights/mixed, -/obj/item/storage/box/lights/mixed, -/obj/item/lightreplacer, -/turf/open/floor/iron/dark/side{ - dir = 1 +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clipboard{ + pixel_x = -3; + pixel_y = 6 }, +/obj/item/pen{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/item/toy/figure/janitor{ + pixel_x = 9 + }, +/turf/open/floor/iron/dark, /area/station/service/janitor) "twW" = ( /obj/structure/extinguisher_cabinet/directional/east, @@ -58517,9 +58084,9 @@ /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 4 }, -/obj/machinery/light_switch/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /obj/machinery/light/directional/east, +/obj/machinery/airalarm/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /turf/open/floor/iron/dark, /area/station/science/server) "txI" = ( @@ -58534,17 +58101,10 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/atmos) "tyt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/generic, -/obj/item/restraints/handcuffs/cable/zipties/used, +/obj/machinery/exodrone_launcher, +/obj/item/exodrone, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"tyA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/station_map/engineering/directional/west, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) +/area/station/cargo/drone_bay) "tyC" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/airalarm/directional/west, @@ -58554,61 +58114,78 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron, /area/station/science/ordnance/office) +"tyF" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder/blue, +/obj/item/pen, +/obj/item/stamp/head/hop, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/hop) "tyG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/airalarm/directional/south, -/obj/structure/table/glass, -/obj/item/emergency_bed{ - pixel_y = 6 - }, -/obj/item/emergency_bed{ - pixel_y = 11 - }, -/obj/item/emergency_bed{ - pixel_y = 13 - }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) "tyX" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/security/bitden) +/obj/structure/closet/crate/hydroponics, +/obj/item/botanical_lexicon, +/obj/item/seeds/tree, +/obj/effect/spawner/random/contraband/prison, +/obj/item/seeds/pumpkin, +/obj/item/seeds/wheat, +/obj/item/seeds/ambrosia, +/obj/item/seeds/grass, +/obj/item/seeds/carrot, +/obj/item/seeds/tomato, +/obj/item/seeds/potato, +/obj/item/seeds/garlic, +/obj/item/seeds/onion, +/obj/item/paper/guides/jobs/hydroponics, +/turf/open/floor/iron/dark, +/area/station/security/prison/garden) "tzc" = ( /obj/effect/spawner/random/engineering/tank, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "tzf" = ( -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) -"tzg" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Chief Engineer's Office" }, -/obj/structure/table/glass, -/obj/item/storage/box/monkeycubes, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/effect/mapping_helpers/airlock/access/all/engineering/ce, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/ce) "tzi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/wood/tile, -/area/station/commons/dorms) +/area/station/commons/dorms/room4) "tzk" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 6 }, -/obj/machinery/firealarm/directional/east, +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, /obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ dir = 1 }, @@ -58617,49 +58194,44 @@ "tzm" = ( /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/hop) -"tzr" = ( -/obj/effect/spawner/random/structure/table, -/obj/item/storage/box/donkpockets/donkpocketteriyaki, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "tzs" = ( -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"tzy" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/sign/departments/chemistry/pharmacy/directional/west, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/obj/machinery/light/directional/east, +/obj/structure/sign/poster/official/state_laws/directional/east, +/obj/machinery/recharge_station, +/obj/effect/landmark/start/cyborg, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "tzN" = ( /obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"tzT" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/closet/toolcloset, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "tzU" = ( -/obj/effect/turf_decal/tile/red/fourcorners, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 + }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, /area/station/security/interrogation) "tzV" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/firealarm/directional/west, +/obj/machinery/status_display/ai/directional/north, +/obj/structure/table/reinforced/rglass, +/turf/open/floor/iron/checker{ dir = 1 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"tzZ" = ( +/area/station/command/heads_quarters/cmo) +"tzZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/machinery/holopad, @@ -58685,28 +58257,31 @@ /obj/effect/turf_decal/trimline/yellow/line{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) -"tAk" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/turf/open/floor/iron/dark/side{ + dir = 8 }, -/obj/item/radio/intercom/directional/east, -/obj/machinery/vending/drugs, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"tAr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/wood, -/area/station/maintenance/starboard/fore) +/area/station/hallway/primary/aft) +"tAI" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) "tAK" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) +"tAZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer4, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "tBh" = ( /obj/effect/turf_decal/box, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -58714,6 +58289,17 @@ }, /turf/open/floor/iron, /area/station/science/ordnance) +"tBl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/sand/plating, +/obj/structure/door_assembly/door_assembly_mai{ + anchored = 1 + }, +/turf/open/floor/plating/airless, +/area/station/asteroid) "tBn" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/camera/autoname/directional/south, @@ -58746,6 +58332,23 @@ pixel_x = -3 }, /obj/item/ammo_box/magazine/m35, +/obj/item/ammo_box/magazine/m35{ + pixel_y = 3; + pixel_x = 3 + }, +/obj/item/ammo_box/magazine/m35{ + pixel_y = 6; + pixel_x = 6 + }, +/obj/item/ammo_box/magazine/m35{ + pixel_y = -6; + pixel_x = -6 + }, +/obj/item/ammo_box/magazine/m35{ + pixel_y = -3; + pixel_x = -3 + }, +/obj/item/ammo_box/magazine/m35, /obj/item/ammo_box/magazine/m35{ pixel_y = 3; pixel_x = 3 @@ -58757,8 +58360,8 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "tBq" = ( -/obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, /obj/structure/bed{ dir = 4 }, @@ -58766,9 +58369,7 @@ dir = 4 }, /obj/effect/landmark/start/janitor, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, +/turf/open/floor/iron/dark, /area/station/service/janitor) "tBy" = ( /obj/effect/turf_decal/siding/wood{ @@ -58784,9 +58385,17 @@ /turf/open/space, /area/station/solars/port/fore) "tBI" = ( -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/commons/fitness/recreation) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"tCb" = ( +/obj/machinery/chem_master/condimaster{ + name = "CondiMaster Neo" + }, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "tCM" = ( /obj/machinery/light/directional/north, /turf/open/floor/iron/dark/side{ @@ -58802,49 +58411,37 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) -"tDa" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/chemistry) -"tDk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +"tDO" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, /turf/open/floor/iron/dark, -/area/station/command/teleporter) +/area/station/ai_monitored/command/nuke_storage) "tDV" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, +/obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron/dark, -/area/station/security/prison/work) +/area/station/security/prison) "tEg" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /obj/machinery/meter, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "tEm" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - id = "chem_factory_shutters"; - name = "Chem Factory Shutter" +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/obj/machinery/firealarm/directional/north, +/obj/machinery/vending/mechcomp, +/turf/open/floor/iron, +/area/station/engineering/main) "tEB" = ( /obj/effect/turf_decal/bot_white, /turf/open/floor/iron, /area/station/cargo/storage) +"tEF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood, +/area/station/service/library) "tEK" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 @@ -58855,6 +58452,18 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron/dark, /area/station/science/breakroom) +"tEP" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured, +/area/station/medical/medbay/aft) "tET" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 6 @@ -58892,6 +58501,9 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "tFs" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, /obj/machinery/firealarm/directional/south, /turf/open/floor/wood, /area/station/security/detectives_office) @@ -58904,24 +58516,14 @@ }, /turf/open/floor/iron/dark, /area/station/security/processing) -"tGl" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/light_switch/directional/east, -/obj/structure/bodycontainer/morgue{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "tGq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 }, -/obj/structure/cable/layer1, +/obj/machinery/camera/directional/west{ + c_tag = "Engineering - Equipment Storage"; + name = "engineering camera" + }, /turf/open/floor/iron, /area/station/engineering/storage) "tGA" = ( @@ -58944,14 +58546,14 @@ /obj/machinery/door/poddoor/shutters/preopen{ id = "hydro_kitchen_shutters"; name = "Hydro-Kitchen Shutters"; - dir = 8 + dir = 4 }, /turf/open/floor/iron/dark/textured, /area/station/service/hydroponics) "tGC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table/reinforced, +/obj/item/forging/billow, /turf/open/floor/wood, /area/station/smithing) "tGD" = ( @@ -58959,10 +58561,14 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 }, +/obj/machinery/camera/directional/north{ + c_tag = "Hallway - Central, Northeast"; + name = "hallway camera" + }, /obj/structure/chair{ dir = 4 }, -/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "tGK" = ( @@ -58984,53 +58590,68 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/duct, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) "tHc" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, /obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/camera/autoname/directional/north, /obj/machinery/light/small/directional/north, +/obj/machinery/firealarm/directional/north, /obj/structure/chair, /obj/effect/landmark/start/assistant, -/obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) +"tHe" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/status_display/ai/directional/north, +/obj/structure/table, +/obj/item/phone{ + pixel_x = -6 + }, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/break_room) +"tHl" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/storage) "tHx" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 9 }, /turf/open/floor/iron, /area/station/engineering/main) -"tHB" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/machinery/vending/wallmed/directional/north, -/obj/item/radio/intercom/directional/east, -/obj/structure/table, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) "tHM" = ( -/obj/structure/chair/stool/directional/north, -/obj/structure/cable, +/obj/machinery/light/directional/west, /turf/open/floor/iron/dark, -/area/station/security/prison/mess) -"tIp" = ( -/obj/structure/flora/rock/pile/jungle/style_random, -/mob/living/carbon/human/species/monkey, -/turf/open/floor/grass, -/area/station/medical/virology) +/area/station/security/prison/workout) "tIw" = ( -/obj/structure/sign/painting/library{ - pixel_y = -32 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/wood, -/area/station/service/library) +/obj/machinery/light/small/directional/north, +/obj/item/radio/intercom/directional/north, +/obj/machinery/chem_dispenser, +/obj/machinery/button/door/directional/west{ + id = "apothecary_ter_desk_shutters"; + name = "Tertiary Desk Shutters Control"; + req_access = list("pharmacy") + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "tIF" = ( /obj/effect/turf_decal/trimline/dark_red/filled/line, /obj/effect/turf_decal/trimline/dark_red/corner{ @@ -59046,15 +58667,10 @@ "tIU" = ( /turf/open/floor/iron/dark/smooth_large, /area/station/maintenance/department/security) -"tJd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +"tJc" = ( +/obj/effect/turf_decal/vg_decals/atmos/nitrous_oxide, +/turf/open/floor/engine/n2o, +/area/station/engineering/atmos) "tJu" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /obj/structure/cable, @@ -59096,20 +58712,6 @@ /obj/structure/flora/bush/jungle/c/style_random, /turf/open/floor/grass, /area/station/hallway/primary/central) -"tJO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) "tJS" = ( /obj/effect/turf_decal/trimline/green/filled/warning{ dir = 1 @@ -59117,33 +58719,43 @@ /obj/effect/turf_decal/trimline/green/warning, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) +"tJX" = ( +/obj/machinery/light/directional/west, +/obj/structure/table/reinforced/rglass, +/obj/item/wrench/medical, +/obj/item/storage/pill_bottle/epinephrine{ + pixel_x = 8; + pixel_y = 5 + }, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/hypospray/medipen/morphine{ + pixel_y = 12 + }, +/obj/item/reagent_containers/hypospray/medipen/morphine{ + pixel_y = 6 + }, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "tJZ" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/molten_object/large, -/turf/open/floor/wood, -/area/station/smithing) -"tKm" = ( -/obj/structure/lattice/catwalk, /obj/structure/cable, -/obj/structure/transit_tube/crossing, +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/stone, +/area/station/smithing) +"tKe" = ( +/obj/effect/spawner/structure/window, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space, -/area/space/nearstation) -"tKn" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) +/turf/open/floor/plating, +/area/station/service/library/lounge) "tKp" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 9 }, /obj/effect/turf_decal/trimline/dark_red/corner, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "tKr" = ( @@ -59153,17 +58765,6 @@ /obj/effect/landmark/start/shaft_miner, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"tKG" = ( -/obj/structure/rack, -/obj/effect/spawner/random/engineering/toolbox{ - pixel_y = 6 - }, -/obj/effect/spawner/random/engineering/toolbox, -/obj/effect/spawner/random/engineering/toolbox{ - pixel_y = -6 - }, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "tKL" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 @@ -59199,14 +58800,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/wood, /area/station/commons/vacant_room/office) -"tLt" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/large, -/area/station/engineering/break_room) "tLu" = ( /obj/machinery/light/small/directional/west, /obj/effect/spawner/random/structure/table_or_rack, @@ -59220,31 +58813,47 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "tLM" = ( -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) "tLN" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/table/glass, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 6 - }, -/obj/item/wrench/medical, -/obj/item/gun/syringe, -/turf/open/floor/iron/cafeteria{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/area/station/command/heads_quarters/cmo) +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "tLT" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, /obj/machinery/firealarm/directional/east, /obj/structure/sink/directional/west, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/science/research) +"tMe" = ( +/obj/machinery/light/directional/east, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) +"tMn" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/break_room) "tMr" = ( /obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/iron/dark, @@ -59258,8 +58867,8 @@ /area/station/commons/toilet/restrooms) "tMu" = ( /obj/structure/lattice/catwalk, -/obj/item/stack/cable_coil, /obj/structure/sign/warning/electric_shock/directional/west, +/obj/item/stack/cable_coil, /turf/open/space/basic, /area/station/solars/port/aft) "tMy" = ( @@ -59267,37 +58876,42 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/structure/disposalpipe/sorting/mail{ + dir = 1 }, +/obj/effect/mapping_helpers/mail_sorting/science/xenobiology, /turf/open/floor/iron/white, /area/station/science/xenobiology) "tMU" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "qm_privacy"; - dir = 8 +/obj/machinery/door/poddoor/shutters{ + id = "qm_office_shutters"; + name = "QM's Office Shutters"; + dir = 4 }, /turf/open/floor/plating, /area/station/command/heads_quarters/qm) +"tMY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/service/abandoned_gambling_den) "tNd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "engineering"; + name = "Engineering Blast Door" }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 +/obj/machinery/door/poddoor/shutters{ + id = "ce_office_shutters"; + name = "CE's Office Shutters"; + dir = 8 }, -/obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"tNo" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/engine, -/area/station/medical/cryo) +/area/station/command/heads_quarters/ce) "tNr" = ( /turf/open/misc/asteroid/airless, /area/station/asteroid) @@ -59306,7 +58920,7 @@ dir = 1 }, /obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "tNG" = ( @@ -59329,35 +58943,21 @@ /turf/open/floor/iron, /area/station/science/ordnance) "tNO" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/camera/autoname/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Security - Detective's Office"; + name = "security camera" + }, +/obj/machinery/light/small/directional/south, /turf/open/floor/carpet/red, /area/station/security/detectives_office) -"tNQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/gibs/old, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +"tNW" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "tOb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"tOd" = ( -/obj/structure/light_construct/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/construction) -"tOe" = ( -/obj/item/radio/intercom/directional/west, -/obj/structure/tank_holder/oxygen, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) +/obj/effect/turf_decal/tile/blue/fourcorners, +/turf/open/floor/iron/white, +/area/station/medical/office) "tOj" = ( /obj/effect/turf_decal/trimline/blue/filled/warning, /obj/effect/turf_decal/trimline/blue/warning{ @@ -59369,6 +58969,12 @@ /obj/structure/grille, /turf/open/floor/plating/airless, /area/space/nearstation) +"tOw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/atmos/office) "tOB" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -59379,23 +58985,19 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/duct, /obj/machinery/door/airlock/maintenance{ name = "Custodial Closet Maintenance" }, /obj/effect/mapping_helpers/airlock/access/all/service/janitor, -/obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/service/janitor) "tOJ" = ( /turf/closed/wall/r_wall, /area/station/science/lab) -"tOY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/station/service/library) "tPs" = ( /obj/effect/turf_decal/trimline/brown/filled/warning, /obj/machinery/conveyor/inverted{ @@ -59410,20 +59012,25 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating/reinforced, +/turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "tPw" = ( -/obj/structure/table/wood/poker, -/obj/effect/spawner/random/entertainment/money{ - pixel_y = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/spawner/random/entertainment/money, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/carpet/green, -/area/station/maintenance/starboard/aft) -"tPP" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/door/airlock/grunge{ + name = "Gambling Den" + }, +/turf/open/floor/iron/dark/textured, +/area/station/service/abandoned_gambling_den) +"tPP" = ( /obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/showroomfloor, /area/station/command/heads_quarters/rd) "tPZ" = ( @@ -59437,48 +59044,56 @@ /obj/machinery/door/airlock/security/glass{ name = "Visitation" }, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/dark/textured, /area/station/security/prison/visit) -"tQa" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/station/engineering/transit_tube) "tQg" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) "tQl" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) -"tQm" = ( -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/carpet/cyan, -/area/station/medical/break_room) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "tQo" = ( /obj/machinery/light/directional/west, -/obj/structure/kitchenspike, +/obj/machinery/gibber, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) +"tQt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/break_room) +"tQC" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning, +/obj/structure/disposalpipe/junction, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark/side, +/area/station/engineering/break_room) "tQD" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"tQF" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/table/reinforced, -/obj/item/disk/nuclear, +"tQI" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/machinery/light/small/directional/south, +/obj/machinery/computer/security{ + dir = 1 + }, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/security/checkpoint/engineering) "tQJ" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -59491,7 +59106,7 @@ }, /obj/effect/turf_decal/bot, /obj/machinery/vending/security, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "tQS" = ( /obj/machinery/power/apc/auto_name/directional/north, @@ -59508,8 +59123,8 @@ /area/station/maintenance/department/cargo) "tRj" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/table/glass, /obj/machinery/light/directional/east, +/obj/item/kirbyplants/photosynthetic, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "tRo" = ( @@ -59521,33 +59136,23 @@ /obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, /obj/structure/disposalpipe/segment, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/service/chapel/office) "tRs" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "Air to Mix" }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) -"tRt" = ( -/obj/structure/table/wood/fancy/cyan, -/obj/machinery/light_switch/directional/south, -/obj/item/reagent_containers/cup/glass/bottle/kahlua, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = -5; - pixel_y = 3 +"tRD" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = 10; - pixel_y = 5 +/obj/structure/chair/sofa/bench{ + dir = 4 }, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) -"tRz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) "tRE" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -59558,26 +59163,21 @@ }, /turf/open/floor/iron/white, /area/station/science/robotics/lab) -"tRM" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/camera/directional/west{ - c_tag = "Engineering - Atmospherics, Northwest"; - name = "engineering camera" - }, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) "tRU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, /area/station/security/prison/safe) "tRW" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/machinery/light/small/directional/north, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/machinery/computer/exodrone_control_console, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "tRX" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 10 @@ -59604,6 +59204,15 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"tSA" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/light/small/directional/south, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/iron/dark/side, +/area/station/engineering/break_room) "tSE" = ( /obj/structure/cable/layer1, /turf/open/floor/iron/dark/smooth_large, @@ -59638,14 +59247,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/white, /area/station/science/research) -"tTs" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "tTx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -59676,6 +59277,12 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/science/robotics/lab) +"tUl" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "tUz" = ( /obj/docking_port/stationary/random{ name = "lavaland"; @@ -59685,43 +59292,35 @@ /turf/open/space, /area/space) "tUA" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/obj/item/radio/intercom/directional/south, +/obj/structure/filingcabinet, /turf/open/floor/iron/dark, -/area/station/command/meeting_room) +/area/station/security/checkpoint/medical) "tUG" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/light/directional/south, -/obj/machinery/computer/operating{ +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, +/obj/machinery/firealarm/directional/west{ + pixel_y = -5 + }, +/obj/structure/bodycontainer/morgue, /turf/open/floor/iron/dark, -/area/station/medical/exam_room) +/area/station/medical/morgue) "tUH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "tUK" = ( +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, /obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ dir = 1 }, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"tUT" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/engineering/break_room) "tUV" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 @@ -59729,29 +59328,14 @@ /obj/effect/turf_decal/trimline/dark_red/corner, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"tVt" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +"tUZ" = ( +/obj/machinery/vending/wardrobe/curator_wardrobe, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "tVz" = ( /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/warehouse) -"tVC" = ( -/obj/structure/rack/shelf, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/head/helmet/toggleable/riot{ - pixel_y = 6 - }, -/obj/effect/turf_decal/delivery/blue, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/blueshield) "tVD" = ( /obj/machinery/duct, /turf/open/floor/engine, @@ -59778,9 +59362,30 @@ /obj/structure/chair/wood{ dir = 4 }, -/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/service/chapel) +"tWc" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "med_priv_1"; + name = "Privacy Shutters"; + dir = 4 + }, +/turf/open/floor/plating, +/area/station/medical/patients_rooms/room_a) +"tWp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/firealarm/directional/east{ + pixel_y = 6 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = -4 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) "tWv" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -59797,19 +59402,13 @@ /turf/open/floor/iron/dark, /area/station/security/brig) "tWy" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"tWK" = ( +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) -"tWN" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/obj/structure/railing{ - dir = 4; - layer = 4.1 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/area/station/command/bridge) "tWP" = ( /obj/machinery/duct, /obj/effect/turf_decal/stripes/line{ @@ -59841,6 +59440,7 @@ }, /obj/effect/turf_decal/trimline/red/line, /obj/machinery/camera/autoname/directional/north, +/obj/structure/extinguisher_cabinet/directional/north, /obj/structure/table, /obj/item/storage/briefcase/lawyer, /turf/open/floor/iron/dark, @@ -59849,12 +59449,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/science/ordnance/office) -"tXk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/frame/machine, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "tXu" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ @@ -59872,15 +59466,6 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"tXP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/chem_heater/withbuffer, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) "tYb" = ( /obj/effect/turf_decal/trimline/neutral/warning, /obj/effect/turf_decal/trimline/neutral/filled/warning{ @@ -59897,6 +59482,12 @@ "tYl" = ( /turf/open/floor/iron/dark/corner, /area/station/commons/dorms) +"tYy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/storage) "tYz" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 @@ -59904,15 +59495,25 @@ /obj/effect/turf_decal/trimline/yellow/line{ dir = 8 }, -/obj/structure/sign/departments/engineering/directional/east, /obj/machinery/light/directional/east, -/turf/open/floor/iron, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, /area/station/hallway/primary/aft) -"tYE" = ( -/obj/machinery/light_switch/directional/east, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) +"tYG" = ( +/obj/machinery/firealarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"tYH" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/table/reinforced/rglass, +/obj/item/paper_bin, +/obj/item/folder/white, +/obj/item/pen, +/turf/open/floor/iron/white, +/area/station/medical/office) "tYO" = ( /obj/effect/turf_decal/trimline/dark_green/filled/line{ dir = 4 @@ -59922,15 +59523,11 @@ "tYU" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos/office) -"tZa" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/shower/directional/west, -/turf/open/floor/iron/textured, -/area/station/engineering/main) "tZd" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron, +/obj/structure/table, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, /area/station/maintenance/starboard/aft) "tZe" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -59940,8 +59537,10 @@ dir = 8 }, /obj/machinery/light/directional/east, -/obj/machinery/status_display/evac/directional/east, -/turf/open/floor/iron, +/obj/machinery/status_display/ai/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, /area/station/hallway/primary/aft) "tZi" = ( /obj/effect/decal/cleanable/cobweb, @@ -59949,24 +59548,27 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "tZl" = ( -/obj/structure/table/wood, -/obj/item/storage/photo_album/prison, +/obj/structure/chair/plastic{ + dir = 8 + }, /turf/open/floor/wood, /area/station/security/prison/rec) "tZr" = ( /turf/closed/wall, /area/station/smithing) +"tZy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/engine_smes) +"tZE" = ( +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "tZH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 4 }, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/obj/structure/cable/layer1, /turf/open/floor/iron, /area/station/engineering/storage) "tZU" = ( @@ -59985,7 +59587,9 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, /area/station/hallway/primary/aft) "uan" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -60012,50 +59616,32 @@ /turf/open/floor/iron/dark, /area/station/science/breakroom) "uaC" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/service/library) -"uaL" = ( -/obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"uaO" = ( -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/checker{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/area/station/command/heads_quarters/cmo) "ubp" = ( /obj/structure/table, /turf/open/floor/iron/dark, /area/station/security/prison/visit) -"ubz" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/computer/records/medical, -/turf/open/floor/iron, -/area/station/medical/paramedic) "ubE" = ( -/obj/machinery/status_display/evac/directional/north, /obj/machinery/camera/autoname/directional/north, /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/iron/dark/side{ dir = 1 }, /area/station/commons/fitness/recreation) -"uch" = ( -/obj/effect/mapping_helpers/burnt_floor, +"ubF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/wood{ + dir = 1 + }, /turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/area/station/service/abandoned_gambling_den) "uck" = ( /obj/machinery/corral_corner{ mapping_id = "3" @@ -60068,6 +59654,11 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"ucn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mob_spawn/corpse/human/assistant, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "ucr" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -60084,15 +59675,13 @@ /turf/open/floor/iron/dark, /area/station/service/chapel/office) "ucG" = ( -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light_switch/directional/north{ - pixel_x = -8 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/light/directional/east, +/obj/structure/sign/poster/official/random/directional/east, +/obj/structure/closet/secure_closet/medical3, +/obj/item/wrench/medical, +/turf/open/floor/iron/white, +/area/station/medical/office) "ucJ" = ( /turf/closed/wall, /area/station/maintenance/disposal) @@ -60108,6 +59697,14 @@ "ucP" = ( /turf/closed/wall, /area/station/cargo/office) +"ucY" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/modular_computer/preset/civilian{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "udb" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -60134,16 +59731,14 @@ /obj/structure/railing, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"ude" = ( -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/virology) +"udk" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "udl" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table, -/obj/item/screwdriver, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/port/aft) "udm" = ( @@ -60158,49 +59753,14 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 }, +/obj/machinery/light/small/directional/north, +/obj/structure/extinguisher_cabinet/directional/north, /obj/machinery/airalarm/directional/west, /obj/machinery/computer/security/labor{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/security/processing) -"udQ" = ( -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"ueo" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Engineering - MiniSat Transit Pod Access, Internal"; - name = "engineering camera"; - network = list("ss13","rd","xeno_pens"); - start_active = 1 - }, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) -"uer" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "MiniSat Pod Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/minisat, -/obj/structure/cable, -/obj/effect/landmark/navigate_destination/minisat_access_ai, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "aisat-pathatmos-maint-passthrough" - }, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/transit_tube) "uet" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 8 @@ -60213,19 +59773,17 @@ "uey" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/bot, -/obj/machinery/airalarm/directional/north, /obj/machinery/vending/modularpc, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) "ueH" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) -"ueL" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office) "ufg" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrous_input{ dir = 8 @@ -60241,9 +59799,6 @@ dir = 1 }, /area/station/commons/dorms) -"ufn" = ( -/turf/closed/wall, -/area/station/medical/paramedic) "ufq" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 6 @@ -60256,19 +59811,6 @@ "ufs" = ( /turf/closed/wall/r_wall, /area/station/engineering/break_room) -"ufu" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_y = 4 - }, -/obj/item/pen{ - pixel_y = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/customs/auxiliary) "ufy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -60290,9 +59832,10 @@ /obj/machinery/door/window/right/directional/north{ name = "Hydroponics Desk" }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "hydroponics_shutters"; - name = "Hydroponics Shutters" + name = "Hydroponics Shutters"; + dir = 1 }, /obj/structure/desk_bell{ pixel_x = 7; @@ -60316,13 +59859,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"ugi" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/virology) "ugj" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -60334,6 +59870,18 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark/textured, /area/station/hallway/secondary/entry) +"ugm" = ( +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "ugn" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -60346,29 +59894,31 @@ name = "Isolation Cell"; id_tag = "iso_cell_hall_bolt" }, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/effect/mapping_helpers/airlock/access/all/security/general, /obj/machinery/duct, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) -"ugy" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/camera/autoname/directional/south, -/obj/item/radio/intercom/directional/south, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/iron/white, -/area/station/medical/break_room) +/area/station/security/prison/safe) +"ugt" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/space, +/area/space/nearstation) "ugC" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/light/directional/south, /obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 5 +/obj/item/storage/toolbox/electrical{ + pixel_y = 7 }, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 +/obj/item/storage/toolbox/mechanical, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -3 }, /turf/open/floor/iron, /area/station/engineering/storage) @@ -60391,30 +59941,16 @@ /obj/effect/landmark/navigate_destination/eva, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/command/storage/eva) -"ugN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/chem_master, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) -"ugS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light/small/directional/north, -/obj/item/radio/intercom/directional/north, -/obj/machinery/chem_dispenser, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) +"ugM" = ( +/turf/closed/wall, +/area/station/commons/dorms/room4) "ugZ" = ( /obj/machinery/requests_console/directional/east{ - anon_tips_receiver = 1; - assistance_requestable = 1; department = "Telecomms Admin"; name = "Telecomms Requests Console" }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, /turf/open/floor/iron/dark/side{ dir = 4 }, @@ -60435,21 +59971,11 @@ /turf/closed/wall, /area/station/hallway/secondary/entry) "uhv" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/table/glass, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/clothing/neck/stethoscope, -/obj/item/clothing/neck/stethoscope, -/obj/item/storage/belt/medical, -/obj/item/storage/belt/medical, -/obj/machinery/door/window/left/directional/west{ - name = "Miscellaneous Medical Supplies"; - req_access = list("medical") - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "uhz" = ( /obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, /turf/closed/wall/r_wall, @@ -60470,11 +59996,25 @@ /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/entry) "uhG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = -5 + }, +/obj/structure/bed/pod{ + desc = "An old medical bed, just waiting for replacement with something up to date."; + name = "medical bed"; + dir = 4 }, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) +"uhY" = ( +/obj/effect/turf_decal/box, +/obj/machinery/holopad, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/pharmacy) "uib" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -60499,22 +60039,24 @@ dir = 8 }, /obj/machinery/camera/directional/west{ - c_tag = "Science - Xenobiology, Pen 6"; + c_tag = "Science - Xenobiology, Pen 5"; name = "xenobiology camera"; network = list("ss13","rd","xeno") }, /turf/open/floor/engine, /area/station/science/xenobiology) "uio" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/closet/emcloset, +/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "uir" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/filingcabinet, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) +/obj/machinery/newscaster/directional/west, +/obj/machinery/modular_computer/preset/civilian, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/station/engineering/atmos/office) "uis" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -60525,64 +60067,36 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"uit" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/table/glass, -/obj/item/paper_bin{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/pen/red{ - pixel_x = -4 - }, -/obj/item/book/manual/wiki/medicine, -/obj/item/book/manual/wiki/infections{ - pixel_x = 10; - pixel_y = 2 - }, -/obj/item/reagent_containers/syringe/antiviral, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/hand_labeler, -/obj/item/radio/headset/headset_med, -/obj/machinery/requests_console/auto_name/directional/west{ - department = "Virology"; - name = "Pathology Requests Console"; - receive_ore_updates = 1 - }, -/obj/item/clothing/glasses/science, -/obj/item/extrapolator, -/turf/open/floor/iron/white, -/area/station/medical/virology) "uiu" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/hallway/secondary/entry) -"uiv" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/storage/tech) "uiA" = ( /obj/item/food/grown/banana, /turf/open/floor/grass, /area/station/hallway/primary/central) "uiJ" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"uiS" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 + dir = 5 }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = -5 + }, +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/iron/white, +/area/station/medical/patients_rooms/room_a) +"uiM" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 + }, +/obj/machinery/airalarm/directional/east, +/obj/structure/reagent_dispensers/wall/peppertank/directional/north, +/obj/structure/closet/secure_closet/security/engine/blueshirt, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "uiW" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -60593,18 +60107,14 @@ /area/station/cargo/lobby) "uiX" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/east, -/turf/open/floor/wood, +/turf/open/floor/stone, /area/station/smithing) "ujk" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos/hfr_room) "ujm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/telecomms/bus/preset_three, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/processor/preset_one, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) "ujt" = ( /obj/effect/turf_decal/trimline/green/filled/line{ @@ -60634,11 +60144,15 @@ /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) "ujV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=AIE"; + location = "AftH" }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine) +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "ujY" = ( /turf/open/floor/circuit, /area/station/ai_monitored/command/nuke_storage) @@ -60663,26 +60177,15 @@ }, /turf/open/floor/engine/air, /area/station/engineering/atmos) -"ukj" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/carpet/cyan, -/area/station/medical/break_room) -"ukk" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +"ukr" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Chemistry Factory" +/obj/effect/turf_decal/trimline/green/line{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "ukt" = ( /obj/effect/turf_decal/trimline/red/corner{ dir = 8 @@ -60690,7 +60193,6 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/chair, /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, @@ -60712,6 +60214,14 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/visit) +"ukI" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/airalarm/directional/south, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/item/kirbyplants/random, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "ukT" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -60734,100 +60244,43 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"ukW" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/break_room) "ukY" = ( -/obj/structure/table/wood, -/obj/item/device/walkman{ - pixel_y = 7; - pixel_x = -8 - }, -/obj/item/device/walkman{ - pixel_y = 7; - pixel_x = -8 - }, -/obj/item/device/walkman{ - pixel_y = 7; - pixel_x = -8 - }, -/obj/item/device/walkman{ - pixel_y = 7; - pixel_x = -8 - }, -/obj/item/device/walkman{ - pixel_y = 7; - pixel_x = -8 - }, -/obj/item/device/walkman{ - pixel_y = 7; - pixel_x = -8 - }, -/obj/item/device/walkman{ - pixel_y = 7; - pixel_x = -8 - }, -/obj/item/device/walkman{ - pixel_y = 7; - pixel_x = -8 - }, -/obj/item/device/walkman{ - pixel_y = 7; - pixel_x = -8 - }, -/obj/item/device/cassette_tape/friday{ - pixel_y = 2; - pixel_x = 9 - }, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) -"ukZ" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "ula" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"ulf" = ( -/obj/effect/turf_decal/stripes/line{ +"ulb" = ( +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) +"ulf" = ( +/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/airlock/engineering{ - name = "Auxiliary Construction Storage" + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering Break Room" }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/break_room) "ulm" = ( /turf/open/floor/carpet, /area/station/maintenance/starboard/fore) -"ulr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/ghost_critter_spawn, -/turf/open/floor/iron, -/area/station/commons/dorms) "ulO" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -60839,12 +60292,6 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) -"ulQ" = ( -/obj/machinery/light/small/broken/directional/west, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/clothing/gloves, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "ulR" = ( /obj/structure/chair/stool/directional/north, /obj/effect/landmark/start/atmospheric_technician, @@ -60858,26 +60305,12 @@ dir = 4 }, /obj/machinery/camera/directional/east{ - c_tag = "Science - Xenobiology, Pen 5"; + c_tag = "Science - Xenobiology, Pen 6"; name = "xenobiology camera"; network = list("ss13","rd","xeno") }, /turf/open/floor/engine, /area/station/science/xenobiology) -"ulW" = ( -/obj/machinery/door/airlock/maintenance, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "umd" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -60885,7 +60318,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/fore) "ume" = ( /obj/effect/turf_decal/stripes/line{ @@ -60913,11 +60346,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"umG" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "umJ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -60933,14 +60361,12 @@ /turf/open/floor/iron/dark, /area/station/security/prison) "umO" = ( -/obj/structure/flora/grass/jungle/b/style_random, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/leafy, -/mob/living/basic/butterfly, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/grass, -/area/station/command/bridge) +/obj/structure/chair/sofa/right/brown, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "umP" = ( /obj/structure/sign/poster/official/do_not_question/directional/east, /obj/machinery/cryopod{ @@ -60954,18 +60380,6 @@ /obj/effect/mapping_helpers/iannewyear, /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/hop) -"une" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/closet/l3closet/virology, -/turf/open/floor/iron/white, -/area/station/medical/virology) "unj" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, @@ -60997,15 +60411,27 @@ /turf/open/floor/wood, /area/station/commons/vacant_room/office) "uol" = ( -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "uoo" = ( /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"uoq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "uou" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible/layer4, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 4 + }, /turf/open/floor/catwalk_floor, /area/station/engineering/atmos) "uov" = ( @@ -61021,55 +60447,62 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/science) "uoF" = ( /obj/machinery/space_heater, -/turf/open/floor/plating, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/security/prison) "uoH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /obj/structure/fans/tiny, /obj/machinery/door/poddoor/massdriver_chapel, /turf/open/floor/iron/dark/textured_large, /area/station/service/chapel/funeral) "uoX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/obj/structure/foamedmetal, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "upb" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/library) -"upi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/machinery/door/morgue{ + name = "Curator's Study"; + req_access = list("library") }, -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/dark/textured, +/area/station/service/library/printer) +"upt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/chair_flipped{ dir = 8 }, -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/xenobio, -/obj/structure/liquid_barrier, /turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) -"upz" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/defibrillator_mount/directional/east, -/obj/machinery/computer/operating{ - dir = 8 +/area/station/maintenance/department/engine/atmos) +"uqh" = ( +/obj/machinery/light/small/built/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"uql" = ( +/obj/structure/window/spawner/directional/south, +/obj/machinery/computer/atmos_alert{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/surgery) +/turf/open/floor/iron, +/area/station/engineering/atmos/office) "uqn" = ( /obj/machinery/atmospherics/components/binary/pump/off/supply/hidden{ dir = 1 @@ -61087,9 +60520,24 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) -"uqM" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/dirt, +"uqz" = ( +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) +"uqE" = ( +/obj/effect/turf_decal/tile/blue/full, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/medbay/central) +"uqM" = ( +/obj/machinery/light/small/directional/east, /obj/structure/reagent_dispensers/plumbed, /turf/open/floor/plating, /area/station/maintenance/port) @@ -61105,38 +60553,36 @@ }, /area/station/service/hydroponics/garden) "urb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/light_switch/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark_red/arrow_ccw{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "ure" = ( -/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/station_map/directional/east, /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/service/chapel) -"urh" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "urk" = ( /obj/structure/table/wood, /obj/item/newspaper{ pixel_x = 8; pixel_y = 10 }, -/obj/item/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 +/obj/item/flashlight/lamp{ + pixel_y = 3 }, /turf/open/floor/carpet/red, /area/station/commons/vacant_room/office) @@ -61145,21 +60591,31 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_y = 3 - }, -/obj/effect/spawner/random/bureaucracy/folder{ - pixel_y = 5 - }, -/obj/item/pen{ - pixel_y = 5 - }, +/obj/item/paper_bin, +/obj/item/folder, +/obj/item/pen, /turf/open/floor/wood, /area/station/security/prison/rec) "urn" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/status_display/ai/directional/east, +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) +"urs" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) "urt" = ( /obj/item/shard{ icon_state = "medium" @@ -61169,15 +60625,24 @@ /area/station/maintenance/port/fore) "uru" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"urJ" = ( +"urK" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/light/small/directional/south, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/iron/white, +/area/station/medical/cryo) +"urM" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/structure/chair_flipped, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/starboard/aft) "urV" = ( /obj/structure/table/reinforced, /obj/item/food/piedough, @@ -61189,27 +60654,27 @@ "urW" = ( /turf/open/floor/iron/dark, /area/station/security/prison/workout) -"urZ" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/machinery/smartfridge/chemistry/preloaded, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry) "usd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/decal/cleanable/oil/slippery, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/iron, /area/station/maintenance/department/electrical) "usg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) +"uso" = ( +/obj/machinery/light/directional/south, +/obj/structure/bookcase/random/reference, +/turf/open/floor/wood, +/area/station/service/library) "usv" = ( /obj/effect/turf_decal/trimline/brown/filled/warning, /turf/open/floor/iron/dark/side, @@ -61221,10 +60686,20 @@ /obj/structure/cable/layer3, /turf/open/floor/engine, /area/station/ai_monitored/command/storage/satellite) +"utc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "uth" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/machinery/light/directional/west, -/obj/structure/sign/poster/official/random/directional/west, +/obj/machinery/flasher/directional/west{ + id = "AI" + }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "utj" = ( @@ -61241,21 +60716,10 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) "utw" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/dark_blue/line, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) -"utD" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/iv_drip, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/computer/records/medical, +/turf/open/floor/iron, +/area/station/medical/paramedic) "utE" = ( /obj/effect/turf_decal/tile/green/half/contrasted, /obj/machinery/light/directional/north, @@ -61278,34 +60742,14 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark/textured, /area/station/security/prison) -"utO" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/light/directional/north, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) "utT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/light/directional/north, -/obj/item/radio/intercom/directional/west, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) -"utV" = ( -/obj/structure/table/optable{ - desc = "A cold, hard place for your final rest."; - name = "Morgue Slab" +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/light/directional/south, +/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark, -/area/station/medical/morgue) +/area/station/hallway/primary/central) "uuh" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/guillotine, @@ -61314,7 +60758,7 @@ "uui" = ( /obj/machinery/light/directional/west, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "uuj" = ( /obj/effect/turf_decal/tile/neutral{ @@ -61327,17 +60771,23 @@ /area/station/ai_monitored/command/storage/eva) "uum" = ( /obj/effect/turf_decal/tile/red/fourcorners, +/obj/machinery/camera/directional/west{ + c_tag = "Security - Checkpoint, Departures"; + name = "security camera" + }, +/obj/machinery/requests_console/directional/west{ + department = "Theatre"; + name = "Theater Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, /obj/machinery/vending/wardrobe/sec_wardrobe, -/obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/dark, /area/station/security/checkpoint/escape) "uut" = ( -/obj/effect/spawner/random/maintenance, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/area/station/maintenance/port/aft) "uuA" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, /obj/machinery/doppler_array{ dir = 4 }, @@ -61355,8 +60805,9 @@ id_tag = "dorm_6"; name = "Dorm 6" }, +/obj/structure/cable, /turf/open/floor/iron/dark/textured, -/area/station/commons/dorms) +/area/station/commons/dorms/room6) "uuG" = ( /turf/open/floor/eighties/red, /area/station/service/theater) @@ -61367,24 +60818,62 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "uvm" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Library - Private Study"; - dir = 9; - name = "library camera" - }, -/obj/item/kirbyplants/random, -/turf/open/floor/wood, -/area/station/service/library/private) -"uvN" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners{ +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "cmo_desk_shutters"; + name = "Desk Shutters"; dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/ghost_critter_spawn, -/turf/open/floor/iron/cafeteria, -/area/station/commons/dorms/laundry) +/obj/structure/table, +/obj/item/folder/blue{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/folder/white, +/obj/item/folder/blue{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/iron/dark/side, +/area/station/command/heads_quarters/cmo) +"uvI" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/table/reinforced/rglass, +/obj/machinery/door/window/left/directional/south{ + name = "Miscellaneous Medical Supplies"; + req_access = list("medical") + }, +/obj/item/emergency_bed{ + pixel_y = 7; + pixel_x = -9 + }, +/obj/item/emergency_bed{ + pixel_y = 14; + pixel_x = -9 + }, +/obj/item/emergency_bed{ + pixel_y = 21; + pixel_x = -9 + }, +/obj/item/wheelchair{ + pixel_x = 9 + }, +/obj/item/wheelchair{ + pixel_x = 9; + pixel_y = 5 + }, +/obj/item/wheelchair{ + pixel_x = 9; + pixel_y = 10 + }, +/turf/open/floor/iron/white, +/area/station/medical/storage) +"uvR" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "uvU" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -61394,6 +60883,11 @@ /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/iron/dark, /area/station/science/breakroom) +"uvW" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/security/brig) "uwd" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -61414,16 +60908,6 @@ /obj/effect/landmark/start/security_assistant, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"uwq" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/chair/office/light{ - dir = 1 - }, -/obj/effect/landmark/start/chief_medical_officer, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) "uwr" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -61462,11 +60946,17 @@ }, /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai) -"uwx" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/break_room) +"uww" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/airlock/maintenance{ + name = "Curator's Study Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/library, +/turf/open/floor/plating, +/area/station/service/library/printer) "uwJ" = ( /obj/effect/turf_decal/tile/green/anticorner/contrasted, /obj/structure/table, @@ -61474,28 +60964,19 @@ /obj/effect/spawner/random/maintenance/three, /turf/open/floor/iron, /area/station/maintenance/port) -"uxh" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/structure/chair/office/light{ - dir = 1 +"uwY" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/effect/landmark/start/captain, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"uxl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/engineering/break_room) +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "uxx" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/table/reinforced, /obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table/reinforced, /obj/item/reagent_containers/cup/glass/mug/coco{ pixel_x = 8; pixel_y = 8 @@ -61506,49 +60987,51 @@ /obj/structure/reagent_dispensers/plumbed{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, /area/station/security/prison) "uxM" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "N2O Outlet Pump" - }, /obj/effect/turf_decal/tile/red{ dir = 4 }, /obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"uyh" = ( -/obj/structure/cable, -/obj/structure/chair/office/light{ - dir = 4 +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "N2O Outlet Pump" }, -/obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) +/area/station/engineering/atmos) "uyr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/rack, +/obj/effect/spawner/random/engineering/toolbox, +/turf/open/floor/iron, /area/station/maintenance/starboard/aft) "uyw" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"uyC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/ghost_critter_spawn, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "uyP" = ( /obj/structure/lattice, /obj/structure/sign/warning/secure_area/directional/south, /turf/open/space, /area/space/nearstation) -"uyQ" = ( +"uyR" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/defibrillator_mount/directional/south, /turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/area/station/medical/exam_room) "uyU" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -61564,28 +61047,38 @@ /obj/machinery/space_heater, /turf/open/floor/iron/dark, /area/station/security/execution) -"uze" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/construction) +"uzl" = ( +/obj/machinery/holopad, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) "uzn" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /turf/closed/wall/r_wall, /area/station/science/ordnance/burnchamber) +"uzs" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "uzN" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, /obj/effect/mapping_helpers/apc/cell_5k, -/obj/structure/chair{ - dir = 1 - }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"uzT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"uAb" = ( +/obj/structure/mirror/directional/north, +/obj/structure/sink/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "uAg" = ( /obj/machinery/the_singularitygen/tesla, /turf/open/floor/plating, @@ -61609,36 +61102,28 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "uAy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/broadcaster/preset_right, +/turf/open/floor/circuit/telecomms, /area/station/tcommsat/server) +"uAC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "uAL" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/table/wood, -/obj/item/storage/crayons, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/machinery/light/floor/has_bulb, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "uAP" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on, /turf/open/floor/engine, /area/station/science/xenobiology) -"uBk" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "Science - Old Exploration Dock"; - name = "science camera"; - network = list("ss13","rd") - }, -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) "uBt" = ( /obj/structure/sign/poster/random/directional/west, /obj/effect/decal/cleanable/dirt, @@ -61647,6 +61132,14 @@ "uBC" = ( /turf/open/floor/iron, /area/station/cargo/lobby) +"uBD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/prison/work) "uBE" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -61660,15 +61153,29 @@ /obj/machinery/newscaster/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"uBL" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 +"uBG" = ( +/obj/machinery/light/directional/east, +/obj/machinery/button/door/directional/east{ + id = "atmos"; + name = "Atmospherics Lockdown"; + req_access = list("atmospherics"); + pixel_y = 6 }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ +/obj/machinery/button/door/directional/east{ + id = "atmos_rad_shutters"; + name = "Atmospherics Radiation Shutters Control"; + req_access = list("atmospherics"); + pixel_y = -6 + }, +/turf/open/floor/iron/dark/side{ dir = 4 }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/area/station/engineering/atmos/office) +"uBT" = ( +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/secondary/exit/departure_lounge) "uBX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -61704,29 +61211,13 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/prison/mess) -"uCp" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"uCv" = ( +"uCo" = ( /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) +/turf/open/floor/iron, +/area/station/engineering/break_room) "uCB" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/captain/private) +/turf/closed/wall/r_wall, +/area/station/command/heads_quarters/blueshield) "uDj" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -61759,41 +61250,46 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"uDY" = ( -/mob/living/carbon/human/species/monkey, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/medical/virology) -"uEi" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Construction Area" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/construction) -"uEp" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, +"uEE" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/area/station/medical/medbay/aft) "uEU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 }, -/obj/machinery/telecomms/processor/preset_two, -/turf/open/floor/engine/telecomms, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ + dir = 4 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) "uEZ" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 + dir = 8 }, -/obj/machinery/light/directional/north, -/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/light/directional/west, +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, /turf/open/floor/iron/white, -/area/station/medical/office) +/area/station/medical/patients_rooms/room_a) +"uFl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/secondary/exit/departure_lounge) "uFo" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/entertainment/coin, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) @@ -61810,56 +61306,94 @@ pixel_x = -9; pixel_y = 5 }, +/obj/item/toy/figure/botanist{ + pixel_x = 9; + pixel_y = 17 + }, /turf/open/floor/iron/dark/corner{ dir = 1 }, /area/station/service/hydroponics) "uFw" = ( -/turf/open/floor/circuit/green/telecomms/mainframe, +/obj/machinery/telecomms/bus/preset_four, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) -"uFF" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "uFH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) +"uFK" = ( +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/north{ - pixel_x = -8 + pixel_x = 5 }, -/obj/machinery/firealarm/directional/north, +/obj/structure/table/wood, +/obj/item/skub, /turf/open/floor/wood, -/area/station/service/library/private) +/area/station/command/heads_quarters/captain/private) +"uFM" = ( +/obj/machinery/light/broken/directional/east, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "uFU" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 }, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"uGk" = ( -/obj/effect/decal/cleanable/vomit/old, +"uGd" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) +"uGk" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 5 + }, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/service/abandoned_gambling_den) "uGA" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/light/small/directional/north, -/obj/structure/reagent_dispensers/plumbed, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"uGF" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/surgery) -"uGK" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/line{ +/area/station/maintenance/department/engineering/central) +"uGD" = ( +/obj/effect/turf_decal/siding/wood{ dir = 8 }, -/turf/open/floor/iron/dark/side{ - dir = 8 +/obj/structure/cable, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) +"uGL" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/structure/chair{ + dir = 1 }, -/area/station/engineering/storage/tech) +/obj/effect/landmark/start/paramedic, +/turf/open/floor/iron, +/area/station/medical/paramedic) +"uGO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) +"uGS" = ( +/mob/living/basic/chicken, +/turf/open/floor/grass, +/area/station/service/hydroponics) +"uHc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/side, +/area/station/engineering/atmos/office) "uHf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -61875,6 +61409,13 @@ /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/open/floor/plating, /area/station/engineering/atmos) +"uHh" = ( +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/storage) "uHo" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /obj/machinery/atmospherics/pipe/smart/manifold4w/pink/visible/layer2, @@ -61896,7 +61437,6 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/obj/machinery/light/directional/east, /obj/machinery/computer/prisoner/gulag_teleporter_computer{ dir = 8 }, @@ -61917,26 +61457,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"uHE" = ( -/obj/machinery/button/door/directional/north{ - id = "secondary_shop" - }, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) -"uHM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/virology/glass{ - name = "Virology Containment Cell" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/virology, -/turf/open/floor/iron/white/textured, -/area/station/medical/virology) "uHN" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -61946,23 +61466,47 @@ }, /obj/machinery/door/firedoor, /obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "bar_sec_shutters"; name = "Bar Shutters"; - dir = 8 + dir = 4 }, /obj/structure/displaycase/forsale/kitchen, /turf/open/floor/iron/dark/textured, /area/station/service/bar) +"uHQ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) +"uIh" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/break_room) "uIi" = ( /obj/structure/flora/bush/fullgrass/style_random, /obj/structure/flora/bush/lavendergrass/style_random, /turf/open/floor/grass, /area/station/hallway/primary/aft) "uIk" = ( -/obj/effect/turf_decal/tile/red/fourcorners, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, /obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/security/interrogation) "uIl" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -61977,47 +61521,47 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron/dark, /area/station/science/breakroom) -"uIy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/surgery) "uII" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) -"uJk" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/button/door/directional/south{ - req_access = list("security"); - name = "Security Post Shutters Control"; - id = "engi_security_post" - }, -/obj/machinery/computer/records/security{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"uJm" = ( -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"uJn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, +/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ - dir = 4 + dir = 1 }, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "Patient Room 2" - }, /turf/open/floor/iron/white/textured, -/area/station/medical/patients_rooms/room_b) +/area/station/medical/exam_room) +"uIQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/department/science/xenobiology) +"uIU" = ( +/obj/structure/table/wood/fancy/royalblue, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -9; + pixel_y = 9 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = 9; + pixel_y = 9 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_y = 9 + }, +/obj/item/reagent_containers/cup/glass/bottle/wine{ + pixel_x = -7 + }, +/obj/item/reagent_containers/cup/glass/bottle/navy_rum{ + pixel_x = 7 + }, +/obj/item/reagent_containers/cup/glass/bottle/rum{ + pixel_y = -9 + }, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) "uJu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -62040,10 +61584,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/central) -"uJI" = ( -/obj/structure/rack, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) "uJP" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -62054,28 +61594,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"uJQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/obj/machinery/airalarm/directional/west, -/obj/structure/chair/sofa/corp{ - dir = 4 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "uKb" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "uKf" = ( @@ -62084,54 +61608,28 @@ }, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"uKj" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, +"uKm" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, /turf/open/floor/iron/white, -/area/station/medical/pharmacy) +/area/station/medical/virology) "uKp" = ( -/obj/structure/mirror/directional/north, -/obj/structure/sink/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm/directional/north, +/obj/structure/closet/secure_closet/medical1, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "uKy" = ( /obj/machinery/firealarm/directional/west, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, /area/station/maintenance/department/science) -"uKB" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 5 - }, -/obj/machinery/requests_console/directional/east{ - anon_tips_receiver = 1; - assistance_requestable = 1; - department = "Security"; - name = "Security Requests Console" - }, -/obj/structure/filingcabinet/chestdrawer, -/obj/machinery/button/door/directional/north{ - id = "medbay_foyer"; - name = "Medbay Doors Control"; - req_access = list("medical"); - desc = "A remote control switch for the medbay foyer."; - normaldoorcontrol = 1; - pixel_x = -6 - }, -/obj/machinery/button/door/directional/north{ - name = "Security Post Shutters Control"; - req_access = list("security"); - pixel_x = 6; - id = "medical_security_post" - }, -/obj/machinery/light_switch/directional/north{ - pixel_y = 34 - }, +"uKE" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/portable_atmospherics/pump, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) +/area/station/engineering/storage/tech) "uKL" = ( /obj/machinery/corral_corner{ mapping_id = "2" @@ -62152,14 +61650,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port) -"uKR" = ( -/obj/machinery/door/firedoor/border_only, -/obj/structure/window/reinforced/spawner/directional/south, -/mob/living/basic/chicken{ - forced_gender = "female" - }, -/turf/open/floor/grass, -/area/station/service/hydroponics) "uKT" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -62168,6 +61658,17 @@ dir = 4 }, /area/station/service/hydroponics/garden) +"uLk" = ( +/obj/machinery/light/directional/south, +/obj/machinery/requests_console/directional/south{ + department = "Bridge"; + name = "Bridge Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/information, +/turf/open/floor/wood, +/area/station/command/meeting_room) "uLo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -62202,34 +61703,17 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"uLE" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/machinery/holopad{ - pixel_y = 16; - pixel_x = 16 - }, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry) "uLI" = ( -/obj/machinery/button/door/directional/east{ - id = "atmos"; - name = "Atmospherics Lockdown"; - req_access = list("atmospherics"); - pixel_y = 6 - }, -/obj/machinery/modular_computer/preset/civilian{ - dir = 8 - }, -/obj/machinery/button/door/directional/east{ - id = "atmos_rad_shutters"; - name = "Atmospherics Radiation Shutters Control"; - req_access = list("atmospherics"); - pixel_y = -6 +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 1 }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) +/area/station/engineering/transit_tube) "uLJ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/mess, @@ -62250,36 +61734,44 @@ /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/requests_console/directional/south{ department = "Genetics"; - name = "Genetics Requests console"; - supplies_requestable = 1 + name = "Genetics Requests console" }, +/obj/effect/mapping_helpers/requests_console/supplies, /turf/open/floor/iron/white, /area/station/science/genetics) "uLS" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/effect/turf_decal/stripes, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/duct, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"uLT" = ( -/obj/item/wrench, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"uLZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/holopad, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) +"uLX" = ( +/obj/structure/chair/office{ + dir = 4 }, -/obj/structure/cable, -/obj/structure/cable/layer1, +/obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/iron, -/area/station/engineering/engine_smes) +/area/station/engineering/break_room) +"uLZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/tank_holder, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) +"uMf" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/office) +"uMg" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/processor, +/turf/open/floor/iron/kitchen, +/area/station/security/prison/mess) "uMj" = ( /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 1 @@ -62289,6 +61781,14 @@ }, /turf/open/floor/iron/white, /area/station/science/research) +"uMr" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/structure/mirror/directional/east, +/obj/structure/sink/directional/west, +/turf/open/floor/iron/white, +/area/station/medical/storage) "uMz" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -62307,6 +61807,15 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/brig) +"uMN" = ( +/turf/open/floor/carpet/red, +/area/station/commons/dorms/room6) +"uMO" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "uMT" = ( /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron/dark/side, @@ -62328,31 +61837,23 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "uNa" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, /obj/machinery/light/small/directional/east, -/obj/machinery/light_switch/directional/east, /obj/item/radio/intercom/directional/south, /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/engineering/engine_smes) "uNj" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted, +/obj/machinery/light/small/directional/south, /obj/structure/chair/sofa/bench/right{ dir = 1 }, /turf/open/floor/iron/dark, /area/station/security/processing) -"uNw" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/item/radio/intercom/directional/north, -/obj/structure/table/glass, -/obj/item/storage/medkit/regular, +"uNx" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) +/area/station/medical/chemistry) "uNz" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -62365,17 +61866,16 @@ req_access = list("robotics") }, /obj/machinery/door/window/left/directional/south{ - name = "Robotics Desk" + name = "Reception" }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "robotics_pub_shutters"; - name = "Robotics Shutters"; - dir = 1 + name = "Robotics Shutters" }, /obj/structure/desk_bell{ pixel_x = 7 }, -/turf/open/floor/iron/white/textured, +/turf/open/floor/iron/textured, /area/station/science/robotics/lab) "uNE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -62389,39 +61889,40 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"uNS" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/table/glass, -/obj/item/book/manual/wiki/chemistry{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/book/manual/wiki/plumbing, -/obj/item/hand_labeler, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "uNX" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted, /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) "uOf" = ( -/obj/machinery/light/small/directional/south, /obj/structure/table/wood, /obj/item/paper_bin, /obj/item/folder/red, /obj/item/pen, +/obj/item/toy/figure/detective{ + pixel_x = 11; + pixel_y = 6 + }, /turf/open/floor/carpet/red, /area/station/security/detectives_office) "uOj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Fuel Pipe to Incinerator" - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Fuel to Incinerator" + }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"uOm" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/wood, +/area/station/service/library) +"uOw" = ( +/obj/effect/turf_decal/bot, +/obj/structure/sign/warning/no_smoking/directional/west, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "uOF" = ( /obj/docking_port/stationary/random{ name = "lavaland"; @@ -62431,25 +61932,40 @@ /turf/open/space, /area/space) "uOS" = ( +/obj/structure/extinguisher_cabinet/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/purple/filled/warning{ - dir = 9 - }, /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/science/research) -"uPa" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Commons - Vacant Office, Southwest"; - name = "commons camera" +"uOV" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/table, +/obj/item/assembly/flash/handheld{ + pixel_y = 12; + pixel_x = -9 }, -/obj/item/kirbyplants/random, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) +/obj/item/assembly/flash/handheld{ + pixel_y = 12 + }, +/obj/item/assembly/flash/handheld{ + pixel_y = 12; + pixel_x = 9 + }, +/obj/item/wirecutters, +/obj/item/screwdriver, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) +"uPa" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "uPg" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/machinery/light/small/built/directional/south, /obj/effect/spawner/random/engineering/tank, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) @@ -62480,6 +61996,13 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"uPZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "uQg" = ( /obj/effect/turf_decal/box, /obj/effect/turf_decal/stripes/corner{ @@ -62495,59 +62018,56 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/engine, /area/station/ai_monitored/command/storage/satellite) +"uQh" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "uQk" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/open/space, /area/space/nearstation) -"uQm" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 +"uQl" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"uQr" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/table/glass, -/obj/item/storage/medkit/regular{ - pixel_x = 6; - pixel_y = 6 +/obj/machinery/button/door/directional/north{ + id = "teleporter_shutters"; + name = "Teleporter Room Shutters Control"; + req_access = list("teleporter") }, -/obj/item/storage/medkit/fire{ - pixel_x = 3; - pixel_y = 3 +/obj/machinery/power/shieldwallgen, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) +"uQv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/item/storage/medkit/fire, -/obj/item/storage/medkit/fire{ - pixel_x = -3; - pixel_y = -3 +/obj/structure/bed/dogbed{ + name = "Tom's Bed" }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"uQv" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/navigate_destination/common/bitrunner, -/turf/open/floor/carpet/black, -/area/station/security/bitden) +/mob/living/basic/mouse/brown/tom, +/turf/open/floor/iron/dark, +/area/station/security/prison/work) "uQP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/service/hydroponics) -"uQQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 8 +"uQR" = ( +/obj/structure/sign/painting/library{ + pixel_x = -32 }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/turf/open/floor/wood, +/area/station/service/library/private) "uRe" = ( /obj/structure/extinguisher_cabinet/directional/south, /obj/structure/closet/radiation, @@ -62572,7 +62092,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "uRF" = ( /obj/machinery/firealarm/directional/north, @@ -62598,16 +62118,26 @@ /area/station/command/gateway) "uRW" = ( /obj/machinery/plumbing/ooze_sucker{ - mapping_id = "3"; + mapping_id = "4"; dir = 1 }, -/obj/machinery/light/floor/has_bulb, /turf/open/floor/engine, /area/station/science/xenobiology) "uSp" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood/tile, +/area/station/service/chapel/office) +"uSA" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/iron/white, +/area/station/medical/cryo) "uSG" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/warning{ dir = 1 @@ -62618,19 +62148,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"uSI" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) -"uSJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/warning, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "uSP" = ( /obj/structure/disposalpipe/sorting/mail/flip{ dir = 4 @@ -62639,26 +62156,40 @@ /turf/open/floor/iron/dark, /area/station/security/office) "uTb" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/rack, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/clothing/gloves/color/yellow, -/obj/item/t_scanner, -/obj/item/multitool, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/firealarm/directional/east, +/obj/structure/chair/sofa/bench/right{ + dir = 1 + }, +/obj/effect/landmark/start/station_engineer, /turf/open/floor/iron, -/area/station/engineering/storage/tech) +/area/station/engineering/main) "uTo" = ( -/obj/machinery/suit_storage_unit/atmos, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/atmos/glass{ + name = "Distribution Loop" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos/pumproom) "uTq" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/machinery/button/door/directional/east{ + id = "apothecary_pri_desk_shutters"; + name = "Apothecary Primary Desk Shutters Control"; + req_access = list("pharmacy") + }, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "uTw" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -62679,58 +62210,62 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/turret_protected/aisat_interior) +"uTN" = ( +/obj/machinery/firealarm/directional/south, +/turf/open/floor/catwalk_floor/iron, +/area/station/maintenance/department/science) +"uTO" = ( +/obj/machinery/button/door/directional/north{ + id = "secondary_shop" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "uUa" = ( /turf/open/floor/iron/dark/side{ dir = 8 }, /area/station/commons/fitness/recreation) -"uUp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) "uUq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, /obj/structure/cable, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) -"uUC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/showcase/cyborg/old{ - dir = 4; - pixel_x = -9; - pixel_y = 2 +"uUs" = ( +/obj/machinery/light/directional/north, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) +"uUB" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/structure/chair/sofa/bench/right{ + dir = 1 }, +/obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) +/area/station/hallway/secondary/exit/departure_lounge) "uUN" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/machinery/door/poddoor{ id = "ord_freezer_vent"; name = "Ordnance Freezer Chamber Vent" }, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/freezerchamber) -"uUV" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/obj/structure/sign/departments/maint/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"uVb" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/machinery/vending/medical, -/turf/open/floor/iron/white, -/area/station/medical/storage) +"uUY" = ( +/obj/machinery/light/built/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "uVf" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -62781,9 +62316,14 @@ /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/entry) "uVC" = ( -/obj/machinery/bookbinder, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "uVG" = ( /obj/machinery/light/directional/west, /obj/structure/table, @@ -62824,10 +62364,6 @@ }, /turf/open/floor/iron/white, /area/station/science/lab) -"uVJ" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/plating, -/area/station/maintenance/port) "uVO" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/structure/chair/sofa/bench/right{ @@ -62836,49 +62372,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"uVP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"uVQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/table/glass, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/item/paper_bin{ - pixel_x = -7 - }, -/obj/item/clipboard{ - pixel_x = -7 - }, -/obj/item/folder/white{ - pixel_x = -7 - }, -/obj/item/pen{ - pixel_x = -7 - }, -/obj/item/book/manual/wiki/grenades{ - pixel_x = 7 - }, -/obj/item/book/manual/wiki/plumbing{ - pixel_x = 7; - pixel_y = 5 - }, -/obj/item/book/manual/wiki/chemistry{ - pixel_x = 7; - pixel_y = 10 - }, -/obj/item/stack/package_wrap, -/obj/item/hand_labeler, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "uWa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -62891,19 +62384,31 @@ id = "dorm_3"; name = "Dorm Bolt Control"; normaldoorcontrol = 1; - specialfunctions = 4 + specialfunctions = 4; + pixel_x = 5 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = 5; + pixel_y = -34 }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/structure/chair/stool/directional/north, /turf/open/floor/carpet/purple, -/area/station/commons/dorms) +/area/station/commons/dorms/room3) "uWo" = ( /obj/machinery/shower/directional/east, -/turf/open/floor/iron/dark/textured, +/obj/structure/drain, +/turf/open/floor/iron/dark/textured_large, /area/station/engineering/atmos/storage) "uWp" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/jungle/c/style_random, -/turf/open/floor/grass, -/area/station/command/bridge) +/obj/machinery/light/small/directional/west, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "uWr" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -62911,9 +62416,29 @@ /obj/effect/turf_decal/trimline/yellow/line{ dir = 4 }, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron, +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/hallway/primary/aft) +"uWv" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/north, +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = -5 + }, +/obj/machinery/iv_drip, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "uWB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -62940,8 +62465,9 @@ id_tag = "dorm_5"; name = "Dorm 5" }, +/obj/structure/cable, /turf/open/floor/iron/dark/textured, -/area/station/commons/dorms) +/area/station/commons/dorms/room5) "uWJ" = ( /obj/structure/sign/warning/vacuum/external/directional/south, /turf/open/floor/iron/dark, @@ -62966,19 +62492,23 @@ /turf/open/floor/iron/dark, /area/station/security/detectives_office) "uXH" = ( -/obj/machinery/shower/directional/north, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/restrooms) -"uXN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/structure/chair/office/light{ + dir = 4 }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ +/obj/effect/landmark/start/head_of_security, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"uXN" = ( +/obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 1 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/duct, /turf/open/floor/iron, /area/station/engineering/main) @@ -62990,56 +62520,17 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) -"uXQ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/computer/atmos_alert, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/engineering/break_room) "uYe" = ( /obj/effect/landmark/blobstart, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "uYf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/telecomms/processor/preset_three, -/turf/open/floor/engine/telecomms, +/obj/effect/turf_decal/siding/wideplating_new/dark, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) -"uYB" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/obj/structure/table, -/obj/structure/reagent_dispensers/wall/peppertank/directional/east, -/obj/item/paper_bin{ - pixel_y = 6 - }, -/obj/item/pen, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) -"uYI" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/requests_console/directional/south{ - anon_tips_receiver = 1; - assistance_requestable = 1; - department = "Bridge"; - name = "Bridge Requests Console"; - can_send_announcements = 1 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "uYJ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -63054,7 +62545,7 @@ /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) "uZf" = ( -/obj/effect/spawner/random/structure/table, +/obj/structure/table, /obj/item/reagent_containers/condiment/sugar, /obj/item/reagent_containers/condiment/enzyme, /obj/item/kitchen/rollingpin, @@ -63084,9 +62575,10 @@ /area/station/command/gateway) "uZH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/carpet/blue, -/area/station/commons/dorms) +/area/station/commons/dorms/room2) "uZR" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -63102,13 +62594,18 @@ /obj/item/stock_parts/micro_laser, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "vah" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 1 }, -/obj/machinery/firealarm/directional/west, +/obj/machinery/firealarm/directional/west{ + pixel_y = -5 + }, /obj/structure/closet/secure_closet/evidence, +/obj/machinery/light_switch/directional/west{ + pixel_y = 5 + }, /turf/open/floor/iron/dark, /area/station/security/evidence) "val" = ( @@ -63119,19 +62616,22 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) +"vau" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/atmos/office) "vaG" = ( /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark/side{ dir = 6 }, /area/station/commons/fitness) -"vaO" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/hand_labeler, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "vaP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -63144,9 +62644,7 @@ /area/station/cargo/storage) "vaR" = ( /obj/effect/turf_decal/tile/green, -/obj/machinery/camera/autoname/directional/north{ - dir = 9 - }, +/obj/machinery/camera/autoname/directional/north, /obj/structure/table, /obj/item/reagent_containers/spray/plantbgone{ pixel_y = 3 @@ -63161,26 +62659,21 @@ }, /obj/item/watertank, /obj/effect/spawner/random/food_or_drink/seed, +/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/dark/side{ dir = 9 }, /area/station/service/hydroponics) +"vaT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/engineering/break_room) "vaW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/airlock/bathroom{ - name = "Bathroom" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/iron/textured, -/area/station/maintenance/starboard/aft) +/turf/closed/wall, +/area/station/command/heads_quarters/cmo) "vbc" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -63189,21 +62682,29 @@ /turf/open/floor/iron/white, /area/station/science/research) "vbi" = ( -/obj/machinery/airalarm/directional/east, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/components/unary/bluespace_sender, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) "vbl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/circuit, /area/station/ai_monitored/command/nuke_storage) +"vbq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/commons/locker) "vbz" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/line{ +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/effect/turf_decal/trimline/neutral/line{ dir = 1 }, /obj/machinery/camera/autoname/directional/south, +/obj/machinery/station_map/directional/south, /turf/open/floor/iron/dark, /area/station/security/office) "vbB" = ( @@ -63229,45 +62730,41 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"vbJ" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/firealarm/directional/south, +/obj/machinery/power/shieldwallgen, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "vbK" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, +/obj/machinery/atm/directional/west, /turf/open/floor/iron/dark/side{ dir = 8 }, /area/station/cargo/lobby) "vbT" = ( -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/south{ - pixel_x = -8 + pixel_x = 5 }, -/obj/machinery/camera/directional/south, +/obj/machinery/camera/autoname/directional/south, /obj/machinery/atmospherics/components/tank, /turf/open/floor/iron, /area/station/science/ordnance) -"vce" = ( -/obj/machinery/station_map/directional/west, -/turf/open/floor/wood, -/area/station/commons/locker) "vcn" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) -"vcv" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/dark_blue/corner{ - dir = 8 - }, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "vcA" = ( /obj/structure/flora/grass/jungle/b/style_random, /obj/structure/flora/bush/sparsegrass/style_random, @@ -63295,34 +62792,6 @@ "vcG" = ( /turf/closed/wall/r_wall, /area/station/engineering/engine_smes) -"vcH" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/door/window/brigdoor/left/directional/east{ - name = "Head of Security's Desk"; - req_access = list("hos") - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"vcI" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/flora/grass/jungle/b/style_random, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters"; - dir = 8 - }, -/turf/open/floor/grass, -/area/station/medical/medbay/central) -"vcL" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/filingcabinet, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) "vcW" = ( /obj/effect/spawner/random/structure/table, /obj/effect/spawner/random/maintenance, @@ -63330,6 +62799,16 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/iron/checker, /area/station/maintenance/port/fore) +"vcY" = ( +/obj/machinery/airalarm/directional/north, +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) +"vde" = ( +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/security/prison/work) "vdf" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -63341,21 +62820,24 @@ /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/security/prison/mess) -"vdO" = ( +"vdK" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, /obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/research) -"vdQ" = ( +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) +"vdO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/disposalpipe/segment, +/obj/machinery/duct, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/area/station/science/research) "vdT" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /turf/open/floor/iron/dark, @@ -63365,25 +62847,40 @@ /obj/structure/sign/warning/cold_temp/directional/east, /turf/open/floor/plating/reinforced, /area/station/science/research) -"vec" = ( -/obj/structure/disposalpipe/sorting/mail{ - dir = 2 +"vej" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/mail_sorting/engineering/ce_office, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Closet" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "vez" = ( /obj/machinery/shower/directional/north, +/obj/structure/drain, /turf/open/floor/iron/showroomfloor, /area/station/security/prison/shower) "veJ" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"veK" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/disease2/incubator, +/turf/open/floor/iron/white, +/area/station/medical/virology) "veQ" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -63394,8 +62891,17 @@ id = "aux_base_shutters"; name = "Auxiliary Base Shutters" }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured, /area/station/construction/mining/aux_base) +"veV" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 10 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/engineering/break_room) "veX" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 @@ -63420,48 +62926,18 @@ /obj/structure/flora/tree/jungle/small/style_random, /turf/open/floor/grass, /area/station/hallway/primary/central) -"vft" = ( -/obj/structure/sign/painting/library{ - pixel_y = -32 - }, -/obj/machinery/station_map/engineering/directional/east, -/turf/open/floor/wood, -/area/station/service/library) "vfw" = ( /obj/machinery/light/directional/west, /turf/open/floor/engine, /area/station/science/xenobiology) "vfE" = ( -/obj/effect/spawner/random/trash/mess, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/vomit/old, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/maintenance/starboard/aft) "vfK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) -"vfO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) +/turf/closed/wall, +/area/station/service/abandoned_gambling_den) "vfV" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 10 @@ -63478,6 +62954,17 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) +"vfW" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/sign/departments/maint/directional/east, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/entry) "vfX" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 @@ -63488,7 +62975,7 @@ /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "vfY" = ( -/obj/structure/sign/poster/contraband/random/directional/west, +/obj/structure/sign/poster/random/directional/west, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/aft) @@ -63508,22 +62995,6 @@ /obj/effect/mapping_helpers/airlock/access/all/science/rd, /turf/open/floor/iron/white/textured, /area/station/command/heads_quarters/rd) -"vgJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/machinery/vending/wallmed/directional/north, -/obj/item/radio/intercom/directional/east, -/obj/structure/table, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) -"vhb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) "vhd" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 @@ -63535,13 +63006,53 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig/entrance) -"vho" = ( +"vhh" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door_buttons/access_button{ + idDoor = "xeno_airlock_interior"; + idSelf = "xeno_airlock_control"; + name = "Access Button"; + pixel_x = 26; + pixel_y = -6; + req_access = list("xenobiology") + }, +/obj/machinery/door_buttons/airlock_controller{ + idExterior = "xeno_airlock_exterior"; + idInterior = "xeno_airlock_interior"; + idSelf = "xeno_airlock_control"; + name = "Access Console"; + pixel_x = 26; + req_access = list("xenobiology"); + pixel_y = 6 + }, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) +/obj/structure/liquid_barrier, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + autoclose = 0; + frequency = 1449; + id_tag = "xeno_airlock_interior"; + name = "Xenobiology Lab Internal Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/iron/white/textured, +/area/station/science/xenobiology/hallway) +"vho" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "vhu" = ( /turf/closed/wall, /area/station/security/prison/rec) @@ -63550,20 +63061,25 @@ /obj/effect/decal/cleanable/cobweb, /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "vhN" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, +/obj/machinery/button/door/directional/north{ + id = "cargo_desk"; + name = "Cargo Desk Shutters Control"; + req_access = list("cargo") + }, /obj/structure/table, /obj/item/clipboard, /obj/item/stamp{ - pixel_x = -4; - pixel_y = 4 + pixel_x = -5; + pixel_y = 5 }, /obj/item/stamp/denied{ - pixel_x = 6; - pixel_y = 2 + pixel_x = 5; + pixel_y = 5 }, /turf/open/floor/iron/dark/side{ dir = 1 @@ -63574,10 +63090,21 @@ /turf/open/floor/plating, /area/station/maintenance/department/science) "via" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/bonfire, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/service/abandoned_gambling_den) +"vib" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Command - Bridge, Hall, East"; + name = "command camera" + }, +/obj/structure/chair/sofa/bench/solo{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "vii" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -63594,52 +63121,48 @@ name = "Armory Desk"; req_access = list("armory") }, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "armory_desk"; - name = "Armory Desk Shutter"; + name = "Armory Desk Shutters"; dir = 4 }, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"vio" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters"; - dir = 8 - }, -/turf/open/floor/plating, -/area/station/medical/paramedic) "vip" = ( /obj/structure/lattice, /obj/structure/sign/departments/security/directional/south, /turf/open/space/basic, /area/space/nearstation) "vir" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/telecomms/server/presets/common, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/server/presets/science, +/turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) -"viW" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/computer/records/medical, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "vje" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/shower/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + id_tag = "medbay_foyer"; + name = "Medbay" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/unres, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "med_lockdown"; + name = "Medbay Emergency Lockdown Shutters"; + dir = 1 + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/medbay/central) "vjj" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/effect/decal/cleanable/blood/tracks{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/chair/wood{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "vjs" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/hobo_squat, @@ -63654,27 +63177,22 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/gravity_generator) -"vjx" = ( -/obj/structure/table/glass, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 6 - }, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) "vjD" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/iron, /area/station/maintenance/disposal) "vjI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /obj/machinery/computer/turbine_computer{ dir = 1; mapping_id = "main_turbine" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) +"vjR" = ( +/obj/machinery/light/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "vjV" = ( /obj/effect/turf_decal/trimline/brown/filled/warning{ dir = 1 @@ -63718,25 +63236,30 @@ /turf/open/floor/engine/n2o, /area/station/engineering/atmos) "vkc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/light/small/directional/east, +/obj/machinery/requests_console/directional/east{ + department = "Chief Medical Officer's Desk"; + name = "Chief Medical Officer's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) +"vke" = ( +/obj/effect/turf_decal/vg_decals/atmos/plasma, +/turf/open/floor/engine/plasma, +/area/station/engineering/atmos) "vkg" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) -"vkh" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark/smooth_large, +/area/station/hallway/secondary/entry) "vki" = ( -/obj/effect/turf_decal/delivery/red, +/obj/effect/turf_decal/bot_red, /obj/machinery/status_display/ai/directional/east, /obj/machinery/suit_storage_unit/standard_unit, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/large, /area/station/ai_monitored/command/storage/eva) "vkj" = ( /obj/structure/table/wood/fancy/black, @@ -63745,11 +63268,24 @@ }, /turf/open/floor/carpet, /area/station/service/chapel) +"vkp" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/machinery/camera/directional/north{ + c_tag = "Medical - Pathology, Lab, Primary"; + name = "medical camera"; + network = list("ss13","medbay") + }, +/obj/structure/sink/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/virology) "vkz" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/small/directional/north, /obj/machinery/camera/autoname/directional/north, -/obj/item/radio/intercom/directional/north, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, /obj/structure/rack, /obj/item/storage/belt/utility, /obj/item/clothing/gloves/color/fyellow, @@ -63763,15 +63299,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white/smooth_large, /area/station/science/robotics/lab) -"vkF" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/break_room) "vkL" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ @@ -63779,6 +63306,15 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"vkW" = ( +/obj/machinery/light/directional/west, +/obj/structure/table, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/construction/plumbing, +/obj/item/plunger, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "vkX" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 @@ -63801,9 +63337,14 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "vlq" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/cargo) +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "vlr" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -63816,8 +63357,16 @@ id_tag = "dorm_1"; name = "Dorm 1" }, +/obj/structure/cable, /turf/open/floor/iron/dark/textured, -/area/station/commons/dorms) +/area/station/commons/dorms/room1) +"vlG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "vlK" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -63833,7 +63382,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/cargo/warehouse) "vlU" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 @@ -63856,25 +63405,23 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "vmh" = ( -/obj/structure/bed{ - dir = 4 - }, -/obj/item/bedsheet/dorms{ - dir = 4 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 10 }, -/turf/open/floor/wood, -/area/station/maintenance/starboard/aft) -"vmo" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 +/obj/structure/table, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty{ + pixel_y = 6 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +/obj/item/construction/plumbing/engineering, +/obj/item/plunger, +/turf/open/floor/iron/dark/side{ + dir = 10 }, -/turf/open/floor/iron/white, -/area/station/medical/office) +/area/station/engineering/storage_shared) "vmq" = ( /obj/effect/turf_decal/tile/green/fourcorners, +/obj/structure/sign/poster/official/high_class_martini/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "vmu" = ( @@ -63895,12 +63442,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"vnp" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "vnO" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /turf/open/floor/iron/dark, @@ -63915,8 +63456,10 @@ /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ dir = 4 }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /obj/effect/mapping_helpers/airlock/unres{ dir = 8 }, @@ -63932,29 +63475,22 @@ /obj/structure/anvil, /turf/open/floor/wood, /area/station/smithing) -"vom" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south{ - dir = 5 - }, -/obj/machinery/growing/tray, -/turf/open/floor/iron/dark/side, -/area/station/service/hydroponics) "voo" = ( -/turf/closed/wall, -/area/station/science/ordnance/testlab) +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/table/reinforced/rglass, +/obj/item/toy/figure/paramedic, +/turf/open/floor/iron/dark, +/area/station/medical/paramedic) "voq" = ( /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, /turf/closed/wall/r_wall, /area/station/science/ordnance/burnchamber) "vot" = ( /obj/structure/lattice, +/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible, /turf/open/space/basic, /area/space/nearstation) "vox" = ( @@ -63970,12 +63506,18 @@ /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/entry) -"voL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +"voJ" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Medical - Exam Room, East"; + name = "medical camera"; + network = list("ss13","medbay") }, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) +/obj/item/radio/intercom/directional/west, +/obj/machinery/computer/operating{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "voQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -63985,16 +63527,27 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/office) -"voV" = ( -/obj/structure/table/wood, -/obj/machinery/recharger{ - pixel_y = 4 +"voY" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/bot_white/left, +/obj/structure/filingcabinet, +/obj/item/folder/blue, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/nuke_storage) +"voZ" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 }, -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = 14 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/medical/paramedic) "vpb" = ( /obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -64005,25 +63558,23 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/port) -"vpe" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, -/obj/machinery/smartfridge/chemistry/preloaded, -/turf/open/floor/iron/dark, -/area/station/medical/chemistry) "vpn" = ( /turf/open/floor/carpet/green, -/area/station/maintenance/starboard/aft) +/area/station/service/abandoned_gambling_den) "vpp" = ( /obj/docking_port/stationary/public_mining_dock{ dir = 2 }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) +"vpu" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "vpA" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/corner{ @@ -64044,9 +63595,11 @@ /turf/closed/wall/r_wall, /area/station/security/prison/visit) "vpL" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) "vpV" = ( /obj/effect/turf_decal/tile/green/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -64054,66 +63607,45 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"vpY" = ( -/obj/effect/turf_decal/trimline/red/filled/warning, -/obj/effect/turf_decal/trimline/red/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "vqb" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_priv_1"; - name = "Privacy Shutters"; +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/chair/sofa/bench/right{ dir = 8 }, -/turf/open/floor/plating, -/area/station/medical/patients_rooms/room_a) +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "vqc" = ( -/obj/structure/chair/wood{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) "vqd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/watertank, +/obj/structure/cable, +/obj/structure/closet/firecloset, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "vqk" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/large, +/obj/structure/chair/sofa/left/maroon{ + dir = 8 + }, +/turf/open/floor/iron, /area/station/commons/fitness/recreation) "vqo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured, -/area/station/service/library/lounge) +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/departments/aisat/directional/east, +/obj/item/kirbyplants/photosynthetic, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) "vqr" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) +/obj/structure/table, +/obj/item/assembly/timer, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "vqJ" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 @@ -64129,9 +63661,18 @@ /area/station/service/kitchen) "vqK" = ( /obj/item/radio/intercom/directional/north, -/obj/machinery/suit_storage_unit/industrial/loader, +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 6 + }, /turf/open/floor/iron, /area/station/cargo/warehouse) +"vqL" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/engineering_all, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "vqP" = ( /obj/structure/filingcabinet, /turf/open/floor/carpet/red, @@ -64143,86 +63684,86 @@ /turf/open/floor/iron/dark, /area/station/engineering/gravity_generator) "vrc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 +/obj/machinery/vending/games, +/turf/open/floor/iron/dark/side{ + dir = 6 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/commons/fitness/recreation) "vrf" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) "vrm" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 }, -/obj/effect/turf_decal/trimline/yellow/line, +/obj/effect/turf_decal/trimline/blue/corner, /obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, /area/station/hallway/primary/aft) "vro" = ( /obj/structure/frame/machine, /turf/open/floor/plating, /area/station/maintenance/department/science) "vrG" = ( -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/maintenance/department/science) -"vrT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/computer/records/medical, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"vrW" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 5 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/effect/turf_decal/delivery, -/obj/machinery/light/directional/north, -/obj/machinery/firealarm/directional/north, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/obj/machinery/door/window/left/directional/east{ + name = "Reception" }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/obj/machinery/door/window/brigdoor/right/directional/west{ + name = "Head of Personnel's Desk"; + req_access = list("hop") + }, +/obj/machinery/door/poddoor/shutters{ + id = "hop"; + name = "Privacy Shutters"; + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/hop) "vsb" = ( -/obj/structure/foamedmetal, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"vsc" = ( -/obj/machinery/door/window/brigdoor/left/directional/south{ - name = "Blueshield Equipement Room"; - req_access = list("command") +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/siding/dark_blue/end, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/atmos/glass{ + name = "Atmospherics Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos/office) "vse" = ( /obj/machinery/plumbing/ooze_sucker{ mapping_id = "2"; dir = 1 }, -/obj/machinery/light/floor/has_bulb, /turf/open/floor/engine, /area/station/science/xenobiology) "vsk" = ( @@ -64242,17 +63783,20 @@ }, /area/station/commons/fitness/recreation) "vsB" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"vsG" = ( +/obj/machinery/light/directional/north, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/structure/table/reinforced/rglass, +/obj/machinery/fax{ + fax_name = "Medical Office"; + name = "Medical Office Fax Machine" + }, +/turf/open/floor/iron/white, +/area/station/medical/office) +"vsG" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/server) @@ -64265,46 +63809,42 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/side, /area/station/hallway/secondary/service) -"vtr" = ( -/obj/structure/bed{ - dir = 4 - }, -/obj/item/bedsheet/medical{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +"vtd" = ( +/obj/structure/sign/departments/restroom/directional/west, +/turf/open/floor/wood, +/area/station/security/prison/rec) +"vto" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/machinery/disposal/bin, +/turf/open/floor/iron/dark, +/area/station/medical/paramedic) +"vtr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "vtD" = ( /obj/machinery/requests_console/directional/west{ - assistance_requestable = 1; department = "Janitorial"; name = "Janitorial Requests Console" }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, +/obj/effect/mapping_helpers/requests_console/assistance, +/turf/open/floor/iron/dark, /area/station/service/janitor) "vtJ" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/circuit, -/area/station/ai_monitored/command/nuke_storage) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "vtP" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"vtT" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, -/obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) "vub" = ( /obj/effect/spawner/random_engines/box, /turf/open/space/basic, @@ -64318,11 +63858,22 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"vuu" = ( +/obj/machinery/camera/autoname/directional/south, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/structure/table/wood, +/obj/effect/spawner/random/medical/medkit, +/turf/open/floor/iron/white, +/area/station/medical/break_room) +"vuw" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/iron/dark, +/area/station/medical/morgue) "vuz" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/light/small/directional/north, -/turf/open/floor/carpet, -/area/station/service/library) +/obj/effect/turf_decal/siding/thinplating, +/turf/open/floor/iron, +/area/station/engineering/main) "vuA" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/eva) @@ -64330,22 +63881,61 @@ /obj/effect/spawner/random/structure/chair_maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"vuT" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/closet/crate{ + name = "Telecomms Parts" + }, +/obj/item/stock_parts/subspace/transmitter, +/obj/item/stock_parts/subspace/transmitter, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/filter, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/ansible, +/obj/item/stock_parts/subspace/crystal, +/obj/item/stock_parts/subspace/crystal, +/obj/item/stock_parts/subspace/crystal, +/obj/item/stock_parts/subspace/amplifier, +/obj/item/stock_parts/subspace/amplifier, +/obj/item/stock_parts/subspace/amplifier, +/obj/item/stock_parts/subspace/analyzer, +/obj/item/stock_parts/subspace/analyzer, +/obj/item/stock_parts/subspace/analyzer, +/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, +/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, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "vuY" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ dir = 6 }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"vvg" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 +"vuZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/dark/visible/layer4{ + dir = 8 }, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) +"vvb" = ( +/obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/area/station/medical/chemistry) "vvu" = ( /obj/effect/turf_decal/stripes/box, /obj/machinery/mech_bay_recharge_port{ @@ -64362,12 +63952,14 @@ /area/station/hallway/primary/fore) "vvM" = ( /obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/bed/pod{ - desc = "An old medical bed, just waiting for replacement with something up to date."; - name = "medical bed" +/obj/machinery/button/door/directional/east{ + id = "dep_med_post"; + name = "Medical Post Shutters Control"; + req_access = list("medical") }, +/obj/structure/sink/directional/west, /turf/open/floor/iron/white, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/medical/treatment_center) "vvQ" = ( /obj/structure/rack, /obj/item/storage/medkit/regular{ @@ -64390,16 +63982,6 @@ /obj/item/assembly/prox_sensor, /turf/open/floor/iron, /area/station/science/robotics/mechbay) -"vvV" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/medical/paramedic) "vvX" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 1 @@ -64424,6 +64006,26 @@ }, /turf/open/floor/eighties/red, /area/station/service/theater) +"vwl" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/security/interrogation) +"vwp" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/light/small/directional/east, +/obj/structure/sign/nanotrasen{ + pixel_x = 32 + }, +/obj/structure/chair/sofa/bench/left{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "vww" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 @@ -64433,29 +64035,27 @@ }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"vwz" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) "vwE" = ( /obj/structure/sign/poster/random/directional/east, /obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) "vxd" = ( /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/fore) "vxg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, +/obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) +"vxl" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "vxs" = ( /obj/machinery/power/smes, /obj/structure/cable, @@ -64488,10 +64088,13 @@ /turf/open/floor/plating, /area/station/engineering/atmos/hfr_room) "vyt" = ( -/obj/structure/sink/directional/west, -/obj/structure/mirror/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/captain/private) +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "vyC" = ( /obj/structure/table, /obj/effect/spawner/random/food_or_drink/booze, @@ -64509,25 +64112,42 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/space, /area/space/nearstation) +"vyX" = ( +/obj/structure/table, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = -9; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = 9; + pixel_y = 3 + }, +/turf/open/floor/iron, +/area/station/engineering/break_room) "vyY" = ( /obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/south, /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs{ - pixel_y = 3 + pixel_x = -3; + pixel_y = 6 }, /turf/open/floor/iron/dark, /area/station/security/processing) "vyZ" = ( -/turf/open/floor/iron/dark, -/area/station/service/library/printer) +/turf/open/floor/iron/white, +/area/station/medical/surgery) "vzc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/machinery/airalarm/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "vzd" = ( /obj/machinery/duct, /turf/open/floor/carpet/blue, @@ -64536,29 +64156,56 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/engine/air, /area/station/engineering/atmos) -"vzf" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/storage/tech) "vzh" = ( /obj/docking_port/stationary/mining_home/common/kilo{ dir = 8 }, /turf/open/space/basic, /area/space) +"vzs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "library_desk_shutters"; + name = "Library Desk Shutters"; + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen/red, +/obj/item/pen/blue{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/iron/dark/textured, +/area/station/service/library/printer) +"vzt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/science) +"vzx" = ( +/obj/structure/table/wood, +/obj/item/radio/radio_mic{ + pixel_y = 7 + }, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "vzy" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/service/chapel) +"vzG" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/station/medical/virology) "vzJ" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/machinery/seed_extractor, @@ -64568,8 +64215,7 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) "vzN" = ( /obj/effect/turf_decal/tile/neutral{ @@ -64580,36 +64226,53 @@ }, /area/station/commons/storage/primary) "vzQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/yellow/filled/corner{ - dir = 8 +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/command/heads_quarters/cmo) +"vAj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "vAm" = ( -/obj/effect/turf_decal/stripes/end, -/turf/open/floor/engine/telecomms, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/passive_vent, +/turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) -"vAq" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) "vAH" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/carpet/purple, -/area/station/commons/dorms) +/area/station/commons/dorms/room3) +"vAN" = ( +/obj/effect/turf_decal/siding/thinplating/corner, +/turf/open/floor/iron, +/area/station/engineering/main) "vAP" = ( -/obj/effect/landmark/blobstart, +/obj/effect/spawner/random/trash/box, +/obj/effect/spawner/random/engineering/toolbox, +/obj/effect/spawner/random/food_or_drink/booze, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/starboard/aft) "vAZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/duct, /turf/open/floor/wood, /area/station/service/bar) "vBh" = ( @@ -64630,15 +64293,21 @@ /obj/machinery/biogenerator, /turf/open/floor/iron/dark, /area/station/service/hydroponics) -"vBp" = ( -/obj/machinery/keycard_auth{ - pixel_y = -24 +"vBv" = ( +/obj/effect/turf_decal/trimline/neutral/filled/warning{ + dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/filingcabinet, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "vBx" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -64678,7 +64347,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) "vBQ" = ( /obj/effect/mapping_helpers/burnt_floor, @@ -64704,18 +64373,10 @@ /turf/open/floor/iron/dark, /area/station/security/prison) "vCq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Engineering Foyer Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, -/area/station/maintenance/department/medical) +/area/station/maintenance/department/engine) "vCs" = ( /obj/machinery/door/window/left/directional/east{ name = "Brig Infirmary"; @@ -64731,9 +64392,27 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 9 }, +/obj/structure/table, /obj/item/radio/intercom/directional/west, -/obj/machinery/light/small/directional/west, -/obj/structure/filingcabinet/filingcabinet, +/obj/item/stack/wrapping_paper{ + pixel_x = -3; + pixel_y = -6 + }, +/obj/item/stack/wrapping_paper, +/obj/item/stack/wrapping_paper{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/item/stack/package_wrap{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/stack/package_wrap{ + pixel_x = -3 + }, +/obj/item/stack/package_wrap{ + pixel_y = 3 + }, /turf/open/floor/iron/dark/side{ dir = 9 }, @@ -64743,14 +64422,6 @@ /obj/structure/closet/firecloset/full, /turf/open/floor/plating, /area/station/maintenance/port) -"vCI" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) "vCQ" = ( /obj/effect/spawner/random/engineering/tool, /turf/open/floor/iron/dark, @@ -64761,21 +64432,25 @@ dir = 1 }, /obj/effect/turf_decal/caution/stand_clear, -/obj/machinery/door/poddoor/shutters/window{ +/obj/machinery/door/poddoor/shutters{ id = "eva_shutters"; name = "EVA Shutters" }, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/command/storage/eva) "vCZ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/wood, +/area/station/service/library/private) "vDa" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; name = "O2 to Pure" @@ -64786,21 +64461,18 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"vDm" = ( -/obj/effect/spawner/random/structure/table, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "vDr" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 5 }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, -/obj/machinery/firealarm/directional/north, -/obj/machinery/light_switch/directional/north{ - pixel_x = -8 +/obj/machinery/status_display/evac/directional/north, +/obj/structure/bed/dogbed{ + name = "Poly's Bed" + }, +/mob/living/basic/parrot/poly, +/turf/open/floor/iron/dark/side{ + dir = 5 }, -/turf/open/floor/iron, /area/station/command/heads_quarters/ce) "vDw" = ( /obj/effect/turf_decal/trimline/red/filled/line{ @@ -64809,7 +64481,7 @@ /obj/effect/turf_decal/bot, /obj/structure/closet/l3closet/security, /obj/structure/sign/warning/secure_area/directional/west, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "vDy" = ( /obj/machinery/air_sensor/ordnance_burn_chamber, @@ -64853,25 +64525,111 @@ }, /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/port) -"vEp" = ( -/obj/structure/dresser, +"vDV" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, /turf/open/floor/wood, -/area/station/commons/dorms) +/area/station/command/heads_quarters/captain) +"vDX" = ( +/obj/machinery/light/directional/east, +/obj/structure/bed/double, +/obj/item/bedsheet/captain/double, +/obj/effect/landmark/start/captain, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) +"vEc" = ( +/obj/effect/turf_decal/vg_decals/atmos/air, +/turf/open/floor/engine/air, +/area/station/engineering/atmos) +"vEm" = ( +/obj/structure/mirror/directional/west, +/obj/structure/sink/directional/east, +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/iron/showroomfloor, +/area/station/command/heads_quarters/blueshield) +"vEp" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/light/small/directional/west, +/obj/machinery/button/door/directional/west{ + id = "teleporter_shutters"; + name = "Teleporter Room Shutters Control"; + pixel_y = 5; + req_access = list("command") + }, +/obj/machinery/button/door/directional/west{ + id = "eva_shutters"; + name = "EVA Storage Shutters Control"; + pixel_y = -5; + req_access = list("command") + }, +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "bridge_windows"; + name = "Bridge View Blast doors"; + pixel_x = -6; + pixel_y = 8; + req_access = list("command") + }, +/obj/machinery/button/door{ + id = "bridge_blast_doors"; + name = "Bridge Access Blast doors"; + pixel_x = 6; + pixel_y = 8; + req_access = list("command") + }, +/obj/machinery/button/door{ + id = "bridge_exterior_blast_doors"; + name = "Bridge Exterior Access Blast doors"; + pixel_x = 6; + pixel_y = -2; + req_access = list("command") + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "vEu" = ( -/obj/structure/chair/comfy/black{ - dir = 4 +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/computer/crew{ + dir = 8 }, -/turf/open/floor/wood, -/area/station/service/library) -"vEB" = ( -/obj/machinery/light/directional/west, -/obj/machinery/newscaster/directional/west, -/obj/machinery/chem_master/condimaster{ - desc = "Looks like a knock-off chem-master. Perhaps useful for separating liquids when mixing drinks precisely. Also dispenses condiments."; - name = "HoochMaster Deluxe" +/obj/machinery/button/door/directional/east{ + pixel_y = 6; + id = "cmo_office_shutters"; + name = "CMO Office Shutters Control"; + req_access = list("cmo") + }, +/obj/machinery/button/door/directional/east{ + pixel_y = -6; + id = "med_lockdown"; + name = "Medical Lockdown" }, +/obj/machinery/button/door/directional/east{ + pixel_y = 6; + id = "cmo_desk_shutters"; + name = "Desk Shutters Control"; + req_access = list("cmo"); + pixel_x = 36 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) +"vEB" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/structure/reagent_dispensers/beerkeg, /turf/open/floor/wood, /area/station/service/bar/backroom) +"vEH" = ( +/obj/machinery/shower/directional/west, +/obj/structure/drain, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/virology) "vEP" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -64879,16 +64637,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"vER" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/small/directional/east, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "vEV" = ( /obj/machinery/atmospherics/components/tank, /turf/open/floor/iron, @@ -64896,16 +64644,6 @@ "vFa" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/security/armory) -"vFe" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/structure/bookcase/manuals/engineering, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/engineering/break_room) "vFg" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide{ valve_open = 1 @@ -64913,24 +64651,10 @@ /obj/machinery/atmospherics/miner/n2o, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) -"vFB" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - desc = "Used for monitoring medbay to ensure patient safety."; - dir = 4; - name = "Medbay Monitor"; - network = list("medbay") - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"vFG" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +"vFG" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -64944,16 +64668,12 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"vFQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +"vFJ" = ( +/obj/machinery/status_display/evac/directional/east, +/turf/open/floor/iron/dark/side{ dir = 4 }, -/obj/structure/cable/layer1, -/turf/open/floor/iron, -/area/station/engineering/storage) +/area/station/engineering/atmos/office) "vFV" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -64971,12 +64691,17 @@ /turf/open/floor/iron/dark, /area/station/security/prison/visit) "vGb" = ( +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, /obj/structure/disposalpipe/trunk{ dir = 8 }, /obj/machinery/disposal/bin, -/obj/machinery/light_switch/directional/east, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark/side{ dir = 6 }, @@ -64999,6 +64724,10 @@ }, /turf/open/floor/iron/white/textured, /area/station/science/genetics/cloning) +"vGn" = ( +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/plating, +/area/station/commons/vacant_room/commissary) "vGz" = ( /obj/structure/sign/warning/vacuum/external/directional/north, /obj/structure/cable, @@ -65020,14 +64749,27 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /obj/effect/mapping_helpers/airlock/unres{ - dir = 8 + dir = 4 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"vGY" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/trimline/red/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/station_map/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/brig) "vHb" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -65036,7 +64778,7 @@ name = "Labor Camp Shuttle Airlock"; req_access = list("brig") }, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/dark/textured_large, /area/station/security/processing) "vHc" = ( @@ -65046,27 +64788,35 @@ /turf/open/floor/iron/dark, /area/station/security/brig) "vHf" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "engineering"; - name = "Engineering Blast Door" +/obj/machinery/light/small/directional/south, +/obj/machinery/requests_console/directional/south{ + department = "Engineering"; + name = "Engineering Requests Console" }, -/turf/open/floor/plating, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/supplies, +/turf/open/floor/iron, /area/station/engineering/storage_shared) "vHk" = ( -/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) +"vHt" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 8 }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - id_tag = "medbay_foyer"; - name = "Medbay" +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/duct, +/obj/machinery/door/airlock/bathroom{ + name = "Bathroom"; + id_tag = "med_break_bathroom" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/iron/white/textured, -/area/station/medical/medbay/central) +/area/station/medical/break_room) "vHv" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -65076,20 +64826,25 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/atmos) "vHT" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/left/directional/east{ + name = "Apothecary Desk"; + req_access = list("pharmacy") }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/door/window/right/directional/west{ + name = "Apothecary Desk" + }, +/obj/machinery/door/poddoor/shutters{ + id = "apothecary_ter_desk_shutters"; + name = "Apothecary Tertiary Desk Shutters"; dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/storage) -"vHU" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/obj/structure/desk_bell{ + pixel_x = -6 + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "vIn" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -65108,22 +64863,22 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/security/execution) -"vIP" = ( -/obj/machinery/light/neon_lining{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/black, -/area/station/security/bitden) -"vIQ" = ( +"vIv" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/iron, +/area/station/maintenance/starboard/aft) +"vIM" = ( +/obj/effect/turf_decal/trimline/green/filled/warning, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"vIP" = ( +/obj/machinery/firealarm/directional/west, +/obj/structure/chair/plastic, +/turf/open/floor/iron/dark, +/area/station/security/prison/mess) "vJc" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -65138,32 +64893,45 @@ /turf/open/floor/iron/dark/textured_large, /area/station/engineering/main) "vJe" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 9 }, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/freezerchamber) "vJk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible/layer4, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 4 + }, /turf/open/floor/catwalk_floor, /area/station/engineering/atmos) "vJw" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "vJI" = ( /obj/effect/decal/cleanable/cobweb, /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"vJU" = ( +/obj/machinery/light/directional/west, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "vJW" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, /obj/machinery/light/small/directional/east, +/obj/structure/sign/departments/restroom/directional/east, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/checker, /area/station/security/prison/shower) "vJZ" = ( /obj/effect/turf_decal/stripes/line{ @@ -65176,14 +64944,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"vKd" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/light/directional/east, -/obj/machinery/status_display/ai/directional/east, -/obj/structure/table/glass, -/obj/item/aicard, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "vKf" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ @@ -65197,11 +64957,6 @@ }, /turf/open/floor/iron, /area/station/science/ordnance) -"vKr" = ( -/obj/structure/sink/directional/south, -/obj/structure/mirror/directional/north, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) "vKs" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, @@ -65209,14 +64964,11 @@ /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) "vKt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/tank/air{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "vKu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -65231,9 +64983,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/service/chapel/funeral) -"vLf" = ( -/turf/open/floor/iron, -/area/station/construction) "vLk" = ( /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, @@ -65251,10 +65000,7 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "vLL" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, -/obj/item/radio/intercom/directional/west, +/obj/structure/cable, /turf/open/floor/wood, /area/station/service/bar) "vLQ" = ( @@ -65268,32 +65014,15 @@ dir = 10 }, /area/station/tcommsat/computer) -"vLV" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/glass, -/obj/item/storage/box/gloves, -/turf/open/floor/iron/white, -/area/station/medical/surgery) "vMf" = ( /turf/open/floor/engine, /area/station/science/ordnance/storage) -"vMp" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/button/door/directional/south{ - id = "med_priv_1"; - name = "Privacy Shutters Control" - }, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) "vMt" = ( /turf/open/floor/wood, /area/station/maintenance/starboard/fore) "vMB" = ( /obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/window/reinforced/tinted/spawner/directional/south, +/obj/structure/window/reinforced/tinted, /obj/structure/toilet{ dir = 4 }, @@ -65310,7 +65039,7 @@ dir = 8 }, /obj/structure/sign/poster/official/random/directional/west, -/obj/structure/table, +/obj/structure/filingcabinet, /turf/open/floor/iron/white, /area/station/science/explab) "vML" = ( @@ -65318,8 +65047,10 @@ /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 }, -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/iron/dark/side, /area/station/hallway/primary/aft) "vMT" = ( /obj/effect/turf_decal/box, @@ -65327,9 +65058,13 @@ /turf/open/floor/iron/large, /area/station/cargo/sorting) "vNq" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start/chief_medical_officer, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "vNr" = ( /obj/structure/sign/warning/vacuum/external/directional/south, /obj/structure/cable, @@ -65341,34 +65076,46 @@ /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) "vNz" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 }, -/obj/structure/cable, +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, /turf/open/floor/iron/dark/side{ - dir = 8 + dir = 4 }, -/area/station/engineering/storage_shared) +/area/station/command/heads_quarters/ce) "vNB" = ( /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/obj/structure/chair{ - dir = 4 +/obj/machinery/button/door/directional/west{ + id = "kitchen_sec_shutters"; + name = "Kitchen Shutters Control"; + req_access = list("kitchen") }, -/obj/effect/landmark/start/cook, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"vND" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/line{ + dir = 4 + }, +/obj/structure/sign/poster/official/random/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "vNF" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/oil, /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/smithing) "vOj" = ( @@ -65394,19 +65141,10 @@ /area/station/command/heads_quarters/rd) "vOP" = ( /obj/effect/turf_decal/tile/purple/full, -/obj/effect/turf_decal/box/white, +/obj/effect/turf_decal/box, /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/starboard) -"vOQ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "vOS" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -65422,17 +65160,45 @@ }, /obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark/textured, -/area/station/cargo/office) +/area/station/cargo/sorting) "vOT" = ( /obj/machinery/atmospherics/pipe/layer_manifold/cyan/visible, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmos) "vOV" = ( +/obj/structure/bed/dogbed/runtime, +/mob/living/simple_animal/pet/cat/runtime, +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/cmo) +"vOX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/vaporwave, -/area/station/service/library/printer) +/turf/open/floor/iron/sepia, +/area/station/service/library/artgallery) +"vOY" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_y = 10 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 4 + }, +/obj/item/storage/belt/utility, +/obj/item/flashlight, +/obj/item/clothing/glasses/meson/engine{ + pixel_x = 4; + pixel_y = 8 + }, +/obj/item/pipe_dispenser, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/storage_shared) "vPe" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -65459,13 +65225,13 @@ /turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) "vPL" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/entertainment/coin, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "vPR" = ( /obj/effect/turf_decal/bot, -/obj/machinery/light/small/broken/directional/south, /obj/structure/closet/crate, /obj/item/stack/ore/silver, /obj/item/stack/ore/silver, @@ -65475,14 +65241,10 @@ /turf/open/floor/plating, /area/station/maintenance/port) "vPS" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/shower/directional/south, +/obj/structure/drain, +/turf/open/floor/iron/showroomfloor, /area/station/science/research) "vQg" = ( /obj/effect/turf_decal/trimline/red/filled/corner, @@ -65504,14 +65266,17 @@ /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/atmos) "vQt" = ( -/obj/structure/disposalpipe/segment, +/obj/machinery/light/broken/directional/west, +/obj/structure/noticeboard/directional/west, +/obj/structure/closet/crate/coffin, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/security/brig) +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/fore) "vQw" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/structure/table/wood, +/obj/effect/spawner/random/entertainment/plushie, +/turf/open/floor/wood, +/area/station/security/prison/rec) "vQD" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/structure/table/reinforced, @@ -65543,13 +65308,12 @@ pixel_y = 8; req_access = list("armory") }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/warden) "vQE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ + dir = 4 }, -/obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "vQV" = ( @@ -65557,13 +65321,14 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering/glass{ - name = "Engineering Foyer" + name = "Engineering Office" }, -/obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/any/engineering/general, /turf/open/floor/iron/dark/textured, /area/station/engineering/break_room) @@ -65574,18 +65339,25 @@ /obj/structure/sink/directional/east, /turf/open/floor/iron/dark, /area/station/security/prison/garden) -"vRc" = ( -/obj/structure/lattice, -/obj/structure/disposalpipe/segment{ +"vRe" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/medkit/regular{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/open/floor/iron/dark/side{ dir = 4 }, -/turf/open/space/basic, -/area/space/nearstation) +/area/station/medical/paramedic) "vRh" = ( -/obj/machinery/washing_machine, -/obj/item/clothing/shoes/laceup, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/office) "vRi" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 @@ -65636,13 +65408,6 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"vRJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/white/textured, -/area/station/medical/virology) "vRV" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/customs/auxiliary) @@ -65654,15 +65419,7 @@ "vSc" = ( /obj/structure/closet/secure_closet/personal/cabinet, /turf/open/floor/wood, -/area/station/commons/dorms) -"vSj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/commons/dorms/room5) "vSo" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 6 @@ -65675,20 +65432,30 @@ /obj/item/clothing/glasses/welding{ pixel_y = 4 }, +/obj/item/toy/figure/scientist{ + pixel_x = 9 + }, /turf/open/floor/iron/white, /area/station/science/lab) -"vSr" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 5 +"vSA" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_y = 5 }, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 8 +/obj/item/folder/white{ + pixel_y = 7 }, -/obj/structure/chair/sofa/corp/right{ - dir = 8 +/obj/item/pen{ + pixel_y = 7 }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/item/stamp/head/rd{ + pixel_y = 10 + }, +/obj/item/toy/figure/rd{ + pixel_x = -13 + }, +/turf/open/floor/carpet/purple, +/area/station/command/heads_quarters/rd) "vSE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, @@ -65709,35 +65476,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"vTs" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"vTz" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sink/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/break_room) -"vTy" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 +/obj/structure/filingcabinet, +/turf/open/floor/iron/checker{ + dir = 1 }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) -"vTz" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/area/station/command/heads_quarters/cmo) "vTL" = ( /obj/machinery/duct, /obj/effect/turf_decal/stripes/line, @@ -65761,12 +65507,14 @@ /turf/open/floor/iron/dark/smooth_large, /area/station/science/robotics/mechbay) "vTT" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/engine/atmos) +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/aft) "vTX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -65780,9 +65528,11 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "vUf" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "vUq" = ( /obj/machinery/light_switch/directional/north, /obj/item/radio/intercom/directional/west, @@ -65803,13 +65553,22 @@ /area/station/science/xenobiology) "vUv" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/structure/cable, /obj/machinery/door/window/left/directional/east{ name = "Gateway Control"; req_access = list("gateway") }, -/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/command/gateway) +"vUx" = ( +/obj/machinery/keycard_auth/directional/east, +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/folder/blue, +/obj/item/pen/fountain, +/obj/item/stamp/head/captain, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "vUA" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -65832,18 +65591,48 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "vUY" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/carpet, +/area/station/hallway/secondary/entry) +"vVk" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/obj/machinery/status_display/evac/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/storage) "vVm" = ( /obj/machinery/cryopod/prison{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, /area/station/security/prison/safe) +"vVA" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/hallway/primary/aft) +"vVG" = ( +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/holopad, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/large, +/area/station/engineering/break_room) "vVN" = ( /obj/effect/turf_decal/tile/green/half/contrasted, /obj/machinery/newscaster/directional/north, @@ -65869,10 +65658,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"vVQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) "vVY" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -65904,13 +65689,37 @@ /turf/open/floor/iron/dark/smooth_large, /area/station/security/detectives_office) "vXb" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) -"vXz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/structure/table, +/obj/item/reagent_containers/pill/maintenance, +/obj/item/reagent_containers/pill/maintenance{ + pixel_y = 8; + pixel_x = -7 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"vXf" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/station/security/prison/safe) +"vXu" = ( +/obj/machinery/light/directional/west, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -3; + pixel_y = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"vXz" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, /turf/open/floor/wood, /area/station/service/chapel/funeral) @@ -65953,32 +65762,76 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/visit) -"vYg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ +"vYa" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, +/turf/open/floor/wood, +/area/station/service/library) +"vYd" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/machinery/camera/directional/north{ + c_tag = "Engineering - Front Desk"; + name = "engineering camera" + }, +/obj/machinery/newscaster/directional/north, +/obj/machinery/computer/department_orders/engineering, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/break_room) +"vYg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) +"vYl" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 }, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"vYy" = ( +/obj/machinery/power/port_gen/pacman/pre_loaded, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "vYB" = ( /turf/closed/wall, /area/station/solars/port/fore) -"vYZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/end, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/light/directional/south, +"vYE" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 + }, /turf/open/floor/iron/white, -/area/station/medical/break_room) +/area/station/medical/chemistry) +"vYF" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"vYH" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) +"vYY" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 5 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "vZb" = ( /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark/side, @@ -65986,8 +65839,19 @@ "vZd" = ( /obj/machinery/light/small/directional/south, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"vZe" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/medbay/aft) "vZu" = ( /obj/machinery/light/directional/south, /obj/structure/easel, @@ -65996,22 +65860,12 @@ /obj/item/canvas/twentythree_twentythree, /turf/open/floor/iron/dark/side, /area/station/commons/fitness/recreation) -"vZS" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/structure/table, -/obj/item/book/manual/wiki/atmospherics, -/obj/item/tank/internals/plasmaman/belt/empty{ - pixel_x = -12 - }, -/obj/item/tank/internals/plasmaman/belt/empty{ - pixel_x = 10 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 +"vZw" = ( +/obj/structure/sign/plaques/kiddie/library{ + pixel_x = -32 }, -/area/station/engineering/break_room) +/turf/open/floor/wood, +/area/station/service/library/lounge) "waa" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/bot_white/right, @@ -66034,16 +65888,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"wah" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/mob/living/basic/chicken{ - forced_gender = "male" - }, -/turf/open/floor/grass, -/area/station/service/hydroponics) "waq" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/line{ @@ -66053,13 +65897,18 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) +"wau" = ( +/obj/structure/frame/machine, +/obj/item/circuitboard/machine/chem_master, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "waF" = ( /obj/structure/disposalpipe/sorting/mail/flip, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/mapping_helpers/mail_sorting/service/chapel, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/fore) "wbe" = ( /obj/effect/turf_decal/trimline/neutral/warning, @@ -66068,17 +65917,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"wbn" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/obj/structure/sign/warning/deathsposal/directional/south, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/white, -/area/station/medical/virology) "wbq" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 @@ -66145,20 +65983,6 @@ }, /turf/open/floor/iron, /area/station/science/ordnance) -"wbQ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/break_room) "wce" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -66180,10 +66004,10 @@ name = "Engineering Desk"; req_access = list("atmospherics","engineering") }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engi_lobby_shutters"; - name = "Engineering Lobby Shutters"; - dir = 4 +/obj/machinery/door/poddoor/shutters{ + id = "engi_office_shutters"; + name = "Engineering Shutters"; + dir = 8 }, /obj/structure/desk_bell{ pixel_y = 10; @@ -66225,10 +66049,7 @@ dir = 4 }, /obj/machinery/light/directional/east, -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start/cargo_technician, +/obj/structure/sign/poster/random/directional/east, /turf/open/floor/iron/dark/side{ dir = 4 }, @@ -66241,19 +66062,10 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/commons/vacant_room/office) -"wcZ" = ( -/obj/machinery/light/small/broken/directional/south, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "wdv" = ( /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) -"wdB" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "wdR" = ( /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) @@ -66262,20 +66074,31 @@ dir = 6 }, /obj/item/radio/intercom/directional/east, -/obj/structure/table/glass, +/obj/structure/table, /obj/item/storage/bag/plants/portaseeder, /obj/item/storage/bag/plants/portaseeder, /turf/open/floor/iron/dark/side{ dir = 6 }, /area/station/service/hydroponics/garden) +"wej" = ( +/obj/machinery/holopad, +/turf/open/floor/iron/sepia, +/area/station/service/library/artgallery) "wen" = ( /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "wev" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 4; + name = "freezer passive vent" + }, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) +"weB" = ( +/obj/structure/bookcase/random/religion, +/turf/open/floor/wood, +/area/station/service/library) "weD" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/effect/turf_decal/trimline/neutral/line{ @@ -66298,12 +66121,13 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "wfg" = ( -/obj/structure/chair/wood{ +/obj/effect/turf_decal/tile/brown/fourcorners, +/obj/item/radio/intercom/directional/east, +/obj/machinery/modular_computer/preset/cargochat/medical{ dir = 8 }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/turf/open/floor/iron/white, +/area/station/medical/office) "wfh" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -66316,6 +66140,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"wfv" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/surgery) "wfA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/circuit, @@ -66328,13 +66162,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) -"wfI" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "wfJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66363,6 +66192,13 @@ dir = 9 }, /area/station/hallway/secondary/exit/departure_lounge) +"wga" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/warning{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_blue/warning, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "wgd" = ( /obj/machinery/light/directional/south, /obj/item/radio/intercom/directional/south, @@ -66381,48 +66217,37 @@ /obj/structure/table/reinforced/plasmarglass, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"wgg" = ( -/mob/living/basic/chicken{ - forced_gender = "female" - }, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"wgn" = ( -/obj/effect/turf_decal/stripes/line{ +"wge" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 +/turf/open/floor/wood, +/area/station/service/library/lounge) +"wgn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/dark, +/area/station/service/chapel) "wgv" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/checker, /area/station/security/prison/shower) "wgw" = ( /obj/machinery/smartfridge, /turf/closed/wall, /area/station/security/prison/garden) "wgM" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 1 - }, /obj/machinery/airalarm/directional/east, /obj/structure/closet/l3closet/scientist, /obj/item/extinguisher, -/turf/open/floor/iron/white, +/turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology/hallway) "wgR" = ( /obj/machinery/corral_corner{ @@ -66441,42 +66266,79 @@ /turf/open/floor/plating, /area/station/maintenance/port) "wgZ" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/light/directional/west, -/obj/structure/liquid_pump, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"whb" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/table/glass, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"whh" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Lockers"; - location = "EVA" - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line, -/obj/effect/turf_decal/trimline/dark_blue/line{ +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Psychologist's Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/psychology, +/turf/open/floor/iron/dark/textured, +/area/station/medical/psychology) +"whh" = ( +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/area/station/security/checkpoint/medical) "whr" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 }, -/obj/effect/turf_decal/trimline/green/line{ +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron/dark/side{ dir = 8 }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) +/area/station/cargo/storage) "whv" = ( +/obj/machinery/light/small/directional/south, /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) +"whA" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/structure/table/reinforced/rglass, +/obj/item/paper_bin{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/folder/white{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/pen/red{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/book/manual/wiki/medicine{ + pixel_x = 7 + }, +/obj/item/book/manual/wiki/infections{ + pixel_x = 7; + pixel_y = 3 + }, +/obj/item/hand_labeler, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/radio/headset/headset_med, +/obj/item/clothing/glasses/science, +/obj/item/extrapolator, +/obj/item/device/antibody_scanner, +/obj/item/device/antibody_scanner, +/obj/item/healthanalyzer, +/obj/item/clothing/glasses/hud/health, +/turf/open/floor/iron/white, +/area/station/medical/virology) "whI" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -66492,7 +66354,6 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "whM" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/binary/pump/on{ name = "Incinerator Output Pump"; target_pressure = 4500 @@ -66500,95 +66361,104 @@ /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "whN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/south, -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"wia" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron/white, -/area/station/medical/break_room) +/obj/structure/table, +/obj/item/stock_parts/micro_laser{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/stock_parts/micro_laser{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stock_parts/micro_laser{ + pixel_x = 2 + }, +/obj/item/stock_parts/micro_laser{ + pixel_x = 6; + pixel_y = -2 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) +"whU" = ( +/obj/effect/spawner/random/structure/table_or_rack, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "wic" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/fore) "wig" = ( /obj/machinery/light_switch/directional/south{ - pixel_x = -8 + pixel_x = -5 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 }, -/obj/machinery/firealarm/directional/south, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) "wii" = ( -/obj/effect/spawner/random/entertainment/coin, +/obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/entertainment/coin{ pixel_x = 9; pixel_y = 9 }, +/obj/effect/spawner/random/entertainment/coin, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "wim" = ( -/obj/machinery/light/directional/north, +/obj/machinery/light/small/directional/north, /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, /obj/machinery/modular_computer/preset/civilian, /turf/open/floor/iron/dark, /area/station/science/robotics/mechbay) -"wiC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) "wiD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/fore) "wiI" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/structure/mop_bucket/janitorialcart, +/obj/structure/mop_bucket/janitorialcart{ + dir = 1 + }, /obj/item/mop, -/turf/open/floor/iron/dark/side, +/turf/open/floor/iron/dark, /area/station/service/janitor) -"wja" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/structure/sign/departments/psychology/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"wjf" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/closet/firecloset{ - anchored = 1 - }, +"wiT" = ( +/obj/structure/cable, /turf/open/floor/iron/white, -/area/station/medical/break_room) +/area/station/medical/treatment_center) +"wji" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/turf/open/floor/plating, +/area/station/maintenance/port) +"wjs" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/rack, +/obj/effect/spawner/random/techstorage/medical_all, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "wju" = ( +/obj/effect/turf_decal/tile/purple/full, /obj/effect/turf_decal/bot, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=2"; location = "Research Division" }, -/obj/structure/plasticflaps/opaque, /obj/machinery/duct, -/turf/open/floor/iron/dark, +/obj/structure/plasticflaps/opaque, +/turf/open/floor/iron/dark/smooth_large, /area/station/maintenance/department/science) "wjv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -66611,11 +66481,19 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 9 }, -/obj/machinery/light/directional/west, -/obj/machinery/airalarm/directional/west, +/obj/machinery/status_display/ai/directional/north, /obj/structure/closet/secure_closet/engineering_chief, -/turf/open/floor/iron, +/obj/item/rcl/pre_loaded, +/obj/item/clothing/glasses/meson/engine, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, /area/station/command/heads_quarters/ce) +"wjI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tank/internals/oxygen, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "wjU" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -66624,18 +66502,32 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/science) "wjW" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /obj/machinery/door/poddoor/shutters{ - id = "departures_security_post"; - name = "Security Post Shutters"; + id = "departures_security_checkpoint"; + name = "Security Checkpoint Shutters"; dir = 4 }, /turf/open/floor/plating, /area/station/security/checkpoint/escape) +"wjY" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) +"wkb" = ( +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/computer/communications{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "wkj" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -66645,47 +66537,97 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"wkn" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, +/obj/machinery/door/airlock/atmos{ + name = "Pathology Atmospherics Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/aft) "wko" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "wkK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/lobby) +/obj/structure/sign/poster/official/random/directional/west, +/obj/structure/chair/sofa/middle/maroon{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/commons/fitness) "wkM" = ( -/obj/effect/spawner/random/structure/furniture_parts, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/structure/table/reinforced/rglass, +/obj/machinery/reagentgrinder{ + pixel_y = 8 + }, +/obj/item/toy/figure/chemist{ + pixel_x = -10; + pixel_y = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "wkO" = ( /obj/machinery/light/no_nightlight/directional/west, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"wkX" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/door/window/brigdoor/right/directional/west{ - name = "Research Director's Desk"; - req_access = list("rd") - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"wlm" = ( -/obj/effect/turf_decal/stripes/line, +"wkS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/door/airlock/security/glass{ - name = "Courtroom" +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/dark/textured, -/area/station/security/brig) -"wlw" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) +/obj/machinery/door/poddoor/preopen{ + id = "bridge_exterior_blast_doors"; + name = "Bridge Exterior Access Blast Door" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/station/command/bridge) +"wkX" = ( +/obj/machinery/requests_console/auto_name/directional/east, +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/folder/white, +/obj/item/pen, +/turf/open/floor/wood, +/area/station/medical/psychology) +"wlm" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/airlock/security/glass{ + name = "Courtroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark/textured, +/area/station/security/brig) "wlA" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -66723,18 +66665,22 @@ }, /turf/open/floor/iron/dark, /area/station/commons/fitness) +"wlU" = ( +/obj/machinery/light/small/directional/west, +/mob/living/carbon/human/species/monkey, +/turf/open/floor/grass, +/area/station/medical/virology) "wlX" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/station/solars/port/aft) -"wmi" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +"wmb" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "wml" = ( /obj/effect/turf_decal/stripes/end{ dir = 4 @@ -66746,15 +66692,28 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/foyer) "wmn" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/radio/intercom/directional/west, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, /area/station/hallway/primary/aft) +"wmy" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = 5 + }, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder/red, +/obj/item/pen, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "wmA" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -66772,15 +66731,11 @@ pixel_y = 9; dir = 8 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"wmF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/storage) "wmY" = ( /obj/effect/turf_decal/bot, /obj/structure/closet/masks, @@ -66793,16 +66748,6 @@ /obj/structure/chair/sofa/bench, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"wni" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/structure/table, -/obj/item/stack/sheet/iron/twenty, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/engineering/break_room) "wnl" = ( /turf/open/floor/engine, /area/station/science/explab) @@ -66821,6 +66766,10 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) +"wnF" = ( +/obj/effect/spawner/random/trash/box, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "wnQ" = ( /obj/machinery/mech_bay_recharge_port{ dir = 8 @@ -66828,13 +66777,24 @@ /turf/open/floor/iron, /area/station/cargo/warehouse) "wnR" = ( +/obj/machinery/light/floor/has_bulb, /turf/open/floor/iron/dark/smooth_large, /area/station/security/processing) +"wol" = ( +/obj/effect/turf_decal/trimline/red/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/fore) "wom" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 }, -/obj/structure/table/glass, +/obj/structure/table, /turf/open/floor/iron/dark/side{ dir = 10 }, @@ -66847,15 +66807,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"wou" = ( -/obj/machinery/suit_storage_unit/captain, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) -"wov" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "woy" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/mess, @@ -66868,21 +66819,34 @@ /turf/open/floor/iron, /area/station/cargo/sorting) "woE" = ( -/obj/machinery/newscaster/directional/east, -/obj/machinery/computer/station_alert{ - dir = 8 +/obj/effect/turf_decal/bot, +/obj/machinery/suit_storage_unit/atmos, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) +"woV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/break_room) "wpo" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "law_office_shutters"; name = "Law Office Shutters"; dir = 1 }, /turf/open/floor/plating, /area/station/service/lawoffice) +"wpG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "wpO" = ( /obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, /turf/open/floor/engine, @@ -66891,13 +66855,19 @@ /obj/effect/spawner/random/structure/table, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"wqd" = ( -/obj/effect/turf_decal/bot, -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/plasma/five, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) +"wqc" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/obj/machinery/airalarm/directional/north, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/empty, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/break_room) "wql" = ( /obj/machinery/airalarm/directional/east, /obj/machinery/light/directional/east, @@ -66905,7 +66875,6 @@ dir = 9 }, /obj/structure/closet/l3closet/scientist, -/obj/item/extinguisher, /turf/open/floor/iron/dark/textured, /area/station/command/gateway) "wqm" = ( @@ -66918,6 +66887,9 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark, /area/station/security/office) +"wqq" = ( +/turf/open/floor/carpet/blue, +/area/station/command/heads_quarters/cmo) "wqv" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -66958,22 +66930,16 @@ /obj/effect/turf_decal/bot_white, /obj/machinery/button/door/directional/west{ id = "qm_warehouse"; - name = "Warehouse Door Control"; + name = "Warehouse Shutters Control"; req_access = list("cargo") }, /obj/structure/cargo_shelf, /turf/open/floor/iron, /area/station/cargo/warehouse) -"wqM" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/machinery/light/directional/west, +"wqW" = ( +/obj/machinery/duct, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/area/station/medical/virology) "wqY" = ( /obj/effect/turf_decal/box, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -66982,6 +66948,21 @@ /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/security/prison) +"wrc" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology/glass{ + name = "Primary Pathology Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/turf/open/floor/iron/white/textured, +/area/station/medical/virology) "wri" = ( /obj/structure/table_frame, /obj/item/stack/sheet/iron, @@ -66997,17 +66978,17 @@ "wrt" = ( /obj/machinery/requests_console/directional/south{ department = "Science"; - name = "Science Requests Console"; - receive_ore_updates = 1; - supplies_requestable = 1 + name = "Science Requests Console" }, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/structure/table/reinforced/plasmarglass, /obj/item/book/manual/wiki/cytology{ pixel_x = -4; pixel_y = 4 }, /obj/item/book/manual/wiki/plumbing, /obj/item/storage/box/petridish, -/obj/structure/table/reinforced/plasmarglass, /turf/open/floor/iron/white, /area/station/science/xenobiology) "wrA" = ( @@ -67031,7 +67012,7 @@ /turf/open/floor/iron/white, /area/station/science/research) "wsc" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/effect/turf_decal/tile/dark_blue/full, /obj/effect/turf_decal/loading_area/white{ dir = 4 }, @@ -67040,19 +67021,15 @@ id = "hop_queue"; name = "HoP Queue Shutters" }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) "wsn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/west, -/obj/structure/closet/crate, -/obj/effect/spawner/random/contraband/prison, -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/machinery/light/small/directional/north, +/obj/machinery/status_display/evac/directional/north, +/obj/machinery/computer/order_console/bitrunning, /turf/open/floor/iron/dark, -/area/station/security/prison/work) +/area/station/security/bitden) "wsq" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -67070,47 +67047,35 @@ dir = 1 }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/public/glass{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/machinery/door/airlock/grunge{ name = "Gambling Den" }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, /turf/open/floor/iron/dark/textured, -/area/station/maintenance/starboard/aft) +/area/station/service/abandoned_gambling_den) "wsy" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/reinforced, /area/station/science/ordnance) +"wsB" = ( +/obj/machinery/light/directional/east, +/obj/structure/sign/painting/library{ + pixel_x = 32 + }, +/turf/open/floor/wood, +/area/station/service/library/lounge) "wsE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/circuits) -"wsQ" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/white, -/area/station/medical/office) "wsT" = ( /obj/machinery/status_display/evac/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) -"wtm" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "wtn" = ( /obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -67120,6 +67085,7 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/port) "wtt" = ( +/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, @@ -67132,18 +67098,44 @@ pixel_x = 8; pixel_y = 8 }, -/obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark, /area/station/security/prison/garden) "wtF" = ( /turf/closed/wall/r_wall, /area/station/science/xenobiology) +"wtM" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "wtN" = ( -/obj/structure/sign/poster/random/directional/north, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/clothing/costume, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/window/left/directional/west, +/turf/open/floor/iron/dark/textured, +/area/station/service/abandoned_gambling_den) +"wtQ" = ( +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + name = "External Ports to Scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + dir = 8; + name = "Supply to External Ports" + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/break_room) "wtX" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 6 @@ -67154,58 +67146,42 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) +"wuf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/cigbutt, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "wui" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/holopad, +/obj/machinery/duct, /turf/open/floor/wood, /area/station/service/bar) -"wuj" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "wuk" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/table, /obj/item/storage/box/lights/mixed, /obj/item/storage/box/lights/mixed{ - pixel_x = -3; + pixel_x = 3; pixel_y = 3 }, /obj/item/storage/box/lights/mixed{ pixel_y = 6; - pixel_x = -6 + pixel_x = 6 }, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) -"wup" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "cmo_shutters"; - name = "CMO Office Shutters" - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/cmo) "wuE" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/small/directional/east, -/obj/structure/chair/office{ - dir = 1 +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark, -/area/station/security/detectives_office) +/area/station/hallway/secondary/entry) "wuH" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/warning{ dir = 4 @@ -67224,18 +67200,13 @@ dir = 8 }, /area/station/service/hydroponics) -"wvb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/prison) "wvd" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/machinery/firealarm/directional/west, +/obj/machinery/firealarm/directional/south, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload_foyer) "wvg" = ( @@ -67255,24 +67226,29 @@ /obj/item/radio/off, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) -"wvi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "wvU" = ( /obj/machinery/light/small/directional/west, /obj/machinery/duct, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) +"wvX" = ( +/obj/item/radio/intercom/directional/east, +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/folder/blue, +/obj/item/pen, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) +"wwm" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/grass, +/area/station/medical/virology) "wwC" = ( /obj/structure/displaycase/labcage, /turf/open/floor/iron/vaporwave, /area/station/command/heads_quarters/rd) -"wwI" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "wwN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -67312,9 +67288,15 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) "wxf" = ( +/obj/effect/turf_decal/trimline/neutral/filled/warning{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/warning, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "wxl" = ( /obj/structure/closet/crate/secure/science{ req_access = list("robotics"); @@ -67332,7 +67314,7 @@ /turf/open/floor/iron, /area/station/science/robotics/mechbay) "wxo" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 }, /turf/open/floor/engine/vacuum, @@ -67364,10 +67346,9 @@ /turf/open/floor/wood, /area/station/security/prison/safe) "wxT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/filingcabinet, +/obj/machinery/exodrone_launcher, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/area/station/cargo/drone_bay) "wxU" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating/airless, @@ -67378,16 +67359,18 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/mess) -"wye" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +"wyb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/white, +/area/station/medical/surgery) +"wyE" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 + }, +/obj/machinery/computer/station_alert, +/turf/open/floor/iron/dark/side{ + dir = 5 }, -/turf/open/floor/iron/large, /area/station/engineering/break_room) "wyL" = ( /obj/structure/disposalpipe/segment, @@ -67398,45 +67381,17 @@ dir = 1 }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"wyS" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"wyZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/warning, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "wzb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/chair/wood{ - dir = 4 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 }, -/turf/open/floor/wood, -/area/station/service/library/lounge) -"wzj" = ( -/obj/structure/closet/secure_closet/blueshield, -/obj/item/storage/bag/garment/blueshield, -/obj/item/storage/backpack/satchel/blueshield, -/obj/item/storage/backpack/duffelbag/blueshield, -/obj/item/storage/backpack/blueshield, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) +/obj/structure/tank_holder/extinguisher, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/engineering/storage_shared) "wzl" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -67469,32 +67424,20 @@ /obj/item/folder/yellow, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) -"wzz" = ( -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +"wzA" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/wood, +/area/station/service/library) "wzI" = ( -/obj/structure/chair/stool/directional/south, +/obj/structure/chair/plastic, /turf/open/floor/iron/dark, /area/station/security/prison/mess) -"wzK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/camera/directional/south{ - c_tag = "Medical - Storage Room, South"; - name = "medical camera"; - network = list("ss13","medbay") - }, -/obj/machinery/light/small/directional/south, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/storage) "wzL" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters{ id = "sci_west_win_shutters"; name = "Research Division Shutters"; dir = 8 @@ -67517,23 +67460,30 @@ /turf/open/floor/iron/checker, /area/station/science/lab) "wzX" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/engineering/atmos/pumproom) +/obj/machinery/newscaster/directional/west, +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/library/private) "wAd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/prison/mess) +"wAj" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/light/small/directional/south, +/obj/machinery/iv_drip, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "wAm" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "wAE" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/decoration/glowstick, @@ -67541,9 +67491,11 @@ /area/station/maintenance/port/aft) "wAR" = ( /obj/machinery/light_switch/directional/south{ - pixel_x = -8 + pixel_x = -5 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 }, -/obj/machinery/firealarm/directional/south, /obj/structure/disposalpipe/trunk{ dir = 4 }, @@ -67557,17 +67509,19 @@ /obj/structure/railing, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"wBm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_half{ + dir = 8 + }, +/area/station/service/chapel) "wBu" = ( /obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_y = 3 - }, -/obj/effect/spawner/random/bureaucracy/folder{ - pixel_y = 5 - }, -/obj/item/pen{ - pixel_y = 5 - }, +/obj/item/paper_bin, +/obj/item/folder, +/obj/item/pen, /turf/open/floor/wood, /area/station/security/prison/rec) "wBy" = ( @@ -67575,9 +67529,21 @@ dir = 1; name = "plasma mixer" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"wBB" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/line{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "wBF" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/table_or_rack, @@ -67593,23 +67559,17 @@ /turf/open/floor/iron/checker, /area/station/science/lab) "wBY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/tank_dispenser, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/obj/machinery/duct, +/turf/open/floor/iron, +/area/station/engineering/main) "wCb" = ( /obj/effect/spawner/random/engineering/tool, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) -"wCe" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/modular_computer/preset/id, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "wCn" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -67627,20 +67587,10 @@ }, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) -"wCp" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/sign/warning/no_smoking/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"wCx" = ( -/obj/effect/turf_decal/trimline/red/filled/warning{ - dir = 6 +/area/station/cargo/storage) +"wCx" = ( +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 6 }, /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/chair{ @@ -67649,38 +67599,30 @@ /turf/open/floor/iron/dark, /area/station/security/brig) "wCD" = ( -/obj/structure/chair/comfy/black, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood, -/area/station/service/library) -"wCS" = ( -/obj/structure/plasticflaps/opaque, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - location = "Atmospherics" - }, +/obj/effect/turf_decal/tile/yellow/full, /obj/effect/turf_decal/delivery, -/obj/machinery/door/poddoor/preopen{ - id = "engineering"; - name = "Engineering Blast Door" - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/medical) +/turf/open/floor/iron/large, +/area/station/engineering/storage) "wCX" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/light/small/directional/west, -/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark, /area/station/engineering/atmos/storage) +"wDe" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "wDg" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/structure/chair/office/light{ +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/structure/chair/sofa/corp/left{ dir = 4 }, -/obj/effect/landmark/start/librarian, -/turf/open/floor/iron/dark, -/area/station/service/library/printer) +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "wDy" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/camera/autoname/directional/east, @@ -67732,10 +67674,15 @@ /area/station/service/kitchen) "wEv" = ( /obj/machinery/light/directional/west, -/obj/structure/chair/stool/directional/north, -/obj/item/radio/intercom/directional/west, +/obj/structure/bed/double{ + dir = 4 + }, +/obj/item/bedsheet/dorms_double{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, /turf/open/floor/wood, -/area/station/commons/dorms) +/area/station/commons/dorms/room5) "wEy" = ( /obj/effect/turf_decal/bot, /obj/machinery/camera/directional/west{ @@ -67759,18 +67706,6 @@ dir = 4 }, /area/station/commons/dorms) -"wEK" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/recharge_station, -/obj/effect/landmark/start/cyborg, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) -"wFc" = ( -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/meeting_room) "wFf" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -67788,7 +67723,7 @@ /turf/open/floor/iron, /area/station/science/ordnance/office) "wFu" = ( -/obj/structure/chair/comfy/beige, +/obj/structure/chair/comfy/brown, /obj/effect/landmark/start/assistant, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) @@ -67796,24 +67731,32 @@ /obj/structure/grille, /turf/closed/wall/r_wall, /area/station/engineering/atmos) -"wFI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "wFZ" = ( -/obj/structure/chair/stool/directional/south, +/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil/slippery, +/obj/structure/chair/stool/directional/south, /turf/open/floor/plating, /area/station/maintenance/department/electrical) +"wGc" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_y = 8 + }, +/obj/item/reagent_containers/cup/glass/shaker{ + pixel_x = -9; + pixel_y = 3 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = -4 + }, +/turf/open/floor/wood, +/area/station/service/bar) "wGe" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "wGf" = ( /obj/effect/turf_decal/trimline/neutral/filled/warning, /obj/effect/turf_decal/trimline/neutral/warning{ @@ -67821,15 +67764,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"wGg" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) "wGh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67855,8 +67789,8 @@ dir = 1 }, /obj/machinery/light/directional/south, -/obj/machinery/newscaster/directional/south, -/obj/structure/table, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) "wGm" = ( @@ -67864,34 +67798,11 @@ /obj/item/storage/fancy/candle_box/amber, /turf/open/floor/wood, /area/station/service/chapel/funeral) -"wGq" = ( -/obj/structure/table, -/obj/item/radio/off{ - pixel_y = 6 - }, -/obj/item/radio/off{ - pixel_x = -6; - pixel_y = 4 - }, -/obj/item/radio/off{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/item/radio/off, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) "wGs" = ( -/obj/machinery/light/neon_lining{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/carpet/black, -/area/station/security/bitden) +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/security/prison/rec) "wGw" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/effect/turf_decal/stripes/line{ @@ -67916,32 +67827,20 @@ /turf/open/floor/iron/dark/side, /area/station/service/hydroponics) "wGI" = ( -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/kitchen, -/area/station/security/prison/mess) -"wGN" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/department/engine/atmos) -"wGQ" = ( -/obj/structure/table, -/obj/item/crowbar/red, -/turf/open/floor/iron, -/area/station/engineering/break_room) +/obj/machinery/shower/directional/south, +/obj/structure/drain, +/obj/item/soap/homemade, +/turf/open/floor/iron/showroomfloor, +/area/station/security/prison/shower) "wGT" = ( /obj/machinery/computer/records/medical, /turf/open/floor/wood, /area/station/security/detectives_office) -"wHi" = ( -/obj/machinery/bluespace_beacon, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) +"wHt" = ( +/obj/machinery/light/directional/west, +/obj/item/kirbyplants/random, +/turf/open/floor/wood, +/area/station/security/prison/rec) "wHD" = ( /obj/machinery/light/small/directional/west, /obj/machinery/button/door/directional/west{ @@ -67953,6 +67852,23 @@ /obj/machinery/recharge_station, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) +"wHG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters{ + id = "teleporter_shutters"; + name = "Teleporter Room Shutters"; + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/station/command/teleporter) "wHJ" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -67979,10 +67895,27 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "wHW" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) +"wId" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 + }, +/obj/structure/chair/comfy/black, +/obj/effect/landmark/start/assistant, +/turf/open/floor/wood, +/area/station/service/library) "wIi" = ( /obj/structure/flora/bush/flowers_pp/style_random, /obj/structure/flora/bush/sunny/style_random, @@ -67991,9 +67924,9 @@ /turf/open/floor/grass, /area/station/ai_monitored/security/armory) "wIn" = ( -/obj/effect/spawner/random/trash/box, -/turf/open/floor/plating, -/area/station/maintenance/department/science) +/obj/structure/table, +/turf/open/floor/wood, +/area/station/smithing) "wIr" = ( /obj/structure/chair/pew/left{ dir = 1 @@ -68005,21 +67938,13 @@ "wIv" = ( /turf/closed/wall, /area/station/maintenance/department/security/brig) -"wIx" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/line{ +"wID" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 }, -/obj/machinery/light/small/directional/south, -/obj/structure/sign/departments/exam_room/directional/south, +/obj/effect/turf_decal/trimline/blue/warning, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"wID" = ( -/obj/structure/sign/departments/medbay/alt/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) "wIG" = ( /obj/structure/chair/stool/directional/east, /obj/effect/landmark/start/hangover, @@ -68044,51 +67969,47 @@ /turf/open/floor/wood, /area/station/security/detectives_office) "wJa" = ( -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, -/area/station/maintenance/port/aft) -"wJm" = ( -/obj/effect/turf_decal/stripes/line{ +/area/station/maintenance/department/engine) +"wJe" = ( +/turf/open/floor/iron/dark/smooth_corner{ dir = 1 }, -/turf/open/floor/iron/dark, +/area/station/service/chapel) +"wJm" = ( +/obj/structure/cable, +/obj/machinery/power/floodlight, +/turf/open/floor/plating, /area/station/engineering/atmos) -"wJr" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ +"wJo" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, /obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/virology) +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/security/interrogation) "wJA" = ( -/obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, +/obj/structure/bonfire, /turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/area/station/maintenance/starboard/aft) "wJK" = ( -/obj/structure/table/reinforced, -/obj/item/gun_maintenance_supplies{ - pixel_x = -4; - pixel_y = 10 +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/closet/emcloset, +/obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, -/area/station/command/heads_quarters/blueshield) -"wJP" = ( -/obj/structure/rack, -/obj/item/clothing/suit/hazardvest, -/turf/open/floor/iron, -/area/station/construction) +/area/station/hallway/primary/central) "wJW" = ( /obj/structure/chair/stool/directional/north, /obj/effect/landmark/start/assistant, @@ -68096,46 +68017,51 @@ dir = 6 }, /area/station/commons/dorms) -"wKg" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "wKi" = ( /obj/machinery/nuclearbomb/selfdestruct, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) +"wKr" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/window/reinforced/spawner/directional/south, +/mob/living/basic/chicken, +/turf/open/floor/grass, +/area/station/service/hydroponics) "wKv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/item/stack/ore/silver, /turf/open/floor/iron/dark/smooth_large, /area/station/cargo/miningoffice) "wKE" = ( -/obj/effect/turf_decal/trimline/neutral/filled/corner, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"wKG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/machinery/camera/directional/south{ + c_tag = "Engineering - Break Room"; + name = "engineering camera" + }, +/turf/open/floor/iron/dark/side, +/area/station/engineering/break_room) +"wKF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured, +/area/station/medical/cryo) +"wKG" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) "wKV" = ( @@ -68148,25 +68074,37 @@ }, /turf/open/floor/grass, /area/station/service/hydroponics) -"wKW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "wLa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/wood, /area/station/commons/vacant_room/office) "wLb" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 5 + }, /area/station/security/interrogation) +"wLd" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology/glass{ + name = "Isolation 2" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/turf/open/floor/iron/white/textured, +/area/station/medical/virology) "wLm" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 10 @@ -68189,10 +68127,14 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"wLK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +"wLx" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) +/area/station/hallway/primary/port) "wLQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -68219,19 +68161,15 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"wMo" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) "wMs" = ( /obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/south, /obj/structure/table, +/obj/item/stack/cable_coil, /obj/item/stack/cable_coil{ pixel_y = 7; pixel_x = 3 }, -/obj/item/stack/cable_coil, /obj/item/storage/box/lights/mixed, /obj/item/crowbar/large, /obj/item/tank/internals/oxygen/yellow{ @@ -68253,8 +68191,14 @@ /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, /turf/open/floor/plating, -/area/station/maintenance/port/fore) +/area/station/commons/dorms) +"wMD" = ( +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "wMK" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, @@ -68277,22 +68221,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Cryo" +/obj/machinery/door/airlock/public/glass{ + name = "Prison Cryogenic Lounge" }, /obj/structure/cable, /turf/open/floor/iron/dark/textured, /area/station/security/prison/safe) -"wNv" = ( -/obj/effect/landmark/blobstart, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 +"wNr" = ( +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/trimline/red/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) +/obj/machinery/duct, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/security/interrogation) "wNw" = ( /obj/machinery/door/firedoor/border_only, /obj/machinery/door/window/left/directional/south{ @@ -68309,16 +68255,6 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/white, /area/station/science/research) -"wNz" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "wND" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/airless, @@ -68342,7 +68278,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 6 }, -/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) "wOd" = ( @@ -68366,37 +68301,28 @@ /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) "wOy" = ( +/obj/structure/cable, /obj/effect/spawner/random/vending/snackvend, -/obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark, /area/station/security/prison/mess) "wOC" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side, /area/station/command/heads_quarters/ce) "wOD" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 +/obj/machinery/firealarm/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) -"wOI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "wOJ" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 }, -/obj/machinery/light_switch/directional/south, -/obj/machinery/button/door/directional/east{ +/obj/machinery/button/door/directional/south{ id = "justice_chamber"; - name = "Door Bolt Control"; + name = "Airlock Bolt Control"; normaldoorcontrol = 1; specialfunctions = 4 }, @@ -68411,25 +68337,50 @@ }, /turf/open/floor/iron/dark, /area/station/security/execution) +"wOK" = ( +/obj/machinery/newscaster/directional/north, +/obj/structure/table, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "wOS" = ( /obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/random/food_or_drink/booze{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/effect/spawner/random/food_or_drink/booze{ + pixel_x = 4; + pixel_y = 6 + }, /turf/open/floor/wood, /area/station/maintenance/port/fore) +"wPc" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"wPy" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/structure/mirror/directional/east, +/obj/structure/sink/directional/west, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) "wPA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/structure/chair{ dir = 1 }, /obj/effect/landmark/start/scientist, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"wPH" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/captain) "wPK" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister, @@ -68441,10 +68392,6 @@ }, /turf/open/floor/carpet/green, /area/station/commons/locker) -"wPP" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) "wPR" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -68458,22 +68405,19 @@ id = "perma_lockdown"; name = "Lockdown Blast Door" }, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/effect/mapping_helpers/airlock/access/all/security/general, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "perma-entrance" }, /turf/open/floor/iron/dark/textured, /area/station/security/execution/transfer) "wPT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "wPX" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -68481,7 +68425,7 @@ /turf/open/floor/iron, /area/station/cargo/storage) "wQa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4, /turf/open/floor/iron/dark, /area/station/engineering/atmos) "wQk" = ( @@ -68492,6 +68436,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, +/obj/machinery/door/firedoor, /obj/machinery/door/airlock/grunge{ name = "Prison Showers" }, @@ -68526,38 +68471,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/aft) -"wQQ" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating, -/area/station/maintenance/department/security/brig) -"wRe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"wRl" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/structure/sign/departments/security/directional/south, -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "wRs" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, /area/station/maintenance/port/fore) "wRJ" = ( -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/large, -/area/station/hallway/primary/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance{ + name = "Paramedic Office Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/medical/paramedic) "wRN" = ( /turf/closed/wall, /area/station/science/ordnance/bomb) @@ -68568,6 +68498,7 @@ }, /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/closet/firecloset/full, +/obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "wSk" = ( @@ -68589,11 +68520,20 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "wSn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/effect/turf_decal/bot, +/obj/machinery/pipedispenser/disposal, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos) +"wSs" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 4 + }, +/obj/machinery/station_map/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "wSt" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/clothing/costume, @@ -68628,23 +68568,17 @@ "wSQ" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/bot, -/obj/structure/sign/poster/official/random/directional/north, +/obj/machinery/airalarm/directional/north, /obj/machinery/vending/tool, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) -"wTb" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/structure/closet/secure_closet/engineering_personal, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/engineering/storage_shared) -"wTy" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 +"wSR" = ( +/obj/effect/spawner/random/vending/colavend, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"wTy" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 4 }, /obj/structure/extinguisher_cabinet/directional/east, /obj/structure/disposalpipe/segment, @@ -68670,50 +68604,33 @@ "wTD" = ( /obj/structure/cable, /obj/machinery/light/directional/west, -/obj/machinery/power/terminal{ - dir = 4 - }, +/obj/machinery/status_display/ai/directional/west, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) -"wTM" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery) -"wTN" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 10 - }, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light_switch/directional/south{ - pixel_x = -8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) "wUn" = ( /obj/structure/table/wood, -/obj/item/paper_bin/carbon{ - pixel_y = 4 - }, -/obj/effect/spawner/random/bureaucracy/folder{ - pixel_y = 6 - }, -/obj/effect/spawner/random/bureaucracy/pen{ - pixel_y = 6 - }, +/obj/item/paper_bin, +/obj/item/folder, +/obj/item/pen, /turf/open/floor/carpet/red, /area/station/commons/vacant_room/office) +"wUo" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/office) "wUr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/computer/security/telescreen/cmo{ + dir = 4; + pixel_x = -30 + }, +/obj/machinery/modular_computer/preset/id{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "wUx" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/closet/crate/secure/weapon{ @@ -68733,6 +68650,7 @@ "wVm" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/light/directional/south, +/obj/structure/sign/poster/official/random/directional/south, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, @@ -68743,40 +68661,22 @@ /obj/item/stack/sheet/iron/fifty, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"wWf" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/sink/directional/east, +"wVV" = ( +/obj/effect/turf_decal/tile/purple/fourcorners, +/obj/structure/table/reinforced, +/obj/item/aicard, /turf/open/floor/iron/dark, -/area/station/medical/exam_room) +/area/station/command/bridge) +"wWd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "wWh" = ( /obj/effect/spawner/random/vending/colavend, /turf/open/floor/iron/dark/side{ dir = 9 }, /area/station/hallway/secondary/service) -"wWi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"wWt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "Patient Room 1" - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/patients_rooms/room_a) "wWv" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -68792,29 +68692,18 @@ /turf/open/floor/iron/white, /area/station/science/robotics/lab) "wWx" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/duct, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "wWJ" = ( /obj/effect/turf_decal/trimline/dark_blue/warning{ dir = 4 }, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) -"wWU" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/space_heater, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"wWZ" = ( -/obj/machinery/biogenerator, -/obj/item/radio/intercom/prison/directional/south, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/security/prison/garden) "wXi" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -68824,19 +68713,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"wXy" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/medical/medbay/aft) "wXz" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 8 @@ -68856,13 +68732,19 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining{ + name = "Drone Bay" }, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/effect/landmark/navigate_destination{ + location = "Drone Bay" + }, +/turf/open/floor/iron/textured, +/area/station/cargo/drone_bay) "wXC" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -68878,11 +68760,6 @@ }, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/foyer) -"wXG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/dark, -/area/station/science/research/abandoned) "wXM" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -68904,34 +68781,21 @@ /obj/structure/cable, /obj/machinery/duct, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) +"wXX" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "wYc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/airlock/maintenance{ name = "Crematorium Maintenance" }, -/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) -"wYn" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, -/area/station/medical/office) -"wYA" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_y = 4 - }, -/obj/effect/spawner/random/bureaucracy/folder{ - pixel_y = 6 - }, -/obj/effect/spawner/random/bureaucracy/pen{ - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) +/obj/effect/mapping_helpers/airlock/access/all/service/crematorium, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/service/chapel/office) "wYC" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -68955,22 +68819,13 @@ /obj/structure/cable, /turf/open/floor/iron/dark/textured, /area/station/security/brig) -"wYV" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/station_map/engineering/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/primary/central) "wZh" = ( /obj/effect/turf_decal/delivery, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; location = "Hydroponics" }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/service) "wZk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -69023,8 +68878,22 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/engineering/tank, /turf/open/floor/iron/dark/corner, /area/station/maintenance/starboard/aft) +"xaE" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/machinery/plumbing/pill_press, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) +"xaF" = ( +/obj/structure/sign/poster/random/directional/west, +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "xaW" = ( /obj/machinery/rnd/server/master, /turf/open/floor/circuit/telecomms/server, @@ -69032,15 +68901,6 @@ "xba" = ( /turf/closed/wall/r_wall, /area/station/maintenance/port/aft) -"xby" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/light/small/directional/east, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/structure/closet/crate/freezer/surplus_limbs, -/turf/open/floor/iron/white, -/area/station/medical/surgery) "xbz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible, /obj/machinery/meter, @@ -69052,7 +68912,6 @@ /area/station/maintenance/starboard/aft) "xbJ" = ( /obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/spawner/random/vending/colavend, /turf/open/floor/iron/dark, /area/station/security/courtroom) @@ -69068,9 +68927,14 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 6 }, -/obj/machinery/light_switch/directional/south, -/obj/machinery/firealarm/directional/east, +/obj/machinery/light_switch/directional/east{ + pixel_y = -5 + }, +/obj/machinery/firealarm/directional/east{ + pixel_y = 5 + }, /obj/machinery/module_duplicator, +/obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/white, /area/station/science/circuits) "xcb" = ( @@ -69082,28 +68946,15 @@ /turf/open/floor/iron/dark, /area/station/service/chapel) "xcd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"xcl" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/recharge_station, -/turf/open/floor/iron/dark/side{ - dir = 9 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/area/station/engineering/break_room) -"xct" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/white/textured, -/area/station/medical/chemistry) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "xcx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69113,19 +68964,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"xcB" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/carpet/cyan, -/area/station/medical/break_room) -"xcK" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) "xcL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69133,6 +68971,7 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/machinery/duct, /turf/open/floor/iron, /area/station/hallway/secondary/service) "xcO" = ( @@ -69153,30 +68992,43 @@ "xdw" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; +/obj/machinery/door/poddoor/shutters{ id = "hop"; - name = "Privacy Shutters" + name = "Privacy Shutters"; + dir = 8 }, /turf/open/floor/plating, /area/station/command/heads_quarters/hop) -"xdz" = ( -/obj/effect/spawner/random/trash/graffiti, +"xdx" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/command/bridge) +"xdD" = ( +/obj/machinery/firealarm/directional/east, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"xdI" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, +/turf/open/floor/plating, +/area/station/medical/cryo) "xdJ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, /turf/open/floor/iron/dark/side, /area/station/commons/fitness) +"xdK" = ( +/obj/structure/displaycase/captain, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "xdM" = ( /obj/structure/table, /obj/item/paper/fluff/holodeck/disclaimer, /obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = -3 + pixel_x = 6; + pixel_y = 6 }, /turf/open/floor/iron/dark, /area/station/commons/fitness) @@ -69197,49 +69049,40 @@ /obj/structure/sign/departments/cargo/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"xew" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ +"xdV" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/trimline/red/line{ dir = 1 }, -/obj/machinery/requests_console/directional/north{ - anon_tips_receiver = 1; - assistance_requestable = 1; - department = "Security"; - name = "Security Requests Console" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/station_map/directional/south, /turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) +/area/station/hallway/primary/fore) "xey" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/station/engineering/gravity_generator) "xeH" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/delivery_chute{ - dir = 1 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 }, -/obj/structure/railing{ +/obj/effect/turf_decal/trimline/red/corner{ dir = 8 }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/dark/side{ + dir = 5 + }, +/area/station/hallway/primary/aft) "xeM" = ( /obj/machinery/computer/security/qm{ dir = 8 }, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) -"xeU" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 2 - }, -/obj/effect/mapping_helpers/mail_sorting/medbay/virology, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/virology) "xeX" = ( /turf/open/floor/iron/dark/side{ dir = 4 @@ -69265,19 +69108,20 @@ "xft" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/structure/chair/office/light{ dir = 1 }, /obj/effect/landmark/start/detective, /turf/open/floor/wood, /area/station/security/detectives_office) -"xfv" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 +"xfA" = ( +/obj/machinery/duct, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 }, -/obj/structure/disposaloutlet, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "xfN" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 5 @@ -69286,11 +69130,16 @@ dir = 8 }, /obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/side{ + dir = 5 + }, /area/station/hallway/primary/aft) "xfT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, +/obj/machinery/firealarm/directional/north, +/obj/structure/closet/crate, +/turf/open/floor/iron/dark/side{ + dir = 5 + }, /area/station/security/prison/safe) "xfW" = ( /obj/structure/disposalpipe/segment, @@ -69313,73 +69162,73 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "xgj" = ( -/turf/closed/wall, -/area/station/science/research/abandoned) -"xgl" = ( -/obj/structure/bookcase/random/reference, -/turf/open/floor/wood, -/area/station/service/library) -"xgm" = ( -/obj/structure/sign/departments/security/directional/west, +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 + }, +/obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/hallway/primary/central) +"xgl" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/airlock/public/glass{ + name = "Library Lounge" + }, +/turf/open/floor/iron/dark/textured, +/area/station/service/library/lounge) "xgo" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "Pure to Port Mix" }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"xgp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/engine/atmos) "xgs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, /obj/structure/cable, -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, /turf/open/floor/iron, /area/station/engineering/storage) -"xgu" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 +"xgz" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/security/brig) +"xgB" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 }, -/obj/structure/bodycontainer/morgue, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"xgx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/chair{ - dir = 4 +/turf/open/floor/iron/dark/side{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"xgz" = ( -/obj/machinery/light/small/directional/east, +/area/station/engineering/storage_shared) +"xgI" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance, +/obj/structure/frame/machine, /turf/open/floor/plating, -/area/station/maintenance/department/science) -"xgB" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/light/directional/west, -/obj/machinery/space_heater, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/area/station/maintenance/starboard/aft) "xgR" = ( /obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) -"xgU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/medical/cryo) "xgX" = ( /obj/machinery/light/directional/north, -/obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark, /area/station/security/prison) "xgY" = ( @@ -69389,23 +69238,18 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"xhg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/button/door/directional/north{ - id = "apothecary_shutters"; - name = "Apothecary Shutters Control"; - req_access = list("pharmacy") +"xhf" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/sign/warning/rad_shelter/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/chem_master, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) +/turf/open/floor/iron/dark, +/area/station/security/prison) "xhj" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall, -/area/station/maintenance/department/cargo) +/area/station/cargo/drone_bay) "xhp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69422,12 +69266,12 @@ "xhv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/holopad, /turf/open/floor/wood, /area/station/service/lawoffice) "xhI" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) @@ -69451,9 +69295,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/security/prison) -"xhQ" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/transit_tube) "xhW" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -69474,7 +69315,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/gibs/old, +/obj/effect/landmark/start/gary, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) "xih" = ( @@ -69483,28 +69324,6 @@ name = "Holodeck Projector Floor" }, /area/station/holodeck/rec_center) -"xix" = ( -/obj/effect/turf_decal/box, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/medbay/lobby) -"xiA" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/command/heads_quarters/cmo) "xiC" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -69518,16 +69337,11 @@ }, /turf/open/floor/iron/dark/textured, /area/station/commons/storage/primary) -"xiO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/landmark/start/virologist, -/turf/open/floor/iron/white, -/area/station/medical/virology) +"xiS" = ( +/obj/effect/turf_decal/box, +/obj/machinery/holopad, +/turf/open/floor/iron/large, +/area/station/engineering/break_room) "xiW" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ @@ -69554,19 +69368,23 @@ dir = 1 }, /area/station/service/hydroponics/garden) -"xjb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 8 +"xjx" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/firealarm/directional/east{ + pixel_y = 5 }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"xjH" = ( -/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/light_switch/directional/east{ + pixel_y = -5 + }, +/obj/item/radio/intercom/directional/south, +/obj/item/kirbyplants/random, /turf/open/floor/iron/dark, -/area/station/command/bridge) +/area/station/engineering/storage/tech) +"xjF" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/virology) "xjO" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -69598,51 +69416,26 @@ }, /turf/open/floor/iron, /area/station/command/gateway) -"xkI" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ +"xkj" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/door_buttons/access_button{ - idDoor = "xeno_airlock_interior"; - idSelf = "xeno_airlock_control"; - name = "Access Button"; - pixel_x = -24; - pixel_y = -5; - req_access = list("xenobiology") +/obj/machinery/light/directional/north, +/obj/machinery/requests_console/directional/north{ + department = "Virology"; + name = "Pathology Requests Console" }, -/obj/machinery/door_buttons/airlock_controller{ - idExterior = "xeno_airlock_exterior"; - idInterior = "xeno_airlock_interior"; - idSelf = "xeno_airlock_control"; - name = "Access Console"; - pixel_x = 25; - req_access = list("xenobiology") - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - autoclose = 0; - frequency = 1449; - id_tag = "xeno_airlock_interior"; - name = "Xenobiology Lab Internal Airlock" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/liquid_barrier, -/turf/open/floor/iron/white/textured, -/area/station/science/xenobiology/hallway) -"xkQ" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) -"xkV" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/machinery/disease2/centrifuge, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"xkQ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"xkV" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 }, /obj/structure/chair{ dir = 4 @@ -69653,10 +69446,16 @@ "xkY" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/machinery/camera/autoname/directional/north, -/obj/item/kirbyplants/random, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder, +/obj/item/pen, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) "xle" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, @@ -69675,41 +69474,38 @@ /turf/open/floor/circuit, /area/station/ai_monitored/command/nuke_storage) "xlQ" = ( +/obj/machinery/status_display/evac/directional/south, /obj/structure/table, +/obj/item/toy/foamblade, /obj/item/toy/sword{ pixel_x = 3; pixel_y = 12 }, -/obj/item/toy/foamblade, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, +/turf/open/floor/iron/dark/side, /area/station/commons/fitness/recreation) "xlS" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/item/food/grown/banana, -/turf/open/floor/grass, -/area/station/hallway/primary/central) -"xlW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/atmos{ - name = "Atmospherics" - }, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/chair/office/light, +/obj/effect/landmark/start/chief_engineer, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"xmk" = ( +/obj/effect/turf_decal/tile/yellow/full, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos/office) "xml" = ( /obj/structure/closet/secure_closet{ req_access = list("bar") }, -/obj/item/storage/box/rubbershot, -/obj/item/gun/ballistic/shotgun/doublebarrel, +/obj/item/stack/sheet/iron/fifty{ + pixel_y = 5; + pixel_x = -4 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 5 + }, +/obj/item/stack/cable_coil, /obj/effect/spawner/random/entertainment/money, /obj/effect/spawner/random/entertainment/money, /turf/open/floor/wood, @@ -69727,61 +69523,35 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"xmy" = ( -/obj/effect/turf_decal/tile/green/fourcorners, -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/service_all, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) -"xmz" = ( -/obj/effect/decal/cleanable/vomit/old, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) "xmK" = ( /obj/machinery/light/directional/south, -/obj/machinery/light_switch/directional/south, +/obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/wood, /area/station/commons/vacant_room/office) -"xnd" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "xnn" = ( /obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/table/reinforced, -/obj/item/gun/grenadelauncher{ - pixel_y = 10 - }, -/obj/item/grenade/barrier{ - pixel_x = -6; - pixel_y = 3 - }, -/obj/item/grenade/barrier{ - pixel_y = 3 - }, -/obj/item/grenade/barrier{ - pixel_x = 6; - pixel_y = 3 - }, +/obj/machinery/dish_drive/bullet, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "xny" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"xnC" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "xnE" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/turf_decal/tile/dark_blue/fourcorners, +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/chair/sofa/bench/left{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "xnG" = ( /obj/effect/turf_decal/trimline/red/filled/warning, /obj/effect/turf_decal/trimline/red/warning{ @@ -69792,6 +69562,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/brig) +"xnN" = ( +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "xnX" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -69803,15 +69577,37 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/atmos) +"xoa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/chair_flipped, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "xob" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 +/obj/effect/turf_decal/tile/yellow/full, +/obj/machinery/light/small/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Engineering - Atmospherics Deliveries"; + name = "engineering camera" }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/light/small/directional/east, -/turf/open/floor/wood/tile, -/area/station/service/library/artgallery) +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmos/office) +"xod" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 9 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/disease2/incubator, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"xoe" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/command/bridge) +"xog" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/security/detectives_office) "xow" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -69830,7 +69626,7 @@ "xoG" = ( /obj/effect/decal/cleanable/dirt, /obj/item/kirbyplants/random, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/station/maintenance/department/science) "xoI" = ( /obj/effect/turf_decal/stripes/line{ @@ -69863,15 +69659,31 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "xpF" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/vending/cigarette, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) -"xqe" = ( -/obj/structure/chair/comfy/black, -/obj/effect/landmark/start/hangover, /turf/open/floor/wood, -/area/station/service/library) +/area/station/service/abandoned_gambling_den) +"xpK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Patient Room 1" + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/patients_rooms/room_a) +"xqe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/office) "xqg" = ( /obj/structure/cable, /turf/open/floor/iron/white, @@ -69889,13 +69701,6 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark/side, /area/station/commons/fitness) -"xqD" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/machinery/suit_storage_unit/security, -/obj/effect/turf_decal/box/blue, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/blueshield) "xqM" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 @@ -69903,6 +69708,16 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/security/brig/entrance) +"xqN" = ( +/obj/machinery/light_switch/directional/north, +/obj/structure/cable, +/turf/open/floor/carpet, +/area/station/service/chapel) +"xqQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/ghost_critter_spawn, +/turf/open/floor/plating, +/area/station/maintenance/department/cargo) "xqS" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 1 @@ -69913,22 +69728,40 @@ "xqW" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/bot_red, -/obj/machinery/camera/directional/west{ - c_tag = "Command - EVA Storage West"; +/obj/machinery/camera/motion/directional/west{ + c_tag = "Command - EVA Storage, West"; name = "motion-sensitive command camera" }, /obj/machinery/recharge_station, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) +"xqZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, +/obj/structure/table/reinforced/rglass, +/obj/machinery/computer/records/medical/laptop, +/turf/open/floor/iron/white, +/area/station/security/medical) "xrf" = ( /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/lobby) "xrz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/blue/line, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) +"xrC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "xrJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69936,32 +69769,10 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/commons/dorms) -"xrK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/ghost_critter_spawn, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"xrL" = ( -/obj/effect/spawner/random/structure/table, -/obj/item/reagent_containers/pill/maintenance, -/obj/item/reagent_containers/pill/maintenance{ - pixel_y = 8; - pixel_x = 7 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/medical) -"xrQ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/engineering/storage_shared) +"xrO" = ( +/obj/machinery/vending/access/command, +/turf/open/floor/wood, +/area/station/command/meeting_room) "xrX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69969,18 +69780,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/command/gateway) -"xrY" = ( -/obj/structure/table, -/obj/item/storage/medkit/regular{ - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) -"xsa" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/engineering/transit_tube) "xsd" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ @@ -69988,70 +69787,35 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos/pumproom) -"xsf" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) -"xsi" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Engineering Maintenance" - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"xsl" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "xsm" = ( /obj/machinery/button/door/directional/east{ id = "bar_sec_shutters"; name = "Bar Shutters Control"; req_access = list("bar") }, -/obj/machinery/light/small/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Service - Bar"; + name = "service camera" + }, /turf/open/floor/wood, /area/station/service/bar) "xsB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/power/terminal{ - dir = 1 +/obj/machinery/camera/directional/west{ + c_tag = "Telecomms Server Room"; + network = list("tcomms") }, -/turf/open/floor/engine/telecomms, +/obj/machinery/telecomms/receiver/preset_left, +/turf/open/floor/circuit/telecomms, /area/station/tcommsat/server) "xsC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"xsR" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 8 +/obj/structure/table/reinforced/plasmarglass, +/obj/item/experi_scanner{ + pixel_x = 4 }, -/obj/machinery/light/directional/east, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/glasses/science, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/area/station/science/xenobiology) "xsX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70067,9 +69831,21 @@ /turf/closed/wall/r_wall, /area/station/security/prison/rec) "xtc" = ( -/obj/machinery/camera/autoname/directional/east, +/obj/machinery/light/directional/east, +/obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, /area/station/security/prison/workout) +"xtm" = ( +/obj/machinery/button/door/directional/south{ + id = "bsq_to_cq"; + name = "Quarters Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/dresser, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain/private) "xtn" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 @@ -70077,33 +69853,16 @@ /obj/machinery/light/small/directional/south, /obj/structure/sign/warning/cold_temp/directional/south, /obj/machinery/camera/autoname/directional/south, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ +/obj/machinery/atmospherics/components/binary/pump{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"xtu" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/machinery/light/directional/west, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) "xtD" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"xtL" = ( -/obj/structure/bodycontainer/morgue{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) "xtQ" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 @@ -70120,13 +69879,29 @@ }, /area/station/cargo/storage) "xtS" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 9 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/structure/closet/secure_closet/security/engine, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Security Post - Engineering" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/dark/textured, /area/station/security/checkpoint/engineering) +"xtT" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/wood, +/area/station/service/library/lounge) "xud" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/small/directional/west, @@ -70142,17 +69917,33 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/port) "xuk" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 4 }, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Psychology Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/psychology, +/turf/open/floor/iron/dark/textured, +/area/station/medical/psychology) "xuu" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/firealarm/directional/west, +/obj/machinery/firealarm/directional/west{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/west{ + pixel_y = 5 + }, /obj/structure/table, /obj/item/stack/sheet/iron/fifty{ pixel_y = 5; @@ -70179,13 +69970,13 @@ /turf/open/floor/iron/dark, /area/station/security/prison) "xuF" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/effect/turf_decal/trimline/neutral/line{ +/obj/effect/turf_decal/trimline/yellow/filled/line, +/obj/effect/turf_decal/trimline/yellow/line{ dir = 1 }, -/obj/structure/sign/departments/maint/directional/south, +/obj/structure/sign/poster/ripped/directional/south, /obj/machinery/camera/directional/south{ - c_tag = "Central Hallway Southwest"; + c_tag = "Hallway - Central, Southwest"; name = "hallway camera" }, /turf/open/floor/iron/dark, @@ -70203,16 +69994,22 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "xva" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/disposalpipe/segment{ +/obj/machinery/computer/operating{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/turf/open/floor/iron/white, +/area/station/medical/exam_room) +"xvo" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) +"xvE" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "xvF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -70223,18 +70020,6 @@ "xvI" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/escape) -"xvN" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/structure/table, -/obj/item/wirecutters, -/obj/item/screwdriver{ - pixel_y = 10 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "xvT" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -70270,48 +70055,55 @@ dir = 1 }, /obj/effect/turf_decal/trimline/purple/line, +/obj/machinery/atm/directional/north, /obj/machinery/vending/modularpc, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "xwq" = ( -/obj/structure/cable, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/east{ + pixel_y = -5 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = 5 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/iron, +/area/station/engineering/main) "xwx" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/simple/violet/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/violet/visible, /turf/open/floor/iron/dark, /area/station/science/ordnance) "xwK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/simple/violet/visible, +/obj/machinery/button/door/directional/west{ + id = "ord_freezer_bolt"; + name = "Ordnance Freezer Chamber Bolt Control"; + req_access = list("ordnance"); + pixel_y = 5; + specialfunctions = 4; + normaldoorcontrol = 1 + }, /obj/machinery/button/door/directional/west{ id = "ord_freezer_vent"; name = "Ordnance Freezer Chamber Vent Control"; - req_access = list("ordnance") + req_access = list("ordnance"); + pixel_y = -5 }, -/obj/machinery/atmospherics/pipe/smart/simple/violet/visible/layer2, /obj/machinery/door/airlock/research/glass{ - name = "Freeze Chamber Interior Airlock" + name = "Freeze Chamber Interior Airlock"; + id_tag = "ord_freezer_bolt" }, /obj/effect/mapping_helpers/airlock/access/all/science/ordnance, /obj/effect/mapping_helpers/airlock/locked, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/engine, /area/station/science/ordnance/freezerchamber) -"xwT" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/atmos{ - name = "Pathology Atmospherics Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "aisat-pathatmos-maint-passthrough" - }, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "xxe" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 @@ -70347,37 +70139,12 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"xxS" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/storage/tech) "xxX" = ( +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/science/xenobiology) -"xyc" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Apothecary" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "xyi" = ( /obj/machinery/drone_dispenser/preloaded, /turf/open/floor/plating, @@ -70395,12 +70162,8 @@ }, /area/station/service/hydroponics) "xyv" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 4 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/department/cargo) +/turf/closed/wall, +/area/station/cargo/drone_bay) "xyw" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/effect/turf_decal/trimline/neutral/line{ @@ -70410,6 +70173,7 @@ /obj/structure/closet/firecloset{ anchored = 1 }, +/obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) "xyD" = ( @@ -70442,33 +70206,23 @@ /obj/item/storage/box/disks_nanite, /turf/open/floor/iron/white, /area/station/science/research) +"xyU" = ( +/obj/structure/window/spawner/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/engineering/break_room) "xyY" = ( /obj/structure/sign/departments/restroom/directional/west, /turf/open/floor/iron/dark/side{ dir = 8 }, /area/station/commons/dorms) -"xyZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/structure/closet/secure_closet/personal/patient, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_a) -"xzb" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters{ - id = "medical_security_post"; - name = "Security Post Shutters" - }, -/turf/open/floor/plating, -/area/station/security/checkpoint/medical) -"xzd" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/machinery/light/directional/south, -/obj/structure/chair{ - dir = 1 +"xzd" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/machinery/light/directional/south, +/obj/machinery/atm/directional/south, +/obj/structure/chair/sofa/bench{ + dir = 1 }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) @@ -70481,11 +70235,8 @@ /area/station/engineering/atmos) "xzm" = ( /obj/effect/turf_decal/trimline/red/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 + dir = 1 }, /obj/machinery/camera/directional/south{ c_tag = "Security - Courtroom Southwest"; @@ -70517,19 +70268,10 @@ /turf/open/floor/plating, /area/station/maintenance/department/science) "xzN" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/structure/sign/departments/medbay/alt/directional/east, -/obj/structure/chair/sofa/corp/left{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "xzX" = ( /obj/structure/chair{ dir = 8 @@ -70567,13 +70309,13 @@ /turf/open/floor/iron/dark, /area/station/security/prison) "xAB" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ +/obj/effect/turf_decal/trimline/dark_blue/filled/warning{ dir = 1 }, -/obj/effect/turf_decal/trimline/dark_blue/line, -/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/trimline/dark_blue/warning, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/mapping_helpers/apc/cell_5k, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "xAL" = ( @@ -70590,10 +70332,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/service/hydroponics) -"xBk" = ( -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) +"xAT" = ( +/obj/machinery/light/directional/east, +/obj/structure/chair/plastic{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/security/prison/rec) +"xBa" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "xBB" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -70621,17 +70372,29 @@ /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/starboard) "xBN" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/coldroom{ - dir = 4 +/obj/effect/turf_decal/tile/green/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/dark/side{ + dir = 1 }, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) +/area/station/service/hydroponics) "xBX" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 +/obj/structure/table/reinforced, +/obj/item/computer_disk/atmos{ + pixel_y = 6; + pixel_x = 4 + }, +/obj/item/toy/figure/ce{ + pixel_y = 12; + pixel_x = -8 + }, +/obj/item/storage/fancy/cigarettes/cigars, +/obj/item/lighter{ + pixel_y = -6 }, -/obj/machinery/status_display/evac/directional/east, -/obj/structure/cable, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) "xCa" = ( @@ -70647,8 +70410,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor, /area/station/maintenance/department/security/brig) "xCd" = ( /obj/effect/turf_decal/tile/green{ @@ -70667,38 +70429,31 @@ "xCk" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, /obj/machinery/firealarm/directional/south, +/obj/structure/sign/departments/maint/directional/west, /obj/item/kirbyplants/random, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/hallway/primary/aft) "xCo" = ( /obj/machinery/light/directional/south, +/obj/machinery/firealarm/directional/south, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/iron/showroomfloor, /area/station/security/prison/shower) "xCt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/light/directional/west, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) +"xCz" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/iron/textured, -/area/station/maintenance/starboard/aft) -"xCA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 +/turf/open/floor/iron/dark/side{ + dir = 8 }, -/obj/structure/sign/poster/official/safety_eye_protection/directional/west, -/obj/machinery/light/small/directional/west, -/obj/structure/chemical_manufacturer, -/obj/item/integrated_circuit/chemical, -/obj/item/stock_parts/cell/high, -/obj/item/multitool, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) +/area/station/security/interrogation) "xCP" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -70706,13 +70461,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron, /area/station/science/xenobiology) -"xDd" = ( -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/decal/remains/human, -/turf/open/floor/grass, -/area/station/command/bridge) "xDl" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "Air to Port Mix" @@ -70720,15 +70468,23 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos) "xDr" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/computer/records/medical{ dir = 1 }, -/obj/effect/turf_decal/trimline/dark_blue/line, -/obj/structure/sign/poster/official/nanotrasen_logo/directional/north, /turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/area/station/command/bridge) +"xDH" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/department/engine) "xDM" = ( -/obj/machinery/light/directional/west, +/obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/station/security/prison) "xEe" = ( @@ -70746,6 +70502,16 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) +"xEx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/decal/cleanable/dirt, +/obj/item/weldingtool/mini/empty, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "xEA" = ( /obj/effect/turf_decal/tile/green/anticorner/contrasted{ dir = 4 @@ -70765,17 +70531,25 @@ /turf/open/floor/iron/dark/textured, /area/station/hallway/primary/central) "xEM" = ( -/obj/structure/chair/wood{ +/obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, -/turf/open/floor/wood, -/area/station/service/library/lounge) +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "xEV" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, /turf/open/floor/iron/white, /area/station/science/research) +"xEZ" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/virology) "xFe" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -70798,7 +70572,15 @@ /obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 1 }, -/turf/open/floor/iron, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, /area/station/hallway/primary/aft) "xFr" = ( /obj/structure/disposalpipe/segment{ @@ -70823,12 +70605,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/service/chapel) -"xFY" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/exam_room) "xGa" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -70841,15 +70617,6 @@ /obj/effect/mapping_helpers/airlock/access/all/science/robotics, /turf/open/floor/iron/textured, /area/station/science/robotics/lab) -"xGb" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "surgery_privacy"; - name = "Surgery Privacy Shutters"; - dir = 1 - }, -/turf/open/floor/plating, -/area/station/medical/surgery) "xGo" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -70872,8 +70639,7 @@ /obj/effect/turf_decal/box, /obj/structure/sign/warning/no_smoking/directional/south, /obj/machinery/holopad, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/white/smooth_large, +/turf/open/floor/iron/large, /area/station/maintenance/department/science) "xGN" = ( /obj/effect/turf_decal/stripes/line{ @@ -70882,19 +70648,29 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ name = "Courtroom" }, /turf/open/floor/iron/dark/textured, /area/station/security/courtroom) -"xGO" = ( -/obj/effect/turf_decal/tile/brown/fourcorners, -/obj/machinery/modular_computer/preset/cargochat/engineering{ - dir = 1 +"xGV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/station/engineering/break_room) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Art Gallery" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured, +/area/station/service/library/artgallery) "xHf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70908,9 +70684,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/catwalk_floor/iron_white, +/turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/science) "xHp" = ( /obj/machinery/atmospherics/pipe/smart/simple/brown/visible, @@ -70921,27 +70695,11 @@ /obj/structure/sign/warning/radiation/directional/west, /turf/open/space/basic, /area/space/nearstation) -"xHA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms/room_b) -"xHC" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/defibrillator_mount/directional/south, -/obj/machinery/iv_drip, -/obj/item/reagent_containers/blood, -/turf/open/floor/iron/white, -/area/station/security/medical) -"xHH" = ( -/obj/structure/chair/office/light, -/obj/effect/landmark/start/chemist, -/turf/open/floor/iron/white/textured, -/area/station/medical/pharmacy) "xHL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/cable, /obj/machinery/modular_computer/preset/id{ dir = 1 }, @@ -70977,13 +70735,13 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) "xIo" = ( -/obj/machinery/airalarm/directional/west, +/obj/machinery/newscaster/directional/west, /turf/open/floor/wood, /area/station/service/lawoffice) "xIp" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners, /obj/effect/turf_decal/bot_white, -/obj/item/radio/intercom/directional/north, +/obj/item/radio/intercom/directional/west, /obj/machinery/computer/gateway_control, /turf/open/floor/iron/dark, /area/station/command/gateway) @@ -70996,13 +70754,13 @@ /area/station/hallway/secondary/entry) "xIH" = ( /obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, +/turf/open/floor/wood/tile, /area/station/service/chapel/office) "xIL" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "qm_privacy"; - dir = 1 +/obj/machinery/door/poddoor/shutters{ + id = "qm_office_shutters"; + name = "QM's Office Shutters" }, /turf/open/floor/plating, /area/station/command/heads_quarters/qm) @@ -71020,27 +70778,12 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"xIY" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/structure/closet/secure_closet/tac{ - req_access = list("captain") - }, -/obj/effect/turf_decal/box/blue, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/blueshield) "xJb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/prison) -"xJA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "xJE" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -71063,7 +70806,7 @@ dir = 4 }, /obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/light/directional/west, +/obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) "xJK" = ( @@ -71075,7 +70818,6 @@ "xJR" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/extinguisher_cabinet/directional/east, -/obj/effect/landmark/blobstart, /turf/open/floor/iron, /area/station/maintenance/department/electrical) "xJY" = ( @@ -71103,16 +70845,12 @@ /turf/open/floor/iron/dark, /area/station/security/prison) "xKR" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, +/turf/open/floor/glass/reinforced, /area/station/commons/fitness/recreation) "xKS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/item/toy/basketball, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron, +/turf/open/floor/glass/reinforced, /area/station/security/prison/workout) "xKT" = ( /obj/effect/turf_decal/tile/neutral/anticorner{ @@ -71122,12 +70860,14 @@ /obj/effect/turf_decal/bot_white/right, /turf/open/floor/iron/dark/smooth_corner, /area/station/engineering/gravity_generator) -"xLc" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light_switch/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +"xKX" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 }, +/turf/open/floor/iron/white, +/area/station/medical/exam_room) +"xLc" = ( +/obj/structure/sink/kitchen/directional/south, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) "xLi" = ( @@ -71139,10 +70879,7 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/central) "xLn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, +/obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/engineering/engine_smes) "xLy" = ( @@ -71166,21 +70903,34 @@ dir = 1 }, /area/station/cargo/lobby) +"xLP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain) "xMb" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/delivery, /obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) +"xMu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/engineering/atmos/office) "xMz" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"xMC" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/engineering/break_room) "xMI" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ @@ -71191,26 +70941,13 @@ "xMO" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit/departure_lounge) -"xMR" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "med_lockdown"; - name = "Medbay Emergency Lockdown Shutters"; - dir = 1 +/obj/machinery/door/poddoor/shutters{ + id = "dep_med_post"; + name = "Medical Post Shutters"; + dir = 4 }, -/turf/open/floor/iron/white/textured, -/area/station/medical/exam_room) -"xMY" = ( -/obj/structure/fireaxecabinet/directional/south, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +/turf/open/floor/plating, +/area/station/medical/treatment_center) "xNb" = ( /obj/structure/chair/pew/left{ dir = 1 @@ -71224,8 +70961,8 @@ /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /obj/machinery/door/poddoor/shutters{ - id = "arrivals_security_post"; - name = "Security Post Shutters" + id = "arrivals_security_checkpoint"; + name = "Security Checkpoint Shutters" }, /turf/open/floor/plating, /area/station/security/checkpoint/customs/auxiliary) @@ -71237,13 +70974,20 @@ /obj/structure/closet/radiation, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) +"xNu" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/department/science) "xNz" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 6 }, -/obj/machinery/firealarm/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, /obj/machinery/light_switch/directional/south{ - pixel_x = 8 + pixel_x = 5 }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) @@ -71265,12 +71009,23 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"xNK" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/break_room) "xNS" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/bot, -/obj/machinery/power/shieldwallgen, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) +/obj/machinery/digital_clock/directional/east, +/obj/machinery/computer/security{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "xNW" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -71280,42 +71035,51 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"xOe" = ( -/obj/effect/turf_decal/trimline/neutral/filled/warning{ - dir = 4 +"xOa" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 +/obj/structure/table/reinforced/rglass, +/obj/machinery/reagentgrinder{ + pixel_y = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma{ + pixel_x = -6; + pixel_y = 6 }, -/obj/machinery/duct, /turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/area/station/medical/virology) "xOf" = ( /obj/effect/spawner/random/entertainment/arcade{ dir = 4 }, /turf/open/floor/wood, /area/station/security/prison/rec) +"xOq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "xOy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) +/obj/machinery/photocopier, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) +"xOH" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/department/engineering/central) "xOK" = ( -/obj/machinery/vending/sustenance, -/obj/machinery/camera/autoname/directional/south, -/obj/item/radio/intercom/prison/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/prison/mess) +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/checker, +/area/station/commons/dorms/laundry) "xOV" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 8 @@ -71326,6 +71090,11 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"xOY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "xPw" = ( /obj/structure/table/wood, /obj/effect/spawner/random/food_or_drink/refreshing_beverage{ @@ -71338,12 +71107,22 @@ }, /turf/open/floor/carpet, /area/station/hallway/secondary/entry) -"xPK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, +"xPz" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/machinery/camera/directional/north{ + c_tag = "Medical - Pathology, Lab, Secondary"; + name = "medical camera"; + network = list("ss13","medbay") + }, +/obj/structure/sink/directional/south, /turf/open/floor/iron/white, -/area/station/medical/break_room) +/area/station/medical/virology) +"xPP" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/storage) "xPS" = ( /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 4 @@ -71358,36 +71137,50 @@ dir = 1 }, /obj/effect/turf_decal/trimline/dark_blue/warning, -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/junction/flip, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"xRd" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/table/glass, -/obj/machinery/fax{ - fax_name = "Chief Medical Officer's Office"; - name = "Chief Medical Officer's Fax Machine" +"xQC" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Medical - Pathology, Isolation, Cell 1"; + name = "medical camera"; + network = list("ss13","medbay") }, -/turf/open/floor/iron/cafeteria{ +/obj/structure/table, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"xQF" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/area/station/command/heads_quarters/cmo) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Apothecary" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) +"xQX" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_blue/line, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "xRh" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) -"xRi" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/construction) "xRl" = ( /obj/item/picket_sign, /obj/effect/spawner/random/maintenance/two, @@ -71451,26 +71244,58 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"xRT" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ +"xRW" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 }, -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/trimline/dark_blue/line, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/engineering/break_room) "xSh" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/machinery/light/small/directional/south, /obj/machinery/dna_infuser, /turf/open/floor/iron/white, /area/station/science/genetics) -"xSl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +"xSj" = ( +/obj/machinery/light/directional/north, +/obj/machinery/button/door/directional/north{ + id = "heads_meeting"; + name = "Meeting Room Shutters Control"; + req_access = list("command") + }, +/turf/open/floor/wood, +/area/station/command/meeting_room) +"xSp" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 9 + }, +/obj/machinery/status_display/evac/directional/west, +/obj/machinery/door_buttons/airlock_controller{ + idExterior = "pathology_airlock_exterior"; + idInterior = "pathology_airlock_interior"; + idSelf = "pathology_airlock_control"; + name = "Pathology Access Console"; + pixel_y = 24; + req_access = list("pathology"); + pixel_x = 6 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/white, +/area/station/medical/virology) +"xSq" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/box/beakers, +/obj/item/storage/box/syringes{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/storage) "xSs" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -71502,9 +71327,9 @@ "xSA" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hos_privacy"; - name = "HoS Office Privacy Shutters"; +/obj/machinery/door/poddoor/shutters{ + id = "hos_office"; + name = "HoS Office Shutters"; dir = 8 }, /turf/open/floor/plating, @@ -71521,9 +71346,9 @@ /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/requests_console/directional/south{ department = "Cargo Bay"; - name = "Cargo Bay Requests Console"; - supplies_requestable = 1 + name = "Cargo Bay Requests Console" }, +/obj/effect/mapping_helpers/requests_console/supplies, /obj/machinery/conveyor_switch/oneway{ id = "package_sort_2" }, @@ -71536,7 +71361,7 @@ dir = 1 }, /obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) "xTb" = ( /obj/effect/turf_decal/stripes/line{ @@ -71551,21 +71376,13 @@ /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) "xTe" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, +/obj/structure/sign/warning/no_smoking/directional/north, /obj/structure/cable, /obj/structure/closet/radiation, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) -"xTh" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/item/radio/intercom/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/medical/paramedic) "xTF" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 4 @@ -71577,17 +71394,18 @@ /turf/open/floor/iron/dark, /area/station/security/courtroom) "xTL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "xTP" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, /obj/machinery/light/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "xTT" = ( @@ -71596,17 +71414,15 @@ /obj/machinery/duct, /turf/open/floor/wood, /area/station/security/prison/safe) +"xTW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/mirror/directional/east, +/obj/structure/sink/directional/west, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "xUa" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) -"xUd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) +/turf/closed/wall, +/area/station/maintenance/department/engine) "xUs" = ( /obj/structure/closet/secure_closet/freezer/kitchen{ req_access = null @@ -71620,6 +71436,16 @@ /obj/item/food/grown/onion, /turf/open/floor/iron/kitchen, /area/station/security/prison/mess) +"xUt" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/computer/records/security{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/medical) "xUB" = ( /obj/effect/turf_decal/trimline/neutral/filled/warning{ dir = 9 @@ -71629,8 +71455,12 @@ /obj/structure/sign/departments/maint/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"xUC" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/pumproom) "xUG" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/corner, /obj/machinery/light/directional/west, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, @@ -71661,22 +71491,18 @@ /turf/closed/wall, /area/station/service/kitchen/coldroom) "xVi" = ( -/obj/structure/table, -/obj/item/camera, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"xVj" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 6 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/east, +/obj/machinery/chem_heater/withbuffer, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) +"xVj" = ( +/obj/structure/closet/emcloset/wall/directional/west, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/main) "xVA" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, @@ -71688,14 +71514,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/cafeteria, +/turf/open/floor/iron/checker, /area/station/commons/dorms/laundry) -"xVF" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) "xVH" = ( /obj/machinery/light/small/directional/north, /obj/structure/cable, @@ -71704,40 +71524,17 @@ }, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) -"xVL" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) -"xVM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail{ - dir = 8 - }, -/obj/effect/mapping_helpers/mail_sorting/medbay/general, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "xVV" = ( -/obj/structure/rack, -/obj/item/tank/internals/oxygen/yellow, -/obj/effect/decal/cleanable/dirt, -/obj/item/tank/internals/oxygen/yellow{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/radio{ - pixel_x = -5 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/item/radio{ - pixel_x = 5 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/item/gps, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) +/obj/structure/cable, +/obj/machinery/door/window/left/directional/east, +/turf/open/floor/iron/dark/textured, +/area/station/service/abandoned_gambling_den) "xVW" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -71799,6 +71596,32 @@ }, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness/recreation) +"xWq" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/machinery/newscaster/directional/north, +/obj/structure/table/reinforced/rglass, +/obj/item/storage/box/syringes{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/beakers, +/obj/item/storage/box/tube{ + pixel_y = -3; + pixel_x = -3 + }, +/obj/item/storage/box/monkeycubes/mousecubes, +/obj/item/storage/box/monkeycubes/mousecubes{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/dropper{ + pixel_y = -4 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "xWu" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -71821,29 +71644,27 @@ /area/station/ai_monitored/command/storage/eva) "xWv" = ( /obj/effect/turf_decal/box, +/obj/structure/cable, /obj/machinery/holopad, /obj/effect/landmark/event_spawn, /turf/open/floor/iron/large, /area/station/commons/storage/primary) -"xWM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) +"xWy" = ( +/obj/structure/sign/poster/random/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/atmos) "xWS" = ( /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "xXc" = ( /obj/machinery/light/small/directional/south, -/obj/machinery/camera/autoname/directional/south{ - dir = 5 - }, +/obj/machinery/camera/autoname/directional/south, /obj/machinery/duct, /turf/open/floor/carpet/orange, /area/station/security/prison/safe) -"xXd" = ( -/turf/closed/wall, -/area/station/medical/storage) "xXh" = ( /obj/machinery/door/window/left/directional/east{ name = "Fitness Ring" @@ -71851,12 +71672,16 @@ /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) "xXk" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/tank/air{ - dir = 4 +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/structure/chair, +/turf/open/floor/iron/white, +/area/station/science/research) +"xXt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/hop) "xXB" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/light, @@ -71882,20 +71707,35 @@ /obj/structure/lattice, /turf/open/space, /area/space/nearstation) -"xXV" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/computer/station_alert, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/engineering/break_room) +"xYe" = ( +/obj/machinery/shower/directional/south, +/obj/structure/drain, +/turf/open/floor/iron/white/textured_large, +/area/station/medical/exam_room) "xYi" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/service/chapel/funeral) +"xYl" = ( +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, +/obj/machinery/light_switch/directional/north{ + pixel_x = -5 + }, +/obj/structure/table/wood, +/obj/item/folder{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/folder, +/obj/item/folder{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/pen, +/turf/open/floor/iron/vaporwave, +/area/station/service/library/printer) "xYn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -71904,13 +71744,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/maintenance/department/engine) "xYr" = ( /obj/effect/turf_decal/tile/red/fourcorners, /obj/effect/turf_decal/bot, /obj/effect/landmark/secequipment, /obj/structure/cable, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "xYt" = ( /obj/effect/decal/cleanable/cobweb, @@ -71928,10 +71768,16 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"xYF" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/iron/dark, -/area/station/command/bridge) +"xYV" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "xZd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/table_or_rack, @@ -71951,14 +71797,21 @@ }, /area/station/commons/fitness/recreation) "xZo" = ( -/obj/machinery/byteforge, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured, +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/machinery/airalarm/directional/south, +/obj/machinery/computer/quantum_console{ + dir = 1 + }, +/turf/open/floor/iron/dark, /area/station/security/bitden) "xZp" = ( -/obj/structure/closet/secure_closet/captains, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/obj/structure/reagent_dispensers/wall/peppertank/directional/west, +/obj/structure/closet/secure_closet/security/med/blueshirt, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/medical) "xZt" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /obj/machinery/light/small/directional/east, @@ -71970,24 +71823,41 @@ /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) "xZB" = ( -/obj/structure/chair/office, -/turf/open/floor/iron/dark, +/obj/structure/chair/wood, +/turf/open/floor/carpet/green, /area/station/commons/vacant_room/office) +"xZD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/landmark/start/captain, +/turf/open/floor/wood, +/area/station/command/heads_quarters/captain) "xZG" = ( /obj/structure/table/wood, -/turf/open/floor/iron/dark, +/obj/item/camera_film{ + pixel_x = -4; + pixel_y = 4 + }, +/turf/open/floor/carpet/green, /area/station/commons/vacant_room/office) "xZK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=EVA"; location = "Security" }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 1 - }, /turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/area/station/hallway/primary/fore) "xZO" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -72002,6 +71872,31 @@ }, /turf/open/floor/plating, /area/station/maintenance/port) +"xZR" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology/glass{ + name = "Isolation 1" + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/virology, +/turf/open/floor/iron/white/textured, +/area/station/medical/virology) +"xZX" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 + }, +/obj/machinery/button/door/directional/south{ + id = "chem_factory_shutters"; + req_access = list("pharmacy") + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "yaj" = ( /obj/effect/turf_decal/trimline/green/line{ dir = 1 @@ -72018,38 +71913,14 @@ }, /area/station/service/hydroponics) "yaQ" = ( -/obj/machinery/light/broken/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 }, -/turf/open/floor/iron/cafeteria, -/area/station/maintenance/starboard/aft) -"yaT" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/camera/directional/east{ - c_tag = "Medical - Storage Room, Northeast"; - network = list("ss13","medbay"); - name = "medical camera"; - dir = 6 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/table/glass, -/obj/item/storage/medkit/regular{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/storage/medkit/o2{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/o2, -/obj/item/storage/medkit/o2{ - pixel_x = -3; - pixel_y = -3 +/obj/machinery/rnd/production/circuit_imprinter, +/turf/open/floor/iron/dark/side{ + dir = 5 }, -/turf/open/floor/iron/white, -/area/station/medical/storage) +/area/station/engineering/break_room) "yaX" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -72059,15 +71930,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/garden) -"yaZ" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light_switch/directional/south{ - pixel_x = 8 - }, -/obj/structure/closet/secure_closet/medical1, -/turf/open/floor/iron/white, -/area/station/medical/office) "ybb" = ( /obj/effect/turf_decal/trimline/purple/line, /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -72088,34 +71950,19 @@ dir = 8 }, /obj/machinery/light/directional/west, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark/side{ dir = 8 }, /area/station/cargo/office) -"ybl" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/structure/chair/sofa/corp/left{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "ybm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/dark_red/arrow_cw{ - dir = 10 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/security/prison/shower) +/obj/machinery/airalarm/directional/south, +/turf/open/floor/wood, +/area/station/security/prison/rec) "ybw" = ( -/obj/machinery/status_display/evac/directional/south, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, +/obj/machinery/station_map/directional/south, +/turf/open/floor/iron, /area/station/maintenance/department/science) "ybA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72125,25 +71972,36 @@ /area/station/science/ordnance) "ybH" = ( /obj/machinery/light/directional/west, -/obj/structure/chair/stool/directional/south, +/obj/structure/bed/double{ + dir = 4 + }, +/obj/item/bedsheet/dorms_double{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, /turf/open/floor/carpet/blue, -/area/station/commons/dorms) +/area/station/commons/dorms/room2) "ybU" = ( /obj/structure/cable, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 4 - }, +/obj/effect/turf_decal/trimline/dark_blue/filled/end, /obj/machinery/camera/directional/east{ - c_tag = "Tech Storage - Secure" + c_tag = "Engineering - Tech Storage, Secure"; + name = "engineering camera" }, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) +"ycc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/iron/white, +/area/station/medical/storage) "yce" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, /turf/open/floor/plating, -/area/station/maintenance/port) +/area/station/maintenance/department/engine/atmos) "ycf" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -72163,6 +72021,13 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/satellite) +"ych" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/library) "ycu" = ( /obj/effect/turf_decal/bot, /obj/machinery/suit_storage_unit/engine, @@ -72183,12 +72048,6 @@ /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) "ycz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -72196,8 +72055,8 @@ name = "Atmospherics Office Maintenance" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/turf/open/floor/catwalk_floor, +/area/station/engineering/atmos/office) "ycA" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 @@ -72209,65 +72068,41 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/atmos) -"ycB" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/command/heads_quarters/cmo) "ycH" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/sign/warning/radiation/directional/west, /turf/open/floor/iron/dark, /area/station/engineering/gravity_generator) -"ycL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) -"yda" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/light_switch/directional/north{ - pixel_x = -8 +"ycJ" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Medical - Chemistry Factory, North"; + name = "medical camera"; + network = list("ss13","medbay") }, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/machinery/button/door/directional/north{ + id = "chem_factory_shutters"; + req_access = list("pharmacy") }, -/obj/machinery/disposal/bin, -/turf/open/floor/carpet, -/area/station/service/library) -"ydh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/iron/white, +/area/station/medical/chemistry) +"ycL" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/iron, +/area/station/engineering/main) +"yda" = ( +/obj/structure/showcase/cyborg/old{ + dir = 8; + pixel_x = 9; + pixel_y = 2 }, -/obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard/aft) "ydo" = ( /obj/machinery/door/window/left/directional/west{ name = "Fitness Ring" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) -"ydu" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/command/heads_quarters/cmo) "ydv" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -72275,54 +72110,44 @@ /turf/open/floor/wood, /area/station/commons/vacant_room/office) "ydz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "library_desk_shutters"; - name = "Library Desk Shutters"; - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/structure/table/wood, -/turf/open/floor/iron/dark/textured, -/area/station/service/library/printer) +/turf/open/floor/iron/white, +/area/station/medical/office) +"ydB" = ( +/mob/living/basic/goat/pete, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "ydN" = ( /obj/effect/spawner/random/structure/chair_maintenance{ dir = 8 }, /turf/open/floor/iron/checker, /area/station/maintenance/port/fore) -"ydO" = ( -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) "ydY" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/central) "yeg" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/library/private) +/obj/structure/chair/office/light, +/obj/effect/landmark/start/chemist, +/turf/open/floor/iron/white/textured, +/area/station/medical/pharmacy) "yen" = ( /obj/machinery/airalarm/directional/south, /obj/structure/closet/emcloset/anchored, /turf/open/floor/iron/dark/smooth_large, /area/station/maintenance/department/security) -"yeq" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/cable/layer1, -/turf/open/floor/iron, -/area/station/engineering/main) +"yeo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance/five, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "yeu" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -72341,14 +72166,19 @@ /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) "yeR" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/structure/cable, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, /area/station/hallway/primary/aft) "yeV" = ( /obj/structure/cable, @@ -72356,31 +72186,25 @@ /area/station/maintenance/department/electrical) "yfi" = ( /obj/structure/closet/wardrobe/pjs, +/obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron/dark/side{ dir = 6 }, /area/station/commons/dorms) -"yfn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/showcase/cyborg/old{ - dir = 8; - pixel_x = 9; - pixel_y = 2 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard/aft) "yft" = ( /obj/effect/turf_decal/tile/neutral/full, /obj/machinery/gateway/centerstation, /turf/open/floor/iron/dark/smooth_large, /area/station/command/gateway) "yfG" = ( -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/service/library/private) +/obj/effect/turf_decal/box, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/medbay/lobby) "yfL" = ( /obj/effect/turf_decal/trimline/red/filled/warning{ dir = 4 @@ -72397,6 +72221,12 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) +"ygq" = ( +/obj/effect/turf_decal/tile/yellow/full, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/large, +/area/station/engineering/storage) "ygD" = ( /obj/machinery/suit_storage_unit/rd, /turf/open/floor/iron/showroomfloor, @@ -72413,16 +72243,12 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"ygS" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/construction) "ygY" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hos_privacy"; - name = "HoS Office Privacy Shutters"; +/obj/machinery/door/poddoor/shutters{ + id = "hos_office"; + name = "HoS Office Shutters"; dir = 1 }, /turf/open/floor/plating, @@ -72435,20 +72261,12 @@ dir = 1 }, /area/station/commons/locker) -"yhg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +"yhc" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/item/radio/intercom/directional/south, +/obj/structure/tank_holder/extinguisher, +/turf/open/floor/wood/tile, +/area/station/service/library/artgallery) "yhv" = ( /obj/machinery/status_display/ai/directional/west, /obj/effect/turf_decal/tile/neutral/full, @@ -72466,16 +72284,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"yhO" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "yhT" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/duct, @@ -72521,12 +72329,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/office) -"yii" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "yio" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -72558,6 +72360,12 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"yiD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/break_room) "yiI" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 5 @@ -72571,38 +72379,20 @@ dir = 6 }, /area/station/commons/locker) -"yiY" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/bathroom{ - name = "Bathroom" - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/break_room) -"yja" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/office) "yjc" = ( /obj/machinery/atmospherics/pipe/smart/simple/brown/visible, /obj/machinery/meter, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"yjh" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/processing) "yjo" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured, /area/station/science/research) "yjA" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -72614,7 +72404,10 @@ "yjH" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/structure/sign/poster/official/space_cops/directional/south, -/obj/machinery/camera/autoname/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Security - Post, Science"; + name = "security camera" + }, /obj/structure/table, /obj/item/paper_bin{ pixel_y = 5 @@ -72628,39 +72421,21 @@ /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) "yjI" = ( -/obj/structure/rack, -/obj/item/tank/internals/oxygen/yellow, -/obj/effect/decal/cleanable/dirt, -/obj/item/tank/internals/oxygen/yellow{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/radio{ - pixel_x = 5 - }, -/obj/item/radio{ - pixel_x = -5 +/obj/structure/table, +/obj/item/reagent_containers/pill/maintenance, +/obj/item/reagent_containers/pill/maintenance{ + pixel_y = 8; + pixel_x = 7 }, -/obj/item/gps, -/turf/open/floor/iron, +/turf/open/floor/plating, /area/station/maintenance/starboard/aft) "yjJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/maintenance{ - name = "Departures Medical Post Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 +/obj/effect/turf_decal/box/corners{ + dir = 8 }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/machinery/plumbing/pill_press, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "yjL" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/corner, /obj/effect/turf_decal/trimline/dark_red/line{ @@ -72675,106 +72450,43 @@ /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"yjR" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "yjX" = ( /obj/structure/table, /obj/item/storage/fancy/donut_box, /turf/open/floor/iron/dark, /area/station/security/office) "ykx" = ( -/obj/structure/table/glass, +/obj/structure/table, /obj/structure/bedsheetbin, /turf/open/floor/iron/white, /area/station/maintenance/port/fore) -"ykJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "ykS" = ( /obj/machinery/research/anomaly_refinery, /turf/open/floor/iron, /area/station/science/ordnance) -"ykT" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/small/directional/north, -/obj/machinery/duct, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "ylb" = ( /obj/machinery/requests_console/directional/west{ - anon_tips_receiver = 1; - assistance_requestable = 1; department = "Research Director's Desk"; - name = "Research Director's Requests Console"; - receive_ore_updates = 1; - can_send_announcements = 1 + name = "Research Director's Requests Console" }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/ore_update, /turf/open/floor/carpet/purple, /area/station/command/heads_quarters/rd) -"ylq" = ( -/obj/effect/spawner/random/structure/grille, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "ylx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command/glass{ - name = "Captain's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/captain) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/carpet/blue, +/area/station/medical/psychology) "yly" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/starboard/aft) -"ylB" = ( -/obj/machinery/smartfridge/chemistry/preloaded, -/turf/closed/wall, -/area/station/medical/pharmacy) +/obj/effect/turf_decal/trimline/blue/filled/line, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "ylE" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -72783,7 +72495,6 @@ dir = 8 }, /obj/machinery/light/directional/east, -/obj/machinery/airalarm/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron/dark, @@ -72797,24 +72508,11 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/secondary/service) -"ymb" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/structure/sink/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"ymc" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) +"ylV" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/chair/stool/directional/north, +/turf/open/floor/wood, +/area/station/commons/dorms/room5) "ymi" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -72827,7 +72525,7 @@ }, /obj/item/radio/intercom/directional/west, /obj/structure/closet/bombcloset/security, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) (1,1,1) = {" @@ -76286,7 +75984,7 @@ ksa ksa ksa ksa -sQS +ksa ksa ksa ksa @@ -76800,7 +76498,7 @@ ksa nLE ksa ksa -ksa +sQS ksa ksa ksa @@ -76817,7 +76515,7 @@ ksa ksa ksa nLE -sQS +ksa ksa ksa ksa @@ -77586,7 +77284,7 @@ ksa ksa ksa ksa -ksa +sQS ksa ksa ksa @@ -78334,7 +78032,7 @@ ksa ksa bYL iLr -qyd +dRn jlu bYL oWe @@ -78349,8 +78047,8 @@ ksa ksa our bYL -hvz -qyd +pyd +dRn dEg bYL uoo @@ -78364,22 +78062,22 @@ ksa uoo bYL gWI -qyd +dRn hvz bYL ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +noh +noh +noh +noh +noh +noh +noh +noh +noh ksa noh noh @@ -78630,11 +78328,11 @@ ksa ksa ksa ksa +uoo ksa +uoo ksa -ksa -ksa -ksa +uoo ksa ksa ksa @@ -78894,13 +78592,13 @@ kfl kfl kfl kfl -cRp -cRp -hsC -hsC -hsC -cRp -cRp +xyv +xyv +clf +clf +clf +xyv +xyv ksa ksa ksa @@ -79108,7 +78806,7 @@ oDl dNu mQR qvz -qyd +vkg nwe ksa ksa @@ -79118,7 +78816,7 @@ ksa ksa ksa qvz -qyd +vkg nwe aHU dNu @@ -79135,7 +78833,7 @@ ksa ksa uho oDl -hQK +dNu lcU kfl mpz @@ -79151,13 +78849,13 @@ wZF wZF wZF wZF -cRp -eRQ -wxT -vPL +xyv +fvV +fvV +fvV +fvV fvV xyv -cRp tgJ ucJ ksa @@ -79364,9 +79062,9 @@ uiu kXx dNu nwa +uho uiu -uiu -uiu +uho ksa ksa ksa @@ -79374,9 +79072,9 @@ ksa ksa ksa ksa +uho uiu -uiu -uiu +uho eed dNu tbO @@ -79408,13 +79106,13 @@ wZF wZF wZF wZF -cRp -xMz -mRi -oAX +xyv +gxx +wxT +fvV tyt -hNJ -cRp +oAX +xyv ryp ucJ ucJ @@ -79621,7 +79319,7 @@ uiu kXx dNu qRH -oPJ +urs bHQ uiu ksa @@ -79665,13 +79363,13 @@ wZF wZF wZF wZF -cRp -bKY -xMz -xIX -sMS -rjd -cRp +xyv +fvV +fvV +fvV +fvV +fvV +xyv oHt fpa iiv @@ -79878,7 +79576,7 @@ uiu xIz pRn mSx -qgO +dNu xyw uiu ksa @@ -79890,7 +79588,7 @@ ksa ksa uiu aXb -qgO +dNu bDL pRn tbO @@ -79922,13 +79620,13 @@ wZF wZF wZF wZF -cRp +xyv mbK -oAX -clf +lJj +lJj lJj whN -cRp +xyv ucJ cim ucJ @@ -80179,13 +79877,13 @@ wZF wZF wZF wZF -cRp -cRp -cRp +xyv +eRQ +eGV pzi -cRp -cRp -cRp +vPL +cgX +xyv wXM pIS gUS @@ -80436,13 +80134,13 @@ wZF wZF wZF wZF -cRp -eGV +xyv +cox +tWy +pzi tWy -uut -cgX cox -cRp +xyv suC pIS aKS @@ -80649,9 +80347,9 @@ uiu kXx pRn nwa +uho uiu -uiu -uiu +uho ksa ksa ksa @@ -80659,9 +80357,9 @@ ksa ksa ksa ksa +uho uiu -uiu -uiu +uho eed pRn tbO @@ -80693,9 +80391,9 @@ wZF wZF wZF wZF -cRp +xyv fby -hxM +tWy dZz sKs qQe @@ -80907,7 +80605,7 @@ jkQ pRn mQR qvz -qyd +ins nwe ksa ksa @@ -80917,11 +80615,11 @@ ksa ksa ksa qvz -qyd +ins bLR aHU pRn -naL +dsc uho ksa ksa @@ -80933,7 +80631,7 @@ xXP ksa ksa uho -oDl +rMM xxP tbO kfl @@ -80950,13 +80648,13 @@ wZF wZF wZF wZF -cRp +xyv tRW rwq -nxG -rwq +smr +tWy muO -cRp +xyv mgd pIS kHP @@ -81144,12 +80842,12 @@ ksa ksa uho akO +uho uiu uiu uiu uiu -uiu -uiu +uho akO uho ksa @@ -81207,13 +80905,13 @@ wZF wZF wZF wZF -cRp +xyv jDX vlq afh -xMz -xMz -cRp +sMS +hxM +xyv dpc tdV gsj @@ -81407,7 +81105,7 @@ lBS kqu bHQ uiu -qyd +dbz uho ksa ksa @@ -81447,7 +81145,7 @@ uiu uho ksa uho -kXx +sLa xxP feq cRp @@ -81631,7 +81329,7 @@ ksa ksa ksa ksa -ksa +uoo ksa ksa ksa @@ -81646,8 +81344,8 @@ dPz bMC dyv gLW -imV -uPa +dPz +uof pun uho uiu @@ -81658,12 +81356,12 @@ uiu uho uho aPe -uiu -eed -qgO +uho +rlG +dNu dHj nwa -uiu +uho uhA uho uho @@ -81674,25 +81372,25 @@ uiu uiu uho uho -kXx +axF tUH ryw trZ -bYL -bYL -bYL +uho +uho +uho uiu uiu uiu uiu uiu -bYL -bYL -bYL +uho +uho +uho esT tNG tUH -tbO +eyp uho uiu uho @@ -81710,27 +81408,27 @@ tbO cRp qJc hjd -wJA -owX -wJA +qVf +xfW +qVf ePb qVf xfW -wJA -wJA -wJA +qVf +qVf +qVf xfW qVf -wJA -cWF -wJA +qVf +ePb +bKY jdV -rSs xMz -kde +tQD +xIX cRp bOH -xMz +tRg dAR xcx bOH @@ -81888,22 +81586,22 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa +uoo +uoo +uoo +uoo fPN -whJ -rxs -hjc +lBX +coA +hPN fPN fBd wUn -dPz +cVY bMC xZB xZG -dPz +cVY eRY pun exU @@ -81965,7 +81663,7 @@ aqQ lDy ajG cRp -rSs +tQD pLl rdt rnO @@ -82145,14 +81843,14 @@ ksa ksa ksa ksa -ksa +uoo ksa ksa ksa fPN -kCF +hPN pLu -vXb +lnT fPN bho gRk @@ -82189,7 +81887,7 @@ xxP xxP ugj xxP -vho +xxP xxP xxP xxP @@ -82205,7 +81903,7 @@ lZP irc irc irc -hMD +irc irc hNN irc @@ -82222,7 +81920,7 @@ tvj rcC puc fHI -iyy +jGs jkF nxG djP @@ -82234,8 +81932,8 @@ xMz xMz xMz djP -xMz -uut +xIX +tRg xMz xmp iuN @@ -82407,9 +82105,9 @@ ksa ksa ksa fPN -vkh -coA -dKf +hPN +rxs +dhd fPN cRQ dpZ @@ -82421,17 +82119,17 @@ cfv xmK pun pdz -ndl +vRw qnR cUh -jUb +vfW iGw qnR qnR ndl +eUO qnR -qnR -qnR +jee qnR qnR qnR @@ -82439,14 +82137,14 @@ ndl qnR qnR iGw -qnR +jee cUh jUb vRw umz ghp -umz qnR +wuE qnR pDR hen @@ -82462,8 +82160,8 @@ wjA vUa sQv sJJ +uqz jxF -fir ghp fir jxF @@ -82474,12 +82172,12 @@ iKL jxF jxF jxF -iqs +jxF jxF jgM lTP cRp -xMz +xqQ rdt iQW cRp @@ -82672,10 +82370,10 @@ tLs mEg lYe jOc -mEg +qds nyL ydv -ydv +nld fPN fPN fPN @@ -82710,9 +82408,9 @@ ngz tAb whI uho -eOc +kCD geT -fUf +lNx uho whI miv @@ -82727,7 +82425,7 @@ ucP ucP ucP ucP -ucP +ogY ogY ogY ogY @@ -82934,31 +82632,31 @@ bMC sQf pGu fPN -vxd +vKc wfE sNZ iHO -rSo +bvR fPN -vxd +vKc wRs -nbP +fhe fPN qPR wfE lGp fPN -vxd +vKc fBi wRs fPN xkQ -uTq -eos -fBi +wfE +iHO +jOZ fPN gAI -qem +pJW aqj hsB bbw @@ -82984,7 +82682,7 @@ rRb ybk cee vcD -ucP +ogY cSq cvr sNl @@ -82998,7 +82696,7 @@ wCn cRp cRp eGm -gTH +whr gTH xtQ hzK @@ -83196,23 +82894,23 @@ iHO iHO iHO iHO -aRM +fxI iHO iHO iHO -aRM +fxI iHO iHO iHO -aRM +fxI iHO iHO iHO -aRM +fxI iHO iHO iHO -fBi +suE fPN xPw qem @@ -83241,7 +82939,7 @@ qZn csj prU sNm -ucP +ogY ogY ogY cUz @@ -83273,9 +82971,9 @@ ksa ksa ksa cRp -tRg +qLd cRl -pWE +gCP cRp ksa ksa @@ -83437,7 +83135,7 @@ aQt nZL duQ iHO -vxd +vKc fPN uof qDp @@ -83445,31 +83143,31 @@ kkb dGT cid bMC -dyv -gLW +kUB +gWL fPN qPR iHO -nbP +fhe wfE -vxd +vKc fPN lGp -vxd +vKc wfE fPN -vxd +vKc qPR wRs fPN -nbP +fhe wRs -vxd +vKc fPN -qVi -wfE -uBX +eJq wfE +iHO +fhe fPN qem qem @@ -83481,7 +83179,7 @@ wbe xxP sNf vRV -giZ +ams mgY imH vRV @@ -83498,7 +83196,7 @@ jlN tvt ske oYs -ucP +ogY vCB bOS blh @@ -83530,9 +83228,9 @@ ksa ksa ksa hsC -xMz +tRg cRl -xMz +xIX hsC ksa ksa @@ -83693,7 +83391,7 @@ nZL nZL nZL fPN -qru +cfC fPN fPN fPN @@ -83706,7 +83404,7 @@ fPN fPN fPN fPN -cwQ +cfC fPN fPN fPN @@ -83723,7 +83421,7 @@ fPN fPN fPN fPN -wfE +iOZ rSo iHO spv @@ -83741,21 +83439,21 @@ fhw ejt ayh rGN -sFv +fhw rAT wjA mle oHb qQT iFy -oMq +uBC usv pXG kRe tvt ske chD -ucP +ogY oSM api fzB @@ -83954,17 +83652,17 @@ iHO rSo fPN qPR -wfE -wfE +fhe +noO qPR fPN -vxd +vKc iCB qPR fPN kCF iHO -vxd +vKc fPN mxu fdO @@ -83975,15 +83673,15 @@ fPN eyh tMt mNt -mNt +kdC oNL wvU gHO fPN dhd -nbP +fhe iHO -vkg +vKc fPN bRG bbw @@ -83995,7 +83693,7 @@ wbe xxP sNf nEU -ufu +ams bEV lCf xNd @@ -84005,14 +83703,14 @@ mle oHb qQT sui -wkK -qZj +oMq +iAi ucP vhN tvt ske cfl -ucP +ogY qUB woB mUM @@ -84061,13 +83759,13 @@ xXP ksa ksa ksa +noh ksa ksa ksa ksa ksa -ksa -ksa +xXP ksa ksa ksa @@ -84204,19 +83902,19 @@ ksa fEP ksa nGn -rMn -iaB -lLW +pEQ +wfE +mlj iHO iCB fPN -rHG -nbP -qVi +wfE +bvR +wfE wfE fPN wfE -rHG +wfE wfE fPN wfE @@ -84235,14 +83933,14 @@ jiy oDQ oNL pAd -uXH +gHO fPN -vxd +vKc iHO iHO -qVi +eJq fPN -qem +vUY qem qem qem @@ -84253,7 +83951,7 @@ xxP xeZ mcd ams -bEV +opR lCf cUe wDM @@ -84318,13 +84016,13 @@ xXP ksa ksa ksa -xXP -ksa +noh ksa ksa ksa ksa ksa +xXP ksa ksa ksa @@ -84461,21 +84159,21 @@ ksa fEP ksa nGn -rMn -wfE -mlj +pEQ +iaB +lLW iHO iHO -aRM +fxI iHO iHO iHO iHO -aRM +fxI iHO iHO iHO -aRM +fxI iHO jef jiS @@ -84492,12 +84190,12 @@ mNt pAd bKL nai -uXH +gHO fPN -vxd +vKc iHO wfE -jOZ +fBi fPN dTD dTD @@ -84526,7 +84224,7 @@ ikq fVI bMr buR -ucP +ogY lRp hdS dpy @@ -84558,7 +84256,7 @@ ksa ksa ksa hsC -xMz +hsc cRl wnd hsC @@ -84575,13 +84273,13 @@ xXP xXP xXP xXP -xXP -ksa -ksa +noh ksa ksa +xXP ksa ksa +xXP ksa ksa ksa @@ -84724,12 +84422,12 @@ vxd iHO fBi fPN -vxd +vKc qPR iCB -nbP +fhe fPN -nbP +fhe fBi fBi fPN @@ -84749,10 +84447,10 @@ sVp pAd oNL pAd -uXH +gHO fPN fPN -ibw +cfC fPN fPN fPN @@ -84783,13 +84481,13 @@ sWP rYM gTn lnp -bwg +iIh iIh iIh mcn trV mcn -fvH +iIh qhu qhu qhu @@ -84798,8 +84496,8 @@ qhu qhu sTE jTs -tEB gzQ +tEB wPX fmb hxy @@ -84815,7 +84513,7 @@ ksa ksa ksa hsC -xIX +tRg cRl aCA hsC @@ -84832,13 +84530,13 @@ xXP ksa ksa ksa -xXP -ksa -ksa +noh ksa ksa +xXP ksa ksa +xXP ksa ksa ksa @@ -84978,7 +84676,7 @@ fPN fPN fPN fPN -ibw +cfC fPN fPN fPN @@ -85006,11 +84704,11 @@ mQU tom oNL eSX -uXH +gHO fPN -hjI -iHO -fBi +cwL +mYW +kCF fPN bPy xGo @@ -85046,17 +84744,17 @@ prl snm bKO oIc -fvH +iIh vyC -eji +iue suW boe wAR qhu -auk +sTE jTs tEB -tEB +gzQ kza tPs pOx @@ -85089,13 +84787,13 @@ xXP ksa ksa ksa +noh ksa ksa +xXP ksa ksa -ksa -ksa -ksa +xXP ksa ksa ksa @@ -85234,7 +84932,7 @@ dPU wOS qYY fPN -wfE +iOZ iHO nsB fPN @@ -85243,15 +84941,15 @@ mTj wZQ imo sWE -imo -kQo +wkK +pyZ sSA esy fWY imb kQo -imo -sWE +wkK +mWn imo wZQ sSA @@ -85265,9 +84963,9 @@ oNL oNL oNL fPN -kCF -uBX -vxd +cwL +mYW +vKc fPN kNO aKB @@ -85289,21 +84987,21 @@ tvj sMy msO fUs -owY +fUs fUs fUs hLB fUs tTR -gai -rmn +cdP +wgX ddy cew mug nns fET eBR -fvH +iIh oHG pHx pHx @@ -85312,8 +85010,8 @@ xzC xIL nki jTs -tEB gzQ +tEB nxh blA gJY @@ -85494,7 +85192,7 @@ byj odN iHO iHO -qgA +aRM qmK fCT fCT @@ -85522,7 +85220,7 @@ off off cMj fPN -vKc +nbP mYW uCh arj @@ -85541,7 +85239,7 @@ hBe wjA anh dOn -whr +gNn fhd ufq bnl @@ -85550,17 +85248,17 @@ rFC plt tei bnl -cLZ +jLQ tTR cLZ -uKO +eXV ddy fmZ oJB mVD fQY mbE -fvH +iIh prw avz tzZ @@ -85569,8 +85267,8 @@ haq wcp dAS eTG -gzQ tEB +gzQ nxh raY xGG @@ -85757,14 +85455,14 @@ ldX fHK mbV frx +jkJ jaQ fHK fHK fHK fHK -fHK -fHK jaQ +jkJ frx tSN fHK @@ -85781,7 +85479,7 @@ cBe fPN cwL mYW -vXb +fhe fPN etC aKB @@ -85810,7 +85508,7 @@ bnl jEi tTR gAb -uVJ +uKO ddy ddy ddy @@ -85991,7 +85689,7 @@ ksa ksa ksa ksa -xXP +ksa ksa ksa ksa @@ -86006,7 +85704,7 @@ fPN fPN fPN fPN -ibw +cfC fPN fPN xgf @@ -86038,12 +85736,12 @@ wig fPN cwL mYW -vxd +kCF fPN cMT bKP kfJ -axZ +pHP qEk mrF hCH @@ -86064,10 +85762,10 @@ ogR mKZ vBm bnl -jEi -bsR +jIv +oFP qqu -azE +tei bnl rmn rmn @@ -86076,12 +85774,12 @@ fUs jEi bnl qJD -pHx +fbw qqU xeM aKM qhu -auk +sTE jTs ggp iZd @@ -86117,7 +85815,6 @@ amD ksa ksa ksa -xXP ksa ksa ksa @@ -86125,6 +85822,7 @@ ksa ksa xXP ksa +xXP ksa ksa ksa @@ -86232,6 +85930,7 @@ ksa ksa ksa ksa +sQS ksa ksa ksa @@ -86242,18 +85941,17 @@ ksa ksa ksa ksa +fEP +fEP +fEP ksa ksa xXP -ksa -ksa -xXP -xXP xXP xXP ksa ksa -ksa +xXP ksa ksa ksa @@ -86311,18 +86009,18 @@ kTj aKy leA erS -dCZ +nHY emg -dSO juc +dSO juc juc qxQ pig pff bnl -wgX -fUs +dOt +kSL aeY kLu exO @@ -86338,7 +86036,7 @@ tMU tMU qhu qhu -rzs +sTE jTs sdf gJY @@ -86363,9 +86061,9 @@ xtD cRp cRp cRp -ksa -ksa -ksa +noh +noh +noh amD ycy xSu @@ -86373,12 +86071,13 @@ dmE amD ksa ksa -ksa xXP ksa +xXP ksa ksa ksa +xXP ksa xXP ksa @@ -86429,216 +86128,215 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -"} -(54,1,1) = {" -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -xXP -xXP -ksa -xXP -ksa -ksa -ksa -xXP -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -fEP -ksa -nGn -wfE -edD -tcO -kgC -edD -fPN -slu -fCT -hUt -mFS -kOr -kOr -kOr -kOr -kOr -kOr -kOr -kOr -kOr -kOr -mFS -foP -fCT -fjo -hYZ -fnI -eBD -bQC -hYZ -bir -pEG -xyY -bZK -hyy -pEG -odm -kxo -ucO -lYa -ruN -xjO -uqS -ciA -uKT -qHo -tkP -wei -ndi -kNg -jZY -ieP -iEO -ciR -nJa -nJa -nJa -nJa -nJa -pig -oxO -bnl -jIv -ejE -uHf -uKO -bnl -plt -plt -cdP -tTR -vRX -bnl -qxu -sQz -smN -aGv -epO -ffH -jga -jTs -fEr -gJY -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -hsC -fqI -cRl -xMz -xMz -tRg -hsC -ksa -ksa -ksa -amD -xVH -wqw -nZD -amD -ksa -ksa -ksa -xXP -ksa -ksa -ksa -ksa -ksa -xXP -ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +"} +(54,1,1) = {" +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +uoo +ksa +ksa +ksa +ksa +ksa +ksa +ksa +xXP +ksa +ksa +ksa +ksa +xXP +ksa +ksa +ksa +xXP +ksa +ksa +ksa +fEP +ksa +nGn +wfE +edD +edD +kgC +edD +fPN +slu +fCT +hUt +mFS +kOr +kOr +kOr +kOr +kOr +kOr +kOr +kOr +kOr +kOr +mFS +foP +fCT +fjo +hYZ +fnI +eBD +bQC +hYZ +bir +pEG +xyY +bZK +dGY +pEG +odm +kxo +ucO +lYa +ruN +xjO +uqS +ciA +uKT +qHo +tkP +wei +ndi +kNg +jZY +ieP +iEO +ciR +nJa +nJa +nJa +nJa +nJa +pig +oxO +bnl +azE +wji +uHf +uKO +bnl +plt +plt +cdP +tTR +vRX +bnl +qxu +sQz +smN +aGv +epO +ffH +jga +jTs +nFo +gJY +uoo +uoo +uoo +uoo +uoo +uoo +uoo +uoo +uoo +uoo +uoo +uoo +uoo +uoo +hsC +fqI +cRl +xMz +xMz +tRg +hsC +ksa +xXP +ksa +amD +xVH +wqw +nZD +amD +ksa +ksa +xXP +ksa +xXP +ksa +ksa +ksa +xXP +ksa +xXP ksa ksa ksa @@ -86744,15 +86442,15 @@ ksa ksa ksa ksa +uoo +fEP +fEP +fEP +uoo ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +uoo +uoo +uoo ksa ksa ksa @@ -86760,15 +86458,15 @@ xXP xXP xXP xXP +xXP ksa ksa xXP -xXP ksa ksa xXP xXP -ksa +xXP ksa ksa fEP @@ -86776,8 +86474,8 @@ ksa nGn hda wfE -tcO wfE +tcO qoB fPN adk @@ -86814,7 +86512,7 @@ kxo ndi rAl ndi -jmh +ezf ezf ezf xiC @@ -86885,8 +86583,8 @@ eib oVv mej amD -uoo -uoo +ksa +ksa uoo uoo uoo @@ -86999,15 +86697,15 @@ ksa ksa ksa ksa +uoo ksa ksa ksa +uoo ksa ksa ksa -ksa -ksa -ksa +uoo ksa ksa ksa @@ -87019,12 +86717,12 @@ xXP ksa ksa ksa -xXP ksa +xXP ksa ksa -xXP ksa +fEP ksa ksa ksa @@ -87033,8 +86731,8 @@ uoo fPN vcW rEd -tcO iCB +tcO hTN fPN oQn @@ -87071,7 +86769,7 @@ rwA hhK smQ hCj -sDz +ezf gax jlA gLv @@ -87135,24 +86833,24 @@ cRl tQD hsC ksa -ksa +xXP ksa xba xba ujN xba xba -ksa -ksa uoo -ksa +uoo uoo ksa +uoo ksa ksa ksa uoo ksa +uoo ksa ksa uoo @@ -87256,23 +86954,23 @@ ksa ksa ksa ksa +uoo +uoo +uoo +uoo +uoo +uoo +uoo +uoo +uoo ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa xXP xXP +ksa +xXP xXP xXP xXP @@ -87281,17 +86979,17 @@ xXP xXP xXP xXP +fEP xXP xXP ksa -ksa uoo ksa fPN fPN fPN -ibw fPN +cfC fPN fPN nCB @@ -87314,7 +87012,7 @@ qzQ bMc mOB xVB -uvN +xVB xVB mQZ pCI @@ -87328,7 +87026,7 @@ xhs ygZ kos ezY -sDz +ezf scf jlA sQH @@ -87348,13 +87046,13 @@ kgn nJa xqS rCa -iZW +uGS wNw emg ohF pig wKV -ema +uGS bnl bnl ohf @@ -87372,7 +87070,7 @@ rCj lRD lRD lRD -uoo +ksa uoo ksa ksa @@ -87392,7 +87090,7 @@ cRl xIX cRp ksa -ksa +xXP ksa wEB oWd @@ -87414,7 +87112,7 @@ saV ksa uoo ksa -nAS +ksa ksa ksa ksa @@ -87513,20 +87211,20 @@ ksa ksa ksa ksa +uoo ksa ksa ksa ksa ksa +uoo ksa +uoo ksa ksa ksa ksa -ksa -ksa -ksa -ksa +xXP ksa ksa ksa @@ -87538,7 +87236,7 @@ xXP ksa ksa ksa -xXP +fEP ksa ksa ksa @@ -87547,8 +87245,8 @@ uoo fPN xYt wfE -iHO wfE +iHO vKc fPN xRs @@ -87572,7 +87270,7 @@ aIp drQ qUQ ksb -qUQ +xOK lej eDT juk @@ -87585,7 +87283,7 @@ vFV wfR kos epk -sDz +ezf uey jlA sQH @@ -87606,11 +87304,11 @@ nJa xqS rCa jSO -fpN +qPn emg ohF pig -gna +rJk jSO bnl wgX @@ -87653,7 +87351,7 @@ saV saV wEB pam -mfv +tuu rXQ wEB saV @@ -87774,38 +87472,38 @@ ksa ksa ksa ksa +uoo +uoo +uoo ksa ksa ksa ksa +uoo +uoo +xXP +xXP +xXP +xXP +xXP ksa ksa ksa +xXP ksa ksa ksa -sQS -ksa xXP -xXP -ksa ksa -xXP -xXP -xXP ksa -xXP -xXP -xXP -xXP ksa fEP ksa nGn wfE eJq -iHO noO +iHO iCB fPN idJ @@ -87842,11 +87540,11 @@ kxo nOK kos epk -sDz +ezf wSQ jlA sQH -ejh +lKw mgQ xMb ezf @@ -87863,22 +87561,22 @@ nJa xqS rCa knA -uKR +wKr emg ohF pig -wah +isR knA bnl epc fUs rmn bnl -jVP +kCA anp nOw tnW -jVP +awE rDR oVH fxL @@ -87900,8 +87598,8 @@ ksa ksa ksa ksa -cRp -qLd +hsC +cKF cRl tRg cRp @@ -87921,14 +87619,14 @@ lAT eSd nwz xHP -nwz +omu vuH cPI saV uoo uZR ksa -ksa +nAS ksa ksa ksa @@ -88033,6 +87731,9 @@ ksa ksa ksa ksa +uoo +ksa +ksa ksa ksa ksa @@ -88044,15 +87745,12 @@ ksa ksa ksa ksa -xXP ksa ksa ksa -xXP ksa ksa ksa -xXP ksa ksa ksa @@ -88061,7 +87759,7 @@ ksa nGn dae wfE -iHO +wfE iHO qPR fPN @@ -88099,10 +87797,10 @@ kxo wfR kos hZp -sDz +ezf vkz dbO -sQH +mrG xWv mgQ hEq @@ -88119,13 +87817,13 @@ kgn nJa xqS rCa -iZW +uGS wNw emg sJH pig wKV -wgg +uGS bnl gAb fUs @@ -88157,7 +87855,7 @@ ksa ksa ksa ksa -cRp +hsC xMz cRl cRl @@ -88180,7 +87878,7 @@ saV wEB ycx nwz -jgH +pXi saV ksa uoo @@ -88277,7 +87975,9 @@ ksa ksa ksa ksa +uoo ksa +sQS ksa ksa ksa @@ -88288,36 +87988,34 @@ ksa ksa ksa ksa +uoo ksa ksa ksa ksa ksa ksa +sQS +ksa +ksa ksa ksa ksa ksa -xXP -xXP -xXP -xXP -xXP ksa ksa ksa ksa ksa ksa -xXP ksa ksa ksa uoo uoo fPN -lBu -lBu +eQk +eQk wfE iHO qPR @@ -88340,23 +88038,23 @@ mFS ghV ldX vaG -kxo -kxo -kxo -kxo -kxo +nIP +nIP +nIP +nIP +nIP dqb juk vZb -kxo -kxo -kxo -kxo -kxo +qZj +qZj +qZj +qZj +qZj rEP kos -uMT -sDz +epk +ezf tkR agv sQH @@ -88414,7 +88112,7 @@ ksa ksa ksa ksa -cRp +hsC rFQ nkU cJB @@ -88423,7 +88121,7 @@ nwz tuu vrf wEB -uov +cfP byK jgH wEB @@ -88531,8 +88229,10 @@ ksa ksa ksa ksa +uoo ksa ksa +uoo ksa ksa ksa @@ -88548,27 +88248,23 @@ ksa ksa ksa ksa +uoo ksa ksa ksa ksa ksa +fEP +fEP +fEP ksa +fEP +fEP +fEP ksa -ksa -ksa -ksa -ksa -xXP -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +fEP +fEP +fEP ksa ksa ksa @@ -88576,7 +88272,9 @@ fPN fPN fPN fPN -ibw +fPN +fPN +cfC fPN fPN xgf @@ -88597,23 +88295,23 @@ jvu xgf cDu xgf -kxo -cbD +nIP +hTs ybH kkH -kxo +nIP ufl -hoa +juk hpl -kxo +qZj lLZ hMn -hpL -kxo +iho +qZj feD kos epk -sDz +ezf gNX hje sQH @@ -88623,7 +88321,7 @@ fGl dlj pzt jZY -nEj +nZO pEY vaR uFv @@ -88631,7 +88329,7 @@ juc kgn kgn nJa -vom +tJE pEY gtA wuS @@ -88684,8 +88382,8 @@ saV saV saV wEB -ksa -ksa +uoo +uoo uoo ksa uoo @@ -88788,11 +88486,14 @@ ksa ksa ksa ksa +uoo ksa ksa +uoo ksa ksa ksa +uoo ksa ksa ksa @@ -88802,29 +88503,24 @@ ksa ksa ksa ksa +uoo ksa +uoo ksa +uoo ksa ksa ksa ksa +xXP ksa ksa ksa +xXP ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +xXP ksa ksa ksa @@ -88832,9 +88528,11 @@ rxc nGn oUr nGn -uSp +aSJ +uzT +mlj iHO -hgi +vKc fPN fLf oSm @@ -88854,28 +88552,28 @@ dmh wZQ oSm efq -kxo -hkO +nIP +nyh oWT uZH kWj -pYI -hoa -gLN +pCI +juk +oCd vlr gmK jyz -qik -kxo +btH +qZj aLZ kos daT -sDz +ezf cbh qmB sQH eHO -nJL +eHO neo jUD foU @@ -88883,14 +88581,14 @@ mCr aAm rwW keu -toh -toh -toh -toh -toh +tGT +tGT +tGT +tGT +tGT sDr heI -keu +xBN tGT tGT dZu @@ -88898,7 +88596,7 @@ cUR cUR bwW bnl -bOO +uKO fUs cLZ bnl @@ -88910,7 +88608,7 @@ loc rDR aLr bZF -bZF +gLN bZF eNK oBh @@ -88940,20 +88638,20 @@ wEB ksa uoo ksa -ksa +uoo ksa ksa uoo -ksa uoo -ksa -ksa -ksa uoo -ksa uoo -ksa -ksa +uoo +uoo +uoo +uoo +uoo +uoo +uoo uoo ksa ksa @@ -89042,9 +88740,17 @@ ksa ksa ksa ksa +uoo +uoo +fEP +fEP +fEP +uoo +uoo ksa ksa ksa +uoo ksa ksa ksa @@ -89054,44 +88760,36 @@ ksa ksa ksa ksa +uoo +uoo +uoo +uoo +uoo ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +xXP +xXP +xXP +aVH +aVH +aVH +aVH +aVH +aVH +aVH +aVH +aVH +aVH +aVH +aVH aVH iUx -pTC +hPN lho -nOZ +wfE +wfE +wfE iHO -axF +wfE kIy lNW fCT @@ -89111,23 +88809,23 @@ fCT fCT fCT wGi -kxo -hTs +nIP +hkO lEf mvb -kxo +nIP ufl -ulr +juk qNB -kxo +qZj lVj +rfo jbQ -iho -kxo +qZj kNn bdl epk -sDz +ezf bnL wuk gCA @@ -89138,12 +88836,12 @@ dlj pzt jZY erS -dCZ +nHY emg +tar sjV juc juc -juc jCl pig pEY @@ -89157,10 +88855,10 @@ pml bnl cLZ fUs -bOO +uKO bnl vqK -oUG +iBi nOw sGm wnQ @@ -89197,7 +88895,7 @@ saV ksa uoo ksa -ksa +uoo ksa ksa uoo @@ -89296,14 +88994,20 @@ ksa ksa ksa ksa +sQS ksa ksa ksa ksa ksa +uoo ksa ksa +uoo ksa +uoo +uoo +uoo ksa ksa ksa @@ -89313,40 +89017,34 @@ ksa ksa ksa ksa +uoo ksa +uoo ksa +uoo ksa ksa ksa ksa +xXP ksa ksa ksa +xXP ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +xXP ksa ksa ksa rxc nGn -hPN +ncV nGn xkQ +giZ +lLW ita qkB fPN @@ -89368,23 +89066,23 @@ fHK fHK ldX btf -kxo -kxo -kxo -kxo -kxo +rOt +rOt +rOt +rOt +rOt eqS -hoa +juk dIG -kxo -kxo -kxo -kxo -kxo +ugM +ugM +ugM +ugM +ugM bUn kos uMT -sDz +ezf ezf ezf xiC @@ -89397,7 +89095,7 @@ jZY erS pEY oMG -yaL +rtq yaL yaL yaL @@ -89451,10 +89149,10 @@ gAH tuu jgH saV -ksa uoo -ksa -ksa +uoo +uoo +uoo ksa ksa uoo @@ -89557,13 +89255,18 @@ ksa ksa ksa ksa +uoo ksa +uoo ksa ksa +uoo ksa ksa ksa +uoo ksa +uoo ksa ksa ksa @@ -89573,38 +89276,33 @@ ksa ksa ksa ksa +uoo ksa ksa ksa ksa ksa ksa +xXP ksa ksa ksa +xXP ksa ksa ksa +xXP ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa fPN fPN fPN fPN -qru +fPN +fPN +cfC fPN fPN fPN @@ -89625,19 +89323,19 @@ oHl gCR xWm gCR -kxo -fDg +rOt +fAq pUT hao -kxo +rOt ufl -hoa +juk hpl -kxo +ugM nJx myr -kXN -kxo +bLX +ugM wfR kos qcS @@ -89645,7 +89343,7 @@ sDz rNA jQu jQu -vce +jQu rgy sDz xud @@ -89674,7 +89372,7 @@ fUs cLZ bnl jEi -dOt +tei fUs cLZ jEi @@ -89711,7 +89409,7 @@ saV ksa uoo ksa -ksa +uoo ksa ksa uoo @@ -89810,27 +89508,24 @@ ksa ksa ksa ksa +uoo ksa +fEP ksa +uoo ksa +uoo ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +uoo +uoo +uoo +uoo +uoo +fEP +fEP +fEP +uoo +uoo ksa ksa ksa @@ -89859,8 +89554,11 @@ ksa ksa ksa ksa +ksa +ksa +ksa nGn -pBu +aZe qRD pBu fPN @@ -89882,27 +89580,27 @@ fFP uUa kzX xZj -kxo +rOt sLn vAH puN oqC -pYI -hoa -gLN +pCI +juk +oCd nJi tzi jEW -gOR -kxo +jgu +ugM eeV kos daT sDz roS -jQu -jQu -jQu +vbq +vbq +vbq atW sDz sqj @@ -89928,9 +89626,9 @@ nfq bnl tei fUs -bOO +uKO bnl -lJA +cTq cLZ fUs tei @@ -89965,10 +89663,10 @@ tcw tuu cuU wEB -ksa uoo -ksa -ksa +uoo +uoo +uoo eZG eZG eZG @@ -89981,7 +89679,7 @@ eZG eZG eZG eZG -ksa +uoo uoo ksa ksa @@ -90067,24 +89765,21 @@ ksa ksa ksa ksa +uoo +uoo +fEP +uoo +uoo +uoo +uoo ksa ksa ksa ksa +uoo ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +uoo ksa ksa ksa @@ -90114,7 +89809,10 @@ fEP ksa ksa ksa +ksa +ksa xXP +fEP xXP nGn mqN @@ -90139,19 +89837,19 @@ xRO xRO xRO kZf -kxo -fAq +rOt +hPs cAm uWn -kxo +rOt ufl -hoa +juk hpl -kxo +ugM jHT +pbN jOr -bLX -kxo +ugM xcP kos epk @@ -90165,7 +89863,7 @@ dUc rfl tYb jZY -jHn +iGm rRm ikU wEt @@ -90223,7 +89921,7 @@ aJB wEB wEB ksa -uoo +ksa ksa ksa eZG @@ -90326,26 +90024,23 @@ ksa ksa ksa ksa +fEP ksa ksa ksa +uoo ksa ksa +fEP +fEP +fEP ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +uoo +fEP +fEP +fEP +uoo ksa fEP fEP @@ -90366,13 +90061,16 @@ giM giM giM giM -ksa +xXP +fEP +fEP fEP fEP fEP xXP xXP ksa +ksa nGn xWa jDz @@ -90381,7 +90079,7 @@ fPN aKf aKf fPN -jHN +did xRO pvu bEF @@ -90396,19 +90094,19 @@ rtE rtE rtE isM -kxo -kxo -kxo -kxo -kxo +rOt +rOt +rOt +rOt +rOt gzC -hoa +juk iLe -kxo -kxo -kxo -kxo -kxo +ugM +ugM +ugM +ugM +ugM nrX kos kbT @@ -90421,20 +90119,20 @@ ixw tvZ pEL vpb -mCr +jZY lBN rRm -trv +jqp wEt blE wEt iuG xVa iJX -kCA +toh tQo -iKB -xBN +toh +hFW xVa wZh nKW @@ -90446,7 +90144,7 @@ jEi bnl bnl bnl -luq +ohf bnl bnl bnl @@ -90477,12 +90175,12 @@ wEB wEB wfo tuu -mhD -wEB +cfP wEB -saV wEB uoo +uoo +uoo eZG ara xKT @@ -90583,24 +90281,21 @@ ksa ksa ksa ksa +uoo +uoo ksa ksa +uoo ksa ksa ksa ksa +uoo ksa ksa +uoo ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +uoo ksa ksa ksa @@ -90628,11 +90323,14 @@ xXP ksa xXP ksa +xXP +ksa ksa ksa fPN fPN -qru +fPN +cfC fPN fPN fPN @@ -90648,24 +90346,24 @@ brd aux jHN bCh -kGr -rtE +fRq +hRV vqk rtE vZu -kxo -pxl +gjH +nGG nIa osY -kxo +gjH eDT -hoa +juk hpl -kxo +jvN dAB wEv -vEp -kxo +vSc +jvN xcP kos epk @@ -90681,17 +90379,17 @@ tYb jZY erS rRm -cRq +trv vww hvk iXU hHH xVa hcK -awE +ydB wev pmv -bwJ +pmv xVa bcq aEh @@ -90708,10 +90406,10 @@ tei uKO bnl rFC -eXV +cLZ fUs cLZ -wgX +dEs bnl biQ cfP @@ -90732,13 +90430,13 @@ cfP cfP wEB vuH -feW +udl tuu -nwz -wfo -lzw -cuU -wEB +rgJ +chv +saV +ksa +ksa ksa eZG vjv @@ -90840,6 +90538,7 @@ ksa ksa ksa ksa +uoo ksa ksa ksa @@ -90848,16 +90547,12 @@ ksa ksa ksa ksa +uoo ksa ksa +uoo ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +uoo ksa ksa ksa @@ -90876,9 +90571,11 @@ wZx wZx wZx wZx +xgX +mRx qgq -kOk -qgq +ybj +ybj ybj ybj ybj @@ -90889,10 +90586,11 @@ ksa ksa nGn fBi +wfE iHO wfE kCF -aUL +qMF aUL fPN nHH @@ -90906,31 +90604,31 @@ aux jHN jvO kGr -rtE -rtE +juU +avD rtE gXm -kxo -tiN +gjH +uMN apw bGu uuD -pYI -hoa -gLN +pCI +juk +oCd uWF aNk cub -liE -kxo +nyH +jvN eeV kos bpV sDz gAX -jQu +ppi oiO -jQu +ppi mJa sDz fWt @@ -90945,10 +90643,10 @@ pWG vqJ hoq sWm -kfc bia -kfc -oFP +bia +sWm +sWm hoq sjw nKV @@ -90981,21 +90679,21 @@ kVi tuu tuu tuu -fRq -xcd +iVI +rlk rlk rlk -qhp -tuu -iVI -tuu tuu -jRe tuu +pJb tuu tuu tuu -wEB +nwz +eeb +saV +uoo +uoo uoo eZG ara @@ -91115,9 +90813,6 @@ ksa ksa ksa ksa -ksa -ksa -ksa fEP ksa wZx @@ -91135,23 +90830,26 @@ nxD bXU oWq mRx -qgq +kxd cbB +gJK uoF iBo -pDL +ayn +hLe ybj ksa xXP xXP nGn rMn +wfE iHO iHO iHO iHO iHO -xVj +luq hbX xRO pvu @@ -91163,23 +90861,23 @@ jcG jHN pvu rtE -mWn -hRV -pfy +rtE +rtE +rtE xlQ -kxo -nGG +gjH +tiN ggR eeM -kxo +gjH kBh sLo wJW -kxo +jvN iLp -nyH -vSc -kxo +aQh +ylV +jvN mac dFP yiR @@ -91198,13 +90896,13 @@ rRm qXR pWG wEt -ocD +wEt vkX xVa xLc -gHs -wev sYt +rFb +gHs wOD xVa mOc @@ -91219,7 +90917,7 @@ jEi jEi fBW bBP -bBP +eTW bnl rmn jEi @@ -91231,7 +90929,7 @@ nwz tuu cuU wEB -nwz +feW nwz nwz wEB @@ -91247,12 +90945,12 @@ bJW wEB kOW plG -avD -sXe -kxU -vrf tuu -wEB +sXe +chv +saV +ksa +ksa ksa eZG oZv @@ -91357,10 +91055,7 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa +uoo ksa ksa ksa @@ -91391,25 +91086,28 @@ gbn aSP bXU xAx -jou +ipb rDd lfm -eNH +rAH +bhf +bhf bhf lBB ybj xXP -xXP +fEP ksa nGn dQh wfE +wfE vKc eJq iHO -vXb +iOZ fPN -tvs +jHN rtE rtE xFj @@ -91420,19 +91118,19 @@ uUa qQf rtE rtE -tBI -oHl -oHl -oHl -kxo -kxo -kxo -kxo -kxo +rtE +rtE +rtE +qzx +gjH +gjH +gjH +gjH +gjH szb szb szb -kxo +fPN fPN fPN fPN @@ -91462,13 +91160,13 @@ laO dPD bGd etV -hFW +tCb xVa pnC qiT kDx bnl -jIv +rGg kSL rmn bnl @@ -91493,23 +91191,23 @@ wqv wEB wEB wEB -mft wEB wEB wEB wEB -vGM wEB +vGM wEB wEB wEB wEB wEB +aJB wEB wEB wEB -aXm -wEB +uoo +uoo uoo eZG eZG @@ -91523,7 +91221,7 @@ oWV qgD eZG eZG -ksa +uoo uoo ksa ksa @@ -91612,12 +91310,9 @@ ksa ksa ksa ksa -ksa -ksa -ksa uoo ksa -ksa +uoo ksa ksa ksa @@ -91648,10 +91343,12 @@ cnP vzd bXU qgq -jou +ipb qgq cbB riF +diY +uxF uxF mvF ybj @@ -91659,11 +91356,12 @@ ksa ksa ksa fPN +nGn +nGn +nGn fPN fPN -fPN -fPN -qru +cfC fPN fPN lBC @@ -91678,28 +91376,28 @@ iXp pXd iRs peS +iXp +iXp +vrc oHl ksa -ksa -xXP -ksa xXP ksa xXP ksa ksa ksa -ksa fPN fhe noO oSr pWi hqv +rpJ uRq sXl uRq -uRq +vtJ vcC vcC vcC @@ -91729,13 +91427,13 @@ bnl rTu bnl bnl -jEi -yce -yce -wgX +jIv +tpf +tpf +kaX bnl lSy -cLZ +qzg jwP bnl cfP @@ -91749,31 +91447,31 @@ aXB nwz cfP wEB -thf -nwz -mxZ -alM -wEB -nwz -nQn +mft +vrf vrf +kVX wEB -cfP -eub -tcw tcw -vKt -xXk +nQn +uut +uut +kde wEB +sbg tuu +nwz wEB ksa ksa -xXP ksa ksa +ksa +xXP +ksa xXP ksa +ksa eZG nAM oWV @@ -91866,17 +91564,14 @@ ksa ksa ksa ksa -ksa -ksa -ksa +sQS ksa uoo -ksa uoo -ksa -ksa -ksa -ksa +uoo +fEP +uoo +uoo ksa ksa fEP @@ -91905,16 +91600,19 @@ ujZ bXU bXU fTm -jou +ipb vCn cbB cbB cbB cbB +cbB +cbB ybj ksa ksa ksa +ksa xXP ksa ksa @@ -91936,9 +91634,9 @@ oHl oHl oHl oHl -ksa -ksa -xXP +oHl +oHl +oHl ksa xXP ksa @@ -91946,7 +91644,6 @@ xXP ksa ksa ksa -ksa fPN fPN fPN @@ -91956,8 +91653,9 @@ nZL nZL nZL nZL -nZL -nZL +vtP +vtP +vtP nZL nZL nZL @@ -91968,9 +91666,9 @@ hWV rRm mhA mPm -hxu +bog rRm -lYj +xml eBn vEB oOl @@ -91986,16 +91684,16 @@ tsD slx dgd bnl -jEi -cmW -cLZ -wgX +nkb +wji +tpf +nkb bnl kQR cLZ vPR bnl -alM +nwz mxZ nwz nwz @@ -92005,26 +91703,26 @@ jwW nwz nwz nwz -jwW -nwz -nwz +kpn nwz nwz -jwW nwz -evJ -evJ -xnE -evJ -jAw -fiC +feW +wEB +mYl +nQn uqn -dYg -kUB +fiC +vxl wEB +tcw tuu -wEB -wEB +cuU +xUa +xUa +xUa +xUa +xUa uoo vcG vcG @@ -92071,17 +91769,17 @@ ksa ksa ksa ksa +uoo ksa ksa ksa ksa +uoo ksa ksa ksa ksa -ksa -ksa -ksa +uoo ksa ksa ksa @@ -92124,17 +91822,14 @@ ksa ksa ksa ksa -sQS ksa -uoo -uoo -uoo -uoo -uoo -uoo ksa ksa ksa +fEP +ksa +xXP +xXP ksa fEP ksa @@ -92146,9 +91841,9 @@ wZx cZs cZs cZs -ybj -mRx -ihP +wZx +doA +onH xJb vUA ihP @@ -92162,16 +91857,19 @@ xJb xuA utG qgq -jou +ipb xKq bXU -xfT -kWN +vXf vVm +rdr +irp +kWN wZx ksa ksa ksa +ksa xXP xXP xXP @@ -92179,7 +91877,7 @@ nGn wfE iHO iHO -pDC +psO uBX iHO iHO @@ -92205,7 +91903,6 @@ ksa ksa ksa ksa -ksa xXP nGn iYK @@ -92214,6 +91911,7 @@ ksa xXP ksa xXP +ksa xXP ksa xXP @@ -92225,9 +91923,9 @@ coj rRm oIE mPm -wEt +hxu rRm -lyT +aMD qos wfJ gaa @@ -92239,49 +91937,49 @@ gMs qwd nUi bnl -gFs -oox +mSe +kSL mNd +ejD +tpf +tpf +tpf +pTC luw cLZ -yce cLZ cLZ luw -yce -yce -yce -luw nwz hNX hNX hNX hNX -nwz +nMp wEB cfP biQ iQd wEB cfP -tcw -tcw -cfP -wEB -tcw -tcw -eub -wEB cuU nwz -nwz -cuU -vuH -jgH +tcw wEB -tuu tcw +nQn +uut +uut +fkT wEB +tcw +tuu +kVX +xUa +imV +bsX +hSc +xUa ksa vcG nlj @@ -92290,13 +91988,13 @@ wTD mWC arN qDz -uLZ +alj dAo vcG qTv hfb -qcP -hfb +oyi +tZy wOu vcG ksa @@ -92325,23 +92023,23 @@ ksa ksa ksa ksa -ksa -ksa -ksa -uoo -ksa -ksa -ksa -ksa -uoo -ksa -ksa -ksa -ksa -uoo -ksa -ksa -ksa +fdt +niB +niB +niB +niB +niB +niB +niB +niB +niB +niB +niB +niB +niB +niB +niB +fdt ksa ksa ksa @@ -92384,13 +92082,10 @@ ksa ksa ksa ksa +xXP +fEP ksa ksa -uoo -ksa -xXP -xXP -xXP xXP ksa fEP @@ -92400,12 +92095,12 @@ cYs eLo dot bYZ -jou +los rdn -jou +los ugn jou -aco +jou jou jou jou @@ -92423,9 +92118,12 @@ tvX lMT wMO tRU +gWz +itd +lIO jEY -daR wZx +fEP xXP xXP xXP @@ -92462,7 +92160,6 @@ ksa ksa ksa ksa -ksa xXP nGn eGT @@ -92474,35 +92171,36 @@ poG poG poG poG +poG bVI kpr rWZ ley -erS +bMh rRm kbB mPm wGk rRm -xml -aMD +xhN +nZa wfJ lIY ozj oLg mmV -lUP +nmf oEc -jIO +lUP cOa bnl cTK -oox +kSL uwJ bnl rmn -yce -vfE +tei +cLZ rmn bnl sJM @@ -92512,38 +92210,38 @@ bnl tcw tuu mxZ -jay -sbg +nwz sbg wEB wEB -wqv -wEB -wEB -wEB wEB +wqv wEB wEB wEB wEB +wqv wEB wEB wEB -kEt -nwz -kEt +olT wEB wEB wEB wEB +jay tuu -tcw -wEB -ksa +jay +xUa +pIs +bsX +hSc +lhN +uoo vcG nlj nfa -nfa +jet nfa spr gIR @@ -92582,23 +92280,23 @@ ksa ksa ksa ksa -fdt -niB -niB -niB -niB -niB -niB -niB -niB -niB -niB -niB -niB -niB -niB -niB -fdt +uoo +ksa +ksa +uoo +ksa +ksa +ksa +ksa +uoo +ksa +ksa +ksa +ksa +uoo +ksa +ksa +uoo ksa ksa ksa @@ -92642,11 +92340,8 @@ ksa ksa ksa ksa -xXP -uoo -ksa +fEP ksa -xXP ksa ksa ksa @@ -92660,7 +92355,7 @@ wZx cZs cZs cZs -ybj +wZx lhk hXf xJb @@ -92671,7 +92366,7 @@ qgq flr xJb qgq -jGt +xhf xJb knr utG @@ -92679,9 +92374,11 @@ qgq jou qgq bXU +xfT +paw +erd snd aGa -iiC wZx ksa ksa @@ -92689,6 +92386,7 @@ ksa ksa ksa ksa +ksa fPN nGn nGn @@ -92719,13 +92417,13 @@ ksa ksa ksa ksa -ksa xXP nGn eGT vtP ksa poG +voY dim rCZ waa @@ -92735,32 +92433,32 @@ ksa kpr rWZ pjD -erS +enB rRm puT mPm -bog +trF rRm -xhN -nSy -wfJ -bGl -pCo +oLg +oLg +oET +oLg +oLg oLg bwa lUP -oFj -jIO +oEc +lUP szd bnl bnl -nld +ohf bnl bnl -rmn -cLZ +wgX cLZ -rmn +gAb +wgX bnl gap cLZ @@ -92769,34 +92467,34 @@ bnl tcw tuu thf +jay +sbg wEB -wEB -wEB -wEB +cNm thf nwz vrf wEB kYw -liQ -thf -cfP -wEB -mhD +cuU nwz -eUB +cfP wEB vrf nwz eUB wEB -kCZ -vrf +sbg nwz +vrf tuu -cuU -saV -uoo +nwz +xUa +llR +bsX +xzN +lhN +ksa vcG nlj njn @@ -92831,28 +92529,28 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa uoo ksa -ksa uoo ksa +uoo ksa ksa ksa uoo ksa ksa -ksa -ksa -uoo +fOA +fOA +fOA +fOA +fOA +fOA +fOA +fOA +fOA +fOA +fOA ksa ksa uoo @@ -92897,14 +92595,11 @@ ksa ksa ksa ksa -ksa -ksa -ksa uoo -ksa -ksa -ksa -ksa +uoo +fEP +uoo +uoo ksa ksa fEP @@ -92939,6 +92634,8 @@ dOS dOS dOS dOS +dOS +dOS oxa ksa ksa @@ -92948,6 +92645,7 @@ ksa ksa ksa ksa +ksa xXP ksa nGn @@ -92966,7 +92664,7 @@ nGn nGn fhe ydN -edD +nVu dUu rSo iBz @@ -92977,12 +92675,12 @@ nGn nGn nGn nGn -nGn fPN eGT vtP xXP poG +fiU ujY dTW dTW @@ -92992,27 +92690,27 @@ dBd kpr fZK pjD -erS +qvY rRm tnN mPm -prb +bSr rRm -oLg -oLg -oET -oLg -oLg -oLg +rHN +qCL +muy +bGl +wGc +sHs oWj eAj hoe -jIO +lUP ipL bnl -bOO +uKO fUs -rFC +tei bnl bnl xZO @@ -93027,37 +92725,37 @@ wEB hAe wEB wEB -cNm -tcw -jay +wEB +wEB +eub +nwz nwz cuU -qmd wEB jay -nwz +omu cwN -alM -jke -nwz -nwz nwz -jke +kpn nwz cuU nwz -aZe +jke nwz -feW nwz +nMp tuu -kVX -wEB -ksa +tuu +lTk +vHk +vHk +lhd +lhN +uoo vcG nlj nfa -nfa +jet nfa spr fBY @@ -93087,35 +92785,35 @@ ksa ksa ksa ksa -ksa -uoo -ksa -uoo -ksa -uoo -ksa -ksa -ksa +fdt +niB +niB +niB +niB +niB +niB +fdt uoo -ksa -ksa -fOA -fOA -fOA -fOA -fOA -fOA +fdt fOA fOA fOA +xpD +xpD +xpD +xpD +mmy +xpD +xpD +xpD +xpD fOA fOA -ksa -ksa uoo -ksa -ksa -ksa +niB +uoo +uoo +fdt ksa ksa ksa @@ -93152,17 +92850,14 @@ ksa ksa ksa ksa -ksa -ksa -ksa -uoo -uoo uoo uoo uoo ksa +uoo ksa -ksa +uoo +uoo ksa fEP ksa @@ -93193,10 +92888,13 @@ qgq jou mVH dOS -wsn -tDV +sOa +lsx +lCo +vde rCE oxa +ksa lws lws lws @@ -93234,13 +92932,13 @@ qpx qpx qpx qpx -qpx puy aIy vtP sMr poG -vtJ +oQc +ujY wKi vbl ekx @@ -93251,13 +92949,13 @@ qLz pjD dYc rRm -oZh +rRm iFB -oZh +rRm rRm lkq vLL -rHN +wui ehj oyo sHs @@ -93267,14 +92965,14 @@ jMj lUP oKm bnl -cdP +wji fUs cLZ bnl uKO -yce -cdP cLZ +cdP +tei vjs bOO cLZ @@ -93282,34 +92980,34 @@ cmW bnl tcw tuu -eub +feW +iNG +cuU wEB +cuU nwz nwz -alM -alM -nwz -nwz -jke -nwz nwz +kpn nwz -thf -wEB -jgH nwz -cfP +feW +qmd wEB hIb -jgH +vuH jgH wEB -eyp -tcw +jAw cuU -tuu -kVX -wEB +nwz +nwz +vrf +xUa +qiV +vHk +lhd +xUa ksa vcG nlj @@ -93318,7 +93016,7 @@ oXb pEy arN grW -jdA +alj uNa vcG skB @@ -93344,35 +93042,35 @@ ksa ksa ksa ksa -fdt -niB -niB -niB -niB -niB -niB -fdt +ksa +uoo +ksa +uoo +ksa +uoo +ksa +ksa +ksa uoo -fdt -fOA -fOA -fOA xpD xpD xpD xpD -mmy +aHT +aHT +aHT +aHT +aHT +aHT +aHT xpD xpD xpD xpD -fOA -fOA uoo +ksa +ksa niB -uoo -uoo -fdt ksa ksa ksa @@ -93411,14 +93109,11 @@ ksa ksa ksa ksa +uoo ksa ksa ksa -uoo ksa -uoo -uoo -uoo ksa ksa fEP @@ -93446,13 +93141,16 @@ bXU hcq xTT bXU -sOa +hmF jou lMT eGa shm +uBD +eCJ +sjs kFK -sLa +oxa pSA nIG nIG @@ -93462,7 +93160,7 @@ xXP fdt ksa ksa -ksa +xXP ksa nGn fBi @@ -93491,13 +93189,13 @@ nGn nGn nGn nGn -nGn fPN spv vtP xXP poG -ujY +tDO +bUq xlo xlo niA @@ -93507,12 +93205,12 @@ kpr rWZ pjD jHm -rRm +lea vNB mPm -wEt -qCL -fZB +oHP +rRm +fTU tLj pXb bHn @@ -93531,7 +93229,7 @@ luw cLZ cLZ cLZ -gAb +cLZ cLZ cLZ cLZ @@ -93540,40 +93238,40 @@ luw nwz tuu nwz +nwz +nwz jwW -alM nwz -cuU nwz +cuU nwz -alM -wEB -kEt -pYX -alM -okg -wEB -wEB -wEB -wEB -wEB -wEB -wEB -wEB -wEB -wEB wEB jay -tuu -wEB -wEB -wEB -xba -xba -xba -xba -xba -xba +cwN +nwz +okg +xUa +xUa +xUa +xUa +xUa +xUa +xUa +xUa +oTN +xUa +xUa +iuo +vHk +xUa +xUa +xUa +mDv +mDv +mDv +mDv +mDv +mDv vcG eaC vcG @@ -93598,35 +93296,35 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa uoo -ksa uoo -ksa uoo -ksa -ksa -ksa uoo -xpD -xpD +fOA +fOA +fOA +fOA +fOA +fOA +uoo +uoo +uoo xpD xpD aHT aHT aHT +xpD +xpD +lwj +xpD +xpD aHT aHT aHT -aHT -xpD xpD xpD -xpD -uoo +fOA ksa ksa niB @@ -93672,10 +93370,7 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa +uoo ksa ksa ksa @@ -93707,9 +93402,12 @@ fTm jou qgq dOS +nKe pOH +goR +kcr gNS -rCE +uQv pSA lZR evu @@ -93719,7 +93417,7 @@ ksa fdt ksa ksa -ksa +xXP ksa fPN fPN @@ -93747,13 +93445,13 @@ ksa ksa ksa ksa -ksa xXP nGn spv vtP ksa poG +sDC ceb gYF lUM @@ -93764,7 +93462,7 @@ kpr rWZ pjD erS -rRm +prb apt rIX sUl @@ -93772,10 +93470,10 @@ eQw fZB fZB wui -vAZ +wui vAZ cbZ -fTU +sjw xcL fay bVu @@ -93787,7 +93485,7 @@ gAb bnl eTW cLZ -bOO +gAb vjs cmW cdP @@ -93796,11 +93494,11 @@ rmn bnl tcw tuu +nwz +sbg tcw wEB eub -eub -nwz vuH jgH uuZ @@ -93808,34 +93506,35 @@ wEB aiS nwz nwz -wHW -wEB -vAP -wEB +eUB +xUa +uoX +xUa ciO -xgx -udl -wEB +ghA +ciO +xUa bzx -nwz +bsX snL -wEB -nwz -tuu -wEB -ukZ -sEB -pIs -hln -wEB -hcx -hcx -xba +xUa +vCq +vHk +bsX +xzN +xUa +uoX +uoX +xUa +uoX +uoX +mDv jKB -fuM +alj xLn vcG ksa +uoo ksa ksa ksa @@ -93854,40 +93553,39 @@ ksa ksa ksa ksa -ksa -uoo -uoo uoo -uoo -fOA -fOA -fOA -fOA -fOA +ksa +ksa +ksa fOA -uoo -uoo -uoo -xpD -xpD +eTq +jVU +lwj +aHT +aHT +aHT +aHT aHT aHT aHT +aHT +xpD +qEw xpD xpD lwj xpD xpD +qEw +xpD aHT aHT -aHT -xpD xpD fOA -ksa -ksa +fOA +uoo niB -ksa +uoo ksa ksa ksa @@ -93929,28 +93627,25 @@ ksa ksa ksa ksa +uoo ksa ksa +fEP ksa +uoo ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +uoo ksa ksa fEP uoo wZx -bXU -bXU -bXU +wZx +wZx +wZx bXU bXU bXU @@ -93967,6 +93662,9 @@ dOS dOS dOS dOS +dOS +dOS +dOS pSA aZn bxZ @@ -93976,7 +93674,7 @@ xXP fdt ksa ksa -ksa +xXP ksa fPN kCF @@ -94004,7 +93702,6 @@ ksa ksa ksa ksa -ksa xXP nGn spv @@ -94016,18 +93713,19 @@ poG poG poG poG +poG bVI kpr rWZ pjD erS -rRm -enB +ocD +wEt mPm wEt -qCL -fZB -fZB +rRm +kZc +pVn fZB xsm peO @@ -94057,10 +93755,6 @@ wEB wEB wEB wEB -wqv -wEB -wEB -wEB wEB wEB wEB @@ -94068,33 +93762,37 @@ wEB wEB wEB wEB +wqv wEB -cuU -icr +xUa +xUa +xUa +xzN +bsX pAY -wEB +xUa vac -eSd +qVH kgS -wEB -nwz -wUr -wEB -iLb -vIQ -tzr -tsh -wEB -hcx -hcx -xba -fyZ -jdA -mVT +xUa +bsX +vHk +bsX +pHn +mDv +mDv +mDv +mDv +mDv +mDv +mDv vcG -ksa -ksa -ksa +qHa +vcG +vcG +cHh +igm +igm ksa ksa ksa @@ -94117,34 +93815,34 @@ ksa ksa ksa fOA -eTq -jVU -lwj -aHT -aHT -aHT -aHT -aHT -aHT +rHT +xpD +xpD aHT +uoo +uoo +uoo +xpD +xpD aHT xpD -qEw xpD +wnr xpD -lwj +tdR +lMK +tdR xpD +wnr xpD -qEw xpD aHT -aHT +xpD xpD fOA -fOA -uoo +ksa niB -uoo +ksa ksa ksa ksa @@ -94186,24 +93884,24 @@ ksa ksa ksa ksa +uoo ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +fEP +uoo +uoo +uoo +uoo +uoo +uoo +uoo uoo ksa -ksa +fEP ksa uoo ksa ksa -fEP -ksa aeM joc oKA @@ -94213,14 +93911,14 @@ cnG cCf qgq bpE -qgq -qgq -gYH -vUA +hJa qgq jou qgq +qgq +xDM umL +xUO rDO qgq qgq @@ -94233,7 +93931,7 @@ ksa fdt ksa ksa -ksa +xXP ksa nGn wfE @@ -94261,7 +93959,6 @@ ksa ksa ksa ksa -ksa xXP nGn iHO @@ -94270,6 +93967,7 @@ ksa xXP ksa xXP +ksa xXP ksa xXP @@ -94300,12 +93998,12 @@ pkn bnl bnl rmn -cdP +cLZ cLZ jEi -bnl +jEi +uKO gAb -cLZ uKO bnl aAQ @@ -94314,44 +94012,44 @@ lnS wEB eub eub -nwz -jtE +omu +vrf eub wEB kCZ jay tcw -wEB -tcw -tcw -eub -wEB nwz -dIu -nwz -jwW +tcw +xUa +hSc +xUa ghA -nwz -nwz -jwW -nwz -tuu -jwW -nwz -vIQ -hBG -vIQ -xba -xba -xba -xba -vcG -btH -vcG -vcG +bsX +bsX +kwg +bsX +tsp +bsX +rBa +bsX +vHk +fiT +bsX +mDv +twO +wCD cHh +gct +eKr +bsK +tGq +jFP +rEf +hjP cHh -ksa +rcy +igm ksa ksa ksa @@ -94374,29 +94072,29 @@ ksa ksa ksa fOA -rHT +cLY xpD xpD aHT uoo -uoo -uoo -xpD +ksa +ksa xpD aHT +aHT +qEw +cVu +oEK xpD +itV +cuo +sHw xpD -wnr -xpD -tdR -lMK -tdR -xpD -wnr -xpD -xpD +oEK +cVu +qEw +aHT aHT -xpD xpD fOA ksa @@ -94443,23 +94141,23 @@ ksa ksa ksa ksa +fEP ksa ksa +fEP ksa +uoo ksa ksa ksa ksa uoo +ksa +ksa +fEP uoo uoo -ksa uoo -fEP -fEP -fEP -ePU -fEP uoo aeM nPx @@ -94473,13 +94171,13 @@ jou jou jou jou -jou -jou -jou lMT lMT lMT lMT +ptH +lMT +lMT dOa pSA jbA @@ -94490,8 +94188,8 @@ xXP fdt ksa ksa -ksa -ksa +xXP +xXP nGn gtP bCK @@ -94519,15 +94217,15 @@ ksa ksa ksa ksa -ksa fPN iHO nZL nZL nZL nZL -nZL -nZL +vtP +vtP +vtP nZL nZL nZL @@ -94552,16 +94250,16 @@ ksa ksa ksa nfj -uKO +mbi tTR tei -cLZ +uKO cLZ gAb cLZ -jEi -bnl -uKO +cLZ +wji +cLZ tei eTW bnl @@ -94574,40 +94272,46 @@ feW nwz nwz nwz -jwW +kpn nwz -cuU nwz -wEB -cuU nwz nwz -wEB -cuU -nwz nwz -wEB +bxz +owX +xUa +xzN +bsX +bsX +xUa fVU -nwz +bsX oux -wEB -nwz -tuu -wEB -gdx -nwz -nwz -nwz -fvk -kKw -gct -eKr -hGH -tGq -jFP -rEf -hjP +xUa +bsX +vHk +bsX +bsX +oVA +wCD +wCD +nhq +kHh +oPA +oPA +oPA +uHh +oPA +ugC cHh +cHh +cHh +igm +igm +cHh +iCE +rxc ksa ksa ksa @@ -94618,41 +94322,35 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +fdt +fdt +noh +fdt +fdt uoo -ksa -ksa -ksa fOA -cLY +aHT +aHT +aHT +aHT xpD xpD -aHT uoo -ksa -ksa xpD aHT -aHT -qEw -cVu -oEK xpD -itV -cuo -sHw xpD -oEK -cVu -qEw -aHT +xpD +xpD +ald +xpD +uoo +xpD +ald +xpD +xpD +xpD +xpD aHT xpD fOA @@ -94697,7 +94395,15 @@ ksa ksa ksa ksa +uoo +uoo +uoo +fEP +uoo +uoo +uoo ksa +uoo ksa ksa ksa @@ -94705,19 +94411,11 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa -uoo -uoo -uoo fEP ksa ksa uoo ksa -ksa aeM joc amL @@ -94727,14 +94425,14 @@ jHa cCf qgq qgq +rBk qgq -wvb qgq qgq grz -sjs qgq qgq +xUO qgq lMT mVH @@ -94747,7 +94445,7 @@ ksa ksa ksa ksa -ksa +xXP ksa nGn vxJ @@ -94776,14 +94474,14 @@ ksa ksa ksa ksa -ksa fPN -cCv +iHO nEW iHO iHO iHO iHO +spv xgY iHO iHO @@ -94791,7 +94489,7 @@ cCv pDC gyp pjD -jHn +nvt ksa ksa ksa @@ -94817,7 +94515,7 @@ kLu kLu kLu kLu -exO +kLu kLu cGh kLu @@ -94832,46 +94530,46 @@ jgH chv nwz wEB -nwz +cuU feW -vrf -wEB -cfP nwz cuU -wEB +vrf +xUa +qiV +xUa wGe -ghA -cuU -wEB +bsX +xzN +xUa orM -nwz +bsX dbt -wEB -nwz -tuu -wEB -pbG -tNQ -nwz -hHs -xba -xba -cjI -oPA +xUa +xzN +vHk +bsX +pIs +mDv +ygq +wCD +cHh +krW oPA +bff +tYy kZD oPA -etg -ugC -cHh -cHh -cHh +dgz igm +xPP igm -cHh -iCE -rxc +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -94882,32 +94580,32 @@ ksa ksa ksa fdt -fdt -noh -fdt -fdt -uoo -fOA -aHT -aHT -aHT -aHT -xpD -xpD +ksa uoo +ksa +ksa +ksa xpD aHT +uwr +auf +cIL +nLK xpD +ksa xpD +aHT xpD xpD -ald +qEw +itV xpD uoo +uoo +uoo xpD -ald -xpD -xpD +sHw +qEw xpD xpD aHT @@ -94957,25 +94655,25 @@ ksa ksa ksa ksa +fEP ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +uoo ksa uoo ksa -ylq ksa -kFk -kFk -kFk -kFk -kFk +fEP +fEP +fEP +fEP +fEP +fEP +uoo +uoo +uoo +uoo +mtq cCf cCf chZ @@ -94989,10 +94687,10 @@ xSs xSs xSs mWi -mWi eZP eZP -qgq +mWi +fTm lMT qgq pSA @@ -95004,7 +94702,7 @@ ksa ksa ksa ksa -ksa +xXP ksa fPN kCF @@ -95033,7 +94731,7 @@ ksa xXP hHw hHw -hHw +nZL nZL nZL nZL @@ -95077,7 +94775,7 @@ plt bnl uqM jDq -uKO +kaX bnl nwz rrq @@ -95087,48 +94785,47 @@ nwz nwz cuU nwz -nwz -wEB -wEB -wqv -wEB -wEB -wEB -bJd -wEB -wEB -wEB -wqv -wEB -wEB -wEB -wqv -wEB -wEB -cuU +ghG +xUa +xUa +wHW +xUa +xUa +xUa +xUa +xUa +xUa +xUa +oTN +xUa +xUa +xUa +oTN +xUa +xUa +kgu pcF -wEB -wEB -wEB -yhg -wEB -wEB -xba +iuo +xUa +mDv +mDv +mDv +mDv fGD -oPA -bff +cMy +aFt +gRr kZD -oAT oPA -dgz -igm +oEN +kTz pht -igm -ksa -ksa +gEQ +gMb ksa ksa ksa +koF ksa ksa ksa @@ -95138,41 +94835,42 @@ ksa ksa ksa ksa -fdt ksa +noh uoo -ksa -ksa -ksa -xpD +lwj +lwj +lwj +lwj +lwj aHT -uwr -auf -cIL -nLK +qgR +gAk +dfL +quQ xpD -ksa +uoo xpD aHT -xpD -xpD -qEw -itV -xpD +lwj +lwj +iDA +cuo uoo uoo +eZM uoo -xpD -sHw -qEw -xpD -xpD +uoo +cuo +iDA +lwj +lwj aHT -xpD +mOO fOA -ksa +uoo niB -ksa +uoo ksa ksa ksa @@ -95214,6 +94912,7 @@ ksa ksa ksa ksa +uoo ksa ksa ksa @@ -95221,18 +94920,17 @@ ksa ksa ksa ksa +fEP ksa +uoo ksa ksa +uoo ksa ksa -ylq uoo -kFk -apg -bdb -hmF -mDi +ksa +mtq mKE vyJ mEQ @@ -95241,13 +94939,13 @@ vez cCf ovc urW -urW +tHM urW urW urW bdf urW -urW +cru eZP qgq lMT @@ -95293,8 +94991,8 @@ oZV mQA tve pji +bFF bzS -iGm uth rzi eWd @@ -95341,51 +95039,48 @@ rrq tcw wEB hIb -cyt +tcw nwz cQY -olq -wEB -cuU -nwz -nwz -vrf -nwz -nwz -nwz -nwz -nwz -cuU -nwz -feW -nwz -nwz -nwz -nwz -nwz -tuu -wEB -thf -kPv -nwz -hxe -cUr -xba -swJ +cfP +xUa +xzN +bsX +bsX +llR +bsX +frw +xzN +bsX +bsX +bsX +llR +fYx +pIs +bsX +vCq +xUa +vCq +vHk +bsX +iuo +bsX +gKC +qYN +mDv +vVk +cMy oPA -aFt -gRr +kkt oPA oPA -oEN -kTz -kUm -gEQ -gMb +jpU +igm +cAy +igm ksa ksa ksa -koF ksa ksa ksa @@ -95395,41 +95090,44 @@ ksa ksa ksa ksa -noh -uoo -lwj -lwj -lwj -lwj +ksa +ksa +ksa +fdt +ksa lwj +ksa +ksa +ksa +xpD aHT -qgR -gAk -dfL -quQ +cxK +aFL +mMt +cOJ xpD -uoo +ksa xpD aHT -lwj -lwj -iDA -cuo -uoo +xpD +xpD +qEw +sHw +xpD uoo -eZM uoo uoo -cuo -iDA -lwj -lwj +xpD +itV +qEw +xpD +xpD aHT -mOO +xpD fOA -uoo +ksa niB -uoo +ksa ksa ksa ksa @@ -95475,28 +95173,28 @@ ksa ksa ksa ksa -ksa -ksa -ksa uoo ksa ksa ksa -ksa -ylq -ksa +fEP +uoo +uoo kFk -apg -wGs -rdr -mDi +nsw +nsw +nsw +kFk +uoo +uoo +mtq cCf lBH mEQ pXY cCf cCf -fMv +urW urW cbn aee @@ -95504,8 +95202,8 @@ exG aee gCs urW -lvl -mWi +urW +eZP qgq lMT qgq @@ -95556,13 +95254,13 @@ gWi uNM teq wwO -bFF +oLb foK oLb exf aUs pjD -rtq +erS ksa ksa ksa @@ -95602,46 +95300,46 @@ wEB wqv wEB wEB -wEB -nwz -byK -nwz -jay +xUa +bsX +lyv +bsX pHd -jZe -nPl -nPl -nPl -qXp -qXp -nPl -nPl -jZe -nPl -nPl -nPl -dZE -ulW -sLl -lmm -cVw +iko +iko +iko +iko +xDH +iko +iko +iko +iko +iko +iko +iko +iko +iko +iko +iko +iko +iko +iko itL -lmm -xsi rlK xgs -jlO -oPA -oPA -oPA -jpU +oLh +oLh +oLh +oLh +fRr +cHh +cHh +cHh igm -cAy igm -ksa -ksa -ksa -ksa +cHh +iCE +rxc ksa ksa ksa @@ -95655,30 +95353,30 @@ ksa fdt ksa lwj -ksa -ksa -ksa -xpD +uoo +uoo +uoo +fOA +aHT +aHT +aHT aHT -cxK -aFL -mMt -cOJ xpD -ksa +xpD +uoo xpD aHT xpD xpD -qEw -sHw xpD -uoo -uoo +xpD +ald +xpD uoo xpD -itV -qEw +ald +xpD +xpD xpD xpD aHT @@ -95726,30 +95424,30 @@ ksa ksa ksa ksa -ksa -ksa -ksa sQS ksa -uoo +fEP ksa ksa ksa uoo ksa uoo -uoo ksa -ylq +fEP ksa kFk +kFk apg -vIP -uQv -kqX -mcU -jhR -ybm +emc +apg +kFk +kFk +ksa +mtq +mKE +vyJ +mEQ vyJ vez cCf @@ -95819,7 +95517,7 @@ gcz gcz azm pjD -coj +erS ksa ksa ksa @@ -95845,61 +95543,61 @@ rin cui rvC ePX -ePX -ePX -ePX +cPV +cPV +hMD sux wEB vrf -cQl -hxe +rrq +sbg wEB gpq sbg wAE feW iNG -wEB -nwz +xUa +bsX fqx -feW -cuU +pIs xYn -wEB -wEB -bJd -wEB -wEB -wEB -wEB -wEB -aZB -wEB -wEB -wRe -nwz -wEB -urJ -nwz -nwz -nwz -kHk -xba -vHT -oPA -vFQ -oLh -oLh -oLh -fRr -cHh -cHh +xzN +iuo +pIs +bsX +iuo +bsX +pIs +iuo +xzN +bsX +bsX +xUa +sKN +lqr +xzN +xUa +qiV +llR +iuj +mDv +aTB +iQE +tZH +pan +mcG +lAU +eWs cHh +rcy igm -igm -cHh -iCE -rxc +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -95912,32 +95610,32 @@ ksa fdt ksa lwj -uoo -uoo -uoo +ksa +ksa +ksa fOA -aHT -aHT -aHT -aHT -xpD +apJ xpD -uoo xpD aHT -xpD -xpD -xpD -xpD -ald -xpD uoo +ksa +ksa xpD -ald -xpD -xpD +aHT +aHT +qEw +cVu +oEK xpD +sHw +cuo +itV xpD +oEK +cVu +qEw +aHT aHT xpD fOA @@ -95985,10 +95683,7 @@ ksa ksa ksa ksa -ksa -ksa -ksa -uoo +fEP uoo uoo ksa @@ -95996,17 +95691,20 @@ uoo uoo uoo ksa -ksa -ylq -ksa +fEP +uoo kFk +air +sMI +kcM +sMI kzh -emc -tyX -mDi +kFk +uoo +mtq cCf nCu -nsw +mEQ xCo cCf cCf @@ -96053,7 +95751,7 @@ rBi nZL fPN fPN -aOZ +qUd fPN ksa ksa @@ -96074,7 +95772,7 @@ xIp dIO rEe jFo -gfn +rWZ pjD fPs ksa @@ -96102,13 +95800,13 @@ sFS cui twU dZU -fVh -gYW gYW +kYL +aMw wiI wEB -wWx -cQl +cuU +rrq nwz jwW nwz @@ -96116,87 +95814,87 @@ nwz nwz nwz vrf -jwW -nwz +rBa +bsX qSw -nwz -jay +bsX xYn -wEB -sWg -nwz -vrf -wEB -hKf -hlL -oxY -nwz -ekU -wEB -wRe -cuU -wEB -okg -okg -cuU -mcG -orM -xba -aTB -oPA -tZH -aYs -rDD -lAU -eWs +bsX +bsX +bsX +bsX +xzN +bsX +bsX +bsX +bsX +bsX +vCq +mDv +mDv +mDv +mDv +mDv +mDv +mDv +mDv +mDv +iya +liN +iya cHh -rcy cHh -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +cHh +cHh +cHh +cHh +igm +uoo +uoo +uoo +uoo +uoo fdt -ksa +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +uoo lwj ksa ksa ksa fOA -apJ +rHT xpD xpD aHT uoo -ksa -ksa +uoo +uoo +xpD xpD aHT -aHT -qEw -cVu -oEK xpD -sHw -cuo -itV xpD -oEK -cVu -qEw -aHT +wGD +xpD +tdR +lMK +tdR +xpD +wGD +xpD +xpD aHT xpD +xpD fOA ksa niB @@ -96240,12 +95938,9 @@ ksa ksa ksa ksa -ksa -ksa -ksa -uoo uoo uoo +fEP ksa uoo uoo @@ -96253,26 +95948,29 @@ uoo ksa ksa ksa -ksa fEP ksa kFk +wsn +fZy +kqp +fMv gSB -lIO -liD -mDi -mKE +kFk +ksa +mtq +wGI vyJ mEQ xhp xhp wQk omI -bfn +lKu nqm -nKo +hjZ xKS -nKo +hjZ qAo lKu lKu @@ -96301,14 +95999,14 @@ jPZ aJZ dKv mmp -qLH +cou bwX fqe mnY cou rTA nZL -eOj +wfb wfE iYK nGn @@ -96327,7 +96025,7 @@ nga nga nga jFo -mrG +ali vUv ali jFo @@ -96359,105 +96057,105 @@ dpu cui mRp gVV -ogl -gYW gYW +lRi +aMw lVb wEB dDE -cQl +rrq kVX wEB wBF -jsB +cuU vrf nwz kVX -wEB +xUa vam -cuU -nwz -nwz +xzN +bsX xYn -jwW -feW -nwz -nwz -jke -oxY -nwz -feW -tbI -dwB -wEB -wRe -xba -xba -xba -xba -xba -xba -xba -xba -iya -sZY -iRv -sZY -sZY -cHh -sZY -cHh -cHh -cHh +bsX +frw +llR +bsX +bsX +tcI +xzN +frw +bsX +bsX +xzN +mDv +djD +mdZ +djD +iDY +lkR +jhE +jhE +fxk +tHx +sNp +fTE +dmm +fxk +xVj +miM +kun +fxk +wIO +ksa +ksa uoo +ksa +ksa +ksa uoo +ksa uoo +ksa +ksa +ksa uoo -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt +ksa uoo +ksa +ksa lwj ksa ksa ksa fOA -rHT -xpD -xpD +cnu +jVU +lwj +aHT +aHT +aHT +aHT +aHT +aHT aHT -uoo -uoo -uoo -xpD -xpD aHT xpD +qEw xpD -wGD xpD -tdR -lMK -tdR +lwj xpD -wGD xpD +qEw xpD aHT -xpD +aHT xpD fOA -ksa +fOA +uoo niB -ksa +uoo ksa ksa ksa @@ -96497,27 +96195,27 @@ ksa ksa ksa ksa -ksa -ksa -ksa uoo ksa -uoo +fEP ksa ksa ksa uoo ksa ksa -ksa fEP fEP uoo kFk +stB +nCK +lvl +daR xZo -nKe -erd -mDi +kFk +uoo +mtq cCf lBH mEQ @@ -96555,8 +96253,8 @@ iHO nZL qeb lLr +egM qsm -hZj pem qsm jCP @@ -96565,9 +96263,9 @@ szQ gZZ hNQ nZL -wfb wfE -cTq +fhe +iYK nGn ksa ksa @@ -96590,7 +96288,7 @@ six szU qLz pjD -erS +jHn ksa ksa ksa @@ -96616,9 +96314,9 @@ ccs cui nnZ sEf -gYW -gYW -gYW +fJn +fJn +cHc pSn wEB wEB @@ -96630,93 +96328,90 @@ wEB wEB wqv wEB -wEB -wEB -wEB -wEB -jay +xUa +xUa +xUa +xUa xYn -wEB -cuU -jay -kVX -wEB -hKf -cfP -eUB -bsX -jgH -wEB -wRe -xba +iuo +xUa +xUa +bJd +xUa +xUa +xUa +xUa +xUa +tbI +xUa +mDv +rTF +djD djD -aNz -mdZ rFn +gDq jhE -jhE -fxk -tHx -sNp -aoL -ndm -qHa -fxk -rjW -miM +aNz fxk -wIO -ksa -uoo -ksa -ksa -ksa -uoo -ksa -uoo -ksa -ksa -ksa -uoo -ksa -uoo -ksa -ksa +arR +adw +nZg +lfo +vJc +tSE +tSE +tSE +bMe lwj -ksa -ksa -ksa -fOA -cnu -jVU lwj -aHT -aHT -aHT -aHT -aHT +lwj +lwj +lwj +lwj +lwj +lwj +lwj +lwj +lwj +lwj +lwj +lwj +lwj +lwj +lwj +lwj +lwj +uoo +uoo +uoo +fOA +fOA +fOA +fOA +fOA +fOA +uoo +uoo +uoo +xpD +xpD aHT aHT aHT xpD -qEw -xpD xpD lwj xpD xpD -qEw -xpD +aHT aHT aHT xpD +xpD fOA -fOA -uoo -niB -uoo ksa ksa +niB ksa ksa ksa @@ -96730,11 +96425,11 @@ ksa ksa ksa ksa -"} -(94,1,1) = {" ksa ksa ksa +"} +(94,1,1) = {" ksa ksa ksa @@ -96766,15 +96461,18 @@ ksa uoo ksa ksa -ksa fEP ksa ksa kFk mDi mDi +liD mDi mDi +kFk +ksa +mtq mKE vyJ mEQ @@ -96796,7 +96494,7 @@ lMT qgq pSA wQr -nkb +sEr oQl rnN mky @@ -96813,7 +96511,7 @@ nZL slq nBD vyY -yjh +qsm wwN nJS gtp @@ -96845,7 +96543,7 @@ pdN wSz knt jFo -rWZ +wLx pjD oFm ksa @@ -96873,101 +96571,101 @@ hWv cui cde qjP -mIL -fJn -fJn +qjP +opE +dyq mTk wEB cfP rrq -nwz +uyC tcw mhD wEB vrf nwz eub -wEB +xUa vhx -sbg -vrf -nwz +vCq +llR xYn -xba -xba -xba -xba -xba -xba -xba -xba -xba -xba -xba -auG -xba -djD -djD -djD -lkR +bsX +xUa +vtr +bsX +llR +xUa +hKf +rff +rbW +bsX +vqr +mDv +dbG +dbG +rFn +rFn +rFn jhE jhE fxk bGX -yeq -lfo -pDB -hlp -vJc -jMb -tSE -huJ -lwj -lwj -lwj -lwj -lwj -lwj -lwj -lwj -lwj -lwj -lwj -lwj -lwj -lwj -lwj -lwj -lwj -lwj +adw +jwu +sgJ +fxk +rjW +rjW +rjW +fxk +iCE +ksa +ksa uoo +ksa +ksa +ksa +ksa uoo +ksa +ksa +aVH +ksa +ksa uoo -fOA -fOA -fOA -fOA -fOA -fOA +ksa +ksa +ksa +aVH +ksa +ksa +ksa uoo +ksa +uoo +ksa uoo +ksa +ksa +ksa uoo xpD xpD +xpD +xpD +aHT aHT aHT aHT -xpD -xpD -lwj -xpD -xpD aHT aHT aHT xpD xpD -fOA +xpD +xpD +uoo ksa ksa niB @@ -97020,25 +96718,25 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa fEP uoo xta xta -paw -plz -plz -cCf +wrA +sdP +unQ +gfA +wrA +xta +xta +mtq cCf cCf chZ cCf cCf cCf -fMv +urW urW bdq xeX @@ -97046,11 +96744,11 @@ aqa xeX fTx urW -lvl -mWi +urW +eZP qgq lMT -kxd +qgq pSA qgX jac @@ -97079,7 +96777,7 @@ cBa qUf iPQ nZL -bvR +vKc eJq iYK nGn @@ -97112,7 +96810,7 @@ ksa ksa vmq vpV -vmq +dZs ksa ksa ksa @@ -97129,18 +96827,14 @@ cui cui cui mHQ -xRn -mHQ ltF ltF mHQ +xRn +mHQ wEB eUK vbI -fvh -nPl -nPl -wyL nPl nPl nPl @@ -97148,86 +96842,90 @@ wyL nPl nPl nPl -nPl +tLN +iko +iko +iko +bUS wJa -xba -uFw -uFw -qMY -uAy -rJu -uAy -fbk -uFw -uFw -xba -wRe -xba -dbG +rBa +pIs +bsX +bsX +kwg +rbW +bsX +pIs +aCF +oTD +mDv +btl btl btl rFn -jhE -jhE +rFn +rFn +rFn fxk -lYL +gRf adw -fiA -fxk -fxk +hDv +blv fxk fxk +mpo fxk fxk -iCE -ksa uoo ksa ksa -ksa -ksa uoo ksa ksa -aVH ksa ksa uoo ksa ksa -ksa aVH ksa ksa -ksa uoo ksa -uoo ksa -uoo ksa +aVH ksa ksa +fdt +niB +niB +niB +niB +niB +niB +fdt uoo +fdt +fOA +fOA +fOA xpD xpD xpD xpD -aHT -aHT -aHT -aHT -aHT -aHT -aHT +qpg xpD xpD xpD xpD +fOA +fOA uoo -ksa -ksa niB +uoo +uoo +fdt ksa ksa ksa @@ -97277,23 +96975,23 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa fEP ksa nnG -cet +quN sdP -jcC -air +sdP +unQ +sdP +dNt vhu xOf xOf +wHt +sdP tvc -cGM -wrA +vtd +fme vhu dqx urW @@ -97303,11 +97001,11 @@ urW urW qEC urW -urW +cru eZP -aBX -odC -aBX +qgq +lMT +qgq pSA pSA pSA @@ -97327,7 +97025,7 @@ nZL hkQ eMR ovU -ovU +iKf rPQ uHz dfX @@ -97374,62 +97072,62 @@ cOn vui vui vui +pcU +vND vui +vND vui -vui -vui -pcU qAf eON -vui +wBB xFe -vui +etg fXZ vui -ifC +rAq +rAq wae -vui -sQo +ifC dsU cXJ -xrK -dZE -qqz +cuU +nwz +mxZ tcw -cfP +uov wEB cuU lXL vrf -wEB -vrf -feW -cfP -nwz -xYn -xba -jOm -vir -gvD -rbo -oIw -xsB -sSM -iuU -eKA -xba -wRe -xba -dbG +xUa +llR +pIs +qvX +vHk +bsX +xUa +xzN +iuo +lhd +xUa +hKf +qvX +bFK +say +sgM +mDv +btl btl btl rFn +rFn lOo lOo fxk -bGX +kKw adw ihh +jGl ksa ksa ksa @@ -97456,37 +97154,32 @@ ksa ksa ksa vub -fdt -niB -niB -niB -niB -niB -niB -fdt +ksa uoo -fdt +ksa +uoo +ksa +uoo +ksa +ksa +ksa +uoo +ksa +ksa +fOA +fOA +fOA +fOA +fOA +fOA fOA fOA fOA -xpD -xpD -xpD -xpD -qpg -xpD -xpD -xpD -xpD fOA fOA -uoo -niB -uoo -uoo -fdt ksa ksa +uoo ksa ksa ksa @@ -97501,13 +97194,13 @@ ksa ksa ksa ksa -"} -(97,1,1) = {" ksa ksa ksa ksa ksa +"} +(97,1,1) = {" ksa ksa ksa @@ -97536,20 +97229,25 @@ ksa ksa ksa ksa +fEP ksa ksa fEP ksa nnG -fme +vQw +sdP +eeC +unQ sdP -fIV sdP oUY sdP sdP +sdP +sdP tvc -kqp +sdP kIl vhu eZP @@ -97559,12 +97257,12 @@ xSs xSs xSs mWi -mWi eZP eZP -qgq +mWi +fTm vCp -kxd +kpW cqR wbK jsQ @@ -97574,7 +97272,7 @@ eUE cqR tNE sey -qVR +qIN nZL nZL nZL @@ -97593,7 +97291,7 @@ fqe slS fqe nZL -aNK +fhe cKx nmm vUS @@ -97617,7 +97315,6 @@ wql uRK jFo hux -gbD sRs gbD gbD @@ -97627,12 +97324,13 @@ gbD gbD gbD gbD +gbD qgn gbD -nTS gbD gbD gbD +aIn gbD gbD gbD @@ -97640,12 +97338,12 @@ uwd gbD gbD gbD -knI gbD gbD gbD gbD gbD +knI leI xuF wEB @@ -97658,35 +97356,38 @@ wEB saV saV saV -wEB -wEB -wEB -wEB -jay +xUa +xUa +xUa +xUa wPT -xba -ina -bnP -jPt -rSc -uFw -rSc -cSm -pme -uEU -xba -afJ -xba -kVD +iuo +mDv +mDv +mDv +mDv +mDv +mDv +mDv +mDv +mDv +mDv +mDv +hGH jvA -pan -uAg -mwn +rFn +rFn +rFn mwn +cGM fxk mUZ adw fVA +fJv +ksa +ksa +ksa ksa ksa ksa @@ -97714,28 +97415,17 @@ ksa ksa ksa ksa -uoo ksa -uoo ksa -uoo ksa ksa ksa uoo ksa ksa -fOA -fOA -fOA -fOA -fOA -fOA -fOA -fOA -fOA -fOA -fOA +uoo +ksa +ksa ksa ksa uoo @@ -97743,8 +97433,10 @@ ksa ksa ksa ksa +uoo ksa ksa +uoo ksa ksa ksa @@ -97758,14 +97450,15 @@ ksa ksa ksa ksa -"} -(98,1,1) = {" ksa ksa ksa ksa ksa ksa +"} +(98,1,1) = {" +ksa ksa ksa ksa @@ -97789,10 +97482,11 @@ ksa ksa ksa ksa -uoo ksa ksa +fEP ksa +fEP ksa ksa fEP @@ -97800,23 +97494,27 @@ ksa nnG diI sdP -eJA -dFp +fIV +gYH jAm bJn sdP +dFp +dFp +dFp +jcC tvc sdP sdP -nnG +ePv qgq qgq qgq qgq qgq rDO +tDV qgq -xDM qgq xUO rDO @@ -97834,9 +97532,9 @@ sey tMr tcY tzU -wLb +xCz uIk -pCA +wNr tcY gfX plK @@ -97879,32 +97577,32 @@ hjB pte qdE qdE +ekL wuH qdE qdE qdE -qdE cOn qdE adP -qdE -qdE +rVm +hEV foE jwc -iOJ pUu -wYV +iOJ +qAf pKx wuH qdE +dqO jIu -jIu -qdE wuH qdE +qdE pIA -bzW -dCP +gbD +oZh eNs ksa uoo @@ -97915,35 +97613,35 @@ xXP ksa xXP ksa -saV -uov -nwz -cuU -feW -xYn -xba -sPy -rSc -rSc -rSc -mIF -rSc -uFw -uFw -lYr -xba -afJ -xba -gDq +lhN +bsX +pKG +xzN +vHk +pIs +mDv +jOm +vir +gvD +rbo +oIw +xsB +sSM +iuU +eKA +fxk +kVD rFn rFn rFn -mih +uAg +lOo lOo fxk bGX qRc ihh +jGl ksa ksa ksa @@ -97979,23 +97677,23 @@ ksa ksa ksa ksa -uoo -ksa -ksa -uoo -ksa -ksa -ksa -ksa -uoo -ksa -ksa -ksa -ksa -uoo -ksa -ksa -uoo +fdt +niB +niB +niB +niB +niB +niB +niB +niB +niB +niB +niB +niB +niB +niB +niB +fdt ksa ksa ksa @@ -98040,29 +97738,29 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa uoo -ksa uoo -ksa -ksa -ksa -ksa +uoo +fEP +uoo +fEP +uoo ksa fEP uoo xta -cIv +wGs oMi -gRM +cFf wjv urm epW unQ -goR +jhR +urm +iWd +gRM +tvc tvc tvc hrT @@ -98090,7 +97788,7 @@ nUQ hwr jcf xBB -pCA +wJo aHm scL pCA @@ -98134,13 +97832,12 @@ qXN gbD hjB cjW -tgq -tgq +cQC fEX +lzw tgq -tgq -tgq -qZF +nvj +wJK kew kew kew @@ -98151,16 +97848,17 @@ siE hxY rxT hxY -siE +hxY +eNs nPC qXl qXl qXl -qXl wsc eNs +eNs cWX -bzW +gbD dvS eNs ksa @@ -98172,35 +97870,35 @@ nxf ksa xXP ksa -saV -gAH -nwz -nwz -nwz -xYn -xba -uYf -ujm -gPV -uFw -uFw +lhN +mUF +bsX +bsX +vHk +bsX +mDv +ina +jPt +jPt rSc -jBv -sWq -prs -xba -afJ -xba +qXp +rSc +cSm +cSm +uEU fxk +fxk +pLU pLU pLU fxk fxk fxk fxk -nZg +chg qRc ihh +rMk ksa ksa ksa @@ -98236,23 +97934,23 @@ ksa ksa ksa ksa -fdt -niB -niB -niB -niB -niB -niB -niB -niB -niB -niB -niB -niB -niB -niB -niB -fdt +ksa +ksa +ksa +uoo +ksa +ksa +ksa +ksa +uoo +ksa +ksa +ksa +ksa +uoo +ksa +ksa +ksa ksa ksa ksa @@ -98298,15 +97996,11 @@ ksa ksa ksa ksa -uoo -uoo -uoo -uoo -uoo -uoo -uoo ksa ksa +fEP +ksa +fEP ksa ksa fEP @@ -98314,15 +98008,19 @@ ksa nnG qbz sdP -nGl -tZl +fIV +sGT ejw bJn sdP -sdP +tZl +tZl +tZl +qTG tvc sdP -nnG +sdP +ePv qgq dvd qgq @@ -98330,7 +98028,7 @@ nqD jou qgq qgq -qgq +nKo knr xUO qgq @@ -98345,12 +98043,12 @@ aKU wPR niu qQg -cpp +tMr tcY -wLb +vwl oeC ndQ -pCA +jGt tcY cXi fsm @@ -98361,7 +98059,7 @@ nnR nFn ium mUT -qOl +jUa xxI dIW gGu @@ -98391,33 +98089,33 @@ oKy gbD hjB xLi -tgq +wAZ nmw qkl -fCE -hRl +ftk +qkl oxS -qZF -rPK -skJ -wFc -gvi -jLQ -rky -eGw -sNP -ouj -ydY +kew +nmz +cAw +cOB +klV +kZw siE +ydY +jSh +eGw +hxY +hhu hLv -iuJ +jkD iuJ jkD iuJ aav eNs kvX -qax +gbD dCP eNs uoo @@ -98429,35 +98127,35 @@ nxf xXP xXP xXP -saV -cuU -nwz -nwz -vrf -xYn -xba -bKR -dlY +lhN +xzN +bsX +bsX +vHk +llR +mDv +sPy +bnP +jZe +qMY +mIF +qMY kUV -vAm -uFw -aqW -euj oNc -ovA -xba -afJ -xba +lYr +fxk pqo -rMt -mJS -ssi -rMS -jGl -ceX +pxw +pxw +pxw +tcF +fxk +lNF +blv bGX qRc -fiA +ihh +uTb ksa ksa ksa @@ -98496,17 +98194,14 @@ ksa ksa ksa ksa -uoo ksa ksa ksa ksa -uoo ksa ksa ksa ksa -uoo ksa ksa ksa @@ -98529,11 +98224,11 @@ ksa ksa ksa ksa -"} -(101,1,1) = {" ksa ksa ksa +"} +(101,1,1) = {" ksa ksa ksa @@ -98558,10 +98253,9 @@ ksa ksa ksa ksa -uoo ksa -uoo ksa +fEP ksa ksa ksa @@ -98569,30 +98263,34 @@ ksa fEP ksa nnG -fme +wBu sdP +rAB vSE sdP +sdP ngA sdP sdP -rAB +sdP +sdP tvc -stB +dNt +vhu vhu ajn ajn ajn -ajn +fSs uCk sli -fSs +ajn ajn ajn ajn fvn vCp -kpW +kxd cqR uKf uKf @@ -98604,7 +98302,7 @@ puK qQg ivl tcY -wLb +vwl cHF sIr pCA @@ -98617,14 +98315,14 @@ hDp hDp hDp hDp -aIn +blR xpb aUi jfI hlu hlu xhv -mUw +dMR lAg fPN lrB @@ -98648,33 +98346,33 @@ uSG gbD wXC cjW -tgq -anb -eTd -qZF -tjH -qdV -oHZ -skJ -qGt -aGn -caf -gsI -kew -siE -epd -eia +wAZ +nmw +fuf +dzH +bXB +qkl +arQ +hHX +hHX +hHX +gmc +gmc siE +aoZ +jSh +twb siE +lFc dgD xdw -xdw -lFc lFc +xdw +xdw lFc lFc oAa -bzW +aIn hxV eNs ksa @@ -98686,35 +98384,35 @@ nxf ksa xXP ksa -saV -vrf -pHd -qmY -nPl -sZC -xba -uFw -uFw -qZw -ajT -ija -ajT -qZw -uFw -uFw -xba -afJ -xba +lhN +qiV +bsX +fiT +vHk +xzN +mDv +uYf +ujm +gPV +qMY +pme +qMY +jBv +sWq +prs +fxk ycu +rMt +mJS pxw -lZD -kNJ -kNJ -kNJ -ceX -bGX -qRc -ihh +wMs +fxk +blv +blv +kHL +cJu +kHL +blv ksa ksa ksa @@ -98815,10 +98513,6 @@ ksa ksa ksa ksa -uoo -ksa -ksa -ksa ksa ksa ksa @@ -98826,27 +98520,31 @@ ksa fEP ksa nnG -ksZ +xAT sdP -qTG -air +sdP +sdP +sdP +dNt vhu seS seS -dNt +rbe +sdP tvc -iFo +ybm vhu hFr +bfn ltj -rbf gvR +dxW gEt dxW -wzI +vIP jEI qQq -rhW +ajn aBX odC aBX @@ -98905,22 +98603,22 @@ vmf gbD hjB cjW -tgq -wzj -omY -qZF +wAZ +fHb +ftk +uiA eJD -etL +ftk arQ -skJ -voV -cbY -dEQ -baC -jRC +gmc +ebg +pZh +noa +pmt siE -exz -nCA +kCU +eJo +eGw siE mMv rLP @@ -98930,48 +98628,48 @@ kMW tcJ lCn lFc -tpU -bzW +vyt +gbD niG sRZ sRZ -nxf +gcD gcD sOm gcD -nxf -sRZ -sRZ -hpM -wEB -wEB -ijn -wEB -wEB -wEB -xba -ajT -ajT -trS -trS -mse -trS -trS -trS -trS -xba -afJ -xba +gcD +xXP +xUa +xUa +xUa +xUa +xUa +xUa +ooM +xUa +mDv +bKR +dlY +dlY +vAm +fbk +aqW +dlY +dlY +ovA +fxk bvL pxw -lZD +mJS +pxw kWy -lEp -wMs ceX -bGX +lEj +lyR +pVi qRc -ihh +pWU +dmm ksa ksa ksa @@ -99069,11 +98767,7 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa +uoo ksa ksa ksa @@ -99084,9 +98778,12 @@ fEP uoo xta xta -wBu plz plz +mcU +plz +plz +oER oER oER oER @@ -99094,19 +98791,20 @@ oER dix oER oER -ePv +bSb lhg lhg noQ +nGl gEt rHR dxW dxW jbP -rhW -qgq +ajn +oWq lMT -qgq +kxd kml vXY aTv @@ -99116,7 +98814,7 @@ rUm vpG twl qQg -jTa +oHa ait ait ait @@ -99132,7 +98830,7 @@ xvF dzU ium mUT -xpb +uan xxI wpo guX @@ -99162,72 +98860,72 @@ ikX gbD hjB cjW -tgq -qZF -miU -qZF +wAZ bFw -dzH -qZF -seN -rbv -dsE -ePa -szW -iWL +rkX +ftk +ssT +ftk +kew +xSj +egR +cBS +meQ +uLk +siE +siE +lwX siE -qAN -tuX siE gqq tzm -umX -lwx tzm -jSh +bBd +tzm +umX rTV lFc hFk -bzW -gvW +gbD +mxN sRZ -plV -nPs -bRc -aiI -iTi -dkY -hQL +jDf +sCt +rQX +pmF +wXX sRZ -dOM -xRi -uze -olX -vLf -kag -dBU -jWy -xxB -sMO -brU -sBS -jEd -sBS -shL -bRx -vLQ -xba -afJ -xba +ksa +xUa +hSc +xaF +xnN +xUa +imV +vHk +xzN +mDv +euj +rJu +qZw +ajT +ija +ajT +uAy +uFw +kZz +fxk pqo -pxw -lZD +rOW +nst +kNJ dXL -fxk -fxk -fxk -bGX -qRc +ceX +lUn +qvB +qIg +fII +pxw ihh ksa ksa @@ -99326,13 +99024,9 @@ ksa ksa ksa ksa +uoo ksa -ksa -ksa -ksa -ksa -ksa -ksa +fEP ksa ksa ksa @@ -99344,23 +99038,27 @@ xta xta xta xta +xta +xta tFK piY piY vQY +rbf dZe kxu oER -lCo +bdb tLo tLo -pBC -cru +nWh +dxW +wAd dxW wzI qDj qQq -rhW +ajn xgX lMT lMT @@ -99375,9 +99073,9 @@ sUf qQg qow ait -jYQ -gIw -fCd +dJA +qph +bBK eaW ait xbP @@ -99419,73 +99117,73 @@ ikX gbD hjB xLi -tgq -tVC -nvj -xIY -tKn -cff -qZF -skJ -dRd -cbY -vaO -baC -myJ -siE -siE -siE -siE +wAZ +fsd +uiA +eaf +baq +ftk +arQ +gmc +jqh +fNH +ovs +ihK +kew +iMG +tsV +iMG +lFc bxK -tzm mqu +tyF qdk -aNl +gIg oJX aZW lFc -jKa -fpk -jKa +oKy +gbD +mxN sRZ -fZN -sYv -sYv -xwq -sYv -sYv -jsd +bXg +alh +nEb +kMQ +uKE sRZ -dBU -bGo -kag -kag -kag -kag -kag -jWy -jpQ -fjY -wKG -jdg -hkf -rrg -saY -pzP -cZl -xba -afJ -xba -eIJ -rOW -nst -rOV +xXP +lhN +xzN +pIs +bsX +ijn +bsX +vHk +ikP +mDv +ajT +ajT +ajT +ajT +mse +trS +trS +trS +trS fxk -hKz -qIg -gIY -fII -lrp +pqo +pxw +nst +pxw +lEp +ceX +fQq +qRc +izU +izU +izU +ihh ksa ksa ksa @@ -99581,22 +99279,20 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa uoo -ksa -ksa -ksa -ksa uoo +uoo +uoo +fEP ksa +uoo +uoo ksa fEP fEP ksa +ksa +ksa uoo ksa uoo @@ -99605,19 +99301,21 @@ tFK scR yaX ipY +eJA dZe fch oER -eCJ +ksZ tLo tLo +ajn aiw vdj fuS fuS fuS acf -rhW +ajn awX hpB awX @@ -99626,16 +99324,16 @@ eYX acW dfE ilE -olp +cJW vpG twl qQg jTa ait -rrs +lfd pbF avB -xHC +mFi ait utj bYk @@ -99648,18 +99346,18 @@ hDp blR xpb vvy -lmX +hjG wIU qth hGj bMX inF hjG -iKf -ueL -ueL -ueL +rKe +hZj +rzs fPN +fhe dwJ nZL kOK @@ -99676,73 +99374,73 @@ pyq gbD hjB cjW -tgq -dXw -eDW -vsc -cUF -cUF -ekL -fVn -hEZ -otg -otO -baC -jVS -deB -eIj -sOV +wAZ +uiA +tJM +eBj +fsd +ftk +arQ +hHX +blp +lxf +aIW +dWu +kew +hIN +tsV +cBY lFc itm -tzm -umX +kst +xXt lwx fli bbc lyp -lFc -ePw -bzW -gvW +oKD +wga +gbD +mxN sRZ -xvN -ngb -cMq -rQz -qOh -geu -rhB +qNf +cCB +cvb +bpc +lQk sRZ -aUW -bGo -dBU -kag -vLf -kag -vLf -jWy -avI -eNi -ryc -nBk -ppU -kSi -cIi -fnt -lfT -xba -afJ -xba +ksa +xUa +qvX +bsX +xzN +xUa +pIs +vHk +hSc +mDv +xxB +sMO +brU +sBS +jEd +sBS +shL +bRx +vLQ +fxk blv -gBF +reB ahn +nRo blv fxk -pTa -pxw -xJA -pxw -ihh +jUe +qRc +izU +izU +izU +jEL ksa ksa ksa @@ -99839,14 +99537,10 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa uoo ksa -uoo ksa +fEP ksa uoo ksa @@ -99857,23 +99551,27 @@ fEP fEP fEP fEP +fEP +fEP uoo rHA piY piY xWj +sJm iwL ncG oER -rBk +ktq tLo tLo -nWh -cru +pBC +qQq +wAd dxW wzI qDj -tHM +qQq rhW giM giM @@ -99889,8 +99587,8 @@ lfi qQg uwf ait -qSt -fyK +xqZ +iiQ ezd msS ait @@ -99908,15 +99606,15 @@ vvy lmX wGT xft -eUO +rdk rdk kxi nzX uXn -uXn vWH -egM +uXn sBO +vcC oYl nZL wzl @@ -99933,72 +99631,72 @@ cWy gbD hjB cjW -tgq -wJK -pzz -xqD +wAZ +ftk +fHb +fuf aNT -tRt -qZF -oWE -oaK -ldV -tUA -nML -lJC -pgu -pIF -khd -pTF -jmn -fdI -fdI +ftk +kew +xrO +eVJ +sSr aoB -hte -fdI +skJ +kew +iMG +tsV +iMG +lFc +jmn +iah +ejE fdI -rXH -cWi -aMw -mxN +tWp +bKe +anF +lFc +ePw +gbD +gvW sRZ -vzf -uiv -uGK -xxS -aVy -irn -mQM +jBx +pLB +dgN +lMP +oII sRZ -mHw -bGo -vLf -kag -kag -kag -tOd -jWy -teS -qdl -wzw +xXP +xUa +xUa +xcd +xUa +xUa +xUa +kjD +xUa +mDv +jpQ +fjY +wKG jdg -itM -ugZ -mHm -aOv -eyU -xba -afJ -xba +hkf +rrg +saY +pzP +cZl +fxk seu pxw nst -ody -ceX -pVi -pxw -pxw pxw +miL +ceX +bGX +qRc +izU +izU +izU ihh ksa ksa @@ -100099,14 +99797,12 @@ ksa ksa ksa uoo -uoo -uoo +fEP uoo uoo ksa -uoo -uoo -uoo +ksa +ksa ksa ksa ksa @@ -100119,19 +99815,21 @@ rHA nDq nDq mRL +cet iwL -kXK -oER -dpo +sJm +wgw +tLo tLo tLo urV +qQq wAd wxY dxW dxW -fuS -gJM +ocC +rhW ksa xXP ksa @@ -100146,7 +99844,7 @@ twl qQg qVR ait -fJr +bBR vCs pLV oLJ @@ -100164,16 +99862,16 @@ xpb vvy lmX asE -eUO -tbg +rdk +mHH xle tFs hjG gbS fKX tln -wuE fPN +vKc dwJ nZL cdu @@ -100190,71 +99888,71 @@ stD gbD hjB cjW -tgq -qZF -qZF -qZF -qZF -qZF +wAZ +bXB qZF -kew -kew -fMm +ftk +lDX +lDX kew kew kew +nXF kew kew kew +hUQ +rxJ +hUQ lFc lFc +vrG lFc bJL lFc lFc lFc lFc -lFc -utw -gbD -mxN +jKa +bIk +jKa sRZ -eMa -kjM -qrh -agK -iCv -uSI -uTb +tds +lmJ +wjs +dcq +syu sRZ -rQn -djX -kag -kag -vLf -vLf -uEi -jWy -tlO -tlO -tlO -tlO -tlO -tlO -tlO -aWm -tlO -xba -afJ -xba +ksa +xUa +xnN +fiT +xzN +xUa +lhd +vHk +hSc +mDv +avI +eNi +ryc +nBk +ppU +cIi +kSi +fnt +lfT +fxk aaB msk nst nst +nst rBb jkU +qRc +pxw pxw -izU pxw ihh ksa @@ -100353,20 +100051,18 @@ ksa ksa ksa ksa -ksa -ksa sQS +ksa uoo ksa ksa uoo ksa uoo -ksa -ksa -ksa -ksa -ksa +uoo +uoo +uoo +uoo ksa ksa ksa @@ -100376,19 +100072,21 @@ rHA mfE mfE xWj -ipb -wWZ -oER -xUs +iHb +vTX +sJm +cIv tLo +gGV tLo ogz -lVd +qQq +fuS dxW wzI -qDj +lVd qQq -gJM +rhW ksa xXP ksa @@ -100421,8 +100119,8 @@ xpb vvy hjG fUX -eUO -tbg +rdk +xog sDl tNO hjG @@ -100430,7 +100128,7 @@ hjG hjG hjG fPN -fPN +bvR dwJ nZL kmX @@ -100443,75 +100141,75 @@ lLK bHo nuv lHR -qnq +buK gbD rBj cjW wAZ izu rkX -lOJ +ftk snq -pKj -rFO -bKW -cUD -jit -umO -eYm -dCd -eql -dKm -baU -svV -hei -lXN -blm -xYF -lDX -ogT -kne -rlP +qUs +plv +gMe +pVG +dnA +inA +fDg +ecg +xoe +tWK +iUz +hUQ +kZH +iUz +iUz +hlL +lOJ +lOt +qdV +izQ oKy gbD -qvB +gvW sRZ -kCQ -djT -xmy -wNv -hpu -jlX -rgn +nSU +gxO +vqL +coW +vuT sRZ -fTE -bGo -kag -vLf -wJP -vLf -kag -hpM -azM -mEZ -tAf -uWr -tAf -bkB -qWZ -aTC -eWx -oJz +xXP +lhN +hSc +vHk +vHk +lTk +vHk +vHk +lNt +mDv +teS +qdl +wzw +jdg +itM +ugZ +mHm +aOv +eyU +fxk ycL -xba -iuQ pxw +kNJ pxw -ivM +xwq ceX -jqs -pxw +bGX +qRc pxw +aVI pxw ihh ksa @@ -100616,14 +100314,12 @@ ksa ksa ksa uoo -uoo -uoo -uoo -ksa ksa ksa ksa +uoo ksa +uoo ksa ksa ksa @@ -100632,17 +100328,19 @@ ksa rHA yaX yaX -gJK +pHz +iYP vTX -qqH +sLA oER -gfF +tLo tLo tLo phd +qQq fuS dxW -dKa +rhW rhW rhW rhW @@ -100677,8 +100375,8 @@ blR xpb lBZ fJb -eUO -eUO +rdk +rdk qid qiC iOl @@ -100693,7 +100391,7 @@ nZL slt ltB aRB -aRB +ltB lZv vuA lHR @@ -100707,69 +100405,69 @@ lAP wAZ ftk kGs -lOJ +ftk snq -wCe -uxh -cYh -efb -jit -gyt -kpu -mEy -mEy -meB -hpm -kkR -aKQ -lXN -blm -qhq -lDX -cNk -bWR -uWp -oKy -knI -lzD +dPH +rNL +rDY +iUz +dnA +rXH +xlS +aqI +cnD +lNT +cWi +ruf +cWi +cWi +okM +sQo +bgN +gGD +qWF +qWF +tpE +qqz +dQR sRZ -dDC -gFJ -pOj -lhN -cVe -vOQ -obA +uOV +htW +gBF +sYv +tzT sRZ -qTi -djX -gSr -ygS -gLs -vLf -kag -hpM -sWn -pyE -lls -hKX -lls -niO -hnS -mkG -nPq -xba -xba -xba -qpi -qpi -qpi +ksa +xUa +hiz +vHk +omC +xUa +xzN +vHk +qYN +mDv +tlO +tlO +tlO +tlO +tlO +tlO +tlO +aWm +tlO enU enU -qCh -mJS -twQ -pxw +tNd +tNd +tNd +enU +enU +tEm +oIb +vAN +blv +krH ihh ksa ksa @@ -100872,17 +100570,15 @@ ksa ksa ksa ksa -uoo -ksa ksa -uoo ksa ksa ksa uoo ksa -ksa -ksa +uoo +uoo +uoo ksa fEP uoo @@ -100890,17 +100586,19 @@ rHA mfE mfE xWj -bMw sJm -wgw -tLo +bMw +kXK +oER +gfF tLo tLo oPP -qnN +qQq +fuS dxW -xOK rhW +ksa uoo ksa ksa @@ -100908,8 +100606,8 @@ xXP ksa vpG okt -vcL dli +eIJ jsw eoc vpG @@ -100936,7 +100634,7 @@ vvy hjG aNs ahZ -tbg +xog pnG uOf hjG @@ -100948,9 +100646,9 @@ wQG dwJ nZL cvS -wzl -wzl -wzl +laR +laR +laR cvS vuA mxi @@ -100964,69 +100662,69 @@ haO bKb sPC fuf -lOJ +ftk snq -kQi -ttl -nkf -gyv -jit -dKm -haH -meN -mEy -umO -ejP -syP -gOz -lXN -blm -iEa -lDX -hKq -shC -mZv +wVV +lUO +fNW +iUz +dnA +ecm +aJi +sXS +qik +lNT +iUz +hUQ +rGH +oIs +hDi +rwf +rGH +lOt +bfP +fxJ oKy -gbD +bzW jmc sRZ -lbJ -yhO -sPN -lCa -gtd -fVP -fxN +dIh +eop sRZ -hpM -iAn -hpM -hpM -hpM -hpM -hpM -hpM +euC +xjx +sRZ +tbp +xUa +xUa +rhE +xUa +xUa +xUa +rhE +xUa +xUa vrm -lBg -tmI -iXl -nrN -gSL -mkG -mkG -hXU +mEZ +atM +uWr +htE +tAf +qWZ +aTC +eWx enU wjB -ocd ika +twN nFw iwa -rpT -kYR -jqs -pxw -pxw -pxw +enU +enU +qCh +vuz +jKu +lQB fiA ksa ksa @@ -101135,30 +100833,30 @@ ksa ksa ksa ksa -uoo -uoo -uoo -uoo ksa ksa +uoo +ksa fEP ksa tFK scR yaX pHz -bMw sJm -sMI +bMw +qnN +oER +uMg tLo tLo -wGI tLo -fuS dxW -wOy +fuS +bnn rhW uoo +uoo xXP uoo xXP @@ -101191,7 +100889,7 @@ mUT xpb cwK hjG -rdb +hjG rdb rdb hjG @@ -101221,30 +100919,30 @@ ivH lyI ftk fHb -lOJ +ftk snq -cnl -kLK -uYI -lDX -jit -gIg -oZX -vcH -bfb -gIg -viW -iVC -gIg -lXN -blm -nKf +xdx lDX +xdx +aOQ +dnA lDX lDX lDX -ePw -gbD +iBc +lNT +gwJ +oNk +oNk +oNk +oNk +oNk +oNk +oNk +oNk +oNk +utT +bzW gPa sRZ sRZ @@ -101253,37 +100951,37 @@ sRZ ruC sRZ sRZ -sRZ -sRZ +nJc +eTx jSu -jUk +wmn xCk tbp cYN wmn -wAm +abC asi dly -lBg -uIi -fpF -qFt -jVm -opO -wRJ -lEv +mkG +pyE +pMb +pMb +pMb +niO +pqF +vTT enU qnx -uII dsX -gtL -qVH -nZl +gkG +dsX +paH +rpT kYR -itv -pxw -pxw -pxw +jqs +cCc +oKM +psF ihh ksa ksa @@ -101394,8 +101092,6 @@ ksa ksa ksa ksa -ksa -uoo uoo ksa fEP @@ -101403,22 +101099,24 @@ ksa tFK mfE mfE -lsx +xWj +tyX lEa wtv oER mQx +tLo oaa +ajn +auk +wOy +dKa rhW -gJM -gJM -gJM -rhW -rhW -uoo ksa uoo ksa +fEP +ksa xXP vFa krQ @@ -101454,7 +101152,7 @@ jFF jFF ebp rpB -jFF +fyZ jFF jFF bhj @@ -101464,7 +101162,7 @@ pAk kwV jFF jFF -jFF +qYf jFF xJJ bPm @@ -101472,74 +101170,74 @@ pRz mpW hjB hjB -gbD -whh +qet +cjW hNM udd ftk nul -lOJ +ftk snq -kjH -cYh -cYh -keT -jit -xgm -lXN -lXN -lXN -xjH -yii -lXN +ibp +vEp +lcD iUz -lXN -blm -lxc -hUQ -kQU -llW -hUQ +dnA +bLC +pVV +dyL +iUz +lNT +iUz +oNk +dCg +nAj +bYr +nad +hhC +fiw +vbJ +oNk oKy beP -rUY +cQl eVF iyE +vVA kyX -tAf -moK +aTC tAf gIy -rUZ -pRL tAf -qGy tAf +eNx +qGy +gIY nyW mAO jHl eFX qkv xFo -lBg -iol -ceH -gRE -jVm -mkG -mkG -rEo +ePY +sLG +tmI +iXl +nrN +gSL +hnS +ovO enU eRr -nVC +gkG kQz oJd -aoI -mdk -qRR -goC -pxw +mEl +wOC +kYR +itv pxw +twQ pxw rOv ksa @@ -101651,8 +101349,6 @@ ksa ksa ksa ksa -ksa -ksa uoo ksa fEP @@ -101660,21 +101356,23 @@ uoo tFK tFK tFK +tFK rHA rHA rHA tFK +iiC +tLo +tLo rhW +gJM +gJM +gJM rhW -rhW -ksa -uoo -ksa -uoo ksa xXP ksa -uoo +fEP ksa xXP jLu @@ -101702,8 +101400,8 @@ lFp lFp lFp xfg -uan -iNY +xZK +xpb grj xpb xpb @@ -101728,35 +101426,35 @@ gLM pLb dGM gbD -qxd +gbD nse xLi gLp kEX adK ghN -lOJ +ftk snq -jug -kwB -yjR -uLS -hWx -oFq -oFq -ipt -oFq -kyt -oFq -oFq -oFq -oFq -oFq -oFq -suU -rmB -gHE +bQz +qWa +eXL +ilu +nFf +bgQ +nAa +bgQ +bgQ +iEM +gzw +wHG +evA +awn +bPU nXt +eFO +awn +bOR +ryM xQr iQR tmP @@ -101765,36 +101463,36 @@ cPZ ddQ ddQ ddQ -oRc ddQ ddQ -rSO ddQ +rSO +fei oBD -ddQ +ofJ qej -rSO yeR -rSO -fPj -ddQ -vzQ -olc -qqy -baL -jty -phr +ibZ +uhv +uhv +pqF +ujV +sLG +uIi +fpF +qFt +jVm mkG -vML +lEv enU eHe dsX -dsX +dIu jdh -dsX -wOC -kYR -itv +oGT +mdk +qRR +goC dnW aIi pxw @@ -101904,19 +101602,13 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa uoo -ksa -fEP -ksa +uoo +uoo +uoo uoo ksa -ksa +fEP ksa uoo ksa @@ -101925,13 +101617,19 @@ ksa ksa uoo ksa +rhW +xUs +sat +dpo +rhW +ksa uoo ksa uoo ksa xXP ksa -uoo +fEP ksa xXP jLu @@ -101944,7 +101642,7 @@ dAx iuI lZV jZp -diY +jRr pbc skd jNZ @@ -101958,17 +101656,17 @@ kmO nUv gMm bTq -mUT +tir xpb dTS mXB lrd -eBg +fHX jUa -gXO +dTS xNW xNW -fLA +gXO muG dHx qou @@ -101976,9 +101674,9 @@ hYC jzk ckh pCs -qMF -fLA xNW +fLA +aQG xNW uTw wtX @@ -101986,74 +101684,74 @@ pRz mpW hjB hjB -gbD -xZK +kMH +cjW eIw mMQ ftk eaf -lOJ +ftk snq -bXL -cYh -hQZ -mar -sAM -nUE -lXN -lXN -jjs -lCu -lXN -lXN -mMI -lXN -tmj -lxc -hUQ -clh -sBT -hUQ -oKy +wkb +hny +kLF +iUz +awG +udk +fFK +oFj +iUz +awG +aiX +oNk +uQl +qOJ +iuq +hFY +fGn +gqf +qoT +oNk +fVh lEI rUY eVF xfN rxF -fyA kdZ lfg fcr +tnQ fyA -fyA +pYd fyA cmt -fyA +fdb nyW qKG -sWU -aEs -jSM -fyA -tYz -uaf -rAO -uaf -fyA -tZe fyA -bVW +aEs +cXh +gnj +llk +sLG +iol +ceH +gRE +koM +phr +rEo enU -vDr -okq -mEl +dTZ +dsX +xOy xBX -mEl -aYM +iHk +wOC kYR -rZy -pxw +lpc pxw +twQ pxw rOv ksa @@ -102163,16 +101861,10 @@ ksa ksa ksa ksa +uoo ksa ksa ksa -ksa -ksa -ksa -fEP -fEP -fEP -fEP fEP fEP fEP @@ -102181,14 +101873,20 @@ fEP fEP fEP fEP +uoo +rhW +rhW +rhW +rhW +rhW +uoo fEP fEP fEP fEP fEP xXP -xXP -fEP +uoo xXP xXP jLu @@ -102220,8 +101918,8 @@ xpb mKW orb tHc -qOl -qOl +fHX +jUa lNw mZc mZc @@ -102249,69 +101947,69 @@ edP mDe ftk fHb -lOJ +ftk snq -tQF -cYh -hEC -lDX -lXN -gIg -dzP -wkX -oda -gIg -fab -bJU -gIg -lXN -gQT -xMY +xdx lDX +xdx +cky +awG lDX lDX lDX -xDr +wSR +awG +luL +oNk +oNk +oNk +oNk +oNk +oNk +oNk +oNk +oNk +xQX bzW ooJ +tgG +tgG +tgG +tgG rRZ -rRZ -rRZ -rRZ -rRZ -fUV -gCT -kaD -wce -gKN -dMW -gKN -ufs +tgG +oqK +tAI +abC +szY +lwL +nWS +tbp sMY fxU lxA -hsc -qvA -ufs -gKN -oqA -gKN -ufs -ufs -ufs -ufs -enU -cEN -gkG -cEN +asi +cNN +mkG +gxP +baL +baL +baL +jty +mkG +vML enU +nev +dsX +nVC +dsX cEN -enU -enU -pWl -pxw -pxw -pxw +bFj +kYR +rZy +jUC +wBY +krH ihh ksa ksa @@ -102415,10 +102113,12 @@ ksa ksa ksa ksa +uoo ksa ksa ksa ksa +uoo ksa ksa ksa @@ -102429,17 +102129,15 @@ ksa ksa ksa ksa +fEP ksa +uoo ksa +uoo ksa +uoo ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +fEP ksa ksa ksa @@ -102474,24 +102172,24 @@ xqM bTq mUT xpb -one +pPM orb ukt kAo -kAo +wol iJC mZc klX ogk -kAV +lTB pME mZc -wEA +vWa oxz aTS -kAV -mZc lTB +mZc +qsx uBt ruJ mZc @@ -102506,69 +102204,69 @@ jze fEz ftk pCf -xlS +uiA snq -mLN -nPL -lKr -pVI -lXN -roo -aoj -kQk -pSY -gRZ -nBH -sXC -dKB -lXN -gQT -lXN -lXN -qEI -jgz -lDX -sIK +kXN +ike +mvH +iUz +awG +rPK +xnC +xDr +hpL +awG +iUz +hUQ +kAV +vib +vXu +nQh +kAV +lOt +bIY +qmM +oKy bzW -bSC -rRZ -chq -jYc -mZM -rRZ -mlJ -gCT -pUw -aJK -mvk -wbQ -rjj +mtN +tgG +tfi +alM +aco +lku +elt +oqK +kaD +wce ufs +dMW +lls ufs +jmg +hKX jWT -gKN -jWT -ufs ufs -dBH -knZ -qmw -ehB -aDs -iJl -jxN -ppP -tdG +xeH +tYz +fyA +uaf +rAO +uaf +fyA +tZe +bVW +enU +vDr vNz iki lXl nrk -ozZ -ppP -cVR -pxw -pxw -pxw +enU +enU +pWl +vuz +fLJ +lQB fiA ksa ksa @@ -102672,6 +102370,7 @@ ksa ksa ksa ksa +fEP ksa ksa ksa @@ -102683,20 +102382,19 @@ ksa ksa ksa ksa -uoo -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa ksa ksa ksa ksa +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP ksa ksa ksa @@ -102731,9 +102429,9 @@ poj lFp gZb xpb -pPM +xdV fld -aQG +bBE lZS xGN bBE @@ -102743,10 +102441,10 @@ cMA wEA wEA mZc -kAV +lTB oxz wEA -wEA +ogk mZc jXu wEA @@ -102763,69 +102461,69 @@ rcS wAZ bXB tJM -lOJ +ftk snq -aCw -ayr -dIE -qmm -lXN -xDd -oPX -oJJ -bsB -srS -acN -uiJ -acl -lXN -gQT -gQT -gQT -lXN -dOo -lDX +eRL +uXH +pxl +iUz +awG +nkc +qcN +ucY +cnD +njw +bgQ +pDY +bgQ +wPc +okM +cWi +cWi +wkS +syM +syM xAB bzW -rQb -rRZ -oKY -qXs -gAf -hNo -iyt -gCT -maJ -iGG -wGQ -lPu -moS -kLd +jQr +tgG +rng +cNO +cNO +lku +uAC +oqK +dRU +phq +mie +czE +veV ufs -kFE -vkF -gzD +jYL +cjI +cDg ufs -xcl -jKh -bIY -cSw -mkE -cSw -cSw -aLm -bfT -eEP -vec -tzf -tzf +ufs +ufs +ufs +gKN +oqA +gKN +ufs +ppP +ppP +enU +enU +enU tzf -xrQ -bfT +enU +enU +enU +raq uXN -wxf -wSn -pxw +qpK +blv +psF ihh ksa ksa @@ -102927,6 +102625,11 @@ ksa ksa ksa ksa +uoo +uoo +fEP +uoo +uoo ksa ksa ksa @@ -102938,17 +102641,12 @@ ksa ksa ksa ksa +fEP ksa ksa ksa ksa ksa -uoo -uoo -uoo -ksa -ksa -ksa ksa ksa ksa @@ -102991,97 +102689,97 @@ xpb jMP fld pye -pZg +kAx pZg sbN mZc sPR wEA jhq -jub beS -jub +beS +beS kjx -nmf wEA -gsz +wEA +vzt wEA cMA -pME +wEA mZc -nmf +ogk diA wEA mZc -mlQ +kTE gbD wXC cjW wAZ nGw rkX -lOJ +ftk snq -sqV -luP -lKr -pVI -gdk -irg -vKd -umG -whb -opG -hlK -eaS -gRZ -tpV -ePO -tal -gQT -lXN -pdB -lDX -iqN +liE +hDz +gVQ +iSp +awG +qWT +pap +kUQ +xoe +iUz +iUz +hUQ +rXT +awG +iUz +iUz +xrC +lOt +vqb +vwp +oKy mwc -bSC -rRZ -miL -miL -ooT -rRZ -iyt -gCT -uXQ -iGG -gja -wye -lxK -dlc -vQV -dTX -tLt -cTc -vQV -oip -hol -uxl -gKq -tvS -iGG -iGG -bzE +xgj +tgG +fpJ +xOq +cNO +lku +lku +oqK +wqc +uCo +iJZ +woV +bqQ +ufs +xNK +wtQ +gJZ +ufs +deF +jYP +okN +rKX +gIa +rKX +kdy ppP -bFY -oiN -aCF -sWy -xWM -lSO +aor +vOY +wzb +mxg +cmw +azW +vmh ppP -aSx -pxw +jDr +jzd pxw +sAH pxw ihh ksa @@ -103186,6 +102884,7 @@ ksa ksa ksa ksa +fEP ksa ksa ksa @@ -103198,17 +102897,16 @@ ksa ksa ksa ksa -ksa -uoo uoo +fEP +ksa +ksa +ksa +ksa ksa -uoo ksa ksa ksa -uoo -uoo -uoo ksa ksa ksa @@ -103244,12 +102942,12 @@ nlr fkD htc lig -xpb +uan vvy iXS qJv oCG -oCG +sOH jvi mZc ogk @@ -103257,18 +102955,18 @@ wEA oxz ogk mZc +ogk wEA -nHY -wEA +cMA wEA mZc -ioq +lzy wEA wEA -gsz +vzt +wEA wEA wEA -kvW mZc igl gbD @@ -103281,64 +102979,64 @@ dPh lDX lDX rTS -ylx -rTS -rTS -rTS rTS rTS +knY rTS rTS hDl hDl hDl hDl -hDl -oNk -nmu -lbL -oNk -oNk -utw -mwc -bSC -rRZ -rRZ -rRZ -rRZ -rRZ -iyt -gCT -xXV -jbg +uCB +uCB +jXB +uCB +izy +uCB +uCB +uCB +uCB +xEJ +pDZ +xEJ +tgG +rng +pZj +cNO +alM +lku +oqK +ide iGG -fxh -mIf -xGO +hFz +woV +fiv ior -lbp -hol -xMC -ufs -kDd +sxJ +tQt +fiv +ior +sxJ +yiD iGG -uxl -qWb -qWb -qWb -qWb -mpY -vHf -nNs -voL -gNk -jKv -icT -pQc -vHf -ohm +xiS +tQt +lyA +tSA +ppP +eLy +qgO +sWy +aIA +vqc +sWy +hXQ +ppP +jDr +jzd +pxw pxw -izU pxw ihh ksa @@ -103442,40 +103140,40 @@ ksa ksa ksa ksa +uoo +uoo +uoo +uoo ksa +uoo ksa ksa ksa +uoo +uoo +uoo ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -uoo -ksa +fEP uoo uoo +ksa uoo ksa +fEP ksa ksa ksa ksa +uoo ksa ksa fEP ksa mSP iUB -meb +iUB iUB acc ymi @@ -103504,7 +103202,7 @@ hwe fHX vvy tlW -opa +pwp oCG hkz xbJ @@ -103515,17 +103213,17 @@ oxz wEA mZc pME -sPR -kAV +wEA +lTB rKU mZc -xzK -wEA +lzy +lTB wxP mZc fTi -wEA -kAV +fjv +lTB mZc qMU gbD @@ -103538,65 +103236,65 @@ nHp nfw ftk rTS -spJ -kle -pDD -qDK -mUJ -aUx -mlw -vBp -hDl -trg -cge -xZp +mSC +pzp +vDV +dFA +ocP hDl -oRj -hNB -asp -drv -oNk -oKy +iVH +fIH +eia +uCB +gGJ +piO +loo +hOr +pCd +mTV +aul +uCB +ePw mwc -bSC -qCg -vAq -lqU -lHg -rRZ -iyt -gCT -pPq -iGG -iGG -saa -mIf -pty -ior -wni -hol -tUT -ufs -oHO +xgj +tgG +ewK +cNO +cNO +pZj +lku +oqK +vYd iGG -uxl -kfB -sAQ -xrY -wYA -mpY -vHf -iNx -sWy -wGq -jKv -oyN -pQc -vHf -ohm -pxw -pxw -pxw +xiS +blB +bwK +vQV +uIh +vVG +bwK +ulf +uIh +vaT +iUc +aFN +nBJ +nBp +tQC +bfT +tmQ +dPO +anW +iRJ +qkP +dPO +bjf +jxf +pXp +fbE +izU +izU +izU ihh ksa ksa @@ -103702,12 +103400,13 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa +uoo +uoo +uoo +uoo +uoo +uoo +uoo ksa ksa ksa @@ -103716,15 +103415,14 @@ ksa ksa ksa uoo +ksa uoo uoo -uoo -ksa +fEP uoo uoo ksa ksa -ksa uoo ksa ksa @@ -103732,7 +103430,7 @@ fEP ksa aVH meb -gti +cXt meb sBM uol @@ -103751,7 +103449,7 @@ tTx rzM pwT tWx -kDg +vGY gPd lHi lHi @@ -103761,23 +103459,23 @@ iIj eBg vvy pia -opa -oCG +pwp oCG +sOH lsQ mZc mZc mZc -epF +oxz mZc mZc mZc +xoI mZc mZc mZc mZc mZc -xoI mZc mZc mZc @@ -103793,68 +103491,68 @@ ftk eBj bXB izu -lOJ +ftk tdz -bok -fDA -fDA -qOQ -rCS -nEn -cdA -ilX -ljS -kRw -sFp -lez +gKH +bqk +kAW +jyV +vpu hDl -qhZ -jkz -gZw -ett -oNk -tpU +hDl +dzE +hDl +uCB +uUs +qAq +kps +dQg +lqu +cYI +tZE +dBO +oKy mwc bSC -qCg -oaZ -cIP -shv -rRZ -iyt -gCT -vZS -nbI -cfN -rTF -mpY +tgG +tgG +tgG +tgG +tgG +lku +oqK +tHe +iGG +xyU +oRc +fiv ior +xRW +tQt +hSp ior -psz -hol -mpY -ufs -fpp +sxJ iGG -uxl -sSP -sSP -sSP -sSP -jmo +jot +dYz +vyX +kfc +wKE ppP -cFF -sWy -sWy -sWy -xWM -mXS +jlx +vHf +lEo +lEo +lEo +sJq +psg ppP -ohm -pxw -cmw -pxw -ihh +gZd +cUV +izU +izU +izU +jEL ksa ksa ksa @@ -103957,12 +103655,15 @@ ksa ksa ksa ksa +sQS ksa +uoo ksa +uoo ksa +uoo ksa -ksa -ksa +uoo ksa ksa ksa @@ -103974,10 +103675,7 @@ uoo uoo uoo ksa -ksa -uoo -ksa -ksa +fEP ksa ksa ksa @@ -103989,7 +103687,7 @@ fEP xXP aVH mGB -cPr +gti rhv ihJ xYr @@ -104020,23 +103718,23 @@ uAv pjT ouP oCG -oCG +iPu jmQ mZc -rSy -mZc +oJt +qsx oxz -wEA -sPR +aXc mZc vro -lTB -aOY -mZc -pME wEA +ncd +aOY mZc +pkR +bZa voi +wIn tBy fIt fqJ @@ -104050,74 +103748,74 @@ fuf eaf uiA baq -lOJ +ftk tdz -sMN -apE -hDP -jiu -atm -mMm -fIH -evr -hDl -mPa -eYZ -cxW +ora +sMv +xLP +sMv +heo hDl -gdB -oil -asp -tot -oNk -xEJ -pDZ -xEJ +lcP +bEE +ovv +uCB +vcY +bMS +wvX +rny +xNS +duk +dJx +uCB +oKy +mwc +bSC qCg -vKr -axx -bFj -rRZ -iGj -gCT -gCT -gCT -gCT -pHy -otD -kXf +sjM +evs +kEM +tgG +lku +oqK +iJa +uLX +edH +oRc +gJZ ufs -dlp -msH -lTv +kns +tQt +taM ufs -dPP -iGG -uxl -nZu -iGG +pNP iGG -iGG -ofs +jzJ +hJb +jzJ +kfc +gmT aFZ -eqC +xgB sWy -nsn -xWM -xWM -mbp -ppP -ykT -lWA -gAJ +geC +tmB +oXN +hBI +cGO +aFZ +iVj cUV -lrp -mDv -pKc -tqT -iiE +izU +izU +izU +ihh +xOH bCy -mDv +bCy +iiE +xOH +ksa ksa ksa ksa @@ -104216,20 +103914,20 @@ ksa ksa ksa ksa +uoo ksa +uoo ksa +uoo ksa ksa ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa uoo +uoo +fEP ksa ksa uoo @@ -104238,7 +103936,7 @@ ksa ksa ksa ksa -uoo +fEP ksa ksa ksa @@ -104246,7 +103944,7 @@ fEP ksa aVH meb -gti +gki meb sBM mVx @@ -104276,24 +103974,24 @@ jKd hDp fld lat -pwp -pwp +opa +jju xzm mZc mZc -mZc +aXc jDy wEA -wEA mZc +rKU cMA wEA -wEA -mZc -klX -wEA +iJc mZc -oJt +aoX +aoX +aoX +aoX nrl tGC pxU @@ -104309,72 +104007,72 @@ ftk vfi eaf rTS -rFd -nTB -bSI -iej -ixc -gQO -wPH -eNn -hDl -emv -nPf -nPf +lOf +uIU +ebN +jqW +mIf hDl -utO -wHi -pcC -bNK -oNk +ikt +ulb +nII +uCB +uCB +aWN +uCB +uCB +uCB +uCB +uCB +uCB prc mwc bSC qCg -uHE -cIP -gwS -rRZ -iyt -paH -ulQ -paH -gCT -vCq -gCT -wCS -gCT -fVi -dYW -fVi -mLH -gJq -bFK -vTs -ukW -msH -qnm -jMs -vFe +wOK +hgh +jNT +tgG +lku +oqK +wyE +kGq +pbT +iMR +eGN +ufs +rPh +dJB +npz +ufs +lIh +iGG +iGG +woV +kfc +kfc +oUv ppP -wTb -sxX -imn -lNr -auL -cEQ +sYD +sWy +sWy +dRp +sWy +shx +qcX ppP -tZa -qzl -xuk -oyS -fBU -mDv -uGA +jDr +cUV +cUV +cUV +cUV +hdF tqT +jlE +jlE iiE -bCy -mDv +xOH +ksa ksa ksa ksa @@ -104409,17 +104107,17 @@ ksa ksa ksa ksa -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -104475,6 +104173,7 @@ ksa ksa ksa ksa +uoo ksa ksa ksa @@ -104482,20 +104181,19 @@ ksa ksa ksa ksa -uoo ksa ksa -uoo -uoo +ksa +fEP +ksa +ksa uoo ksa ksa ksa ksa ksa -uoo -uoo -uoo +fEP ksa ksa ksa @@ -104503,7 +104201,7 @@ fEP ksa mSP iUB -meb +iUB iUB kIR prf @@ -104534,23 +104232,23 @@ jKd gFi ovS pwp -pwp +bsg tef xkV mZc -rKU +sPR oxz -kAV -ogk -gsz -wEA -ncd wEA gsz wEA wEA +cTL +wEA +kwK +aoX +aoX +aoX aoX -ojr jeL oCJ ekn @@ -104564,83 +104262,83 @@ ftk luJ fuf ntG -lOJ +ftk tdz -qfo -kOB -lRy -atm -dFA -lHm -evr -mLW +ora +uzl +bOW +pTP +brE hDl +xdK +cbD +iaD +uCB +jEt bMS -mXX -sDk -hDl -oNH -kZM -xNS -xNS -oNk -oKy +iNY +fWR +mEz +uCB +vEm +uCB +vyt mwc ygO blC -vwz -vhb -wlw -rRZ -iyt -fDD -mnx -fDD -rRZ -fDD -lJK -fDD -gCT +sVB +qhW +fPj +tgG +lku +oqK +oqK +oqK +oqK +qNq +oqK +oqK +jnS xtS jnS -iBl -mLH -bsK -bsK -cLc -tYU -gBL -tYU -jaf -jaf -jaf -jaf -jaf -jaf -jaf -jaf -jaf -jaf -mDv -mDv -mDv -cMx -mDv -mDv -ujV -tqT -iiE -rTf -mDv -mDv -mDv -mDv -mDv -mDv -mDv -mDv -mDv -ksa +ufs +yaQ +onk +oNF +tMn +hqV +nyQ +oZn +ppP +tuK +gyl +rOR +hlb +hat +fFd +fbT +ppP +tfN +oYQ +qzl +qzl +qzl +fBU +xOH +uGA +jlE +bQu +xOH +xOH +xOH +xOH +xOH +xOH +xOH +xOH +xOH +xOH +xOH ksa ksa ksa @@ -104665,19 +104363,19 @@ ksa ksa ksa ksa -uoo -uoo -ksa -gln -ksa -ksa -ljY -ksa ksa -gln +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt ksa -uoo -uoo ksa ksa ksa @@ -104732,8 +104430,7 @@ ksa ksa ksa ksa -ksa -ksa +uoo ksa ksa ksa @@ -104744,15 +104441,16 @@ ksa ksa ksa uoo -ksa +fEP +uoo ksa ksa ksa ksa ksa uoo -ksa uoo +fEP ksa ksa ksa @@ -104768,12 +104466,12 @@ xSA xSA mrP mrP -lZs -lZs +pEr +pEr rCh -dTK -dTK -dTK +eri +eri +eri mAr lLk prj @@ -104792,27 +104490,27 @@ ntE jrr pwp bsg -fQq +jrr dEE mZc -pME +rKU oxz -wEA -wEA -mZc -wEA -wEA lTB mZc -kNk +ncd +ogk wEA +lTB mZc -oJt -nrl +aoX +aoX +aoX +aoX +jeL nNQ qBy tZr -dMR +xAc gbD rBj cjW @@ -104821,87 +104519,87 @@ ftk ssT ftk uiA -lOJ +ftk tdz -evr -evr -evr -evr -fIH -qqD -evr -evr -hDl +qmj +mUu +xZD +wtM +gwq +iAZ +jtv +lyF +lco +nuc +tZE +kGo +lrx +xfA +noo +gVB +shq uCB -mXX -nIA -nPf -ehP -tDk -tvC -tvC -oNk oAa -mwc +nTS phj blC -gwS -feS -lgs -tpL -iyt -bqv -rPJ -rPJ -uaO -rPJ -eRs -fDD -gCT -xew -gIv -uJk -mLH -kYW -kYW -lLJ -rMN -cGB -gwW +sVB +xxX +mAB +tgG +lku +cNO +pZj +tgG +fpJ +lku +rng +oqK +rtO +akY +wmy +tYU +tYU +tYU +tYU +vsb +tYU +tYU +tYU jaf -qOG -paK -tRM -bGY -cCr -pfo -son -xBk -chs -mDv +jaf +jaf +jaf +jaf +jaf +jaf +jaf +jaf +jaf +jaf +jaf +jaf +jaf +jaf +xOH bMM -pXp -jlE -jlE jlE -jlE -jlE -fHc -wXR -wXR -wXR -wXR -wXR -wXR -wXR -wXR -cSQ -ivS +iiE +dcA +aIk +aIk +aIk +oGL +bCy +bCy +bCy +hpW +bCy +xOH +ksa ksa ksa -uoo ksa -uoo ksa ksa ksa @@ -104919,23 +104617,23 @@ ksa fdt ksa ksa -fdt -fdt -fdt -fdt ksa ksa -ujk -tWv -tWv -ujk -tWv -tWv -ujk ksa +uoo +uoo +ksa +gln +ksa +ksa +ljY +ksa +ksa +gln ksa uoo -fdt +uoo +ksa ksa ksa ksa @@ -104989,6 +104687,7 @@ ksa ksa ksa ksa +uoo ksa ksa ksa @@ -104998,18 +104697,17 @@ ksa ksa ksa ksa -sQS ksa +uoo ksa ksa +uoo ksa ksa ksa uoo -uoo -uoo -ksa ksa +uoo ksa ksa ksa @@ -105021,8 +104719,8 @@ xXP mrP pOC rQs -nVB -uUq +mkx +lFE bLO mrP uqt @@ -105038,7 +104736,7 @@ mkR tWx oYp bvp -jUm +bqH hUW pTK vfV @@ -105052,19 +104750,19 @@ nlD gzy ces mZc -rKU +ogk oxz -wEA -rKU +aXc mZc -ncd -wEA pME -mZc -nQD +kNA wEA +pME mZc +pkR +ojr voi +wIn sIW ajR vNF @@ -105080,87 +104778,87 @@ ftk pDn imr rTS -ePf -cnH -kno -kZe -gSs -lup -ivi -wou -hDl -kKi -vyt -eWq +xvo +lnK +lpE +vUx +twv hDl -tYE -emZ -fqj -fqj -oNk -sEm +uFK +vDX +xtm +uCB +maE +oYJ +rhI +gOR +rlc +uCB +dTM +uCB +iID mwc phj blC -wlw -nPp -ouI -rRZ -fDD -mnx -fDD -fDD -rRZ -pvb -stP -lXy -gCT -qGP -hdi -gvo -mLH -wLK -wLK -wLK -xUa -cGB -eZC +fnU +hgh +sVB +tgG +lku +xOq +uAC +tgG +cNO +lku +pZj +oqK +dAN +ngT +dGJ +tYU +uir +oax +ngV +jCD +pkd +fHn +qqi jaf -elU -kuC -qZC -bGY -wBY -pfo -bXv -pfo -chs -mDv -mDv -mDv -mDv -mDv -mDv -mDv -mDv -sXO -mDv -mDv -mDv -mDv -mDv -mDv -mDv -mDv -nrd -mDv -uoo -uoo -uoo -uoo -uoo -uoo -ksa +sku +uOw +iPi +pHN +jSP +gkZ +kIE +gKU +rEU +woE +vbi +wSn +imB +nRD +xOH +oyS +jlE +fHc +wXR +wXR +wXR +wXR +wXR +wXR +wXR +wXR +wXR +opO +ivS +kiv +kiv +kiv +kiv +kiv +maz ksa ksa ksa @@ -105176,22 +104874,22 @@ ksa ksa ksa ksa -uoo -ksa -uoo +fdt +fdt +fdt +fdt ksa ksa ujk +tWv +tWv ujk -gdw -utm -udm -kVb -xCa -ujk +tWv +tWv ujk ksa ksa +uoo fdt ksa ksa @@ -105255,17 +104953,17 @@ ksa ksa ksa ksa -ksa -ksa -uoo -uoo -ksa +sQS ksa ksa ksa ksa uoo ksa +fEP +fEP +fEP +ksa ksa ksa ksa @@ -105275,13 +104973,13 @@ ksa fEP ksa xXP -tcM +ygY abT mqW heD kCR uUq -ygY +tcM qdz sHr cdi @@ -105297,7 +104995,7 @@ tWx wYE tWx tWx -tWx +byk rMm iGO wCx @@ -105310,7 +105008,7 @@ afl otH mZc mZc -epF +oxz mZc mZc mZc @@ -105319,19 +105017,19 @@ xoI mZc mZc mZc -xoI -mZc mZc -pkR +tZr +tZr +nQD aYu -gvc +qss tZr hus gbD hjB cjW -tnt -flc +cQC +xnE flc qxm wRW @@ -105342,83 +105040,83 @@ rTS rTS rTS rTS -rTS -rTS -rTS hDl hDl hDl hDl -hDl -oNk -gmc -oNk -oNk -oNk +uCB +uCB +uCB +uCB +uCB +uCB +uCB +uCB +uCB cWX -mYy +mwc bSC qCg -mUa -gcu -mOs -rRZ -ckL -paH -krY -fDD -rRZ -rRZ -ptg -rRZ -gCT -aPW -tbG -uYB -mLH +uTO +sJa +bnA +sls +lku +lku +lku +lku +lku +lku +eJp +oqK +mVC +hyo +nUh +tYU +swJ +cTG +uql +mfR cTG -uyh -uCv -pBp -cGB -teM +jeI +cKS jaf -ucG -ioi -vQE -btS -ope +klM +gie +aSs +fDD +jSP +gkZ pfo bXv pfo -qqd -bvJ -wgZ -rfB -opP -mRG -gmC -xgB -rwN -wJm pfo -rhD pfo pfo pfo -rhD pfo -mDv -hfI -mDv -gzZ -gzZ -gzZ -gzZ -gzZ +xOH +bCy +bCy +bCy +dcA +bCy +bCy +bCy +bCy +bCy +bCy +bCy +nrd +bCy +xOH +ksa +ksa uoo ksa ksa +tXu +ksa ksa ksa ksa @@ -105437,18 +105135,18 @@ uoo ksa uoo ksa +ksa ujk ujk -wwS -pTV -pTV -pTV -pTV -pTV -wkO +gdw +utm +udm +kVb +xCa ujk ujk -qUo +ksa +ksa fdt ksa ksa @@ -105514,25 +105212,25 @@ ksa ksa ksa ksa -uoo -ksa -ksa -ksa -ksa -sQS ksa +fEP +uoo +uoo +uoo +uoo ksa +uoo ksa ksa ksa -cMy +rxc xXP xXP xXP fEP xXP xXP -tcM +ygY mhf vPG bYx @@ -105553,8 +105251,8 @@ uML ntM bvp nRm -byk hqW +byk oYp ttO bTe @@ -105566,21 +105264,21 @@ ouk sFb jnc mZc -kAV +lTB oxz -wEA -kAV +nmX +lTB mZc rKU wEA sPR +pME +kNk mZc -sPR -wEA -wIn -mZc -nfz +uiX pqq +jki +aYu fAQ tZr tGD @@ -105598,84 +105296,84 @@ cOn fgC pkv iMN +wSs +pYh tXM -xOV -nLa rZB mzq cOn -mzq +xOV qdL mPK mzq -dQg -gVQ mzq mzq +huJ +mzq kOo mwc -iym -pvL -pvL -pvL -pvL -rRZ -rRZ -rRZ -rRZ -ndh -rRZ -wKg -stP -wKg -gCT -gCT -gCT -gCT -gCT -bBQ -olH -woE -uLI -cGB -cGB -xlW -fop -rEO -wiC -iXg -nEx -nEx -uoX -nyT -vUY -wWi -wWi -wWi -wWi -wWi -wWi -wWi -wWi -ope -pfo +bSC +qCg +uAb +ajX +sgI +tgG +cNO +pZj +alM +tgG +pZj +lku +xOq +oqK +bkC +hdi +tQI +tYU +bqT +iNl +iNl +vau +lNb +tOw +uHc +gyc +mDl +nUH +bzm +kgc +kgc +bGY +tAZ +kch pfo pfo pfo pfo pfo pfo +xOH +sXO +sXO +sXO +xOH +xOH +xOH +xOH +xOH +xOH +xOH +xOH +hfI +xOH +xOH gzZ -kPo -wCX -uWo -uWo -klo -juH -fAE -uoo -uoo -uoo +gzZ +gzZ +gzZ +gzZ +tXu +ksa ksa ksa ksa @@ -105689,23 +105387,23 @@ ksa ksa ksa ksa -byC -ujk -tWv +ksa +uoo +ksa +uoo +ksa ujk -tWv ujk -loG +wwS pTV -dQE -evx -wqx -evx -rnp pTV pTV -vym -ksa +pTV +pTV +wkO +ujk +ujk +qUo fdt ksa ksa @@ -105772,13 +105470,13 @@ ksa ksa ksa ksa +fEP ksa ksa ksa ksa ksa -ksa -ksa +uoo ksa ksa ksa @@ -105789,13 +105487,13 @@ ksa fEP ksa xXP -tcM +ygY fSW tCR aAl hve soW -ygY +tcM qdz sHr oMj @@ -105825,24 +105523,24 @@ bEa pOt uoE nBV -qYf wEA -gsz wEA +gsz wEA wEA -gsz wEA wEA wEA mZc -nfz +uiX +uiX +rgE tJZ -fAQ +jPc tZr bve +sEm gbD -qet gbD gbD gbD @@ -105856,7 +105554,7 @@ ryN gbD kFM gbD -gbD +aIn hpC hpC hpC @@ -105865,77 +105563,77 @@ hpC gbD hpC gbD -gVB +gbD +uVC fxG fxG fxG -lQO bDt -tmQ -pvL -dnn -fjE -ngu -jZI -lWL -rRZ -wwI -fDD -mnx -fDD -stP -wov -rRZ -cDS -clk -fDD -rRZ -oqK -oqK -oqK -oqK -ycz -oqK +buM +qCg +qCg +fdQ +qCg +tgG +pYA +gte +pYA +tgG +cbw +lku +kAb oqK -xUd -oCq -lGW -nAK +uiM +hEh +rgL +tYU +fpq +cTG +cTG +gSg +cTG +tOw +cKS +jaf +cXE +ryz bXv -pfo -fwd -cLo -pfo -pfo -pfo -pfo +qay +moK +gkZ +vQE +sSP pfo pfo pfo pfo -bXv pfo pfo +rhD pfo pfo pfo +rhD +pSV +kvL pfo +rhD pfo pfo -mdp -qQV -goP -iqP -iqP -vxg -uWJ gzZ +dFW +wCX +uWo +mRG +uWo +bTx +lKe fAE -gzZ -wIO -ksa -ksa -ksa +fgv +kiv +kiv +kiv +maz ksa ksa ksa @@ -105946,19 +105644,19 @@ ksa ksa ksa ksa -aVH -tet -pTV -cZU -pTV -tet -fXk +byC +ujk +tWv +ujk +tWv +ujk +loG pTV -kUI -boF -cEz -rxl -ljl +dQE +evx +wqx +evx +rnp pTV pTV vym @@ -106029,9 +105727,9 @@ ksa ksa ksa ksa +fEP ksa -ksa -ksa +sQS ksa ksa ksa @@ -106067,9 +105765,9 @@ wbq hqK kfT veX -rTx iNM rTx +rTx fWD ayq hDp @@ -106081,21 +105779,21 @@ duu fYj mZc bsm -oJR -hvX +oxz +cMA wEA mZc sPR wEA -wEA -mZc -rKU -iJc +ogk pME +klX mZc +uiX +uiX nfz uiX -fAQ +izX tZr dIF fHA @@ -106122,104 +105820,104 @@ wXi uDj wXi tjP -dRH -hjB -hjB -hjB -bzW -hjB +wXi +bqA +wXi +iSM +wXi +ggy ihg -pvL -fni -gzT -aGj -scp -nwj -rRZ -mnx -fDD -fDD -fDD -fcY -jQQ -lrc -fDD -fDD -kvD -rRZ -huo -leq -qvX +qCg +vGn +mdA +jTc +tgG +iVx +tgG +tgG +tgG +tgG +lku tgG -cTJ -wWU oqK -dtm -uTo -uTo -liN -uQQ -yjP -tnM -toD -yjP -bAX -yjP -yjP -yjP -yjP -yjP -yjP -tJu -yjP -yjP -yjP -yjP -yjP -yjP -yjP -wwQ -bmT -dFW -mEc -mEc -gBR -gBR -esU -tsd -xHf -lyC -bem -bem -bem -bem -bem -bem -bem -bem -bem -bem -bem -bem -bem -bem -bem -ahW -uha -rwH -uha -ahW -uha +oqK +oqK +oqK +oqK +qWn +hkj +vFJ +uBG +oDL +xMu +eTg +jaf +bxi +iiR +bXv +iiR +sWS +gkZ +fwd +cLo +bXv +bXv +bXv +bXv +bXv +bXv +bXv +bXv +pfo +pfo +pfo +pfo +pfo +pfo +pfo +pfo +pfo +gzZ +dyE +goP +vxg +iqP +vxg +bvJ +uWJ +gzZ +fAE +fAE +fAE +gzZ +tXu +ksa +ksa +ksa +ksa +aVH +ksa +ksa +ksa +ksa +ksa +aVH +tet pTV -oKw -dSI -iAb -aaA +cZU +pTV +tet +fXk +pTV +kUI +boF +cEz +rxl ljl pTV -uZz -ujk -wIO +pTV +vym +ksa fdt ksa ksa @@ -106311,25 +106009,25 @@ mrP mrP mrP pEr -lZs +pEr pNZ xzX xzX lvV mJw -sKK +mYI pEr yjA spo gdg cmI cmI -cmI dfS cmI cmI cmI cmI +cmI rAA tvh xTF @@ -106337,19 +106035,19 @@ woo gLH geB mZc -kAV +lTB +oxz wEA -hvX -oJR +nmX mZc mZc -xoI +gvb mZc mZc mZc bLy -bLy -bLy +gGh +gGh gGh gGh gGh @@ -106370,146 +106068,146 @@ rfU hNp rfU oBH -nlh -ijl -ylB oBH +vHT +lut oBH oBH -nlh -nlh oBH -ecX -jkt -ifb -xzN -bqA -maP -lng -pvL -dCA -jgV -aGj -dGg -kMh -rRZ -lwa -ckL -wwI -wKg -mnx -iyt -rRZ -wko -fDD -ijZ -rRZ -qvX -leq -eoL +aYa +aYa +oBH +rFk +ksu +rFk +qUS +qUS +qUS +qUS +qUS +jwN +jwN +jwN +tgG tgG -cTJ -xdz +tgG +cWF +tgG +fEa +lku +cNO +pZj +alM +pZj +elt +oqK +tYU +kJo +tYU +oqK +oqK +ycz +oqK oqK -wzX -wzX -wzX llH -bLz llH -qKy -dgR -pfo -xzf -pfo -qUp -qUp -qUp -pfo -pfo -bXv -pfo -pfo -pfo -pfo -pfo -pfo -pfo -ksu -gzZ -kwk -cgm -jDD -dsn -cgm -hgf -gzZ -fAE -gzZ -iCE -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -aVH -ksa -aVH -tet -pTV -dah -pTV -tet -jpN -pTV -kUI -rxl -bBO -boF -ljl -pTV -pTV -vym -ksa -fdt -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -"} -(132,1,1) = {" -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +uTo +llH +llH +llH +rfB +toD +yjP +bAX +yjP +yjP +yjP +yjP +yjP +tJu +yjP +yjP +yjP +yjP +yjP +yjP +yjP +yjP +wwQ +mdp +dFW +dFW +dFW +dFW +dFW +esU +esU +tsd +xHf +xHf +xHf +lyC +ecX +bem +bem +bem +bem +bem +bem +bem +bem +bem +bem +bem +ahW +uha +rwH +uha +ahW +uha +pTV +oKw +dSI +iAb +aaA +ljl +pTV +uZz +ujk +wIO +fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +"} +(132,1,1) = {" +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -106581,12 +106279,11 @@ siR adT cmI nZo -kVn jWA -vPr +jWA +xgz eVT -iJp -wIv +vPr wIv wIv wIv @@ -106596,8 +106293,9 @@ mZc mZc mZc vhY -hvX -kAV +oxz +wEA +lTB mZc cMA wEA @@ -106627,64 +106325,64 @@ ybb wxL lbf oBH -ugS -lNK -hvm -naB -rgv -xCA -ugN -mup -fOV -bXc -hbj -rFk -rFk +tIw +qva +hfh +rJz +pch +dMo +ipp +klr +oBH +sLz +kUM +qHB qUS -sep -vcI -pvL -pvL -jvj -pvL -pvL -pvL -rRZ -rRZ -rRZ -rRZ -rRZ -rRZ -iGj -rRZ -rRZ -ndh -rRZ -rRZ -tgG -gvd -tgG +hEt +mpQ +uEZ +pBT +jwN +qjj +lHS +mwm +bJr tgG -mnV -cLU -gAM -hRt -ssL -qep -kHL -thA -ryX -lMb -vkL -xDl -xny -bGO -ccW -qNN -ccW -spG +qqy +fie +cNO +lku +lku +lku +lku +lku +elt +oqK +xmk +xmk +xmk +oqK +yce +lku +pZj +oqK +dzR +kjV +eVB +klo +xUC +lGd +qKy +dgR +pfo +xzf +pfo +qUp +qUp +qUp +pfo +cSQ pfo -bXv pfo pfo pfo @@ -106693,43 +106391,43 @@ pfo pfo pfo gZC -bmT -swp -pgv -iLs -qMO -jyb -oqf -kvL -kiv -kiv -kiv -kiv -kiv -maz +gzZ +fAa +cgm +jDD +dsn +gBR +cgm +cgm +gzZ +fAE +fAE +fAE +gzZ +tXu ksa ksa ksa ksa +aVH ksa ksa ksa ksa -aVH ksa -byC -ujk -wzu -ujk -wzu -ujk -uRF +aVH +tet pTV -gGi -iIA -rjK -iIA -lay +dah +pTV +tet +jpN +pTV +kUI +rxl +bBO +boF +ljl pTV pTV vym @@ -106838,14 +106536,13 @@ blX iGQ cmI iNd -jWA +rjQ iyI -vQt +uvW sZN orE -vQt -oDg -jPP +sZN +azD fTu mZc aXc @@ -106853,7 +106550,8 @@ tmR aXc mZc wEA -hvX +oxz +wEA wEA gsz wEA @@ -106884,113 +106582,113 @@ cHJ wxL kel oBH -xhg -lme -tXP -lyv -uJm -tcR -hYl -xHH -qPx -mvN -mPL -jLI -fGH -hih -nUs -emd -rIv -wja -jLf -wqM -lJU -mxn -fzJ -sKr -oAG -yiY -dxA -rRZ -iyt -rRZ -fDD -xmz -edc -rRZ -sPJ -wdB -mdw +dgg +mrX +xVi +sHP +okq +nrJ +hsT +yeg +raO +wID +nCY +gai +qUS +uiJ +pde +brY +nuK +jwN +eFJ +fQB +sob +kOM +tgG +plH tgG -cTJ -leq +uLZ +xOq +pZj +pVH +cNO +lku +elt oqK -hrH -ltg +xob +xmk +lCN +oqK +yce +lku +wWd +gAM +hRt +ssL +qep hzA -fzi -dlI -bHT -xHp -yjc -aoc -cdI -pfo +thA +ryX +lMb +vkL +xDl +xny +bGO +ccW +qNN +ccW +spG +bXv pfo pfo -ulR -rxo pfo -ewZ -uLT pfo pfo pfo -oLT pfo pfo gZC -jaf -jaf -jaf -jaf -jaf -jaf -jaf -jaf -jaf -gkZ -gkZ -gkZ -gkZ +gzZ +swp +pgv +iLs +qMO +jyb +oqf +juH +fAE +uoo +uoo +uoo +uoo tXu -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +uoo +fdt +uoo +uoo aVH ksa ksa -uoo ksa -uoo ksa +ksa +byC ujk +wzu ujk -wcA -pTV -pTV +wzu +ujk +uRF pTV +gGi +iIA +rjK +iIA +lay pTV pTV -oZg -ujk -ujk -qUo +vym +ksa fdt ksa ksa @@ -107095,28 +106793,28 @@ cmI cmI cmI fQJ -mXY +jWA nOM jcX jcX jcX jcX -jcX bgz +aLp dqH -dct nZW nZW nZW -dct +nZW nZW czt wEA +cMA mZc xZd tTk beM -xgz +tTk xZd bLy xzs @@ -107139,115 +106837,115 @@ cEO qeZ cHJ wxL -czJ +lbf oBH -qFT -sgM -cfC -eaB -uJm -tcR -lOP -oKW -ylB -haD -kCL -jOI -kCL -oqN -wuj -dtT -rMK -kCL -eVV -kCL -eYU -dqg -omR -kxV -iII -mxn -mxn -rRZ -iyt -rRZ -edc -xrL -xmz -lrc -leq -leq -leq -sYb -cTJ -goI -uhz -xbz -iln +wkM +qFP +iNS +dgP +okq +nrJ +rTf +myj +lut +bkW +nCY +jOM +qUS +qUS +tWc +xpK +tWc +jwN +nNt +lJZ +nNt +jwN +tgG +tgG +tgG +tgG +tgG +tgG +tgG +tgG +lku +tgG +oqK +oqK +lrp +oqK +oqK +pjM +lku +alM +oqK +hrH +ltg +eVB +fzi bHc -fpV -ble -euK -qrn -nlI -xgo -xny -bDY -fwt -nzT -fwt -mnW +bHT +xHp +yjc +aoc +cdI pfo pfo pfo +ulR +rxo +wJm pfo pfo pfo pfo pfo +oLT pfo -cza -pap -yjP -yjP -yjP -rim -yjP -gwY -yjP -rim -yjP -wwQ pfo +rxk +jaf +jaf +jaf +jaf +jaf +jaf +jaf +jaf +jaf +gkZ gkZ +gkZ +jaf tXu ksa +fdt ksa ksa +aVH ksa ksa ksa ksa ksa -aVH -ksa ksa uoo ksa uoo ksa -ksa ujk ujk -gdw -wVp -xNj -mrT -iwf +wcA +pTV +pTV +pTV +pTV +pTV +oZg ujk ujk -ksa -ksa +qUo fdt ksa ksa @@ -107339,35 +107037,35 @@ ksa ksa ksa ebw -ats -jzo tvH +jzo +ats ljv cCF cmI fvz +sGP +orE +sZN +sZN sZN orE -vQt -vQt -wQQ -vQt -vQt +sZN vzK jcX iyI -wQQ -vQt +sZN +sZN fKo kpE -fTu mZc +nmX wEA -wEA -nmf +ogk mZc -kAV -kAV +wEA +lTB +lTB sPR bLy bLy @@ -107394,77 +107092,66 @@ jLn tvV vSo tOJ -cHJ +rBn wxL lbf oBH -oTN -uJm -uJm -uJm -sZG -lqb -nUK -tlq +jJz +okq +okq +cBB +uhY +eqx +gUp +sZY oBH -haD -ghk -vdQ -vdQ -mbF -eVV -eVV -eVV -eVV -eVV -eVV -eYU -dqg -vrT -tof -dpd -gow -vYZ -rRZ -iyt -lrc -fDD -vDm -sgY -rRZ -fDQ -leq -aDS +bkW +nCY +bkB +kLf +xYe +cnt +rhh +dhc +glU +pCP +rhh +iAK +exa +kxp +hAV +etJ +bcz +pDy +oiW tgG -cTJ -leq -oqK -kQX -uXP -geR +flV +lku +cNO +xOq +pZj +cNO +oNu +tgG +cNO +lku +oEu +uhz +xbz +iln eVB -wNL -ctz -wZv -pfo -pfo -vEP -pfo -oKE -oKE -oKE -pfo -pfo -pfo -pfo -pfo -pfo -pfo -pfo -pfo -pfo -iZB -pfo +fpV +ble +euK +qrn +nlI +xgo +xny +bDY +fwt +nzT +fwt +mnW pfo pfo pfo @@ -107474,37 +107161,48 @@ pfo pfo pfo pfo -gZC +cza +yjP +yjP +yjP +yjP +rim +yjP +gwY +yjP +vJU +yjP +wwQ pfo gkZ tXu +uoo +fdt +fdt +uoo +aVH ksa ksa ksa ksa ksa ksa +uoo ksa -ksa -aVH -ksa -ksa -fdt -fdt -fdt -fdt +uoo ksa ksa ujk -wzu -wzu ujk -wzu -wzu +gdw +wVp +xNj +mrT +iwf +ujk ujk ksa ksa -uoo fdt ksa ksa @@ -107612,15 +107310,15 @@ jcX jcX jcX jcX -oKb +xCc mZc mZc oLd mZc mZc mZc +gvb mZc -xoI mZc mZc bLy @@ -107655,79 +107353,79 @@ pmr wxL jmS oBH -hOn -cYG -cYG -pLn -wvi -bKE -uJm -uKj -xyc -oSg -hQe -hGZ -kUf -dRb -jzw -eri -nzR -oQv -mXb -eVV -eYU -mxn -bPo -wKW -tQm -tQm -tQm -rRZ -iyt -rRZ -fDD -ovO -fDD -rRZ -tgG -gvd -tgG +fAn +okq +okq +aSx +aSx +uFH +uFH +svK +qmY +faC +cpP +mOZ +kLf +uWv +nvB +ixK +ixK +fbG +ixK +ixK +rRU +iIX +kxp +oKQ +vyZ +alB +alB +eBQ tgG -mnV -leq +elt +lku +lku +lku +lku +lku +lku +gVU +lku +lku +niv oqK -evd -crl -xId -crl -jBr -euK -sgT +kQX +uXP +geR +ble +wNL +ctz +wZv +pfo +pfo +vEP +pfo +oKE +oKE +oKE +pfo +pfo +pfo +pfo +pfo +pfo +pfo +pfo +pfo +pfo +iZB +pfo +pfo +pfo +pfo +pfo pfo pfo -ukC -wQa -wQa -wQa -wQa -wQa -wQa -wQa -wQa -wQa -slh -wQa -wQa -wQa -wQa -rwa -itB -itB -stI -vnO -vnO -vnO -ppj pfo pfo pfo @@ -107737,11 +107435,7 @@ gkZ tXu ksa ksa -ksa -ksa -ksa -ksa -ksa +fdt ksa aVH ksa @@ -107749,20 +107443,24 @@ ksa ksa ksa ksa -uoo -uoo -ksa -xHx ksa +fdt +fdt +fdt +fdt ksa -jnp ksa +ujk +wzu +wzu +ujk +wzu +wzu +ujk ksa -xHx ksa uoo -uoo -ksa +fdt ksa ksa ksa @@ -107858,28 +107556,28 @@ muu yen ebw mlN -vQt -vQt -rOt -vQt -vQt +sZN +sZN +vwE +sZN +sZN orE vwE -vQt -wQQ +sZN +sZN oDg gYl ayu mZc vWa oxz -kAV +lTB mZc lTB wEA cTL -sPR -hSr +lpb +aXc bLy sTi sZR @@ -107897,7 +107595,7 @@ xqg aLo mXA pPz -fzW +xXk nVs dJe pdc @@ -107912,86 +107610,91 @@ cHJ wxL lbf oBH -rvv -fNr -lZk -oXO -lZk -jxr -qyk -uVQ +uKp +ejv +uTq +fLO +owN +tvQ +cdl +fuc oBH -haD -oqN -wRl -ltG -mvA -mvA -mvA -ltG -dXR -gGL -nOF -emN -noJ -lTJ -lou -ukj -pQi -ogW -rRZ -iyt -rRZ -mnx -fDD -fDD -rRZ -dHn -leq -tcF +bkW +nCY +dQC +tjL +erB +ixK +oZy +eRo +fXB +sPY +oZy +ixK +pxT +aaX +pTJ +lMZ +lMZ +vyZ +hie +tgG +reQ +cNO +dFR +eJk +pVH +lku +pZj tgG -cTJ -tRz +pYX +lku +rMV oqK -rmx -dVk -kOi -tRs -oDU +evd +lJI +xId +crl +jBr euK -gHv -vnO -vnO -oma -wBy -vnO -vnO -vnO -joY -vnO -vnO -vnO -vnO -tEg +sgT +pfo +pfo +ukC +pZY +wQa +wQa +wQa +wQa +wQa +wQa +wQa +wQa +slh +vuZ +wQa +wQa +wQa +rwa +itB itB +stI vnO vnO vnO -wzM +ppj pfo -iwk -nfR -txf -lMb -lMb -gje -qrv pfo pfo imx -pfo -gkZ -tXu +cFT +uHg +vot +aJU +uoo +fdt +uoo +aVH ksa ksa ksa @@ -108000,25 +107703,20 @@ ksa ksa ksa ksa -aVH ksa +uoo +uoo ksa +xHx ksa ksa +jnp ksa ksa -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt +xHx ksa +uoo +uoo ksa ksa ksa @@ -108169,93 +107867,89 @@ bUT wxL bMy oBH -jRM -mXg oBH -nFM -ylB +xQF oBH +mOv +lut oBH oBH oBH -kpt -oqN -oTy -ltG -bDR -vFB -iEZ -ltG -jmd -thk -nOF -fOz -mxn -pUP -xPK -xcB -xcB -xcB -rRZ -uVP -rRZ -rRZ -ndh -rRZ -rRZ -xnd -uaL -xVF +oBH +xrz +nCY +nXD +kLf +xKX +uyR +kLf +kLf +kLf +kLf +kLf +atS +tNW +ehG +uzs +wyb +nZt +lvK +bZO tgG -cTJ -leq +tgG +gFu +tgG +tgG +tgG +pWE +tgG +tgG +xWy +lku +uAC oqK -jCy -hkS -hJr -rHd -hWF -jjJ -uxM -rZO -fYX -gsA -lQK -psI -tUK -ufk -pZU -kgH -rab -ufk -ufk -qQp -deb -fBh -ufk -ufk -fpO -mrM -dhL -vDa -atO -ebS -kQx -jII -pjq -jjV -fjT -tnM -cFT -uHg -vot -aJU -ksa -ksa -ksa -ksa +rmx +dVk +kOi +tRs +oDU +euK +gHv +vnO +vnO +oma +wBy +vnO +vnO +vnO +joY +vnO +vnO +vnO +vnO +tEg +hCx +vnO +vnO +vnO +wzM +pfo +iwk +nfR +txf +lMb +lMb +gje +qrv +pfo +pfo +gZC +pfo +gkZ +tXu ksa ksa +fdt ksa aVH ksa @@ -108268,13 +107962,17 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt ksa ksa ksa @@ -108387,7 +108085,7 @@ ksa mZc oSo oxz -oJR +ghk mZc lTB mov @@ -108395,7 +108093,7 @@ lTB mov xzK bLy -sZR +pYI sZR qoF hNi @@ -108411,7 +108109,7 @@ xPS iHC xbV pPz -fzW +xXk auK dJe pdc @@ -108421,91 +108119,98 @@ ccZ stR nGz qeZ -nVy +fCE cHJ wxL lbf aHD -bHE -kFI -tzy -eXv -nil -sUW -uJQ -plr -rjQ -haD -oqN -oTy -twj -xsf -kbA -fYL -xzb -ybl -fbU -nOF -eYU -dqg -cre -oeF -kyl -kyl -ewn -rRZ -iyt -rRZ -ckL -hkl -kGn -rRZ -duE -leq -leq -sYb -cTJ -jLU +kjO +nmY +fSB +nmY +xEM +wDg +sUx +rQv +rFk +bkW +nCY +rei +uII +dBB +ixK +jMa +xva +tJX +voJ +jMa +ixK +rwh +lsJ +qGP +vyZ +lMZ +vyZ +prY +tgG +fpJ +cNO +dFR +tgG +qVD +lku +kAb +tgG +xOq +lku +cQj oqK -dhs -xMI -cYX -mzK -hPM -xsd -gYt -inT -jcB -caL -gYt -inT -jcB -ciT -gYt -ciT -tjI -vOT -mtH -jaf -aqP -jaf -hya -vOT -efs -gkZ -aQu -kvi -wrl -gkZ -lhD -kvi -wrl -gkZ -lhD -gkZ -gkZ +jCy +hkS +hJr +rHd +hWF +jjJ +uxM +rZO +fYX +gsA +lQK +psI +tUK +ufk +pZU +kgH +rab +ufk +ufk +qQp +deb +fBh +ufk +ufk +fpO +mrM +dhL +vDa +atO +ebS +kQx +jII +pjq +jjV +fjT +qKy +pfo gkZ tXu +uoo +fdt +fdt +uoo +aVH +uoo +fdt ksa ksa ksa @@ -108514,13 +108219,6 @@ ksa ksa ksa ksa -aVH -uoo -fdt -ksa -ksa -ksa -ksa ksa ksa ksa @@ -108643,7 +108341,7 @@ ksa ksa mZc mZc -xHh +qOR mZc bLy bLy @@ -108683,94 +108381,90 @@ cHJ wxL tOj vFG -pbg -fyf -iCo -ijI -ijI -ijI -ijI -gSl -bKI -uSJ -oqN -vpY -eXy -aUS -pKq -eva -xzb -dXR -gGL -nOF -dIM -dqg -wia -lwy -uwx -rtz -ugy -rRZ -iyt -lrc -fDD -fDD -fDD -lrc -leq -leq -pau +ayi +ukY +imG +ukY +ukY +ukY +ukY +dRH +nsk +wID +nCY +mOZ +kLf +kWI +ixK +ixK +ixK +fbG +ixK +ixK +ixK +wAj +kxp +kvg +vyZ +lMZ +alB +eBQ tgG -leq -cTJ +pZj +flV +cNO +gIF +cNO +lku +cNO +qSu +cNO +lku +alM oqK -xXP -xXP -cWI -xXP -rTM -xXP -nAR -xXP -rTM -ikp -qYS -uQk -rZN -uQk -qYS -uQk -rZN -uQk -sKX +dhs +xMI +cYX +mzK +hPM +xsd +gYt +inT +jcB +caL +gYt +inT +jcB +ciT +gYt +ciT +tjI +vOT +mtH +jaf +aqP +jaf +hya +vOT +efs gkZ -hGk +aQu +kvi +wrl gkZ -anO -uoo -vKf -uoo -vKf -itW -knX -xXP -rTM -itW -knX -uoo -nSq -uoo -fyt -kiv -xiW -uoo -uoo -fdt -uoo +lhD +kvi +wrl +gkZ +lhD +gkZ +gkZ +jaf +tXu +ksa fdt -uoo -uoo -uoo +ksa +ksa aVH ksa fdt @@ -108809,6 +108503,10 @@ ksa ksa ksa ksa +ksa +ksa +ksa +ksa "} (141,1,1) = {" ksa @@ -108899,9 +108597,9 @@ qZk qZk qZk bLy -eJp -psO -gOA +lyP +xHh +mjk bLy nSh vME @@ -108940,97 +108638,97 @@ ohw wxL nWt fTr -mWJ -fyf -hfZ -xix -uyQ -uyQ -uyQ -jHI -hSc -ymc -ldF -vvg -ltG -uKB -hXj -kEq -ltG -vSr -qlb -kdQ -bqb -mxn -bpf -bJT -vER -nfm -wjf -rRZ -iyt -rRZ -eKT -fDD -ckL -rRZ -plg -uaL -miX +bIQ +hQP +gkM +yfG +lcE +lcE +lcE +yly +pZa +bsj +sMx +pZD +kLf +bJj +nJr +nQw +qFM +wPy +vzc +eOV +nQw +bZj +kxp +hWa +lkX +wfv +eZS +ecG +tgG +wnF +pZj +fpJ tgG -uFF -cTJ +ruh +lku +uAC +tgG +cNO +lku +pZj oqK xXP -wFB -bJR -fdT -pHI -wFB -dJc -fdT -pHI -wFB -dJc -fdT -pHI -wFB -dJc -fdT -pHI -wFB -jHh -jDp -uou -jDp -sKq -wFB -bll -fdT -qBV -wFB -rUQ -fdT -gnk -wFB -rUQ -fdT -gnk -wFB -tXu -ksa -ksa -ksa -ksa -ksa -ksa -ksa +xXP +cWI +xXP +rTM +xXP +nAR +xXP +rTM +ikp +qYS +uQk +rZN +uQk +qYS +uQk +rZN +uQk +sKX +gkZ +hGk +gkZ +anO +uoo +vKf +uoo +vKf +itW +knX +xXP +rTM +itW +knX +uoo +nSq +uoo +fyt +kiv +xiW +uoo +fdt +uoo +uoo +aVH +uoo +fdt ksa ksa ksa -aVH ksa -fdt ksa ksa ksa @@ -109149,15 +108847,15 @@ mjz mjz mjz aVH -ksa -ksa -icx +qZk +qZk +qZk skA qpB ePr bLy mQo -psO +xHh fRT bLy bMs @@ -109197,97 +108895,97 @@ cHJ wxL tOj vFG -pbg -ijI -iFj -ijI -ijI -bJK -rgH -gSl -vHk -uSJ -oqN -jnY -dnR -dnR -dnR -dnR -xXd -xXd -xXd -gWG -xXd -xXd -xXd -rRZ -rRZ -jBZ -rRZ -rRZ -iGj -rRZ -rRZ -rRZ -rRZ -rRZ -rRZ +ayi +ukY +acx +ukY +ukY +oMB +qqC +dRH +vje +wID +nCY +hCZ +nMn +fep +wKF +fep +sxS +sxS +sxS +ttr +sxS +sxS +ocd +ocd +ocd +sjy +ocd +ocd tgG tgG tgG tgG -cTJ -bpD -xXP -wFB -mmX -lLP -meT +tgG +tgG +wRJ +tgG +tgG +alM +lku +cNO +oqK +xXP wFB -iRl -pgm -ufg +bJR +fdT +pHI wFB -atN -cCp -wrB +dJc +fdT +pHI wFB -tas -cyF -juj +dJc +fdT +pHI wFB -tXu -gkZ -hGk -gkZ -uoo +dJc +fdT +pHI wFB -gFm -owH -uki +jHh +jDp +uou +jDp +sKq wFB -sXy -nck -bbe +bll +fdT +qBV wFB -tWQ -hGE -rNd +rUQ +fdT +gnk +wFB +rUQ +fdT +gnk wFB tXu ksa +uoo ksa ksa ksa ksa +aVH ksa ksa ksa ksa ksa -aVH ksa -fdt ksa ksa ksa @@ -109406,15 +109104,15 @@ mjz mjz mjz aVH -qZk icx -qZk +bzX +icx hDE hlP sbB bLy gOA -psO +xHh jwZ bLy bMs @@ -109439,7 +109137,7 @@ cxY gwz dKn ukV -yjo +oRg xxe aSr oPd @@ -109454,97 +109152,97 @@ bUT wxL lbf aHD -uNw -uEp -tjR -npo -uEp -cTT -skR -flu -rjQ -haD -oqN -eYU -cud -uQr -eLx -hEk -gOS -iIr -hvW -ofl -nQM -avo -aHW -lOA -fDD -cQv -bQB -fDD -iyt -mnx -rRZ -boj -kGn -odR -rRZ -dnA -toN -fIO +kqr +iUt +fwT +qpS +nLC +qwG +nDn +lvR +rFk +bkW +nCY +mOZ +nMn +dGy +uSA +dto +sxS +mWO +azx +rSN +bfl +sKC +ocd +lId +tUG +tbe +rYy +hBR +bID +qRt +aBV +iwW +dvO +lem +kaH +vto tgG -cTJ +cNO +lku +xOq bpD xXP wFB -sYs -bGF -bGF +mmX +lLP +meT wFB -snh -vFg -dPd +iRl +pgm +ufg wFB -nxU -meR -oPm +atN +cCp +wrB wFB -dFT -ril -gZH +tas +cyF +juj wFB -fgv -kDG -vJk -kDG -maz +tXu +gkZ +hGk +gkZ +uoo wFB -coh -vze -dZM +gFm +owH +uki wFB -dYV -eKm -dSP +sXy +nck +bbe wFB -lJr -gxT -qJA +tWQ +hGE +rNd wFB tXu ksa +uoo +ksa ksa ksa ksa +aVH ksa ksa ksa ksa ksa ksa -aVH -uoo -fdt ksa ksa ksa @@ -109664,7 +109362,7 @@ mjz mjz aVH aFe -bzX +aGG rkF hhs ikm @@ -109693,9 +109391,9 @@ cHD cHD cHD cHD -cst -hVF -dJe +dEo +owQ +dEo dMO dMO dMO @@ -109711,96 +109409,92 @@ cHJ wxL aBz qOH -bxO -bxO +cua +cua qOH -iLu -bxO +hdl +cua qOH qOH qOH qOH -urh -oqN -eYU -cud -efV -lxS -lEU -lEU -ixC -hxt -jTi -wmF -wzK -xXd -rRZ -mIU -aOn -gzP -nak -xjb -eVL -bkV -eVL -qkk -eVL -bKq -rVw -rVw -rVw -nzx -nzH +bkW +nCY +mOZ +fep +jdC +tQl +urK +sxS +gya +gEs +gJO +chy +rQU +ocd +rEz +gJJ +jNd +sFv +mHS +bID +bID +vHt +bID +dvO +lKZ +voZ +hsN +tgG +qGK +lku +pZj bpD xXP wFB +sYs bGF -bTK -bGF +aNX wFB -dPd -vka -dPd +snh +vFg +tJc wFB -oPm -ijp -oPm +nxU +meR +vke wFB -gZH -mCK -gZH +dFT +ril +qhj wFB -uoo -gkZ -hGk -gkZ -tXu +fgv +kDG +vJk +kDG +maz wFB -dZM -kzM -dZM +coh +vze +vEc wFB -dSP -nKt -dSP +dYV +eKm +cML wFB -qJA -gmE -qJA +lJr +gxT +rmJ wFB tXu -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +uoo +uoo +uoo +uoo aVH -ksa +aVH +aVH +uoo fdt ksa ksa @@ -109837,47 +109531,51 @@ ksa ksa ksa ksa -"} -(145,1,1) = {" -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +ksa +ksa +ksa +ksa +"} +(145,1,1) = {" +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -109920,15 +109618,15 @@ mjz mjz mjz aVH -qZk icx -qZk +sPm +icx fck lHF jNm bLy gOA -psO +xHh vcn bLy ryL @@ -109968,64 +109666,64 @@ cHJ wxL lbf qOH -bDe -lYQ -dTZ -sce -eDk -ctF -orW -wsQ +hKA +nQN +kix +joj +tYH +hPf +fpk +nhL qOH -aga -oqN -eYU -cud -yaT -tbt -nyU -uhv -uVb -tAk -rkE -ocg -hIW -kXq -rRZ -jdN -aLp -mnx -raq -fDD -jxM -rRZ -ckL -fDD -osp -rRZ -dnA -hLX -qvX +lsA +nCY +mOZ +nMn +jSG +tQl +rrR +sxS +rzz +skz +ycc +tHl +gBv +ocd +dZW +vuw +jNd +gJJ +jhB +bID +cZa +cMc +qXO +dvO +dua +sXm +qHm tgG -lrg -oqK +cNO +lku +cNO +bpD xXP wFB +bGF +bTK +bGF wFB +dPd +vka +dPd wFB +oPm +ijp +oPm wFB -wFB -wFB -wFB -wFB -wFB -wFB -wFB -wFB -wFB -wFB -wFB -wFB +gZH +mCK +gZH wFB uoo gkZ @@ -110033,33 +109731,33 @@ hGk gkZ tXu wFB +dZM +kzM +dZM wFB +dSP +nKt +dSP wFB -wFB -wFB -wFB -wFB -wFB -wFB -wFB -wFB -wFB +qJA +gmE +qJA wFB tXu ksa +uoo ksa ksa +aVH ksa +uoo ksa +fdt ksa ksa ksa ksa ksa -aVH -ksa -fdt -ksa ksa ksa ksa @@ -110103,11 +109801,6 @@ ksa ksa ksa ksa -uoo -ljY -qpF -ljY -uoo ksa ksa ksa @@ -110119,6 +109812,11 @@ ksa ksa ksa ksa +uoo +ljY +qpF +ljY +uoo ksa ksa ksa @@ -110177,15 +109875,15 @@ mjz mjz mjz aVH -ksa -ksa -icx +qZk +qZk +qZk cQt tqj gAx bLy iea -psO +xHh whv bLy ewM @@ -110225,96 +109923,92 @@ bUT wxL kjv qOH -yja -guA -rOg -fNe -rOg -rOg -rOg -gPu -bJZ -haD -oqN -rZH -xXd -xXd -xXd -xXd -xXd -xXd -xXd -xXd -xXd -diy -xXd -rRZ -rRZ -rRZ -rRZ -qLB -rRZ -rRZ -rRZ -rRZ -fDD -gCT -gCT -oqK -oqK -oqK -oqK -lrg +bCg +dDp +dDp +uMf +ydz +dDp +dDp +ppN +qOH +bkW +nCY +opA +xdI +sxf +rEy +hDo +sxS +uvI +skz +aAY +sna +pFu +ocd +qeV +rLQ +lmY +lgx +rvZ +bID +fvH +doy +gPO +dvO +lyy +dun +uGL +tgG +pZj +lku +cNO oqK xXP -xXP -xXP -xXP -xXP -xXP -xXP -xXP -xXP -xXP -xXP -xXP -xXP -xXP -uoo -xXP -uoo -uoo +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB uoo gkZ hGk gkZ -fgv -kiv -kiv -kiv -kiv -kiv -kiv -kiv -kiv -kiv -kiv -kiv -kiv -kiv -xiW -uoo -uoo +tXu +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +wFB +tXu +ksa uoo +ksa +ksa +aVH uoo fdt -uoo fdt -uoo -uoo -uoo -aVH -ksa fdt ksa ksa @@ -110351,6 +110045,10 @@ ksa ksa ksa ksa +ksa +ksa +ksa +ksa "} (147,1,1) = {" ksa @@ -110359,13 +110057,6 @@ ksa ksa ksa ksa -uoo -uoo -wRN -cXW -wRN -uoo -uoo ksa ksa ksa @@ -110377,6 +110068,13 @@ ksa ksa ksa ksa +uoo +uoo +wRN +cXW +wRN +uoo +uoo ksa ksa ksa @@ -110442,7 +110140,7 @@ qZk qZk bLy agf -psO +xHh kTq bLy gtV @@ -110457,12 +110155,12 @@ jEw mVt yjH dUx -mDz +ttC kaP qvC mkl gSE -mJu +vSA min cst qQz @@ -110471,7 +110169,7 @@ aBj mEf cev cev -cev +piC cev cev hXt @@ -110482,77 +110180,91 @@ neW wxL lbf qOH -uEZ -dSr -qbc -maG -qbc -bXo -bXo -jAi -vfO -wyZ -xVM -eYU -bAD -rwR -qXG -reB -sVE -sKy -fAa -xGb -pSN -dwH -lCs -kpB -cQO -kRo -jbR -lIZ -xgu -ome -pxG -rRZ -iAG -gCT -rpa -vCZ -paI -drg -oqK -ydh -oqK -oqK -oqK -bpD -bpD -bpD -oqK -bpD -bpD -bpD -oqK -bpD -bpD -bpD -oqK -bpD -bpD -bpD +vsB +rer +rer +aPy +xqe +xqe +xqe +cnX +eiO +faC +mbZ +mOZ +nMn +jSG +tQl +iHJ +sxS +fXu +nDF +ycc +chy +hKb +ocd +mVS +nrT +jNd +lBE +azt +bID +mGu +nMo +vuu +dvO +utw +sXm +kbj +tgG +uAC +lku +cNO oqK -dgl -txI -xKp -txI -dgl -txI -txI -txI -txI -txI -ksa +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +uoo +xXP +uoo +uoo +uoo +gkZ +hGk +gkZ +fgv +kiv +kiv +kiv +kiv +kiv +kiv +kiv +kiv +kiv +kiv +kiv +kiv +kiv +xiW +uoo uoo +uoo +uoo +aVH +ksa +fdt ksa ksa ksa @@ -110570,9 +110282,6 @@ ksa ksa ksa ksa -aVH -uoo -fdt ksa ksa ksa @@ -110582,17 +110291,6 @@ ksa ksa ksa ksa -fdt -fdt -fdt -fdt -oIb -wxU -oIb -fdt -fdt -fdt -fdt ksa ksa ksa @@ -110615,15 +110313,6 @@ ksa ksa ksa ksa -uoo -uoo -cXW -wRN -bkH -wRN -cXW -uoo -uoo ksa ksa ksa @@ -110635,6 +110324,15 @@ ksa ksa ksa ksa +uoo +uoo +cXW +wRN +bkH +wRN +cXW +uoo +uoo ksa ksa ksa @@ -110695,7 +110393,7 @@ ksa ksa xXP ksa -ksa +xXP ksa mZc mZc @@ -110717,7 +110415,7 @@ dUx gyo nxH tPP -fxI +tPP aRd qPP vgG @@ -110739,79 +110437,77 @@ iQo wxL lbf qOH -llR -bXw -dTG -dWs -ptt -vmo -ptt -iDj -bJZ -haD -btK -emN -rHn -sBs -pmt -obC -snz -gbh -vLV -xGb -utD -qVb -fte -kpB -fjH -aSg -xtL -tvl -qxl -udQ -eZR -rRZ -fDD -gCT -gSm -nqG -lFY -cDC -oqK -lrg -tgG -qLk -mLe -xSl -cJJ -kFV +jpg +wUo +mhY +kHg +vRh +vRh +vRh +sAT +qOH +bkW +nCY +mOZ +fep +jdC +tQl +sMw +sxS +bwN +ccV +ycc +chy +iib +ocd +qbk +gJJ +hNA +tvY +pvI +bID +fvH +bys +kpd +dvO +vRe +qzh +eIy tgG -twN -leq -xdz tgG -oLy -mYC -leq +vlG tgG -pjx -owd -qkC -cQT -pKS -cPo -iWX -nIb -bIu -sKd -mJo -xUG -ula -itA -jxl -jxl -aJU +oqK +oqK +oqK +bpD +bpD +bpD +oqK +bpD +bpD +bpD +oqK +bpD +bpD +bpD +oqK +bpD +bpD +bpD +oqK +dgl +txI +xKp +txI +dgl +txI +txI +txI +txI +txI ksa +uoo ksa ksa ksa @@ -110823,11 +110519,20 @@ ksa ksa ksa ksa +aVH +uoo +fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa ksa -aVH ksa ksa ksa @@ -110839,17 +110544,10 @@ ksa ksa ksa ksa -fdt ksa -uoo ksa -uoo -xpD -uoo ksa -uoo ksa -fdt ksa ksa ksa @@ -110871,17 +110569,6 @@ ksa ksa ksa ksa -uoo -byC -wRN -cXW -bzw -cLl -hsY -cXW -wRN -wIO -uoo ksa ksa ksa @@ -110893,6 +110580,17 @@ ksa ksa ksa ksa +uoo +byC +wRN +cXW +bzw +cLl +hsY +cXW +wRN +wIO +uoo ksa ksa ksa @@ -110956,7 +110654,7 @@ bZv bZv bLy mhM -psO +xHh ogZ bLy dop @@ -110977,7 +110675,7 @@ ahj dAg kiT bhB -cHD +min cst hVF dJe @@ -110992,81 +110690,98 @@ ikD eWv xSh fsE -neW +cTW wxL -tck +czJ qOH -nle -rzV -hvU -hBx -wYn -eQZ -lve -yaZ +wfg +fpY +tOb +tcH +eQN +kpJ +ucG +fiq qOH -haD -btK -eYU -qfa -irm -wTM -uIy -dzI -uGF -iKY -xGb -axv -qVb -piu -kpB -cse -aSg -rcJ -cHp -cCc -aDP -utV -rRZ -fDD -gCT -mTC -mpP -lFY -nrA -oqK -tJd -knY -hnr -hnB -kaL -qQH -rpz -knY -cEm -aaT -leq -fim -aBA -nqE -aBA -fim -leq -leq -ddr -oqK -xTe -fza -iWX -vuY -mNy -whM -nli -gKj -vjI -txI -mrl -txI +jbM +nCY +pZD +nMn +lHB +hME +ooN +sxS +toc +uMr +dgr +jLr +xSq +ocd +ein +gLT +abv +qax +shz +bID +tmt +bzp +hMe +dvO +voo +onG +cjZ +tgG +fEa +lku +cNO +pZj +pYA +tgG +mzf +nUK +jdA +tgG +pYA +uAC +alM +tgG +cNO +qGK +cNO +tgG +pVH +pZj +pYA +cQT +pKS +cPo +fqV +nIb +bIu +sKd +mJo +xUG +ula +itA +jxl +aJU +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +aVH +ksa +fdt +ksa +ksa +ksa ksa ksa ksa @@ -111084,29 +110799,12 @@ ksa ksa ksa ksa -aVH ksa ksa -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt ksa -uoo ksa -uoo -mgG -uoo ksa -uoo ksa -fdt ksa ksa ksa @@ -111128,6 +110826,17 @@ ksa ksa ksa ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa uoo cXW cXW @@ -111194,17 +110903,6 @@ uoo uoo uoo uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo bZv dwc bZv @@ -111212,8 +110910,8 @@ lkh euP oYi bLy -gOA -psO +xNu +xHh gOA bLy dop @@ -111255,74 +110953,74 @@ nxn qOH qOH qOH -bJZ -tJO -bJZ +kXL +ovo qOH qOH qOH qOH -xsl -btK -cuE -fgN -irm -hMW -nsd -rEK -oPE -cit -xGb -utD -qVb -fte -kpB -cxl -aSg -xtL -gOK -niD -jQO -mAd -rRZ -fDD -gCT -exJ -gzt -fJd -oTl -oqK -oqK -oqK -cGk -tXk -aXN -btB -eCO -tgG -gEs -cJu -aBA -tgG -leq -aBA -tRz +qOH +bkW +nCY +mOZ +nMn +fep +wKF +fep +sxS +sxS +sxS +ttr +sxS +sxS +ocd +ocd +ocd +sNO +ocd +ocd +bID +bID +mDR +bID +dvO +dvO +oLk +dvO tgG -cTa -leq -vnp +dIg +lku +wMD +wMD +wMD +vKt +wMD +wMD +wMD +wMD +wMD +wMD +wMD +wMD +wMD +wMD +wMD +vKt +wMD +wMD +uPa oqK -aTl -ppS +xTe +fza fqV -eoJ -sGk -mwK -mwK -rPV -kZS -sfu -muI +vuY +mNy +whM +nli +gKj +vjI +txI +mrl txI ksa ksa @@ -111335,36 +111033,36 @@ ksa ksa ksa ksa +aVH +uoo +fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa ksa ksa ksa -aVH ksa ksa -uoo ksa ksa -uoo ksa ksa ksa ksa ksa -uoo ksa -uoo ksa -fJK -fJK -fJK ksa -uoo ksa -fdt -fdt ksa ksa ksa @@ -111385,16 +111083,6 @@ ksa ksa ksa ksa -qpF -wRN -qsk -rqm -byi -fvW -byi -wND -rHQ -kKH ksa ksa ksa @@ -111406,6 +111094,16 @@ ksa ksa ksa ksa +qpF +wRN +qsk +rqm +byi +fvW +byi +wND +rHQ +kKH ksa ksa ksa @@ -111470,7 +111168,7 @@ tgW bbI gCi fJl -psO +xHh fJl bow dPT @@ -111494,7 +111192,7 @@ cQR tcP omL hVF -hJV +dJe dMO rrv fqQ @@ -111510,77 +111208,100 @@ neW wxL lbf xAf -rjQ -hso -kbR -dtT -uQm -uQm -uQm -uQm -nuN -rMK -btK -eYU -bAD -eIh -hwk -reB -upz -xby -jFb -xGb -utD -qVb -iSM -kpB -pIJ -oTZ -tGl -jsa -lJH -wCp -wNz -rRZ -qPk -gCT -abo -gNM -mrW -pDl -nev -oTD -oqK -oqK -oqK -oqK -oqK -oqK -tgG -tgG -fbm +rFk +sLz +iqM +bQk +gHS +iqM +iqM +iqM +iqM +wko +iqG +vYY +hKz +owt +eKx +owt +olq +owt +owt +dIC +owt +owt +jLa +owt +owt +bpi +owt +owt +jLa +pNA +pwI +nyt +owt +owt +qqZ +jFA tgG +geG +lku +cNO +cNO +cNO tgG +jqd +qcP +tbT tgG -gvd +cNO +cNO +cNO tgG +upt +mfv +pZj tgG -sZo -jMT -lGd +uvR +oEu +cNO oqK -urb -mNF -uYe -jGm -ijG -rLH -eXJ -eXJ -pHW -xhI -vRl -dgl +aTl +ppS +fqV +eoJ +sGk +mwK +mwK +rPV +kZS +txI +muI +txI +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +aVH +ksa +fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -111598,31 +111319,8 @@ ksa ksa ksa ksa -aVH -uoo -uoo -uoo -uoo -uoo -rYe -rYe -rYe -rYe -rYe -rYe -rYe -tOn -tOn -fJK -fJK -fJK -fJK -fJK -tOn ksa ksa -fdt -fdt ksa ksa ksa @@ -111642,6 +111340,17 @@ ksa ksa ksa ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa uoo cXW cXW @@ -111708,27 +111417,16 @@ uoo uoo uoo uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo -uoo bZv dwc -voo +bZv fHz vTN uuA bLy fGh -psO -jbM +xHh +nhv bLy iSe lHt @@ -111768,77 +111466,100 @@ vbD esr sdL lFz -mqX -sre -ghk -vdQ -vdQ -vdQ -vdQ -ejR -ejR -oAE -tVt -bAD -bAD -bAD -bAD -bAD -bAD -bAD -bAD -utD -qVb -hjU -kpB -kpB -kpB -kpB -prn -kpB -kpB -kpB -rRZ -dVx -gCT -tir -tir -tir -tir -tir -rmM -gDn -iMj -sxJ -uit -rbW -oqK -iKJ -vTT -lfI -lJD -tTs -tTs -tTs -tTs +wxf +uAL +rrG +rrG +rrG +rrG +rrG +rrG +inV +nCY +fES +tEP +jQs +jQs +jQs +jQs +jQs +jQs +uEE +nNu +uEE +uEE +uEE +uEE +cUo +uEE +uEE +uEE +sfs +uEE +cUo +uEE +uEE +cUo +kBK +pSJ +uHQ +uHQ +uHQ +gzG +lmR +tgG +tgG +tgG +tgG +tgG +tgG +gFu +tgG +tgG +tgG +tgG +tgG +tgG +aXm +uwY +cgU lpn -tTs -iId -itU -ejy -eUa -jxd -rKd -hOc -iQE -iQE -kMH -txI -qps -txI -gAu -txI -txI +urb +mNF +uYe +jGm +ijG +rLH +eXJ +eXJ +pHW +xhI +vRl +dgl +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +aVH +uoo +fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -111855,32 +111576,9 @@ ksa ksa ksa ksa -aVH ksa -qmg -rYe -rYe -rYe -rYe -oRG -tKW -xnX -hey -rYe -rYe -fJK -fJK -fJK -fJK -uwv -fJK -fJK -fJK -fJK ksa ksa -fdt -fdt ksa ksa ksa @@ -111899,17 +111597,6 @@ ksa ksa ksa ksa -uoo -byC -wRN -cXW -pgT -jCb -tTg -cXW -wRN -wIO -uoo ksa ksa ksa @@ -111921,6 +111608,17 @@ ksa ksa ksa ksa +uoo +byC +wRN +cXW +pgT +jCb +tTg +cXW +wRN +wIO +uoo ksa ksa ksa @@ -111984,7 +111682,7 @@ bZv bZv bLy hNt -psO +xHh xGH bLy lHt @@ -112012,7 +111710,7 @@ dJe dMO fqQ jYF -fqQ +tfo dMO yiI sXd @@ -112024,82 +111722,108 @@ neW wxL lbf gXW -rjQ -vcv -lcX -jct -rlz -lcX -xsR -lcX -iko -lDZ -btK -wuj -rcz -wtm -nxB -rlE -gav -gav -gav -jQZ -nMx -qVb -dYx -joj -iyZ -xtu -gav -vqr -gav -qAj -gav -abG -cZu -dRR -tir -vRJ -iuR -sry -tir -sZe -mGb -sNb -lYg -mGb -ilj -oqK -wGN -nCa -uch -gRf -nLS -sZo -bsq -uch -sZo -gsl -leq -kXH -oqK -sTD -qgZ -fOn -gfI -uOj -cLR -kQK -lHd -ssz -mQF -uHo -ipj -txI -uoo -uoo -ksa -ksa +rFk +bvm +adc +lGt +fZp +lGt +xYV +lGt +lGt +eUz +gKt +gCM +hKz +ogX +qdr +ugm +qdr +qdr +jNg +sYi +bQQ +sxi +sxi +ehk +cdm +qdu +sxi +sxi +sxi +lfs +cNw +iOG +qHp +ukr +ukr +vZe +tgG +pZj +cNO +cNO +xgp +xdD +tgG +fgR +fgR +fgR +tgG +oKo +cNO +fpJ +tgG +lDR +qnc +rng +tgG +pCS +mIL +cNO +oqK +eUa +jxd +rKd +ihO +hOc +hOc +hOc +txI +qps +txI +gAu +txI +txI +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +aVH +ksa +fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -112112,34 +111836,8 @@ ksa ksa ksa ksa -aVH -aVH -hKj -lLH -vQo -uPx -tyq -lqY -wTA -imt -jLL -xXN -rYe -fJK -fJK -fJK -fJK -ohg -fJK -fJK -fJK -fJK -fJK ksa ksa -fdt -fdt -fdt ksa ksa ksa @@ -112157,15 +111855,6 @@ ksa ksa ksa ksa -uoo -uoo -cXW -wRN -soB -wRN -cXW -uoo -uoo ksa ksa ksa @@ -112177,6 +111866,15 @@ ksa ksa ksa ksa +uoo +uoo +cXW +wRN +soB +wRN +cXW +uoo +uoo ksa ksa ksa @@ -112241,7 +111939,7 @@ ksa ksa mZc xoG -psO +xHh vcn bLy rfS @@ -112283,76 +111981,100 @@ xBK rCT lWn lWn -hff -iQM +eLl +kwG lWn lWn lWn lWn lWn -rmU -oDi -hts -wXy -eMi -eMi -eMi -eMi -eMi -eMi -eMi -eMi -ijg -eMi -eMi -lfD -eMi -eMi -eMi -jAL -jAL -jAL -jAL -wOI -qbk -bma -wJr -rst -koO -hlw -eTo -eQm -tja -xiO -iXh -xeU -dhi -eac -qLR -eac -rgf -mpo -sZo -bsq -uch +aio +nCY +mZR +kDm +kDm +kDm +pND +kDm +kDm +kDm +pvL +xuk +pvL +pvL +pvL +pvL +pvL +pvL +pvL +gEg +aoo +lug +aoo +aoo +aoo +aoo +aoo +oqK +oqK +oqK +tgG +bqd +tgG tgG -nir -vHU -vHU +hgQ +hgQ +hgQ +tgG +dFR +uwY +cgU +cgU +cgU +htv +fvh +fvh +fvh +gBW +eJp oqK -rHp -hyb -efB -qHq -enE -lZA +sTD qgZ -bhI -nZX -san -pHw -trz -xgR +fOn +gfI +uOj +cLR +kQK +lHd +ssz +mQF +uHo +ipj +txI +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +aVH +uoo +fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -112369,34 +112091,10 @@ ksa ksa ksa ksa -uoo ksa -hzo -rYe -rpI -rYe -ivq -vHv -oju -iRQ -nxr -ycA -rYe -fJK -fJK -fJK -fJK -hll -fJK -fJK -fJK -fJK -fJK -fJK ksa ksa ksa -fdt ksa ksa ksa @@ -112415,13 +112113,6 @@ ksa ksa ksa ksa -uoo -uoo -wRN -cXW -wRN -uoo -uoo ksa ksa ksa @@ -112433,6 +112124,13 @@ ksa ksa ksa ksa +uoo +uoo +wRN +cXW +wRN +uoo +uoo ksa ksa ksa @@ -112498,7 +112196,7 @@ ksa ksa vyg lyP -psO +xHh gOA bLy tyC @@ -112539,79 +112237,107 @@ wxL lbf jKW lWn -aBM -mXK -kya -aZq -mrX -bnM -byP +tzV +qrH +nTa +vaW +vOV +sWO +kOa lWn -hJs -btK -dee -sJW -rrD -rrD -rrD -loQ -rrD -iDE -rrD -dMq -lVu -bPv -nwB -seJ -loQ -rrD -rrD -uCp -gfA -rrD -uCp -uUV -iCW -tir -kYx -une -keo -tir -jlo -ude -sBq -onj -iJR -wbn +qvR +nCY +hiR +liM +xZp +qqD +whh +deB +tUA +kDm +qEI +iqN +rCS +uWp +jit +pvL +ePa +kKi +ouj +gEg +mdq +oXy +bRX +aoo +xSp +iOY +oKu +eBP +nge oqK -bbm -uch -mpo -nrr -wcZ +tYG +xgp +cNO +nbg +cNO +hgQ +cNO tgG +xOq +fii +cNO tgG +alP +fii +alP +tgG +dzZ +cNO +pZj oqK -oqK -oqK -oqK -oqK -oqK -txI -txI -txI -txI -txI -txI -txI -txI -txI -txI -txI -txI -txI +rHp +hyb +efB +qHq +enE +lZA +qgZ +bhI +nZX +san +pHw +trz +xgR +uoo +uoo +uoo +uoo +uoo +uoo uoo uoo +uoo +uoo +aVH +ksa +fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -112626,34 +112352,6 @@ ksa ksa ksa ksa -uoo -uoo -byC -rZq -rZq -rZq -rZq -aqh -suH -suH -ffw -suH -suH -fJK -oQW -fVR -kMY -bJM -kMY -bGn -wLQ -nXR -fJK -fJK -uoo -uoo -uoo -fdt ksa ksa ksa @@ -112673,11 +112371,6 @@ ksa ksa ksa ksa -uoo -jnp -qpF -jnp -uoo ksa ksa ksa @@ -112689,6 +112382,11 @@ ksa ksa ksa ksa +uoo +jnp +qpF +jnp +uoo ksa ksa ksa @@ -112761,7 +112459,7 @@ oGe rlF eFV sHl -tXj +sHl tXj cSz iFN @@ -112796,70 +112494,96 @@ wxL lbf vOm hTS -oZP -mXK -kya -jQb -rTK -rTK -lVh +ohm +qrH +uaC +kSU +kYU +oWu +pRD lWn -skE -btK -wIx -eav -dgy -dgy -dgy -dgy -dgy -eav -oCv -glB -oCv -ufn -vio -jJW -vio -ufn -vqb -wWt -nxF -piD -uJn -nBE -kzt -khD -tir -tir -tir -tir -kTy -mWp -rfz -hoJ -hoJ -hoJ +aio +nCY +mZR +liM +ipt +nBH +ePf +ayr +tpU +kDm +hKq +uLS +umO +gQO +bKW +wgZ +ilX +emZ +lbL +gEg +bay +vdK +kPh +dEl +lUE +lte +vYl +wqW +buX oqK +cNO +sIK +uHQ +uHQ +uHQ +uHQ +cgU +cgU +cgU +kcf +flV tgG tgG +fii tgG -iyc tgG tgG -uUC -khD -cpE -wEK -tOe -uJI -xhQ +mcO +tgG +oqK +txI +txI +txI +txI +txI +txI +txI +txI +txI +txI +txI +txI +txI +ksa ksa ksa ksa ksa ksa +ksa +ksa +ksa +ksa +aVH uoo +fdt +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -112883,34 +112607,8 @@ ksa ksa ksa ksa -uoo -wcH -wcH -rZq -kWZ -mkt -iWk -fXb -suH -gtY -fmJ -oal -suH -yhv -tqy -wfA -wfA -acL -wfA -wfA -xTb -qzR -fJK -fJK -fJK ksa ksa -fdt ksa ksa ksa @@ -112999,8 +112697,6 @@ ksa xXP ksa ksa -xXP -ksa ksa xXP ksa @@ -113008,11 +112704,13 @@ ksa ksa xXP ksa +xXP +ksa ksa ksa vyg bFZ -psO +xHh lfw bLy rgN @@ -113053,121 +112751,121 @@ wxL lbf vOm hTS -xRd -mXK -kya -aZq -rTK -rTK -pvN +mkE +qrH +vzQ +vaW +muU +wqq +jvt lWn -nVN -lER -eYU -eav -aIk -kiw -wWf -kiw -exw -eav -jun -xgU -eJo -ufn -vjx -uUp -qyD -ufn -xyZ -jRZ -nxF -dCC -wTN +vho +nCY +mZR +liM +dzP +xUt +eaS +biu +bJU +kDm +ylx +nPf +hDP +srS +cCy +pvL +ett +wkX +nPL +gEg +vEH +eOZ +vEH +aoo +iza +qeH +tbb +kdK +qGi +oqK +nPt +alM +cNO +nbg +cNO +pZj +cNO +tgG +fpJ +cNO +pZj +tgG +dbl +vBP +woy +xcO +mhc +mhc +tpC nBE -xva -khD -mRQ -ndE -boX -mbP -khP -ozh -iyG -evv -jkd -evv -svX -vSj -kFf -ngK -oBQ -xVL -vtT -jnb -khD -fSM -rCW -wPP -mtc -tQa -tWN -uoo -uoo -uoo -fex -uoo -uoo -uoo -fex -uoo -uoo -uoo -fex -uoo -uoo -uoo -fex -uoo -uoo -uoo -fex -uoo -uoo -uoo -fex -uoo -uoo -uoo -fex -uoo -xEe -cpH -gOE -gOn -gOn -wXE -vpA -suH -dNx -lyV -dIp -suH -ghg -hdQ -nMq -fJK -yia -fJK -fJK -okm -euX -nRj -fJK -fJK -uoo -uoo -oIb +ksa +ksa +ksa +xXP +ksa +ksa +ksa +xXP +ksa +ksa +ksa +ksa +xXP +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +aVH +ksa +fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -113256,7 +112954,9 @@ xXP fKj fKj fKj -fKj +fHY +fHY +fHY fKj fKj cDv @@ -113265,11 +112965,9 @@ wtF wtF wtF xXP -xXP -xXP mZc pIH -psO +xHh gOA bLy bLy @@ -113293,7 +112991,7 @@ tcP tcP fzW auK -dJe +oPv dxk dxk dxk @@ -113310,121 +113008,121 @@ wxL lbf iuK hTS -iqR -mXK -sLK -aZq -aZq -tuk -aZq +kBL +qrH +iar +vaW +vaW +cgb +vaW lWn -fTg -btK -cuE -xMR -xcK -vTy -aTh -nvX -iIZ -eav -cDA -iGf -hVl -fZy -nHi -ocj -kNv -ufn -hsr -ssd -nxF -apA -cBH +rHq +nCY +pRd +kDm +kDm +kDm +kDm +kDm +kDm +kDm +gEg +gEg +gEg +gEg +gEg +gEg +gEg +gEg +gEg +gEg +aoo +aoo +aoo +aoo +mMX +rtJ +mFO +aoo +aoo +oqK +oqK +oqK +tgG +tgG +tgG +tgG +tgG +tgG +tgG +gFu +tgG +tgG +tpC +vBP +mhc +raC +kIt +nCP +aAL nBE -iPu -khD -nzW -bpr -boX -kSX -eny -mWp -hoJ -eWa -lNp -jXr -cvj -eNx -jBF -xwT -oNi -jui -jui -aNM -uer -oxn -iye -bZG -psE -qvp -tKm -vyP -vyP -vyP -tKm -vyP -vyP -vyP -tKm -vyP -vyP -vyP -tKm -vyP -vyP -vyP -tKm -vyP -vyP -vyP -tKm -vyP -vyP -vyP -tKm -vyP -vyP -vyP -tKm -vyP -oVm -qWf -qsF -mmf -fAL -pyA -iZr -hvE -sLg -ruu -lst -clr -vPn -wcj -nKb -fJK -jWK -gpz -fJK -gYS -mIh -teE -fJK -fJK -iDN -xpD -wxU +ksa +ksa +ksa +xXP +ksa +ksa +ksa +xXP +ksa +ksa +ksa +ksa +xXP +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +aVH +uoo +fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -113515,18 +113213,18 @@ eKK rXC jto uio +hSr evf +qgu cDv mNW rPn mNW wtF ksa -ksa -ksa vyg lyP -psO +xHh gOA lca cFG @@ -113567,121 +113265,121 @@ wxL lbf vOm hTS -ycB -mXK -xiA -daj -drJ -erV -fxy +vTz +qrH +hgf +uvm +wUr +fCb +mSO lWn -xRT -kqn -ykJ -ddL -fYx -pxg -pOp -dHz -vVQ -eav -pkf -iGf -qNM -fZy -fgI -vvV -buz -ufn -bde -vMp -nxF -tco -xHA -nBE -iPu -khD -pFU -mUF -uHM -nuY -fJd -ugi -rfz -hoJ -hoJ -hoJ +qch +nCY +mOZ +dEH +eiY +trn +vkW +dJT +nDw +aIN +aIN +qpi +aIN +aIN +aIN +aIN +uGd +ksL +bwD +ldS +xod +cYV +gaH +nIN +dUX +rtJ +bUc +sPW +gOr +xQC +kFe khD -wFI -sdE +eSE +aks +hvX nBE -gnj -aRH -rcc -fdC -khD -ueo -ref -agx -oIF -xsa -sbI -uoo -uoo -uoo -xeH -oLY -uoo -uoo -nfc -uoo -uoo -uoo -nfc -uoo -uoo -uoo -nfc -uoo -uoo -uoo -nfc -uoo -uoo -uoo -nfc -uoo -uoo -uoo -nfc -uoo -dCt -kPa -mlb -eWG -fIl -fIl -wDR -suH -gGG -nyI -alf -suH -pSt -jAO -qLG -fJK -gim -fJK -fJK -okm -oAW -ivj -fJK -fJK -uoo -uoo -oIb +nxW +raC +mhc +mhc +mhc +nBE +aAL +vBP +mhc +tpC +mhc +mhc +rUL +nBE +ksa +ksa +ksa +xXP +ksa +ksa +ksa +xXP +ksa +ksa +ksa +ksa +xXP +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +aVH +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -113769,21 +113467,21 @@ fKj fKj fKj nnE -cot +nnE rJp kMC gXk -cDv -sZV -mNW +uIQ sZV +cDv +rcf +oMK +poD wtF ksa -ksa -ksa vyg gSG -psO +xHh gOA gOA maL @@ -113824,75 +113522,77 @@ wxL lbf vOm hTS -tLN -dWN -ydu -jCM -uwq -rjn -mHp -wup -eTx -btK -cuE -xMR -bNL -xFY -xFY -enf -ieL -eav -sOp -iGf -tNo -fZy -ubz -vvV -buz -ufn -tHB -iDK -nxF -vgJ -thD -nBE -iPu -khD -tIp -eIP -boX -tzg -eny -mWp -hoJ -vtr -lNp -hBi -khD -nBE -nBE +pCb +qrH +qBz +bIt +vNq +jli +iSr +lWn +aio +nCY +rei +rHl +cVS +cVS +cVS +aIN +aIN +aIN +aIN +aIN +obm +npB +lhn +aIN +aIN +fow +oop +ldS +vkp +jfC +xjF +nIN +dUX +rtJ +vIM +xZR +fGP +fvT +oim +gJp +uMO +bwg +coz nBE -lYp +gWu +mhc +mhc +tpC +woy nBE +aAL +vBP +mhc +xcO +nCP +mhc +nep nBE -yfn -khD -rCH -qfv -oha -uJI -xhQ ksa ksa ksa +xXP ksa ksa -vRc ksa +xXP ksa ksa ksa ksa +xXP ksa ksa ksa @@ -113903,6 +113603,7 @@ ksa ksa ksa ksa +aVH ksa ksa ksa @@ -113911,34 +113612,31 @@ ksa ksa ksa ksa -uoo -wcH -wcH -rZq -gCF -pLS -vTc -wml -suH -nSF -gQK -uTH -suH -puZ -poU -aVR -aVR -bop -aVR -aVR -dnp -kuk -fJK -fJK -fJK ksa ksa +ksa +fdt +fdt +fdt +fdt +niB +wxU +niB +fdt +fdt fdt +fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -114027,20 +113725,20 @@ hOU hOU hOU hOU -ptZ -xxX -laR +hOU +hOU +hOU +kNy +hOU cDv +mNW oMK -oMK -oMK +mNW wtF ksa -ksa -ksa vyg bFZ -psO +xHh iMt jeu dNK @@ -114064,7 +113762,7 @@ xXP vdX fzW auK -dJe +mxF dxk flU sQL @@ -114081,70 +113779,80 @@ wxL lbf iaE lWn -hqV -rtY -roF -ppx -mxr -phW -jgZ +sOh +koo +tjW +qui +vEu +vkc +iym lWn -cKk -xOe -tfG -eav -nNK -rcu -fYh -rcu -tUG -eav -aDA -gmD -tNo -fZy -iqm -oKM -bYf +nYO +nCY +xZX +dEH +ycJ +aIN +cVS +jYT +vYE +xvE +xvE +obm +uNx +uNx +wjY +aIN +aIN +ixk +dBZ +ldS +xkj +pwh +neF +wrc +lpW +rtJ +bUc +sPW +tpz +vJw +uKm +khD +lYj +ktn +coz nBE +tpC +mhc +mhc +mhc +yeo nBE nBE +vBP nBE nBE nBE +fGu nBE -nSt -khD -rEJ -uDY -boX -lnw -ymb -ghH -exD -evv -jkd -evv -khD -lld -jOx -jOx -ins -gcH nBE cbj -khD -khD -xhQ -xhQ -xhQ -xhQ -uoo -uoo -uoo -uoo -uoo -vRc +cbj +cbj +nBE +xXP +xXP +xXP +xXP +ksa +ksa +ksa +ksa +xXP +ksa +ksa +ksa ksa ksa ksa @@ -114152,11 +113860,29 @@ ksa ksa ksa ksa +aVH +ksa ksa +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt ksa +uoo ksa +uoo +mgG +uoo ksa +uoo ksa +fdt ksa ksa ksa @@ -114168,34 +113894,6 @@ ksa ksa ksa ksa -uoo -uoo -byC -rZq -rZq -rZq -rZq -oyp -suH -suH -ffw -suH -suH -fJK -hnH -gGI -cGc -qEB -cGc -alJ -pRb -nXR -fJK -fJK -uoo -uoo -uoo -fdt ksa ksa ksa @@ -114286,14 +113984,14 @@ cDv cDv cDv cDv -rbO +cDv +oKb +cDv cDv owu -lOq +htV owu wtF -wtF -xXP xXP mZc mZc @@ -114319,8 +114017,8 @@ fgj fgj oIP oIP -fzW -auK +yjo +ofh ptd iaT iaT @@ -114339,75 +114037,76 @@ lbf nBE khD khD -khD rfY khD khD khD +lWn +lWn +lWn +aio +nCY +dQC +fpy +aIN +aIN +sXL +aIN +iNq +aIN +aIN +cpA +uNx +uNx +wjY +aIN +aIN +aIN +hPC +ldS +xWq +wpG +hqF +nIN +dUX +rtJ +tfZ +nIN +nIN +nIN +nIN khD -khD -nBE -qnZ -nBE -nBE -nBE -nBE -nBE -nBE -nBE -nBE -pGz -dCc -ptX -ufn -mFY -gwa -xTh -nBE -nxW -nxW -wyS -urn -kBn +kZo +pyP +noM +wkn +ewP +ewP +mpY +kIt xcO +nBE +yeo vBP -khD -khD -khD -khD -khD -khD -khD -khD -khD -khD -khD -khD -quP -czU -kIt -ins -lwL +tpC nBE -jJr -jOx +rUL +mhc +aAL +nBE +hbO +mhc +whU nBE -rms -lKe -xpD -xpD -xpD -xpD -xpD -nuA ksa -vRc ksa ksa +xXP ksa ksa ksa ksa +xXP ksa ksa ksa @@ -114418,41 +114117,40 @@ ksa ksa ksa ksa +aVH ksa ksa +uoo ksa ksa +uoo ksa ksa ksa ksa ksa +uoo ksa uoo ksa -pbE -iHT -dnV -hYY -uQg -rHa -kyY -pbE -fJK -fJK -fJK -fJK -nTp -fJK -fJK -fJK fJK fJK fJK ksa -ksa +uoo ksa fdt +fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -114544,24 +114242,24 @@ rIN ohk wtF xsC -tyA +mDP +mXY gKk +rcj hIe -bIc bii wtF ksa -ksa vyg uKy -psO +xHh uui +gOA puX bLy uPs wNx emX -emX apU lNO emX @@ -114578,7 +114276,7 @@ emX emX crV auK -dJe +mxF iaT vvu blQ @@ -114594,122 +114292,122 @@ bbO wxL mOH nBE -qmb -mhc +tpC vLk +tLM mhc +tpC nBE -rHt -grF -mhc -nBE -fZp -rHl -wID -nBE -cnU -eTg -rQv -aAL -nep -nBE -nBE -aJC -nBE -nBE -nBE -qFc -nBE +rMT +nOZ +lvg +bkW +nCY +dQC +fpy +aIN +aIN +iAv +xBa +jlr +maS +maS +wmb +uNx +uNx +wjY +aIN +aIN +cfU +iyC +ldS +xOa +gGe +llg +nIN +gvo +rtJ +bUc +sPW +tpz +ocN +gXP +khD +coz +kiM +coz nBE mhc mhc -vLk +cUp mhc mhc +nBE mhc vBP -kIt mhc -ydO mhc -grF -nBE mhc -vLk -grF -rHt -byX +mhc +tpC nBE mhc -qrH mhc -ins -syI -iuo -aAF -jOx -mst -rms -xpD -xpD -xpD -xpD -xpD -xpD -nuA -ksa -vRc -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +dbl +nBE +cbj +cbj +cbj +nBE +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +aVH uoo uoo -pbE -aBC -jht -dNX -usR -jBc -fsF -pbE -fJK -fJK -fJK -fJK -kJa +uoo +uoo +uoo +rYe +rYe +rYe +rYe +rYe +rYe +rYe +tOn +tOn fJK fJK fJK fJK fJK +tOn ksa ksa fdt fdt -fdt +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa ksa ksa ksa @@ -114791,7 +114489,7 @@ dYt vmu nBS dYt -dYt +jxm dYt vmu nBS @@ -114801,17 +114499,18 @@ dYt vmu wtF dwq -rph -bIc +bYD +dzj +dzj +dzj dzj -bIc hcu wtF ksa -ksa vyg gOA -psO +xHh +fJl fJl fJl fRp @@ -114822,7 +114521,6 @@ nVs nVs nVs nVs -nVs mZG nVs nVs @@ -114851,112 +114549,106 @@ mIl wxL fEG dHb -ins -ins -ins -ins -tzV -ins -ins -ins -arR -gNh -yly -rHl -mKC -onk -onk -onk +tLM +tLM +tLM +mhc +mhc +tvs +nOZ +nOZ +hCP +wID +nCY +dQC +fpy aIN -ins -lvg -ins -ins -ins -ins -ins -ins -ins -lvg -ins -ins -ins -ins -ins -ins -eFs -kJA -kJA -kJA -kJA -kJA -tzV -kJA -kJA -kJA -kJA -kJA -tzV -kJA -pKQ -pKQ -fHo +aIN +aRv +aIN +aIN +aIN +aIN +aIN +wmb +bXS +mDM +aIN +aIN +xaE +yjJ +ldS +nIN +nIN +nIN +nIN +xEZ +rtJ +vIM +wLd +fGP +fvT +hpM +bOP +iSD +dCs +gGs +nBE +cUL +mhc +hbb +ewP +ewP +dLZ +ewP +lxy +raC +xcO tpC +mhc +mhc nBE +mhc +kIt +tpC nBE +mhc +vfE +yjI cbj -nBE -tDa -tDa -tDa -tDa -dUm -dUm -xpD -nuA -ksa -vRc -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa ksa ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa ksa -uoo +aVH ksa -pbE -pbE -cfm -ycf -dhz -wHJ -pbE -pbE +qmg +rYe +rYe +rYe +rYe +oRG +tKW +xnX +hey +rYe +rYe fJK fJK fJK fJK -sDi +uwv fJK fJK fJK @@ -114977,6 +114669,12 @@ ksa ksa ksa ksa +ksa +ksa +ksa +ksa +ksa +ksa "} (165,1,1) = {" ksa @@ -115038,7 +114736,7 @@ cDv cDv cDv cDv -upi +fSG cDv cDv nBS @@ -115060,21 +114758,21 @@ wtF gpi wPA rph -xTL +lNG +bIc bIc iuF wtF ksa -ksa vyg gOA -psO -vcn +xHh +gOA gOA +xoG bLy xmm cOH -nJK oRg sMk sMk @@ -115087,7 +114785,7 @@ sMk sMk oRg nJK -nJK +nrI iMo oym ijM @@ -115106,117 +114804,113 @@ dKl nVA bOJ wxL -riQ +pUp nBE rHt -mhc -ydO -grF -nBE -mhc -mhc +tLM +rNF grF +bxE nBE -lPf -jVd -hpY +uqE +nOZ +lvg +ifr +vBv +ffI +dEH +aIN +pcw +tMe +ksl +vvb +aIN +aIN +fge +aIN +aIN +vvb +aIN +vjR +fek +mkP +ldS +bFJ +whA +qlC +nIN +qXC +hQX +bUc +sPW +gOr +oUD +kFe +khD +bfQ +vYF +qRN nBE -byX -nep -woy +dbl +dbl mhc -tpC -nBE -rHt -lRi -tpC -vLk -nep mhc tpC nBE -grF -mhc -mhc -grF -rHt -xcO -dbl -dbl tpC +ezR mhc -vLk +raC mhc -nBE -grF +woy mhc -tpC +tFb mhc -grF -nBE -jLa -dbl -grF -tnQ mhc -nBE -utT -nVa -say -nVa -nVa -nVa -nVa -mnl -dUm -dEL -nuA -uoo -vRc -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +mhc +utc +vfE +ucn +bmT +cbj ksa ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa ksa -uoo -uoo -uoo -pbE -pbE -pbE -pbE -pbE -pbE -pbE -tOn -tOn +aVH +aVH +hKj +lLH +vQo +uPx +tyq +lqY +wTA +imt +jLL +xXN +rYe +fJK +fJK +fJK +fJK +ohg fJK fJK fJK fJK fJK -tOn ksa ksa fdt @@ -115234,6 +114928,10 @@ ksa ksa ksa ksa +ksa +ksa +ksa +ksa "} (166,1,1) = {" ksa @@ -115315,24 +115013,24 @@ dBA kPJ wtF nNV -rph +bYD +bIc +bIc bIc -dzj bIc aMh wtF -ksa -ksa -vyg +xXP +mZc gOA -psO -jbM +xHh ybw -dWS -dWS -dWS -dWS -dWS +mZc +mZc +bLy +bLy +bLy +bLy wGw wGw wGw @@ -115366,37 +115064,48 @@ qkx cyB nBE nBE -onZ +tLM nBE nBE nBE nBE -onZ nBE nBE nBE nBE +qnZ nBE nBE nBE nBE nBE -onZ nBE nBE nBE -vrc nBE nBE nBE -mOv nBE nBE nBE -onZ nBE nBE nBE +khD +xWq +ocN +cOp +nIN +nOv +hQX +mFO +nIN +nIN +nIN +nIN +khD +khD +khD nBE nBE nBE @@ -115405,78 +115114,67 @@ nBE onZ nBE nBE +aAL +ezR +mhc nBE +kUm +bwJ +kUm nBE +tpC +xOY +aAL nBE -nBE -nBE -nBE -nBE -nBE -nBE -tnQ -rHt -nBE -qtQ -hTn -hTn -ffz -ffz -ffz -ffz -amZ -tDa -rWe -nuA -ksa -vRc -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +tpC +ehq +vXb +cbj ksa ksa ksa -uoo +xXP ksa ksa -uoo +xXP ksa ksa +xXP ksa ksa +xXP ksa -uoo ksa uoo ksa +hzo +rYe +rpI +rYe +ivq +vHv +oju +iRQ +nxr +ycA +rYe +fJK +fJK +fJK +fJK +hll +fJK +fJK +fJK fJK fJK fJK ksa -uoo ksa fdt -fdt +ksa +ksa +ksa ksa ksa ksa @@ -115546,7 +115244,7 @@ hOU cDv cDv dYt -dYt +vLI dYt wtF vUu @@ -115572,9 +115270,9 @@ kLj nax wtF rJM -rph -bIc -fFr +bYD +dzj +pCo doR sEO sEO @@ -115582,14 +115280,14 @@ sEO sEO bLy hYH -psO -qzh +xHh cpO -jxy -ffx +mZc pVu -tKX -dWS +lTB +sfu +fTi +bLy pYv uob xyQ @@ -115620,118 +115318,116 @@ dYe cve cNz qkx -cgP +lTH nBE vDK -cVY +tLM byX nBE cnU +laj mhc -sZi -tpC -mhc -nxW +gjV nBE -nxW -mhc +tpC tLM +nep nBE -fuc -mhc +aAL +tpC +nep mhc +kIt nBE nep -ins +mhc aAL nBE rUL -mhc +tpC nep +tpC +rUL +khD +xkj +pwh +neF +kZE +lpW +hQX +bUc +jRY +fRK +wlU +wwm +hmZ +jwG +khD +wau nBE -cnU +tpC +aAL +ctR mhc -byX -kLf -wfI +woy nBE -vsb nBE -qqi -nIN -aXg -fJv -tqd +dqu nBE -jwt -ftr -dEH nBE -cnX -mhc -mhc nBE -tnQ -tfN nBE -mjA -ffz -hTn -ffz -ksM -uBL -fkC -amZ -tDa -xpD -nuA -ksa -vRc -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +nBE +nBE +nBE +khD +khD +khD +khD +khD +khD +khD ksa ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt -fdt ksa uoo -ksa uoo -hKs +byC +rZq +rZq +rZq +rZq +aqh +suH +suH +ffw +suH +suH +fJK +oQW +fVR +kMY +bJM +kMY +bGn +wLQ +nXR +fJK +fJK uoo -ksa uoo -ksa fdt ksa ksa @@ -115748,6 +115444,8 @@ ksa ksa ksa ksa +ksa +ksa "} (168,1,1) = {" ksa @@ -115804,8 +115502,8 @@ cDv dYt dYt dYt -vLI -dIY +dYt +dYt vUu qpO bIc @@ -115840,13 +115538,13 @@ tsi bLy lnm kQj -aRz -vrG -jxy -qHp +uTN +mZc gdp -bUg -dWS +wEA +wEA +ogk +bLy dWS dWS dWS @@ -115863,7 +115561,7 @@ iLB jxy kWT grB -iLB +cLc dWS dWS dWS @@ -115877,84 +115575,117 @@ dWS dWS eWw qkx -waq +cgP nBE -mhc -mhc -sZi -tFb -mhc -mhc -sgJ -dsf -mhc -rHt -tFb -mhc -mhc -mhc -tFb -mhc -kIt +wuf +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM mhc tFb mhc -liM mhc -tFb woy -tpC -mhc -tFb -mhc mhc +raC +khD +xPz +mhP +xjF +nIN +dUX +hQX +vIM +dgS +gOp +gOp +lqF +dPK +gzI +khD +lBg +spb mhc +kIt mhc mhc +sEA nBE -nBE -nBE -vJw -dgS -kDm -lNF -dgS -vsB -czU -czU +eBs +ezR mhc -rrG -mhc -woy -bIt +tpC +cnU nBE -tnQ -lhd -esk -bRg -rsR -cCP -cuK -qGs -qGs -kzi -mxy -tDa -xpD -nuA +bxx +aXE +bxx +khD +qcT +bcw +sZC +jVd +qcT +rDD ksa -vRc ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa ksa +uoo +wcH +wcH +rZq +kWZ +mkt +iWk +fXb +suH +gtY +fmJ +oal +suH +yhv +tqy +wfA +wfA +acL +wfA +wfA +xTb +qzR +fJK +fJK +fJK ksa +fdt ksa ksa ksa @@ -115972,41 +115703,8 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -fdt -ksa -uoo -ksa -uoo -xpD -uoo -ksa -uoo -ksa -fdt -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -"} -(169,1,1) = {" +"} +(169,1,1) = {" ksa ksa ksa @@ -116063,7 +115761,7 @@ dYt wpO uAP nYl -tlI +cYM rEL cmn kRS @@ -116090,20 +115788,20 @@ qjq rYV hyd nJb -xkI +vhh sos aEg aEg -ghn +kNH mvc saI dQL -dQL -aGG +svc +qbm qbm wjU -kJI -jxy +ghk +mZc nNJ iLB xXC @@ -116129,124 +115827,124 @@ wiD wiD wiD wiD +goD wiD -szY cPj gAC nuS -xUY +waq nBE wSt dsf cnU nBE cnU +wjI mhc -mhc -qFP -mhc -rHt +raC nBE -uru -kpJ -urn +nep +evq +kIt nBE +tpC +mhc +raC +tpC aAL -dbl -dbl nBE -raC -ins +kIt +tLM nep nBE -mhc nep -raC -nBE -cnU +dDF mhc -byX -wfI -kLf -nBE -vsb -nBE -hpW -hQP +mhc +gjV +khD +veK +skI +gmy +nIN +lfj +rzW +iPZ +jRY +axo +hmZ pbf -hkj -kxp -nBE -aaX -czU -dEH +eTA +vzG +khD +pWo nBE -cnX +nep mhc +tpC mhc +oox nBE -ndM mhc -cbj -ivt -ffz -ffz -ffz -qGs -qGs -kzi -btg -tDa -xpD -nuA +ezR +kIt +mhc +nep +nBE +lox +pzL +ngS +khD +jkv +mRD +omZ +mRD +dio +lvd +det uoo -vRc -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +uoo +nxm +uoo +uoo +nxm +uoo +uoo +nxm +uoo +uoo +nxm +uoo +uoo +nxm +xEe +cpH +gOE +gOn +gOn +wXE +vpA +suH +dNx +lyV +dIp +suH +ghg +hdQ +nMq +fJK +yia +fJK +fJK +okm +euX +nRj +fJK +fJK +uoo +niB ksa ksa -fdt -fdt -fdt -fdt -oIb -wxU -oIb -fdt -fdt -fdt -fdt ksa ksa ksa @@ -116355,26 +116053,26 @@ bLy aRz aRz aRz -toi -jxy -nNJ +mZc +sBT +wEA mnA +beS +beS wic -cPj wic wic wic -cPj wic wic waF wic wic -cPj wic wic wic -cPj +wic +wic wiD eqJ iLB @@ -116394,7 +116092,6 @@ nte cem nBE nBE -onZ nBE nBE nBE @@ -116413,95 +116110,96 @@ nBE nBE nBE nBE -vrc nBE +tLM nBE nBE -onZ nBE nBE nBE onZ nBE +khD +khD +khD +khD +khD +khD +olc +khD +khD +khD +khD +khD +khD +khD +khD nBE nBE -nBE -nBE -nBE -nBE -nBE -nBE -nBE -nBE -nBE -nBE -nrJ -nBE -nBE -nBE -nBE -nBE -nBE -ndM +sEA mhc -tEm -wGg -cuK -xct -fUU -qGs -qGs -kzi -btg -tDa -xpD -nuA -ksa -vRc -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +nZd +cnc +cnc +rpC +cnc +lyU +aXg +aXg +aXg +sGF +kPo +kPo +qqd +aUr +uLI +iRe +kwk +iRe +jCY +kbE +jwt +vyP +vyP +jwt +vyP +vyP +jwt +vyP +vyP +jwt +vyP +vyP +jwt +vyP +vyP +jwt +oVm +qWf +qsF +mmf +fAL +pyA +iZr +hvE +sLg +ruu +lst +clr +vPn +wcj +nKb +fJK +jWK +gpz +fJK +gYS +mIh +teE +fJK +fJK +iDN +wxU ksa ksa ksa @@ -116574,7 +116272,7 @@ hOU cDv cDv dYt -dYt +dIY dYt wtF vUu @@ -116611,13 +116309,13 @@ sEO bLy aIr fZT -kpn bNi -jxy -xXC -ffx -oed -jxy +mZc +aXc +wEA +sfu +pME +mZc iLB sKY oed @@ -116639,119 +116337,126 @@ jxy tWR fiS bPd +pfy bPd -bPd -bPd +cRq jhJ lWJ bPd pmV lLd nte -lTH -nBE -rcp -hat -hat -bIk -nBE -uvm -yeg -sHP -lyR -kYU +xUY +qnE +wzA +dXi +hKH +ccp +rIx +eGD +gyn +vBE +icV +wzX +uQR bQY -kjD -dzR -jKu -jKu -jKu -jRY -oVA +heR +mEi +kyB +kyB +rqz +yhc nBE nep -ins +tLM +mhc +vYH rUL nBE -sZj -jOx +vYH +pxW +tpC +aAL nep nBE -bjf -nQN -vmh -nBE -vmh -kHg -bjf -nBE -bCg -nBE -qBz -nBE -fLO -nBE -oNF -vkc -lut +rUL +tpC +nxW +jOx +byX +iRY +ojw nBE dbl -rQv -rQv +grF +xTL +raC +byX nBE -ndM +woy +oox +jOx mhc -tEm -etn -ffz -ffz -ffz -iAU -lLG -gli -uNS -tDa -xpD -nuA -ksa -vRc -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +mhc +nBE +nep +vBP +mhc +mhc +tpC +nBE +lox +vpL +gLf +khD +bJw +mRD +iKJ +mRD +qha +tqd +ltw +uoo +uoo +qfn +uoo +uoo +jDj +uoo +uoo +jDj +uoo +uoo +jDj +uoo +uoo +jDj +dCt +kPa +mlb +eWG +fIl +fIl +wDR +suH +gGG +nyI +alf +suH +pSt +jAO +qLG +fJK +gim +fJK +fJK +okm +oAW +ivj +fJK +fJK +uoo +niB ksa ksa ksa @@ -116769,6 +116474,8 @@ ksa ksa ksa ksa +"} +(172,1,1) = {" ksa ksa ksa @@ -116776,8 +116483,6 @@ ksa ksa ksa ksa -"} -(172,1,1) = {" ksa ksa ksa @@ -116816,14 +116521,7 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -fEP +fEP ksa fHY fHY @@ -116859,29 +116557,29 @@ wtF alq gAj bIc -dzj +bIc +bIc bIc wrt wtF -ksa -ksa -jxy -jxy -jxy -jxy -jxy -jxy -jxy -jxy -jxy -jxy +xXP +mZc +mZc +mZc +mZc +mZc +mZc +mZc +mZc +mZc +mZc jxy ipF jxy jxy jxy jxy -lLh +aCx jxy jxy jxy @@ -116900,122 +116598,122 @@ bPd bPd iWw iWw -iWw -gWL +tBI +grO pmV lLd nte jCx -nBE -fAn -mDR -dgP -tpC -nBE -kdy -mtN -jvt -lpc -yfG +qnE +eqe +ccp +ccp +ccp +rIx +ccp +uso +vBE +hLs +iKN +jkZ bQY -kHh -vpL -azW -azW -azW -fep -chy +jRl +iOs +lZD +fzD +eyN +lhG nBE mhc -ins +tLM +kIt tpC -nBE raC -vLk -sZi -nBE -sAN -kJo -fbT nBE -qqC -ipp -sAN +raC +kIt +mhc +nta +pxW nBE -dPO +woy +mhc +mhc +jOx +mhc +kIt +tpC nBE -fdb +kIt +mhc +tpC +mhc +woy nBE -kkt +mhc +mhc +jOx +mhc +woy nBE -dbl -qrH -czU -dqt -czU -czU -czU -tbo -ndM +tpC +vBP mhc -tEm -etn -ffz -ffz -ffz -ffz -ffz -ffz -dYS -tDa -xpD -nuA -ksa -vRc -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +kIt +aAL +nBE +yda +vqo +yda +khD +qcT +kEl +tzs +urn +qcT +rDD ksa ksa ksa +jhf ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa ksa +uoo +wcH +wcH +rZq +gCF +pLS +vTc +wml +suH +nSF +gQK +uTH +suH +puZ +poU +aVR +aVR +bop +aVR +aVR +dnp +kuk +fJK +fJK +fJK ksa +fdt ksa ksa ksa @@ -117094,7 +116792,7 @@ cDv cDv cDv cDv -lyj +jhk cDv cDv nBS @@ -117116,12 +116814,12 @@ wtF rnm gAj ifN -qds +eTt +bIc rqP wgd wtF ksa -ksa jxy niU iLB @@ -117137,7 +116835,7 @@ iLB soc nnv kWT -iLB +nNJ umd ybe bAh @@ -117156,123 +116854,123 @@ gIG pVZ wIr ovt -wIr +xNb pVZ wIr pmV lLd nte lTH -nBE -cKS -iqM -biu -pzL -nBE -uFH -mtN -ovo -nhL +qnE +pzF +ccp +hKH +ccp +rIx +ccp +gyn +vBE nAc +rlt +haG bQY -gkM -vpL -chg -det -sAH -fep -lvR +pfS +iOs +shc +wej +eyN +smR nBE aAL -hbb +tLM mhc -tbo mhc -jOx -raC -nBE -imG +mhc +tFb mhc mhc -sxS mhc mhc -sxi -nBE mhc -kIt -aXg +tFb mhc -jDj +mhc +kIt +usg +cnc +cnc +cnc +rpC +cnc +cnc +cnc +cnc +cnc +rpC +cnc +cnc +tAK +kIt +raC nBE -rtJ -gmT -iSr nBE -cnU -mhc -aAL +vBP nBE -ndM -mhc -cbj -etn -ffz -ffz -ffz -ffz -aLO -uiS -hgw -dUm -xpD -nuA -uoo -xfv -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +nBE +nBE +nBE +nBE +nBE +nBE +khD +khD +khD +khD +khD +khD +khD ksa ksa ksa +jhf ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa ksa +uoo +uoo +byC +rZq +rZq +rZq +rZq +oyp +suH +suH +ffw +suH +suH +fJK +hnH +gGI +cGc +qEB +cGc +alJ +pRb +nXR +fJK +fJK +uoo +uoo +fdt ksa ksa ksa @@ -117361,24 +117059,24 @@ dYt vmu nBS dYt -dYt +jxm dYt vmu nBS dYt -gmo +ogl dYt vmu wtF rpP gAj -bIc dzj -bIc +dzj +dzj +dzj cZL wtF ksa -ksa xWh bUg iLB @@ -117386,7 +117084,7 @@ xXC jxy uZj ulm -ulm +fro fxu jxy crI @@ -117411,7 +117109,7 @@ ben oTd gIG iTo -qud +oQE pKO qud iTo @@ -117420,116 +117118,116 @@ lCw lLd ewB lTH -nBE -cnU -klr -nBE -nBE -nBE -vBE -oWu -vBE -vBE +baI +uOm +ccp +ccp +ccp +ccp +ccp +pMI vBE +cuZ +gTK +gvn bQY -kjD -cua -iUt -psF -dmm -xob -nCY +pIi +iOs +vOX +cBo +eyN +sGp nBE kIt -ins +tLM +tpC +nCP mhc nBE -sZi -ydO +bid nep -nBE -qqC mhc -fbT -nBE -sAN -nQN -fbT +pxW +kIt nBE -uKp -czU -czU -vkc -czU -tNd -czU -lNF +dDF +mhc +mhc +mhc +tpC +mhc mhc nBE +mhc +woy +mhc +mhc +tpC nBE -tOb -nBE -nBE -ecg -hpU -ukk -qvM -qdj -qdj -qdj -ffz -nKn +nep +xTL +oox +mhc +aAL nBE +dbl +vBP +mhc +mhc +mhc +mhc +kIt nBE +xbH +xbH +xbH nBE -xpD -nuA -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +miz +cnU +aAL +cbj ksa ksa ksa +jhf ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa +uoo ksa ksa +pbE +iHT +dnV +hYY +uQg +rHa +kyY +pbE +fJK +fJK +fJK +fJK +nTp +fJK +fJK +fJK +fJK +fJK +fJK ksa ksa +fdt ksa ksa ksa @@ -117609,7 +117307,7 @@ fKj fKj nhQ dmt -rGH +sZV cDv nHx rHD @@ -117627,27 +117325,27 @@ ltp rHD mhS wtF -gAj -gAj +lzt +aYt auF -auW +tlL pGP -bYD +auW +plI wtF ksa -ksa xWh iRy -gxx iLB -jet +iLB +gXK enc ulm ulm vMt gXK iLB -aOz +bcF iLB bTN iLB @@ -117676,117 +117374,117 @@ gIG lCw lLd ewB -gOb -nBE -nBE -nBE -nBE -sjy -fwT -ccp -upb +lTH +baI +hoa +oru +hKH ccp -fwT -ryl -bQY -shx -bQY -tvQ -eyN -tvQ +dcz +vYa +pqL +vBE +vCZ +tnv +obE bQY -shx +kVE +mmS +iPm +uGD +civ +ukI nBE mhc -ins +tLM +mhc +raC nep nBE raC -jOx -sZj +sAN +xTL +miz +sAN nBE -myj +rUL tpC -myj -nBE -sUx -ipp -myj +woy +mhc +byX +iRY +ojw nBE -hfh -tQl +nep +aAL tpC -vje -nTa +mhc +nep nBE -qWn -eiO -kjO nBE -mhc -woy -mhc nBE -ndM -fei nBE -vrW -dbS -kFu -cix -dbS -huH +gvX nBE -vsb nBE -xpD -nuA -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +dbl +vBP +tpC +xcO +nep +mhc +mhc +tFb +mhc +mhc +mhc +utc +mhc +mhc +mhc +cbj ksa ksa ksa +jhf ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP +xXP +uoo +uoo +oGl +pbE +aBC +jht +dNX +usR +jBc +fsF +pbE +fJK +fJK +fJK +fJK +kJa +fJK +fJK +fJK +fJK +fJK ksa ksa +fdt +fdt ksa ksa ksa @@ -117884,18 +117582,18 @@ cDv cDv cDv cDv -fVg +cDv +kVn +cDv cDv owu -cZM +knW owu wtF -wtF -xXP xXP xWh iLB -rAk +iLB iLB jxy vmC @@ -117910,11 +117608,11 @@ nnv nNJ iLB iLB -nNJ -ruh +iLB +aij jxy pHX -ucv +uSp bva rov ovM @@ -117927,52 +117625,49 @@ qDZ qDZ qra qDZ -efW gIG -gIG -lCw +aHS +cDe +pmV lLd xFr lTH qnE -kbE -gvb -ayi -sjy +isn +tEF ccp -iRe -upb -iRe ccp +dcz +eAu +qGp +vBE +vBE ryl -lAc -uVC -vNq -lAZ +vBE +bQY +bQY +bQY +xGV crt -lAZ -vNq -rOR +bQY +bQY nBE nBE -hCP +tLM nBE nBE nBE -twS nBE nBE nBE -rKX nBE nBE nBE -gJJ nBE nBE nBE nBE -vaW +adO nBE nBE nBE @@ -117980,69 +117675,72 @@ nBE nBE nBE nBE -pch -aVI -vRh +adO nBE -ndM -mhc nBE -hEy -gEh -nvr -uLE -urZ -rBa +cGe +nBE +nxW +lBg +vYy nBE +dbl +vBP +mhc +kIt +mhc +mhc +nep nBE +uyr +mhc +rsR nBE -xpD -nuA -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +xgI +mhc +hbO +cbj ksa ksa ksa +jhf ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa ksa +xXP ksa +uoo ksa ksa +pbE +pbE +cfm +ycf +dhz +wHJ +pbE +pbE +fJK +fJK +fJK +fJK +sDi +fJK +fJK +fJK +fJK ksa ksa +fdt +fdt ksa ksa ksa @@ -118139,20 +117837,20 @@ hOU hOU hOU hOU -shc -qss -rcf +hOU +hOU +hOU +brh +hOU cDv pyH eAg hsp wtF ksa -ksa -ksa jxy tzc -aQC +iLB bAh jxy nft @@ -118168,10 +117866,10 @@ niU tKX tKX uyw -ruh +aij jxy flJ -ucv +uSp xIH rhs bva @@ -118192,113 +117890,113 @@ lLd xFr lTH baI -psg -ayi -ayi -sjy +lEl +htN +hKH ccp -iRe -upb -iRe -ccp -ryl +dcz +ych +pqL lAc -omZ -lAZ -owN -wzb -vqc +jPq +efW +bbj +vZw +hZF +hhq +efW lAZ -rOR +gtM +hUA nBE -qva -pRD -xVi +aFJ +tLM +tpC +jsB +lZQ nBE -spb +rUL +raC +qMh +qMh +qMh +raC +aAL +nBE +qhp mhc -nep +tpC +vAP +hwB nBE -pCb +nep +cyt +nCP mhc -bcw -ppN -bcw -bcw -gxP +vLk nBE -ess -hPf -qcT -nDn -tzs nBE -nue -nue -nue nBE nBE nBE nBE nBE -ndM -mhc nBE -lKt -kwT -okW -qrN -vpe -mFR +vBP nBE -vsb nBE -xpD -nuA -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +nBE +fGu +nBE +nBE +jbY +mhc +pjs +nBE +cbj +cbj +cbj +nBE +xXP +xXP +xXP +ugt +mai +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +xXP +uoo +uoo +uoo +pbE +pbE +pbE +pbE +pbE +pbE +pbE +tOn +tOn +fJK +fJK +fJK +fJK +fJK +tOn ksa ksa +fdt +fdt ksa ksa ksa @@ -118395,25 +118093,25 @@ fKj fKj fKj nnE -cot +nnE rJp kMC -lzt +gXk +jGu +gvc cDv dgH wML pTE wtF ksa -ksa -ksa jxy jxy dBr jxy jxy jxy -ipF +sWa jxy jxy jxy @@ -118425,7 +118123,7 @@ jxy jxy jxy jxy -gSA +aij jxy sfC tJF @@ -118439,7 +118137,7 @@ knz oTd gIG xEj -wIr +xNb chW wIr xEj @@ -118449,88 +118147,78 @@ lLd xFr lTH baI -koo -ayi -ayi -ayi -hsT -ayi -uaC -ayi -nMn -ayi -aUr +uOm +oyG +ccp +ccp +ccp +oyG +ccp +xgl +lAZ +efW +lAZ +bhk +ksR +hyj +qub +wge +lAZ lAZ -nxm -gJO -deF -adc -qui -fiq -nBE -kWI -kxR -pND nBE -aAL -woy -sAY +tUl +tLM +mhc +kIt +nep nBE -aAL mhc -jOi -hdl -aPy +mhc +fwB +fwB +fwB mhc tpC nBE -wkM +wuf mhc -sOh +qhp +xTL +woy +nBE tpC mhc -nBE -hpY +woy mhc -oMB +tpC nBE cnU mhc -nxW -nBE -ndM -rHt -nBE -nBE -nBE -nBE -nBE -nBE -nBE +nep +mhc +tpC nBE +mhc +vBP +mhc +kIt +mhc +mhc +tpC nBE +nue +sAY +sFf nBE -xpD -nuA -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa ksa ksa ksa +xXP ksa ksa ksa ksa +jhf ksa ksa ksa @@ -118544,17 +118232,27 @@ ksa ksa ksa ksa +uoo ksa ksa +uoo ksa ksa ksa ksa ksa +uoo ksa +uoo ksa +fJK +fJK +fJK ksa +uoo ksa +fdt +fdt ksa ksa ksa @@ -118653,21 +118351,21 @@ ksa fKj bCt otG -qgu +ioq vqd -ilM +hSr +cot +qgu cDv jdJ kIn aky wtF ksa -ksa -ksa jxy -bqd -vjj -nta +oed +iLB +ybe jxy uZf iLB @@ -118698,102 +118396,86 @@ gIG iLG qud kqw -qud +oQE iLG qud pmV lLd xFr yaj -baI -vEu -ayi -uaC -uaC -uaC -uaC -uaC -uaC -uaC -uaC -vqo -jpg -jpg -fpY -uAL -dDp -jpg -jpg +qnE +khi +oyG +iom +rcp +rcp +rcp +rcp +tKe +efW +nOO +efW +gVG +flq +jCL +kMz +efW +nOO +efW iYH -kiM -kxR -kiM -hCN -kxR -taA -kxR -rng -cNN -rxk -xOy -xOy -xOy -bUS -cNN -fLJ -nhq -kiM -sWO -kiM -gHS -kXL -kxR +tLM +tLM +tLM +tLM +tLM taA -jli -fro -ins -ins -ins +tLM +tLM +tLM +hxe +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM +tLM iWu -ndM -ins -ins -ins -uyr -uyr -uyr -syI -ewE -iuo -fwB -mst -xpD -nuA -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +tLM +vYg +mhc +xcO +mhc +mhc +kIt +nBE +cbj +cbj +cbj +nBE +xXP +xXP +xXP +xXP ksa ksa ksa ksa +jhf ksa ksa ksa @@ -118807,10 +118489,26 @@ ksa ksa ksa ksa +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt +fdt ksa +uoo ksa +uoo +hKs +uoo ksa +uoo ksa +fdt ksa ksa ksa @@ -118888,189 +118586,189 @@ ksa ksa ksa ksa -fEP -fEP -fEP -fEP -fEP -fEP -fEP -fEP -fEP -fEP -fEP -fEP -fEP -fEP -fEP -fEP -fEP -fEP -xXP -fKj -fKj -fKj -fKj -fKj -fKj -cDv -wtF -wtF -wtF -wtF -xXP -xXP -xXP -jxy -cdE -ogd -smr -jxy -cye -jSC -bWq -jSC -jSC -sLP -jSC -jSC -jSC -iRq -iLB -gXK -fRx -ruh -wYc -ucv -ucv -qgx -sfC -sfC -sfC -sfC -sfC -knz -gIG -bPd -bPd -bPd -lIF -xFJ -xFJ -grO -pmV -wEs -xFr -sfj -baI -nLC -ayi -uaC -jwu -ccp -jwu -ccp -xgl -ccp -kSU -lAc -sLz -lAZ -xEM -ttr -wfg -lAZ -mSO -nBE -lQB -kxR -iNS -nBE -ess -sAY -kIt -nBE -mhc -lRi -rJz -juU -noM -bcw -nJc -nBE -ess -tpC -mhc -mhc -woy -nBE -jUC -hpY -hpY -nBE -mhc -uGk -mhc -nBE -owt -xcO -mhc -ins -mhc -xcO -hGa -xuN -oMB -nBE -jJr -nBE -xpD -nuA -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP +fEP +xXP +fKj +fKj +fKj +fHY +fHY +fHY +fKj +fKj +cDv +wtF +wtF +wtF +wtF +xXP +xWh +ybe +iLB +oed +jxy +cye +jSC +bWq +jSC +jSC +sLP +jSC +jSC +jSC +iRq +iLB +gXK +fRx +aij +wYc +ucv +ucv +qgx +sfC +sfC +sfC +sfC +sfC +xqN +gIG +bPd +bPd +bPd +lIF +xFJ +wgn +grO +pmV +wEs +xFr +sfj +qnE +eqe +ccp +rcp +ccp +ccp +ccp +ccp +xgl +lAZ +lAZ +gET +prz +aOO +ksR +xtT +lAZ +lAZ +lAZ +nBE +mhc +tLM +mhc +tpC +iFR +nBE +mhc +nCP +kIt +hxe +nCP +woy +mhc +nBE +mhc +mhc +qhp +bdx +mhc +nBE +nep +tpC +mhc +mhc +woy +nBE +aAL +woy +mhc +tpC +gjV +nBE +miz +vYg +mhc +hGa +mhc +mhc +nep +nBE +ksa +ksa +ksa +ksa +ksa +ksa +ksa +xXP +ksa +ksa +ksa +ksa +jhf +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +fdt +fdt +fdt +fdt +niB +wxU +niB +fdt +fdt +fdt +fdt +ksa +ksa +ksa ksa ksa ksa @@ -119167,8 +118865,6 @@ ksa xXP ksa ksa -xXP -ksa ksa xXP ksa @@ -119176,12 +118872,14 @@ ksa ksa xXP ksa +xXP +ksa ksa ksa jxy -doA -bqH -qIN +oed +iLB +ybe jxy fXd tpn @@ -119196,7 +118894,7 @@ exj vsU jxy nNJ -ruh +aij jxy aUh fMC @@ -119208,7 +118906,7 @@ cSx sms wSC qWj -bxE +bPd bPd bPd lIF @@ -119216,73 +118914,69 @@ bTT sbL bPd pmV -eie +lLd xFr lTH qnE -eQN -ayi -uaC -jwu -ccp -jwu +chJ ccp -xgl +rcp ccp -kSU +weB +jtl +weB lAc -oax -npz -bMe -tcH -vbi -vTz -qYN +nYe +sPz +skS +owK +lAZ +lAZ +owK +wsB +lIS +qRn nBE -pZa -kxR -naG +rTL +tLM +nea +dOs +cPr nBE sAN tpC +nep +hxe +nep sAN +vYH nBE -mhc -cNN -bcw -yaQ -mhc -pCb -nep +urM +wJA +qYD +sEA +dbl nBE -xbH -sAY -mhc -eLl -jzd +cnU +nCP +sEA +uqh +eQv nBE -aAL -mhc -grF nBE nBE xSv nBE nBE -owt nBE nBE vYg nBE nBE -jOx +mhc tpC xcO nBE -cbj -nBE -xpD -nuA ksa ksa ksa @@ -119290,10 +118984,13 @@ ksa ksa ksa ksa +xXP ksa ksa ksa ksa +jhf +ksa ksa ksa ksa @@ -119311,6 +119008,7 @@ ksa ksa ksa ksa +sQS ksa ksa ksa @@ -119453,7 +119151,7 @@ jxy jxy jxy jxy -osE +aij jxy jxy sfC @@ -119478,15 +119176,15 @@ xFr nBQ qnE qnE -vuz -uaC -ccp -ccp -ccp -ccp -bvm -ccp -twO +qwY +rcp +apr +qnE +qnE +gji +gji +gji +gji gji gji gji @@ -119497,7 +119195,7 @@ nBE nBE nBE nBE -wgn +tLM nBE nBE nBE @@ -119505,7 +119203,9 @@ nBE nBE nBE nBE -pmQ +rHG +nBE +nBE nBE nBE nBE @@ -119514,41 +119214,39 @@ nBE nBE nBE nBE -mRD nBE nBE nBE nBE -ulf nBE nBE iYW -rMV +tpC mhc -nBE -ruW +nep +woy nBE byX -ins +vYg byX nBE -jOx +mhc mhc hbt cbj ksa ksa ksa -ksa -ksa noh ksa ksa ksa +xXP ksa ksa ksa ksa +jhf ksa ksa ksa @@ -119696,21 +119394,21 @@ oed ybe jxy bAF -dcA daY +vQt daY daY jxy sKo tvo -vUf +lKO gOs iLB dUM jyf jxy iLB -ruh +aij vZd jxy bix @@ -119735,77 +119433,77 @@ xFr xYE ohV baI -ayi -uaC -xqe -ofJ -dRp -tIw -gji -rer +ccp +rcp +ccp +ccp +ccp gji +xYl +npc +qoW gji -jCY -aYa -iHk +pPF +jPy +bxN nBE dbl -mhc -byX +pQX +dbl nBE -grF -lRi +nep +tLM dbl nBE -hpY +fsH +fsH +fsH baP -hpY -mhc mFK -tbn +liQ pyW -xuN -mhc -dVZ -mhc -nBE -xpF -aRH -xWS +uUY gHc -pFJ -nBE -xbH -mhc -xbH +gHc +gHc +vfK +xpF +xCt +vpn +hui +vpn +vfK +iKZ +vfK +qle nBE dsf -nDw +dsf +woy mhc -frw -bdg -hBR -tAK -prY mhc tbo mhc +vYg +mhc +utc +mhc woy fCw cbj -xpD uoo -xXP -xXP +uoo xXP noh +xXP ksa ksa +xXP ksa ksa ksa ksa -ksa +jhf ksa ksa ksa @@ -119949,26 +119647,26 @@ fEP ksa xWh iLB -ruh -ruh -muy -mGu +aij +aij +kod +kod +kod +kod +kod +kod kod -iFK -kjC -tAr -muy -ruh -ruh -kPL -vfK -ruh -ruh -ruh aij -ruh -ruh -ruh +aij +aij +aij +aij +aij +aij +gSA +aij +aij +aij ezZ pgh pgh @@ -119989,80 +119687,80 @@ lCw lLd wdR xFr -wdR +qYz yaj baI -ayi -uaC -ccp ccp -ccp -ccp -lGt -vyZ -gUp +rcp +rcp +rcp +rcp +qXs +eHm +eHm +qaG gji -uir +wDe qaG -suE -nBE -dbl +qaG +uww +mhc mhc mhc tbo mhc -lRi -dbl -nBE -woy +tLM +tLM +tPw via -miz -usg -iGh -iZD -tZd -woy -mhc -mvh -mhc -nBE -mTR -wMo -wMo -wMo -wMo -nBE -xbH -mhc -iOG +via +via +via +via +liQ +liQ +liQ +liQ +liQ +exq +wsv +vUf +vUf +lrm +tlA +tlA +vfK +jrG +vfK +ntm nBE -mhc +woy mhc dsf +tpC +aAL nBE -mhc -nBE -mhc -ndM +kIt +vYg byX nBE -ydO +tpC mhc dCB cbj ksa ksa ksa -ksa -ksa noh ksa ksa ksa -ksa -ksa -ksa -ksa +xXP +xXP +xXP +xXP +xXP +gRN ksa ksa ksa @@ -120205,14 +119903,14 @@ ksa fEP xXP xWh -iRy -ruh -iLB +kWT +aij +xoa jxy vMC daY -nZa -gRa +kod +daY daY jxy wpZ @@ -120237,73 +119935,73 @@ pgh vKu lIF lIF -lIF -lIF -lIF +elS +wBm +jxh lIF lIF flM oOy wxL -xFr -qYz -fEJ +obc +kDc +dqX cJi -ayi -uaC -ayi -ayi -nMn -ccp -jJz -bQk -cdl +qzc +rcp +cKc +eAu +rjS gji -bxx -rhE -nmY +vAj +eHm +hml +gji +tUZ +hDT +sWv nBE -dbl +nep mhc -grF +byX nBE byX -lRi -grF +tLM +nep nBE fsH -lPf -nep -woy -lPf +via +trQ +cEq +tMY lnu -usg -nep -hpY -hpY -mhc -wsv -mhc -wMo -mBa -lrm -vpn +cEq +cEq +adC +via +fsH +vfK +mTR +vUf +lhs +lhs +lhs +vfK +iyf +ptZ +rfx nBE -sAY -mhc -mhc nBE nBE -xSv +uoq nBE nBE -kIt nBE nBE -pyZ +vBP nBE nBE -jwC +mhc nep xcO nBE @@ -120314,6 +120012,7 @@ ksa ksa ksa ksa +xXP ksa ksa ksa @@ -120326,6 +120025,7 @@ ksa ksa ksa ksa +sQS ksa ksa ksa @@ -120335,8 +120035,6 @@ ksa ksa ksa ksa -sQS -ksa ksa ksa ksa @@ -120463,17 +120161,17 @@ fEP ksa xWh iLB -ruh +aij bnz jxy jxy jxy -trQ +kod jxy jxy jxy jxy -ipF +hCN jxy jxy jxy @@ -120506,62 +120204,62 @@ jCA wdR cID qnE -yda -uaC -uaC -oSp -fCb +agn +ibg +fTh +nhh +ccp +vzs +qaG +bXW +sNK upb -kwG -krH -gSz -kOa -vOV -vOV -nsk -nBE -nBE -rot -nBE -nBE -nBE -wgn +sNK +sNK +eQs nBE nBE -nep -iGh -mhc +fGu nBE nBE -gNh nBE +tLM nBE -tZd -foq -hpY nBE -jOi -wMo +siB +via +ctM +bdg +sZj +xVV +bdg +sZj +oPK +via +bRk +vfK +gub +vUf mBa -tPw -plH -nBE -jbY -mhc -pjs +cNR +mGe +hNJ +gSz +cFF +wAm nBE dbl mhc -byX -nBE mhc +byX +rUL nBE -dbl -ndM +woy +vYg tpC nBE mhc -jOx +mhc oXS cbj ksa @@ -120571,7 +120269,7 @@ ksa ksa ksa ksa -ksa +xXP ksa ksa ksa @@ -120720,12 +120418,12 @@ ksa ksa jxy bAh -ruh +aij oed jxy eOJ ngl -cIJ +aij nub gOs jxy @@ -120751,72 +120449,72 @@ eUW fDG bPd bPd -bPd -bPd -bPd +bPp +gHu +wJe bPd bPd qFf tJS -gsh -obc -fFd -dcz +wdR +xFr +wdR +fEJ raN -svK -uaC -ayi -sLG -tOY ccp -ydz -dio -dBO -gji +ccp +chJ +ccp +ccp +qpy +bzD +poh qaG -abC -ejv +gji +mZs +hea +hIW nBE byX mhc dbl nBE -grF -lRi +nxW +tLM byX nBE -woy -hpY -mhc -nBE -hpY -gNh -hpY -nBE -aly -hpY -mhc -nBE -boP -oVL -mBa -tlA -vpn -nBE -nue -sAY -sFf +lyT +via +ctM +uGk +ghr +ghr +ghr +fRW +ubF +via +cJO +vfK +itK +wWx +ahy +krA +pFJ +vfK +lvc +xTW +drq nBE byX mhc +kIt mhc -frw mhc tbo mhc -ndM +vYg mhc -tbo +utc mhc mhc gqX @@ -120977,24 +120675,24 @@ ksa ksa jxy jxy -dyL +aij jxy jxy fXj -tvo -cIJ +iUQ +aij aOz -gxY +bbG jxy +nNJ iLB iLB -lKO jxy iLB +iJp uFo -iLB jxy -iLB +nNJ iLB iLB jxy @@ -121015,67 +120713,67 @@ bPd bPd lCw lLd -wdR +gsh xFr wdR yaj baI -ayi -ayi ccp -bIQ ccp ccp -dvO -cgb -wDg +ccp +ccp +sQW +qaG +afd +qaG gji -kBL -hKA -ukY +dOL +nVc +gSC nBE -grF +nep mhc dbl nBE dbl -lRi -mhc -xCt -nep -aly -mhc -tZd -tZd -dsV -hpY -tZd -mhc -hpY -mhc -khD -khD -khD -khD -khD -khD -nBE -nBE -nBE +tLM +xcO nBE +jIO +via +lnu +eCG +ghr +jUk +ghr +ogd +lnu +via +scQ +vfK +vfK +cQW +vfK +vfK +vfK +vfK +vfK +vfK +vfK nBE dbl mhc tpC -nBE +woy tpC nBE -mhc -ndM -kBn +nep +vYg +cnU nBE nep -jOx +mhc dCB cbj ksa @@ -121222,7 +120920,7 @@ oAN ksa uoo uoo -aVH +uoo uoo uoo uoo @@ -121234,18 +120932,18 @@ kjj kjj dWS uKb -ruh -bUg +aij +uyw jxy soc rWt -ruh +aij pHK -aOz +gxY jxy qtL iLB -iLB +nNJ jxy oed cYz @@ -121277,49 +120975,49 @@ xFr mCc hDJ baI -ayi -qha -wCD -iVj -raO -vft +ccp +wId +gLa +gWA +ccp gji -kEl -kqr +slz +nit +gYp gji -fii -lvd -sNK +cvm +vzx +rjp nBE byX mhc dbl nBE dbl -lRi -grF -nBE -mhc -aly -tZd -nBE -fsH -gNh -hpY +tLM +dbl nBE -lPf -usg -mhc -khD -fft -tKG -aOU -qxD -khD -nxW -mhc -cQj -grF +rPJ +via +iZD +bdg +ghr +ghr +ghr +sZj +oPK +via +gHc +vfK +jOi +vUf +jtE +qOp +jtE +tvk +jtE +mGe +nQC nBE nBE nBE @@ -121328,7 +121026,7 @@ nBE nBE nBE nBE -pyZ +apm nBE nBE nBE @@ -121491,7 +121189,7 @@ tNL fSX dWS xak -ruh +aij tvo jxy jxy @@ -121553,40 +121251,40 @@ rot nBE nBE nBE -wgn -nBE -nBE -tZd -lPf -lPf -nBE +tLM nBE -gNh nBE +myz +via +iZD +uGk +fRW +wtN +uGk +fRW +ubF +via +fdz +vfK +boP +lDQ +vjj +rAh +fuM +vfK +nKz +jtE +dlI nBE -pRe -mhc -mhc -khD -hpY -sZi -hpY -hpY -khD -dbl -mhc -grF +dzV mhc -nZd -dbl -nBE jRA dKQ nbm sMe -tpC -ndM -grF +mhc +vYg +nep cbj ksa ksa @@ -121747,8 +121445,8 @@ tfF jjD dOx amE -ruh -ruh +aij +aij qtL jxy pTI @@ -121757,9 +121455,9 @@ bYW yeV uAu jxy -bUg +uyw iLB -bUg +uyw jxy aMJ aMJ @@ -121795,63 +121493,63 @@ dDd eaE pQy nBE -mhc -lld -lld +nep +dDF +kIt +qMh +dbl nBE -nxW -mhc -grF -mhc -grF +nep +tpC +nep nBE mhc -mhc +lus tpC nBE dbl -lRi -nxW -nBE -tZd -usg -aly +tLM nep -iGh -hbb -dHd -mhc -gVo -woy -mhc -dxH -dsf -xVV -yjI -hpY -khD -wtN -wzz -sZi -mhc -mhc -mhc -aDe +nBE +fsH +via +trQ +uPZ +uPZ +lnu +cIJ +uPZ +trQ +via +gHc +vfK +itK +ntZ +boP +kvW +iFK +bfx +cwb +jtE +jPA +nBE +fkJ +fFT mhc rgY wQO wQO wQO eGI -mhc +aOU cbj xXP xXP xXP xXP -ksa -ksa -ksa +uoo +uoo +uoo fEP fEP ksa @@ -122005,7 +121703,7 @@ fSi rTm dWS gNB -bcF +iLB hsf jxy bxy @@ -122014,7 +121712,7 @@ usd nbF vxs jxy -lKO +nNJ iLB bAh jxy @@ -122034,11 +121732,11 @@ eUW lKY sVt gLh -gLh -gLh +uFl +uBT tsN -wfQ -dEK +lKY +faD bms bms bms @@ -122052,55 +121750,55 @@ lBq lBq fQS fcR -jHx -kJA -kJA -fkT -kJA -kJA -kJA -kJA +hpb +hpb +hpb +ueH +hpb +hpb +hpb +hpb wQO -fkT +hpb wQO wQO wQO -fkT +hpb wQO fRU -xcO +tLM +tPw +via +via +via +via +via +via +via +via +via +via +giO +dxH +ntZ +ntZ +mCl +uGO +gHK +bfx +xWS +jtE +kOl nBE tZd -fRW -woy -usg -hpY -obV -fsH -hpY -tto -via -mhc -khD -hpY -hpY -sZi tZd -khD -cQj -kIt -mhc -grF -sZi -mhc -nBE -dzV -ndM +gjV +vYg mhc -grF +nep mhc mhc -tvk +tpC cbj ksa ksa @@ -122263,7 +121961,7 @@ kjj dWS cEM iLB -qiM +nNJ jxy sfm lzT @@ -122271,7 +121969,7 @@ kDe kMR yeV jxy -bUg +uyw iLB ybe jxy @@ -122290,7 +121988,7 @@ gcx lsC lKY osP -nLl +tsN loR hqN cDP @@ -122302,7 +122000,7 @@ mbx mzR hkg grG -hkg +dqt cDF mbx mbx @@ -122310,14 +122008,14 @@ bms vdT nBE jwC +tpC +xcO +gvm mhc -jLa nBE dbl -dbl xcO -ins -mhc +dbl nBE dbl xcO @@ -122325,39 +122023,39 @@ dbl nBE tpC vBP -mhc +pxW nBE -miz -bgm -dHd -xuN +fsH +gHc +fsH +rGt iIF -gNh +via lpR -woy -hpY -itK -mhc -khD -bOg +bgm +fsH +fsH +gHc +vfK +aJJ +uFM cwb -qxD -qxD -khD -cJO -mhc -byX -xcO -grF -dbl +xWS +gHK +bfx +cwb +dLV +jsb nBE nBE -jkJ nBE nBE -nxW -pRd -wfI +vBP +nBE +nBE +hbO +mhc +mhc nBE ksa ksa @@ -122547,12 +122245,12 @@ gcx gcx lKY qBi -gLh -gLh -gLh -tsN -wfQ -dEK +nwj +edc +krY +dXF +lKY +hhJ bms oZb tTi @@ -122565,15 +122263,13 @@ tTi unj bms uzN -khD -khD -khD -khD -khD -khD -khD nBE -hCP +qiM +mhc +mhc +gvm +kIt +nBE nBE nBE nBE @@ -122581,7 +122277,9 @@ nBE nBE nBE nBE -jkJ +nBE +nBE +vBP nBE nBE nBE @@ -122595,12 +122293,6 @@ nBE nBE nBE nBE -khD -khD -khD -khD -khD -khD nBE nBE nBE @@ -122608,8 +122300,14 @@ nBE nBE nBE nBE +nBE +nBE +nBE +nBE +byX +byX nep -ndM +vYg xuN khD khD @@ -122813,60 +122511,60 @@ ioZ bms tTi tTi -rDj +iAo keg ahd kZN -eSQ +cXz tTi tTi bms hUS -kLr -hJb -oyG -ksl -oyG -hJb -khD -tpC -ins -tpC +nBE +kBn +doT +mhc +gvm +dDF +nBE +cGe nBE dbl -byX +lus +pxW +lus dbl nBE -mhc +nIw vBP -grF -nBE -grF -grF +nep nBE -hkR +jyp +acw +eHi +swz jVQ gNh -cUp -aSJ +hpY +gtq +dSU +lct +cKq nBE vJI +nep +nep +nBE +nep mhc -grF -mhc +kIt tpC -grF +nep nBE -grF +tpC mhc -grF -nBE -dbl -byX -dbl -nBE -aAL -ndM +kIt +vYg trh khD koC @@ -123032,9 +122730,9 @@ ksa fEP xXP xWh +nNJ iLB -iLB -iLB +eSr jxy xzw nbF @@ -123070,61 +122768,61 @@ pHL bms tTi tTi -rDj +onF nPz gRo kxM -eSQ +hoR tTi tTi bms xzd -kLr -fge -beQ -tGW -tGW -sXL -yjJ -czU -onk -czU -dqt -czU -czU -mhc -tbo +khD +khD +khD +khD +kWG +khD +khD +khD +khD +byX mhc +kIt +tpC +pxW +xEx +pxW eFs -kJA -fkT -kJA -kJA -qzx -wmi -cPV +hpb +gkj +gkj +gkj +gkj +gkj njN njN njN -qzx -wQO -wQO -wQO +njN +njN +njN +njN +gkj wQO wQO wQO -qzx -kJA +hpb +hpb wQO wQO -qzx +hpb wQO wQO wQO -qzx +hpb wQO eGI -ins +tLM sfI anP hOt @@ -123163,7 +122861,7 @@ muB xXP noh ksa -ksa +sQS ksa ksa ksa @@ -123290,7 +122988,7 @@ fEP ksa xWh bAh -eSr +iLB oed jxy rDA @@ -123305,7 +123003,7 @@ ybe jxy nNJ iLB -iLB +iJp iLB iLB jxy @@ -123327,60 +123025,60 @@ gvO bms tTi tTi -rDj +agL dCT mvr keg -eSQ +gNL tTi tTi bms -vdT -xMO +uUB +kLr uhG -qVX -iAo -qVX +oAT +fDB +mNz nhT +oAT +cCi khD -jwC -ins -nep -nBE dbl +tpC +pxW hur -lld -nBE -dbl -hbt tpC nBE -mhc -tpC +dbl +hur +fKd nBE +hkR +vIv +dgf rbH hpY -dSU -vzc +hpY +vIv dDn +lNZ +lPf +eHi nBE -grF +sFE tpC mhc -grF -mhc -mhc nBE -ueH +byX mhc -grF -nBE +nep mhc +cnU +nBE kIt mhc -nBE nRV -xrz +aSD oOS khD lLb @@ -123547,7 +123245,7 @@ ksa ksa jxy jxy -sWa +hCN jxy jxy jxy @@ -123558,7 +123256,7 @@ jxy jxy ldz iLB -bUg +uyw jxy iLB tum @@ -123582,35 +123280,35 @@ inB aSW dEK bms +ttD tTi -tTi -rDj -rGu -bXS -jPq +beU +pLK +dFq +sRp eSQ tTi -tTi +nMG bms -oWG -kNw -adB -hUA -qRn -qVX -mpQ +vdT +aed +lER +beQ +gBo +tGW +beQ +ppv +aSj khD nBE -reH nBE nBE +ftr nBE nBE nBE +ftr nBE -cbj -cbj -cbj nBE nBE nBE @@ -123633,11 +123331,11 @@ twS nBE nBE nBE -twS -nBE nBE +bzB +dbl tpC -xrz +aSD nep khD seP @@ -123813,7 +123511,7 @@ oed bAh bAh jxy -iLB +kJI iLB iLB qkw @@ -123839,43 +123537,43 @@ oMx mrv lcI bms -ttD -tTi -rDj -pLK -dFq -sRp -eSQ -tTi -nMG -mAB -vdT -xMO -uhG +mbx +mbx +gxh +iuy +tRD +pCX +oRx +mbx +mbx +bms +oWG +kNw +adB qVX -alP qVX +lry tyG -iLZ -wXG -jhf -cgs -rLe -rxR -wqd -mai -tNr -tNr -tNr -tNr -tNr +wiT +bio +kLr +rGu +rGu +rGu +rGu +rGu +eYv +rGu +rGu +rGu +rmR bOr bOr bOr nBE -jOx -fwB -jOx +cxf +bQm +oaX nBE bOr bOr @@ -123889,9 +123587,9 @@ dhq fec hSP nBE -byX -byX -byX +nBE +nBE +nBE nBE nBE aSD @@ -124098,34 +123796,34 @@ dEK mbx mbx mbx -gxh -lus -lus -lus -oRx mbx mbx +dfV mbx -cCi -kLr +mbx +mbx +mbx +mbx +vdT +aed rtd fZX gPM +dnK +uQh fZX -qMh -iLZ -lrF -sHG -sHG -sHG -tsv -fZD -mai -tNr -tNr -tNr -tNr -bOr +rMz +kLr +rGu +rGu +rGu +rGu +rGu +tBl +rGu +rGu +rGu +rmR bOr bOr bOr @@ -124146,16 +123844,16 @@ sea mhc uPg nBE -lTk byX +mhc byX nBE +cnU +aSD mhc -eDD -nep cbj ksa -ksa +ndy ksa ksa ksa @@ -124319,13 +124017,13 @@ ksa xWh ybe ybe -iLB +nNJ jxy -oxX +jJh iUf fVV cEn -lKO +nNJ jxy lKO tzc @@ -124351,38 +124049,38 @@ gXL cJN ttK xvI -qoa +aIZ csE tGK csE naK deW -dfV -wKE +deW +deW pNS csE tGK csE -qWu +dLL kLr -fDB -vvM +hmP +tkc mzn vvM -fDB -iLZ -cCy -cCy -fZD -jAA -fZD -gWE -mai -tNr -tNr -tNr -tNr -bOr +dMg +tkc +hmP +kLr +rGu +rGu +rGu +rGu +rGu +rmR +rGu +rGu +rGu +rGu bOr bOr bOr @@ -124401,27 +124099,27 @@ bOr nBE hKC xhY -xaD +khF nBE -byX -byX -byX -nBE -bfx -mrU -aJJ +tpC +mhc +mhc +utc +mhc +aSD +qmb cbj uoo +noh +uoo +uoo +uoo +uoo +uoo +uoo +uoo +uoo uoo -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa fEP fEP ksa @@ -124615,35 +124313,35 @@ svo lKY ncq aSC -iom +ncq lKY svo lKY svo lKY kLr +xMO kLr xMO +kLr xMO +kLr xMO kLr -iLZ -uBk -cCy -xgj -sYi -xgj -mai -xgj -tNr -tNr -tNr -tNr -tNr +eYv +rmR +rGu +rGu +rmR +rmR +rmR +rGu +rGu +rGu +bOr bOr bOr bOr -tNr tNr tNr tNr @@ -124660,16 +124358,16 @@ btm tzN xaD nBE -nBE -twS -nBE +byX +mhc +byX nBE uru -eDD -aAL +aSD +mhc cbj ksa -ksa +noh ksa ksa ksa @@ -124858,15 +124556,15 @@ ksa ksa ksa ksa -ksa +uoo ksa ksa uoo ksa ksa ksa -wfQ -cJW +lKY +jev wfQ baO lKY @@ -124874,24 +124572,24 @@ wfQ wfQ wfQ lKY -vQw -wfQ -cJW +jev wfQ -ksa +baO +lKY ksa ksa uoo ksa +uoo ksa -xgj -vCI -vCI -xgj -nIh -mai uoo +ksa uoo +ksa +tNr +tNr +tNr +tNr tNr tNr tNr @@ -124900,7 +124598,7 @@ tNr tNr bOr bOr -tNr +bOr tNr tNr tNr @@ -124914,12 +124612,12 @@ bOr bOr nBE pxx -adC +fec lZu nBE -iqS -sZi -byX +nBE +vej +nBE nBE nBE arU @@ -124968,7 +124666,7 @@ ksa ksa ksa ksa -sQS +ksa ksa ksa ksa @@ -125115,13 +124813,13 @@ ksa ksa ksa ksa -ksa +uoo fEP fEP fEP fEP fEP -ksa +uoo lKY dVT lKY @@ -125135,18 +124833,15 @@ hct lKY hct lKY -ksa -ksa +uoo fEP fEP fEP -ksa -xgj -mai -mai -xgj -nRE -xgj +fEP +fEP +fEP +fEP +uoo ksa ksa ksa @@ -125155,10 +124850,13 @@ tNr tNr tNr tNr -bOr tNr tNr tNr +bOr +bOr +tNr +tNr tNr tNr tNr @@ -125170,20 +124868,20 @@ bOr bOr bOr nBE +cbj +cbj +cbj nBE +iqS +lBg +byX nBE +lld +eDD +byX nBE -nBE -nBE -nBE -nBE -nBE -dDF -fPp -cnU -cbj ksa -ndy +ksa ksa ksa ksa @@ -125312,112 +125010,110 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -axN -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa -ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +axN +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa +ksa tNr tNr tNr +ksa +tNr +tNr +bOr tNr tNr -ksa -ksa tNr tNr tNr @@ -125427,24 +125123,26 @@ bOr bOr bOr bOr -bOr -bOr -bOr -bOr -bOr -bOr -bOr +tNr +tNr +tNr +tNr +tNr +nBE +nBE +nBE +nBE nBE hCz eDD -lld +coz cbj -uoo -noh -uoo -uoo -uoo -uoo +ksa +ksa +ksa +ndy +ksa +ksa ksa ksa ksa @@ -125618,6 +125316,7 @@ ksa ksa ksa ksa +nAS ksa ksa ksa @@ -125666,41 +125365,40 @@ ksa ksa ksa ksa -sQS -ksa -ksa -ksa -ksa -ksa -ksa ksa ksa +tNr +tNr +tNr ksa ksa ksa tNr tNr +tNr +tNr +tNr bOr bOr bOr -bOr -bOr -bOr -bOr +tNr +tNr +tNr +tNr bOr bOr bOr bOr nBE -bfQ -eDD -dbl +tod +fPp +coz cbj -ksa +uoo +uoo +uoo noh -ksa -ksa -ksa +uoo ksa ksa ksa @@ -125922,10 +125620,7 @@ ksa ksa ksa ksa -ksa -ksa -ksa -ksa +sQS ksa ksa ksa @@ -125942,22 +125637,24 @@ tNr tNr tNr bOr -bOr +tNr +tNr +tNr +tNr bOr bOr bOr bOr bOr nBE +hCz +mrU +coz cbj -cbj -cbj -nBE -ksa -ksa ksa ksa ksa +noh ksa ksa ksa @@ -125975,6 +125672,7 @@ ksa ksa ksa ksa +sQS ksa ksa ksa @@ -126193,9 +125891,8 @@ ksa ksa ksa ksa -ksa -ksa -ksa +tNr +tNr tNr tNr tNr @@ -126206,10 +125903,11 @@ bOr bOr bOr bOr -tNr -tNr -tNr -tNr +nBE +bfQ +eDD +qRN +nBE tNr ksa ksa @@ -126231,7 +125929,7 @@ ksa ksa ksa ksa -sQS +ksa ksa ksa ksa @@ -126448,24 +126146,25 @@ ksa ksa ksa ksa +sQS ksa ksa ksa ksa -ksa -ksa -ksa +tNr tNr tNr bOr bOr -tNr -tNr -tNr -tNr -tNr -tNr -tNr +bOr +bOr +bOr +bOr +nBE +nBE +nBE +nBE +nBE tNr tNr tNr @@ -126541,7 +126240,6 @@ ksa ksa ksa ksa -ksa "} (210,1,1) = {" ksa @@ -126711,19 +126409,20 @@ ksa ksa ksa ksa -ksa -ksa tNr tNr tNr tNr -ksa -ksa +bOr +bOr +bOr +bOr +bOr +bOr tNr tNr tNr tNr -ksa tNr tNr ksa @@ -126798,7 +126497,6 @@ ksa ksa ksa ksa -ksa "} (211,1,1) = {" ksa @@ -126970,18 +126668,18 @@ ksa ksa ksa ksa -ksa -ksa tNr tNr tNr -ksa -ksa -ksa -ksa -ksa -ksa -ksa +tNr +tNr +tNr +tNr +tNr +tNr +tNr +tNr +tNr ksa ksa ksa @@ -127227,17 +126925,17 @@ ksa ksa ksa ksa -sQS -ksa -tNr -ksa -ksa ksa ksa +tNr ksa +tNr ksa ksa +tNr ksa +tNr +tNr ksa ksa ksa @@ -127744,7 +127442,7 @@ ksa ksa ksa ksa -ksa +sQS ksa ksa ksa @@ -128190,7 +127888,7 @@ ksa ksa ksa ksa -nAS +ksa ksa ksa ksa @@ -132695,7 +132393,7 @@ ksa ksa ksa ksa -sQS +ksa ksa ksa ksa diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 1e9d98e76212..e9a1b63dc860 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -728,6 +728,15 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/service/kitchen/abandoned) +"ahS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/orange/half, +/obj/machinery/light/small/warm/directional/south, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "ahV" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/engine/co2, @@ -1589,17 +1598,6 @@ }, /turf/open/floor/iron, /area/station/security/execution/transfer) -"arE" = ( -/obj/structure/cable, -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) "arF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2569,13 +2567,14 @@ /obj/machinery/door/airlock/medical/glass{ name = "Medbay Treatment Center" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/turf_decal/stripes/line, /obj/structure/disposalpipe/segment, /obj/effect/mapping_helpers/airlock/unres, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron, /area/station/medical/treatment_center) "aCo" = ( @@ -3015,7 +3014,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "aHC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/status_display/evac/directional/east, @@ -3771,7 +3770,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "aPO" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /obj/effect/turf_decal/tile/yellow{ @@ -3888,7 +3887,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "aRZ" = ( /obj/structure/dresser, /obj/item/radio/intercom/directional/east, @@ -4017,6 +4016,15 @@ /obj/effect/spawner/random/trash/moisture_trap, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"aUw" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/smes, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) "aUG" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/disposalpipe/segment{ @@ -4040,6 +4048,13 @@ }, /turf/open/space/basic, /area/space/nearstation) +"aVc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/landmark/start/prisoner, +/turf/open/floor/carpet/donk, +/area/station/security/prison/toilet) "aVo" = ( /obj/machinery/computer/security/hos{ dir = 1 @@ -4642,6 +4657,7 @@ /obj/effect/turf_decal/tile/yellow/fourcorners, /obj/effect/landmark/blobstart, /obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, /turf/open/floor/iron, /area/station/maintenance/port) "bcR" = ( @@ -5464,7 +5480,7 @@ }, /obj/machinery/airalarm/directional/west, /turf/open/floor/carpet/royalblack, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "bmG" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -5550,6 +5566,7 @@ }, /obj/effect/landmark/blobstart, /obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, /turf/open/floor/plating, /area/station/service/theater/abandoned) "bnR" = ( @@ -6128,7 +6145,7 @@ }, /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "buK" = ( /obj/structure/table/wood/fancy, /turf/open/floor/iron/grimy, @@ -6609,7 +6626,7 @@ }, /obj/machinery/newscaster/directional/west, /turf/open/floor/carpet/donk, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "bBz" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -7323,6 +7340,15 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"bIh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/stone, +/area/station/smithing) "bIk" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -9090,7 +9116,7 @@ }, /obj/machinery/newscaster/directional/west, /turf/open/floor/carpet/black, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "ccj" = ( /obj/structure/bodycontainer/morgue, /obj/effect/turf_decal/trimline/neutral/warning{ @@ -9273,7 +9299,7 @@ dir = 8 }, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "ceV" = ( /obj/structure/sign/warning/radiation, /turf/closed/wall, @@ -10271,6 +10297,16 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/medical/pathology) +"cqh" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/window/reinforced/spawner/directional/east{ + pixel_x = 3 + }, +/obj/structure/rack/gunrack, +/obj/effect/spawner/armory_spawn/shotguns, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "cqj" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/west, @@ -11800,12 +11836,6 @@ }, /turf/open/floor/iron/grimy, /area/station/maintenance/port/fore) -"cKr" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/wood/fancy, -/obj/item/storage/book/bible, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) "cKE" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -12637,31 +12667,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) -"cVj" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/vest{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/suit/armor/vest, -/obj/item/clothing/suit/armor/vest{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/head/helmet/sec{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/sec, -/obj/item/clothing/head/helmet/sec{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "cVl" = ( /obj/machinery/newscaster/directional/west, /obj/machinery/light/directional/west, @@ -13159,6 +13164,14 @@ /obj/structure/table/reinforced/rglass, /turf/open/floor/iron, /area/station/medical/treatment_center) +"dcD" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/bot, +/obj/structure/rack/gunrack, +/obj/effect/spawner/armory_spawn/mod_lasers_small, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "dcG" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/landmark/start/depsec/science, @@ -13617,7 +13630,7 @@ dir = 1 }, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "diL" = ( /turf/closed/wall/r_wall, /area/station/command/bridge) @@ -13813,12 +13826,6 @@ /obj/machinery/duct, /turf/open/floor/iron/large, /area/station/hallway/secondary/exit/departure_lounge) -"dkM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "dla" = ( /obj/effect/decal/cleanable/dirt, /obj/item/shard, @@ -14876,6 +14883,7 @@ /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom/directional/east, /obj/effect/mapping_helpers/burnt_floor, +/obj/effect/landmark/start/gary/uncommon, /turf/open/floor/plating, /area/station/commons/toilet/restrooms) "dAc" = ( @@ -15632,7 +15640,7 @@ }, /obj/machinery/airalarm/directional/west, /turf/open/floor/carpet/donk, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "dJS" = ( /obj/item/storage/toolbox/electrical, /obj/effect/decal/cleanable/dirt, @@ -15973,7 +15981,7 @@ }, /obj/machinery/airalarm/directional/west, /turf/open/floor/carpet/royalblue, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "dNM" = ( /obj/effect/decal/cleanable/blood/old, /obj/machinery/airalarm/directional/west, @@ -16309,6 +16317,7 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /obj/effect/landmark/event_spawn, /obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, /turf/open/floor/plating, /area/station/science/research/abandoned) "dSm" = ( @@ -16773,7 +16782,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/wood/parquet, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "dYj" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos/hfr_room) @@ -17612,6 +17621,7 @@ /obj/effect/landmark/event_spawn, /obj/effect/landmark/generic_maintenance_landmark, /obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary/uncommon, /turf/open/floor/wood, /area/station/security/detectives_office/private_investigators_office) "eiB" = ( @@ -18023,6 +18033,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/hangover, +/obj/effect/landmark/start/gary/uncommon, /turf/open/floor/wood, /area/station/commons/dorms) "eoy" = ( @@ -18282,9 +18293,38 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/service/bar) +"eqR" = ( +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/east{ + pixel_x = 3 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/rack, +/obj/item/clothing/suit/hooded/ablative, +/obj/item/gun/energy/temperature/security, +/obj/item/gun/energy/ionrifle, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "eqU" = ( /turf/open/space, /area/space) +"erf" = ( +/obj/effect/turf_decal/siding/dark_blue, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/left/directional/east, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "erm" = ( /obj/structure/reagent_dispensers/plumbed{ dir = 4; @@ -19060,7 +19100,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "eAO" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/purple/filled/warning{ @@ -19368,6 +19408,7 @@ }, /obj/effect/landmark/event_spawn, /obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, /turf/open/floor/iron, /area/station/maintenance/port) "eEH" = ( @@ -19817,7 +19858,7 @@ name = "Cryogenics" }, /turf/open/floor/iron/dark, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "eKe" = ( /turf/open/floor/iron/white, /area/station/medical/chemistry) @@ -19854,6 +19895,19 @@ }, /turf/open/floor/iron, /area/station/science/research/abandoned) +"eKF" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/orange/anticorner, +/obj/structure/table/reinforced, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = -5 + }, +/obj/item/toy/crayon/orange{ + pixel_x = 8 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "eKL" = ( /obj/structure/table/reinforced, /obj/machinery/button/door{ @@ -20934,17 +20988,6 @@ /obj/item/storage/toolbox/mechanical, /turf/open/floor/iron, /area/station/science/ordnance/office) -"eXD" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Solar - Aft Port"; - name = "solar camera" - }, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) "eXJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21791,7 +21834,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "fgj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -21990,12 +22033,23 @@ /obj/effect/spawner/random/trash/garbage, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary/uncommon, /turf/open/floor/iron, /area/station/maintenance/department/crew_quarters/bar) "fjf" = ( /obj/structure/lattice/catwalk, /turf/open/space, /area/station/solars/starboard/fore) +"fjl" = ( +/obj/machinery/door/airlock/security{ + name = "Isolation Cell" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/prison/safe) "fju" = ( /obj/structure/flora/bush/flowers_br/style_random, /obj/structure/flora/bush/sparsegrass/style_random, @@ -22074,6 +22128,7 @@ "fkl" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/glass, +/obj/effect/landmark/start/gary, /turf/open/floor/plating, /area/station/maintenance/fore) "fkm" = ( @@ -24970,12 +25025,13 @@ }, /obj/machinery/airalarm/directional/west, /turf/open/floor/carpet/black, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "fUQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/chair_maintenance, +/obj/effect/landmark/start/gary, /turf/open/floor/wood, /area/station/maintenance/port/fore) "fUU" = ( @@ -27527,7 +27583,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "gzz" = ( /obj/machinery/modular_computer/preset/civilian{ dir = 8 @@ -27559,25 +27615,6 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) -"gzP" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/e_gun, -/obj/item/gun/energy/e_gun{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot, -/obj/structure/window/reinforced/spawner/directional/east{ - pixel_x = 3 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "gzV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, @@ -27963,21 +28000,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"gED" = ( -/obj/effect/turf_decal/siding/dark_blue, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 1 - }, -/obj/machinery/door/window/brigdoor/left/directional/east, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "gEF" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -28854,6 +28876,7 @@ /area/station/maintenance/department/science/xenobiology) "gPt" = ( /obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary/uncommon, /turf/open/floor/plating, /area/station/commons/toilet/locker) "gPv" = ( @@ -28932,6 +28955,33 @@ }, /turf/open/floor/iron, /area/station/maintenance/central) +"gQt" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/bed{ + pixel_y = 2; + pixel_x = 2 + }, +/obj/effect/turf_decal/tile/orange/anticorner{ + dir = 4 + }, +/obj/item/bedsheet/orange{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/machinery/flasher/directional/east{ + id = "IsolationFlash" + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = 24; + pixel_x = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/camera/directional/east{ + c_tag = "Prison Isolation Cell"; + network = list("ss13","prison","isolation") + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "gQz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -30127,7 +30177,7 @@ /obj/structure/cable, /obj/effect/mapping_helpers/apc/cell_10k, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "hgi" = ( /obj/structure/closet/l3closet/scientist, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -31176,6 +31226,13 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/maintenance/solars/port/aft) +"htx" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/bot, +/obj/structure/rack/gunrack, +/obj/effect/spawner/armory_spawn/mod_lasers_big, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "htC" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, @@ -31298,6 +31355,7 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/mapping_helpers/burnt_floor, +/obj/effect/landmark/start/gary, /turf/open/floor/iron, /area/station/maintenance/department/electrical) "huX" = ( @@ -31816,7 +31874,7 @@ dir = 4 }, /turf/open/floor/carpet/donk, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "hBZ" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -32249,7 +32307,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "hHW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/machinery/airalarm/directional/south, @@ -32524,7 +32582,7 @@ "hLY" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "hMd" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -33437,7 +33495,12 @@ /area/station/maintenance/department/science) "hXi" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/kirbyplants/random, +/obj/machinery/computer/security/telescreen/interrogation{ + name = "isolation room monitor"; + network = list("isolation"); + pixel_x = -27; + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "hXm" = ( @@ -33501,6 +33564,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/cargo/warehouse) +"hXG" = ( +/obj/structure/lattice/catwalk, +/obj/structure/marker_beacon/lime, +/turf/open/space, +/area/space/nearstation) "hXO" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -33629,6 +33697,7 @@ /obj/effect/landmark/blobstart, /obj/effect/landmark/generic_maintenance_landmark, /obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, /turf/open/floor/iron/dark, /area/station/service/abandoned_gambling_den/gaming) "hZl" = ( @@ -34305,19 +34374,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) -"ifg" = ( -/obj/machinery/door/airlock/corporate{ - name = "Blueshield's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/effect/turf_decal/siding/dark_blue/end{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "ifi" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/virology/glass{ @@ -34549,6 +34605,7 @@ "iiK" = ( /obj/structure/disposalpipe/segment, /obj/effect/landmark/start/hangover, +/obj/effect/landmark/start/gary/rare, /turf/open/floor/iron/grimy, /area/station/service/library/lounge) "iiP" = ( @@ -34662,6 +34719,16 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/engineering/supermatter/room) +"ikv" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/power/terminal{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) "ikx" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -35282,7 +35349,6 @@ /area/station/hallway/primary/central/fore) "irD" = ( /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -35292,6 +35358,8 @@ /obj/machinery/door/airlock/medical/glass{ name = "Medbay Treatment Center" }, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron, /area/station/medical/treatment_center) "irJ" = ( @@ -38552,11 +38620,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"jgw" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space) "jgI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -38959,16 +39022,6 @@ /obj/structure/chair/stool/bar/directional/west, /turf/open/floor/iron/cafeteria, /area/station/service/cafeteria) -"jlb" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/landmark/start/prisoner, -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/turf/open/floor/carpet/donk, -/area/station/security/prison/safe) "jll" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/bot, @@ -39143,7 +39196,7 @@ dir = 4 }, /turf/open/floor/wood/parquet, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "jnd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, @@ -39744,7 +39797,7 @@ "jvk" = ( /obj/structure/sign/warning/rad_shelter/directional/west, /turf/closed/wall, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "jvm" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/west, @@ -40302,6 +40355,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"jBq" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/effect/spawner/random/armory/riot_armor, +/obj/effect/spawner/random/armory/riot_shield, +/obj/effect/spawner/random/armory/riot_helmet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "jBs" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -42036,6 +42099,9 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/sandy_dirt, /area/station/service/hydroponics) +"jVj" = ( +/turf/closed/wall/r_wall, +/area/station/security/prison/toilet) "jVx" = ( /obj/machinery/computer/crew{ dir = 1 @@ -42184,7 +42250,7 @@ "jXj" = ( /obj/structure/chair/comfy/black, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "jXk" = ( /obj/machinery/light/directional/south, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -42738,15 +42804,6 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/engineering) -"kde" = ( -/obj/machinery/power/smes, -/obj/machinery/light/small/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) "kdg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/generic, @@ -43021,7 +43078,7 @@ }, /obj/machinery/camera/directional/north, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "kgf" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43979,6 +44036,7 @@ /obj/effect/landmark/generic_maintenance_landmark, /obj/effect/landmark/blobstart, /obj/machinery/duct, +/obj/effect/landmark/start/gary, /turf/open/floor/plating, /area/station/medical/abandoned) "ksy" = ( @@ -44048,6 +44106,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/landmark/event_spawn, /obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) "ktV" = ( @@ -45133,7 +45192,7 @@ }, /obj/effect/landmark/start/prisoner, /turf/open/floor/carpet/royalblue, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "kHu" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -45149,6 +45208,18 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"kHK" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Solar - Aft Port"; + name = "solar camera" + }, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) "kHV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/shower/directional/east{ @@ -45561,24 +45632,6 @@ /obj/effect/landmark/navigate_destination/delta/pioffice, /turf/open/floor/iron, /area/station/security/detectives_office/private_investigators_office) -"kNk" = ( -/obj/structure/rack, -/obj/item/gun/energy/laser{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/laser, -/obj/item/gun/energy/laser{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/window/reinforced/spawner/directional/east{ - pixel_x = 3 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "kNw" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/delivery, @@ -45727,6 +45780,12 @@ }, /turf/open/floor/iron/white, /area/station/science/lobby) +"kPf" = ( +/obj/item/storage/secure/safe/directional/east, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/dish_drive/bullet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "kPu" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/navbeacon{ @@ -47155,7 +47214,7 @@ }, /obj/machinery/newscaster/directional/west, /turf/open/floor/carpet/stellar, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "lgN" = ( /obj/machinery/door/window/brigdoor/left/directional/west{ name = "Captain's Bedroom"; @@ -48178,7 +48237,6 @@ id_tag = "side_door_bolt"; name = "Medbay Side Entrance" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -48189,6 +48247,8 @@ dir = 8 }, /obj/machinery/duct, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron, /area/station/medical/cryo) "ltV" = ( @@ -48718,6 +48778,9 @@ /obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/iron/dark/herringbone, /area/station/security/prison) +"lAS" = ( +/turf/open/space, +/area/station/cargo/mining/asteroid_magnet) "lAV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, @@ -48826,6 +48889,11 @@ /obj/machinery/computer/diseasesplicer, /turf/open/floor/iron, /area/station/medical/pathology) +"lBL" = ( +/obj/structure/lattice/catwalk, +/obj/structure/marker_beacon/lime, +/turf/open/space/basic, +/area/space/nearstation) "lBR" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall/r_wall, @@ -49218,7 +49286,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/parquet, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "lGq" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/red{ @@ -49270,6 +49338,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"lGL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "lGQ" = ( /obj/effect/spawner/random/structure/crate_loot, /obj/effect/turf_decal/bot, @@ -49419,6 +49494,7 @@ /obj/effect/landmark/generic_maintenance_landmark, /obj/effect/landmark/event_spawn, /obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, /turf/open/floor/plating, /area/station/maintenance/department/electrical) "lII" = ( @@ -49947,6 +50023,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/checkpoint/medical/medsci) +"lOn" = ( +/obj/effect/turf_decal/tile/orange/half{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "lOw" = ( /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2{ dir = 4 @@ -49973,7 +50055,7 @@ }, /obj/effect/landmark/start/prisoner, /turf/open/floor/carpet/stellar, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "lOW" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -50063,19 +50145,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"lPG" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/effect/turf_decal/siding/dark_blue/end, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "lPH" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -50332,7 +50401,7 @@ }, /obj/machinery/light/directional/south, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "lRR" = ( /obj/machinery/light/neon_lining{ dir = 1 @@ -50400,7 +50469,7 @@ }, /obj/effect/landmark/start/prisoner, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "lTg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red{ @@ -50444,7 +50513,7 @@ /area/station/security/range) "lTv" = ( /turf/closed/wall, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "lTx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, @@ -51732,39 +51801,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/space/basic, /area/space/nearstation) -"mmx" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/suit/armor/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/head/helmet/toggleable/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/toggleable/riot, -/obj/item/clothing/head/helmet/toggleable/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/shield/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/shield/riot, -/obj/item/shield/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "mmy" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/loafer, @@ -51893,28 +51929,19 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos/pumproom) -"mnT" = ( -/obj/structure/rack, -/obj/item/gun/energy/disabler{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/disabler, -/obj/item/gun/energy/disabler{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/window/reinforced/spawner/directional/east{ - pixel_x = 3 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "mnW" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/security/office) +"mog" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "mor" = ( /obj/structure/table/reinforced, /obj/structure/reagent_dispensers/wall/peppertank/directional/west, @@ -52268,6 +52295,7 @@ /obj/effect/landmark/event_spawn, /obj/structure/chair/stool/directional/west, /obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, /turf/open/floor/plating, /area/station/maintenance/port/fore) "msJ" = ( @@ -53759,7 +53787,7 @@ "mJo" = ( /obj/structure/table/wood, /turf/open/floor/wood/parquet, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "mJp" = ( /obj/effect/turf_decal/trimline/hot_pink/filled/corner{ dir = 1 @@ -54258,15 +54286,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) -"mPm" = ( -/obj/machinery/light/directional/north, -/obj/machinery/asteroid_magnet{ - center_y = 61; - center_x = 105; - area_size = 3 - }, -/turf/open/floor/iron/dark, -/area/station/science/explab) "mPo" = ( /obj/structure/table/wood, /obj/item/food/grown/poppy/lily, @@ -54305,7 +54324,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "mPV" = ( /obj/structure/cable, /obj/machinery/power/smes, @@ -54567,7 +54586,6 @@ /area/station/medical/surgery/theatre) "mSZ" = ( /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -54580,6 +54598,8 @@ /obj/machinery/door/airlock/medical/glass{ name = "Medbay Treatment Center" }, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron, /area/station/medical/treatment_center) "mTc" = ( @@ -54688,6 +54708,7 @@ /area/station/science/xenobiology) "mVi" = ( /obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, /turf/open/floor/iron/grimy, /area/station/service/abandoned_gambling_den) "mVo" = ( @@ -54909,7 +54930,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "mYk" = ( /obj/effect/turf_decal/loading_area{ dir = 8 @@ -55644,7 +55665,7 @@ }, /obj/effect/landmark/start/prisoner, /turf/open/floor/carpet/black, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "niE" = ( /obj/machinery/holopad, /obj/effect/turf_decal/tile/neutral/full, @@ -56049,16 +56070,6 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat_interior) -"nmT" = ( -/obj/structure/rack, -/obj/item/gun/energy/ionrifle, -/obj/item/clothing/suit/hooded/ablative, -/obj/item/gun/energy/temperature/security, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "nmX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -56985,7 +56996,7 @@ }, /obj/effect/landmark/start/prisoner, /turf/open/floor/carpet/royalblack, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "nzD" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -57468,6 +57479,9 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"nFM" = ( +/turf/open/floor/glass/reinforced, +/area/station/security/prison/safe) "nFO" = ( /obj/machinery/firealarm/directional/east, /obj/structure/extinguisher_cabinet/directional/north, @@ -58300,6 +58314,25 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) +"nQI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Xenobiology Maintenance" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/turf/open/floor/iron, +/area/station/science/xenobiology) "nQJ" = ( /obj/structure/cable, /obj/structure/chair, @@ -60766,6 +60799,11 @@ "oxo" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/freezerchamber) +"oxB" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/sepia, +/area/station/service/library/artgallery) "oxD" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue, @@ -60788,7 +60826,7 @@ dir = 4 }, /turf/open/floor/carpet/stellar, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "oxV" = ( /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, @@ -62168,6 +62206,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/space/basic, /area/space/nearstation) +"oPp" = ( +/obj/effect/turf_decal/tile/orange/half{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "oPz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, @@ -62442,6 +62489,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/department/chapel) +"oTo" = ( +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/effect/turf_decal/siding/dark_blue/end, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "oTs" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -65234,6 +65294,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/service/abandoned_gambling_den) +"pCd" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/window/reinforced/spawner/directional/east{ + pixel_x = 3 + }, +/obj/structure/rack/gunrack, +/obj/effect/spawner/armory_spawn/smg, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "pCf" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/west, @@ -67776,6 +67846,7 @@ /obj/effect/turf_decal/tile/neutral, /obj/machinery/holopad, /obj/machinery/firealarm/directional/south, +/obj/effect/landmark/start/gary/rare, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) "qfi" = ( @@ -67813,7 +67884,6 @@ /area/station/maintenance/department/science) "qfM" = ( /obj/effect/turf_decal/tile/red, -/obj/structure/cable, /turf/open/floor/iron, /area/station/security/execution/transfer) "qfO" = ( @@ -68082,7 +68152,6 @@ id_tag = "MedbayFoyer"; name = "Medbay Foyer" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -68092,6 +68161,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/unres, /obj/effect/landmark/navigate_destination/med, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron, /area/station/medical/medbay/lobby) "qkf" = ( @@ -68699,7 +68770,7 @@ }, /obj/machinery/newscaster/directional/west, /turf/open/floor/carpet/royalblack, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "qrP" = ( /obj/effect/landmark/start/hangover, /obj/structure/chair/stool/bar/directional/south, @@ -71560,6 +71631,18 @@ /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/dark/smooth_large, /area/station/service/chapel/storage) +"rcZ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/power/solar_control{ + dir = 4; + id = "aftport"; + name = "Port Quarter Solar Control" + }, +/turf/open/floor/plating, +/area/station/maintenance/solars/port/aft) "rde" = ( /obj/machinery/space_heater/improvised_chem_heater, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -72566,24 +72649,7 @@ "rnU" = ( /obj/item/kirbyplants/random, /turf/open/floor/wood/parquet, -/area/station/security/prison/safe) -"rnW" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/iron, -/area/station/maintenance/port/aft) +/area/station/security/prison/toilet) "rod" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -73955,18 +74021,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"rGf" = ( -/obj/machinery/power/solar_control{ - dir = 4; - id = "aftport"; - name = "Port Quarter Solar Control" - }, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) "rGi" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -74052,6 +74106,14 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmos) +"rHZ" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/effect/spawner/random/armory/bulletproof_armor, +/obj/effect/spawner/random/armory/bulletproof_helmet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "rIa" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 @@ -74755,7 +74817,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "rPI" = ( /obj/structure/sign/directions/engineering{ pixel_y = -8 @@ -74915,6 +74977,7 @@ /obj/effect/landmark/event_spawn, /obj/machinery/growing/soil, /obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, /turf/open/floor/plating, /area/station/service/hydroponics/garden/abandoned) "rRa" = ( @@ -75062,7 +75125,7 @@ }, /obj/machinery/light/small/directional/west, /turf/open/floor/wood/parquet, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "rSq" = ( /obj/effect/turf_decal/plaque{ icon_state = "L8" @@ -75086,6 +75149,12 @@ }, /turf/open/floor/iron/telecomms, /area/station/tcommsat/server) +"rSO" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table/wood/fancy, +/obj/item/book/bible, +/turf/open/floor/iron/dark, +/area/station/service/chapel/funeral) "rSR" = ( /obj/machinery/portable_atmospherics/canister/plasma, /obj/effect/turf_decal/bot, @@ -76559,7 +76628,7 @@ dir = 4 }, /turf/open/floor/carpet/royalblue, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "snE" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -76568,6 +76637,20 @@ }, /turf/open/floor/plating, /area/station/science/genetics) +"snF" = ( +/obj/effect/turf_decal/tile/red, +/obj/item/kirbyplants/random, +/obj/machinery/button/flasher{ + id = "IsolationFlash"; + pixel_x = -24; + pixel_y = 2 + }, +/obj/machinery/button/door/directional/west{ + pixel_y = -8; + id = "Isolation" + }, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "snK" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /obj/effect/decal/cleanable/dirt, @@ -76626,6 +76709,15 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/service/hydroponics) +"soF" = ( +/obj/machinery/light/directional/north, +/obj/machinery/asteroid_magnet{ + center_y = 59; + center_x = 101; + area_size = 7 + }, +/turf/open/floor/iron/dark, +/area/station/science/explab) "soK" = ( /obj/structure/chair{ dir = 4 @@ -77021,7 +77113,7 @@ }, /obj/machinery/newscaster/directional/west, /turf/open/floor/carpet/royalblue, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "stK" = ( /obj/structure/closet/crate/coffin, /turf/open/floor/plating, @@ -77540,6 +77632,17 @@ "szy" = ( /turf/closed/wall, /area/station/service/bar/backroom) +"szC" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/window/preopen{ + id = "Isolation"; + dir = 4 + }, +/turf/open/floor/plating, +/area/station/security/prison/safe) "szF" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/stripes/line{ @@ -78095,25 +78198,6 @@ /obj/machinery/barsign/directional/north, /turf/open/floor/iron/dark, /area/station/service/bar) -"sGZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Xenobiology Maintenance" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/xenobiology) "sHj" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -80108,6 +80192,13 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"tew" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/orange/anticorner{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "teA" = ( /obj/structure/displaycase/captain, /turf/open/floor/iron/grimy, @@ -81499,7 +81590,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "twZ" = ( /obj/machinery/computer/message_monitor{ dir = 4 @@ -81632,6 +81723,12 @@ "tzm" = ( /turf/open/floor/iron/cafeteria, /area/station/service/kitchen) +"tzp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "tzK" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 8 @@ -81758,6 +81855,19 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/locker) +"tBd" = ( +/obj/machinery/door/airlock/corporate{ + name = "Blueshield's Quarters" + }, +/obj/effect/turf_decal/siding/dark_blue/end{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "tBf" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -81878,7 +81988,7 @@ dir = 4 }, /turf/open/floor/carpet/black, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "tCv" = ( /obj/machinery/suit_storage_unit/cmo, /obj/effect/turf_decal/tile/neutral/half/contrasted, @@ -82913,7 +83023,6 @@ /area/station/service/bar/backroom) "tOi" = ( /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -82924,6 +83033,8 @@ id_tag = "MedbayFoyer"; name = "Medbay Foyer" }, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron, /area/station/medical/medbay/lobby) "tOm" = ( @@ -83300,7 +83411,7 @@ }, /obj/machinery/airalarm/directional/west, /turf/open/floor/carpet/stellar, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "tSU" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -83715,10 +83826,6 @@ dir = 10 }, /area/station/security/office) -"tXN" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space) "tXO" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /turf/open/floor/iron, @@ -85626,6 +85733,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/event_spawn, /obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/gary, /turf/open/floor/iron/dark, /area/station/service/electronic_marketing_den) "uwn" = ( @@ -86341,7 +86449,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/structure/ghost_critter_spawn, /turf/open/floor/wood/parquet, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "uED" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, @@ -87167,6 +87275,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, +/obj/effect/landmark/start/gary, /turf/open/floor/plating, /area/station/hallway/secondary/construction) "uPx" = ( @@ -87546,6 +87655,7 @@ dir = 8 }, /obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, /turf/open/floor/iron, /area/station/service/kitchen/abandoned) "uTB" = ( @@ -88024,7 +88134,7 @@ dir = 8 }, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "uZQ" = ( /obj/structure/rack, /obj/item/stack/medical/gauze, @@ -88310,6 +88420,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hop) +"vcW" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/orange/anticorner{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "vcY" = ( /obj/effect/turf_decal/trimline/hot_pink/filled/line{ dir = 1 @@ -88601,11 +88718,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/commons/storage/tools) -"vhx" = ( -/obj/item/storage/secure/safe/directional/east, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "vhH" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -88802,11 +88914,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/engineering/atmos/mix) -"vkr" = ( -/obj/item/storage/book/bible, -/obj/structure/altar_of_gods, -/turf/open/floor/iron/grimy, -/area/station/service/chapel) "vkv" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 @@ -88904,7 +89011,7 @@ /obj/machinery/shower/directional/south, /obj/effect/turf_decal/bot, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "vmn" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -93050,6 +93157,11 @@ /obj/machinery/door/window/right/directional/south, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"wlj" = ( +/obj/item/book/bible, +/obj/structure/altar_of_gods, +/turf/open/floor/iron/grimy, +/area/station/service/chapel) "wlr" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -93423,40 +93535,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"wou" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/closed/wall/r_wall, -/area/station/command/bridge) -"wow" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "woB" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/delivery, @@ -94537,11 +94615,12 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "viro-passthrough" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron, /area/station/medical/medbay) "wzT" = ( @@ -94684,6 +94763,16 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"wBC" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/window/reinforced/spawner/directional/east{ + pixel_x = 3 + }, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/closet/secure_closet/armory_kiboko, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "wBF" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 @@ -94953,7 +95042,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/parquet, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "wEx" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -95668,6 +95757,24 @@ }, /turf/open/floor/iron/half, /area/station/security/range) +"wPK" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "External Airlock" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/external, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/structure/fans/tiny, +/turf/open/floor/iron, +/area/station/maintenance/port/aft) "wPN" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/trimline/blue/filled/corner{ @@ -97306,7 +97413,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "xkU" = ( /obj/effect/turf_decal/bot_white{ color = "#435a88" @@ -97688,6 +97795,15 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/medical/pathology) +"xqs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/maintenance/port/aft) "xqC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, @@ -98864,6 +98980,18 @@ /obj/item/stamp/head/rd, /turf/open/floor/iron/white, /area/station/command/heads_quarters/rd) +"xEm" = ( +/obj/structure/toilet/greyscale{ + pixel_y = 11 + }, +/obj/item/toy/plush/slimeplushie{ + pixel_y = 10 + }, +/obj/effect/turf_decal/tile/orange/half{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "xEt" = ( /turf/open/floor/iron, /area/station/engineering/supermatter/room) @@ -99203,20 +99331,6 @@ /obj/machinery/bluespace_vendor/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"xHR" = ( -/obj/structure/rack, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/window/reinforced/spawner/directional/east{ - pixel_x = 3 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/item/gun/energy/e_gun/dragnet{ - pixel_y = 4 - }, -/obj/item/gun/energy/e_gun/dragnet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "xHT" = ( /obj/machinery/computer/cryopod/directional/west, /obj/structure/chair/comfy/black, @@ -99224,7 +99338,7 @@ dir = 1 }, /turf/open/floor/iron/freezer, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "xHW" = ( /obj/structure/cable, /obj/machinery/status_display/ai/directional/east, @@ -99460,7 +99574,7 @@ dir = 4 }, /turf/open/floor/carpet/royalblack, -/area/station/security/prison/safe) +/area/station/security/prison/toilet) "xLi" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 10 @@ -101439,6 +101553,10 @@ /obj/item/pushbroom, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"ykO" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "ykX" = ( /obj/structure/table/wood, /obj/item/electronics/firelock, @@ -120968,7 +121086,7 @@ bVK lns nXZ nCi -sGZ +nQI uhb uhb yiB @@ -125117,22 +125235,22 @@ aaa aad aad rWQ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +lvw +lvw +lvw +lvw +lvw +lvw +lvw +lvw +lvw +lvw +lvw +lvw +lvw +lvw +lvw +lvw aaa aaa aaa @@ -125372,24 +125490,24 @@ qYo qYo aaa aad -aaa -efQ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +lBL +vVc +vVc +vVc +vVc +vVc +vVc +lBL +vVc +lBL +vVc +vVc +vVc +vVc +vVc +vVc +lBL +lvw aaa aaa aaa @@ -125629,24 +125747,24 @@ aaa qYo aaa aad -aad -efQ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +abj +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +vVc +lvw aaa aaa aaa @@ -125886,24 +126004,24 @@ aaa qYo aaa aad -aaa -aad -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +vVc +lAS +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +vVc +lvw aaa aaa aaa @@ -126143,24 +126261,24 @@ aaa qYo aaa aad -aaa -aad -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +vVc +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +vVc +lvw aaa aaa aaa @@ -126400,24 +126518,24 @@ aaa qYo aaa aad -aaa -aad -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +vVc +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +vVc +lvw aaa aaa aaa @@ -126652,29 +126770,29 @@ gkT nEc qYo qYo -vVc qYo -vVc +qYo +qYo aad -abj aad abj -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +lAS +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +vVc +lvw aaa aaa aaa @@ -126909,29 +127027,29 @@ ebX nEc qYo aaa -vVc +aaa aaa qYo aaa aad -aaa -abj -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -efQ -efQ -aaa +vVc +lAS +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +vVc +lvw efQ efQ aaa @@ -127166,28 +127284,28 @@ lxM hoT qYo qYo -vVc qYo -vVc +qYo +qYo aad -abj aad -abj -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -efQ -qYo +lBL +lAS +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +lBL qYo qYo qYo @@ -127428,29 +127546,29 @@ aaa qYo aaa aad -aaa -abj -tXN -tXN -tXN -tXN -tXN -tXN -tXN -tXN -tXN -aaa -aaa -jgw -aaa -efQ -qYo -pSj -pSj -pSj +vVc +lAS +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +vVc +vVc +vVc pSj -bBc -bBc +kun +bbD +bbD bBc bBc bBc @@ -127685,9 +127803,7 @@ aaa qYo aaa aad -aaa -aaa -tXN +lBL bTz bTz bTz @@ -127695,17 +127811,19 @@ bTz bTz bTz bTz -tXN -jUT -jUT -jgw -jUT +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +lBL qYo qYo pSj qYo -qYo -qYo aad aaa aaa @@ -127942,9 +128060,7 @@ aaa qYo aaa aad -aaa -aaa -tXN +vVc bTz bTz bTz @@ -127952,17 +128068,19 @@ bTz bTz bTz bTz -tXN -aaa -aaa -jgw -aaa -efQ +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +vVc +qYo qYo kun qYo -aaa -aaa aac aaa qgl @@ -128199,9 +128317,7 @@ aaa qYo aaa aad -aaa -aaa -tXN +vVc bTz bTz bTz @@ -128209,17 +128325,19 @@ bTz bTz bTz bTz -tXN -aaa -aaa -aaa -aaa -efQ +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +vVc +qYo qYo kun qYo -aaa -aaa aac aaa qgl @@ -128456,9 +128574,7 @@ aaa aad aaa aad -aaa -aaa -tXN +vVc bTz bTz bTz @@ -128466,17 +128582,19 @@ bTz bTz bTz bTz -tXN -aaa -aaa -aaa -aaa -aad +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +abj +qYo aad bbD aad -aad -aaa aac aad qgl @@ -128713,9 +128831,7 @@ aaa aad aaa aad -aaa -aaa -tXN +vVc bTz bTz bTz @@ -128723,17 +128839,19 @@ bTz bTz bTz bTz -tXN -aaa -aaa -aaa -aaa -aad +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +abj +qYo fuV ocY fuV -aad -aaa aac aaa qgl @@ -128967,12 +129085,11 @@ aad aad aad aad -abj -aaa -abj aad +aaa aad -tXN +abj +lAS bTz bTz bTz @@ -128980,17 +129097,18 @@ bTz bTz bTz bTz -tXN -aaa -jgw -aaa -aaa -aad +bTz +bTz +bTz +bTz +bTz +bTz +bTz +abj +qYo fuV htw fuV -aad -aad aFo aaa qgl @@ -129227,9 +129345,7 @@ aaa aad aaa aad -aaa -aaa -tXN +vVc bTz bTz bTz @@ -129237,18 +129353,20 @@ bTz bTz bTz bTz -tXN -jUT -jgw -jUT -jUT +bTz +bTz +bTz +bTz +bTz +bTz +bTz +bTz +vVc fuV fuV jNx fuV fuV -aad -aac aaa aaa aad @@ -129481,31 +129599,31 @@ aad aad aad aad -abj +aad aaa +aad +hXG abj -abj -abj -tXN -tXN -tXN -tXN -tXN -tXN -tXN -tXN -tXN -aaa -jgw -aaa -aaa +vVc +vVc +vVc +vVc +vVc +lBL +vVc +lBL +vVc +vVc +vVc +vVc +vVc +vVc +lBL dPR -arE +ikv uWa -rGf +rcZ dPR -aad -aac aac aac aFo @@ -129741,28 +129859,28 @@ fLf blX cUJ kzc -rnW +wPK qQM aaa -jUT aaa aaa aaa aaa aaa aaa -jUT +aaa +aaa +aaa +aaa aaa aaa aaa aaa dPR -kde +aUw jKG eZz dPR -aad -aaa aaa aaa aad @@ -130012,14 +130130,14 @@ igg igg igg igg -aad +eqU +aaa +aaa dPR -eXD +kHK dkH qXJ dPR -aad -aad qYo aaa aad @@ -130271,12 +130389,12 @@ ntA igg qQM kzc -jGs -kyA +kzc jtV +kyA +jGs kzc qQM -qQM qYo efQ qYo @@ -130514,7 +130632,7 @@ hGW hEt nRr igg -mPm +soF fBX oIX fBX @@ -130530,7 +130648,7 @@ tTg dzF dzF frM -tlV +xqs tTg oUU wjP @@ -131482,7 +131600,7 @@ ilo fdB aqF aqF -iPb +bIh kCi fdB jPf @@ -131796,7 +131914,7 @@ aZz kui wEI oGr -uYH +ykO ejx qQM wVd @@ -137117,7 +137235,7 @@ wjO dOZ pwG nEd -dkM +lGL cdA diL uhH @@ -137373,7 +137491,7 @@ uMA wjO dOZ pwG -ifg +tBd siG siG diL @@ -137633,10 +137751,10 @@ kOj hPv jyy fDC -lPG +oTo vsW tFF -wou +bog fbO sQA gKI @@ -138145,7 +138263,7 @@ otm dOZ pwG rBI -gED +erf hEC diL ipQ @@ -147742,7 +147860,7 @@ rMa sDJ rMa iVt -vkr +wlj slr oQM mmM @@ -148222,7 +148340,7 @@ jEN teU kcv gZU -vVR +oxB uNf qMf wBF @@ -149951,7 +150069,7 @@ aaa aad aad aad -aad +aaa aaa aaa aaa @@ -150044,7 +150162,7 @@ kZc kZc igI qKs -cKr +rSO kRC niE tVD @@ -150208,11 +150326,11 @@ aad aad aaa aaa -aad -aaa -aaa -aad -abj +mSe +szC +szC +szC +mSe abj abj abj @@ -150465,11 +150583,11 @@ aaa aaa aaa aaa -aad -aaa -aaa -aad -aaa +mSe +vcW +lOn +tew +mSe qYo aaa aad @@ -150722,11 +150840,11 @@ uHd uHd uHd uHd -aad -aad -aad -aad -aaa +mSe +xEm +nFM +ahS +mSe aad aaa vgQ @@ -150979,10 +151097,10 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aad +mSe +gQt +oPp +eKF vgQ vgQ vgQ @@ -151236,10 +151354,10 @@ mcb mcb mcb hLz -hLz -jrA -jrA -jrA +mSe +mSe +fjl +mSe vgQ hYa nHx @@ -151494,8 +151612,8 @@ lQj xBD qyB ydH -qfM -xzJ +snF +tzp hXi vgQ csD @@ -151752,7 +151870,7 @@ vVa onT ydH qfM -krO +mog oaO dwV dEv @@ -152009,7 +152127,7 @@ eEi rFX ydH xPo -krO +mog tPF vgQ nBC @@ -153270,7 +153388,7 @@ giW hLY rnU jmZ -jlb +aVc hBX lTv cBq @@ -155375,10 +155493,10 @@ aWO bLs iRi nIV -xHR -kNk -mnT -gzP +wBC +pCd +cqh +eqR gFF pIX cdr @@ -155632,10 +155750,10 @@ sRd bLs aqW aEs -cVj -wow -mmx -nmT +dcD +htx +rHZ +jBq dwU wtB qBw @@ -156147,7 +156265,7 @@ bLs bLs nyy xWI -vhx +kPf gYv tdv pFH @@ -159178,12 +159296,12 @@ qWZ qWZ qWZ qWZ -mSe -mSe -mSe -mSe -mSe -mSe +jVj +jVj +jVj +jVj +jVj +jVj dzo sXT sXT diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index dcc150694ca9..1613bd8a3132 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -230,13 +230,6 @@ dir = 4 }, /area/station/engineering/lobby) -"afU" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/starboard/upper) "aga" = ( /obj/structure/mirror/directional/west, /obj/item/toy/mecha/honk{ @@ -1474,12 +1467,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/engineering/lobby) -"ayf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/security/medical) "aym" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/tile/red{ @@ -1633,11 +1620,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/cargo/lobby) -"aBx" = ( -/obj/effect/decal/cleanable/plasma, -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/morgue) "aBM" = ( /obj/effect/landmark/start/hangover, /obj/effect/turf_decal/tile/blue{ @@ -2071,18 +2053,6 @@ /obj/effect/turf_decal/tile/blue/opposingcorners, /turf/open/floor/iron/dark, /area/station/command/gateway) -"aJo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/blueshield) "aJr" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 4 @@ -5643,12 +5613,6 @@ /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/iron/dark/textured, /area/station/security/interrogation) -"bLn" = ( -/obj/machinery/light/directional/west, -/obj/item/radio/intercom/directional/west, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/locker) "bLq" = ( /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, @@ -5946,10 +5910,6 @@ "bPw" = ( /turf/open/floor/stone, /area/station/smithing) -"bPx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/construction) "bPz" = ( /obj/effect/landmark/blobstart, /turf/open/floor/plating, @@ -6604,6 +6564,13 @@ /obj/machinery/camera/emp_proof/directional/north, /turf/open/floor/iron/cafeteria, /area/station/commons/dorms/laundry) +"caf" = ( +/obj/machinery/light/directional/west, +/obj/item/radio/intercom/directional/west, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/locker) "caC" = ( /obj/machinery/door/window/right/directional/south{ dir = 8; @@ -7451,12 +7418,6 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) -"cmQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/morgue) "cmX" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/mapping_helpers/broken_floor, @@ -7940,13 +7901,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"cvv" = ( -/obj/structure/table/wood, -/obj/machinery/airalarm/directional/north, -/obj/item/storage/book/bible, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "cvz" = ( /obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8489,6 +8443,12 @@ /obj/structure/flora/tree/pine/style_random, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) +"cCc" = ( +/obj/effect/decal/cleanable/plasma, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/morgue) "cCt" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/rnd_all, @@ -9323,6 +9283,11 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"cOv" = ( +/obj/structure/table/wood, +/obj/item/book/bible, +/turf/open/floor/iron/dark, +/area/station/service/chapel/office) "cOz" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm/directional/north, @@ -12033,6 +11998,14 @@ /obj/effect/decal/cleanable/food/egg_smudge, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"dGH" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/maintenance/starboard/upper) "dGK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12499,6 +12472,19 @@ }, /turf/open/floor/iron, /area/station/cargo/miningdock) +"dPC" = ( +/obj/item/flashlight/flare/candle{ + pixel_x = -7; + pixel_y = 3 + }, +/obj/item/book{ + name = "Tales from the First"; + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/table/wood, +/turf/open/floor/plating, +/area/station/maintenance/starboard/lesser) "dPP" = ( /obj/structure/closet/toolcloset, /turf/open/floor/plating, @@ -12521,6 +12507,13 @@ dir = 1 }, /area/station/maintenance/department/cargo) +"dQA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/morgue) "dQI" = ( /obj/effect/landmark/start/assistant, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -14134,11 +14127,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/storage) -"erU" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/department/crew_quarters/bar) "erV" = ( /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/white/textured, @@ -16829,6 +16817,11 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"fli" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/starboard/fore) "flx" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=HOP"; @@ -18396,6 +18389,13 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/station/maintenance/starboard/upper) +"fMr" = ( +/obj/structure/table/wood, +/obj/machinery/airalarm/directional/north, +/obj/item/book/bible, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "fMJ" = ( /obj/structure/chair{ dir = 1 @@ -18782,6 +18782,14 @@ "fUR" = ( /turf/closed/wall, /area/station/hallway/secondary/entry) +"fVd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/stone, +/area/station/smithing) "fVm" = ( /obj/machinery/door/airlock/maintenance{ name = "Chemical Storage" @@ -19025,13 +19033,6 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/security/brig/upper) -"fZT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/aft/greater) "fZV" = ( /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ @@ -19062,6 +19063,13 @@ }, /turf/open/floor/iron, /area/station/command/gateway) +"gal" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/duct, +/obj/structure/cable, +/turf/open/floor/iron/white/textured, +/area/station/security/medical) "gam" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/mining/glass{ @@ -19337,14 +19345,6 @@ /obj/structure/sign/poster/contraband/random/directional/south, /turf/open/floor/eighties/red, /area/station/security/prison/safe) -"gcP" = ( -/obj/item/storage/book/bible, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table/wood, -/turf/open/floor/iron/dark, -/area/station/security/prison/rec) "gcV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -20332,6 +20332,15 @@ dir = 1 }, /area/mine/eva/lower) +"gtD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/chapel) "gtF" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -20587,10 +20596,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/sepia, /area/station/security/prison/rec) -"gzY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/starboard/fore) "gAd" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/red{ @@ -22706,6 +22711,13 @@ /obj/effect/mapping_helpers/airalarm/mixingchamber_access, /turf/open/floor/iron/dark, /area/station/science/ordnance/freezerchamber) +"hjA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/white, +/area/station/maintenance/port/fore) "hjE" = ( /turf/closed/wall/r_wall, /area/station/science/explab) @@ -23305,14 +23317,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/plating/snowed/coldroom, /area/station/service/kitchen/coldroom) -"huB" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/service/library) "huH" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 @@ -24605,6 +24609,10 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark/smooth_corner, /area/station/ai_monitored/command/storage/eva) +"hSn" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "hSp" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/table/reinforced, @@ -24644,6 +24652,14 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron, /area/station/security/processing) +"hSY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/port/aft) "hSZ" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/dark_blue/line{ @@ -25710,8 +25726,9 @@ /obj/machinery/door/airlock/medical{ name = "Medbay" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/tile/blue/full, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/large, /area/station/maintenance/aft/greater) "ikz" = ( @@ -26031,13 +26048,6 @@ /obj/structure/cable, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) -"ipZ" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/dorms/laundry) "iqr" = ( /obj/effect/mapping_helpers/airlock/abandoned, /obj/machinery/door/airlock/maintenance, @@ -27087,8 +27097,9 @@ name = "Medbay" }, /obj/effect/mapping_helpers/airlock/unres, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/tile/blue/full, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/large, /area/station/medical/medbay/lobby) "iIF" = ( @@ -27438,12 +27449,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/morgue) -"iOr" = ( -/obj/structure/chair/comfy/teal{ - dir = 4 - }, -/turf/open/floor/carpet/cyan, -/area/station/command/heads_quarters/blueshield) "iOs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/airalarm/directional/south, @@ -28377,6 +28382,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"jbM" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) "jbT" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -30472,19 +30485,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"jNE" = ( -/obj/item/flashlight/flare/candle{ - pixel_x = -7; - pixel_y = 3 - }, -/obj/item/storage/book{ - name = "Tales from the First"; - pixel_x = 5; - pixel_y = 5 - }, -/obj/structure/table/wood, -/turf/open/floor/plating, -/area/station/maintenance/starboard/lesser) "jNZ" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 9 @@ -35575,6 +35575,14 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/service/chapel) +"lqp" = ( +/obj/structure/chair/plastic{ + dir = 0 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/maintenance/starboard/fore) "lqs" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -37069,6 +37077,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured, /area/mine/mechbay) +"lQi" = ( +/obj/structure/grille/broken, +/obj/effect/spawner/random/maintenance, +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/morgue) "lQm" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -37320,9 +37337,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/turf_decal/tile/blue/full, /obj/effect/landmark/navigate_destination/med, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/large, /area/station/medical/medbay/lobby) "lUw" = ( @@ -37345,14 +37363,6 @@ "lUC" = ( /turf/closed/wall, /area/station/maintenance/department/electrical) -"lUN" = ( -/obj/structure/grille/broken, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/generic, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/station/maintenance/department/medical/morgue) "lUU" = ( /obj/machinery/door/airlock/external{ name = "Internal Airlock" @@ -39121,6 +39131,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/fitness) +"mAI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/book/bible, +/obj/structure/altar_of_gods, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "mAO" = ( /obj/structure/cable, /turf/open/floor/carpet, @@ -41020,6 +41037,11 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"ngd" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/fore) "ngj" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 9 @@ -45551,6 +45573,13 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron, /area/station/security/prison/workout) +"owm" = ( +/obj/structure/chair/comfy/teal{ + dir = 4 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/cyan, +/area/station/command/heads_quarters/blueshield) "owC" = ( /turf/closed/wall/r_wall, /area/station/science/server) @@ -47621,11 +47650,6 @@ dir = 1 }, /area/station/security/prison) -"peA" = ( -/obj/structure/table/wood, -/obj/item/storage/book/bible, -/turf/open/floor/iron/dark, -/area/station/service/chapel/office) "peC" = ( /obj/effect/turf_decal/siding/wood, /obj/item/kirbyplants/random/fullysynthetic{ @@ -49028,6 +49052,14 @@ /obj/machinery/requests_console/auto_name/directional/north, /turf/open/floor/iron, /area/station/service/hydroponics) +"pBv" = ( +/obj/item/book/bible, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/table/wood, +/turf/open/floor/iron/dark, +/area/station/security/prison/rec) "pBA" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -49286,6 +49318,14 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/stone, /area/station/smithing) +"pFX" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/station/maintenance/port/aft) "pFZ" = ( /obj/item/target/syndicate, /obj/effect/decal/cleanable/dirt, @@ -49717,6 +49757,12 @@ }, /turf/open/floor/iron/freezer, /area/station/commons/toilet/locker) +"pLC" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/cable, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) "pLO" = ( /obj/machinery/status_display/evac/directional/east, /obj/structure/cable, @@ -50426,6 +50472,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/atmos) +"pYs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/effect/landmark/navigate_destination, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/blueshield) "pYz" = ( /obj/machinery/door/firedoor/border_only, /turf/open/floor/iron/dark/corner{ @@ -53153,13 +53211,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/carpet/red, /area/station/security/prison/work) -"qTS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/port/aft) "qTZ" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 @@ -53286,6 +53337,14 @@ }, /turf/open/floor/iron/dark/textured, /area/station/engineering/main) +"qWB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/wood, +/area/station/maintenance/aft/greater) "qWD" = ( /obj/machinery/duct, /turf/open/floor/iron/white, @@ -53538,13 +53597,6 @@ "qZN" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/freezerchamber) -"qZR" = ( -/obj/structure/chair/plastic{ - dir = 0 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/starboard/fore) "qZT" = ( /obj/machinery/computer/mech_bay_power_console{ dir = 1 @@ -54522,11 +54574,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/lobby) -"rqR" = ( -/obj/structure/table/glass, -/obj/item/storage/book/bible, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) "rqT" = ( /obj/machinery/door/firedoor, /turf/open/floor/iron, @@ -58096,14 +58143,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/bar) -"sAu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/department/chapel) "sAC" = ( /obj/machinery/vending/cigarette, /turf/open/floor/iron/dark, @@ -59277,6 +59316,14 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron/freezer, /area/station/commons/toilet/locker) +"sVF" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/fore/lesser) "sVL" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -59314,13 +59361,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"sWv" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/fore/lesser) "sWx" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 4 @@ -59462,13 +59502,6 @@ }, /turf/open/lava/plasma/ice_moon, /area/icemoon/underground/explored) -"sYE" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/station/maintenance/port/aft) "sYG" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -60002,13 +60035,6 @@ }, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos/storage/gas) -"tkc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/turf/open/floor/stone, -/area/station/smithing) "tke" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -61874,6 +61900,11 @@ }, /turf/open/floor/iron, /area/station/command/gateway) +"tOp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/construction) "tOq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -67623,6 +67654,15 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/medical/chemistry) +"vHS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/wood, +/area/station/service/library) "vHT" = ( /obj/effect/spawner/random/trash/mess, /obj/item/storage/box, @@ -70885,6 +70925,11 @@ }, /turf/open/floor/iron, /area/station/command/bridge) +"wKO" = ( +/obj/effect/spawner/random/trash/mess, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "wLk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers, /obj/machinery/portable_atmospherics/canister/carbon_dioxide, @@ -73603,6 +73648,11 @@ /obj/machinery/nuclearbomb/beer, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"xCG" = ( +/obj/structure/table/glass, +/obj/item/book/bible, +/turf/open/floor/iron/chapel, +/area/station/service/chapel) "xCQ" = ( /obj/structure/table/glass, /obj/item/reagent_containers/cup/beaker/cryoxadone{ @@ -75319,13 +75369,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"ygp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/storage/book/bible, -/obj/structure/altar_of_gods, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "ygs" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 9 @@ -100624,7 +100667,7 @@ hPk bwi vyO dEz -gcP +pBv hOA mJX cmh @@ -159525,7 +159568,7 @@ iwS iJM iEh tDG -ipZ +jbM xwG qMo iDt @@ -163612,7 +163655,7 @@ qQf qQf qQf fro -sWv +sVF tym jur vqi @@ -173171,7 +173214,7 @@ thA nxM imi nJd -lUN +lQi qck eJI nxM @@ -176517,7 +176560,7 @@ pHD qMz hjM xDU -aBx +cCc sBJ vLY qck @@ -177512,7 +177555,7 @@ fWU aak dMS vJL -erU +pLC qqC oYx nCJ @@ -179094,7 +179137,7 @@ rmh ieF qHl rwG -cmQ +dQA skJ owG hjM @@ -182391,7 +182434,7 @@ jre jre jre jre -jNE +dPC aCo hMw jre @@ -185204,7 +185247,7 @@ thA xMq tBs pwv -sAu +gtD yaP tBs nHQ @@ -187262,7 +187305,7 @@ pxg eRc tBs deP -peA +cOv pQw cBP wAv @@ -188042,7 +188085,7 @@ aIe wBA uJq smC -ygp +mAI hMr aUO aUO @@ -188811,7 +188854,7 @@ lry oTA hlS wrX -cvv +fMr wBA oTA bAF @@ -220946,7 +220989,7 @@ egK nwT ccD aCJ -tkc +fVd nsr xSl tKI @@ -223777,7 +223820,7 @@ tOw sVn wlt kEM -bLn +caf kEM vkW kEM @@ -225033,7 +225076,7 @@ qDI xQB whv rSe -lXq +hjA ckQ xJD lJO @@ -226904,7 +226947,7 @@ hjH pRj wwC rlj -sYE +pFX aPV gFH apj @@ -227412,7 +227455,7 @@ ujj pRj xoB hjH -qTS +hSY dNC xBX pRj @@ -232774,7 +232817,7 @@ gfr fnv pPM fjt -aJo +pYs umE ujA eYd @@ -233033,7 +233076,7 @@ fsG ktU wxu dVc -iOr +owm yhH usN jfc @@ -234087,7 +234130,7 @@ mZV paM bbo oKY -bPx +tOp iXk hHD pRj @@ -236582,7 +236625,7 @@ bxQ bUx vSh kBx -ayf +gal bui hfg lUw @@ -239164,7 +239207,7 @@ skl skl skl nTK -tnP +ngd cIK jOQ skl @@ -246373,7 +246416,7 @@ kKL kKL kKL kKL -qZR +lqp dqy kKL lli @@ -246698,7 +246741,7 @@ cpl npD fWL qUM -fZT +qWB asN xhZ sZF @@ -250474,7 +250517,7 @@ bln bln kKL xpE -gGF +wKO wMT kKL lli @@ -250489,7 +250532,7 @@ kKL gkP kKL sqs -huB +vHS ogd hff blV @@ -252787,7 +252830,7 @@ bln iyY jLc sEY -gzY +fli rEX rCf rCf @@ -254860,7 +254903,7 @@ oHH tAA efH mJu -rqR +xCG qPL qPL qPL @@ -255946,7 +255989,7 @@ rDZ pcX bgx jCl -jCl +hSn jCl vzD geJ @@ -258488,7 +258531,7 @@ mLJ opn vJk vJk -afU +dGH vJk vJk qbW diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index cd12cc41e725..7849f9737e50 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -875,6 +875,17 @@ }, /turf/open/floor/iron, /area/station/construction/mining/aux_base) +"akB" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/closet/emcloset/wall/directional/east, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) "akH" = ( /obj/effect/turf_decal/tile/dark/half/contrasted, /obj/machinery/atmospherics/components/binary/valve/digital{ @@ -1372,12 +1383,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"asP" = ( -/obj/machinery/light_switch/directional/west, -/obj/machinery/arc_forge, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron/dark/textured_large, -/area/station/smithing) "asU" = ( /obj/structure/plaque/static_plaque/golden/commission/kilo, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -1444,6 +1449,17 @@ /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/atmos) +"aug" = ( +/obj/structure/table/wood, +/obj/item/radio/radio_mic, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/sign/painting/library_private{ + pixel_y = -32 + }, +/turf/open/floor/iron/vaporwave, +/area/station/service/library) "auN" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/airalarm/directional/west, @@ -1812,7 +1828,8 @@ /area/station/hallway/primary/central) "aCE" = ( /obj/machinery/atmospherics/components/tank/air{ - dir = 8 + dir = 8; + piping_layer = 4 }, /obj/machinery/light/neon_lining, /obj/effect/turf_decal/tile/purple/anticorner/contrasted, @@ -1836,18 +1853,6 @@ /obj/machinery/camera/directional/north, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"aDx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=HOP"; - location = "Security"; - name = "security navigation beacon" - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) "aDF" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -2760,6 +2765,20 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/recharge_floor, /area/station/science/robotics/mechbay) +"aTW" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/space/basic, +/area/space/nearstation) "aUh" = ( /obj/effect/turf_decal/bot, /obj/structure/safe{ @@ -2783,12 +2802,6 @@ /mob/living/basic/chicken, /turf/open/floor/sandy_dirt, /area/station/service/hydroponics) -"aUn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "aUv" = ( /obj/effect/decal/cleanable/blood/drip, /obj/effect/decal/cleanable/blood/drip{ @@ -4286,14 +4299,6 @@ }, /turf/open/floor/carpet/royalblack, /area/station/command/heads_quarters/captain) -"bvN" = ( -/obj/structure/railing, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/showroomfloor, -/area/station/service/bar/atrium) "bvP" = ( /obj/item/paper_bin{ pixel_x = -3; @@ -5197,11 +5202,12 @@ id_tag = "medbay_front_door"; name = "Medbay" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/mapping_helpers/airlock/unres{ dir = 8 }, /obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/dark, /area/station/medical/medbay/lobby) "bMp" = ( @@ -5226,16 +5232,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/cargo/sorting) -"bMN" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/showroomfloor, -/area/station/service/bar/atrium) "bNf" = ( /obj/structure/flora/grass/jungle/b/style_random, /obj/structure/flora/bush/flowers_yw/style_random, @@ -5571,18 +5567,6 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"bRK" = ( -/obj/machinery/door/airlock/external{ - name = "Experimentation Lab"; - space_dir = 4; - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/starboard) "bRO" = ( /obj/machinery/chem_dispenser, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -5877,6 +5861,17 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/cargo/storage) +"bWI" = ( +/obj/machinery/cassette/dj_station{ + pixel_y = 12 + }, +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/vaporwave, +/area/station/service/library) "bWP" = ( /obj/structure/table, /obj/item/clothing/shoes/sneakers/orange{ @@ -6288,6 +6283,32 @@ dir = 4 }, /area/station/service/chapel) +"cbO" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/item/book/bible, +/turf/open/floor/carpet/red, +/area/station/service/chapel) +"cca" = ( +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21" + }, +/obj/structure/closet/firecloset/wall/directional/south, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/hallway/primary/port) "ccd" = ( /obj/structure/railing{ dir = 4 @@ -6319,7 +6340,6 @@ /area/station/ai_monitored/turret_protected/aisat_interior) "ccu" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -6512,16 +6532,6 @@ /obj/effect/turf_decal/tile/blue/opposingcorners, /turf/open/floor/iron/showroomfloor, /area/station/medical/medbay/lobby) -"cen" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) "ceq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -6705,19 +6715,27 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"cgT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/department/crew_quarters/bar) "cgU" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/iron/recharge_floor, /area/station/maintenance/port/aft) +"cgW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/blueshield) "cgX" = ( /obj/structure/rack, /obj/item/wirecutters{ @@ -6933,11 +6951,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/hallway) -"cjp" = ( -/obj/effect/spawner/random/clothing/costume, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/crew_quarters/bar) "cjq" = ( /obj/structure/table/reinforced, /obj/item/storage/secure/briefcase{ @@ -7330,22 +7343,6 @@ "cok" = ( /turf/closed/wall/r_wall, /area/space/nearstation) -"cop" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/table/wood/fancy/black, -/obj/item/storage/book/bible{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/storage/book/bible{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/storage/book/bible, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "cos" = ( /obj/effect/turf_decal/box, /obj/effect/turf_decal/stripes/line{ @@ -7788,6 +7785,13 @@ /obj/structure/girder, /turf/open/floor/plating, /area/station/maintenance/department/security) +"cwo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sign/painting/library_private{ + pixel_x = 32 + }, +/turf/open/floor/cult, +/area/station/service/library) "cwu" = ( /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/dark/textured_large, @@ -7802,11 +7806,12 @@ /obj/effect/mapping_helpers/airlock/unres{ dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/dark, /area/station/medical/treatment_center) "cwL" = ( @@ -7873,6 +7878,7 @@ dir = 8 }, /obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) "cyU" = ( @@ -7896,6 +7902,18 @@ /obj/effect/mapping_helpers/airlock/access/all/command/eva, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) +"czv" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/machinery/camera/directional/west{ + c_tag = "Port Hallway Vendors"; + name = "Vacant commisary" + }, +/obj/machinery/light_switch/directional/west, +/turf/open/floor/stone, +/area/station/smithing) "czy" = ( /obj/machinery/door/airlock/external/glass{ name = "Supply Door Airlock" @@ -8495,9 +8513,32 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/security/brig) +"cKv" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/closet/emcloset/wall/directional/north, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/fore) "cKz" = ( /turf/closed/wall/rust, /area/station/engineering/gravity_generator) +"cKF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/dark, +/area/station/service/library) "cKI" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -8547,11 +8588,6 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/fore) -"cKX" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/starboard) "cKY" = ( /obj/machinery/dna_scannernew, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -9092,6 +9128,10 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"cVW" = ( +/mob/living/basic/migo, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) "cWb" = ( /obj/structure/table, /obj/item/radio{ @@ -9162,6 +9202,13 @@ }, /turf/open/floor/iron/dark, /area/station/service/hydroponics/garden) +"cWP" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/structure/closet/emcloset, +/turf/open/floor/iron/dark, +/area/station/science/research) "cWS" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -9351,12 +9398,6 @@ /obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"cYZ" = ( -/obj/effect/spawner/random/structure/furniture_parts, -/obj/effect/spawner/random/structure/crate_empty, -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/crew_quarters/bar) "cZh" = ( /obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9473,6 +9514,13 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"dcf" = ( +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/iron/vaporwave, +/area/station/service/library) "dcj" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/apc/auto_name/directional/south, @@ -9855,6 +9903,12 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/solars/starboard/aft) +"diW" = ( +/obj/effect/landmark/event_spawn, +/obj/structure/cable, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) "dja" = ( /obj/structure/grille, /obj/effect/decal/cleanable/dirt, @@ -11147,10 +11201,6 @@ /obj/item/food/cracker, /turf/open/floor/carpet/royalblue, /area/station/service/chapel/office) -"dCI" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/herringbone, -/area/station/maintenance/starboard) "dCM" = ( /turf/closed/wall/rust, /area/station/service/bar/atrium) @@ -11177,6 +11227,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/service/chapel/storage) +"dDi" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/science/explab) "dDx" = ( /obj/effect/turf_decal/trimline/hot_pink/filled/line, /obj/effect/spawner/random/entertainment/arcade{ @@ -11766,15 +11823,6 @@ }, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/starboard) -"dMe" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 4; - layer = 4.1 - }, -/obj/structure/cable, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) "dMh" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -11807,6 +11855,11 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/station/cargo/storage) +"dMz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/turf/open/floor/carpet/green, +/area/station/maintenance/port/greater) "dME" = ( /turf/closed/wall, /area/station/cargo/warehouse) @@ -11974,6 +12027,16 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"dRd" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/bookcase{ + name = "Forbidden Knowledge" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/iron/vaporwave, +/area/station/service/library) "dRh" = ( /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/floor/grass, @@ -12159,6 +12222,18 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/security/execution/transfer) +"dTO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/chair/comfy/teal{ + dir = 4 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/blueshield) "dTQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/yellow/half/contrasted, @@ -12521,6 +12596,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"eaB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "eaQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line{ @@ -12884,6 +12967,13 @@ /obj/effect/turf_decal/box, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"egQ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) "egV" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/corner{ @@ -13091,6 +13181,11 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/service/chapel) +"ejJ" = ( +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/iron/dark/textured, +/area/station/maintenance/starboard) "ejO" = ( /obj/machinery/door/airlock/public/glass{ name = "Atrium" @@ -13160,11 +13255,6 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/station/maintenance/department/crew_quarters/bar) -"elc" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/starboard/fore) "ele" = ( /obj/structure/table/wood, /obj/machinery/door/firedoor, @@ -13244,11 +13334,6 @@ }, /turf/open/misc/asteroid, /area/space/nearstation) -"emv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) "emx" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -13393,14 +13478,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/science/research) -"eoi" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/cassette/dj_station{ - pixel_y = 12 - }, -/obj/structure/table/wood, -/turf/open/floor/iron/vaporwave, -/area/station/service/library) "eon" = ( /obj/machinery/door/poddoor/shutters{ id = "teleshutter"; @@ -13936,6 +14013,7 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "eyl" = ( +/obj/effect/landmark/start/gary, /turf/open/floor/wood, /area/station/maintenance/port/fore) "eyv" = ( @@ -14347,6 +14425,17 @@ /obj/item/storage/box/lights/mixed, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/port/aft) +"eFO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/structure/closet/emcloset/wall/directional/west, +/turf/open/floor/iron, +/area/station/cargo/storage) "eFR" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, @@ -15186,6 +15275,7 @@ /obj/effect/turf_decal/tile/purple{ dir = 8 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) "eRp" = ( @@ -15322,6 +15412,11 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel) +"eUe" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) "eUk" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -15621,7 +15716,6 @@ /area/station/medical/medbay/lobby) "eZi" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -16214,15 +16308,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/aft) -"fhx" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) "fhH" = ( /obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, @@ -17598,6 +17683,14 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/command/heads_quarters/hop) +"fBT" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) "fBX" = ( /obj/effect/turf_decal/bot, /obj/structure/rack, @@ -18095,17 +18188,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"fIS" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor, -/area/station/medical/medbay/central) "fIW" = ( /obj/item/chair/stool{ pixel_x = -6; @@ -18129,11 +18211,6 @@ }, /turf/open/floor/grass, /area/station/science/genetics) -"fJr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, -/turf/open/floor/carpet/green, -/area/station/maintenance/port/greater) "fJs" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock"; @@ -18639,6 +18716,12 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"fQC" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/red, +/obj/structure/closet/firecloset/wall/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "fQF" = ( /obj/structure/toilet, /obj/machinery/light/small/directional/north, @@ -19251,6 +19334,12 @@ /obj/effect/turf_decal/trimline/hot_pink/filled/line, /turf/open/floor/iron/dark/herringbone, /area/station/security/prison) +"gbU" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/herringbone, +/area/station/maintenance/starboard) "gbV" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -20126,20 +20215,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) -"gpS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/showroomfloor, -/area/station/service/bar/atrium) "gqe" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/siding/wood{ @@ -20698,7 +20773,6 @@ dir = 4 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -20708,7 +20782,6 @@ /turf/open/floor/carpet/neon/simple/green, /area/station/science/xenobiology) "gzq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/starboard) @@ -21016,13 +21089,6 @@ }, /turf/open/floor/iron, /area/station/engineering/hallway) -"gER" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/research) "gFt" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/corner{ @@ -21315,6 +21381,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/engine, /area/station/engineering/gravity_generator) +"gJw" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/table/wood/fancy/black, +/obj/item/book/bible{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/book/bible{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/book/bible, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "gJE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line, @@ -21356,14 +21438,18 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) -"gKg" = ( -/obj/structure/railing, -/obj/structure/disposalpipe/segment{ +"gJW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/showroomfloor, -/area/station/service/bar/atrium) +/obj/effect/turf_decal/tile/red, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/structure/closet/emcloset/wall/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "gKq" = ( /obj/structure/cable, /obj/machinery/light/small/directional/east, @@ -21413,13 +21499,6 @@ "gLO" = ( /turf/closed/wall/r_wall/rust, /area/station/security/courtroom) -"gLP" = ( -/obj/structure/bookcase/random/adult, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/sign/poster/contraband/random/directional/east, -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/maintenance/department/crew_quarters/bar) "gMg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -21714,6 +21793,19 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"gRS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/closet/emcloset/wall/directional/north, +/turf/open/floor/iron, +/area/station/security/brig) "gSa" = ( /obj/structure/chair/stool/bar{ dir = 8 @@ -21940,6 +22032,13 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/command/heads_quarters/rd) +"gVu" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/textured, +/area/station/maintenance/starboard) "gVv" = ( /obj/effect/decal/cleanable/dirt, /obj/item/tank/internals/plasmaman/belt/full, @@ -22276,6 +22375,7 @@ /obj/effect/turf_decal/tile/purple{ dir = 8 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) "hci" = ( @@ -22686,6 +22786,19 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark/textured_large, /area/station/maintenance/starboard) +"him" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood, +/obj/structure/cassette_rack/prefilled{ + pixel_y = 8 + }, +/obj/item/device/walkman{ + pixel_y = 7; + pixel_x = -8 + }, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron/vaporwave, +/area/station/service/library) "hiM" = ( /obj/structure/sign/departments/evac, /turf/closed/wall, @@ -23179,7 +23292,6 @@ /turf/open/floor/iron/dark, /area/station/engineering/lobby) "hnF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/machinery/door/airlock/research{ name = "Xenobiology Lab" @@ -23744,17 +23856,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/service/kitchen) -"hxD" = ( -/obj/machinery/asteroid_magnet{ - center_x = 128; - center_y = 58; - area_size = 3 - }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/science/explab) "hxL" = ( /obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, @@ -24492,6 +24593,18 @@ }, /turf/open/floor/iron/dark/textured_corner, /area/station/ai_monitored/security/armory) +"hIH" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/structure/closet/emcloset/wall/directional/north, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/central/fore) "hIS" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/rnd_all, @@ -24724,6 +24837,23 @@ "hLu" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/blueshield) +"hLN" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/vending/hydroseeds{ + slogan_delay = 700 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics/garden) "hLO" = ( /obj/structure/plasticflaps, /obj/machinery/conveyor{ @@ -24740,6 +24870,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"hMe" = ( +/obj/structure/chair/comfy/brown, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/iron/vaporwave, +/area/station/service/library) "hMf" = ( /obj/structure/table/reinforced, /obj/structure/desk_bell{ @@ -25267,6 +25407,20 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/science/ordnance/storage) +"hRH" = ( +/obj/machinery/door/airlock/external{ + name = "Experimentation Lab"; + space_dir = 4; + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/starboard) "hRO" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -25291,10 +25445,10 @@ /turf/open/floor/iron/dark, /area/station/science/lab) "hSh" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden/layer4{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) "hSv" = ( @@ -25410,6 +25564,32 @@ /obj/effect/mapping_helpers/airlock/access/all/command/captain, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/captain/private) +"hUA" = ( +/obj/item/storage/photo_album{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/taperecorder{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/camera, +/obj/item/pen{ + pixel_x = -7; + pixel_y = -5 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Library Backroom"; + name = "library camera" + }, +/obj/structure/sign/painting/large/library_private{ + dir = 8; + pixel_x = -29 + }, +/obj/structure/table/wood, +/turf/open/floor/cult, +/area/station/service/library) "hUC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, @@ -26175,12 +26355,6 @@ }, /turf/open/floor/iron/dark, /area/station/service/janitor) -"igx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/generic, -/mob/living/basic/chicken/gary, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) "igz" = ( /obj/structure/sink/directional/west, /obj/effect/turf_decal/stripes/corner, @@ -26528,6 +26702,18 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/medical/chemistry) +"imc" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Upload"; + location = "Science"; + name = "science navigation beacon" + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "imh" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/medical) @@ -27091,18 +27277,6 @@ /obj/effect/turf_decal/tile/green/opposingcorners, /turf/open/floor/iron/showroomfloor, /area/station/medical/pathology) -"isU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/brig) "itn" = ( /turf/closed/wall/r_wall/rust, /area/station/ai_monitored/command/nuke_storage) @@ -27163,6 +27337,11 @@ }, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) +"iuz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) "iuE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -27553,6 +27732,13 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"iyY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) "iza" = ( /turf/closed/wall/rust, /area/station/maintenance/port/lesser) @@ -27836,16 +28022,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"iDh" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Upload"; - location = "Science"; - name = "science navigation beacon" - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "iDq" = ( /obj/machinery/station_map/engineering/directional/north, /obj/structure/closet/radiation, @@ -28043,17 +28219,6 @@ /obj/effect/spawner/random/loafer, /turf/open/floor/iron/dark, /area/station/maintenance/port/fore) -"iGw" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) "iGx" = ( /obj/structure/table/bronze, /obj/item/stack/sheet/bronze{ @@ -28062,7 +28227,6 @@ /turf/open/floor/bronze, /area/station/maintenance/department/chapel) "iGB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light/neon_lining{ dir = 4 }, @@ -28441,8 +28605,9 @@ /obj/effect/mapping_helpers/airlock/unres{ dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/dark, /area/station/medical/treatment_center) "iLy" = ( @@ -29392,6 +29557,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, /turf/open/floor/stone, /area/station/science/xenobiology) "iZV" = ( @@ -29688,11 +29854,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"jec" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/turf/open/floor/iron/showroomfloor, -/area/station/science/xenobiology) "jef" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/structure/disposalpipe/junction{ @@ -29995,13 +30156,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"jiq" = ( -/obj/machinery/light/directional/south, -/obj/machinery/status_display/evac/directional/south, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central) "jiJ" = ( /obj/structure/chair/sofa/bench/left, /obj/effect/turf_decal/box/corners{ @@ -30773,6 +30927,11 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"jwv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/artifact_spawner, +/turf/open/floor/engine, +/area/station/science/explab) "jwz" = ( /obj/structure/bodycontainer/morgue, /obj/effect/turf_decal/delivery, @@ -31109,20 +31268,6 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"jDy" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/duct, -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/showroomfloor, -/area/station/service/bar/atrium) "jDF" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -31432,12 +31577,6 @@ }, /area/station/service/chapel) "jIX" = ( -/obj/item/radio/intercom/directional/west{ - freerange = 1; - listening = 0; - name = "Common Channel"; - pixel_y = 4 - }, /obj/item/radio/intercom/directional/north{ freerange = 1; listening = 0; @@ -31462,6 +31601,13 @@ pixel_x = -24; req_access = list("ai_upload") }, +/obj/item/radio/intercom/directional/west{ + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_y = 4; + listening = 0 + }, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai) "jJd" = ( @@ -31517,6 +31663,20 @@ /obj/structure/flora/bush/ferny/style_random, /turf/open/misc/asteroid, /area/space/nearstation) +"jJr" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/item/book/bible, +/turf/open/floor/carpet/red, +/area/station/service/chapel) "jJB" = ( /obj/structure/cable, /obj/effect/landmark/start/hangover, @@ -31752,7 +31912,6 @@ "jMG" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -32174,14 +32333,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/prison) -"jUF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/starboard) "jUJ" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -32219,15 +32370,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"jVG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/effect/decal/cleanable/generic, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/department/crew_quarters/bar) "jVH" = ( /obj/effect/turf_decal/bot, /obj/machinery/holopad, @@ -32274,7 +32416,6 @@ dir = 10 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/science/xenobiology) @@ -33678,7 +33819,6 @@ network = list("ss13","rd") }, /obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/machinery/light/neon_lining{ dir = 4 @@ -33789,13 +33929,6 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/starboard) -"kxU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/digital_clock/directional/east, -/turf/open/floor/iron/vaporwave, -/area/station/service/library) "kyj" = ( /obj/structure/closet/secure_closet/miner, /obj/effect/turf_decal/delivery, @@ -34315,6 +34448,17 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) +"kHe" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) "kHl" = ( /obj/machinery/door/window{ dir = 4 @@ -34528,6 +34672,12 @@ }, /turf/closed/wall, /area/station/hallway/primary/central) +"kKX" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/blueshield) "kLa" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -34881,6 +35031,15 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/medical/pathology) +"kQE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured, +/area/station/maintenance/starboard) "kQH" = ( /obj/machinery/skill_station, /obj/effect/turf_decal/box, @@ -34961,6 +35120,19 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"kRR" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/closet/firecloset/wall/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "kRU" = ( /obj/structure/table, /obj/item/pai_card, @@ -35546,18 +35718,6 @@ /obj/item/clothing/mask/russian_balaclava, /turf/open/floor/iron/dark, /area/station/security/lockers) -"lbE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/brig) "lbJ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/corner{ @@ -36071,27 +36231,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/aft) -"llE" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/external{ - name = "Experimentation Lab"; - space_dir = 4; - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/starboard) -"llH" = ( -/obj/structure/railing/corner, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/showroomfloor, -/area/station/service/bar/atrium) "lme" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -36129,12 +36268,6 @@ "lmO" = ( /turf/closed/wall/rust, /area/station/cargo/storage) -"lmT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple/half/contrasted, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/starboard) "lnr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, @@ -36793,15 +36926,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/hallway/secondary/entry) -"lxu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/carpet/neon/simple/green, -/area/station/science/xenobiology) "lxw" = ( /obj/effect/turf_decal/tile/purple{ dir = 1 @@ -37028,6 +37152,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) +"lBa" = ( +/obj/machinery/door/morgue{ + name = "Private Study"; + req_access = list("library") + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/library) "lBj" = ( /obj/structure/table/wood, /obj/structure/cable, @@ -37711,12 +37843,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"lLZ" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor, -/area/station/science/explab) "lMf" = ( /obj/structure/chair/wood{ dir = 8 @@ -37985,6 +38111,17 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"lQS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/chair/office, +/obj/structure/sign/painting/library_private{ + pixel_x = 32 + }, +/obj/effect/landmark/start/librarian, +/turf/open/floor/cult, +/area/station/service/library) "lRg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -38017,15 +38154,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark, /area/station/security/processing) -"lSa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/service/library) "lSs" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -38060,6 +38188,13 @@ }, /turf/open/floor/plating, /area/station/cargo/warehouse) +"lTb" = ( +/obj/machinery/light/directional/west, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, +/turf/open/floor/iron/dark, +/area/station/medical/cryo) "lTc" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, @@ -38380,14 +38515,6 @@ "lYg" = ( /turf/closed/wall, /area/station/science/robotics/lab) -"lYE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/railing/corner, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/showroomfloor, -/area/station/service/bar/atrium) "lYJ" = ( /obj/machinery/camera/directional/west{ c_tag = "Xenobiology Cell 2"; @@ -38677,17 +38804,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/cargo/warehouse) -"mdI" = ( -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 8 - }, -/obj/item/kirbyplants{ - icon_state = "plant-21" - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/hallway/primary/port) "mdX" = ( /obj/effect/turf_decal/bot/right, /turf/open/floor/iron, @@ -38724,6 +38840,21 @@ /obj/effect/mapping_helpers/mail_sorting/science/ordnance, /turf/open/floor/iron/showroomfloor, /area/station/science/research) +"mfb" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/closet/firecloset/wall/directional/north, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/primary/central/fore) "mff" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/vomit/old, @@ -39089,20 +39220,6 @@ /obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"mkb" = ( -/obj/effect/turf_decal/siding/blue{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/medical/medbay/central) "mkk" = ( /turf/closed/wall/rust, /area/station/hallway/secondary/entry) @@ -39429,6 +39546,13 @@ /obj/effect/mapping_helpers/airlock/access/all/science/robotics, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) +"moH" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) "moI" = ( /obj/machinery/pdapainter, /obj/structure/sign/poster/official/ian/directional/north, @@ -39500,6 +39624,12 @@ /obj/structure/cable/layer1, /turf/open/floor/engine, /area/station/engineering/gravity_generator) +"mqL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/restrooms) "mqR" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -40754,7 +40884,6 @@ }, /obj/effect/mapping_helpers/airlock/access/any/science/xenobio, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -41175,7 +41304,6 @@ "mRW" = ( /obj/machinery/light_switch/directional/south, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -42080,11 +42208,6 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"nhr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/starboard) "nhz" = ( /obj/structure/sign/departments/security/directional/east, /obj/machinery/light/small/directional/east, @@ -42390,13 +42513,6 @@ /obj/effect/landmark/start/depsec/supply, /turf/open/floor/iron, /area/station/security/checkpoint/supply) -"nnB" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/medical/cryo) "nnM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42527,17 +42643,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"npy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "npE" = ( /obj/machinery/firealarm/directional/east, /obj/machinery/iv_drip, @@ -42846,21 +42951,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/aft) -"nuz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/blueshield) "nuF" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/vending/cigarette, @@ -43042,13 +43132,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/security/prison/garden) -"nwE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/turf/open/floor/iron/dark/corner, -/area/station/hallway/primary/central/fore) "nwI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43259,13 +43342,6 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/atmos) -"nAE" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/department/bridge) "nAH" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -43561,11 +43637,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/storage/primary) -"nFt" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/holopad, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/blueshield) "nFu" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44108,6 +44179,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary, /turf/open/floor/plating, /area/station/maintenance/starboard) "nNb" = ( @@ -44495,6 +44567,13 @@ /obj/structure/sign/poster/contraband/random/directional/south, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"nUS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured, +/area/station/maintenance/starboard) "nUZ" = ( /obj/effect/turf_decal/delivery, /obj/structure/extinguisher_cabinet/directional/south, @@ -44581,6 +44660,12 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/checkpoint/customs) +"nXV" = ( +/obj/structure/sign/painting/library_private{ + pixel_x = 32 + }, +/turf/open/floor/cult, +/area/station/service/library) "nYo" = ( /obj/structure/table, /obj/item/storage/backpack/duffelbag/engineering{ @@ -45038,6 +45123,11 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) +"ohI" = ( +/obj/structure/lattice/catwalk, +/obj/structure/marker_beacon/jade, +/turf/open/space/basic, +/area/space/nearstation) "ohR" = ( /obj/structure/closet/secure_closet/miner, /obj/effect/turf_decal/delivery, @@ -45999,6 +46089,11 @@ }, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) +"oyY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/engine, +/area/station/science/explab) "ozd" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -46112,9 +46207,7 @@ /turf/open/floor/iron, /area/station/command/bridge) "oAG" = ( -/obj/effect/decal/cleanable/dirt, /obj/item/storage/bag/trash, -/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, @@ -46166,6 +46259,7 @@ "oBi" = ( /obj/structure/table/wood, /obj/effect/spawner/random/maintenance, +/obj/item/crowbar/red, /obj/item/knife/combat/survival, /turf/open/floor/carpet/green, /area/station/cargo/warehouse) @@ -46275,18 +46369,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/main) -"oCt" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "oCI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -46400,6 +46482,7 @@ }, /obj/effect/turf_decal/bot, /obj/machinery/station_map/engineering/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) "oFl" = ( @@ -47726,6 +47809,7 @@ /obj/structure/cable, /obj/machinery/duct, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/box, /turf/open/floor/stone, /area/station/science/xenobiology) "pcC" = ( @@ -47767,6 +47851,23 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) +"pcV" = ( +/obj/machinery/atmospherics/components/unary/passive_vent/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"pcX" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/east, +/obj/structure/closet/firecloset/wall/directional/east, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) "pdf" = ( /obj/structure/table, /obj/item/paper_bin, @@ -47913,22 +48014,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"peN" = ( -/obj/structure/noticeboard/directional/north{ - dir = 2; - name = "Chapel Notice Board" - }, -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/hallway/primary/fore) "peT" = ( /obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -48084,6 +48169,13 @@ }, /turf/open/misc/asteroid, /area/space/nearstation) +"phV" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/closet/emcloset/wall/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "phX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -48136,20 +48228,6 @@ "piu" = ( /turf/open/floor/iron/dark, /area/station/service/chapel/monastery) -"piB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/showroomfloor, -/area/station/service/bar/atrium) "piH" = ( /obj/machinery/light/small/directional/east, /obj/structure/bed, @@ -48226,6 +48304,18 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/science/robotics/mechbay) +"pjb" = ( +/obj/structure/sign/warning/electric_shock/directional/south, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/microwave, +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) "pji" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -49229,6 +49319,13 @@ /obj/structure/cable, /turf/open/floor/iron/solarpanel/airless, /area/station/solars/starboard/fore) +"pyi" = ( +/obj/machinery/light/neon_lining{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/stone, +/area/station/science/xenobiology) "pyk" = ( /obj/structure/girder, /obj/effect/decal/cleanable/dirt, @@ -49453,20 +49550,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/cargo/warehouse) -"pCX" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/item/storage/book/bible, -/turf/open/floor/carpet/red, -/area/station/service/chapel) "pDa" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -49679,6 +49762,7 @@ /obj/machinery/holopad, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) "pFS" = ( @@ -49749,6 +49833,10 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/cargo/storage) +"pGs" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/security/prison/safe) "pGA" = ( /obj/structure/sink/directional/east, /obj/effect/decal/cleanable/dirt, @@ -49793,10 +49881,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/main) -"pGJ" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/starboard) "pGM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -50165,6 +50249,10 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/server) +"pNa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/closed/wall/r_wall, +/area/station/science/xenobiology) "pNc" = ( /obj/structure/statue/sandstone/assistant, /turf/open/floor/glass/plasma, @@ -50311,20 +50399,6 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"pPw" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/item/storage/book/bible, -/turf/open/floor/carpet/red, -/area/station/service/chapel) "pPC" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /obj/effect/decal/cleanable/dirt, @@ -50876,34 +50950,6 @@ }, /turf/open/floor/iron/dark/corner, /area/station/hallway/primary/port) -"pYC" = ( -/obj/structure/table/wood, -/obj/item/storage/photo_album{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/taperecorder{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/item/camera, -/obj/item/pen{ - pixel_x = -7; - pixel_y = -5 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/camera/directional/west{ - c_tag = "Library Backroom"; - name = "library camera" - }, -/obj/structure/sign/painting/large/library_private{ - dir = 8; - pixel_x = -29 - }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/item/radio/radio_mic, -/turf/open/floor/iron/vaporwave, -/area/station/service/library) "pYO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -51537,6 +51583,7 @@ dir = 8 }, /obj/machinery/duct, +/obj/structure/disposalpipe/segment, /turf/open/floor/stone, /area/station/science/xenobiology) "qiu" = ( @@ -51599,16 +51646,25 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs) -"qjr" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating/rust, -/area/station/maintenance/department/crew_quarters/bar) "qjv" = ( /obj/effect/decal/cleanable/ash, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) +"qjH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/closet/firecloset/wall/directional/north, +/turf/open/floor/iron, +/area/station/security/brig) "qjK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -51767,6 +51823,12 @@ /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) +"qmV" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/starboard) "qmW" = ( /turf/open/floor/engine, /area/station/science/xenobiology) @@ -52467,17 +52529,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/medical/chemistry) -"qyc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron/showroomfloor, -/area/station/medical/pharmacy) "qyA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/box, @@ -52547,6 +52598,15 @@ }, /turf/closed/wall, /area/station/maintenance/port/fore) +"qzI" = ( +/obj/machinery/duct, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/stone, +/area/station/science/xenobiology) "qzJ" = ( /obj/structure/chair/stool/bar/directional/south, /obj/effect/mapping_helpers/broken_floor, @@ -53509,6 +53569,19 @@ /obj/structure/bookcase/random/reference, /turf/open/floor/iron/dark, /area/station/maintenance/starboard/fore) +"qPV" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) "qQg" = ( /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) @@ -53987,12 +54060,6 @@ }, /turf/open/floor/engine, /area/station/ai_monitored/command/nuke_storage) -"qXf" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) "qXn" = ( /obj/machinery/door/airlock/maintenance{ name = "Hydroponics Maintenance" @@ -54206,6 +54273,22 @@ /obj/effect/spawner/structure/electrified_grille, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"raO" = ( +/obj/structure/destructible/cult/item_dispenser/archives/library, +/obj/item/book/codex_gigas{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/storage/fancy/candle_box{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/flashlight/lantern{ + pixel_x = 4 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/cult, +/area/station/service/library) "raS" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/small/directional/east, @@ -54601,6 +54684,13 @@ /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"rgy" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) "rgE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -55786,14 +55876,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/processing) -"ryL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/starboard) "ryW" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -56219,18 +56301,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"rFA" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/railing{ - dir = 4; - layer = 4.1 - }, -/turf/open/space/basic, -/area/space/nearstation) "rFD" = ( /obj/structure/sign/warning/no_smoking{ pixel_x = 30 @@ -56607,13 +56677,6 @@ }, /turf/open/floor/iron, /area/station/security/brig) -"rMp" = ( -/obj/machinery/atmospherics/components/unary/passive_vent/layer2{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) "rMI" = ( /obj/structure/table, /obj/machinery/newscaster/directional/west, @@ -57982,16 +58045,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"sio" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) "six" = ( /obj/structure/closet/secure_closet/evidence, /obj/effect/turf_decal/bot, @@ -59133,6 +59186,13 @@ /obj/structure/sign/warning/secure_area, /turf/closed/wall, /area/station/command/gateway) +"sBE" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/showroomfloor, +/area/station/science/explab) "sBJ" = ( /obj/structure/flora/grass/jungle/a/style_random, /obj/structure/flora/bush/grassy/style_random, @@ -59923,14 +59983,6 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/port/greater) -"sNS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/starboard) "sOi" = ( /obj/effect/turf_decal/bot, /obj/machinery/status_display/door_timer{ @@ -59973,6 +60025,11 @@ /obj/effect/mapping_helpers/airlock/access/any/science/xenobio, /turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) +"sOq" = ( +/obj/machinery/arc_forge, +/obj/effect/turf_decal/stripes, +/turf/open/floor/iron/dark/textured_large, +/area/station/smithing) "sOr" = ( /obj/effect/decal/cleanable/blood/old, /turf/open/floor/glass/plasma, @@ -60678,6 +60735,21 @@ }, /turf/open/floor/iron/dark, /area/station/command/gateway) +"sZt" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + name = "Experimentation Lab"; + space_dir = 4; + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/starboard) "sZw" = ( /obj/machinery/camera/directional/east{ c_tag = "Satellite External Port"; @@ -61152,17 +61224,6 @@ }, /turf/open/floor/iron/dark/corner, /area/station/hallway/primary/starboard) -"thC" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 11; - height = 24; - name = "SS13: Auxiliary Dock, Station-Fore"; - shuttle_id = "whiteship_home"; - width = 35 - }, -/turf/open/space/basic, -/area/space) "thG" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark/textured_large, @@ -61341,6 +61402,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/fore) +"tlh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/structure/closet/firecloset/wall/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/chemistry) "tlu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -61682,12 +61749,23 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/station/solars/port/fore) +"tpq" = ( +/mob/living/basic/blankbody, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) "tpr" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/fore) +"tpv" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/turf/open/floor/iron/showroomfloor, +/area/station/service/bar/atrium) "tpw" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -61911,18 +61989,6 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/cargo/storage) -"tug" = ( -/obj/structure/sign/warning/electric_shock/directional/south, -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/table, -/obj/machinery/microwave, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/commons/fitness/recreation) "tur" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 @@ -61971,13 +62037,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"tuQ" = ( -/obj/machinery/vending/wardrobe/curator_wardrobe, -/obj/effect/turf_decal/delivery/white, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/station_map/engineering/directional/west, -/turf/open/floor/iron/vaporwave, -/area/station/service/library) "tuT" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -62402,6 +62461,12 @@ /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/plating, /area/station/maintenance/department/cargo) +"tCH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/scientist, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) "tCQ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -62413,23 +62478,6 @@ "tCU" = ( /turf/closed/wall, /area/station/maintenance/port/aft) -"tCY" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/structure/sign/nanotrasen{ - pixel_y = 32 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/hallway/primary/central/fore) "tDc" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/crate, @@ -62488,16 +62536,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"tDW" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/showroomfloor, -/area/station/service/bar/atrium) "tEp" = ( /obj/effect/turf_decal/bot, /obj/structure/filingcabinet/chestdrawer, @@ -63024,6 +63062,15 @@ }, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/bomb) +"tNq" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/station/maintenance/starboard) "tNB" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 8 @@ -64939,19 +64986,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/science/ordnance) -"usi" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/chair/office, -/obj/structure/sign/painting/library_private{ - pixel_x = 32 - }, -/obj/effect/landmark/start/librarian, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/vaporwave, -/area/station/service/library) "uso" = ( /obj/effect/turf_decal/delivery, /obj/machinery/suit_storage_unit/engine, @@ -64991,7 +65025,6 @@ }, /obj/effect/mapping_helpers/mail_sorting/science/xenobiology, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light/neon_lining{ dir = 8 }, @@ -65149,7 +65182,6 @@ "uvw" = ( /obj/machinery/airalarm/directional/south, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -65295,6 +65327,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/courtroom) +"uxM" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/structure/closet/firecloset, +/turf/open/floor/iron/dark, +/area/station/science/research) "uxN" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/command/nuke_storage) @@ -65332,6 +65372,10 @@ /obj/effect/mapping_helpers/airlock/access/any/supply/general, /turf/open/floor/iron/dark, /area/station/smithing) +"uyR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) "uyX" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -65790,17 +65834,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard) -"uGT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/chair/comfy/teal{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/blueshield) "uGU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -66381,12 +66414,6 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron, /area/station/hallway/primary/central) -"uQP" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/starboard) "uQS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/table, @@ -66648,6 +66675,13 @@ }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"uWq" = ( +/obj/machinery/vending/wardrobe/curator_wardrobe, +/obj/effect/turf_decal/delivery/white, +/obj/machinery/station_map/engineering/directional/west, +/obj/machinery/computer/security/telescreen/entertainment/directional/south, +/turf/open/floor/cult, +/area/station/service/library) "uWz" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/engine/air, @@ -66727,6 +66761,12 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) +"uXI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/showroomfloor, +/area/station/science/xenobiology) "uXK" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -66852,13 +66892,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/captain/private) -"uZR" = ( -/obj/structure/closet/firecloset, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/research) "uZS" = ( /obj/item/shard, /obj/structure/grille/broken, @@ -68014,6 +68047,14 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/science/xenobiology) +"vqU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) "vrb" = ( /turf/open/floor/iron, /area/station/commons/fitness/recreation) @@ -68915,12 +68956,6 @@ /obj/effect/mapping_helpers/airlock/access/all/command/teleporter, /turf/open/floor/iron/dark, /area/station/command/teleporter) -"vDQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/showroomfloor, -/area/station/science/explab) "vDU" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -69110,14 +69145,6 @@ /obj/structure/sign/warning/secure_area, /turf/closed/wall, /area/station/maintenance/starboard/aft) -"vGv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) "vGA" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/effect/landmark/start/hangover/closet, @@ -69193,6 +69220,15 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron/dark, /area/station/medical/treatment_center) +"vHR" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=HOP"; + location = "Security"; + name = "security navigation beacon" + }, +/turf/open/floor/iron, +/area/station/security/brig) "vHS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -69346,6 +69382,21 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) +"vJM" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/closet/firecloset/wall/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) "vJN" = ( /obj/machinery/growing/tray, /obj/structure/railing{ @@ -69868,18 +69919,6 @@ }, /turf/open/floor/iron, /area/station/engineering/hallway) -"vPW" = ( -/obj/machinery/door/airlock/research{ - id_tag = "ResearchInt"; - name = "Research Division" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/effect/landmark/navigate_destination, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/dark, -/area/station/science/research) "vQf" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/blue{ @@ -70053,6 +70092,16 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/service/chapel/monastery) +"vSL" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) "vTc" = ( /obj/structure/cable, /obj/effect/turf_decal/bot, @@ -70504,17 +70553,6 @@ /obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron/showroomfloor, /area/station/service/bar/atrium) -"vYI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/showroomfloor, -/area/station/service/bar/atrium) "vYX" = ( /obj/structure/disposalpipe/segment, /obj/effect/spawner/random/structure/steam_vent, @@ -70595,6 +70633,21 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/fore) +"vZO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/structure/chemical_manufacturer, +/obj/item/integrated_circuit/chemical, +/obj/item/multitool, +/obj/item/stock_parts/cell/high, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/pharmacy) "wae" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/mix_input{ dir = 1 @@ -71083,7 +71136,6 @@ pixel_y = -24 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -71707,25 +71759,6 @@ }, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/bomb) -"wpN" = ( -/obj/structure/destructible/cult/item_dispenser/archives/library, -/obj/item/book/codex_gigas{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/storage/fancy/candle_box{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/flashlight/lantern{ - pixel_x = 4 - }, -/obj/machinery/computer/security/telescreen/entertainment/directional/south, -/obj/machinery/newscaster/directional/east, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron/vaporwave, -/area/station/service/library) "wpP" = ( /obj/effect/turf_decal/siding/blue{ dir = 8 @@ -72082,6 +72115,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai_upload) +"wwl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured, +/area/station/maintenance/starboard) "wwr" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 @@ -72171,6 +72210,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"wxG" = ( +/obj/machinery/asteroid_magnet{ + center_x = 176; + center_y = 177; + area_size = 7 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/explab) "wxI" = ( /obj/item/kirbyplants{ icon_state = "plant-05" @@ -73266,17 +73316,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/carpet/black, /area/station/security/prison) -"wPS" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/obj/machinery/camera/directional/west{ - c_tag = "Port Hallway Vendors"; - name = "Vacant commisary" - }, -/turf/open/floor/stone, -/area/station/smithing) "wQc" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 @@ -73517,6 +73556,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/glass, /area/station/maintenance/starboard) +"wSW" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Emergency Research Blast Door" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/science/research) "wSY" = ( /obj/machinery/camera/directional/south{ c_tag = "Satellite Antechamber"; @@ -73856,6 +73906,16 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/cargo/warehouse) +"wYQ" = ( +/obj/docking_port/stationary{ + dir = 2; + dwidth = 11; + name = "SS13: Auxiliary Dock, Station-Fore"; + shuttle_id = "whiteship_home"; + width = 35 + }, +/turf/open/space/basic, +/area/space) "wYR" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -74193,7 +74253,8 @@ "xej" = ( /obj/machinery/atmospherics/components/binary/pump/on{ name = "Air to Room"; - dir = 8 + dir = 8; + piping_layer = 4 }, /obj/machinery/light/neon_lining, /obj/effect/turf_decal/tile/purple/half/contrasted, @@ -74308,18 +74369,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/cryo) -"xgC" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/hallway/primary/central/fore) "xgV" = ( /obj/item/trash/candy, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -74784,6 +74833,13 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"xoF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "xoJ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/gibs/down, @@ -74895,6 +74951,21 @@ "xqw" = ( /turf/open/floor/bronze, /area/station/maintenance/department/chapel) +"xqx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/station/science/explab) "xqE" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering/glass{ @@ -75103,6 +75174,18 @@ /obj/item/radio/intercom/directional/east, /turf/closed/wall, /area/station/maintenance/disposal) +"xvd" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/closet/emcloset/wall/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/medical/medbay/central) "xvh" = ( /obj/structure/table, /obj/item/circular_saw, @@ -75675,11 +75758,6 @@ }, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) -"xDq" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/misc/asteroid/airless, -/area/space/nearstation) "xDM" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -75782,7 +75860,6 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/effect/landmark/navigate_destination, /obj/machinery/door/airlock/medical/glass{ id_tag = "medbay_front_door"; @@ -75791,6 +75868,8 @@ /obj/effect/mapping_helpers/airlock/unres{ dir = 8 }, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/dark, /area/station/medical/medbay/lobby) "xFB" = ( @@ -76475,6 +76554,12 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"xSF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/generic, +/mob/living/basic/chicken/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/bridge) "xSG" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 @@ -76640,14 +76725,20 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/fore) -"xVz" = ( -/obj/structure/chair/comfy/brown, -/obj/effect/spawner/random/maintenance, -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/half/contrasted, +"xVy" = ( +/obj/machinery/door/airlock/research{ + id_tag = "ResearchInt"; + name = "Research Division" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/effect/landmark/navigate_destination, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, -/area/station/maintenance/department/crew_quarters/bar) +/area/station/science/research) "xVC" = ( /turf/open/floor/engine/vacuum, /area/station/science/ordnance/bomb) @@ -77006,14 +77097,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/medical/pathology) -"yaC" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/landmark/blobstart, -/obj/effect/landmark/event_spawn, -/obj/effect/spawner/random/trash/mess, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/department/crew_quarters/bar) "yaE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -77312,6 +77395,13 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"yeR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/structure/closet/emcloset/wall/directional/south, +/turf/open/floor/iron/dark/corner, +/area/station/hallway/primary/central/fore) "yfq" = ( /obj/structure/lattice/catwalk, /obj/structure/transit_tube/horizontal{ @@ -77729,7 +77819,8 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "chem-passthrough" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/dark, /area/station/medical/treatment_center) "ylM" = ( @@ -87975,7 +88066,7 @@ dWG uEL igI rzK -eJN +pGs eap uoO bVL @@ -88232,7 +88323,7 @@ dWG lsy cOS oAG -eJN +pGs eap loE met @@ -88489,7 +88580,7 @@ dWG ggT dMh sCH -eJN +pGs eap uoO nTg @@ -89175,7 +89266,7 @@ iMx gnh slr rqG -cop +gJw tiv rfg vtv @@ -89221,7 +89312,7 @@ whj jKJ vjh jeZ -fJr +dMz kJx paM fvr @@ -89424,11 +89515,11 @@ vmZ vmZ vEv pUb -pPw +cbO jAu qbE jAu -pCX +jJr gnp rxp vrs @@ -92056,7 +92147,7 @@ nJF rZW nJF wmq -vHr +tlh mtV vjh sXT @@ -95384,7 +95475,7 @@ lcF pVz clr hjC -nnB +lTb vRs oAd mbL @@ -97705,7 +97796,7 @@ lgy pPf icM vee -fIS +xvd bOa wXJ qYv @@ -97714,7 +97805,7 @@ pdR wOk uGU tuX -mkb +vJM gkv nqH xPS @@ -97732,7 +97823,7 @@ mlc xzr rdA mWx -tug +pjb rnc cXh cXh @@ -98260,7 +98351,7 @@ lIn mxb bVk hAP -isU +qjH dGp spw ijl @@ -98774,7 +98865,7 @@ nJa wTQ qIw hAP -lbE +gRS eWu smR ijl @@ -99507,7 +99598,7 @@ sSJ sSJ sSJ imh -qyc +vZO uNp stz wNQ @@ -99788,7 +99879,7 @@ fHI vJX jPr dwm -sio +akB vpC afT tqq @@ -100302,8 +100393,8 @@ vrb kDc snK sKM -asP -wPS +sOq +czv kQd jhS uno @@ -100513,7 +100604,7 @@ uNO uNO xLX efG -peN +cKv acA pNk xjz @@ -100554,7 +100645,7 @@ iRD bhC ncP bCE -fhx +pcX skH pFr snK @@ -101848,7 +101939,7 @@ avO uAA uAA uAA -mdI +cca wYq kbO rap @@ -102050,7 +102141,7 @@ uNO uNO uNO aIh -wRT +mqL qrv sGj xqJ @@ -102116,7 +102207,7 @@ hyc ihl hyc pUa -aDx +dZA qOC lNf eHH @@ -102323,7 +102414,7 @@ gjL cWy vto ylq -iai +hLN iai rEV nIx @@ -102337,7 +102428,7 @@ eOl oJV rzr rYK -lSa +cKF xcJ krw fgo @@ -102850,13 +102941,13 @@ kHR kHR riQ lbO -cml -cml lbO -cXT -cXT -jCm -cXT +lbO +lbO +lbO +lbO +lbO +lbO jCm cXT jCm @@ -103107,13 +103198,13 @@ koo oTT fcs lbO -eoi -pYC -tuQ -jCm -cYZ -cjp -cXT +raO +hUA +uWq +lbO +dRd +aug +lbO hmn ylP cXT @@ -103364,13 +103455,13 @@ lsm iWr lte aZi -kxU -usi -wpN -jCm -xVz -jVG -yaC +cwo +lQS +nXV +lBa +hMe +him +lbO dAU mkB bEe @@ -103620,14 +103711,14 @@ xlB guK fIw bdk -cml -cml -cml lbO -cXT -gLP -cgT -qjr +lbO +lbO +lbO +lbO +dcf +bWI +lbO hlP gDW cXT @@ -103881,10 +103972,10 @@ lbO ybm hoz jNW -jCm -cXT -cXT -cXT +lbO +lbO +lbO +lbO jCm cXT jCm @@ -103915,7 +104006,7 @@ ych ych ych vVt -aOe +vHR sQa cfL pRP @@ -104418,7 +104509,7 @@ lUD lUD tzI gWw -tuF +fQC kKP qQg bza @@ -104896,7 +104987,7 @@ nSq tPD tPD efG -tCY +mfb pVd gwV okN @@ -104918,7 +105009,7 @@ hLu eNz uJh nYG -uGT +dTO hLu vMX mah @@ -105155,7 +105246,7 @@ pvb jdY wor yip -nwE +yeR jlw tmV jlw @@ -105430,7 +105521,7 @@ nvP jyI hLu mlO -nFt +kKX izz nsm hLu @@ -106205,7 +106296,7 @@ hLu hLu hLu hLu -nuz +cgW hLu hLu cEr @@ -106704,8 +106795,8 @@ yej ijQ naG hJQ -gpS -bMN +bFw +vYn nQk cmG mQN @@ -107218,8 +107309,8 @@ vSq qTC fKl clQ -piB -llH +bFw +vYn kju wiz mZW @@ -107476,7 +107567,7 @@ ejO soB soB hhO -gKg +vYn dtP sSA mQN @@ -107990,7 +108081,7 @@ wiw ikR ikR vYD -bvN +tpv fiY kzG mQN @@ -108246,8 +108337,8 @@ hjJ qTC iFv gTz -jDy -tDW +evs +rgy faZ cYG mZW @@ -108760,8 +108851,8 @@ nTG ijQ mfT qOB -vYI -lYE +iOb +vYn str rFS mQN @@ -109796,7 +109887,7 @@ xPk wtb gfJ bXX -igx +xSF wcV tmD fbF @@ -110052,7 +110143,7 @@ guc pyJ gka jeL -nAE +fBT fiy hMZ ygj @@ -110537,7 +110628,7 @@ cIX fvU nUi iVF -elc +eUe hIs jre rsZ @@ -110843,7 +110934,7 @@ tRL hfp mXI fNe -jiq +phV bax kPO bax @@ -110987,15 +111078,15 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +cOp +acm +acm +acm +qJs aaa aaa aaa @@ -111064,7 +111155,7 @@ lRk fvU lRk lRk -xgC +hIH umq kMt ios @@ -111243,18 +111334,18 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dME +itR +itR +itR +dME aaa aaa aaa @@ -111500,21 +111591,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +dME +mDD +dME +dME +mDD +qVW +gJF +rLW +mDD +dME +acm +qJs aaa aaa aaa @@ -111757,21 +111848,21 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +dME +mDD +fkI +waq +mDD +aKe +nuf +nuf +vAr +sfx +mDD +itR +iEB aaa aaa aaa @@ -112013,22 +112104,22 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +dME +gKB +scp +wTy +aqY +seQ +btt +quu +dgD +dkQ +oTg +cWi +oTg aaa aaa aaa @@ -112269,24 +112360,24 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +dME +wlO +ofH +qgV +itR +qUZ +fSD +ibm +mwj +tZh +mdB +nOL +suj +wYQ aaa aaa aaa @@ -112526,23 +112617,23 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +mDD +lgh +xxM +iyB +jBR +wWB +eCy +iay +gzx +eqx +lSE +pQM +lSE aaa aaa aaa @@ -112649,7 +112740,7 @@ dmp cgs kvJ bax -oCt +kRR fmn aek xOI @@ -112783,23 +112874,23 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +mDD +lxG +gFt +mSq +lLH +wUU +cnq +oNI +hOs +lXP +dME +itR +dgw aaa aaa aaa @@ -113040,23 +113131,23 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +dME +itR +mDD +itR +dME +gIw +nuf +eNb +sTy +ulJ +itR +acm +qJs aaa aaa aaa @@ -113295,23 +113386,23 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +mDD +dME +uCQ +mis +ipE +mDD +eXZ +ngl +lhf +sTy +hRB +itR aaa aaa aaa @@ -113551,24 +113642,24 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +qJs +jyr +aeu +aeu +aeu +aeu +dME +iUV +pQT +rZi +oLG +vfL +wYC +tMG +gUT +ihD +uQt +dME aaa aaa aaa @@ -113809,25 +113900,25 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +dME +hBG +rZi +gMy +amU +dsD +heD +wGs +dME +uZS +itR +mDD +dME +qJs aaa aaa aaa @@ -113934,7 +114025,7 @@ sUY cgu cuV oQk -vHF +xoF jjs cwj cLx @@ -114065,26 +114156,26 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +mDD +cdI +ozw +tNY +xvP +bhR +lFr +jGU +itR +nuf +iQK +efI +dME +acm aaa aaa aaa @@ -114150,7 +114241,7 @@ nJK moD oQH cMj -iDh +imc xwn txl vPd @@ -114322,26 +114413,26 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +dME +mDD +rRD +itR +pCF +dME +mob +gau +vfL +ocg +fdA +oBi +itR +acm aaa aaa aaa @@ -114407,7 +114498,7 @@ vqN bBF vMG maj -aUn +eaB ayh byK mCt @@ -114579,26 +114670,26 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dME +qoW +mNv +rrG +mDD +hzO +cbF +mDD +mWZ +jSF +lds +itR +acm aaa aaa aaa @@ -114664,7 +114755,7 @@ jBh bBF sxB kBP -kBP +wSW kBP vFY ofs @@ -114835,6 +114926,33 @@ aaa aaa aaa aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dME +jvR +fII +qMe +dME +mDD +dME +dME +rvz +rVt +gDS +mDD +acm +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -114848,33 +114966,6 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aeU aeu aeu @@ -114887,7 +114978,7 @@ vJc lev hPl pCg -xHA +iyY nTK aLQ fxz @@ -114921,7 +115012,7 @@ wWD wdf sxB sQT -vPW +xVy sxB aND xDM @@ -115092,27 +115183,27 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dME +hbr +xqm +rsY +dME +aeu +aeu +dME +mDD +dME +dME +dME +qJs aaa aaa aaa @@ -115144,15 +115235,15 @@ qdR lev pzO pit -xHA +uyR jYD eRh iZU -mVj +pyi qik -mVj -mVj -mVj +pyi +pyi +pyi kii krj kii @@ -115347,28 +115438,28 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +ult +ogA +ogA +ogA +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU aaa aaa aaa @@ -115402,12 +115493,12 @@ xTj sOo cyn pFB -jec +diW sZa wPC duz duz -duz +qzI duz duz cSN @@ -115603,29 +115694,29 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +dvN +dvN +ogA +cNZ +ogA +dvN +aeu +aeu +aeu +aeu +aeu +aeu +aeu aeu aaa aaa @@ -115658,8 +115749,8 @@ uQF lev giI wsV -hDs -hDs +uXI +uXI hbW xvx tPY @@ -115860,31 +115951,31 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aeU -aUz aeu -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +wDI +dvN +qvq +dvN +dvN +aap +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu aaa aaa aaa @@ -116117,28 +116208,28 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aeU -aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +dvN +dvN +rvd +dvN +dvN +dvN +aeu +aeu +aeu +aeu +aeu +aeu aeu aeu aeu @@ -116172,7 +116263,7 @@ vJc aZN fPt rAD -bwn +iuz hDs aLQ wUc @@ -116374,27 +116465,27 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +arz +dvN +dvN +dvN +dvN +wDI +aeu +aeu +aeu +aeu +aeu +aeu aeu aeu aeu @@ -116429,7 +116520,7 @@ vJc vJc nOw xHA -tyx +tCH fQr hqv hjI @@ -116630,28 +116721,28 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aeU -aeU +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +dvN +dvN +dvN +dvN +aoz +dvN +dvN +aeu +aeu +aeu +aeu +aeu +aeu +aeu aeu aeu aeu @@ -116686,7 +116777,7 @@ aeu vJc iTo bwn -bwn +iuz xHA xej hjI @@ -116705,7 +116796,7 @@ qmW vAL qmW qmW -lxu +ccu vKU vJc rwu @@ -116752,7 +116843,7 @@ iNF nQO lKq lkF -npy +gJW nwf sNa fur @@ -116887,27 +116978,27 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aeu aeu aeu -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aap +aeU aeU -aUz aeU +dvN +wDI +apm +dvN +dvN +aeu +aeu +aeu +aeu +aeu +aeu +aeu aeu aeu aeu @@ -116962,7 +117053,7 @@ qmW yhM qmW nHC -lxu +ccu vVE vJc bkK @@ -116976,7 +117067,7 @@ mVh gQq imS wzI -gER +uxM pdg dvC cYA @@ -117144,26 +117235,26 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aeU -aeU -aeU aeu aeu aeu aeu aeu aeu -aeu -aaa aeU aeU aeU +dvN +dvN +aoz +bQN +dvN +aap +aeu +aeu +aeu +aeu +aeu aeu aeu aeu @@ -117200,7 +117291,7 @@ aeu wuc vJc vJc -vJc +pNa vJc sQP vJc @@ -117233,7 +117324,7 @@ hZi rwy feZ wzI -uZR +cWP pmD bWZ qGq @@ -117400,20 +117491,20 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aeU -aeU -aeU -aeU aeu aeu aeu aeu aeu +aeU +aeU +aeU +aeu +aap +aoz +thU +dvN +dvN aeu aeu aeu @@ -117457,7 +117548,7 @@ aeu aeu aeu vku -aeU +pcV aeu aeu vJc @@ -117657,9 +117748,9 @@ aaa aaa aaa aaa -aaa -aaa -aaa +aeu +aeu +aap aeU aeU aeU @@ -117667,9 +117758,9 @@ aeu aeu aeu aeu -aeu -aeu -aeu +dvN +dvN +wDI aeu aeu aeu @@ -117913,20 +118004,20 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aeU -aeU -aeU -aeu -aeu aeu aeu aeu +aeU +aeU +aeU +aap aeu aeu aeu +dvN +bRy +dvN +dvN aeu aeu aeu @@ -118170,7 +118261,7 @@ aaa aaa aaa aaa -aaa +aeu aeu aeU aeU @@ -118179,11 +118270,11 @@ aeU aeu aeu aeu -aeu -aeu -aeu -aeu -aeu +aap +dvN +dvN +aoz +aap aeu aeu aeu @@ -118438,7 +118529,7 @@ aeu aeu aeu aeu -aeu +dvN aeu aeu aeu @@ -118686,7 +118777,7 @@ aeu aeu aeu aeu -aeu +aap aeu aeu aeu @@ -118752,7 +118843,7 @@ sJS vgb vOX vOX -uQP +gVu sIX rZV pur @@ -118789,7 +118880,7 @@ wCY rZV lKq tWR -cen +eFO qod bzY meA @@ -119262,12 +119353,12 @@ aeu aeu aeu rZV -dCI -dCI -sNS -jUF -nhr -lmT +gbU +gbU +tNq +kQE +wwl +nUS vOX tDc iYx @@ -119519,12 +119610,12 @@ aaa aeu aeu rZV -bRK +hRH rZV hbS mof rXz -cKX +ejJ rZV tKX nng @@ -119776,7 +119867,7 @@ aaa aaa aaa rZV -pGJ +qmV rZV rZV rZV @@ -119999,9 +120090,9 @@ aeu aeu aeu aeu -aeu +aap aUz -aaa +aeU aaa aaa aaa @@ -120033,7 +120124,7 @@ aaa aaa aaa rZV -llE +sZt rZV aeu aeu @@ -120257,6 +120348,9 @@ aeu aeu aeu aeU +aeU +aeU +aeU aaa aaa aaa @@ -120287,12 +120381,9 @@ aaa aaa aaa aaa -aaa -aaa -aaa -rFA -dMe -emv +aTW +kHe +egQ aeu rZV nwO @@ -120300,7 +120391,7 @@ ryj seS uUc gqZ -ryL +vqU xoJ tgo uVQ @@ -120513,11 +120604,11 @@ aeu aeu aeu aeu -cOp -acm -acm -acm -qJs +aeU +aeU +coy +aeU +aaa aaa aaa aaa @@ -120549,8 +120640,8 @@ aaa aaa aaa aaa -iGw -emv +qPV +egQ sJS lWd pjP @@ -120770,13 +120861,13 @@ aeu aeu aeu aeu -aeu -aeu -dME -itR -itR -itR -dME +aap +aeU +aeU +aeU +aaa +aaa +aaa aaa aaa aaa @@ -120807,7 +120898,7 @@ aaa aaa aaa aeU -vGv +vSL sJS wcj knB @@ -121025,29 +121116,14 @@ aeu aeu aeu aeu -dME -mDD -dME -dME -mDD -qVW -gJF -rLW -mDD -dME -acm -qJs -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU aaa aaa aaa @@ -121055,6 +121131,21 @@ aaa aaa aaa aaa +ohI +acK +acK +acK +acK +acK +ohI +acK +ohI +acK +acK +acK +acK +acK +ohI aaa aaa aaa @@ -121064,7 +121155,7 @@ aaa aaa aaa aUz -vGv +vSL sJS oio diu @@ -121281,30 +121372,15 @@ aeu aeu aeu aeu -dME -mDD -fkI -waq -mDD -aKe -nuf -nuf -vAr -sfx -mDD -itR -iEB -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU aaa aaa aaa @@ -121312,6 +121388,21 @@ aaa aaa aaa aaa +acK +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +acK aaa aeo acm @@ -121321,7 +121412,7 @@ aeo aaa aeU aeU -vGv +vSL sJS bGB jKo @@ -121538,37 +121629,37 @@ aeu aeu aeu aeu -dME -gKB -scp -wTy -aqY -seQ -btt -quu -dgD -dkQ -oTg -cWi -oTg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU aaa aaa aaa aaa aaa aaa +acK +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +acK aaa acK acK @@ -121577,8 +121668,8 @@ acK acK oxT oxT -rMp -vGv +dsi +vSL sJS bpU wST @@ -121795,37 +121886,37 @@ aeu aeu aeu aeu -dME -wlO -ofH -qgV -itR -qUZ -fSD -ibm -mwj -tZh -mdB -nOL -suj -thC -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aap +aeU aaa aaa aaa aaa aaa aaa -oRy -oRy -oRy -oRy -oRy -oRy -oRy -oRy -oRy +acK +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +acK acK acK mcE @@ -121834,8 +121925,8 @@ bsf bsf mcE oxT -xDq -emv +oxT +egQ rZV qts cnb @@ -122052,29 +122143,23 @@ aeu aeu aeu aeu -mDD -lgh -xxM -iyB -jBR -wWB -eCy -iay -gzx -eqx -lSE -pQM -lSE -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU aaa aaa aaa aaa aaa -oRy +acK cBp cBp cBp @@ -122082,17 +122167,23 @@ cBp cBp cBp cBp -oRy +cBp +cBp +cBp +cBp +cBp +cBp +acK acK mcE mcE bhN -bhN +oyY raa mcE mcE -xDq -qXf +oxT +moH rZV sJS sJS @@ -122309,29 +122400,23 @@ aeu aeu aeu aeu -mDD -lxG -gFt -mSq -lLH -wUU -cnq -oNI -hOs -lXP -dME -itR -dgw -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU aaa aaa aaa aaa aaa -oRy +acK cBp cBp cBp @@ -122339,7 +122424,13 @@ cBp cBp cBp cBp -oRy +cBp +cBp +cBp +cBp +cBp +cBp +acK mcE mcE dBz @@ -122349,7 +122440,7 @@ bQt kBM mcE mcE -qXf +moH aeU aeU aUz @@ -122566,29 +122657,23 @@ aeu aeu aeu aeu -dME -itR -mDD -itR -dME -gIw -nuf -eNb -sTy -ulJ -itR -acm -qJs -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU aaa aaa aaa aaa -oRy +ohI cBp cBp cBp @@ -122596,7 +122681,13 @@ cBp cBp cBp cBp -oRy +cBp +cBp +cBp +cBp +cBp +cBp +ohI bsf dLM xoM @@ -122606,7 +122697,7 @@ tiL qlU kpX mcE -qXf +moH aeU aeU aeU @@ -122822,30 +122913,24 @@ aeu aeu aeu aeu -mDD -dME -uCQ -mis -ipE -mDD -eXZ -ngl -lhf -sTy -hRB -itR -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU aaa aaa aaa aaa -oRy +acK cBp cBp cBp @@ -122853,17 +122938,23 @@ cBp cBp cBp cBp -oRy +cBp +cBp +cBp +cBp +cBp +cBp +acK bsf -hxD +wxG nCZ tiL izr pFZ -vDQ -lLZ +dDi +sBE nzT -qXf +moH aeU aaa aaa @@ -123079,30 +123170,24 @@ aeu aeu aeu aeu -dME -iUV -pQT -rZi -oLG -vfL -wYC -tMG -gUT -ihD -uQt -dME -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aUz +aeU aaa aaa aaa aaa -oRy +ohI cBp cBp cBp @@ -123110,14 +123195,20 @@ cBp cBp cBp cBp -oRy +cBp +cBp +cBp +cBp +cBp +cBp +ohI bsf xzw aFp voj voj ogO -voj +xqx lwU mcE oxT @@ -123334,32 +123425,26 @@ aeu aeu aeu aeu +aeU +aeU aeu aeu -dME -hBG -rZi -gMy -amU -dsD -heD -wGs -dME -uZS -itR -mDD -dME -qJs -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU aaa aaa aaa aaa -oRy +acK cBp cBp cBp @@ -123367,13 +123452,19 @@ cBp cBp cBp cBp -oRy +cBp +cBp +cBp +cBp +cBp +cBp +acK mcE mcE xFB ppt dGm -ppt +jwv exv mcE mcE @@ -123590,33 +123681,27 @@ aeu aeu aeu aeu +aeU +aeU +aeU +aap aeu aeu aeu -mDD -cdI -ozw -tNY -xvP -bhR -lFr -jGU -itR -nuf -iQK -efI -dME -acm -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU aaa aaa aaa aaa -oRy +acK cBp cBp cBp @@ -123624,7 +123709,13 @@ cBp cBp cBp cBp -oRy +cBp +cBp +cBp +cBp +cBp +cBp +acK acK mcE mcE @@ -123846,42 +123937,42 @@ aeu aeu aeu aeu +aap +aeU +aUz +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu aeu aeu aeu aeu -dME -mDD -rRD -itR -pCF -dME -mob -gau -vfL -ocg -fdA -oBi -itR -acm -aaa -aaa -aaa -aaa -aaa +aeU +aeU aaa aaa aaa aaa -oRy -oRy -oRy -oRy -oRy -oRy -oRy -oRy -oRy +acK +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +acK acK acK mcE @@ -124103,42 +124194,42 @@ aeu aeu aeu aeu +aeU +aeU +aeU +aeU +aeU +aap aeu aeu aeu aeu aeu -dME -qoW -mNv -rrG -mDD -hzO -cbF -mDD -mWZ -jSF -lds -itR -acm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aeu +aeu +aeu +aeu +aap aaa aaa aaa aaa aaa +acK +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +acK aaa acK acK @@ -124360,42 +124451,42 @@ aeu aeu aeu aeu +aeU +aeU +aeU +tpq +aeU +aeU +aeu +aeu +aeu +aeu +aeu +aeu aeu aeu aeu aeu aeu -dME -jvR -fII -qMe -dME -mDD -dME -dME -rvz -rVt -gDS -mDD -acm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa aaa +acK +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +cBp +acK aaa aaa aaa @@ -124541,122 +124632,122 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(183,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -aeu -dME -hbr -xqm -rsY -dME -aeu -aeu -dME -mDD -dME -dME -dME -qJs -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(183,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeU +aeU +aeU +aeU +aeU +aeU +aap +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aeu +aaa +aaa +aaa +ohI +acK +acK +acK +acK +acK +ohI +acK +ohI +acK +acK +acK +acK +acK +ohI +aaa +aaa +aaa +aaa aeU aeU aeU @@ -124876,13 +124967,16 @@ aeu aeu aeu aeu +aeU +aeU +aeU +cVW +aeU +aeU +aeu aeu aeu aeu -ult -ogA -ogA -ogA aeu aeu aeu @@ -124890,7 +124984,6 @@ aeu aeu aeu aeu -aeU aaa aaa aaa @@ -124907,8 +125000,6 @@ aaa aaa aaa aaa -aaB -aaa aaa aaa aaa @@ -125133,14 +125224,15 @@ aeu aeu aeu aeu -aeu aap -dvN -dvN -ogA -cNZ -ogA -dvN +aeU +aeU +aeU +aeU +aeU +aeu +aeu +aeu aeu aeu aeu @@ -125149,7 +125241,6 @@ aeu aeu aeu aeu -aaa aaa aaa aaa @@ -125391,14 +125482,14 @@ aeu aeu aeu aeu +aeU +aeU +aeU +coy +aeU +aeu +aeu aeu -dvN -wDI -dvN -qvq -dvN -dvN -aap aeu aeu aeu @@ -125648,13 +125739,13 @@ aeu aeu aeu aeu -dvN -dvN -dvN -rvd -dvN -dvN -dvN +aeu +aeu +aeU +aeU +aeU +aeu +aeu aeu aeu aeu @@ -125904,13 +125995,13 @@ aeu aeu aeu aeu -dvN -arz -dvN -dvN -dvN -dvN -wDI +aeu +aeu +aeu +aeu +aeu +aeu +aeu aeu aeu aeu @@ -126160,13 +126251,13 @@ aeu aeu aeu aeu -dvN -dvN -dvN -dvN -aoz -dvN -dvN +aeu +aeu +aeu +aeu +aeu +aeu +aeu aeu aeu aeu @@ -126417,12 +126508,12 @@ aeu aeu aeu aeu -dvN -dvN -wDI -apm -dvN -dvN +aeu +aeu +aeu +aeu +aeu +aeu aeu aeu aeu @@ -126675,12 +126766,12 @@ aeu aeu aeu aeu -dvN -dvN -aoz -bQN -dvN -aap +aeu +aeu +aeu +aeu +aeu +aeu aeu aeu aeu @@ -126931,11 +127022,11 @@ aeu aeu aeu aeu -aap -aoz -thU -dvN -dvN +aeu +aeu +aeu +aeu +aeu aeu aeu aeu @@ -127189,9 +127280,9 @@ aeu aeu aeu aeu -dvN -dvN -wDI +aeu +aeu +aeu aeu aeu aeu @@ -127445,10 +127536,10 @@ aeu aeu aeu aeu -dvN -bRy -dvN -dvN +aeu +aeu +aeu +aeu aeu aeu aeu @@ -127701,11 +127792,11 @@ aeu aeu aeu aeu -aap -dvN -dvN -aoz -aap +aeu +aeu +aeu +aeu +aeu aeu aeu aeu @@ -127960,7 +128051,7 @@ aeu aeu aeu aeu -dvN +aeu aeu aeu aeu diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 9447509cac76..43e7a7b77960 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -396,13 +396,6 @@ /obj/structure/displaycase/trophy, /turf/open/floor/wood, /area/station/service/library) -"ahS" = ( -/obj/structure/toilet/greyscale{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) "ahU" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -891,14 +884,6 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"aqU" = ( -/obj/machinery/asteroid_magnet{ - center_x = 128; - center_y = 58; - area_size = 3 - }, -/turf/open/floor/iron/dark, -/area/station/science/explab) "ara" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/plating, @@ -1361,10 +1346,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/brig) -"azg" = ( -/obj/item/stack/cable_coil, -/turf/open/floor/plating/airless, -/area/space/nearstation) "azn" = ( /obj/machinery/light/small/directional/east, /obj/effect/turf_decal/tile/neutral{ @@ -2330,12 +2311,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/security/brig) -"aPk" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "aPm" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -3418,10 +3393,6 @@ /obj/machinery/station_map/engineering/directional/north, /turf/open/floor/iron, /area/station/security/brig) -"bhu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) "bhy" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/light/directional/north, @@ -3878,15 +3849,6 @@ dir = 4 }, /area/station/service/chapel) -"bpl" = ( -/obj/structure/noticeboard/directional/north{ - desc = "A memorial wall for pinning mementos upon."; - name = "memorial board" - }, -/obj/item/storage/book/bible, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/station/service/chapel/funeral) "bpu" = ( /obj/machinery/airalarm/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -4821,6 +4783,12 @@ }, /turf/open/floor/sandy_dirt, /area/station/service/hydroponics) +"bJC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "bJQ" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/bot, @@ -4862,9 +4830,6 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/checkpoint/medical) -"bKz" = ( -/turf/closed/wall/mineral/plastitanium, -/area/station/security/execution/transfer) "bKB" = ( /obj/structure/table, /obj/item/storage/box/bodybags{ @@ -4959,6 +4924,11 @@ /obj/item/reagent_containers/cup/rag, /turf/open/floor/iron/white, /area/station/medical/abandoned) +"bMv" = ( +/obj/structure/sign/poster/random/directional/north, +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/iron, +/area/mine/maintenance/public) "bMA" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -5382,6 +5352,16 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/dark, /area/station/command/bridge) +"bVu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/artifact_heatingpad{ + dir = 4 + }, +/obj/effect/artifact_spawner, +/turf/open/floor/engine, +/area/station/science/explab) "bVz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6526,6 +6506,10 @@ }, /turf/open/floor/iron/white, /area/station/command/heads_quarters/captain/private) +"cux" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/iron, +/area/mine/maintenance/public) "cuO" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -6885,12 +6869,6 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating/airless, /area/space/nearstation) -"czP" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/item/poster/random_contraband, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "czQ" = ( /obj/machinery/telecomms/server/presets/service, /obj/machinery/light/small/directional/south, @@ -7403,6 +7381,13 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/plating, /area/station/cargo/drone_bay) +"cLS" = ( +/obj/structure/chair/office, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/wood, +/area/station/service/library) "cMb" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -7413,6 +7398,14 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"cMN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/plating, +/area/station/medical/abandoned) "cMQ" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "hopqueue"; @@ -7576,27 +7569,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/station/science/ordnance/office) -"cQc" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Space Bridge Access" - }, -/obj/machinery/button/door/directional/north{ - id = "supplybridge"; - name = "Shuttle Bay Space Bridge Control" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "cQd" = ( /obj/machinery/light/directional/south, /obj/effect/turf_decal/siding/purple{ @@ -7637,6 +7609,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"cRs" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "cRC" = ( /obj/machinery/light/small/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8117,6 +8093,9 @@ /obj/machinery/atm/directional/north, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) +"daA" = ( +/turf/open/floor/iron, +/area/mine/maintenance/public) "daC" = ( /turf/open/floor/wood, /area/station/service/lawoffice) @@ -8253,16 +8232,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine/vacuum, /area/space/nearstation) -"dcN" = ( -/obj/structure/bed, -/obj/item/bedsheet/red, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/airalarm/directional/east, -/obj/machinery/flasher/directional/north{ - id = "IsolationFlash" - }, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) "ddc" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, @@ -8397,6 +8366,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"deT" = ( +/obj/machinery/power/apc/auto_name{ + pixel_y = -25 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/mine/maintenance/public) "deU" = ( /obj/machinery/door/poddoor{ id = "QMLoaddoor"; @@ -8685,6 +8664,11 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/security/interrogation) +"dkT" = ( +/obj/item/book/bible, +/obj/structure/altar_of_gods, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "dkW" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -8753,6 +8737,13 @@ /obj/structure/sign/directions/evac, /turf/closed/wall, /area/station/maintenance/aft/greater) +"dlQ" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "dmu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9414,6 +9405,14 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) +"dAb" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/hollow/reinforced/middle, +/obj/machinery/door/poddoor/shutters/window/preopen{ + id = "Isolation" + }, +/turf/open/floor/plating, +/area/station/security/prison/safe) "dAk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9712,12 +9711,6 @@ }, /turf/open/floor/wood, /area/station/service/library) -"dGa" = ( -/obj/machinery/light/directional/north, -/obj/machinery/portable_atmospherics/canister/plasma, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/turf/open/floor/engine, -/area/station/science/explab) "dGk" = ( /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/iron/white, @@ -9804,6 +9797,20 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/medical/pharmacy) +"dHV" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/effect/landmark/navigate_destination, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron, +/area/station/command/heads_quarters/blueshield) "dIy" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -10032,11 +10039,6 @@ /obj/machinery/bluespace_vendor/directional/south, /turf/open/floor/iron, /area/station/commons/locker) -"dLU" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) "dLY" = ( /obj/structure/table/wood, /obj/item/clothing/head/costume/sombrero/green, @@ -10396,6 +10398,11 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/solars/starboard/fore) +"dRW" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/structure/sign/poster/random/directional/east, +/turf/open/floor/iron, +/area/mine/maintenance/public) "dRY" = ( /obj/structure/chair/office, /obj/effect/landmark/start/hangover, @@ -10681,16 +10688,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"dXR" = ( -/obj/structure/sink/kitchen/directional/south{ - desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; - name = "old sink" - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) "dXU" = ( /turf/open/floor/engine/vacuum, /area/station/science/ordnance/burnchamber) @@ -11553,11 +11550,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/storage) -"elc" = ( -/obj/effect/spawner/random/engineering/atmospherics_portable, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "elm" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -11937,7 +11929,8 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "erG" = ( @@ -12436,6 +12429,10 @@ /obj/item/flashlight/lamp, /turf/open/floor/iron/grimy, /area/station/tcommsat/computer) +"eBQ" = ( +/obj/machinery/artifact_xray, +/turf/open/floor/iron/dark, +/area/station/science/explab) "eBU" = ( /obj/machinery/light/directional/west, /obj/effect/turf_decal/stripes/line{ @@ -12776,12 +12773,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"eLd" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/light/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) "eLh" = ( /obj/structure/sign/poster/contraband/random/directional/north, /obj/effect/spawner/random/structure/crate, @@ -12933,7 +12924,8 @@ name = "Medbay Maintenance" }, /obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) "eNq" = ( @@ -12953,6 +12945,14 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) +"eNH" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/fore) "eNR" = ( /turf/closed/wall, /area/station/ai_monitored/aisat/exterior) @@ -13030,7 +13030,8 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "eQe" = ( @@ -13046,6 +13047,24 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) +"eQm" = ( +/obj/structure/table, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/stack/ducts/fifty, +/obj/item/plunger, +/obj/item/plunger, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 4 + }, +/obj/item/construction/plumbing, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "eQs" = ( /obj/machinery/air_sensor/air_tank, /turf/open/floor/engine/air, @@ -13382,6 +13401,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/brig) +"eXu" = ( +/obj/effect/mapping_helpers/airlock/access/any/supply/general, +/obj/effect/mapping_helpers/airlock/access/any/science/general, +/obj/machinery/door/airlock/mining/glass{ + name = "Asteroid Mining" + }, +/turf/open/floor/iron, +/area/mine/maintenance/public) "eXx" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -13497,6 +13524,14 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) +"eYO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/dark_red/half, +/obj/machinery/light_switch/directional/south{ + pixel_x = 8 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "eYP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -13568,6 +13603,14 @@ /obj/structure/displaycase/labcage, /turf/open/floor/engine, /area/station/command/heads_quarters/rd) +"eZZ" = ( +/obj/machinery/light/directional/south, +/obj/structure/chair/comfy/teal{ + dir = 8 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/cyan, +/area/station/command/heads_quarters/blueshield) "fad" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, @@ -13604,6 +13647,10 @@ /obj/effect/spawner/random/decoration/showcase, /turf/open/floor/carpet, /area/station/command/corporate_showroom) +"fau" = ( +/obj/structure/sink/kitchen/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/execution/education) "faT" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -14216,6 +14263,14 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) +"fkS" = ( +/obj/machinery/firealarm/directional/east, +/obj/machinery/light/directional/east, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/security/execution/education) "fkT" = ( /obj/effect/landmark/start/chaplain, /turf/open/floor/iron/dark, @@ -14308,11 +14363,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/wood, /area/station/service/library) -"flS" = ( -/obj/item/storage/toolbox/emergency, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/port) "fma" = ( /turf/closed/wall/r_wall, /area/station/science/robotics/lab) @@ -14514,6 +14564,19 @@ /obj/item/storage/secure/briefcase, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) +"fqN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "fqR" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, @@ -14664,6 +14727,14 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmospherics_engine) +"fuy" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet/restrooms) "fuA" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/structure/cable, @@ -14673,6 +14744,11 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"fvb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "fvB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -14744,16 +14820,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/engineering/break_room) -"fxh" = ( -/obj/structure/rack, -/obj/item/pickaxe, -/obj/item/pickaxe, -/obj/item/pickaxe, -/obj/item/storage/bag/ore, -/obj/item/storage/bag/ore, -/obj/item/storage/bag/ore, -/turf/open/floor/iron/dark, -/area/station/science/explab) "fxj" = ( /obj/machinery/door/airlock/security{ name = "Court Cell" @@ -14885,14 +14951,6 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics/garden) -"fzE" = ( -/obj/structure/sign/warning/vacuum/external/directional/north, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "fzG" = ( /turf/open/floor/iron/white, /area/station/science/circuits) @@ -16007,17 +16065,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/service/hydroponics) -"fWm" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/item/toy/plush/beeplushie{ - desc = "Maybe hugging this will make you feel better about yourself."; - name = "Therabee" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) "fWw" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line{ @@ -16170,15 +16217,6 @@ }, /turf/open/floor/iron, /area/station/science/lab) -"fYU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/blueshield) "fYX" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -16223,6 +16261,15 @@ }, /turf/open/floor/wood, /area/station/command/heads_quarters/captain/private) +"gab" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "gae" = ( /obj/effect/spawner/xmastree, /turf/open/floor/wood, @@ -16572,16 +16619,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) -"gfD" = ( -/obj/machinery/door/airlock/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "gfU" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/aisat/exterior) @@ -17633,6 +17670,22 @@ "gyQ" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance) +"gzh" = ( +/obj/structure/bed{ + dir = 4; + pixel_y = 4; + pixel_x = -2 + }, +/obj/item/bedsheet/red{ + dir = 4; + pixel_y = 4; + pixel_x = -3 + }, +/obj/effect/turf_decal/tile/dark_red/half{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "gzi" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -17682,10 +17735,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"gAt" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "gAw" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -18734,13 +18783,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/morgue) -"gUs" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/port) "gUt" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -19401,6 +19443,10 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/break_room) +"heN" = ( +/obj/effect/landmark/start/shaft_miner, +/turf/open/floor/iron, +/area/mine/maintenance/public) "heS" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/mop_bucket/janitorialcart, @@ -19701,6 +19747,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"hjT" = ( +/obj/machinery/door/airlock/security{ + id_tag = "IsolationCell"; + name = "Isolation Cell" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/prison/safe) "hkj" = ( /turf/open/floor/plating, /area/station/cargo/drone_bay) @@ -20779,12 +20836,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"hCn" = ( -/obj/structure/sign/warning/vacuum/external/directional/north, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "hCt" = ( /obj/structure/chair/office/light{ dir = 8 @@ -21626,11 +21677,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/brig) -"hSP" = ( -/obj/machinery/space_heater, -/obj/structure/sign/warning/vacuum/external/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "hTn" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -22750,6 +22796,16 @@ }, /turf/open/floor/wood, /area/station/service/library) +"ilE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "ilH" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/camera/directional/north{ @@ -23025,6 +23081,10 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/engineering/main) +"iqf" = ( +/obj/structure/cable, +/turf/closed/wall/r_wall, +/area/station/security/prison/safe) "iqq" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -23337,16 +23397,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"iuc" = ( -/obj/machinery/door/airlock/security{ - id_tag = "IsolationCell"; - name = "Isolation Cell" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/security/permabrig, -/turf/open/floor/iron, -/area/station/security/prison/safe) "iug" = ( /obj/machinery/mechpad, /turf/open/floor/circuit/green, @@ -23413,12 +23463,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) -"ivC" = ( -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/structure/closet/crate, -/turf/open/floor/plating/airless, -/area/space/nearstation) "ivK" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -24152,11 +24196,6 @@ }, /area/station/service/chapel) "iIC" = ( -/obj/structure/sign/map/right{ - desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; - icon_state = "map-right-MS"; - pixel_y = 32 - }, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/computer/station_alert, /turf/open/floor/iron/dark, @@ -25122,12 +25161,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"iUE" = ( -/obj/effect/spawner/random/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "iUJ" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 4 @@ -25308,6 +25341,17 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"iYC" = ( +/obj/structure/rack, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/storage/bag/ore, +/obj/item/storage/bag/ore, +/obj/item/storage/bag/ore, +/obj/machinery/light/directional/west, +/turf/open/floor/iron, +/area/mine/maintenance/public) "iYD" = ( /obj/structure/chair{ dir = 1 @@ -25676,7 +25720,8 @@ /obj/effect/mapping_helpers/airlock/unres{ dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/white, /area/station/medical/treatment_center) "jfr" = ( @@ -26003,13 +26048,9 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "jjU" = ( -/obj/structure/sign/map/left{ - desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; - icon_state = "map-left-MS"; - pixel_y = 32 - }, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/computer/atmos_alert, +/obj/machinery/incident_display/delam/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/main) "jkj" = ( @@ -26571,6 +26612,13 @@ }, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) +"jue" = ( +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "juf" = ( /obj/machinery/telecomms/bus/preset_two, /turf/open/floor/circuit/telecomms/mainframe, @@ -26949,20 +26997,6 @@ }, /turf/open/floor/iron, /area/station/security/office) -"jyO" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/effect/landmark/navigate_destination, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/command/heads_quarters/blueshield) "jyQ" = ( /obj/machinery/computer/records/medical{ dir = 8 @@ -27429,6 +27463,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, /turf/open/space, /area/space/nearstation) +"jJM" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Asteroid Mining" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/any/supply/general, +/obj/effect/mapping_helpers/airlock/access/any/science/general, +/turf/open/floor/plating, +/area/mine/maintenance/public) "jJR" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 4 @@ -27961,15 +28006,6 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/iron, /area/station/cargo/storage) -"jRU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/artifact_heatingpad{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/science/explab) "jSf" = ( /obj/structure/chair/stool/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -28852,6 +28888,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/lockers) +"kjm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron, +/area/mine/maintenance/public) "kjG" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -29371,6 +29413,14 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"ksK" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port) "ksT" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -29646,6 +29696,18 @@ "kwZ" = ( /turf/open/floor/engine/vacuum, /area/station/engineering/atmos) +"kxl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/any/supply/general, +/obj/effect/mapping_helpers/airlock/access/any/science/general, +/turf/open/floor/iron, +/area/mine/maintenance/public) "kxm" = ( /obj/structure/chair, /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -29854,13 +29916,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/teleporter) -"kAE" = ( -/obj/machinery/light/directional/south, -/obj/structure/chair/comfy/teal{ - dir = 8 - }, -/turf/open/floor/carpet/cyan, -/area/station/command/heads_quarters/blueshield) "kAF" = ( /obj/machinery/duct, /turf/open/floor/iron/freezer, @@ -29925,11 +29980,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"kBS" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "kBT" = ( /obj/machinery/door/poddoor/shutters{ id = "teleshutter"; @@ -30192,12 +30242,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) -"kJx" = ( -/obj/structure/chair/office, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/service/library) "kJH" = ( /obj/structure/table/wood, /obj/machinery/light/directional/south, @@ -30353,6 +30397,9 @@ }, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) +"kMk" = ( +/turf/open/floor/glass/reinforced, +/area/station/security/prison/safe) "kMl" = ( /obj/effect/turf_decal/tile/purple, /obj/structure/cable, @@ -31003,6 +31050,28 @@ /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/iron, /area/station/commons/toilet/auxiliary) +"kXi" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Space Bridge Access" + }, +/obj/machinery/button/door/directional/north{ + id = "supplybridge"; + name = "Shuttle Bay Space Bridge Control" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "kXl" = ( /obj/item/radio/intercom/directional/north, /obj/structure/disposalpipe/segment{ @@ -31613,6 +31682,25 @@ }, /turf/open/floor/iron/white, /area/station/science/research) +"ljx" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Space Bridge Access" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/button/door/directional/north{ + id = "supplybridge"; + name = "Shuttle Bay Space Bridge Control" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) "ljD" = ( /obj/structure/extinguisher_cabinet/directional/east, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -31762,6 +31850,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/break_room) +"lmd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark_red/anticorner{ + dir = 8 + }, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = -5 + }, +/obj/structure/table/reinforced, +/obj/item/toy/crayon/red{ + pixel_x = 8 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "lme" = ( /obj/machinery/firealarm/directional/west, /obj/machinery/light/directional/west, @@ -32784,11 +32888,6 @@ /obj/effect/spawner/random/engineering/tank, /turf/open/floor/plating, /area/station/maintenance/port) -"lEF" = ( -/obj/structure/frame/machine, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/space/nearstation) "lEH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -32848,15 +32947,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"lGR" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "lGS" = ( /obj/docking_port/stationary/public_mining_dock, /turf/open/floor/plating, @@ -33177,6 +33267,16 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"lMN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/wood, +/area/station/command/heads_quarters/blueshield) "lMW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -34614,10 +34714,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"mlH" = ( -/obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "mlK" = ( /obj/item/radio/intercom/directional/west, /obj/effect/turf_decal/tile/red{ @@ -34975,6 +35071,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/fore) +"mst" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "msI" = ( /turf/closed/wall, /area/station/security/bitden) @@ -35418,11 +35518,6 @@ /obj/effect/landmark/navigate_destination/dockescpod3, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"mzD" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/tinted, -/turf/open/floor/plating, -/area/station/security/prison/safe) "mzI" = ( /obj/machinery/door/airlock/grunge{ name = "Prison Workshop" @@ -36292,6 +36387,15 @@ /obj/machinery/holopad, /turf/open/floor/iron, /area/station/cargo/storage) +"mOb" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/dark_red/anticorner{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "mOi" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -36571,11 +36675,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) -"mTY" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) "mUf" = ( /obj/effect/turf_decal/box/white, /obj/effect/turf_decal/arrows/white{ @@ -36749,6 +36848,15 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"mWY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "mWZ" = ( /obj/item/folder/red, /obj/item/pen, @@ -38269,11 +38377,6 @@ /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron/dark, /area/station/commons/dorms) -"nwi" = ( -/obj/machinery/space_heater, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "nwC" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -38712,13 +38815,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/storage) -"nDF" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/fore) "nDP" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -38782,6 +38878,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/execution/education) +"nEN" = ( +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/access/any/supply/general, +/obj/effect/mapping_helpers/airlock/access/any/science/general, +/turf/open/floor/plating, +/area/mine/maintenance/public) "nEZ" = ( /obj/machinery/plate_press, /obj/effect/turf_decal/bot, @@ -38874,6 +38981,10 @@ /obj/structure/chair/stool/directional/east, /turf/open/floor/wood, /area/station/commons/lounge) +"nGS" = ( +/obj/structure/ghost_critter_spawn, +/turf/open/floor/plating, +/area/station/maintenance/port) "nHn" = ( /obj/item/hand_labeler, /obj/item/stack/package_wrap, @@ -39254,17 +39365,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"nOz" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "nOK" = ( /obj/effect/turf_decal/stripes/white/line, /obj/effect/turf_decal/stripes/white/line{ @@ -40177,10 +40277,6 @@ /obj/effect/spawner/random/engineering/flashlight, /turf/open/floor/iron/dark, /area/station/command/teleporter) -"ofQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "ofS" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -40358,13 +40454,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/maintenance/port/aft) -"oiX" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/port) "ojo" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -40952,6 +41041,13 @@ /obj/item/reagent_containers/cup/glass/bottle/goldschlager, /turf/open/space/basic, /area/space/nearstation) +"ouH" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "ouM" = ( /obj/structure/sign/painting/library{ pixel_y = -32 @@ -41035,6 +41131,9 @@ }, /turf/closed/wall/r_wall, /area/station/engineering/atmos/storage/gas) +"ovq" = ( +/turf/closed/wall, +/area/mine/maintenance/public) "ovy" = ( /obj/machinery/light/directional/south, /obj/effect/landmark/generic_maintenance_landmark, @@ -41146,6 +41245,24 @@ /obj/item/reagent_containers/cup/beaker/large, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"oxs" = ( +/obj/machinery/light/directional/west, +/obj/machinery/button/flasher{ + id = "IsolationFlash"; + pixel_x = -24; + pixel_y = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/button/door/directional/west{ + id = "Isolation"; + req_access = list("brig"); + pixel_y = -9; + pixel_x = -23 + }, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "oxx" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -41309,6 +41426,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/space, /area/space/nearstation) +"oBb" = ( +/obj/structure/lattice/catwalk, +/obj/effect/artifact_spawner, +/turf/open/space/basic, +/area/space/nearstation) "oBq" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/disposalpipe/segment, @@ -41540,12 +41662,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"oEO" = ( -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/structure/closet/crate, -/turf/open/floor/plating/airless, -/area/space/nearstation) "oEP" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -41614,21 +41730,6 @@ dir = 1 }, /area/station/engineering/atmos/pumproom) -"oFR" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Cargo Bay Bridge Access" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "north-maint-viewingdeck" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "oFS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -41784,10 +41885,6 @@ /obj/effect/mapping_helpers/airlock/access/all/science/research, /turf/open/floor/iron/white, /area/station/science/circuits) -"oIr" = ( -/obj/structure/ghost_critter_spawn, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "oIG" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, @@ -42291,10 +42388,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"oTD" = ( -/obj/structure/frame/computer, -/turf/open/floor/plating/airless, -/area/space/nearstation) "oTK" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/flasher/directional/west{ @@ -43336,6 +43429,12 @@ /obj/machinery/air_sensor/carbon_tank, /turf/open/floor/engine/co2, /area/station/engineering/atmos) +"pnF" = ( +/obj/effect/turf_decal/tile/dark_red/half{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "pnH" = ( /turf/closed/wall/r_wall, /area/station/maintenance/disposal/incinerator) @@ -43827,11 +43926,6 @@ /obj/machinery/telecomms/processor/preset_four, /turf/open/floor/circuit/telecomms/mainframe, /area/station/tcommsat/server) -"pwq" = ( -/obj/item/storage/book/bible, -/obj/structure/altar_of_gods, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "pwx" = ( /obj/structure/chair{ dir = 4 @@ -43991,12 +44085,6 @@ }, /turf/open/floor/iron, /area/station/science/circuits) -"pzu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/wood, -/area/station/smithing) "pzz" = ( /obj/item/kirbyplants{ icon_state = "plant-21" @@ -44742,12 +44830,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"pOi" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "pOj" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, @@ -45499,6 +45581,13 @@ "qcd" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos/pumproom) +"qcw" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/sign/poster/official/random/directional/east, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "qcz" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -45899,10 +45988,6 @@ /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"qiz" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "qiY" = ( /obj/machinery/growing/tray, /obj/effect/turf_decal/bot, @@ -46596,11 +46681,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"quc" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/burgundy, -/turf/open/space/basic, -/area/space/nearstation) "qul" = ( /obj/machinery/power/terminal, /obj/effect/turf_decal/stripes/line, @@ -46913,10 +46993,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"qAe" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space) "qAA" = ( /obj/machinery/newscaster/directional/east, /obj/machinery/computer/security/mining{ @@ -47090,6 +47166,12 @@ /obj/machinery/computer/records/medical/laptop, /turf/open/floor/iron/white, /area/station/security/medical) +"qDD" = ( +/obj/item/storage/toolbox/emergency, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port) "qDI" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -47103,6 +47185,16 @@ }, /turf/open/floor/iron, /area/station/security/prison/garden) +"qDU" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "qEb" = ( /obj/structure/chair/pew/right, /turf/open/floor/iron/chapel, @@ -47145,7 +47237,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/plating, /area/station/maintenance/aft/greater) "qFj" = ( @@ -47363,6 +47456,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) +"qJs" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/machinery/door/firedoor, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "qJx" = ( /obj/machinery/light/directional/north, /obj/item/storage/secure/briefcase, @@ -47422,6 +47523,17 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"qKD" = ( +/obj/item/book/bible, +/obj/machinery/light/small/directional/north, +/obj/machinery/newscaster/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Chapel - Fore" + }, +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "qKR" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, @@ -48084,6 +48196,14 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/service) +"qWq" = ( +/obj/machinery/asteroid_magnet{ + center_x = 32; + center_y = 166; + area_size = 7 + }, +/turf/open/floor/iron, +/area/mine/maintenance/public) "qWw" = ( /obj/structure/closet/boxinggloves, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -48387,11 +48507,6 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron, /area/station/service/bar) -"rbi" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "rbs" = ( /obj/structure/cable, /obj/structure/table, @@ -49473,6 +49588,14 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) +"rwB" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port) "rwE" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -49788,6 +49911,15 @@ }, /turf/open/floor/iron, /area/station/engineering/main) +"rBh" = ( +/obj/structure/noticeboard/directional/north{ + desc = "A memorial wall for pinning mementos upon."; + name = "memorial board" + }, +/obj/item/book/bible, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/station/service/chapel/funeral) "rBi" = ( /obj/machinery/airalarm/directional/west, /obj/effect/turf_decal/stripes/line{ @@ -49816,6 +49948,12 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/science/research) +"rBG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/mine/maintenance/public) "rBU" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -50562,10 +50700,6 @@ /obj/structure/sign/directions/cryo/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"rOz" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "rOA" = ( /obj/structure/cable, /obj/structure/bed/dogbed/mcgriff, @@ -50893,6 +51027,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) +"rTP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/mine/maintenance/public) "rTQ" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/neutral{ @@ -51474,6 +51614,10 @@ /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/open/floor/iron, /area/station/engineering/atmos) +"scR" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/mine/maintenance/public) "scY" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -51555,6 +51699,17 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"sdF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/dark_red/anticorner, +/obj/machinery/camera/directional/east{ + c_tag = "Prison Isolation Cell"; + network = list("ss13","prison","isolation") + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "sdL" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /obj/machinery/camera/directional/east{ @@ -51754,12 +51909,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"shg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/fore) "shs" = ( /obj/structure/chair/comfy/black{ dir = 4 @@ -51928,12 +52077,6 @@ /obj/structure/cable, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/entry) -"slI" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) "smg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /obj/effect/mapping_helpers/airlock/locked, @@ -52264,17 +52407,6 @@ /obj/item/radio/intercom/prison/directional/north, /turf/open/floor/iron, /area/station/security/execution/transfer) -"ssi" = ( -/obj/item/storage/book/bible, -/obj/machinery/light/small/directional/north, -/obj/machinery/newscaster/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "Chapel - Fore" - }, -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "ssk" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/engineering_hacking{ @@ -52388,7 +52520,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/white, /area/station/medical/treatment_center) "stI" = ( @@ -52500,7 +52633,8 @@ id_tag = "MedbayFoyer"; name = "Medbay" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "svS" = ( @@ -53021,13 +53155,6 @@ "sFw" = ( /turf/open/floor/iron/chapel, /area/station/service/chapel) -"sGa" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "sGh" = ( /obj/effect/landmark/generic_maintenance_landmark, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53093,6 +53220,17 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) +"sGX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/flasher/directional/east{ + id = "IsolationFlash" + }, +/obj/effect/turf_decal/tile/dark_red/half{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "sGZ" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -53271,6 +53409,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"sKo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/fore) "sKr" = ( /obj/structure/window/spawner/directional/south, /obj/structure/window/spawner/directional/east, @@ -54180,17 +54325,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/science/xenobiology) -"sZP" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/station/hallway/secondary/entry) "sZU" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -54313,7 +54447,6 @@ name = "Engineering Security Doors" }, /obj/effect/turf_decal/caution/stand_clear, -/obj/machinery/incident_display/delam/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/break_room) "tcx" = ( @@ -56883,6 +57016,10 @@ }, /turf/open/floor/iron/checker, /area/station/engineering/atmos/storage/gas) +"tYI" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "tYO" = ( /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/science/rd, @@ -56999,6 +57136,11 @@ /obj/structure/cable, /turf/open/floor/plating/airless, /area/space/nearstation) +"uaz" = ( +/obj/machinery/portable_atmospherics/canister/plasma, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/engine, +/area/station/science/explab) "uaB" = ( /obj/machinery/power/turbine/core_rotor{ dir = 4; @@ -57407,6 +57549,7 @@ dir = 1 }, /obj/structure/sign/poster/official/moth_piping/directional/north, +/obj/structure/tank_dispenser, /turf/open/floor/iron/dark, /area/station/science/ordnance) "uhu" = ( @@ -57423,6 +57566,17 @@ /obj/machinery/meter, /turf/open/floor/iron, /area/station/engineering/atmos) +"uhO" = ( +/obj/structure/toilet/greyscale{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark_red/anticorner{ + dir = 1 + }, +/obj/item/toy/plush/pooba_bee_plush, +/obj/machinery/light/small/warm/directional/west, +/turf/open/floor/iron/white, +/area/station/security/prison/safe) "uhP" = ( /obj/structure/chair/stool/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57904,18 +58058,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"urf" = ( -/obj/structure/closet/secure_closet/injection{ - name = "educational injections locker"; - pixel_x = 2 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) "urs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, @@ -58148,11 +58290,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) -"uuD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "uuE" = ( /obj/structure/chair/office/light{ dir = 8 @@ -58488,15 +58625,6 @@ /obj/structure/fans/tiny, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) -"uAE" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "uAF" = ( /obj/structure/railing{ dir = 1 @@ -58608,6 +58736,17 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"uCs" = ( +/obj/effect/landmark/start/scientist, +/turf/open/floor/iron, +/area/mine/maintenance/public) +"uCD" = ( +/obj/structure/sign/poster/official/random/directional/east, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "uCG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/spawner/random/trash/garbage{ @@ -59328,12 +59467,6 @@ /obj/effect/turf_decal/tile/purple/half/contrasted, /turf/open/floor/iron/white, /area/station/science/lobby) -"uPp" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "uPQ" = ( /obj/machinery/door/airlock/virology{ frequency = 1449; @@ -59734,6 +59867,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/iron/dark, /area/station/security/execution/education) +"uYo" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "uYp" = ( /turf/closed/wall, /area/station/medical/break_room) @@ -59812,16 +59951,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"vae" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/camera/directional/east{ - c_tag = "Prison Isolation Cell"; - network = list("ss13","prison","isolation") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) "vaB" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -60826,6 +60955,10 @@ /obj/effect/mapping_helpers/mail_sorting/engineering/general, /turf/open/floor/iron, /area/station/engineering/main) +"vtr" = ( +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark, +/area/station/science/explab) "vtx" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line{ @@ -61047,14 +61180,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/storage) -"vzG" = ( -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/cafeteria, -/area/station/hallway/secondary/entry) "vzI" = ( /obj/structure/table, /obj/effect/turf_decal/stripes/line, @@ -61143,13 +61268,6 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"vBW" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet/restrooms) "vBY" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/bar{ @@ -61391,11 +61509,6 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"vFb" = ( -/obj/structure/lattice/catwalk, -/obj/item/binoculars, -/turf/open/space/basic, -/area/space/nearstation) "vFk" = ( /obj/structure/window/reinforced/spawner/directional/north{ pixel_y = 1 @@ -61526,6 +61639,14 @@ }, /turf/open/floor/wood, /area/station/cargo/quartermaster) +"vHK" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/entry) "vHO" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, @@ -62175,14 +62296,6 @@ "vTX" = ( /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) -"vUx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) "vUM" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -62197,11 +62310,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/brig) -"vVq" = ( -/obj/machinery/light/directional/south, -/obj/machinery/artifact_xray, -/turf/open/floor/iron/dark, -/area/station/science/explab) "vVr" = ( /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, @@ -62544,6 +62652,11 @@ /obj/effect/turf_decal/tile/yellow/half/contrasted, /turf/open/floor/iron/white, /area/station/medical/chemistry) +"vZL" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/machinery/light/directional/east, +/turf/open/floor/iron, +/area/mine/maintenance/public) "vZM" = ( /obj/machinery/airalarm/directional/south, /obj/item/stack/package_wrap{ @@ -63689,6 +63802,10 @@ /obj/machinery/computer/order_console/mining, /turf/open/floor/iron, /area/station/cargo/miningoffice) +"wvJ" = ( +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark, +/area/station/science/explab) "wvP" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/iv_drip, @@ -64493,6 +64610,12 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"wMY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/mine/maintenance/public) "wNa" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/purple{ @@ -64973,12 +65096,6 @@ /obj/structure/reagent_dispensers/fueltank/large, /turf/open/floor/iron, /area/station/engineering/atmos) -"wTF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "wTO" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -65806,6 +65923,13 @@ "xhh" = ( /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) +"xij" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/wood, +/area/station/smithing) "xip" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /obj/effect/turf_decal/bot, @@ -65884,6 +66008,10 @@ }, /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai) +"xjd" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/port/aft) "xjh" = ( /turf/closed/wall, /area/station/security/checkpoint/customs) @@ -66128,18 +66256,6 @@ /obj/structure/cable, /turf/open/floor/wood/parquet, /area/station/medical/psychology) -"xnS" = ( -/obj/machinery/light/directional/west, -/obj/machinery/button/flasher{ - id = "IsolationFlash"; - pixel_x = -23; - pixel_y = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "xnT" = ( /obj/structure/cable, /obj/machinery/airalarm/directional/south, @@ -66446,27 +66562,6 @@ }, /turf/open/floor/iron, /area/station/engineering/gravity_generator) -"xtr" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Space Bridge Access" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/button/door/directional/north{ - id = "supplybridge"; - name = "Shuttle Bay Space Bridge Control" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "north-maint-viewingdeck" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "xtu" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/iv_drip, @@ -66734,23 +66829,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"xyA" = ( -/obj/structure/table, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/stack/ducts/fifty, -/obj/item/plunger, -/obj/item/plunger, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) "xyI" = ( /obj/machinery/door/window/left/directional/south{ dir = 8; @@ -67833,12 +67911,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/break_room) -"xTT" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "xUb" = ( /obj/machinery/firealarm/directional/west, /obj/structure/disposalpipe/segment, @@ -68415,14 +68487,6 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/dark, /area/station/engineering/transit_tube) -"ycr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "ycv" = ( /turf/open/floor/iron/white, /area/station/science/xenobiology) @@ -73870,7 +73934,7 @@ aaa aaa aaa aaa -aaa +lKu aaa aaa aaa @@ -74111,7 +74175,7 @@ aaa aaa aaa aaa -aaa +aac aaa aaa aaa @@ -74631,6 +74695,25 @@ aaa aaa aaa aaa +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt aaa aaa aaa @@ -74787,6 +74870,8 @@ aaa aaa aaa aaa +"} +(24,1,1) = {" aaa aaa aaa @@ -74806,8 +74891,6 @@ aaa aaa aaa aaa -"} -(24,1,1) = {" aaa aaa aaa @@ -74838,6 +74921,7 @@ aaa aaa aaa aaa +uXt aaa aaa aaa @@ -74857,7 +74941,6 @@ aaa aaa aaa aaa -uXt aaa aaa aaa @@ -74869,6 +74952,25 @@ aaa aaa aaa aaa +rrt +oPS +aox +aox +aox +aox +aox +aox +oPS +aox +oPS +aox +aox +aox +aox +aox +aox +oPS +rrt aaa aaa aaa @@ -74906,6 +75008,7 @@ aaa aaa aaa aaa +aac aaa aaa aaa @@ -74944,7 +75047,6 @@ aaa aaa aaa aaa -aac aaa aaa aaa @@ -75025,6 +75127,8 @@ aaa aaa aaa aaa +"} +(25,1,1) = {" aaa aaa aaa @@ -75063,8 +75167,6 @@ aaa aaa aaa aaa -"} -(25,1,1) = {" aaa aaa aaa @@ -75107,6 +75209,25 @@ aaa aaa aaa aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt aaa aaa aaa @@ -75263,6 +75384,8 @@ aaa aaa aaa aaa +"} +(26,1,1) = {" aaa aaa aaa @@ -75320,8 +75443,6 @@ aaa aaa aaa aaa -"} -(26,1,1) = {" aaa aaa aaa @@ -75345,7 +75466,27 @@ aaa aaa aaa aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt aaa +aac aaa aaa aaa @@ -75422,7 +75563,6 @@ aaa aaa aaa aaa -aac aaa aaa aaa @@ -75501,6 +75641,8 @@ aaa aaa aaa aaa +"} +(27,1,1) = {" aaa aaa aaa @@ -75577,8 +75719,31 @@ aaa aaa aaa aaa -"} -(27,1,1) = {" +aaa +aaa +aaa +aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt +aaa +aaa aaa aaa aaa @@ -75733,6 +75898,8 @@ aaa aaa aaa aaa +"} +(28,1,1) = {" aaa aaa aaa @@ -75813,6 +75980,25 @@ aaa aaa aaa aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt aaa aaa aaa @@ -75834,8 +76020,6 @@ aaa aaa aaa aaa -"} -(28,1,1) = {" aaa aaa aaa @@ -75971,6 +76155,8 @@ aaa aaa aaa aaa +"} +(29,1,1) = {" aaa aaa aaa @@ -76051,6 +76237,25 @@ aaa aaa aaa aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt aaa aaa aaa @@ -76091,8 +76296,6 @@ aaa aaa aaa aaa -"} -(29,1,1) = {" aaa aaa aaa @@ -76173,7 +76376,6 @@ aaa aaa aaa aaa -aac aaa aaa aaa @@ -76210,6 +76412,8 @@ aaa aaa aaa aaa +"} +(30,1,1) = {" aaa aaa aaa @@ -76290,6 +76494,25 @@ aaa aaa aaa aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt aaa aaa aaa @@ -76348,8 +76571,6 @@ aaa aaa aaa aaa -"} -(30,1,1) = {" aaa aaa aaa @@ -76436,13 +76657,6 @@ aaa aaa aaa aaa -blx -blx -anS -gAe -anS -blx -blx aaa aaa aaa @@ -76455,6 +76669,8 @@ aaa aaa aaa aaa +"} +(31,1,1) = {" aaa aaa aaa @@ -76535,6 +76751,25 @@ aaa aaa aaa aaa +rrt +oPS +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +oPS +rrt aaa aaa aaa @@ -76544,8 +76779,10 @@ aaa aaa aaa aaa +oPS aaa aaa +fxr aaa aaa aaa @@ -76557,15 +76794,19 @@ aaa aaa aaa aaa +oPS aaa aaa +oPS aaa aaa aaa aaa aaa +oPS aaa aaa +oPS aaa aaa aaa @@ -76605,8 +76846,6 @@ aaa aaa aaa aaa -"} -(31,1,1) = {" aaa aaa aaa @@ -76687,19 +76926,19 @@ aaa aaa aaa aaa +"} +(32,1,1) = {" aaa aaa aaa aaa aaa aaa -blx aaa aaa aaa aaa aaa -blx aaa aaa aaa @@ -76715,10 +76954,8 @@ aaa aaa aaa aaa -oPS aaa aaa -fxr aaa aaa aaa @@ -76730,19 +76967,15 @@ aaa aaa aaa aaa -oPS aaa aaa -oPS aaa aaa aaa aaa aaa -oPS aaa aaa -oPS aaa aaa aaa @@ -76775,6 +77008,25 @@ aaa aaa aaa aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt aaa aaa aaa @@ -76784,8 +77036,10 @@ aaa aaa aaa aaa +lMJ aaa aaa +lMJ aaa aaa aaa @@ -76797,15 +77051,19 @@ aaa aaa aaa aaa +lMJ aaa aaa +lMJ aaa aaa aaa aaa aaa +lMJ aaa aaa +lMJ aaa aaa aaa @@ -76862,8 +77120,6 @@ aaa aaa aaa aaa -"} -(32,1,1) = {" aaa aaa aaa @@ -76927,6 +77183,8 @@ aaa aaa aaa aaa +"} +(33,1,1) = {" aaa aaa aaa @@ -76950,13 +77208,7 @@ aaa aaa aaa aaa -lMJ -lMJ -oEO -lMJ -anS aaa -anS aaa aaa aaa @@ -76972,10 +77224,8 @@ aaa aaa aaa aaa -lMJ aaa aaa -lMJ aaa aaa aaa @@ -76987,19 +77237,15 @@ aaa aaa aaa aaa -lMJ aaa aaa -lMJ aaa aaa aaa aaa aaa -lMJ aaa aaa -lMJ aaa aaa aaa @@ -77019,6 +77265,25 @@ aaa aaa aaa aaa +rrt +oPS +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +oPS +rrt aaa aaa aaa @@ -77028,8 +77293,10 @@ aaa aaa aaa aaa +lMJ aaa aaa +lMJ aaa aaa aaa @@ -77041,15 +77308,19 @@ aaa aaa aaa aaa +lMJ aaa aaa +lMJ aaa aaa aaa aaa aaa +lMJ aaa aaa +lMJ aaa aaa aaa @@ -77119,8 +77390,6 @@ aaa aaa aaa aaa -"} -(33,1,1) = {" aaa aaa aaa @@ -77171,6 +77440,8 @@ aaa aaa aaa aaa +"} +(34,1,1) = {" aaa aaa aaa @@ -77209,11 +77480,7 @@ aaa aaa aaa aaa -anS -anS -anS aaa -lMJ aaa aaa aaa @@ -77229,10 +77496,8 @@ aaa aaa aaa aaa -lMJ aaa aaa -lMJ aaa aaa aaa @@ -77244,10 +77509,42 @@ aaa aaa aaa aaa -lMJ aaa aaa -lMJ +aaa +aaa +aaa +lKu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt +aaa +aaa +aaa +aaa aaa aaa aaa @@ -77268,15 +77565,19 @@ aaa aaa aaa aaa +lMJ aaa aaa +lMJ aaa aaa aaa aaa aaa +lMJ aaa aaa +lMJ aaa aaa aaa @@ -77376,8 +77677,6 @@ aaa aaa aaa aaa -"} -(34,1,1) = {" aaa aaa aaa @@ -77398,6 +77697,8 @@ aaa aaa aaa aaa +"} +(35,1,1) = {" aaa aaa aaa @@ -77464,13 +77765,9 @@ aaa aaa aaa aaa -anS aaa -lMJ -lMJ aaa aaa -lMJ aaa aaa aaa @@ -77482,6 +77779,30 @@ aaa aaa aaa aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -77634,7 +77955,7 @@ aaa aaa aaa "} -(35,1,1) = {" +(36,1,1) = {" aaa aaa aaa @@ -77715,19 +78036,62 @@ aaa aaa aaa aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt +aaa +aaa +oPS +lMJ +eeg +wdr +wdr +wdr +wdr +wdr +qEt +qEt +qEt +qEt +aaa aaa aaa aaa aaa aaa aaa -anS aaa +aaa +qEt +qEt +qEt +qEt +qEt lMJ -anS lMJ -aaa lMJ +lMJ +lMJ +qEt +qEt +qEt +qEt aaa aaa aaa @@ -77743,10 +78107,8 @@ aaa aaa aaa aaa -lMJ aaa aaa -lMJ aaa aaa aaa @@ -77758,19 +78120,15 @@ aaa aaa aaa aaa -lMJ aaa aaa -lMJ aaa aaa aaa aaa aaa -lMJ aaa aaa -lMJ aaa aaa aaa @@ -77853,6 +78211,8 @@ aaa aaa aaa aaa +"} +(37,1,1) = {" aaa aaa aaa @@ -77890,8 +78250,6 @@ aaa aaa aaa aaa -"} -(36,1,1) = {" aaa aaa aaa @@ -77935,6 +78293,25 @@ aaa aaa aaa aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt aaa aaa aaa @@ -77942,6 +78319,13 @@ aaa aaa aaa aaa +wdr +vvW +mtL +kFT +nDP +qEt +lMJ aaa aaa aaa @@ -77951,6 +78335,22 @@ aaa aaa aaa aaa +lMJ +qEt +ndI +nDP +qEt +aox +oPS +aox +oPS +aox +qEt +jjS +nDP +qEt +qEt +qEt aaa aaa aaa @@ -77978,13 +78378,7 @@ aaa aaa aaa aaa -blx -lMJ -anS -anS -anS aaa -blx aaa aaa aaa @@ -77993,18 +78387,6 @@ aaa aaa aaa aaa -oPS -lMJ -eeg -wdr -wdr -wdr -wdr -wdr -qEt -qEt -qEt -qEt aaa aaa aaa @@ -78014,20 +78396,6 @@ aaa aaa aaa aaa -qEt -qEt -qEt -qEt -qEt -lMJ -lMJ -lMJ -lMJ -lMJ -qEt -qEt -qEt -qEt aaa aaa aaa @@ -78100,6 +78468,8 @@ aaa aaa aaa aaa +"} +(38,1,1) = {" aaa aaa aaa @@ -78147,8 +78517,6 @@ aaa aaa aaa aaa -"} -(37,1,1) = {" aaa aaa aaa @@ -78182,11 +78550,39 @@ aaa aaa aaa aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt aaa aaa +tkr aaa aaa aaa +edl +cSk +auJ +jMZ +oMy +lGL +qHs +lMJ aaa aaa aaa @@ -78196,6 +78592,22 @@ aaa aaa aaa aaa +lMJ +qHs +sCZ +lGL +wdr +lMJ +lMJ +lMJ +lMJ +lMJ +wdr +uZK +lGL +bfk +aSm +bfk aaa aaa aaa @@ -78226,7 +78638,6 @@ aaa aaa aaa aaa -lKu aaa aaa aaa @@ -78235,13 +78646,6 @@ aaa aaa aaa aaa -anS -ivC -anS -lMJ -oEO -lMJ -lMJ aaa aaa aaa @@ -78255,13 +78659,6 @@ aaa aaa aaa aaa -wdr -vvW -mtL -kFT -nDP -qEt -lMJ aaa aaa aaa @@ -78271,22 +78668,6 @@ aaa aaa aaa aaa -lMJ -qEt -ndI -nDP -qEt -aox -oPS -aox -oPS -aox -qEt -jjS -nDP -qEt -qEt -qEt aaa aaa aaa @@ -78344,6 +78725,8 @@ aaa aaa aaa aaa +"} +(39,1,1) = {" aaa aaa aaa @@ -78404,8 +78787,6 @@ aaa aaa aaa aaa -"} -(38,1,1) = {" aaa aaa aaa @@ -78426,6 +78807,25 @@ aaa aaa aaa aaa +rrt +aox +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +yjv +aox +rrt aaa aaa aaa @@ -78433,6 +78833,13 @@ aaa aaa aaa aaa +wdr +dqx +wdr +byg +lGL +qEt +lMJ aaa aaa aaa @@ -78442,11 +78849,23 @@ aaa aaa aaa aaa +lMJ +qEt +yhK +lGL +qEt aaa aaa aaa aaa aaa +qEt +yhK +lGL +bfk +hBD +bfk +fQj aaa aaa aaa @@ -78492,13 +78911,8 @@ aaa aaa aaa aaa -lMJ aaa -anS -anS -anS aaa -lMJ aaa aaa aaa @@ -78507,18 +78921,9 @@ aaa aaa aaa aaa -tkr aaa aaa aaa -edl -cSk -auJ -jMZ -oMy -lGL -qHs -lMJ aaa aaa aaa @@ -78528,22 +78933,6 @@ aaa aaa aaa aaa -lMJ -qHs -sCZ -lGL -wdr -lMJ -lMJ -lMJ -lMJ -lMJ -wdr -uZK -lGL -bfk -aSm -bfk aaa aaa aaa @@ -78593,6 +78982,8 @@ aaa aaa aaa aaa +"} +(40,1,1) = {" aaa aaa aaa @@ -78659,10 +79050,13 @@ aaa aaa aaa aaa +rrt +rrt +rrt +rrt +rrt aaa aaa -"} -(39,1,1) = {" aaa aaa aaa @@ -78670,8 +79064,39 @@ aaa aaa aaa aaa +rrt +oPS +aox +aox +aox +aox +aox +aox +oPS +aox +oPS +aox +aox +aox +aox +aox +aox +oPS +rrt aaa aaa +oPS +lMJ +eeg +wdr +wdr +wdr +wdr +wdr +pqi +xNg +wdr +lMJ aaa aaa aaa @@ -78681,11 +79106,22 @@ aaa aaa aaa aaa +lMJ +wdr +eLX +gnc +qHs aaa aaa aaa aaa aaa +qHs +dXH +lGL +qEt +qEt +qEt aaa aaa aaa @@ -78708,6 +79144,7 @@ aaa aaa aaa aaa +kgg aaa aaa aaa @@ -78749,13 +79186,9 @@ aaa aaa aaa aaa -lMJ aaa -lMJ aaa -lMJ aaa -anS aaa aaa aaa @@ -78769,13 +79202,6 @@ aaa aaa aaa aaa -wdr -dqx -wdr -byg -lGL -qEt -lMJ aaa aaa aaa @@ -78785,23 +79211,11 @@ aaa aaa aaa aaa -lMJ -qEt -yhK -lGL -qEt aaa aaa aaa aaa aaa -qEt -yhK -lGL -bfk -hBD -bfk -fQj aaa aaa aaa @@ -78825,6 +79239,8 @@ aaa aaa aaa aaa +"} +(41,1,1) = {" aaa aaa aaa @@ -78891,9 +79307,11 @@ aaa aaa aaa aaa +rrt aaa aaa aaa +rrt aaa aaa aaa @@ -78903,13 +79321,40 @@ aaa aaa aaa aaa +lMJ +lMJ +lMJ +lMJ +lMJ +lMJ +lMJ +lMJ +lMJ +aox +lMJ +lMJ +lMJ +lMJ +lMJ +lMJ +lMJ +lMJ +rrt +mWd aaa aaa aaa aaa aaa +lMJ aaa aaa +wdr +grZ +lGL +qEt +qEt +qEt aaa aaa aaa @@ -78917,14 +79362,23 @@ aaa aaa aaa aaa +qEt +qEt +qEt +cTC +lGL +qEt aaa -"} -(40,1,1) = {" aaa aaa aaa aaa +qEt +yhK +lGL +qEt aaa +lMJ aaa aaa aaa @@ -78947,6 +79401,7 @@ aaa aaa aaa aaa +fGM aaa aaa aaa @@ -78986,11 +79441,6 @@ aaa aaa aaa aaa -rrt -rrt -rrt -rrt -rrt aaa aaa aaa @@ -79006,14 +79456,8 @@ aaa aaa aaa aaa -lMJ aaa -anS -anS -anS aaa -blx -anS aaa aaa aaa @@ -79021,18 +79465,6 @@ aaa aaa aaa aaa -oPS -lMJ -eeg -wdr -wdr -wdr -wdr -wdr -pqi -xNg -wdr -lMJ aaa aaa aaa @@ -79042,22 +79474,11 @@ aaa aaa aaa aaa -lMJ -wdr -eLX -gnc -qHs aaa aaa aaa aaa aaa -qHs -dXH -lGL -qEt -qEt -qEt aaa aaa aaa @@ -79075,12 +79496,13 @@ aaa aaa aaa aaa +"} +(42,1,1) = {" aaa aaa aaa aaa aaa -kgg aaa aaa aaa @@ -79133,8 +79555,25 @@ aaa aaa aaa aaa +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt aaa +kuK aaa +rrt +aUn +aUn +aUn +aUn +aUn aaa aaa aaa @@ -79147,10 +79586,32 @@ aaa aaa aaa aaa +lMJ +aox +lMJ aaa aaa aaa aaa +aDb +aDb +aDb +aDb +aDb +aDb +aDb +aDb +aDb +aDb +aDb +aDb +aDb +aDb +sCZ +lGL +ykn +hBD +xER aaa aaa aaa @@ -79158,12 +79619,23 @@ aaa aaa aaa aaa +mxV +auJ +riz +sCZ +qLY +wdr aaa aaa aaa aaa aaa +wdr +sCZ +lGL +qEt aaa +lMJ aaa aaa aaa @@ -79175,8 +79647,6 @@ aaa aaa aaa aaa -"} -(41,1,1) = {" aaa aaa aaa @@ -79188,6 +79658,10 @@ aaa aaa aaa aaa +fGM +rrt +rrt +rrt aaa aaa aaa @@ -79243,11 +79717,9 @@ aaa aaa aaa aaa -rrt aaa aaa aaa -rrt aaa aaa aaa @@ -79263,58 +79735,33 @@ aaa aaa aaa aaa -blx -lMJ -lMJ -lEF -oTD -lMJ -lMJ aaa aaa aaa -mWd aaa aaa -mWd aaa aaa aaa aaa aaa -lMJ aaa aaa -wdr -grZ -lGL -qEt -qEt -qEt aaa aaa aaa aaa aaa aaa +"} +(43,1,1) = {" aaa -qEt -qEt -qEt -cTC -lGL -qEt aaa aaa aaa aaa aaa -qEt -yhK -lGL -qEt aaa -lMJ aaa aaa aaa @@ -79337,7 +79784,6 @@ aaa aaa aaa aaa -fGM aaa aaa aaa @@ -79366,15 +79812,20 @@ aaa aaa aaa aaa +rrt aaa +lMJ aaa aaa aaa aaa aaa aaa +dPw aaa +aIw aaa +lMJ aaa aaa aaa @@ -79392,10 +79843,32 @@ aaa aaa aaa aaa +lMJ +aox +lMJ aaa aaa aaa aaa +aDb +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +iYU +knP +dCx +aDb +inL +lGL +qEt +qEt +qEt aaa aaa aaa @@ -79403,11 +79876,23 @@ aaa aaa aaa aaa +qEt +qEt +qEt +sCZ +vXZ +qEt aaa aaa aaa aaa aaa +qEt +sCZ +woi +wdr +lMJ +lMJ aaa aaa aaa @@ -79429,11 +79914,16 @@ aaa aaa aaa aaa +tsd +anL +tsd +tsd +tsd +tsd +lMJ aaa aaa aaa -"} -(42,1,1) = {" aaa aaa aaa @@ -79491,27 +79981,8 @@ aaa aaa aaa aaa -rrt -rrt -rrt -rrt -rrt -rrt -rrt -rrt -rrt -rrt aaa -kuK aaa -rrt -aUn -aUn -aUn -aUn -aUn -aUn -aUn aaa aaa aaa @@ -79520,34 +79991,6 @@ aaa aaa aaa aaa -blx -lMJ -anS -uay -lMJ -lMJ -lMJ -lMJ -lMJ -aDb -aDb -aDb -aDb -aDb -aDb -aDb -aDb -aDb -aDb -aDb -aDb -aDb -aDb -sCZ -lGL -ykn -hBD -xER aaa aaa aaa @@ -79555,29 +79998,20 @@ aaa aaa aaa aaa -mxV -auJ -riz -sCZ -qLY -wdr aaa aaa aaa aaa aaa -wdr -sCZ -lGL -qEt aaa -lMJ aaa aaa aaa aaa aaa aaa +"} +(44,1,1) = {" aaa aaa aaa @@ -79594,10 +80028,6 @@ aaa aaa aaa aaa -fGM -rrt -rrt -rrt aaa aaa aaa @@ -79639,10 +80069,26 @@ aaa aaa aaa aaa +rrt aaa +lMJ aaa aaa aaa +xuK +xuK +xuK +aYN +lMJ +aIw +lMJ +aYN +xuK +xuK +xuK +lMJ +lMJ +lMJ aaa aaa aaa @@ -79654,10 +80100,32 @@ aaa aaa aaa aaa +lMJ +aox +lMJ aaa aaa aaa aaa +aDb +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +aDa +iYU +kFg +eVm +cYL +qAN +nPf +nDP +xvd +qEt aaa aaa aaa @@ -79665,12 +80133,23 @@ aaa aaa aaa aaa +qEt +pdT +kUQ +lWa +qeq +qEt aaa aaa aaa aaa aaa +qEt +ohm +qeq +qEt aaa +lMJ aaa aaa aaa @@ -79689,11 +80168,18 @@ aaa aaa aaa aaa -"} -(43,1,1) = {" aaa aaa aaa +tsd +uBC +mRY +ign +oli +jIR +lMJ +lMJ +lMJ aaa aaa aaa @@ -79748,20 +80234,15 @@ aaa aaa aaa aaa -rrt aaa -lMJ aaa aaa aaa aaa aaa aaa -dPw aaa -aIw aaa -lMJ aaa aaa aaa @@ -79777,13 +80258,110 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(45,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +rrt +aaa lMJ aaa +aaa +aaa +eqf +eqf +eqf +aYN +aaa +raz +aaa +aYN +aYN +eqf +aYN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +lMJ +aox lMJ -anS -azg aaa -blx +aaa aaa aaa aDb @@ -79797,13 +80375,13 @@ aDa aDa aDa iYU -knP -dCx -aDb -inL +kFg +eVm +cYL +qAN +wpw lGL -qEt -qEt +xvd qEt aaa aaa @@ -79813,10 +80391,10 @@ aaa aaa aaa qEt -qEt -qEt +noL sCZ -vXZ +wpw +qeq qEt aaa aaa @@ -79825,9 +80403,9 @@ aaa aaa qEt sCZ -woi -wdr -lMJ +qeq +qEt +aaa lMJ aaa aaa @@ -79851,13 +80429,13 @@ aaa aaa aaa tsd -anL -tsd -tsd tsd tsd +hUN +ffv +jIR lMJ -aaa +gQK aaa aaa aaa @@ -79947,7 +80525,7 @@ aaa aaa aaa "} -(44,1,1) = {" +(46,1,1) = {" aaa aaa aaa @@ -80008,41 +80586,41 @@ aaa rrt aaa lMJ -aaa -aaa -aaa +lMJ +lMJ +lMJ xuK xuK xuK aYN -lMJ -aIw -lMJ +eqf +raz +eqf aYN xuK xuK xuK +dJN lMJ +rNf +rNf lMJ lMJ +jXe lMJ lMJ -rrt -rrt -rrt -rrt -rrt -rrt -rrt -blx aaa -blx -lMJ -blx -anS -blx +aaa +aaa +aaa +aaa lMJ +aox lMJ +aaa +aaa +aaa +aaa aDb aDa aDa @@ -80054,13 +80632,13 @@ aDa aDa aDa iYU -kFg -eVm -cYL -qAN -nPf -nDP -xvd +jmc +hkJ +aDb +fpA +wpw +lGL +wKX qEt aaa aaa @@ -80070,21 +80648,21 @@ aaa aaa aaa qEt -pdT -kUQ -lWa -qeq -qEt -aaa +xvd +gRp +fQr +kud +wdr aaa aaa aaa aaa -qEt -ohm -qeq -qEt aaa +wdr +uZK +dUB +wdr +lMJ lMJ aaa aaa @@ -80107,11 +80685,11 @@ aaa aaa aaa aaa -tsd -uBC -mRY -ign -oli +anS +jIR +jpA +mWU +qUQ jIR lMJ lMJ @@ -80126,23 +80704,23 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +dnJ +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +rrt +qPs aaa aaa aaa @@ -80204,7 +80782,7 @@ aaa aaa aaa "} -(45,1,1) = {" +(47,1,1) = {" aaa aaa aaa @@ -80271,7 +80849,7 @@ aaa eqf eqf eqf -aYN +bOr aaa raz aaa @@ -80287,17 +80865,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -lMJ -aaa -lMJ +ovq +ovq +ovq +scR +scR +scR +scR +aox lMJ aaa aaa -lMJ aaa aaa aDb @@ -80305,19 +80883,19 @@ aDa aDa aDa aDa +whN aDa aDa aDa -aDa -aDa -iYU -kFg -eVm -cYL -qAN -wpw -lGL -xvd +lGS +cWM +ilJ +tra +uqi +mjd +hXh +eNb +swu qEt aaa aaa @@ -80327,14 +80905,14 @@ aaa aaa aaa qEt -noL -sCZ -wpw -qeq +wiF +oxx +vkz +sVA qEt aaa aaa -aaa +olN aaa aaa qEt @@ -80364,17 +80942,13 @@ aaa aaa aaa aaa +lMJ +tsd +eCS tsd tsd tsd -hUN -ffv -jIR lMJ -gQK -aaa -aaa -aaa aaa aaa aaa @@ -80387,6 +80961,7 @@ aaa aaa aaa aaa +rrt aaa aaa aaa @@ -80394,12 +80969,15 @@ aaa aaa aaa aaa +lMJ aaa aaa +lMJ aaa aaa aaa aaa +lMJ aaa aaa aaa @@ -80461,7 +81039,7 @@ aaa aaa aaa "} -(46,1,1) = {" +(48,1,1) = {" aaa aaa aaa @@ -80522,41 +81100,41 @@ aaa rrt aaa lMJ -lMJ -lMJ -lMJ +aaa +aaa +aaa xuK xuK xuK aYN -eqf -raz -eqf +lMJ +fzl +vdE aYN xuK xuK xuK -dJN -lMJ -rNf -rNf -lMJ -lMJ -jXe -lMJ -lMJ -dJN -dJN -dJN -dJN aaa -lMJ -lMJ aaa aaa +aaa +aaa +aaa +aaa +aaa +ovq +bMv +iYC +daA +daA +qWq +scR +aox lMJ aaa aaa +aaa +aaa aDb aDa aDa @@ -80568,13 +81146,13 @@ aDa aDa aDa iYU -jmc -hkJ +oSc +oQc aDb -fpA -wpw +kpu lGL -wKX +qEt +qEt qEt aaa aaa @@ -80584,22 +81162,26 @@ aaa aaa aaa qEt -xvd -gRp -fQr -kud +qEt +qEt +sCZ +xaB +wdr +aaf +lXm +jrY +qEt +aaf wdr +kRx +eOm +qEt aaa +lMJ aaa aaa aaa aaa -wdr -uZK -dUB -wdr -lMJ -lMJ aaa aaa aaa @@ -80618,18 +81200,12 @@ aaa aaa aaa aaa +lMJ +aox +lMJ aaa aaa aaa -anS -jIR -jpA -mWU -qUQ -jIR -lMJ -lMJ -lMJ aaa aaa aaa @@ -80638,25 +81214,27 @@ aaa aaa aaa aaa +nLZ +aaa aaa aaa -dnJ -rrt -rrt -rrt -rrt -rrt -rrt -rrt -rrt -rrt -rrt -rrt -rrt -rrt -rrt rrt -qPs +aaa +lMJ +aaa +aaa +aaa +bvY +aaa +aaa +aaa +aaa +lMJ +aaa +aaa +aaa +aaa +lMJ aaa aaa aaa @@ -80718,7 +81296,7 @@ aaa aaa aaa "} -(47,1,1) = {" +(49,1,1) = {" aaa aaa aaa @@ -80782,20 +81360,14 @@ lMJ aaa aaa aaa -eqf -eqf -eqf -bOr aaa -raz aaa -aYN -aYN -eqf -aYN aaa +lMJ aaa +aIw aaa +sBd aaa aaa aaa @@ -80805,13 +81377,19 @@ aaa aaa aaa aaa -lMJ aaa -lMJ -uay +aaa +scR +daA +heN +daA +uCs +daA +ovq +nEN +ovq aaa aaa -lMJ aaa aaa aDb @@ -80819,20 +81397,20 @@ aDa aDa aDa aDa -whN aDa aDa aDa -lGS -cWM -ilJ -tra -uqi -mjd -hXh -eNb -swu -qEt +aDa +aDa +iYU +oYM +paf +aDb +ilE +lGL +ykn +hBD +xER aaa aaa aaa @@ -80840,23 +81418,30 @@ aaa aaa aaa aaa +mxV +auJ +riz +sCZ +sAX +wdr qEt -wiF -oxx -vkz -sVA qEt -aaa -aaa -olN -aaa -aaa +usB qEt -sCZ -qeq qEt +wdr +uZK +dPh +pOa +pOa +pOa +pOa +aox +aox +aox +aox +aox aaa -lMJ aaa aaa aaa @@ -80872,19 +81457,15 @@ aaa aaa aaa aaa +lMJ +aox +lMJ aaa aaa aaa aaa aaa aaa -lMJ -tsd -eCS -tsd -tsd -tsd -lMJ aaa aaa aaa @@ -80894,10 +81475,15 @@ aaa aaa aaa aaa +rrt aaa +gnA +sCl +lMJ +lMJ +cvY aaa aaa -rrt aaa aaa aaa @@ -80908,531 +81494,9 @@ aaa lMJ aaa aaa -lMJ aaa aaa -aaa -aaa -lMJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(48,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -rrt -aaa -lMJ -aaa -aaa -aaa -xuK -xuK -xuK -aYN -lMJ -fzl -vdE -aYN -xuK -xuK -xuK -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -lMJ -aaa -aox -uay -aox -aaa -lMJ -aaa -aaa -aDb -aDa -aDa -aDa -aDa -aDa -aDa -aDa -aDa -aDa -iYU -oSc -oQc -aDb -kpu -lGL -qEt -qEt -qEt -aaa -aaa -aaa -aaa -aaa -aaa -aaa -qEt -qEt -qEt -sCZ -xaB -wdr -aaf -lXm -jrY -qEt -aaf -wdr -kRx -eOm -qEt -aaa -lMJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -lMJ -aox -lMJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -nLZ -aaa -aaa -aaa -rrt -aaa -lMJ -aaa -aaa -aaa -bvY -aaa -aaa -aaa -aaa -lMJ -aaa -aaa -aaa -aaa -lMJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(49,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -rrt -aaa -lMJ -aaa -aaa -aaa -aaa -aaa -aaa -lMJ -aaa -aIw -aaa -sBd -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -lMJ -aaa -jXu -lGR -jXu -aaa -lMJ -aaa -aaa -aDb -aDa -aDa -aDa -aDa -aDa -aDa -aDa -aDa -aDa -iYU -oYM -paf -aDb -tHZ -lGL -ykn -hBD -xER -aaa -aaa -aaa -aaa -aaa -aaa -aaa -mxV -auJ -riz -sCZ -sAX -wdr -qEt -qEt -usB -qEt -qEt -wdr -uZK -dPh -pOa -pOa -pOa -pOa -aox -aox -aox -aox -aox -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -lMJ -aox -lMJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -rrt -aaa -gnA -sCl -lMJ -lMJ -cvY -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -lMJ -aaa -aaa -aaa -aaa -lKu +lKu aaa aaa aaa @@ -81572,20 +81636,20 @@ aaa aaa aaa aaa +scR +daA +daA +daA +kjm +daA +eXu +wMY +ovq aaa aaa aaa aaa -lMJ -aaa -jXu -fzE -jXu -aaa -lMJ -jXu -jXu -jXu +aDb aDa aDa aDa @@ -81829,20 +81893,20 @@ aaa aaa aaa aaa +ovq +cux +vZL +dRW +rTP +deT +ovq +rBG +ovq aaa aaa aaa aaa -lMJ -jXu -jXu -uAE -jXu -jXu -nmg -jXu -twr -jXu +aDb aDa aDa aDa @@ -82086,33 +82150,33 @@ aaa aaa aaa aaa -aaa -aaa -jXu -jXu -nmg -jXu -hCn -qCC -rbi -twr -qiz -gAt -twr -jXu -jXu -jXu -jXu -jXu -jXu -jXu -jXu -jXu -jXu -jXu -jXu -jXu -jXu +ovq +ovq +ovq +ovq +jJM +ovq +ovq +kxl +ovq +qEt +qEt +qEt +qEt +wdr +wdr +wdr +wdr +wdr +wdr +wdr +wdr +wdr +wdr +wdr +wdr +wdr +wdr hET wpw xNg @@ -82345,32 +82409,32 @@ lMJ lMJ lMJ lMJ -jXu -hSP -sGa -oFR -ycr -wTF -uuD -uuD -uuD -uuD -iUE -uuD -uuD -wTF -uuD -uuD -uuD -uuD -uuD -uuD -uuD -uuD -uuD -xTT -gfD -sZP +lMJ +wdr +gab +gab +gab +gab +qDU +gab +gab +gab +gab +gab +gab +gab +gab +gab +gab +gab +gab +gab +gab +gab +gab +gab +qDU +vHK iPB cOl svW @@ -82601,33 +82665,33 @@ aaa aaa aaa lMJ -aaa -nmg -nwi -nOz -jXu -jXu -jXu -sHu -uPp -bPM -jXu -nmg -jXu -kBS -rOz -mlH -sHu -cVL -jZW -elc -uUu -czP -twr -oIr -aPk -jXu -vzG +oBb +lMJ +wdr +fqN +uYo +ouH +uYo +dlQ +uYo +qcw +ouH +uYo +uYo +uYo +uYo +qcw +uYo +ouH +uYo +uYo +uYo +uYo +uYo +uYo +uYo +qJs +uCD dxO crk slD @@ -82857,33 +82921,33 @@ aaa aaa aaa aaa -aox -aox -jXu -jXu -xtr -jXu lMJ -jXu -jXu -nmg -jXu -jXu lMJ -jXu -jXu -jXu -jXu -nmg -jXu -jXu -jXu -jXu -jXu -jXu -nmg -jXu -jXu +lMJ +wdr +ljx +wdr +wdr +wdr +wdr +wdr +wdr +wdr +wdr +wdr +wdr +wdr +wdr +qEt +wdr +wdr +wdr +wdr +wdr +wdr +qEt +wdr +wdr wdr wdr fcq @@ -82906,7 +82970,7 @@ igV nLG pOa clp -flS +qDD jmJ pOa uEO @@ -83167,7 +83231,7 @@ xyR hJH pOa lHk -tYi +nGS sNM tYi uOH @@ -83177,7 +83241,7 @@ pOa pOa jUb xqn -uxS +xjd fQZ ehv sBL @@ -83687,7 +83751,7 @@ sTq cMb fFu wvr -gUs +ksK tYi jUb eov @@ -84193,7 +84257,7 @@ tON kEm xnr stL -pzu +xij lsu qLP pOa @@ -84917,7 +84981,7 @@ aox aox jXu jXu -cQc +kXi jXu aaa aaa @@ -85499,7 +85563,7 @@ jUb xRB dqN dqN -dqN +tYI cNS eNV dqN @@ -85993,7 +86057,7 @@ tmI fjD pOa cIW -oiX +rwB tYi vXH pOa @@ -88566,7 +88630,7 @@ kFM kFM ilC prD -kJx +cLS lIa xjC pOa @@ -88605,7 +88669,7 @@ xGk tBJ xOP ijF -qjV +cMN mMO hdo hzG @@ -88768,7 +88832,7 @@ tdg hkj hkj kuW -vUx +mWY vKg mUF obF @@ -90055,7 +90119,7 @@ aaa jXu uUu oCd -pOi +jue bPM jXu loQ @@ -90161,7 +90225,7 @@ aMf xUX yjW vQg -bpl +rBh hto bnH dLy @@ -91955,7 +92019,7 @@ jJY iDN xtz tSw -ssi +qKD iJj uZD hKv @@ -92476,7 +92540,7 @@ phR phR wjV phR -pwq +dkT fkT cXw rRZ @@ -92598,14 +92662,14 @@ nVL aWl aWl aWl -tdW -tdW -tdW -tdW -tdW -tdW -dXR -bhu +sjP +sjP +sjP +sjP +sjP +sjP +sjP +fau hnS tdW tdW @@ -92857,12 +92921,12 @@ lMJ lMJ lMJ lMJ +dAb +uhO +gzh +lmd sjP -ahS -fWm -tdW -urf -eLd +fkS qNj tdW cTl @@ -93114,11 +93178,11 @@ aaa aaa aaa aaa +dAb +pnF +kMk +eYO sjP -mTY -dLU -tdW -tdW tdW vnk gEg @@ -93371,12 +93435,12 @@ aaa aaa aaa aaa -sjP -dcN -vae -slI -iuc -xnS +dAb +mOb +sGX +sdF +hjT +oxs gYi jTZ jRh @@ -93631,8 +93695,8 @@ qrr sjP sjP sjP -mzD -mzD +sjP +iqf pQx yey jTZ @@ -94653,10 +94717,10 @@ aaa aaa aaa aaa -quc -lMJ -bKz -sIe +aaa +aaa +aaa +aaa sIe sIe sIe @@ -95531,7 +95595,7 @@ fvE kKT fBG wPH -xyA +eQm drW jxm bcr @@ -98325,10 +98389,10 @@ syo eDL lSz tst -jyO +dHV xOl iag -kAE +eZZ hJK ocv lVl @@ -98584,7 +98648,7 @@ lSz vQe hJK ecI -fYU +lMN uqK hJK bYn @@ -100701,15 +100765,15 @@ nFa uGg nFa dKC -qAe -qAe -qAe -qAe -qAe -qAe -qAe -qAe -qAe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -100958,15 +101022,15 @@ wpn liK nFa dKC -qAe -yjv -yjv -yjv -yjv -yjv -yjv -yjv -qAe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -101215,15 +101279,15 @@ nHQ oFz oFz oFz -qAe -yjv -yjv -yjv -yjv -yjv -yjv -yjv -qAe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -101472,15 +101536,15 @@ ryA mrR ufy qVf -qAe -yjv -yjv -yjv -yjv -yjv -yjv -yjv -qAe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -101727,17 +101791,17 @@ woR mrR mrR mrR -aqU +mrR qVf -qAe -yjv -yjv -yjv -yjv -yjv -yjv -yjv -qAe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -101978,23 +102042,23 @@ pSP ogr lBv oFz -mgH -jRU -ntH +wbK +mrR +mrR +mrR mrR mrR mrR -fxh qVf -qAe -yjv -yjv -yjv -yjv -yjv -yjv -yjv -qAe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -102235,23 +102299,23 @@ svS dKC dKC oFz -dGa -vEs -vYi -pGp -vVq -oFz -oFz +vtr +mrR +mrR +mrR +mrR +mrR +wvJ oFz -qAe -yjv -yjv -yjv -yjv -yjv -yjv -yjv -qAe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -102492,23 +102556,23 @@ krN kYD lMJ oFz -oFz -qVf -oFz -oFz -oFz +mgH +bVu +ntH +mrR +mrR +wbK +eBQ oFz aaa aaa -qAe -yjv -yjv -yjv -yjv -yjv -yjv -yjv -qAe +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -102644,7 +102708,7 @@ aaa ilh cur cur -nDF +eNH cur ilh rlp @@ -102660,7 +102724,7 @@ ilh ilh ilh dKO -vBW +fuy dIO dIO dIO @@ -102748,24 +102812,24 @@ otj fvK kYD lMJ -lMJ +oFz +uaz +vEs +vYi +mrR +mrR +mrR +pGp +oFz +aaa +aaa +aaa +aaa aaa aaa aaa -lMJ -aox -lMJ aaa aaa -qAe -qAe -qAe -qAe -qAe -qAe -qAe -qAe -qAe aaa aaa aaa @@ -103005,15 +103069,15 @@ tfV mtM oLS lMJ -aaa -aaa -aaa -aaa -lMJ -vFb -lMJ -aaa -aaa +oFz +oFz +oFz +oFz +oFz +oFz +oFz +oFz +oFz aaa aaa aaa @@ -103165,7 +103229,7 @@ fEW ilh ssJ msd -shg +sKo cur sab ilh @@ -105826,7 +105890,7 @@ arg hIZ qlG fPD -fPD +mst eQY fPD nTd @@ -108048,7 +108112,7 @@ qhy qXB dOx jCw -ofQ +fvb tjL aGe mFm @@ -109125,7 +109189,7 @@ eol fWA dxk cNm -izp +cRs ret qHO bNn @@ -109844,7 +109908,7 @@ cyS izd jlM jlM -kXx +bJC kXx aIC kVs diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 7c9134ee3856..4b2a65a6fe51 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -719,13 +719,6 @@ /obj/structure/sign/poster/official/work_for_a_future/directional/west, /turf/open/floor/iron/smooth, /area/mine/laborcamp/quarters) -"eW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/port_gen/pacman{ - anchored = 1 - }, -/turf/open/floor/plating, -/area/mine/maintenance/service) "eX" = ( /obj/machinery/door/airlock/external/glass{ name = "Labor Camp External Airlock" @@ -1196,6 +1189,17 @@ /obj/machinery/porta_turret/aux_base, /turf/closed/wall, /area/mine/maintenance/production) +"hw" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "hx" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3478,6 +3482,15 @@ }, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"tn" = ( +/obj/machinery/door/airlock/external{ + name = "Mining External Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/cable, +/turf/open/floor/plating, +/area/mine/maintenance/service) "tr" = ( /obj/structure/closet/secure_closet/brig, /obj/effect/decal/cleanable/dirt, @@ -3637,6 +3650,17 @@ /obj/item/crowbar/large/emergency, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"up" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "uq" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -4302,6 +4326,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) +"yr" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "yu" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stack/tile/iron/smooth_edge{ @@ -4406,12 +4441,7 @@ /area/mine/maintenance/public/south) "zd" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/stock_parts/cell/crap{ - desc = "A legendary infinite-capacity power cell. This one looks like a poor quality AA battery with a coat of flaking gold paint."; - icon_state = "icell"; - name = "infinite-capacity power cell" - }, -/obj/structure/rack, +/obj/structure/cable, /turf/open/floor/plating, /area/mine/maintenance/service) "zf" = ( @@ -4718,6 +4748,20 @@ }, /turf/open/floor/iron/dark, /area/mine/production) +"Bg" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/structure/railing, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"Bw" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Mining Station Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/structure/cable, +/turf/open/floor/plating, +/area/mine/maintenance/service) "By" = ( /obj/machinery/door/poddoor/preopen{ id = "labor"; @@ -5659,6 +5703,7 @@ "HG" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/space_heater, +/obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/plating, /area/mine/maintenance/service) "HH" = ( @@ -5804,11 +5849,6 @@ /obj/structure/lattice/catwalk/mining, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) -"IJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plating, -/area/mine/maintenance/service) "IK" = ( /obj/machinery/computer/libraryconsole/bookmanagement, /obj/structure/table, @@ -7118,6 +7158,17 @@ }, /turf/open/floor/iron/dark, /area/mine/mechbay) +"Qj" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"Qo" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/machinery/power/colony_wind_turbine, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "Qp" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, @@ -7292,6 +7343,15 @@ /obj/structure/closet/toolcloset, /turf/open/floor/plating, /area/mine/maintenance/service) +"RC" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "RD" = ( /turf/closed/wall, /area/mine/maintenance/labor) @@ -7998,6 +8058,17 @@ /obj/structure/lattice/catwalk/mining, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) +"VM" = ( +/obj/machinery/door/airlock/external{ + name = "Mining External Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/mine/maintenance/service) "VO" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, @@ -36434,8 +36505,8 @@ aj aj aj aj -ad -pU +aj +aj aj aj aj @@ -36690,9 +36761,9 @@ aj aj aj aj -ad -ad -ad +aj +aj +aj aj aj aj @@ -36946,9 +37017,9 @@ aj aj aj aj -pU -ad -ad +aj +aj +aj aj aj aj @@ -37204,8 +37275,8 @@ aj aj aj aj -ad -ad +up +aj aj aj aj @@ -37452,7 +37523,7 @@ pU Qz ON rw -eW +Hs HG vA ON @@ -37460,9 +37531,9 @@ ON pU aj aj -aj -aj -aj +Qo +Qj +Qo aj aj aj @@ -37709,16 +37780,16 @@ Ue gB ON rA -Hs -sO -Hs -IJ +zd +fi +zd +Rw ON ON ON aj aj -aj +RC aj aj aj @@ -37966,20 +38037,20 @@ Qz ON ON ON +Bw ON -ON -sO -Rw -ON +fi zd -ON -aj -aj +tn +zd +VM +hw +hw +Bg aj aj aj pU -pU kY kY kY @@ -38223,7 +38294,7 @@ Qz ON ni rZ -ni +fi ON TV xD @@ -38232,11 +38303,11 @@ xD xD aj aj +RC aj aj aj pU -pU kY Wx av @@ -38488,11 +38559,11 @@ BK HA xD aj +Qo +Qj +Qo aj aj -aj -pU -pU pU Tc HT @@ -38746,11 +38817,11 @@ HH xD aj aj +yr aj aj pU pU -pU Tc tX ut @@ -43370,8 +43441,8 @@ aj aj aj aj -aj -aj +ad +pU aj aj aj @@ -43626,9 +43697,9 @@ pU aj aj aj -aj -aj -aj +ad +ad +ad aj aj aj @@ -43882,9 +43953,9 @@ pU aj aj aj -aj -aj -aj +pU +ad +ad aj aj aj @@ -44140,8 +44211,8 @@ aj aj aj aj -aj -aj +ad +ad aj aj aj diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index 66097eb7d222..2dbec2c4c201 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -179,11 +179,6 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/port/aft) -"abJ" = ( -/obj/machinery/light_switch/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) "abP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -221,13 +216,11 @@ /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/floor/grass, /area/station/medical/virology) -"acj" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/holopad, -/obj/effect/landmark/navigate_destination/dockarrival, -/obj/machinery/atm/directional/south, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/entry) +"acf" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, +/turf/open/openspace, +/area/station/maintenance/floor2/port) "acl" = ( /obj/structure/railing{ dir = 8 @@ -271,11 +264,6 @@ dir = 8 }, /area/station/command/bridge) -"acE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/barricade, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "acF" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/structure/chair/office/light{ @@ -464,6 +452,10 @@ /obj/machinery/computer/rdconsole, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) +"afA" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/aisat/service) "afE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -571,11 +563,15 @@ name = "lab floor" }, /area/station/science/genetics) -"ahh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/emcloset, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) +"ahr" = ( +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/structure/window/reinforced/plasma/spawner/directional/north, +/obj/structure/window/reinforced/plasma/spawner/directional/west, +/obj/machinery/power/shuttle_engine/heater{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/floor1/port/aft) "aht" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -585,11 +581,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) -"ahv" = ( -/obj/effect/turf_decal/siding/white, -/obj/item/kirbyplants/random/fullysynthetic, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) "ahG" = ( /obj/machinery/modular_computer/preset/research{ dir = 4 @@ -654,6 +645,11 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/cafeteria, /area/station/security/prison) +"aij" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/aft) "aik" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ dir = 4 @@ -671,6 +667,12 @@ /obj/structure/sign/departments/restroom/directional/east, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/floor3/fore) +"ain" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/lead_pipe, +/obj/structure/closet/cardboard/metal, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "air" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -688,6 +690,13 @@ /obj/machinery/light/dim/directional/west, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/port/aft) +"aiJ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/medical/abandoned) "aiL" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -741,6 +750,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/side, /area/station/cargo/lobby) +"aja" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor4/starboard) "ajb" = ( /turf/open/floor/iron/dark, /area/station/maintenance/floor2/starboard/aft) @@ -777,6 +794,13 @@ /obj/structure/table, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) +"ajz" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/engineering/atmos) "ajE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -867,6 +891,12 @@ dir = 1 }, /area/station/security/office) +"akS" = ( +/obj/structure/rack, +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/maintenance/floor3/starboard/aft) "ala" = ( /obj/structure/railing{ dir = 4 @@ -916,14 +946,6 @@ /obj/effect/turf_decal/tile/purple/opposingcorners, /turf/open/floor/iron/white, /area/station/command/heads_quarters/rd) -"amf" = ( -/obj/machinery/light/directional/south, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) "amg" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, @@ -1046,17 +1068,15 @@ /obj/effect/turf_decal/siding, /turf/open/floor/iron/white, /area/station/command/heads_quarters/rd) -"anH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 1 +"anE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/area/station/hallway/secondary/exit/escape_pod) +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/flashlight/flare, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "anK" = ( /obj/machinery/atmospherics/components/trinary/mixer/flipped{ dir = 4 @@ -1125,6 +1145,16 @@ /obj/structure/grille, /turf/open/floor/plating, /area/station/maintenance/floor3/port) +"aoS" = ( +/obj/effect/turf_decal/tile/green/half{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/hallway/secondary/exit/escape_pod) "aoW" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners{ dir = 8 @@ -1189,6 +1219,18 @@ }, /turf/open/floor/iron/dark, /area/station/science/circuits) +"aps" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/window/brigdoor/right/directional/west{ + name = "Shooting Range" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/security/range) "apu" = ( /obj/machinery/camera/directional/west{ c_tag = "Science - Radshelter" @@ -1281,6 +1323,13 @@ /obj/effect/spawner/random/trash/soap, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/fore) +"aqF" = ( +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "aqO" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Fore Entrance" @@ -1300,11 +1349,6 @@ dir = 1 }, /area/station/cargo/sorting) -"aqU" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server/upper) "aqW" = ( /obj/effect/turf_decal/trimline/green/filled/arrow_cw{ dir = 1 @@ -1456,24 +1500,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) -"asE" = ( -/obj/effect/turf_decal/trimline/brown/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/brown/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 8 - }, -/area/station/cargo/drone_bay) "asI" = ( /obj/structure/industrial_lift/public, /turf/open/floor/plating/elevatorshaft, @@ -1595,6 +1621,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/psychology) +"aud" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/red, +/area/station/maintenance/floor3/port/aft) "aug" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional{ dir = 1 @@ -1679,11 +1710,6 @@ /obj/structure/hedge, /turf/open/floor/wood/tile, /area/station/science/lobby) -"avf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "avg" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ dir = 4 @@ -1779,10 +1805,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/floor3/aft) -"awo" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "awt" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -1792,11 +1814,6 @@ /obj/item/screwdriver, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard/aft) -"awH" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "awT" = ( /obj/structure/window/spawner/directional/west, /obj/effect/turf_decal/siding/wood{ @@ -1830,21 +1847,6 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard/aft) -"axn" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"axz" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/structure/sign/poster/official/cleanliness/directional/east, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/secondary/entry) "axF" = ( /obj/machinery/gateway/centerstation, /turf/open/floor/iron/large, @@ -1855,13 +1857,6 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/floor2/starboard/aft) -"axP" = ( -/obj/structure/closet/crate/large, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) "axR" = ( /obj/structure/chair/stool/bar/directional/north, /obj/effect/landmark/start/scientist, @@ -1910,6 +1905,12 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/service/chapel) +"ayp" = ( +/obj/effect/turf_decal/trimline/blue/line, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "ayv" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -1925,6 +1926,15 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) +"ayw" = ( +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/airalarm/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/starboard) "ayB" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/green/visible, @@ -1944,6 +1954,17 @@ /obj/structure/sign/warning/docking, /turf/closed/wall/r_wall, /area/station/security/execution/transfer) +"ayK" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/fore) +"ayP" = ( +/obj/structure/window/plasma/spawner/directional/east, +/obj/structure/window/plasma/spawner/directional/south, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, +/turf/open/floor/plating, +/area/station/science/server) "ayR" = ( /obj/structure/industrial_lift/public, /obj/effect/landmark/lift_id{ @@ -1951,11 +1972,6 @@ }, /turf/open/floor/plating/elevatorshaft, /area/station/hallway/floor1/fore) -"ayU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "ayW" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /obj/effect/turf_decal/stripes/corner, @@ -1980,6 +1996,16 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) +"ayZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) +"azc" = ( +/obj/effect/spawner/random/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/fore) "aze" = ( /obj/structure/railing{ dir = 1 @@ -2001,15 +2027,6 @@ dir = 4 }, /area/station/science/lobby) -"azp" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) "azu" = ( /obj/structure/table/wood, /obj/item/gun/ballistic/shotgun/doublebarrel, @@ -2026,6 +2043,14 @@ name = "lab floor" }, /area/station/science/genetics) +"azE" = ( +/obj/effect/turf_decal/trimline/red/line{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "azF" = ( /obj/effect/turf_decal/siding/purple/corner{ dir = 1 @@ -2099,6 +2124,11 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, /area/station/hallway/floor3/aft) +"aAA" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/engineering/lobby) "aAB" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 10 @@ -2153,6 +2183,14 @@ /obj/structure/rack, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard/aft) +"aBz" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "aBC" = ( /obj/effect/turf_decal/siding/purple{ dir = 8 @@ -2176,11 +2214,13 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/fore) -"aBR" = ( -/obj/item/wrench, -/obj/structure/rack, +"aBM" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/wood/large, /area/station/maintenance/floor4/starboard/aft) "aBV" = ( /obj/effect/turf_decal/trimline/blue/end, @@ -2212,6 +2252,15 @@ name = "lab floor" }, /area/station/science/genetics) +"aCg" = ( +/obj/structure/cable, +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box, +/obj/machinery/atm/directional/north, +/turf/open/floor/iron/half{ + dir = 1 + }, +/area/station/engineering/lobby) "aCq" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -2290,11 +2339,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/floor1/starboard/fore) -"aDl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/atm/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) "aDn" = ( /obj/machinery/door/airlock/external{ name = "External Airlock" @@ -2314,10 +2358,6 @@ /obj/structure/chair/comfy/black, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/cmo) -"aDq" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/turf/open/openspace, -/area/station/maintenance/floor4/port/aft) "aDr" = ( /obj/structure/chair/office, /obj/effect/turf_decal/tile/red/half/contrasted, @@ -2333,6 +2373,13 @@ name = "lab floor" }, /area/station/science/genetics) +"aDw" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/hallway/secondary/exit/departure_lounge) "aDx" = ( /turf/open/floor/iron, /area/station/engineering/atmos/hfr_room) @@ -2469,14 +2516,6 @@ "aFj" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/service) -"aFn" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/window/spawner/directional/west, -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) "aFs" = ( /obj/structure/filingcabinet/chestdrawer, /turf/open/floor/iron/large, @@ -2554,13 +2593,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) -"aGE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) "aGG" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -2623,33 +2655,16 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/cargo/storage) -"aHf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) "aHk" = ( /turf/closed/wall, /area/station/medical/medbay/lobby) -"aHl" = ( -/obj/machinery/light/directional/south, -/obj/item/trash/champagne_cork{ - pixel_x = 8; - pixel_y = 5 - }, -/obj/item/trash/energybar, -/obj/item/stack/cannonball/trashball{ - pixel_x = -7; - pixel_y = 4 - }, -/obj/item/trash/cheesie, -/obj/effect/decal/cleanable/garbage, -/obj/effect/decal/cleanable/food/plant_smudge, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) +"aHm" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/north, +/turf/open/floor/grass, +/area/station/hallway/secondary/exit/departure_lounge) "aHn" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -2662,10 +2677,6 @@ /obj/effect/turf_decal/tile/purple/fourcorners, /turf/open/floor/iron, /area/station/science/auxlab) -"aHt" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "aHA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -2751,6 +2762,16 @@ /obj/structure/sign/departments/medbay/alt/directional/north, /turf/open/floor/iron/white/textured, /area/station/medical/treatment_center) +"aIR" = ( +/obj/effect/turf_decal/tile/green/half{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/hallway/secondary/exit/escape_pod) "aIV" = ( /obj/structure/grille, /turf/open/floor/plating, @@ -2770,11 +2791,6 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/floor3/fore) -"aJk" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) "aJm" = ( /obj/machinery/light/directional/west, /obj/structure/disposalpipe/segment, @@ -2782,11 +2798,6 @@ dir = 8 }, /area/station/security/office) -"aJE" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) "aJO" = ( /obj/structure/window/reinforced/plasma/spawner/directional/east, /obj/structure/table/reinforced/plasmarglass, @@ -2875,6 +2886,11 @@ dir = 8 }, /area/station/hallway/floor2/fore) +"aKO" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/security/prison) "aKQ" = ( /turf/open/floor/iron/textured_half, /area/station/cargo/sorting) @@ -3020,11 +3036,6 @@ }, /turf/open/floor/iron/large, /area/station/command/gateway) -"aMx" = ( -/obj/item/melee/skateboard/improvised, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) "aMA" = ( /obj/effect/decal/cleanable/ash, /turf/open/floor/engine, @@ -3111,6 +3122,14 @@ /obj/item/paper_bin, /turf/open/floor/iron/white, /area/station/science/lab) +"aOn" = ( +/obj/machinery/atmospherics/components/unary/portables_connector{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port) "aOo" = ( /obj/machinery/computer/rdconsole{ dir = 8 @@ -3144,13 +3163,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness) -"aOB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/engine{ - icon_state = "podfloor_light" - }, -/area/station/maintenance/floor4/port) "aOD" = ( /obj/effect/turf_decal/stripes{ dir = 5 @@ -3257,6 +3269,11 @@ /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/floor/grass, /area/station/service/hydroponics) +"aPK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/cargo/warehouse) "aPM" = ( /obj/effect/turf_decal/tile/green/half{ dir = 8 @@ -3292,6 +3309,11 @@ "aQK" = ( /turf/closed/wall, /area/station/cargo/drone_bay) +"aQO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "aQR" = ( /obj/effect/turf_decal/trimline/yellow/line, /obj/structure/railing, @@ -3442,6 +3464,11 @@ planetary_atmos = 0 }, /area/station/maintenance/floor1/port/aft) +"aSp" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "aSq" = ( /obj/machinery/rnd/production/protolathe/department/science, /obj/effect/turf_decal/bot, @@ -3472,14 +3499,6 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/pod/light, /area/station/maintenance/floor3/starboard/aft) -"aSL" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "aSQ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -3538,31 +3557,6 @@ /obj/effect/landmark/start/roboticist, /turf/open/floor/iron, /area/station/science/robotics/lab) -"aTi" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/decoration/carpet, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"aTj" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/structure/barricade/wooden{ - name = "wooden barricade (KEEP OUT)" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 - }, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) "aTn" = ( /obj/machinery/modular_computer/preset/civilian{ dir = 8 @@ -3583,6 +3577,14 @@ }, /turf/open/floor/iron/dark, /area/station/science/lab) +"aTG" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/spawner/random/engineering/tool, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "aTK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/red/fourcorners, @@ -3594,14 +3596,14 @@ }, /turf/open/floor/plating/airless, /area/space) -"aUe" = ( -/obj/effect/decal/cleanable/dirt, +"aUb" = ( +/obj/structure/railing, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "aUh" = ( /turf/open/floor/grass, /area/station/science/genetics) @@ -3764,14 +3766,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/large, /area/station/security/prison/safe) -"aWj" = ( -/obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks/beer{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) "aWq" = ( /obj/structure/table/optable, /obj/effect/turf_decal/trimline/blue/filled/line, @@ -3847,16 +3841,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white/side, /area/station/medical/medbay/lobby) -"aWV" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/food_or_drink/condiment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"aWZ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/aft) "aXj" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 @@ -3891,21 +3875,6 @@ /obj/structure/closet/secure_closet/personal, /turf/open/floor/iron/white/small, /area/station/commons/fitness/recreation) -"aXO" = ( -/obj/item/trash/ready_donk, -/obj/item/trash/candle, -/obj/item/trash/can/food/envirochow{ - pixel_x = -7 - }, -/obj/item/trash/boritos/red{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/effect/decal/cleanable/garbage, -/obj/effect/decal/cleanable/food/pie_smudge, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "aXR" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -3933,6 +3902,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/textured_large, /area/station/hallway/secondary/exit/departure_lounge) +"aYc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/maintenance/floor2/starboard) "aYd" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -3943,6 +3919,12 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) +"aYi" = ( +/obj/effect/turf_decal/tile/green/full, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset/full, +/turf/open/floor/iron/dark/textured_large, +/area/station/hallway/secondary/exit/escape_pod) "aYl" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -4037,13 +4019,6 @@ }, /turf/open/floor/iron/smooth, /area/station/construction) -"aZd" = ( -/obj/machinery/reagentgrinder, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "aZj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -4098,6 +4073,15 @@ }, /turf/open/floor/bamboo/tatami/black, /area/station/commons/storage/art) +"aZH" = ( +/obj/effect/turf_decal/trimline/blue/line{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "aZN" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -4139,6 +4123,12 @@ /obj/item/storage/medkit/regular, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"baj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/freezer, +/obj/effect/spawner/random/medical/memeorgans, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "bam" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -4186,16 +4176,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/commons/storage/primary) -"bbs" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet, -/area/station/service/abandoned_gambling_den) "bbv" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ dir = 4 @@ -4318,6 +4298,11 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/command/meeting_room) +"bcH" = ( +/obj/effect/turf_decal/tile/blue/half, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white/textured_edge, +/area/station/medical/abandoned) "bcK" = ( /obj/structure/railing{ dir = 4 @@ -4369,12 +4354,6 @@ }, /turf/open/floor/iron, /area/station/construction/mining/aux_base) -"beb" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/north, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) "beh" = ( /turf/open/floor/iron, /area/station/commons/toilet) @@ -4446,6 +4425,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) +"beM" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "bfe" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/turf_decal/bot, @@ -4473,13 +4460,6 @@ "bfj" = ( /turf/open/openspace, /area/station/service/library) -"bfk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) "bfl" = ( /obj/effect/turf_decal/bot, /obj/structure/reagent_dispensers/fueltank, @@ -4519,6 +4499,14 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/dark/smooth_large, /area/station/science/robotics/mechbay) +"bfC" = ( +/obj/effect/spawner/random/structure/crate, +/obj/effect/turf_decal/arrows/white{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "bfD" = ( /obj/machinery/recharger, /obj/structure/table, @@ -4625,14 +4613,6 @@ /obj/item/statuebust, /turf/open/misc/beach/sand, /area/station/hallway/floor2/fore) -"bhp" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/corner, -/area/station/engineering/lobby) "bhz" = ( /obj/effect/turf_decal/trimline/brown/warning{ dir = 4 @@ -4640,14 +4620,6 @@ /obj/structure/marker_beacon/burgundy, /turf/open/floor/engine/hull, /area/space/nearstation) -"bhF" = ( -/obj/machinery/chem_master, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "bhN" = ( /obj/structure/cable, /obj/machinery/navbeacon{ @@ -4656,6 +4628,12 @@ }, /turf/open/floor/iron, /area/station/hallway/floor3/fore) +"bhT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/contraband/permabrig_weapon, +/obj/machinery/light/small/blacklight/directional/east, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "bhW" = ( /obj/machinery/conveyor{ dir = 4; @@ -4704,6 +4682,16 @@ }, /turf/open/floor/plating, /area/station/construction) +"bim" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/mech_bay_recharge_port{ + dir = 2 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron/textured_large, +/area/station/cargo/warehouse) "bin" = ( /obj/effect/turf_decal/trimline/green/warning{ dir = 1 @@ -4835,13 +4823,6 @@ /obj/effect/overlay/coconut, /turf/open/misc/beach/sand, /area/station/hallway/floor2/fore) -"bjg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "bjh" = ( /obj/machinery/light/directional/north, /obj/structure/table/reinforced, @@ -4895,14 +4876,6 @@ /obj/structure/chair/sofa/middle/brown, /turf/open/floor/carpet/green, /area/station/service/bar/atrium) -"bjT" = ( -/obj/machinery/computer{ - desc = "Barely powered, it's not working well."; - name = "Flickering Nav Console" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/plastitanium/red, -/area/station/maintenance/floor4/starboard/aft) "bjZ" = ( /obj/structure/chair/comfy/carp{ dir = 8 @@ -4945,28 +4918,25 @@ dir = 10 }, /area/station/science/robotics/lab) -"bkx" = ( -/obj/machinery/door/poddoor/shutters{ - id = "warehouseqm" - }, -/obj/machinery/button/door/directional/north{ - id = "warehouseqm" - }, +"bky" = ( +/obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/cargo/warehouse) +/turf/open/floor/iron/textured_large, +/area/station/cargo/storage) "bkz" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/structure/window/spawner/directional/east, /obj/structure/window/spawner/directional/west, /turf/open/floor/grass, /area/station/hallway/secondary/exit/departure_lounge) +"bkI" = ( +/obj/effect/turf_decal/trimline/blue/line{ + dir = 8 + }, +/obj/machinery/light/small/blacklight/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "bkM" = ( /obj/effect/landmark/start/ai/secondary, /obj/item/radio/intercom/directional/north{ @@ -5017,23 +4987,16 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) -"bkY" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/wardrobe/grey, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "blj" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark/textured, /area/station/science/ordnance/storage) +"blk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "bln" = ( /obj/docking_port/stationary/random{ dir = 2; @@ -5043,6 +5006,11 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/airless, /area/space/nearstation) +"blr" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/maintenance/floor1/port/aft) "blt" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/light/small/directional/west, @@ -5068,13 +5036,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/tile, /area/station/service/library) -"blI" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos) "blJ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, @@ -5128,6 +5089,18 @@ /obj/structure/railing, /turf/open/floor/iron/white/side, /area/station/science/robotics/lab) +"bmb" = ( +/obj/structure/table, +/obj/item/paper_bin/carbon{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/stamp/head/hop{ + pixel_x = -4; + pixel_y = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hop) "bml" = ( /obj/structure/lattice/catwalk, /obj/structure/ladder, @@ -5192,6 +5165,14 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron, /area/station/science/robotics/lab) +"bnm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/machinery/holopad, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/drone_bay) "bnu" = ( /obj/machinery/light/blacklight/directional/west, /obj/structure/table, @@ -5216,6 +5197,10 @@ /obj/item/clothing/glasses/hud/health, /turf/open/floor/iron/white/textured, /area/station/medical/treatment_center) +"bnH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/engineering/atmos) "bnI" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, @@ -5383,14 +5368,6 @@ /obj/structure/table/reinforced/rglass, /turf/open/floor/iron/large, /area/station/science/robotics/lab) -"bpN" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) "bpU" = ( /obj/effect/turf_decal/trimline/brown/arrow_ccw{ dir = 10 @@ -5555,6 +5532,16 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/iron/dark, /area/station/science/breakroom) +"brr" = ( +/obj/structure/table/reinforced, +/obj/item/plate{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/knife/butcher, +/obj/structure/sign/poster/official/cleanliness/directional/north, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port) "brs" = ( /obj/machinery/door/airlock/science/glass{ name = "Laboratory A" @@ -5609,6 +5596,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) +"brR" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "brT" = ( /obj/structure/railing{ dir = 8 @@ -5625,11 +5617,6 @@ name = "lab floor" }, /area/station/science/genetics) -"bsl" = ( -/obj/item/stack/tile/iron/white, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "bsu" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -5666,11 +5653,6 @@ dir = 1 }, /area/station/hallway/floor1/aft) -"bsG" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) "bsI" = ( /obj/machinery/door/window/right/directional/north{ name = "Infirmary" @@ -5808,6 +5790,17 @@ name = "lab floor" }, /area/station/science/genetics) +"btJ" = ( +/obj/machinery/door/firedoor, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/hallway/secondary/exit/escape_pod) "btL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/stripes/corner{ @@ -5883,23 +5876,21 @@ name = "lab floor" }, /area/station/science/robotics/lab) -"buB" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"buC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch/directional/west, -/obj/structure/chair/wood{ +"bux" = ( +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/tracks{ dir = 1 }, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/wood/large, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/engine, /area/station/maintenance/floor4/starboard/aft) +"buB" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor1/port/aft) "buI" = ( /obj/machinery/door/window/brigdoor/right/directional/south{ name = "Security Desk"; @@ -5919,6 +5910,20 @@ /obj/effect/turf_decal/trimline/brown, /turf/open/floor/engine/vacuum, /area/station/engineering/atmos) +"buO" = ( +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/delivery_chute{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/filled/arrow_cw, +/obj/structure/window/reinforced/tinted/spawner/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/trimline/green/filled/mid_joiner, +/turf/open/floor/iron/dark/smooth_large, +/area/station/service/library/printer) "buP" = ( /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/iron/dark, @@ -5929,6 +5934,16 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) +"buX" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, +/area/station/service/abandoned_gambling_den) "bva" = ( /obj/structure/ladder, /obj/effect/turf_decal/trimline/purple/warning, @@ -5979,16 +5994,6 @@ }, /turf/open/openspace, /area/station/hallway/floor3/fore) -"bvC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 5 - }, -/obj/structure/disposalpipe/trunk/multiz{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "bvF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6046,6 +6051,12 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/fore) +"bvZ" = ( +/obj/machinery/space_heater/improvised_chem_heater, +/obj/effect/turf_decal/tile/blue/half, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white/smooth_edge, +/area/station/medical/abandoned) "bwl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -6083,11 +6094,6 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/carpet/red, /area/station/service/library) -"bwA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) "bwF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6193,11 +6199,14 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/smooth, /area/station/construction) -"bxH" = ( -/obj/structure/flora/rock/pile, +"bxL" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners{ + dir = 1 + }, +/obj/machinery/light/directional/south, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/fakebasalt, -/area/station/maintenance/floor3/port) +/turf/open/floor/iron/checker, +/area/station/cargo/miningdock) "bxQ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -6475,6 +6484,14 @@ }, /turf/open/floor/iron/checker, /area/station/commons/vacant_room/commissary) +"bAz" = ( +/obj/effect/spawner/random/trash/garbage{ + spawn_loot_count = 3; + spawn_scatter_radius = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/starboard/aft) "bAG" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6501,6 +6518,12 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark/side, /area/station/hallway/secondary/entry) +"bAS" = ( +/obj/machinery/vending/cola/pwr_game, +/obj/effect/turf_decal/siding/wood, +/obj/structure/sign/poster/contraband/pwr_game/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "bBb" = ( /obj/machinery/duct, /turf/open/floor/catwalk_floor/iron_white, @@ -6600,6 +6623,13 @@ name = "treated water" }, /area/station/maintenance/floor1/port/aft) +"bCN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/core, +/obj/effect/decal/cleanable/blood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor4/starboard) "bDc" = ( /obj/machinery/vending/hydronutrients, /obj/effect/decal/cleanable/dirt, @@ -6745,6 +6775,16 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/prison/safe) +"bFU" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/drone_bay) "bFZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6773,11 +6813,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/pod/light, /area/station/maintenance/floor3/port) -"bGh" = ( -/obj/effect/spawner/random/engineering/atmospherics_portable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) "bGl" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/machinery/light/dim/directional/north, @@ -6810,11 +6845,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/radshelter/sci) -"bGy" = ( -/obj/machinery/light/dim/directional/north, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/turf/open/openspace, -/area/station/maintenance/floor4/port/aft) "bGM" = ( /obj/machinery/door/firedoor/border_only{ dir = 8 @@ -6880,11 +6910,6 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/service/chapel/funeral) -"bIm" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) "bIs" = ( /obj/machinery/light/directional/south, /obj/machinery/light_switch/directional/south, @@ -6977,18 +7002,6 @@ dir = 4 }, /area/station/hallway/secondary/exit/departure_lounge) -"bJs" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"bJI" = ( -/obj/machinery/quantum_server, -/obj/effect/turf_decal/bot/left, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 4 - }, -/area/station/cargo/drone_bay) "bJQ" = ( /obj/structure/railing/corner{ dir = 1 @@ -7012,15 +7025,15 @@ /obj/structure/ladder, /turf/open/floor/plating/foam, /area/station/maintenance/floor1/port/aft) -"bKa" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos) "bKb" = ( /obj/item/storage/box/bodybags, /obj/structure/table/reinforced/rglass, /turf/open/floor/iron/dark/textured, /area/station/medical/morgue) +"bKm" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, +/turf/open/openspace, +/area/station/maintenance/floor2/port) "bKp" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/effect/turf_decal/siding/thinplating_new/dark, @@ -7064,11 +7077,6 @@ }, /turf/open/floor/iron, /area/station/engineering/gravity_generator) -"bKR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) "bKS" = ( /obj/structure/table/reinforced, /obj/effect/spawner/random/entertainment/lighter, @@ -7090,6 +7098,11 @@ /obj/item/flashlight/lamp/green, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) +"bLc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/tank_holder, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "bLd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7097,10 +7110,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/smooth_large, /area/station/service/kitchen/abandoned) -"bLt" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/miningdock) "bLy" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -7115,6 +7124,22 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/floor3/fore) +"bLH" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/trimline/blue, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/landmark/start/cyborg, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/aisat) +"bLO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/pump, +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "bLS" = ( /obj/effect/turf_decal/delivery, /obj/structure/table/reinforced, @@ -7235,6 +7260,10 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) +"bMq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod, +/area/station/maintenance/floor4/port/fore) "bMs" = ( /obj/structure/chair/wood, /obj/effect/turf_decal/siding/wood{ @@ -7284,18 +7313,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/maintenance/floor2/starboard/aft) -"bMW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/electrified_grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"bNb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "bNc" = ( /obj/structure/sign/poster/official/random/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7462,6 +7479,15 @@ /obj/structure/sink/directional/south, /turf/open/floor/iron/white, /area/station/science/lower) +"bPs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced/rglass, +/obj/item/reagent_containers/pill/iron{ + desc = "What could it be?"; + name = "blue pill" + }, +/turf/open/floor/carpet/blue, +/area/station/maintenance/floor3/port/aft) "bPv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7480,6 +7506,17 @@ }, /turf/open/floor/grass, /area/station/service/hydroponics/garden/abandoned) +"bPF" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/firealarm/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "bPO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -7607,14 +7644,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/floor4/fore) -"bRt" = ( -/obj/structure/marker_beacon/burgundy, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "bRH" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/structure/sign/poster/official/random/directional/south, @@ -7687,6 +7716,14 @@ dir = 8 }, /area/station/hallway/floor1/aft) +"bSD" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/corner, +/area/station/engineering/lobby) "bSH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7820,13 +7857,6 @@ /obj/structure/flora/bush/flowers_pp/style_random, /turf/open/floor/grass, /area/station/service/library/garden) -"bUC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_half, -/area/station/cargo/warehouse) "bUH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7926,20 +7956,17 @@ dir = 1 }, /area/station/hallway/floor4/aft) +"bVE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "bVG" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ dir = 4 }, /turf/open/floor/iron, /area/station/engineering/atmos) -"bVH" = ( -/obj/machinery/netpod, -/obj/machinery/airalarm/directional/east, -/obj/machinery/airalarm/directional/east, -/obj/machinery/airalarm/directional/east, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/drone_bay) "bVK" = ( /obj/structure/table, /mob/living/basic/mouse/brown/tom, @@ -7948,6 +7975,14 @@ }, /turf/open/floor/iron, /area/station/security/prison) +"bVN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset/anchored, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "bVP" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 8 @@ -7993,19 +8028,15 @@ /obj/machinery/status_display/ai/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/floor4/aft) -"bWn" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 4 - }, -/obj/machinery/space_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "bWz" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/machinery/vending/cigarette, /turf/open/floor/iron/white, /area/station/hallway/floor2/aft) +"bWQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/range) "bXe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ @@ -8043,13 +8074,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/engine, /area/station/engineering/supermatter) -"bXC" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) "bXD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/layer4{ dir = 8 @@ -8227,14 +8251,10 @@ dir = 4 }, /area/station/hallway/floor2/aft) -"caQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) +"caS" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/grass, +/area/station/science/xenobiology) "cbm" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -8251,12 +8271,6 @@ dir = 1 }, /area/station/hallway/secondary/service) -"cbt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) "cbu" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -8276,11 +8290,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"cbE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/cable_coil/cut, -/turf/open/floor/plating, -/area/station/medical/abandoned) "cbG" = ( /obj/structure/railing{ dir = 8 @@ -8338,11 +8347,16 @@ }, /turf/open/floor/wood, /area/station/service/bar/atrium) -"ccs" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, -/turf/open/openspace, -/area/station/maintenance/floor3/port) +"ccv" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "aband_armour"; + name = "Armoury Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/maintenance/floor2/starboard/aft) "ccw" = ( /obj/structure/table/reinforced, /obj/item/clothing/head/rasta, @@ -8436,6 +8450,16 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) +"cdu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/box, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) +"cdy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/dim/directional/west, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "cdF" = ( /turf/open/floor/iron/dark/side{ dir = 1 @@ -8465,6 +8489,15 @@ }, /turf/open/floor/iron, /area/station/hallway/floor2/fore) +"cdP" = ( +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/light/cold/no_nightlight/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/starboard) "cdS" = ( /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ dir = 1 @@ -8546,6 +8579,16 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/checkpoint/second) +"cfb" = ( +/obj/structure/sign/warning{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/maintenance/floor1/port/aft) "cfe" = ( /obj/machinery/airalarm/directional/south, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -8680,6 +8723,11 @@ /obj/effect/turf_decal/trimline/dark_blue/line, /turf/open/floor/iron/dark, /area/station/commons/storage/tools) +"cgs" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/floor2/starboard/aft) "cgt" = ( /obj/machinery/camera/autoname/directional/east, /obj/structure/disposalpipe/segment{ @@ -8696,21 +8744,6 @@ dir = 10 }, /area/station/security/office) -"cgw" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"cgx" = ( -/obj/structure/sign/warning{ - pixel_x = -32 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port/aft) "cgz" = ( /obj/machinery/firealarm/directional/south, /obj/structure/disposalpipe/segment{ @@ -8744,6 +8777,13 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/warden) +"chf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/fore) "chk" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Bulkhead" @@ -8771,15 +8811,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/storage/primary) -"chA" = ( -/obj/effect/turf_decal/trimline/blue/corner, -/obj/item/wrench, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "chF" = ( /obj/machinery/holopad, /obj/effect/turf_decal/tile/red/opposingcorners{ @@ -8796,6 +8827,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/prison) +"cie" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port) "cil" = ( /obj/machinery/door/airlock/medical{ name = "Recovery Room" @@ -8858,6 +8894,14 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/medical/surgery/fore) +"ciD" = ( +/obj/effect/turf_decal/trimline/red/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "ciH" = ( /obj/structure/table, /obj/item/stack/sheet/plasteel{ @@ -8924,6 +8968,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/security/prison/safe) +"ciU" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/iron, +/area/station/maintenance/floor3/starboard/aft) "ciV" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -8953,14 +9007,6 @@ }, /turf/open/floor/plating, /area/station/engineering/engine_smes) -"cjm" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/sign/poster/official/moth_meth/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "cjo" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 8 @@ -8977,12 +9023,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth, /area/station/construction) -"cjB" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "cjC" = ( /obj/structure/closet/emcloset/anchored, /turf/open/floor/plating, @@ -9057,16 +9097,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/wood/parquet, /area/station/medical/psychology) -"ckU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 5 - }, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "ckX" = ( /obj/machinery/atmospherics/pipe/layer_manifold/supply/visible{ dir = 4 @@ -9152,14 +9182,6 @@ /obj/machinery/chem_master, /turf/open/floor/iron/textured_large, /area/station/medical/chemistry) -"clT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) "clV" = ( /obj/structure/closet{ name = "Evidence Closet 4" @@ -9238,6 +9260,13 @@ dir = 10 }, /area/station/hallway/floor3/aft) +"cmI" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ + dir = 6 + }, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/turf/open/floor/engine/airless, +/area/station/science/ordnance/freezerchamber) "cmM" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -9254,6 +9283,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/textured, /area/station/command/heads_quarters/qm) +"cnf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/aft) "cng" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark/textured, @@ -9306,16 +9339,16 @@ /obj/effect/spawner/structure/window/hollow/reinforced/directional, /turf/open/floor/plating, /area/station/maintenance/floor1/starboard) -"cnL" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 8 +"cnJ" = ( +/obj/machinery/power/terminal{ + dir = 4 }, +/obj/structure/cable, /obj/effect/turf_decal/stripes{ - dir = 8 + dir = 4 }, -/obj/structure/closet/firecloset, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, +/turf/open/floor/plating, /area/station/maintenance/floor2/starboard) "cnW" = ( /turf/open/floor/pod/light, @@ -9515,6 +9548,13 @@ }, /turf/open/floor/engine/hull, /area/space/nearstation) +"crh" = ( +/obj/machinery/light/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "crj" = ( /obj/structure/window/reinforced/tinted/fulltile, /turf/open/floor/plating, @@ -9568,6 +9608,16 @@ }, /turf/open/floor/engine/airless, /area/station/maintenance/disposal/incinerator) +"crX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/remains/human{ + name = "dehydrated skeleton" + }, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/item/weaponcrafting/receiver, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "cse" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9622,12 +9672,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/large, /area/station/service/library/lounge) -"csF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) "csM" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -9652,6 +9696,14 @@ }, /turf/open/floor/wood, /area/station/service/bar) +"csQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/freezer, +/obj/item/stack/medical/suture, +/obj/item/stack/medical/gauze/twelve, +/obj/item/stack/medical/bone_gel, +/turf/open/floor/iron/white, +/area/station/maintenance/floor3/starboard/aft) "csT" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -9685,6 +9737,12 @@ /obj/effect/spawner/random/engineering/tank, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard/fore) +"ctC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/port/aft) "ctI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9741,6 +9799,17 @@ /obj/machinery/light/directional/east, /turf/open/floor/grass, /area/station/hallway/secondary/entry) +"cuq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/shutters{ + id = "warehouseqm" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "cus" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/pod/light, @@ -9881,16 +9950,24 @@ }, /turf/open/floor/iron/dark/textured, /area/station/medical/virology/isolation) -"cwl" = ( +"cwe" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/fakebasalt, -/area/station/maintenance/floor3/port) +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/station/medical/chemistry) "cwq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/starboard/fore) +"cwB" = ( +/obj/effect/turf_decal/trimline/green/warning, +/obj/effect/spawner/random/structure/tank_holder, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "cwD" = ( /obj/machinery/newscaster/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9916,6 +9993,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/holding_cell) +"cxi" = ( +/obj/item/food/deadmouse/moldy, +/obj/effect/turf_decal/tile/red/half, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, +/turf/open/floor/stone, +/area/station/maintenance/floor1/port) "cxl" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -10008,6 +10091,24 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/commons/dorms/apartment1) +"cyd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/station/medical/chemistry) +"cym" = ( +/obj/effect/turf_decal/trimline/purple/arrow_ccw, +/obj/effect/turf_decal/trimline/green/arrow_cw{ + dir = 1 + }, +/obj/machinery/light/directional/south, +/obj/item/radio/intercom/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/miningdock) "cyx" = ( /obj/structure/sign/poster/official/random/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10083,15 +10184,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port) -"cAU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/sign/poster/official/safety_internals/directional/south, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) "cBa" = ( /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) @@ -10279,6 +10371,11 @@ /obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/iron, /area/station/engineering/atmos) +"cDN" = ( +/obj/machinery/light/dim/directional/north, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, +/turf/open/openspace, +/area/station/maintenance/floor4/port/aft) "cEb" = ( /obj/effect/turf_decal/tile/green/half{ dir = 8 @@ -10287,14 +10384,6 @@ dir = 4 }, /area/station/service/hydroponics/garden) -"cEj" = ( -/obj/item/clothing/suit/toggle/owlwings/griffinwings, -/obj/item/clothing/under/costume/griffin, -/obj/item/clothing/shoes/griffin, -/obj/structure/sign/poster/contraband/the_griffin/directional/north, -/obj/structure/closet/cabinet, -/turf/open/floor/wood/parquet, -/area/station/maintenance/floor2/port/aft) "cEl" = ( /obj/machinery/door/window/left/directional/south{ name = "Pen 4"; @@ -10371,28 +10460,9 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron, /area/station/science/genetics) -"cFK" = ( -/obj/structure/table/wood/poker, -/obj/effect/spawner/random/entertainment/dice, -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) "cFQ" = ( /turf/closed/wall, /area/station/science/auxlab/firing_range) -"cFY" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 4 - }, -/obj/effect/landmark/navigate_destination/incinerator, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) "cGh" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/pod/light, @@ -10590,11 +10660,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/security/checkpoint/escape) -"cIp" = ( -/obj/machinery/light/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "cIr" = ( /obj/structure/chair/stool/bar/directional/east, /turf/open/floor/wood, @@ -10605,17 +10670,6 @@ dir = 4 }, /area/station/hallway/floor1/fore) -"cIE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "cIJ" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -10672,6 +10726,11 @@ name = "treated water" }, /area/station/maintenance/floor1/port/aft) +"cIX" = ( +/obj/machinery/firealarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "cJf" = ( /obj/effect/turf_decal/bot, /obj/structure/rack, @@ -10723,6 +10782,13 @@ /obj/machinery/shower/directional/west, /turf/open/floor/noslip, /area/station/commons/toilet) +"cJz" = ( +/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/maintenance/floor2/starboard/aft) "cJB" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/hydroponics, @@ -10801,17 +10867,6 @@ }, /turf/open/floor/iron/white, /area/station/science/lobby) -"cKH" = ( -/obj/effect/turf_decal/trimline/purple/arrow_ccw, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/trimline/purple/mid_joiner, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/cargo/miningdock) "cKO" = ( /obj/effect/turf_decal/trimline/red/line{ dir = 1 @@ -10877,14 +10932,6 @@ /obj/effect/decal/remains/human, /turf/open/floor/pod/dark, /area/station/service/kitchen/abandoned) -"cLL" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/effect/turf_decal/siding/wood, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) "cLQ" = ( /obj/machinery/door/airlock{ name = "Locker Room" @@ -10949,16 +10996,13 @@ /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/floor/grass, /area/station/hallway/floor1/aft) -"cMU" = ( -/obj/effect/turf_decal/tile/green/anticorner{ - dir = 8 - }, +"cMC" = ( +/obj/effect/turf_decal/trimline/green/warning, +/obj/effect/turf_decal/stripes, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/snack/green, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/secondary/exit/escape_pod) +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "cNb" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ dir = 8 @@ -11030,15 +11074,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood/tile, /area/station/service/library) -"cOw" = ( -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/structure/disposalpipe/segment, -/obj/item/stamp/head/hos, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) "cOz" = ( /obj/machinery/vending/wardrobe/chap_wardrobe, /obj/item/radio/intercom/directional/west, @@ -11098,6 +11133,14 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark/textured_large, /area/station/engineering/lobby) +"cPb" = ( +/obj/effect/turf_decal/tile/red/anticorner{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, +/turf/open/floor/stone, +/area/station/maintenance/floor1/port) "cPg" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/atmospherics/components/binary/pump/on{ @@ -11158,6 +11201,11 @@ }, /turf/open/floor/catwalk_floor, /area/station/science/cytology) +"cQh" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/security/prison) "cQj" = ( /obj/effect/spawner/random/structure/chair_maintenance{ dir = 8 @@ -11178,6 +11226,12 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/port/fore) +"cQx" = ( +/obj/structure/table/glass, +/obj/item/stack/sheet/mineral/plasma/five, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/circuit/telecomms, +/area/station/tcommsat/server/upper) "cQz" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -11195,12 +11249,6 @@ dir = 8 }, /area/station/engineering/lobby) -"cQC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/smes, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) "cQL" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{ dir = 9 @@ -11227,15 +11275,6 @@ dir = 1 }, /area/station/engineering/atmos/hfr_room) -"cQY" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "cRd" = ( /obj/machinery/door/airlock/science/glass{ name = "Research and Development" @@ -11329,11 +11368,6 @@ /obj/effect/turf_decal/tile/green/full, /turf/open/floor/iron/dark, /area/station/service/hydroponics) -"cSk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "cSq" = ( /obj/item/storage/box/teargas{ pixel_x = 3; @@ -11401,6 +11435,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron, /area/station/hallway/secondary/entry) +"cTl" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/north, +/turf/open/floor/grass, +/area/station/hallway/secondary/exit/departure_lounge) +"cTo" = ( +/obj/effect/spawner/random/structure/grille, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "cTs" = ( /obj/structure/cable/multilayer/multiz, /obj/structure/cable, @@ -11424,14 +11475,6 @@ /obj/structure/cable, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) -"cTJ" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 10 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) "cTP" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -11541,14 +11584,6 @@ name = "lab floor" }, /area/station/science/robotics/lab) -"cVb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "cVl" = ( /obj/machinery/light/no_nightlight/directional/south, /obj/effect/spawner/random/structure/crate_abandoned, @@ -11570,11 +11605,6 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron/chapel, /area/station/service/chapel) -"cVt" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/grass, -/area/station/science/xenobiology) "cVD" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -11710,12 +11740,6 @@ dir = 4 }, /area/station/hallway/floor2/fore) -"cWR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) "cWY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -11778,6 +11802,21 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) +"cXK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/warning{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard/aft) +"cXN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/broken/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/secondary/exit) "cXO" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -11805,6 +11844,17 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard) +"cYi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/hallway/secondary/exit/escape_pod) "cYx" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/rack, @@ -11877,12 +11927,11 @@ /obj/machinery/holopad, /turf/open/floor/iron/white, /area/station/science/cytology) -"cZe" = ( -/obj/effect/turf_decal/tile/green/half, +"cZg" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/escape_pod) +/obj/machinery/light/small/broken/directional/east, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "cZk" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -11959,6 +12008,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"daz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/pod, +/area/station/maintenance/floor4/port/fore) "daD" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /obj/structure/disposalpipe/segment, @@ -11993,6 +12047,17 @@ /obj/item/stack/rods/fifty, /turf/open/floor/iron, /area/station/construction/mining/aux_base) +"dbr" = ( +/obj/machinery/field/generator, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/engineering/lobby) "dbx" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ @@ -12005,6 +12070,11 @@ dir = 4 }, /area/station/hallway/secondary/exit/departure_lounge) +"dbD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard/fore) "dbH" = ( /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/machinery/door/airlock/hatch{ @@ -12048,16 +12118,6 @@ /obj/structure/sign/poster/random/directional/south, /turf/open/floor/carpet/purple, /area/station/commons/dorms/apartment1) -"dcp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) "dcw" = ( /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, @@ -12158,6 +12218,13 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/science/ordnance/testlab) +"ddL" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/decoration/material, +/obj/machinery/light/dim/directional/east, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "ddM" = ( /obj/structure/chair{ dir = 8 @@ -12185,6 +12252,10 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/floor1/aft) +"dee" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/light/colour_cycle/dancefloor_b, +/area/station/medical/abandoned) "deg" = ( /obj/machinery/door/airlock/external{ name = "External Airlock" @@ -12220,6 +12291,12 @@ }, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"deD" = ( +/obj/machinery/shieldgen, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/engineering/lobby) "deF" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/pod/light, @@ -12228,15 +12305,14 @@ /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/floor/grass, /area/station/service/library/garden) +"deK" = ( +/obj/effect/turf_decal/trimline/green/warning, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/fore) "deM" = ( /turf/open/floor/iron/white/textured_large, /area/station/service/chapel) -"dfd" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "dff" = ( /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark/side{ @@ -12290,6 +12366,14 @@ /obj/structure/disposalpipe/trunk/multiz/down, /turf/open/floor/plating/foam, /area/station/maintenance/floor2/starboard/fore) +"dfM" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/sign/poster/contraband/moffuchis_pizza/directional/north, +/turf/open/floor/wood, +/area/station/maintenance/floor1/port/aft) "dfR" = ( /obj/structure/disposalpipe/junction{ dir = 8 @@ -12308,13 +12392,6 @@ }, /turf/open/floor/iron/textured_large, /area/station/hallway/secondary/exit/departure_lounge) -"dge" = ( -/obj/effect/turf_decal/stripes{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) "dgp" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -12392,13 +12469,15 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron, /area/station/commons/locker) -"dgZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"dhg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/contraband/landmine, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "dhs" = ( /obj/structure/table/wood/fancy/royalblack, /obj/item/modular_computer/laptop/preset/civilian, @@ -12423,6 +12502,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/white, /area/station/science/lobby) +"dhR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/smes, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/floor4/port/fore) "dhX" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -12453,13 +12538,6 @@ "diA" = ( /turf/closed/wall, /area/station/service/kitchen/coldroom) -"diK" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/north, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) "diS" = ( /obj/machinery/door/airlock/freezer{ name = "Bathroom" @@ -12493,6 +12571,13 @@ /obj/structure/chair/stool/bamboo, /turf/open/floor/iron/white/textured_large, /area/station/service/chapel/office) +"djg" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/dresser, +/turf/open/floor/wood/large, +/area/station/maintenance/floor4/starboard/aft) "dji" = ( /obj/structure/table, /obj/machinery/recharger, @@ -12607,6 +12692,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/psychology) +"dkY" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/floor4/starboard/aft) "dla" = ( /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, @@ -12628,6 +12720,15 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/prison/safe) +"dlz" = ( +/obj/structure/sign/poster/contraband/atmosia_independence/directional/west, +/obj/machinery/light/small/directional/west, +/obj/machinery/light_switch/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/wood/parquet, +/area/station/maintenance/floor2/port/aft) "dlI" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 @@ -12635,6 +12736,17 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) +"dlQ" = ( +/obj/machinery/power/emitter, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/engineering/lobby) "dlW" = ( /turf/closed/wall, /area/station/maintenance/floor4/starboard/aft) @@ -12646,17 +12758,17 @@ dir = 1 }, /area/station/hallway/floor4/fore) +"dme" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/barricade, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "dmi" = ( /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/dark/textured_corner{ dir = 1 }, /area/station/maintenance/floor1/starboard/aft) -"dmk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "dmx" = ( /obj/docking_port/stationary{ dir = 8; @@ -12764,12 +12876,6 @@ "dnU" = ( /turf/closed/wall, /area/station/security/office) -"dob" = ( -/obj/machinery/computer/quantum_console{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_corner, -/area/station/cargo/drone_bay) "dog" = ( /obj/structure/showcase/cyborg/old{ dir = 8; @@ -12785,6 +12891,11 @@ }, /turf/open/floor/iron/dark, /area/station/medical/virology) +"doj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod, +/area/station/maintenance/floor4/port/fore) "dos" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -12797,6 +12908,13 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/floor1/port/aft) +"dow" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/green, +/area/station/service/abandoned_gambling_den) "doy" = ( /obj/machinery/light/directional/east, /obj/machinery/shower/directional/south, @@ -12995,11 +13113,6 @@ /obj/structure/table, /turf/open/floor/iron/smooth, /area/station/tcommsat/computer) -"dqF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/south, -/turf/open/floor/plating, -/area/station/medical/abandoned) "dqJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, @@ -13073,9 +13186,29 @@ }, /turf/open/floor/wood/parquet, /area/station/service/lawoffice) +"drH" = ( +/obj/effect/turf_decal/trimline/blue/corner{ + dir = 1 + }, +/obj/item/stack/cable_coil/five, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "drJ" = ( /turf/open/floor/pod/light, /area/station/maintenance/floor2/starboard/aft) +"drN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/torso, +/obj/effect/decal/cleanable/blood, +/obj/effect/spawner/random/trash/garbage{ + spawn_loot_count = 3; + spawn_scatter_radius = 1 + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor4/starboard) "dsb" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -13085,14 +13218,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/floor2/fore) -"dsl" = ( -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/miningdock) "dso" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -13163,11 +13288,6 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron, /area/station/cargo/miningdock) -"dtv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "dtx" = ( /obj/structure/closet/firecloset, /turf/open/floor/pod/dark, @@ -13211,6 +13331,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"due" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted/spawner/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/floor2/fore) "dui" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/wideplating_new/dark{ @@ -13245,26 +13372,12 @@ /obj/item/shard, /turf/open/floor/iron/dark, /area/station/maintenance/floor2/starboard/aft) -"duw" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/purple, -/area/station/maintenance/floor1/port/aft) "duI" = ( /obj/structure/chair{ dir = 8 }, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"duX" = ( -/obj/structure/sign/poster/official/moth_hardhat/directional/east, -/obj/structure/rack, -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 4 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) "duZ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -13277,15 +13390,6 @@ dir = 8 }, /area/station/security/range) -"dvc" = ( -/obj/structure/sign/poster/contraband/random/directional/west, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/obj/item/plant_analyzer, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "dvq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/transit_tube/curved/flipped{ @@ -13348,6 +13452,11 @@ /obj/machinery/growing/tray, /turf/open/floor/iron/white, /area/station/science/research/abandoned) +"dwA" = ( +/obj/machinery/light/dim/directional/north, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, +/turf/open/openspace, +/area/station/maintenance/floor4/port/aft) "dwD" = ( /obj/machinery/light/cold/no_nightlight/directional/north, /obj/structure/sign/poster/official/random/directional/north, @@ -13368,6 +13477,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) +"dwI" = ( +/obj/structure/table/reinforced, +/obj/item/screwdriver, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/floor2/starboard/aft) "dxd" = ( /turf/open/floor/engine/o2, /area/station/engineering/atmos) @@ -13446,10 +13561,6 @@ dir = 8 }, /area/station/service/hydroponics/garden) -"dxK" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) "dxP" = ( /obj/structure/punching_bag, /turf/open/floor/noslip, @@ -13507,6 +13618,18 @@ }, /turf/open/floor/carpet/royalblack, /area/station/service/kitchen/diner) +"dzn" = ( +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/carpet/red, +/area/station/service/library) "dzo" = ( /obj/machinery/computer/mech_bay_power_console{ dir = 4 @@ -13517,21 +13640,6 @@ }, /turf/open/floor/iron/textured_large, /area/station/cargo/warehouse) -"dzs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/secondary/exit) -"dzt" = ( -/obj/structure/window/plasma/spawner/directional/east, -/obj/structure/window/plasma/spawner/directional/south, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, -/turf/open/floor/plating, -/area/station/science/server) "dzB" = ( /obj/structure/marker_beacon/burgundy, /obj/structure/cable, @@ -13539,6 +13647,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/pod/light, /area/station/maintenance/floor4/starboard/aft) +"dzC" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/circuit/telecomms, +/area/station/tcommsat/server/upper) "dzD" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/iron/smooth, @@ -13632,16 +13745,21 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"dAR" = ( +/obj/structure/sign/poster/official/moth_hardhat/directional/east, +/obj/structure/rack, +/obj/effect/spawner/random/engineering/toolbox, +/obj/effect/turf_decal/tile/green/half{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/secondary/exit/escape_pod) "dAU" = ( /obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plating, /area/station/maintenance/floor1/port/aft) -"dBb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/floodlight_frame, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) "dBf" = ( /obj/item/kirbyplants/random, /obj/structure/sign/painting/library{ @@ -13766,13 +13884,6 @@ /obj/machinery/vending/clothing, /turf/open/floor/iron/smooth_large, /area/station/hallway/secondary/entry) -"dDu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/stack/cable_coil/cut, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "dDv" = ( /obj/machinery/holopad, /obj/structure/disposalpipe/segment, @@ -13846,6 +13957,16 @@ }, /turf/open/floor/wood, /area/station/service/bar/atrium) +"dEr" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/station_engineer, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) "dEt" = ( /turf/closed/wall, /area/station/maintenance/floor2/starboard/aft) @@ -13864,17 +13985,6 @@ /obj/machinery/light/dim/directional/west, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/port/aft) -"dEN" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/item/camera, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) "dEO" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -14002,11 +14112,6 @@ /obj/machinery/growing/tray, /turf/open/floor/iron/white, /area/station/science/research/abandoned) -"dFT" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side, -/area/station/engineering/lobby) "dFZ" = ( /obj/structure/railing, /obj/machinery/light/dim/directional/north, @@ -14015,21 +14120,10 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/starboard/fore) -"dGe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/item/clothing/suit/toggle/labcoat, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) "dGf" = ( /obj/machinery/holopad, /turf/open/floor/iron/dark, /area/station/security/lockers) -"dGp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "dGB" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -14102,11 +14196,6 @@ name = "lab floor" }, /area/station/science/genetics) -"dHD" = ( -/obj/structure/grille, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/security/checkpoint) "dHS" = ( /obj/effect/turf_decal/trimline/green/filled/arrow_cw{ dir = 10 @@ -14130,11 +14219,6 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/carpet/royalblack, /area/station/service/kitchen/diner) -"dIh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table_or_rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "dIi" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 @@ -14145,11 +14229,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"dIl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "dIv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -14204,6 +14283,17 @@ /obj/effect/turf_decal/trimline/green/filled/line, /turf/open/floor/iron/dark, /area/station/hallway/floor2/fore) +"dJa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/green/half{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/vending/wallmed/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/secondary/exit/escape_pod) "dJc" = ( /obj/item/radio/intercom/directional/north, /obj/structure/disposalpipe/segment{ @@ -14309,15 +14399,6 @@ /obj/structure/kitchenspike, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/port) -"dKf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "dKk" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/pod/dark, @@ -14424,11 +14505,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/third) -"dLL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) "dLT" = ( /obj/machinery/door/airlock/external{ name = "Atmospherics External Access" @@ -14590,17 +14666,15 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port) -"dNI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/delivery, -/obj/item/stack/sheet/cloth/five, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "dNL" = ( /obj/structure/frame/machine, /turf/open/floor/engine, /area/station/maintenance/floor1/port/aft) +"dNM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atm/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) "dNU" = ( /obj/structure/table, /obj/item/paper_bin, @@ -14616,6 +14690,12 @@ /obj/machinery/duct, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/captain/private) +"dOb" = ( +/obj/structure/table/reinforced, +/obj/item/modular_computer/laptop, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/floor2/starboard/aft) "dOg" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -14807,6 +14887,12 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/pod/light, /area/station/maintenance/floor4/port/fore) +"dQz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "dQH" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -14866,10 +14952,24 @@ }, /turf/open/floor/pod/dark, /area/station/cargo/storage) +"dRq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/station/medical/abandoned) "dRs" = ( /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) +"dRD" = ( +/obj/effect/decal/remains/human, +/obj/effect/turf_decal/tile/red/half{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, +/turf/open/floor/stone, +/area/station/maintenance/floor1/port) "dRE" = ( /obj/machinery/holopad, /turf/open/floor/iron/smooth, @@ -14978,6 +15078,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) +"dSO" = ( +/obj/machinery/power/smes/engineering{ + input_attempt = 0; + input_level = 60000; + inputting = 0; + output_attempt = 0; + output_level = 60000; + outputting = 0 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/floor2/starboard) "dSS" = ( /obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle, /obj/structure/girder/reinforced, @@ -14997,14 +15110,6 @@ }, /turf/open/floor/bamboo/tatami/black, /area/station/commons/storage/art) -"dTk" = ( -/obj/item/storage/pill_bottle, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/light/colour_cycle/dancefloor_a, -/area/station/medical/abandoned) "dTm" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/white/small, @@ -15131,6 +15236,11 @@ }, /turf/open/floor/iron/white, /area/station/security/medical) +"dVr" = ( +/obj/item/melee/skateboard/improvised, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/starboard/fore) "dVt" = ( /obj/structure/railing{ dir = 4 @@ -15240,6 +15350,12 @@ }, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/freezerchamber) +"dWC" = ( +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/structure/crate, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "dWF" = ( /obj/effect/turf_decal/siding/wideplating_new/dark, /obj/effect/turf_decal/siding/wideplating_new/dark{ @@ -15299,13 +15415,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"dXb" = ( -/obj/effect/turf_decal/stripes{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) "dXc" = ( /obj/machinery/air_sensor/ordnance_burn_chamber, /turf/open/floor/engine/vacuum, @@ -15357,17 +15466,6 @@ dir = 4 }, /area/station/hallway/floor2/fore) -"dXR" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 4 - }, -/obj/machinery/light/small/blacklight/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "dXX" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/rnd/production/techfab/department/security, @@ -15398,25 +15496,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port/fore) -"dYn" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atm/directional/south, -/turf/open/floor/carpet/red, -/area/station/service/theater) "dYr" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/newscaster/directional/north, /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) +"dYt" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "dYv" = ( /obj/effect/mapping_helpers/airlock/access/all/medical/cmo, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -15435,6 +15528,15 @@ }, /turf/open/floor/plating, /area/station/science/genetics) +"dYz" = ( +/obj/structure/window/reinforced/tinted/spawner/directional/south, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/dark/textured, +/area/station/medical/morgue) "dYB" = ( /obj/effect/turf_decal/tile/green/anticorner, /obj/structure/rack, @@ -15549,6 +15651,11 @@ dir = 1 }, /area/station/commons/locker) +"eaz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "eaB" = ( /obj/structure/chair/comfy/carp, /obj/effect/decal/cleanable/dirt, @@ -15809,12 +15916,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/maintenance/floor2/starboard/aft) -"eeN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/gibs/up, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) "efa" = ( /obj/structure/railing/corner{ dir = 8 @@ -15976,6 +16077,16 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/floor2/aft) +"ehi" = ( +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/blue/half{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/textured_edge{ + dir = 8 + }, +/area/station/medical/chemistry) "ehk" = ( /obj/structure/table/wood, /obj/item/folder/blue, @@ -16006,21 +16117,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/lobby) -"ehr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/electronics/apc{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/electronics/apc, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "ehu" = ( /obj/structure/chair/sofa/corp{ dir = 4 @@ -16088,6 +16184,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/side, /area/station/command/teleporter) +"ehY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "eir" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Access" @@ -16125,11 +16226,6 @@ dir = 8 }, /area/station/hallway/floor2/fore) -"eiJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) "eiM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -16140,11 +16236,6 @@ /obj/effect/turf_decal/stripes/end, /turf/open/floor/pod/light, /area/station/maintenance/floor4/port/fore) -"eiP" = ( -/obj/effect/turf_decal/tile/blue/half, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/textured_edge, -/area/station/medical/abandoned) "eiV" = ( /obj/structure/chair/sofa/bench/left{ dir = 1 @@ -16215,16 +16306,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/floor3/starboard/aft) -"ejI" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "ejK" = ( /obj/structure/extinguisher_cabinet/directional/east, /obj/machinery/power/apc/auto_name/directional/south, @@ -16245,25 +16326,11 @@ /obj/structure/grille, /turf/open/floor/plating, /area/station/maintenance/floor1/starboard/fore) -"ekk" = ( -/obj/structure/rack, -/obj/item/trash/boritos/red{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "eky" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/dim/directional/south, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port) -"ekz" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) "ekB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -16288,6 +16355,15 @@ /obj/effect/spawner/random/medical/surgery_tool, /turf/open/floor/iron/white, /area/station/maintenance/floor3/starboard/aft) +"ekR" = ( +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/trimline/red/line{ + dir = 10 + }, +/obj/machinery/airalarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "ekY" = ( /obj/machinery/atmospherics/pipe/smart/manifold/green/visible{ dir = 4 @@ -16297,13 +16373,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/project) -"ell" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) "elo" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor/heavy, @@ -16484,13 +16553,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"emy" = ( -/obj/machinery/biogenerator, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/station/service/hydroponics) "emI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -16545,14 +16607,6 @@ }, /turf/open/floor/iron/smooth_large, /area/station/hallway/secondary/entry) -"emZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "ena" = ( /obj/machinery/door/window/left/directional/south{ name = "Pen 2"; @@ -16598,13 +16652,6 @@ /mob/living/basic/mothroach, /turf/open/floor/noslip, /area/station/maintenance/floor1/port) -"enE" = ( -/obj/structure/table/wood, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/item/gun/ballistic/revolver/russian, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) "enF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -16680,15 +16727,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/storage) -"eov" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/item/flashlight/flare, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "eoG" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -16731,11 +16769,6 @@ }, /turf/open/floor/iron/smooth, /area/station/cargo/sorting) -"epk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/box, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "epm" = ( /obj/structure/railing, /turf/open/floor/iron, @@ -16776,11 +16809,6 @@ dir = 8 }, /area/station/medical/pharmacy) -"epQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/marker_beacon/ten, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "epW" = ( /obj/structure/curtain, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -16837,9 +16865,41 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/fore) +"erf" = ( +/obj/machinery/door/airlock{ + name = "Escape Pod C" + }, +/obj/effect/turf_decal/tile/green/half{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/escape_pod) +"erg" = ( +/obj/machinery/atmospherics/components/unary/portables_connector{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port) "erp" = ( /turf/open/floor/iron/smooth, /area/station/hallway/floor4/aft) +"erI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/green/half{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/secondary/exit/escape_pod) "erN" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -16924,14 +16984,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor1/aft) -"esH" = ( -/obj/effect/spawner/random/structure/crate, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "esR" = ( /obj/structure/table/wood/fancy/red, /obj/item/food/grown/harebell, @@ -16997,6 +17049,14 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard) +"euj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "eur" = ( /obj/effect/mapping_helpers/airlock/access/any/supply/mining, /obj/machinery/door/airlock/glass_large{ @@ -17092,15 +17152,14 @@ }, /turf/open/floor/iron, /area/station/hallway/floor2/fore) +"evv" = ( +/obj/structure/closet/firecloset/full, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "evx" = ( /turf/open/floor/pod/dark, /area/station/maintenance/floor2/port) -"evz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "evI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17129,6 +17188,15 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/commons/vacant_room/commissary) +"evQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/machinery/light_switch/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron/dark/smooth_large, +/area/station/service/library/printer) "evR" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -17237,6 +17305,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) +"exF" = ( +/obj/machinery/plumbing/bottler, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "exK" = ( /obj/machinery/light/cold/no_nightlight/directional/east, /obj/effect/turf_decal/trimline/green/warning, @@ -17264,6 +17337,21 @@ dir = 1 }, /area/station/hallway/floor1/aft) +"eyr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/electronics/apc{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/electronics/apc, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "eyI" = ( /obj/machinery/announcement_system, /turf/open/floor/circuit/telecomms, @@ -17331,11 +17419,6 @@ /obj/machinery/electrolyzer, /turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) -"ezI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) "ezK" = ( /obj/machinery/iv_drip, /obj/machinery/airalarm/directional/east, @@ -17422,17 +17505,6 @@ }, /turf/open/floor/iron/white, /area/station/science/circuits) -"eBn" = ( -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/item/stamp/head/captain, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"eBu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate_abandoned, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "eBy" = ( /obj/effect/turf_decal/tile/red/half, /obj/machinery/duct, @@ -17552,6 +17624,14 @@ /obj/effect/turf_decal/trimline/green/filled/line, /turf/open/floor/iron/dark, /area/station/medical/virology) +"eDV" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "eEd" = ( /obj/machinery/door/airlock/command/glass{ name = "Ancient Office" @@ -17615,15 +17695,6 @@ /obj/effect/landmark/start/station_engineer, /turf/open/floor/iron/dark, /area/station/engineering/lobby) -"eEB" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "eEE" = ( /obj/structure/railing{ dir = 5 @@ -17631,11 +17702,6 @@ /obj/structure/marker_beacon/burgundy, /turf/open/floor/plating/airless, /area/station/solars/starboard/aft) -"eEN" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "eEQ" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/checker, @@ -17680,6 +17746,12 @@ /obj/machinery/light/dim/directional/east, /turf/open/floor/carpet/red, /area/station/service/theater) +"eFw" = ( +/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "eFx" = ( /obj/effect/turf_decal/trimline/purple/corner{ dir = 1 @@ -17805,13 +17877,6 @@ /obj/item/flashlight/lamp, /turf/open/floor/carpet, /area/station/security/detectives_office) -"eHG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) "eHK" = ( /obj/effect/turf_decal/trimline/white/line, /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/air_output, @@ -17899,19 +17964,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/hallway/floor2/fore) -"eIz" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/disposal/bin{ - name = "Book Returns" - }, -/turf/open/floor/iron, -/area/station/service/library) "eIK" = ( /obj/structure/sign/poster/official/random/directional/north, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -17928,12 +17980,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port/fore) -"eJc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) "eJl" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17963,12 +18009,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron, /area/station/engineering/engine_smes) -"eJF" = ( -/obj/machinery/airalarm/directional/south, -/obj/item/kirbyplants/random, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) "eJK" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -18178,30 +18218,6 @@ /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/pod/light, /area/station/maintenance/floor3/starboard/fore) -"eNa" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/white{ - pixel_y = -5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/aft) -"eNi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"eNj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/emcloset/anchored, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "eNk" = ( /obj/machinery/door/firedoor/heavy, /obj/effect/turf_decal/stripes/line{ @@ -18219,17 +18235,6 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/white/textured_large, /area/station/service/chapel) -"eNJ" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"eNK" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/grass, -/area/station/science/xenobiology) "eNM" = ( /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/fake_snow{ @@ -18253,11 +18258,11 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor3/port/aft) -"eOf" = ( +"eOa" = ( +/obj/structure/closet, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, /turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) +/area/station/maintenance/floor1/port/aft) "eOh" = ( /obj/structure/table/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -18267,13 +18272,6 @@ /obj/effect/turf_decal/trimline/blue/line, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port) -"eOo" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) "eOw" = ( /obj/structure/rack, /turf/open/floor/iron/dark, @@ -18287,6 +18285,14 @@ "eOP" = ( /turf/closed/wall/r_wall, /area/station/hallway/floor4/aft) +"eOT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/station/medical/chemistry) "eOY" = ( /obj/effect/spawner/random/structure/grille, /obj/structure/cable, @@ -18365,6 +18371,16 @@ /obj/effect/landmark/navigate_destination/dockesc, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"eQc" = ( +/obj/effect/mob_spawn/corpse/human/skeleton{ + pixel_y = 14 + }, +/obj/effect/turf_decal/tile/red/half{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, +/turf/open/floor/stone, +/area/station/maintenance/floor1/port) "eQe" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -18380,6 +18396,11 @@ /obj/machinery/prisongate, /turf/open/floor/plating, /area/station/security/holding_cell) +"eQk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, +/turf/open/floor/iron/dark/textured_large, +/area/station/hallway/secondary/exit/escape_pod) "eQw" = ( /obj/machinery/firealarm/directional/north, /turf/open/floor/pod/dark, @@ -18466,11 +18487,6 @@ /obj/item/clothing/mask/balaclava, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) -"eRZ" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "eSa" = ( /obj/machinery/airalarm/directional/south, /obj/effect/spawner/random/trash/hobo_squat, @@ -18488,6 +18504,21 @@ /obj/machinery/duct, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"eSo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/starboard/fore) +"eSr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/white, +/area/station/maintenance/floor3/starboard/aft) "eSw" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/stool/directional/south, @@ -18517,12 +18548,36 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/catwalk_floor, /area/station/hallway/floor1/aft) +"eTl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/cargo/storage) +"eTn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/growing/tray, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard) "eTp" = ( /obj/effect/spawner/structure/window/hollow/end{ dir = 1 }, /turf/open/floor/plating, /area/station/maintenance/floor3/starboard) +"eTr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard) +"eTE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage{ + spawn_loot_count = 3; + spawn_scatter_radius = 1 + }, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/starboard/aft) "eTH" = ( /obj/structure/flora/bush/sparsegrass/style_random, /mob/living/carbon/human/species/monkey, @@ -18612,15 +18667,6 @@ /obj/structure/railing, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port) -"eUZ" = ( -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/item/food/gumball, -/obj/item/food/gumball, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "eVe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -18638,6 +18684,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port) +"eVn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/pod, +/area/station/maintenance/floor4/port/fore) +"eVS" = ( +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/atm/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/floor3/aft) "eVU" = ( /obj/structure/lattice/catwalk, /turf/open/openspace, @@ -18721,14 +18779,6 @@ /obj/structure/stairs/north, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/floor1/fore) -"eWW" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "eWY" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -18783,16 +18833,17 @@ "eXy" = ( /turf/closed/wall, /area/station/science/breakroom) -"eXB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) "eXI" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/structure/flora/bush/lavendergrass/style_random, /turf/open/floor/grass, /area/station/security/courtroom) +"eXS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "eXT" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -18820,13 +18871,6 @@ /obj/structure/lattice/catwalk, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) -"eYp" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) "eYq" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -18839,6 +18883,11 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark, /area/station/security/brig) +"eYC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "eYN" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -18846,11 +18895,13 @@ /obj/structure/cable, /turf/open/floor/iron/chapel, /area/station/service/chapel) -"eYY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/built/directional/south, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/warehouse) +"eYW" = ( +/obj/machinery/vending/wallmed/directional/south, +/obj/structure/bed/medical/emergency, +/obj/machinery/iv_drip, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/iron/white, +/area/station/security/medical) "eZa" = ( /obj/structure/railing{ dir = 4 @@ -18913,14 +18964,6 @@ /obj/effect/landmark/start/psychologist, /turf/open/floor/iron/white, /area/station/medical/psychology) -"faj" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/structure/closet/masks, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) "fak" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/machinery/holopad, @@ -18960,12 +19003,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/station/command/bridge) -"faL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/freezer, -/obj/effect/spawner/random/medical/memeorgans, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "faM" = ( /obj/machinery/airalarm/directional/north, /obj/structure/cable, @@ -18988,6 +19025,13 @@ }, /turf/open/floor/iron/dark, /area/station/commons/storage/tools) +"faU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port) "faW" = ( /obj/machinery/light/directional/west, /obj/machinery/computer/camera_advanced/base_construction/aux{ @@ -19060,13 +19104,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron, /area/station/cargo/lobby) -"fbX" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) +"fbR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/aft) "fcc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -19081,13 +19123,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness) -"fci" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) "fco" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -19101,15 +19136,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"fcz" = ( -/obj/structure/railing, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) "fcC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -19165,6 +19191,19 @@ dir = 9 }, /area/station/command/bridge) +"fdQ" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/warning{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "fdV" = ( /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, @@ -19178,14 +19217,6 @@ }, /turf/open/floor/plating, /area/station/medical/surgery/fore) -"fdX" = ( -/obj/item/stack/sheet/iron, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) "feh" = ( /obj/effect/turf_decal/trimline/white/arrow_ccw, /obj/effect/turf_decal/trimline/white/mid_joiner, @@ -19205,6 +19236,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/space/basic, /area/space/nearstation) +"fes" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "fey" = ( /obj/effect/turf_decal/trimline/yellow/warning, /obj/machinery/button/elevator/directional/west{ @@ -19261,16 +19296,6 @@ "ffb" = ( /turf/open/floor/iron, /area/station/service/hydroponics/garden) -"ffd" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) "ffe" = ( /turf/closed/wall/r_wall, /area/station/security/holding_cell) @@ -19314,6 +19339,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/virology) +"ffP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/wood, +/area/station/maintenance/floor3/starboard/aft) "ffS" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -19331,14 +19364,6 @@ }, /turf/open/floor/iron, /area/station/hallway/floor2/fore) -"ffV" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) "ffY" = ( /obj/machinery/vending/snack/blue, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -19376,17 +19401,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/cargo/office) -"fhi" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/trunk/multiz, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/drone_bay) "fhl" = ( /obj/structure/bed{ dir = 1 @@ -19401,6 +19415,14 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/carpet/purple, /area/station/commons/dorms/apartment1) +"fhq" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear/white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard/aft) "fhr" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -19430,13 +19452,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/medical/virology) -"fhA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "fhG" = ( /obj/structure/table/wood, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -19460,16 +19475,6 @@ }, /turf/open/floor/wood, /area/station/hallway/secondary/entry) -"fhY" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) "fhZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -19496,12 +19501,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/floor3/starboard) -"fiX" = ( -/obj/structure/chair/comfy/brown, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/assistant, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) "fja" = ( /turf/closed/wall/r_wall, /area/station/science/lobby) @@ -19642,14 +19641,6 @@ /obj/structure/cable, /turf/open/floor/carpet/orange, /area/station/service/chapel/funeral) -"fkv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) "fkA" = ( /turf/closed/wall/r_wall, /area/station/security/execution/education) @@ -19738,15 +19729,6 @@ /obj/structure/table/wood, /turf/open/floor/wood/tile, /area/station/service/library) -"flw" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/structure/punching_bag, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) "flS" = ( /turf/open/floor/carpet/orange, /area/station/service/chapel/office) @@ -19786,11 +19768,6 @@ /obj/effect/spawner/random/structure/tank_holder, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/fore) -"fmF" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) "fmK" = ( /obj/structure/mirror/directional/east, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -19823,15 +19800,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/floor1/starboard/aft) -"fmQ" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/light/cold/no_nightlight/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) "fna" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -19913,6 +19881,10 @@ }, /turf/open/floor/iron, /area/station/hallway/floor1/fore) +"fnZ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/port/aft) "fod" = ( /obj/structure/table/wood/fancy/red, /obj/item/flashlight/flare/candle, @@ -19939,6 +19911,13 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology/hallway) +"fol" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port/aft) "fou" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/structure/chair/plastic, @@ -19982,10 +19961,24 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/floor3/aft) +"foN" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/contraband/landmine, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "fpb" = ( /obj/structure/table/wood, /turf/open/floor/carpet/green, /area/station/commons/dorms/apartment2) +"fpf" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/terminal{ + dir = 4 + }, +/turf/open/floor/circuit/telecomms, +/area/station/tcommsat/server/upper) "fpg" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -19993,6 +19986,16 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) +"fph" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted/spawner/directional/north, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/hallway/floor2/fore) "fpk" = ( /obj/structure/filingcabinet, /obj/structure/filingcabinet, @@ -20008,11 +20011,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, /turf/open/floor/plating, /area/station/hallway/floor1/aft) -"fpt" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard/aft) "fpv" = ( /obj/effect/turf_decal/trimline/blue/line, /obj/effect/decal/cleanable/dirt, @@ -20053,6 +20051,12 @@ "fpU" = ( /turf/open/floor/glass, /area/station/service/library) +"fpY" = ( +/obj/structure/chair/comfy/brown, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/assistant, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/fore) "fqe" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -20082,12 +20086,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port/fore) -"fqE" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) "fqJ" = ( /obj/structure/closet/bombcloset/security, /obj/effect/turf_decal/stripes/line{ @@ -20129,17 +20127,15 @@ }, /turf/open/floor/iron/white, /area/station/science/cytology) -"frE" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/machinery/light/small/blacklight/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "frL" = ( /turf/closed/wall, /area/station/engineering/gravity_generator) +"frP" = ( +/obj/effect/turf_decal/trimline/green/warning, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/fore) "frU" = ( /obj/structure/filingcabinet/chestdrawer{ pixel_y = 2 @@ -20194,6 +20190,11 @@ "fsJ" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/ai_upload) +"fsP" = ( +/obj/effect/spawner/random/maintenance/two, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "fsR" = ( /obj/item/kirbyplants/random, /obj/machinery/light/directional/east, @@ -20208,6 +20209,11 @@ dir = 1 }, /area/station/hallway/floor4/fore) +"ftf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/maintenance/floor2/starboard/aft) "fti" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/structure/disposalpipe/segment{ @@ -20259,6 +20265,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/cafeteria, /area/station/security/prison) +"ftz" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, +/turf/open/openspace, +/area/station/maintenance/floor3/port) "ftJ" = ( /obj/structure/chair{ dir = 4 @@ -20292,19 +20303,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"fur" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/turf/open/openspace, -/area/station/maintenance/floor3/port) -"fuy" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/trimline/red/line{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "fuH" = ( /obj/effect/turf_decal/trimline/green/warning{ dir = 4 @@ -20340,15 +20338,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/port) -"fve" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/shieldgen, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "fvp" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -20397,6 +20386,15 @@ }, /turf/open/floor/mineral/silver, /area/station/service/chapel/funeral) +"fvM" = ( +/obj/item/stack/tile/iron/white, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/north, +/turf/open/floor/plating, +/area/station/medical/abandoned) "fvO" = ( /obj/structure/sign/departments/cargo/directional/west, /turf/open/floor/iron/dark/smooth_large, @@ -20446,20 +20444,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) -"fwC" = ( -/obj/machinery/light/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/security/range) -"fwF" = ( -/obj/effect/turf_decal/trimline/blue/corner, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "fwJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/spawner/random/trash/graffiti{ @@ -20510,41 +20494,15 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/floor4/aft) -"fxd" = ( -/obj/structure/closet/firecloset, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/engineering/lobby) "fxm" = ( /obj/effect/decal/cleanable/oil, /turf/open/floor/iron, /area/station/maintenance/floor2/starboard/aft) -"fxo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos) "fxp" = ( /obj/structure/dresser, /obj/machinery/light/warm/directional/north, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/cmo) -"fxr" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/shieldgen, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "fxC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -20694,21 +20652,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/lobby) -"fzG" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"fzR" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "aband_armour"; - name = "Armoury Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) "fzU" = ( /turf/open/floor/wood/tile, /area/station/command/heads_quarters/captain/private) @@ -20735,31 +20678,34 @@ dir = 1 }, /area/station/commons/locker) -"fAp" = ( -/obj/machinery/door/airlock{ - name = "Escape Pod B" - }, -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, +"fAk" = ( +/obj/effect/turf_decal/tile/green/half, /obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/turf_decal/tile/green/half{ - dir = 8 +/obj/structure/sign/warning/pods/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/turf/open/floor/iron/dark, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark/side, /area/station/hallway/secondary/exit/escape_pod) -"fAw" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/delivery, +"fAv" = ( +/obj/effect/turf_decal/stripes, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "fAz" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/service/kitchen) +"fAH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard/aft) "fAP" = ( /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 1 @@ -20839,12 +20785,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/hallway/floor3/aft) -"fBO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "fBP" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 @@ -20871,6 +20811,14 @@ /obj/structure/stairs/north, /turf/open/floor/iron/white/small, /area/station/medical/chemistry) +"fCo" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "fCp" = ( /turf/open/floor/plating/airless, /area/space) @@ -21029,11 +20977,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"fDM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "fDN" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -21078,12 +21021,6 @@ }, /turf/open/floor/mineral/silver, /area/station/service/chapel) -"fEr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/robot_debris/down, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "fEu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -21091,6 +21028,15 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) +"fEB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/side{ + dir = 5 + }, +/area/station/hallway/secondary/exit) "fED" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21113,6 +21059,22 @@ }, /turf/open/floor/iron, /area/station/cargo/miningdock) +"fER" = ( +/obj/effect/turf_decal/trimline/blue/corner{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) +"fES" = ( +/obj/item/stack/sheet/cardboard, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port/aft) "fEZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21126,6 +21088,13 @@ /obj/structure/closet/firecloset/full, /turf/open/floor/iron, /area/station/hallway/floor3/aft) +"fFs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) "fFu" = ( /obj/effect/turf_decal/trimline/purple/line{ dir = 1 @@ -21164,6 +21133,11 @@ name = "lab floor" }, /area/station/science/genetics) +"fFW" = ( +/obj/structure/window/reinforced/tinted/spawner/directional/west, +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/station/commons/vacant_room/office) "fFY" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -21211,10 +21185,6 @@ /obj/structure/falsewall, /turf/open/floor/plating, /area/station/maintenance/floor2/port/fore) -"fGC" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/turf/open/openspace, -/area/station/maintenance/floor4/port/aft) "fGI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21230,15 +21200,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/fore) -"fGK" = ( -/obj/structure/rack, -/obj/item/trash/champagne_cork{ - pixel_x = 8; - pixel_y = 5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "fGW" = ( /obj/effect/turf_decal/tile/green/full, /obj/structure/rack, @@ -21317,14 +21278,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/office) -"fHE" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) "fHG" = ( /obj/machinery/atmospherics/components/binary/pump/layer4{ name = "Distro to External Ports" @@ -21372,10 +21325,6 @@ dir = 1 }, /area/station/engineering/storage/tech) -"fIz" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/turf/open/openspace, -/area/station/maintenance/floor3/port) "fID" = ( /obj/structure/railing/corner{ dir = 8 @@ -21402,6 +21351,14 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/floor2/starboard/aft) +"fIS" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 4 + }, +/obj/machinery/airalarm/directional/north, +/obj/effect/mapping_helpers/airalarm/mixingchamber_access, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/freezerchamber) "fIX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/crate, @@ -21505,13 +21462,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) -"fKC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) "fKD" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green, @@ -21608,6 +21558,12 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard) +"fLY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/textured_large, +/area/station/hallway/secondary/exit/departure_lounge) "fMa" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21636,14 +21592,6 @@ "fMs" = ( /turf/open/floor/plating/airless, /area/station/maintenance/floor3/port/aft) -"fMB" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "fMC" = ( /obj/item/radio/intercom/directional/west, /obj/structure/chair/comfy/shuttle{ @@ -21698,13 +21646,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) -"fNv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/stairs{ - dir = 1 - }, -/area/station/cargo/drone_bay) "fNA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -21759,6 +21700,15 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron, /area/station/science/robotics/lab) +"fOp" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/shieldgen, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "fOq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -21975,6 +21925,11 @@ }, /turf/open/floor/iron, /area/station/hallway/floor2/fore) +"fRe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "fRm" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -22113,11 +22068,27 @@ }, /turf/open/floor/wood/large, /area/station/service/kitchen/kitchen_backroom) -"fTa" = ( +"fSY" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/table/reinforced, +/obj/item/stack/sheet/iron/twenty, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 3; + pixel_y = 3 + }, /obj/effect/decal/cleanable/dirt, -/obj/structure/barricade/sandbags, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) +"fSZ" = ( +/obj/machinery/door/airlock/mining{ + name = "Warehouse" + }, +/obj/effect/mapping_helpers/airlock/access/any/supply/general, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "fTb" = ( /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/pod/light, @@ -22151,19 +22122,6 @@ name = "lab floor" }, /area/station/science/robotics/lab) -"fTs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/drone_bay) -"fTu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "fTv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -22291,13 +22249,6 @@ /obj/structure/sign/poster/random/directional/east, /turf/open/floor/iron, /area/station/service/hydroponics/garden/abandoned) -"fVk" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) "fVq" = ( /obj/structure/chair/sofa/bench/right{ dir = 8 @@ -22322,6 +22273,13 @@ name = "boxing ring" }, /area/station/commons/fitness) +"fVB" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "fVF" = ( /obj/structure/chair/office{ dir = 8 @@ -22372,6 +22330,12 @@ /obj/machinery/duct, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"fWo" = ( +/obj/effect/turf_decal/trimline/purple/warning, +/obj/machinery/light/dim/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "fWp" = ( /obj/effect/turf_decal/bot, /obj/structure/punching_bag, @@ -22385,6 +22349,12 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/floor1/aft) +"fWv" = ( +/obj/structure/bed/medical/emergency, +/obj/machinery/iv_drip, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/white, +/area/station/security/medical) "fWz" = ( /obj/structure/ladder, /turf/open/floor/pod/dark, @@ -22423,6 +22393,14 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"fXn" = ( +/obj/effect/spawner/random/structure/chair_maintenance{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/east, +/turf/open/floor/plating, +/area/station/medical/abandoned) "fXq" = ( /turf/open/floor/plating, /area/station/maintenance/floor2/starboard/aft) @@ -22433,6 +22411,11 @@ "fXs" = ( /turf/closed/wall, /area/station/maintenance/floor4/port) +"fXv" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "fXy" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -22459,6 +22442,11 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/office) +"fXG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/dark/smooth_large, +/area/station/service/library/printer) "fXM" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/left/directional/south{ @@ -22475,6 +22463,11 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos/office) +"fXQ" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, +/turf/open/openspace, +/area/station/maintenance/floor2/port) "fXU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -22571,16 +22564,14 @@ }, /turf/open/floor/iron/dark, /area/station/commons/vacant_room/commissary) -"fYM" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/flashlight/flare/candle{ - pixel_x = 1; - pixel_y = 7 - }, +"fYI" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/food/ready_donk, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/closet/toolcloset, /turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) +/area/station/maintenance/floor4/port/fore) "fYR" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -22591,6 +22582,11 @@ /obj/machinery/teleport/station, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/aisat) +"fZa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/starboard/aft) "fZg" = ( /obj/structure/chair/sofa/bench, /obj/effect/turf_decal/tile/green/half/contrasted, @@ -22659,6 +22655,15 @@ /obj/effect/spawner/random/maintenance/three, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/fore) +"gaa" = ( +/obj/machinery/atm/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/floor1/fore) +"gae" = ( +/obj/machinery/vending/boozeomat/all_access, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "gaf" = ( /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/machinery/door/airlock/hatch{ @@ -22711,15 +22716,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/grass, /area/station/service/chapel) -"gaT" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) "gaU" = ( /obj/machinery/light/small/directional/south, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -22819,17 +22815,6 @@ /obj/effect/spawner/random/entertainment/coin, /turf/open/floor/carpet/green, /area/station/service/abandoned_gambling_den) -"gcj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/poddoor/shutters{ - id = "warehouseqm" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "gcs" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/effect/turf_decal/tile/green/half, @@ -22906,10 +22891,11 @@ /obj/structure/reagent_dispensers/plumbed, /turf/open/floor/pod/light, /area/station/maintenance/floor3/starboard/fore) -"gdr" = ( +"gdp" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/item/clothing/head/costume/allies, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "gdA" = ( /obj/effect/turf_decal/tile/green/half{ dir = 8 @@ -22924,16 +22910,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/engineering/gravity_generator) -"gdS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) "gdZ" = ( /obj/structure/cable, /obj/effect/landmark/navigate_destination/disposals, @@ -22973,20 +22949,11 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/wood/tile, /area/station/service/library) -"get" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/wall, -/area/station/maintenance/floor3/port/aft) "geA" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/floor4/fore) -"geB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/bag/trash, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "geD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet/blue, @@ -23003,6 +22970,16 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/plating/airless, /area/space/nearstation) +"geP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 8 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "geW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -23046,11 +23023,22 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/hallway/floor3/fore) -"gfF" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/turf/open/openspace, -/area/station/maintenance/floor2/port) +"gfO" = ( +/obj/machinery/door/poddoor/shutters{ + id = "warehouseqm" + }, +/obj/machinery/button/door/directional/north{ + id = "warehouseqm" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "gfP" = ( /obj/effect/turf_decal/siding/wood/end{ dir = 4 @@ -23071,6 +23059,11 @@ dir = 8 }, /area/station/engineering/storage/tech) +"ggb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "ggd" = ( /obj/structure/railing{ dir = 8 @@ -23178,6 +23171,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/science/robotics/lab) +"ghG" = ( +/obj/machinery/chem_master{ + name = "Hydroanalysis Device" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "ghH" = ( /obj/effect/turf_decal/tile/blue/half{ dir = 4 @@ -23221,11 +23221,6 @@ /obj/effect/turf_decal/tile/red, /turf/open/floor/iron/dark, /area/station/security/office) -"gid" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "gii" = ( /obj/machinery/camera/motion/directional/east{ c_tag = "MiniSat - Fore"; @@ -23256,6 +23251,23 @@ "giv" = ( /turf/closed/wall, /area/station/service/janitor) +"giz" = ( +/obj/machinery/disposal/bin{ + name = "Book Returns" + }, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron, +/area/station/service/library) "giM" = ( /obj/machinery/airalarm/directional/west, /obj/structure/table, @@ -23264,17 +23276,6 @@ }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"giQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"giV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) "giX" = ( /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/aft) @@ -23314,13 +23315,6 @@ /obj/item/storage/medkit/advanced, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/cmo) -"gjC" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/warning, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "gjH" = ( /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ dir = 1 @@ -23349,17 +23343,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/checker, /area/station/commons/locker) -"gkx" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 8 - }, +"gks" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"gkI" = ( -/obj/machinery/field/generator, +/obj/structure/sign/poster/random/directional/south, +/turf/open/floor/iron/dark/smooth_large, +/area/station/service/library/printer) +"gkU" = ( +/obj/machinery/airalarm/directional/west, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/dark/side, /area/station/engineering/lobby) "gkX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -23426,6 +23418,13 @@ /obj/structure/grille, /turf/open/floor/plating, /area/station/maintenance/floor4/starboard/fore) +"glB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/medical/abandoned) "glH" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -23468,11 +23467,6 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/engine, /area/station/science/xenobiology) -"gmg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "gmj" = ( /obj/structure/chair/office{ dir = 1 @@ -23523,11 +23517,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/catwalk_floor, /area/station/hallway/floor3/fore) -"gmQ" = ( -/obj/effect/spawner/random/trash/graffiti, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) "gmV" = ( /obj/structure/chair/comfy/carp, /obj/effect/decal/cleanable/glitter, @@ -23550,14 +23539,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/checkpoint/second) -"gns" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "gnx" = ( /obj/machinery/door/airlock/highsecurity{ name = "Atmos Access" @@ -23590,13 +23571,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/side, /area/station/security/office) -"goe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) "goh" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Access" @@ -23686,16 +23660,6 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/fore) -"gpM" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/printer) "gpZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -23740,16 +23704,6 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /turf/open/floor/pod/light, /area/station/maintenance/floor4/starboard) -"gqF" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"gqI" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/security/prison) "gqJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -23788,11 +23742,6 @@ "grg" = ( /turf/open/floor/iron, /area/station/hallway/floor1/fore) -"gri" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) "grk" = ( /obj/effect/landmark/start/roboticist, /turf/open/floor/iron, @@ -23803,16 +23752,15 @@ dir = 4 }, /area/station/hallway/floor3/aft) +"grw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard/aft) "grA" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/pod/light, /area/station/maintenance/floor2/starboard/fore) -"grD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port/aft) "grI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -23902,13 +23850,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/xenobiology/hallway) -"gsN" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) "gsP" = ( /obj/effect/turf_decal/trimline/white/line{ dir = 4 @@ -23934,6 +23875,13 @@ /obj/machinery/portable_atmospherics/pump, /turf/open/floor/iron, /area/station/engineering/atmos) +"gsW" = ( +/obj/structure/sign/poster/contraband/hacking_guide/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/duct, +/turf/open/floor/iron/dark/textured, +/area/station/commons/fitness) "gta" = ( /obj/structure/closet{ name = "Evidence Closet 2" @@ -23942,12 +23890,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, /area/station/security/evidence) -"gts" = ( -/obj/item/rack_parts, -/obj/item/weldingtool/mini, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "gtt" = ( /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) @@ -23968,6 +23910,17 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"gtI" = ( +/obj/effect/turf_decal/trimline/purple/arrow_ccw, +/obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/trimline/purple/mid_joiner, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/trimline/green/arrow_cw{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/cargo/miningdock) "gtO" = ( /obj/structure/closet/athletic_mixed, /turf/open/floor/iron/dark, @@ -24016,11 +23969,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/service/kitchen/abandoned) -"gun" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) "guv" = ( /obj/effect/mapping_helpers/airlock/access/any/science/minisat, /obj/machinery/door/airlock/hatch{ @@ -24038,6 +23986,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/cytology) +"guD" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/structure/chair/stool/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "guF" = ( /obj/machinery/camera/autoname/directional/west, /obj/machinery/newscaster/directional/west, @@ -24061,6 +24016,13 @@ "guQ" = ( /turf/open/floor/engine/hull, /area/station/maintenance/floor1/starboard/aft) +"guU" = ( +/obj/machinery/atmospherics/components/binary/pump/layer2{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/engineering/atmos) "guZ" = ( /obj/item/stack/sheet/iron, /turf/open/floor/engine{ @@ -24074,22 +24036,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/service/theater) -"gvk" = ( -/obj/structure/cable, -/obj/structure/table/reinforced, -/obj/item/storage/fancy/donut_box, -/obj/machinery/atm/directional/north, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/engineering/lobby) -"gvn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/medical/abandoned) "gvy" = ( /obj/machinery/growing/tray, /obj/effect/decal/cleanable/dirt, @@ -24102,13 +24048,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness) -"gvQ" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) "gvU" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, @@ -24148,11 +24087,6 @@ dir = 6 }, /area/station/hallway/floor2/aft) -"gwD" = ( -/obj/structure/frame/machine, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server/upper) "gwH" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -24166,14 +24100,15 @@ /obj/structure/chair/plastic, /turf/open/floor/iron/dark, /area/station/security/holding_cell) -"gwT" = ( -/obj/structure/railing{ - dir = 1 +"gwW" = ( +/obj/structure/cable, +/obj/machinery/power/smes/engineering{ + input_level = 60000; + output_level = 60000 }, -/obj/effect/spawner/random/engineering/tool, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) +/turf/open/floor/iron/smooth_large, +/area/station/maintenance/floor2/starboard) "gxb" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/multilayer/multiz, @@ -24188,16 +24123,6 @@ "gxc" = ( /turf/open/floor/carpet/orange, /area/station/service/chapel/funeral) -"gxd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) "gxf" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/cigbutt, @@ -24267,16 +24192,6 @@ /obj/item/storage/box/mousetraps, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/fore) -"gyc" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/textured_edge{ - dir = 4 - }, -/area/station/medical/chemistry) "gyd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -24304,6 +24219,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/engineering/gravity_generator) +"gyE" = ( +/obj/item/trash/semki/healthy, +/obj/item/trash/spacers_sidekick{ + pixel_x = -2 + }, +/obj/item/trash/syndi_cakes, +/obj/effect/decal/cleanable/ants, +/obj/effect/decal/cleanable/garbage, +/obj/effect/decal/cleanable/food/flour, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "gyG" = ( /obj/effect/spawner/structure/window/hollow/directional{ dir = 8 @@ -24325,13 +24252,6 @@ /obj/machinery/light/dim/directional/west, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port/aft) -"gyV" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - name = "killroom vent" - }, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/turf/open/floor/engine/telecomms, -/area/station/science/xenobiology) "gyX" = ( /obj/structure/chair/sofa/left/brown{ dir = 1 @@ -24355,6 +24275,13 @@ dir = 1 }, /area/station/hallway/floor3/fore) +"gzi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/aft) "gzt" = ( /obj/effect/turf_decal/siding/wideplating_new/dark, /obj/machinery/light/small/directional/north, @@ -24455,15 +24382,27 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard/fore) +"gAz" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/maintenance/floor3/starboard/aft) +"gAB" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/grass, +/area/station/science/xenobiology) "gAC" = ( /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/wood/tile, /area/station/service/library) -"gAP" = ( -/obj/item/reagent_containers/spray/syndicate, +"gAG" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/range) "gAT" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -24504,11 +24443,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"gBs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/mop, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "gBG" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, @@ -24581,6 +24515,11 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/starboard/fore) +"gCO" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, +/turf/open/openspace, +/area/station/maintenance/floor3/port) "gCU" = ( /obj/machinery/light/blacklight/directional/west, /obj/item/stack/arcadeticket, @@ -24664,6 +24603,11 @@ /obj/effect/landmark/start/warden, /turf/open/floor/iron/dark, /area/station/security/warden) +"gEi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/toy/nuke, +/turf/open/floor/pod/light, +/area/station/security/execution/education) "gEk" = ( /obj/machinery/suit_storage_unit/security, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -24679,13 +24623,18 @@ /obj/item/stack/rods/fifty, /turf/open/floor/iron, /area/station/engineering/atmos) -"gEB" = ( -/obj/structure/railing{ - dir = 8 - }, +"gEA" = ( +/obj/machinery/light/broken/directional/north, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/fore) +"gEH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/white/line{ + dir = 5 + }, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "gEL" = ( /obj/effect/spawner/structure/window/hollow/directional{ dir = 1 @@ -24708,14 +24657,6 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/white, /area/station/science/cytology) -"gFf" = ( -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 4 - }, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, -/turf/open/floor/stone, -/area/station/maintenance/floor1/port) "gFh" = ( /obj/effect/spawner/random/engineering/tank, /obj/effect/turf_decal/trimline/dark_blue/end{ @@ -24736,14 +24677,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/hallway/floor2/fore) -"gFz" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 1 - }, -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) "gFE" = ( /obj/structure/closet/secure_closet/chief_medical, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -24751,11 +24684,6 @@ }, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/cmo) -"gFO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "gFQ" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24777,26 +24705,16 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark, /area/station/cargo/drone_bay) -"gGu" = ( -/obj/structure/table/wood, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/rd) -"gGx" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +"gGg" = ( +/obj/effect/spawner/random/trash/graffiti{ + pixel_y = -32 }, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" +/obj/structure/disposalpipe/broken{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor3/port/aft) +/turf/open/floor/plating, +/area/station/medical/abandoned) "gGA" = ( /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 4 @@ -24807,12 +24725,6 @@ }, /turf/open/floor/iron, /area/station/science/auxlab) -"gGB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/lead_pipe, -/obj/structure/closet/cardboard/metal, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "gGH" = ( /obj/machinery/status_display/ai/directional/north, /turf/open/floor/iron/dark/side{ @@ -24824,14 +24736,6 @@ /obj/structure/cable, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) -"gGP" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/entertainment/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) "gGZ" = ( /obj/effect/turf_decal/trimline/green/line{ dir = 4 @@ -24909,11 +24813,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/virology) -"gHV" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/engineering/lobby) "gHY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -24990,6 +24889,11 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) +"gIx" = ( +/obj/structure/closet/emcloset/anchored, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "gIz" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, @@ -25046,13 +24950,6 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"gJy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "gJz" = ( /obj/effect/turf_decal/tile/green/opposingcorners, /obj/machinery/modular_computer/preset/civilian{ @@ -25144,11 +25041,6 @@ /obj/effect/spawner/random/structure/crate_abandoned, /turf/open/floor/pod/dark, /area/station/maintenance/floor1/port/aft) -"gKQ" = ( -/obj/structure/window/plasma/spawner/directional/south, -/obj/machinery/rnd/server/master, -/turf/open/floor/circuit/telecomms, -/area/station/science/server) "gKR" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 4 @@ -25235,13 +25127,6 @@ dir = 10 }, /area/station/hallway/floor2/aft) -"gMd" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "gMe" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -25284,6 +25169,16 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology/hallway) +"gMw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/green/half{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/secondary/exit/escape_pod) "gMz" = ( /obj/machinery/duct, /turf/open/floor/iron/kitchen, @@ -25362,11 +25257,6 @@ "gNN" = ( /turf/open/floor/pod/dark, /area/station/maintenance/floor1/starboard) -"gNS" = ( -/obj/structure/flora/rock, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/fakebasalt, -/area/station/maintenance/floor3/port) "gNT" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 @@ -25383,16 +25273,15 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) -"gOh" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/textured_edge{ - dir = 8 +"gOk" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 }, -/area/station/medical/chemistry) +/obj/structure/table/reinforced/rglass, +/obj/item/paper_bin, +/obj/item/stamp/head/cmo, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "gOp" = ( /obj/effect/turf_decal/stripes, /obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, @@ -25418,6 +25307,18 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) +"gOL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 10 + }, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "gOO" = ( /obj/structure/table, /obj/machinery/newscaster/directional/east, @@ -25487,6 +25388,11 @@ /obj/structure/cable, /turf/open/floor/wood/tile, /area/station/service/library) +"gPQ" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "gPR" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Bulkhead" @@ -25500,6 +25406,20 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/port/fore) +"gPX" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/floor3/port) +"gPY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth_half, +/area/station/cargo/warehouse) "gQa" = ( /obj/machinery/light/directional/south, /obj/structure/disposalpipe/segment{ @@ -25521,6 +25441,11 @@ /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard) +"gQC" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/starboard/fore) "gQI" = ( /obj/effect/turf_decal/siding/white{ dir = 8 @@ -25548,6 +25473,11 @@ initial_gas_mix = "TEMP=2.7" }, /area/station/science/ordnance/bomb) +"gRd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "gRe" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/iron/dark/side, @@ -25593,24 +25523,16 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/brig) -"gRA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/weldingtool/mini, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) +"gRB" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, +/turf/open/openspace, +/area/station/maintenance/floor3/port) "gRH" = ( /obj/structure/extinguisher_cabinet/directional/west, /obj/machinery/camera/directional/west, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) -"gRI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) "gRJ" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 9 @@ -25651,12 +25573,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/command/gateway) -"gSu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/electrified_grille, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) "gSw" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/white/line, @@ -25664,15 +25580,32 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/side, /area/station/engineering/storage/tech) -"gSS" = ( +"gSC" = ( +/obj/machinery/field/generator, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/engineering/lobby) +"gSF" = ( +/obj/item/stack/ducts/fifty, /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) +/area/station/maintenance/floor4/starboard/aft) "gTd" = ( /obj/structure/cable, /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/hallway/floor1/aft) +"gTj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "gTk" = ( /obj/structure/stairs/south, /turf/open/floor/iron/white, @@ -25693,6 +25626,12 @@ /obj/structure/sign/departments/restroom/directional/east, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness) +"gTx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/suit/hazardvest, +/obj/structure/rack, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "gTA" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 @@ -25715,11 +25654,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor, /area/station/hallway/floor4/aft) -"gTR" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "gTW" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ dir = 5 @@ -25770,11 +25704,6 @@ "gUs" = ( /turf/open/floor/engine/air, /area/station/engineering/atmos) -"gUv" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) "gUD" = ( /obj/effect/turf_decal/siding/white/corner{ dir = 1 @@ -25795,16 +25724,11 @@ /obj/item/pestle, /turf/open/floor/iron/white, /area/station/cargo/miningdock) -"gUS" = ( +"gUU" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/mech_bay_recharge_port{ - dir = 2 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/warehouse) +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "gUX" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -25826,11 +25750,6 @@ "gVw" = ( /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) -"gVx" = ( -/obj/structure/closet/firecloset, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) "gVI" = ( /obj/effect/turf_decal/bot, /obj/machinery/firealarm/directional/west, @@ -25851,6 +25770,10 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/grass, /area/station/service/chapel) +"gWa" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, +/turf/open/openspace, +/area/station/maintenance/floor4/port/aft) "gWj" = ( /obj/structure/weightmachine/weightlifter, /obj/effect/turf_decal/bot, @@ -25988,6 +25911,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/lockers) +"gXX" = ( +/obj/effect/spawner/random/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "gXY" = ( /turf/closed/wall, /area/station/medical/exam_room) @@ -26000,14 +25928,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/closed/wall/r_wall, /area/station/maintenance/floor1/port/aft) -"gYe" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "gYh" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 6 @@ -26019,13 +25939,6 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron/dark/smooth_large, /area/station/service/bar) -"gYj" = ( -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = 32 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "gYt" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 @@ -26049,6 +25962,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/storage) +"gYB" = ( +/obj/structure/frame/computer{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/window/reinforced/tinted/spawner/directional/west, +/turf/open/floor/wood, +/area/station/commons/vacant_room/office) "gYI" = ( /obj/structure/fluff{ desc = "What, you think the water just magically soaks into the metallic flooring?"; @@ -26083,11 +26006,6 @@ /obj/structure/table, /turf/open/floor/iron/white/side, /area/station/hallway/floor2/fore) -"gZm" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "gZn" = ( /obj/structure/table/bronze, /obj/item/storage/fancy/candle_box{ @@ -26134,12 +26052,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/science/research/abandoned) -"hah" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/smooth_corner{ - dir = 4 - }, -/area/station/cargo/miningdock) "har" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -26199,16 +26111,10 @@ dir = 1 }, /area/station/hallway/floor3/aft) -"hbe" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/effect/spawner/random/engineering/canister, +"haY" = ( +/obj/effect/turf_decal/stripes, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, +/turf/open/floor/pod/light, /area/station/maintenance/floor2/starboard) "hbg" = ( /obj/machinery/vending/cigarette, @@ -26359,11 +26265,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/side, /area/station/commons/locker) -"hcR" = ( -/obj/structure/ladder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) "hcT" = ( /turf/open/openspace, /area/station/maintenance/floor3/port/aft) @@ -26378,14 +26279,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/break_room) -"hdg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) "hdh" = ( /obj/structure/sign/poster/random/directional/west, /turf/open/floor/carpet/red, @@ -26403,26 +26296,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/engine, /area/station/engineering/supermatter) -"hdw" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/folder/white, -/obj/item/taperecorder{ - pixel_x = -9; - pixel_y = 3 - }, -/obj/item/stamp/head/rd{ - pixel_x = 5 - }, -/obj/item/toy/figure/rd{ - pixel_x = 2; - pixel_y = 13 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) "hdx" = ( /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/machinery/door/airlock/hatch{ @@ -26519,11 +26392,6 @@ }, /turf/open/floor/pod/dark, /area/station/cargo/miningdock) -"heg" = ( -/obj/machinery/space_heater/improvised_chem_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "heh" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -26548,14 +26416,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor3/fore) -"heP" = ( -/obj/structure/window/spawner/directional/south, -/obj/structure/bed/medical/emergency, -/obj/structure/sign/gym/mirrored/right{ - pixel_y = 32 - }, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) "heS" = ( /obj/structure/bed/double, /obj/item/bedsheet/dorms_double, @@ -26590,12 +26450,6 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/floor3/starboard) -"hfd" = ( -/obj/structure/bed/medical/emergency, -/obj/machinery/iv_drip, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white, -/area/station/security/medical) "hfe" = ( /obj/effect/turf_decal/bot, /obj/effect/spawner/random/trash/mess, @@ -26634,6 +26488,19 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor3/starboard) +"hfA" = ( +/obj/effect/turf_decal/tile/blue/half{ + dir = 8 + }, +/obj/structure/tank_holder/emergency_oxygen, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white/smooth_edge{ + dir = 8 + }, +/area/station/medical/abandoned) "hfD" = ( /obj/machinery/atmospherics/components/binary/pump, /turf/open/floor/plating, @@ -26655,15 +26522,6 @@ dir = 1 }, /area/station/hallway/floor2/aft) -"hgB" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "hgC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26705,11 +26563,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/smooth_large, /area/station/maintenance/floor2/starboard/aft) -"hgT" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, -/turf/open/openspace, -/area/station/maintenance/floor2/port) "hhf" = ( /obj/structure/cable, /turf/open/floor/catwalk_floor, @@ -26886,6 +26739,16 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/supermatter/room) +"hjD" = ( +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/blue/half{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/textured_edge{ + dir = 4 + }, +/area/station/medical/chemistry) "hjE" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/heat_exchanging/simple, @@ -26948,6 +26811,11 @@ "hkq" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos) +"hkv" = ( +/obj/structure/chair/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/green, +/area/station/service/abandoned_gambling_den) "hkw" = ( /turf/open/floor/iron/white/side{ dir = 6 @@ -26987,6 +26855,13 @@ /obj/effect/turf_decal/tile/green/full, /turf/open/floor/iron/dark, /area/station/service/hydroponics) +"hlr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard/aft) "hlB" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27116,6 +26991,11 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat) +"hmT" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/half, +/area/station/engineering/lobby) "hmX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -27124,6 +27004,16 @@ }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"hnf" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "hng" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Bulkhead" @@ -27231,6 +27121,15 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/hallway/floor1/fore) +"hoG" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "hoU" = ( /obj/effect/spawner/random/contraband/landmine, /turf/open/floor/pod/dark, @@ -27301,6 +27200,14 @@ dir = 8 }, /area/station/hallway/secondary/exit) +"hpw" = ( +/obj/effect/turf_decal/trimline/green/warning, +/obj/effect/turf_decal/stripes, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "hpF" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, @@ -27351,6 +27258,11 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) +"hqO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor4/starboard) "hqR" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27373,6 +27285,13 @@ /obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/aft) +"hru" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/shovel, +/obj/effect/spawner/random/clothing/gloves, +/obj/structure/rack, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "hrw" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/structure/chair/plastic{ @@ -27402,6 +27321,12 @@ /obj/structure/sign/poster/contraband/syndicate_pistol, /turf/closed/wall, /area/station/maintenance/floor3/port/aft) +"hrK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille, +/turf/open/floor/plating, +/area/station/medical/abandoned) "hrO" = ( /obj/machinery/light/directional/west, /obj/machinery/computer/atmos_alert{ @@ -27409,6 +27334,12 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/office) +"hrZ" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/north, +/turf/open/floor/grass, +/area/station/hallway/secondary/exit/departure_lounge) "hse" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -27467,6 +27398,11 @@ /obj/effect/spawner/random/trash/bucket, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/aft) +"hsS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/fore) "hsT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/spawner/structure/window/hollow/plasma/middle, @@ -27488,20 +27424,15 @@ }, /turf/open/floor/iron, /area/station/maintenance/floor2/starboard/aft) -"htc" = ( -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/miningdock) "hte" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/smooth_large, /area/station/service/kitchen/abandoned) +"htf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "htg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27614,18 +27545,18 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/floor3/fore) -"huR" = ( -/obj/machinery/door/airlock/medical{ - name = "The Blue Door" +"huP" = ( +/obj/item/emergency_bed, +/obj/item/emergency_bed{ + pixel_y = 3 }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 +/obj/item/emergency_bed{ + pixel_y = 6 }, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/blue, -/area/station/maintenance/floor3/port/aft) +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/table/glass, +/turf/open/floor/iron/white/textured, +/area/station/medical/medbay/central) "huT" = ( /obj/structure/cable, /obj/machinery/status_display/ai/directional/west, @@ -27647,6 +27578,13 @@ /obj/machinery/light/dim/directional/west, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/starboard) +"hvk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible/layer2{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/engineering/atmos) "hvB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/camera/directional/east{ @@ -27860,13 +27798,6 @@ /obj/item/chair, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard) -"hyx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) "hyD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27881,14 +27812,6 @@ dir = 1 }, /area/station/engineering/atmos/hfr_room) -"hyN" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/firealarm/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/checkpoint/escape) "hyR" = ( /obj/machinery/light/directional/west, /obj/effect/turf_decal/tile/dark_red/fourcorners, @@ -27910,14 +27833,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/psychology) -"hyW" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "hyY" = ( /obj/effect/turf_decal/trimline/dark_blue/line{ dir = 4 @@ -27925,18 +27840,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/commons/storage/tools) -"hzx" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/cigarettes/cigpack_midori{ - pixel_x = -6; - pixel_y = -4 - }, -/obj/item/lighter{ - pixel_y = -6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/purple, -/area/station/maintenance/floor1/port/aft) "hzz" = ( /obj/structure/sign/poster/contraband/random/directional/south, /turf/open/floor/plating, @@ -28006,12 +27909,6 @@ /obj/effect/mapping_helpers/airlock/access/any/service/theatre, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard/aft) -"hzV" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) "hAc" = ( /obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/pod/light, @@ -28033,6 +27930,11 @@ /obj/structure/flora/bush/style_random, /turf/open/floor/grass, /area/station/security/courtroom) +"hAt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/floor4/port/fore) "hAv" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/small/directional/east, @@ -28049,6 +27951,11 @@ /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"hAL" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "hAP" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor/right/directional/south{ @@ -28079,6 +27986,13 @@ /obj/effect/turf_decal/trimline/blue/filled/line, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) +"hBh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "hBp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -28115,12 +28029,6 @@ dir = 1 }, /area/station/hallway/floor2/aft) -"hBR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/warehouse) "hBT" = ( /obj/structure/table, /obj/structure/bedsheetbin, @@ -28164,14 +28072,15 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/starboard/fore) -"hCv" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 +"hCw" = ( +/obj/effect/turf_decal/trimline/green/warning, +/obj/effect/turf_decal/stripes, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 }, -/obj/effect/turf_decal/caution/stand_clear/white, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/aft) +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "hCJ" = ( /obj/structure/railing/corner{ dir = 1 @@ -28229,6 +28138,11 @@ /obj/machinery/recharge_station, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/aisat/service) +"hDD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "hDE" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -28239,11 +28153,6 @@ }, /turf/open/floor/plating, /area/station/medical/pharmacy) -"hDK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) "hDZ" = ( /obj/structure/table/wood, /obj/machinery/computer/security/telescreen/entertainment/directional/east, @@ -28256,10 +28165,6 @@ }, /turf/open/floor/pod/dark, /area/station/service/kitchen/abandoned) -"hEo" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) "hEu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -28290,10 +28195,11 @@ /obj/effect/turf_decal/tile/blue/full, /turf/open/floor/iron/textured_large, /area/station/ai_monitored/command/nuke_storage) -"hFa" = ( +"hEX" = ( +/obj/machinery/door/firedoor, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit) +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "hFc" = ( /obj/structure/table/wood, /obj/item/chisel, @@ -28341,14 +28247,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/lockers) -"hFC" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/light/directional/south, -/obj/effect/decal/cleanable/oil/streak, -/obj/machinery/byteforge, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/drone_bay) "hFE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -28375,6 +28273,11 @@ name = "lab floor" }, /area/station/science/genetics) +"hFM" = ( +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "hFS" = ( /obj/structure/table/reinforced, /obj/item/experi_scanner, @@ -28392,6 +28295,18 @@ /obj/effect/spawner/random/food_or_drink/donkpockets, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/fore) +"hGi" = ( +/obj/effect/turf_decal/tile/green/half{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/hallway/secondary/exit/escape_pod) "hGp" = ( /obj/structure/bookcase/random/reference, /turf/open/floor/wood/tile, @@ -28400,11 +28315,6 @@ /obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/iron/dark, /area/station/security/checkpoint/second) -"hGy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) "hGA" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -28414,16 +28324,6 @@ dir = 1 }, /area/station/hallway/floor2/aft) -"hGB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"hGL" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/blue, -/area/station/maintenance/floor3/port/aft) "hGP" = ( /obj/structure/chair/comfy/black, /obj/structure/sign/departments/botany/directional/east, @@ -28484,11 +28384,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) -"hHn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/broken/directional/east, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) "hHq" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/red/half{ @@ -28505,6 +28400,10 @@ dir = 1 }, /area/station/hallway/floor3/aft) +"hHt" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, +/turf/open/openspace, +/area/station/maintenance/floor2/port) "hHB" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/scrubber, @@ -28545,12 +28444,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) -"hIp" = ( -/obj/item/skillchip/light_remover, -/obj/structure/closet/crate, +"hIn" = ( +/obj/effect/turf_decal/trimline/blue/corner{ + dir = 1 + }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "hII" = ( /obj/structure/chair/sofa/bench{ dir = 1 @@ -28631,20 +28532,10 @@ /obj/structure/chair/sofa/middle/brown, /turf/open/floor/carpet/green, /area/station/service/bar/atrium) -"hJD" = ( -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/fore) "hJF" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /turf/open/floor/iron/dark, /area/station/hallway/floor4/fore) -"hJG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "hJJ" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -28670,12 +28561,6 @@ /obj/machinery/light/dim/directional/east, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/starboard/aft) -"hJU" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "hJV" = ( /obj/structure/stairs/north, /turf/open/floor/iron, @@ -28687,6 +28572,11 @@ /obj/structure/closet/emcloset, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/port/aft) +"hKf" = ( +/obj/machinery/light_switch/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/maintenance/floor3/starboard/aft) "hKg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -28725,12 +28615,6 @@ /obj/item/reagent_containers/syringe/contraband/space_drugs, /turf/open/floor/carpet/neon/simple/pink/nodots, /area/station/maintenance/floor2/port/fore) -"hKx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) "hKK" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/structure/cable, @@ -28763,21 +28647,6 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) -"hKX" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/mining/glass{ - name = "Bitrunning Den" - }, -/turf/open/floor/pod/dark, -/area/station/cargo/drone_bay) "hKZ" = ( /obj/machinery/button/door/directional/south{ id = "dorms_1_bolts"; @@ -28918,6 +28787,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"hML" = ( +/obj/item/wrench, +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "hMU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/contraband/random/directional/west, @@ -28932,6 +28807,14 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"hMZ" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood, +/obj/item/paper_bin, +/obj/item/pen, +/obj/structure/window/reinforced/tinted/spawner/directional/east, +/turf/open/floor/carpet, +/area/station/commons/vacant_room/office) "hNe" = ( /obj/structure/table_frame, /turf/open/floor/plating, @@ -29082,6 +28965,11 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/floor4/fore) +"hPs" = ( +/obj/machinery/light/dim/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "hPA" = ( /obj/structure/ladder, /turf/open/floor/catwalk_floor, @@ -29166,6 +29054,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) +"hQR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "hQT" = ( /obj/structure/railing{ dir = 4 @@ -29178,12 +29071,6 @@ /obj/effect/spawner/random/entertainment/money_small, /turf/open/floor/wood, /area/station/hallway/floor3/fore) -"hRc" = ( -/obj/structure/table/glass, -/obj/item/stack/sheet/mineral/plasma/five, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server/upper) "hRe" = ( /obj/machinery/computer/atmos_control/nocontrol/master{ dir = 4 @@ -29211,6 +29098,10 @@ /obj/effect/turf_decal/tile/green/full, /turf/open/floor/iron, /area/station/service/hydroponics) +"hRs" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "hRA" = ( /obj/machinery/telecomms/message_server/preset, /turf/open/floor/circuit/telecomms, @@ -29230,6 +29121,12 @@ dir = 4 }, /area/station/security/prison) +"hRJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille, +/turf/open/floor/plating, +/area/station/maintenance/floor1/port/aft) "hRO" = ( /obj/structure/cable, /obj/structure/disposalpipe/junction{ @@ -29263,17 +29160,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/smooth_large, /area/station/engineering/storage/tech) -"hSh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "hSo" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, /turf/open/floor/wood, /area/station/commons/dorms/apartment2) +"hSr" = ( +/obj/machinery/quantum_server, +/obj/effect/turf_decal/bot/left, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 4 + }, +/area/station/cargo/drone_bay) "hSC" = ( /obj/structure/railing{ dir = 4 @@ -29345,11 +29244,6 @@ /obj/structure/disposalpipe/trunk/multiz/down, /turf/open/floor/plating, /area/station/maintenance/floor2/port/fore) -"hTr" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "hTs" = ( /obj/effect/landmark/start/depsec/medical, /turf/open/floor/iron/white, @@ -29363,6 +29257,14 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/floor3/aft) +"hTy" = ( +/obj/effect/turf_decal/trimline/blue/end{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/shower/directional/east, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "hTz" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -29392,12 +29294,6 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) -"hTU" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/obj/machinery/light/dim/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "hTW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29441,6 +29337,14 @@ /obj/machinery/teleport/hub, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/aisat) +"hUw" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard) "hUx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29449,6 +29353,12 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) +"hUB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/airalarm/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/starboard/aft) "hUE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -29513,13 +29423,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/disposal) -"hVk" = ( -/obj/machinery/light/dim/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "hVq" = ( /obj/machinery/washing_machine, /obj/machinery/camera/autoname/directional/west, @@ -29550,6 +29453,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard) +"hVO" = ( +/obj/effect/turf_decal/trimline/blue/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "hWh" = ( /obj/effect/turf_decal/box/corners{ dir = 8 @@ -29665,11 +29573,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"hXu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "hXI" = ( /obj/structure/chair/wood{ dir = 1 @@ -29785,6 +29688,10 @@ /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard) +"iao" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, +/turf/open/openspace, +/area/station/maintenance/floor3/port) "iaq" = ( /obj/machinery/light/cold/no_nightlight/directional/north, /obj/effect/turf_decal/trimline/purple/filled/line, @@ -29830,6 +29737,17 @@ /obj/structure/chair/sofa/corner/brown, /turf/open/floor/carpet/green, /area/station/service/bar/atrium) +"iaX" = ( +/obj/machinery/door/airlock/hatch{ + name = "Maintenance Hatch" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port) "ibi" = ( /obj/effect/turf_decal/loading_area/white{ color = "#52B4E9" @@ -30014,6 +29932,14 @@ /obj/item/hand_tele, /turf/open/floor/iron/dark, /area/station/command/teleporter) +"idL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater/improvised_chem_heater, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/station/medical/chemistry) "idM" = ( /obj/structure/table, /obj/machinery/status_display/evac/directional/north, @@ -30100,16 +30026,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/hallway/floor3/aft) -"ifn" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/drone_bay) "ifo" = ( /obj/structure/tank_holder/emergency_oxygen, /obj/effect/turf_decal/stripes/line{ @@ -30196,6 +30112,14 @@ "igE" = ( /turf/closed/wall, /area/station/science/robotics/mechbay) +"igL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/stack/cable_coil/cut, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "igQ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30253,18 +30177,6 @@ dir = 4 }, /area/station/medical/pharmacy) -"ihn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/item/skillchip/wine_taster, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"iho" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random/directional/south, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "ihp" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/structure/cable, @@ -30285,6 +30197,12 @@ /obj/structure/closet/crate/engineering, /turf/open/floor/plating, /area/station/engineering/lobby) +"ihv" = ( +/obj/effect/spawner/random/structure/crate_abandoned, +/obj/machinery/light/dim/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "ihB" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30324,6 +30242,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard/fore) +"ihY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port/aft) "iia" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -30344,6 +30267,16 @@ }, /turf/open/floor/grass, /area/station/science/genetics) +"iif" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted/spawner/directional/north, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/hallway/floor2/fore) "iim" = ( /obj/machinery/shower/directional/east, /turf/open/floor/iron/showroomfloor, @@ -30371,6 +30304,11 @@ /obj/machinery/suit_storage_unit/captain, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/captain/private) +"iiL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "iiR" = ( /obj/effect/turf_decal/trimline/yellow/warning, /obj/structure/rack, @@ -30385,15 +30323,11 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor4/port/fore) -"ijs" = ( -/obj/structure/closet/emcloset, +"ijr" = ( +/obj/structure/closet/crate/trashcart/filled, /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"ijL" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) +/area/station/maintenance/floor4/starboard/fore) "ijQ" = ( /obj/machinery/computer/station_alert, /turf/open/floor/iron/dark, @@ -30475,15 +30409,6 @@ /obj/structure/sign/poster/random/directional/east, /turf/open/floor/iron, /area/station/commons/toilet) -"ikF" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 1 - }, -/obj/item/stack/cable_coil/five, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "ikM" = ( /obj/effect/turf_decal/tile/blue/half/contrasted, /obj/machinery/light/directional/south, @@ -30561,6 +30486,11 @@ /obj/effect/mapping_helpers/airlock/access/any/service/general, /turf/open/floor/iron/dark, /area/station/maintenance/floor2/port/fore) +"ima" = ( +/obj/effect/spawner/random/engineering/tank, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "img" = ( /obj/structure/cable, /obj/structure/girder, @@ -30605,6 +30535,15 @@ }, /turf/open/floor/wood, /area/station/science/research/abandoned) +"imB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage{ + spawn_loot_count = 3; + spawn_scatter_radius = 1 + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor4/starboard) "imI" = ( /obj/effect/turf_decal/trimline/blue/warning{ dir = 1 @@ -30641,6 +30580,13 @@ /obj/structure/mop_bucket/janitorialcart, /turf/open/floor/iron, /area/station/service/janitor) +"inC" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "inE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30661,11 +30607,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/commons/locker) -"inK" = ( -/obj/structure/ladder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "inM" = ( /obj/structure/sign/poster/official/random/directional/west, /obj/machinery/camera/autoname/directional/west, @@ -30718,44 +30659,10 @@ /obj/machinery/computer/records/medical/laptop, /turf/open/floor/carpet, /area/station/security/detectives_office) -"ioD" = ( -/obj/effect/turf_decal/stripes, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "ioL" = ( /obj/effect/decal/cleanable/ash, /turf/open/floor/plating/foam, /area/station/maintenance/floor1/port/aft) -"ioM" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"ioP" = ( -/obj/machinery/door/firedoor, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/hallway/secondary/exit/escape_pod) -"ioQ" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) "ioR" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -30764,14 +30671,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/security/detectives_office) -"ioZ" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) "ipa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -30780,16 +30679,6 @@ "ipn" = ( /turf/open/floor/carpet/blue, /area/station/command/heads_quarters/hop) -"ipu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"ipv" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/security/prison) "ipA" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 4 @@ -30880,11 +30769,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hop) -"iqD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "iqR" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -30897,12 +30781,6 @@ dir = 1 }, /area/station/hallway/floor1/aft) -"irh" = ( -/obj/effect/decal/cleanable/blood/splatter, -/obj/effect/decal/cleanable/blood/tracks, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) "irk" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 1 @@ -31030,14 +30908,13 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard) -"isQ" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 1 +"isP" = ( +/obj/effect/turf_decal/stripes{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) +/area/station/maintenance/floor2/starboard/fore) "isU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -31093,11 +30970,14 @@ }, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) -"iua" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/obj/structure/filingcabinet, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) +"iuh" = ( +/obj/effect/turf_decal/trimline/brown/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset/full, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port/aft) "iuk" = ( /obj/effect/turf_decal/trimline/purple/line, /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -31125,6 +31005,17 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard/aft) +"iuv" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/trunk/multiz, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/drone_bay) "iuA" = ( /obj/structure/table, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -31163,6 +31054,14 @@ /obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, /turf/open/floor/engine, /area/station/science/cytology) +"ivd" = ( +/obj/machinery/camera/autoname/directional/north, +/obj/effect/turf_decal/trimline/purple/filled/corner{ + dir = 1 + }, +/obj/machinery/atm/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/floor2/fore) "ivf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -31243,15 +31142,6 @@ /obj/machinery/light/dim/directional/south, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/port/fore) -"ivV" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/light_switch/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) "ivY" = ( /obj/structure/chair/office/light, /obj/effect/turf_decal/tile/purple/opposingcorners, @@ -31290,6 +31180,11 @@ /obj/machinery/duct, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/starboard/fore) +"iwO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/broken/directional/south, +/turf/open/floor/plating, +/area/station/medical/abandoned) "iwP" = ( /obj/effect/turf_decal/trimline/purple/line, /obj/effect/turf_decal/trimline/purple/filled/corner{ @@ -31301,17 +31196,13 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/wood, /area/station/service/kitchen/diner) -"iwZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 +"ixa" = ( +/obj/effect/turf_decal/trimline/purple/warning{ + dir = 8 }, -/area/station/hallway/secondary/exit/escape_pod) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "ixc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -31332,6 +31223,16 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard/fore) +"ixj" = ( +/obj/machinery/power/solar_control{ + dir = 1; + id = "starboardsolar"; + name = "Starboard Quarter Solar Control" + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/starboard/aft) "ixq" = ( /obj/effect/spawner/random/contraband/landmine, /turf/open/floor/iron, @@ -31344,12 +31245,6 @@ /obj/machinery/light/cold/no_nightlight/directional/north, /turf/open/floor/iron, /area/station/hallway/floor2/aft) -"ixt" = ( -/obj/structure/table, -/obj/item/clothing/head/soft/grey, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) "ixD" = ( /turf/open/floor/plating, /area/station/maintenance/floor1/port/aft) @@ -31363,6 +31258,13 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) +"ixP" = ( +/obj/machinery/netpod, +/obj/structure/railing{ + layer = 3.1 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/cargo/drone_bay) "ixQ" = ( /obj/effect/turf_decal/tile/green/full, /obj/structure/railing{ @@ -31414,6 +31316,10 @@ /obj/structure/table/reinforced, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/floor1/fore) +"iyO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "iyP" = ( /obj/structure/rack, /obj/item/storage/bag/construction, @@ -31520,12 +31426,6 @@ /obj/machinery/holopad, /turf/open/floor/wood, /area/station/commons/dorms/apartment1) -"izI" = ( -/obj/structure/rack, -/obj/item/trash/syndi_cakes, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "izN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -31569,6 +31469,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) +"iAE" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/sign/poster/contraband/red_rum/directional/east, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/fitness) "iAH" = ( /obj/machinery/power/shuttle_engine/heater{ icon_state = "router" @@ -31609,6 +31517,13 @@ }, /turf/open/floor/plastic, /area/station/security/prison/shower) +"iBm" = ( +/obj/structure/table/wood/poker, +/obj/effect/spawner/random/entertainment/gambling, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/broken/directional/west, +/turf/open/floor/carpet/green, +/area/station/service/abandoned_gambling_den) "iBo" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/item/folder/white, @@ -31650,6 +31565,12 @@ /obj/structure/sink/directional/south, /turf/open/floor/iron, /area/station/service/hydroponics) +"iBH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/circuit/telecomms, +/area/station/tcommsat/server/upper) "iBI" = ( /obj/effect/turf_decal/siding/thinplating_new/dark/corner, /turf/open/floor/engine/hull/reinforced, @@ -31684,16 +31605,15 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/supermatter) -"iCn" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, +"iCo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_half, -/area/station/cargo/warehouse) +/obj/structure/cable, +/obj/machinery/light/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/port/aft) "iCD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/item/toy/beach_ball, @@ -31734,10 +31654,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor4/starboard/aft) -"iDh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "iDk" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -31747,14 +31663,6 @@ }, /turf/open/floor/wood/parquet, /area/station/medical/psychology) -"iDm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light_switch/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) "iDw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -31768,11 +31676,6 @@ /obj/structure/cable/multilayer/multiz, /turf/open/floor/plating, /area/station/maintenance/floor1/port/fore) -"iEa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "iEg" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -31803,11 +31706,6 @@ /obj/structure/sign/departments/engineering/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) -"iES" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "iFn" = ( /obj/machinery/computer/security/telescreen/entertainment/directional/north, /obj/effect/decal/cleanable/dirt, @@ -31910,6 +31808,19 @@ dir = 8 }, /area/station/security/office) +"iGC" = ( +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/hallway/floor3/fore) +"iGE" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "iGF" = ( /obj/effect/turf_decal/tile/green/full, /obj/machinery/growing/tray, @@ -32003,17 +31914,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/command/gateway) -"iHZ" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/table, -/obj/item/stack/cable_coil, -/obj/item/screwdriver, -/obj/effect/decal/cleanable/dirt, -/obj/item/weldingtool/largetank, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "iIb" = ( /obj/item/kirbyplants/random, /obj/machinery/airalarm/directional/west, @@ -32130,14 +32030,6 @@ }, /turf/open/floor/catwalk_floor/iron, /area/station/hallway/floor1/aft) -"iJG" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/storage) "iJM" = ( /obj/machinery/computer/monitor{ dir = 4; @@ -32152,6 +32044,22 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/carpet, /area/station/service/lawoffice) +"iKe" = ( +/obj/effect/turf_decal/trimline/blue/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) +"iKr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille, +/turf/open/floor/plating, +/area/station/maintenance/floor1/port) "iKw" = ( /obj/effect/turf_decal/stripes{ dir = 9 @@ -32215,6 +32123,11 @@ dir = 1 }, /area/station/hallway/floor2/aft) +"iLe" = ( +/obj/structure/frame/machine, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/circuit/telecomms, +/area/station/tcommsat/server/upper) "iLy" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -32269,6 +32182,10 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"iMq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/fore) "iMu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -32297,12 +32214,6 @@ /obj/structure/railing, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) -"iMM" = ( -/obj/structure/rack, -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) "iMN" = ( /turf/closed/wall, /area/station/service/library) @@ -32344,17 +32255,6 @@ name = "treated water" }, /area/station/maintenance/floor1/port/aft) -"iNs" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/flashlight/lamp{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/effect/spawner/random/entertainment/coin, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, -/turf/open/floor/carpet/black, -/area/station/hallway/secondary/service) "iNz" = ( /obj/structure/sign/directions/upload/directional/east, /obj/structure/sign/directions/medical/directional/east{ @@ -32555,21 +32455,6 @@ /obj/machinery/food_cart, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/station/service/kitchen/coldroom) -"iPr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/black, -/area/station/hallway/secondary/service) -"iPs" = ( -/obj/effect/spawner/random/structure/grille, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "iPH" = ( /obj/machinery/camera/directional/north{ c_tag = "Permabrig - Isolation A"; @@ -32605,13 +32490,6 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark, /area/station/command/bridge) -"iPV" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) "iPX" = ( /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -32631,6 +32509,13 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) +"iQd" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/catwalk_floor/iron_white, +/area/station/medical/abandoned) "iQf" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -32662,6 +32547,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/side, /area/station/commons/locker) +"iQJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "iQL" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/light/cold/directional/north, @@ -32673,6 +32563,11 @@ }, /turf/open/floor/iron/white/textured, /area/station/medical/medbay/central) +"iQR" = ( +/obj/item/toy/plush/bubbleplush, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/fakebasalt, +/area/station/maintenance/floor3/port) "iQU" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -32713,12 +32608,6 @@ }, /turf/open/floor/engine/airless, /area/station/solars/port/aft) -"iRu" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "iRD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -32729,12 +32618,23 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/lab) +"iRG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/security/execution/education) "iRK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/textured_half, /area/station/cargo/sorting) +"iRL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/port/aft) "iRN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32747,6 +32647,13 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/port) +"iRS" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port) "iSr" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -32768,18 +32675,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/wood, /area/station/service/theater) -"iSu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 10 - }, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "iSD" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -32790,16 +32685,6 @@ /obj/structure/closet/crate/cardboard, /turf/open/floor/iron, /area/station/maintenance/floor3/starboard/aft) -"iSO" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/pods/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/escape_pod) "iSS" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/yellow/opposingcorners{ @@ -32834,17 +32719,6 @@ /obj/item/bedsheet/dorms, /turf/open/floor/carpet/black, /area/station/hallway/secondary/service) -"iTu" = ( -/obj/machinery/shieldgen, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) "iTy" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners{ dir = 8 @@ -32877,18 +32751,11 @@ }, /turf/open/floor/wood, /area/station/service/theater) -"iUe" = ( -/obj/machinery/computer/pandemic, -/obj/structure/sign/poster/official/periodic_table/directional/north, -/obj/machinery/camera/autoname/directional/north, +"iUv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/medical/virology) -"iUE" = ( -/obj/structure/altar_of_gods, -/obj/effect/turf_decal/siding/white, -/obj/item/storage/book/bible, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) +/area/station/maintenance/floor1/port/aft) "iUP" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -32941,14 +32808,6 @@ /obj/effect/turf_decal/tile/red/half, /turf/open/floor/iron/dark/side, /area/station/security/brig) -"iVH" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/obj/machinery/atm/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) "iVL" = ( /obj/structure/disposalpipe/segment, /obj/machinery/navbeacon{ @@ -33099,11 +32958,6 @@ dir = 1 }, /area/station/science/robotics/lab) -"iXi" = ( -/obj/structure/grille/broken, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) "iXk" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33202,17 +33056,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/floor3/port/aft) -"iYH" = ( -/obj/structure/sign/poster/official/moth_hardhat/directional/east, -/obj/structure/rack, -/obj/effect/spawner/random/engineering/toolbox, -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/escape_pod) "iYK" = ( /obj/structure/chair/stool/bar/directional/south, /turf/open/floor/eighties, @@ -33242,26 +33085,13 @@ dir = 8 }, /area/station/security/prison) -"iZA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/remains/human{ - name = "dehydrated skeleton" - }, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/sign/poster/contraband/random/directional/north, -/obj/item/weaponcrafting/receiver, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"iZG" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_half{ +"iZu" = ( +/obj/effect/turf_decal/trimline/blue/line{ dir = 1 }, -/area/station/hallway/secondary/exit/escape_pod) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "iZQ" = ( /obj/effect/decal/cleanable/garbage, /obj/effect/turf_decal/tile/green/half/contrasted{ @@ -33354,6 +33184,12 @@ /obj/effect/spawner/random/structure/furniture_parts, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard) +"jaL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "jbc" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/pod/light, @@ -33570,6 +33406,12 @@ }, /turf/open/floor/catwalk_floor/iron, /area/station/engineering/atmos/pumproom) +"jdP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/decal/cleanable/wrapping, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "jdR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/sink/directional/east, @@ -33590,6 +33432,16 @@ "jdW" = ( /turf/closed/wall, /area/station/engineering/atmos) +"jeg" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/white{ + pixel_y = -5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard/aft) "jek" = ( /obj/structure/chair/stool/directional/east, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -33676,6 +33528,18 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard) +"jfA" = ( +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/security{ + name = "The Red Door" + }, +/turf/open/floor/carpet/red, +/area/station/maintenance/floor3/port/aft) "jfH" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/structure/flora/bush/lavendergrass/style_random, @@ -33688,6 +33552,10 @@ /obj/effect/turf_decal/trimline/green/line, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/fore) +"jfR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/fore) "jgm" = ( /obj/structure/bed, /obj/item/bedsheet/cult, @@ -33763,6 +33631,14 @@ /obj/item/circuitboard/machine/telecomms/receiver, /turf/open/floor/pod/light, /area/station/maintenance/floor3/starboard/fore) +"jhn" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/maintenance/floor2/starboard/aft) "jhw" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -33807,13 +33683,6 @@ dir = 1 }, /area/station/hallway/floor4/fore) -"jid" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) "jiu" = ( /obj/machinery/dna_scannernew, /obj/effect/turf_decal/siding/purple{ @@ -33973,16 +33842,11 @@ }, /turf/open/floor/mineral/silver, /area/station/service/chapel) -"jkv" = ( -/obj/effect/turf_decal/trimline/blue/corner, -/obj/structure/cable, -/obj/machinery/light/small/blacklight/directional/west, +"jkt" = ( +/obj/effect/landmark/start/hangover, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) +/turf/open/floor/wood/tile, +/area/station/commons/fitness/recreation) "jkH" = ( /obj/machinery/holopad, /turf/open/floor/iron/white, @@ -34017,19 +33881,14 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/pod/light, /area/station/maintenance/floor3/port/aft) -"jlJ" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +"jlK" = ( +/obj/machinery/atmospherics/components/binary/pump/layer2{ + dir = 1 }, +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) +/turf/open/floor/iron, +/area/station/engineering/atmos) "jlS" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green, @@ -34175,14 +34034,6 @@ /obj/structure/chair, /turf/open/floor/iron/kitchen/herringbone, /area/station/service/kitchen/diner) -"jnv" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "jnD" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 1 @@ -34227,6 +34078,14 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/wood/parquet, /area/station/service/lawoffice) +"joq" = ( +/obj/structure/table, +/obj/item/storage/pill_bottle/lsd{ + pixel_x = 5 + }, +/obj/structure/sign/poster/contraband/red_rum/directional/east, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "joy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -34300,16 +34159,6 @@ }, /turf/open/floor/iron/white/small, /area/station/medical/chemistry) -"jps" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "jpy" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, @@ -34384,11 +34233,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/atmos/project) -"jqh" = ( -/obj/machinery/plumbing/bottler, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "jqy" = ( /obj/structure/lattice/catwalk, /turf/open/openspace, @@ -34419,11 +34263,10 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/cmo) -"jqJ" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/turf/open/openspace, -/area/station/maintenance/floor2/port) +"jqR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/fakebasalt, +/area/station/maintenance/floor3/port) "jrh" = ( /obj/effect/turf_decal/siding/purple/corner{ dir = 4 @@ -34548,6 +34391,19 @@ /obj/effect/mapping_helpers/airlock/access/any/service/bar, /turf/open/floor/wood, /area/station/service/bar) +"jsj" = ( +/obj/item/storage/box/lights/bulbs, +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) +"jsy" = ( +/obj/machinery/modular_computer/preset/civilian{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/maintenance/floor2/starboard) "jsF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -34588,16 +34444,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor3/aft) -"jsW" = ( -/obj/structure/frame/computer{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) "jsY" = ( /obj/structure/grille, /turf/open/floor/plating, @@ -34658,6 +34504,13 @@ /obj/machinery/light/cold/no_nightlight/directional/south, /turf/open/floor/grass, /area/station/hallway/secondary/service) +"jtS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/stack/cable_coil/cut, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/medical/abandoned) "juf" = ( /obj/machinery/door/poddoor/shutters/radiation/preopen{ id = "radshutsouth" @@ -34667,6 +34520,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, /turf/open/floor/plating, /area/station/engineering/supermatter) +"juo" = ( +/obj/effect/turf_decal/stripes, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/aft) "juq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -34679,6 +34537,18 @@ dir = 10 }, /area/station/hallway/floor2/aft) +"juu" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) +"juw" = ( +/obj/machinery/reagentgrinder, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "juE" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 1 @@ -34762,11 +34632,6 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/floor2/fore) -"jvz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/security/range) "jvM" = ( /turf/closed/wall, /area/station/command/heads_quarters/captain/private) @@ -34839,6 +34704,20 @@ dir = 1 }, /area/station/hallway/floor3/fore) +"jwr" = ( +/obj/machinery/button/door/directional/south{ + id = "survhang"; + name = "Hangar Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 10 + }, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "jww" = ( /obj/structure/industrial_lift/public, /turf/open/floor/plating/elevatorshaft, @@ -34883,17 +34762,6 @@ }, /turf/open/floor/iron/white/small, /area/station/commons/fitness/recreation) -"jwW" = ( -/obj/machinery/firealarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "jwY" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -34997,17 +34865,6 @@ }, /turf/open/floor/engine, /area/station/hallway/secondary/entry) -"jxK" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/firealarm/directional/north, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) "jxM" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -35135,6 +34992,13 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor2/fore) +"jzu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/item/bonesetter, +/obj/effect/spawner/random/medical/surgery_tool, +/turf/open/floor/iron/white, +/area/station/maintenance/floor3/starboard/aft) "jzv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -35144,13 +35008,13 @@ }, /turf/open/floor/bamboo/tatami/black, /area/station/commons/storage/art) -"jzB" = ( -/obj/effect/decal/cleanable/oil/streak, +"jzz" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron, +/area/station/hallway/secondary/exit/escape_pod) "jzC" = ( /obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2{ dir = 8 @@ -35180,11 +35044,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/station/security/detectives_office) -"jzH" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/turf/open/openspace, -/area/station/maintenance/floor3/port) "jzL" = ( /obj/structure/railing{ dir = 4 @@ -35305,12 +35164,6 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/pod/light, /area/station/maintenance/floor4/starboard/fore) -"jBf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/item/bot_assembly/floorbot, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) "jBi" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4 @@ -35333,6 +35186,37 @@ /obj/effect/spawner/random/trash/grime, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/fore) +"jBy" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/aft) +"jBH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/item/pen/survival, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "jBI" = ( /obj/structure/chair/sofa/bench/left{ dir = 8 @@ -35424,13 +35308,23 @@ /obj/machinery/duct, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"jDD" = ( +"jDA" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/item/stack/sheet/iron/five, /obj/effect/decal/cleanable/dirt, -/obj/item/shovel, -/obj/effect/spawner/random/clothing/gloves, -/obj/structure/rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) +/turf/open/floor/plating, +/area/station/maintenance/floor2/starboard/fore) +"jDI" = ( +/obj/machinery/door/airlock/hatch{ + name = "Fighter Airlock" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium/red, +/area/station/maintenance/floor4/starboard/aft) "jDJ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -35454,11 +35348,6 @@ }, /turf/open/floor/iron/white/textured_large, /area/station/cargo/miningoffice) -"jEe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) "jEf" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -35565,19 +35454,6 @@ }, /turf/open/floor/iron/white, /area/station/science/lobby) -"jFB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil/streak, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"jFE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) "jFH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -35639,16 +35515,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor4/starboard/fore) -"jFQ" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) "jFT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/grille, @@ -35678,11 +35544,6 @@ /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/iron/dark/side, /area/station/engineering/storage/tech) -"jGj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) "jGn" = ( /obj/structure/table/wood/poker, /obj/effect/turf_decal/trimline/blue/filled/line, @@ -35692,6 +35553,11 @@ "jGF" = ( /turf/closed/wall, /area/station/service/kitchen/kitchen_backroom) +"jGG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "jGI" = ( /obj/effect/turf_decal/tile/green/half{ dir = 8 @@ -35854,6 +35720,12 @@ dir = 8 }, /area/station/command/teleporter) +"jIL" = ( +/obj/machinery/computer/slot_machine, +/obj/machinery/firealarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/green, +/area/station/service/abandoned_gambling_den) "jIP" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ @@ -35901,6 +35773,12 @@ dir = 1 }, /area/station/security/checkpoint) +"jJd" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/food_or_drink/cups, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "jJf" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/white, @@ -35933,16 +35811,6 @@ /obj/structure/training_machine, /turf/open/floor/iron, /area/station/security/range) -"jJI" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 - }, -/obj/item/toy/plush/pkplush{ - name = "Hug Emoji" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) "jJP" = ( /obj/effect/decal/cleanable/glass, /turf/open/floor/engine, @@ -35965,6 +35833,10 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/maintenance/floor1/port/aft) +"jKd" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "jKf" = ( /obj/machinery/vending/wallmed/directional/west, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -35974,19 +35846,13 @@ /obj/machinery/rnd/production/techfab/department/medical, /turf/open/floor/iron/white, /area/station/medical/storage) -"jKh" = ( -/obj/structure/closet/cabinet, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) -"jKi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, +"jKr" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) +/obj/effect/decal/cleanable/oil, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/fore) "jKt" = ( /turf/closed/wall/r_wall, /area/station/tcommsat/computer) @@ -35994,6 +35860,10 @@ /obj/machinery/holopad, /turf/open/floor/carpet/blue, /area/station/command/meeting_room) +"jKG" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, +/turf/open/openspace, +/area/station/maintenance/floor3/port) "jKK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36071,15 +35941,6 @@ /obj/structure/grille, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) -"jMa" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/structure/window/reinforced/plasma/spawner/directional/west, -/obj/machinery/power/shuttle_engine/heater{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) "jMc" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -36087,16 +35948,6 @@ /obj/machinery/door/window/right/directional/north, /turf/open/misc/sandy_dirt, /area/station/hallway/secondary/entry) -"jMd" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) "jMn" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -36106,18 +35957,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"jMu" = ( -/obj/machinery/door/airlock{ - name = "Escape Pod C" - }, -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/escape_pod) "jME" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/machinery/shower/directional/east, @@ -36169,23 +36008,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"jNp" = ( -/obj/machinery/disposal/bin{ - name = "Book Returns" - }, -/obj/structure/disposalpipe/trunk{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron, -/area/station/service/library) "jNr" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/pod/light, @@ -36284,6 +36106,13 @@ initial_gas_mix = "TEMP=2.7" }, /area/station/science/ordnance/bomb) +"jOx" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard/aft) "jOA" = ( /obj/structure/closet/l3closet/security, /obj/effect/turf_decal/tile/red/fourcorners, @@ -36326,6 +36155,11 @@ /obj/effect/turf_decal/tile/purple/opposingcorners, /turf/open/floor/iron/white, /area/station/science/explab) +"jOP" = ( +/obj/structure/window/plasma/spawner/directional/south, +/obj/machinery/rnd/server, +/turf/open/floor/circuit/telecomms, +/area/station/science/server) "jOS" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/skill_station, @@ -36340,14 +36174,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/construction, /turf/open/floor/pod/light, /area/station/maintenance/solars/starboard/aft) -"jOX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) "jPd" = ( /obj/effect/turf_decal/bot, /obj/structure/rack, @@ -36371,30 +36197,12 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/wood, /area/station/commons/vacant_room/office) -"jPp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/gibs/torso, -/obj/effect/decal/cleanable/blood, -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3; - spawn_scatter_radius = 1 - }, -/obj/structure/spider/stickyweb, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) "jPr" = ( /obj/structure/closet/bombcloset, /obj/machinery/light/cold/no_nightlight/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/lobby) -"jPs" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/atm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) "jPv" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/brown{ @@ -36445,6 +36253,14 @@ /obj/machinery/vending/boozeomat, /turf/open/floor/carpet/royalblack, /area/station/service/kitchen/diner) +"jPT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/turf/open/floor/wood, +/area/station/maintenance/floor3/starboard/aft) "jQb" = ( /obj/machinery/door/airlock/medical{ name = "Ph-rm--y" @@ -36455,10 +36271,6 @@ dir = 8 }, /area/station/medical/chemistry) -"jQf" = ( -/obj/structure/sign/poster/contraband/eat/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) "jQj" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /obj/effect/turf_decal/trimline/blue/arrow_cw{ @@ -36467,11 +36279,29 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"jQn" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/gibs/bubblegum, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/item/clothing/suit/toggle/labcoat, +/turf/open/floor/iron, +/area/station/maintenance/floor3/starboard/aft) "jQw" = ( /turf/open/floor/iron/dark/textured_corner{ dir = 8 }, /area/station/maintenance/floor1/starboard/aft) +"jQx" = ( +/obj/structure/closet/firecloset/full, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "jQG" = ( /obj/structure/railing, /obj/effect/decal/cleanable/dirt, @@ -36621,6 +36451,11 @@ /obj/machinery/duct, /turf/open/floor/wood, /area/station/service/kitchen/diner) +"jRU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/turf/open/floor/mineral/plastitanium/red, +/area/station/maintenance/floor4/starboard/aft) "jRV" = ( /obj/item/radio/intercom/directional/west, /obj/machinery/vending/wardrobe/sec_wardrobe, @@ -36830,11 +36665,6 @@ "jVK" = ( /turf/closed/wall/r_wall, /area/station/security/prison) -"jVM" = ( -/obj/machinery/space_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "jVN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -36913,6 +36743,28 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"jWw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/starboard/aft) +"jWH" = ( +/obj/machinery/firealarm/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) +"jWI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "jWJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -36945,6 +36797,11 @@ "jXc" = ( /turf/open/floor/iron/white/smooth_edge, /area/station/science/robotics/lab) +"jXd" = ( +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "jXj" = ( /obj/structure/extinguisher_cabinet/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36973,6 +36830,11 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/maintenance/floor2/starboard/aft) +"jXS" = ( +/obj/item/stack/sheet/iron/five, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "jXX" = ( /obj/machinery/camera/directional/north{ c_tag = "Holodeck - Fore"; @@ -37019,6 +36881,23 @@ }, /turf/open/floor/carpet/royalblack, /area/station/service/kitchen/diner) +"jYB" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ + dir = 4 + }, +/obj/effect/landmark/navigate_destination/incinerator, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) +"jYE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/broken/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/cargo/warehouse) "jYH" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -37396,6 +37275,11 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/port/aft) +"kdR" = ( +/obj/effect/spawner/random/structure/crate, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/medical/abandoned) "keg" = ( /obj/machinery/light_switch/directional/south, /obj/structure/cable, @@ -37406,17 +37290,6 @@ }, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) -"keh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/mass_driver/ordnance{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) "kem" = ( /obj/structure/chair/wood, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -37472,6 +37345,14 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) +"keQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti{ + pixel_x = -32 + }, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/starboard/aft) "keR" = ( /obj/structure/table/reinforced, /obj/item/folder{ @@ -37577,6 +37458,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/cargo/storage) +"kgv" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port) "kgT" = ( /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard) @@ -37679,13 +37565,6 @@ dir = 4 }, /area/station/command/teleporter) -"khP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) "khQ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37722,13 +37601,6 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron/white, /area/station/science/circuits) -"kil" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/light/colour_cycle/dancefloor_a, -/area/station/medical/abandoned) "kis" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -37755,13 +37627,6 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) -"kiS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "kjb" = ( /obj/effect/decal/cleanable/blood/splatter, /obj/machinery/light/dim/directional/east, @@ -37815,6 +37680,29 @@ /obj/effect/decal/cleanable/oil/streak, /turf/open/floor/iron/textured_large, /area/station/engineering/lobby) +"kjL" = ( +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/structure/window/reinforced/plasma/spawner/directional/north, +/obj/structure/window/reinforced/plasma/spawner/directional/west, +/obj/machinery/power/shuttle_engine/heater{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/floor1/starboard/aft) +"kjM" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, +/turf/open/openspace, +/area/station/maintenance/floor4/port/aft) +"kjP" = ( +/obj/structure/sign/poster/official/moth_hardhat/directional/east, +/obj/structure/rack, +/obj/effect/turf_decal/trimline/purple/warning{ + dir = 4 + }, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard/fore) "kkg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -37841,13 +37729,6 @@ /obj/effect/spawner/random/entertainment/cigarette_pack, /turf/open/floor/wood, /area/station/hallway/floor3/fore) -"kkt" = ( -/obj/structure/bed/dogbed{ - name = "pet bed" - }, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/rd) "kkw" = ( /obj/structure/cable, /obj/machinery/power/floodlight{ @@ -37970,6 +37851,14 @@ /obj/structure/cable, /turf/open/floor/wood/tile, /area/station/service/library) +"kmx" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/window/spawner/directional/west, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/turf/open/floor/grass, +/area/station/hallway/secondary/exit/departure_lounge) "kmG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37991,6 +37880,19 @@ "kmR" = ( /turf/closed/wall, /area/station/science/lab) +"kmS" = ( +/obj/effect/turf_decal/caution/stand_clear/white{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "kmT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, @@ -37999,16 +37901,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/storage) -"knh" = ( -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = -32 - }, -/obj/structure/disposalpipe/broken{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "knk" = ( /obj/structure/railing{ dir = 8 @@ -38024,6 +37916,10 @@ }, /turf/open/floor/wood/tile, /area/station/service/library) +"knn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "knA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -38257,6 +38153,11 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/port) +"kqh" = ( +/obj/structure/sign/poster/official/do_not_question/directional/south, +/obj/effect/turf_decal/tile/dark_red/fourcorners, +/turf/open/floor/iron, +/area/station/security/brig) "kqk" = ( /obj/structure/chair/pew/right{ dir = 4 @@ -38474,14 +38375,6 @@ /obj/structure/cable, /turf/open/floor/iron/checker, /area/station/cargo/miningdock) -"ksG" = ( -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 8 - }, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/turf/open/floor/stone, -/area/station/maintenance/floor1/port) "ksN" = ( /obj/effect/turf_decal/bot_white, /obj/effect/turf_decal/siding/thinplating_new/dark{ @@ -38518,6 +38411,11 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark/textured_large, /area/station/engineering/atmos/office) +"kto" = ( +/obj/effect/spawner/random/structure/crate, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/fore) "ktu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -38525,11 +38423,6 @@ /obj/effect/turf_decal/box, /turf/open/floor/wood, /area/station/medical/psychology) -"ktz" = ( -/obj/item/radio/intercom/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) "ktC" = ( /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer2{ dir = 1 @@ -38584,15 +38477,6 @@ /obj/structure/cable, /turf/open/floor/carpet, /area/station/commons/vacant_room/office) -"kuA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced/plasmarglass, -/obj/item/reagent_containers/pill/cyanide{ - desc = "What could it be?"; - name = "red pill" - }, -/turf/open/floor/carpet/red, -/area/station/maintenance/floor3/port/aft) "kuB" = ( /obj/effect/mapping_helpers/mail_sorting/science/robotics, /obj/structure/disposalpipe/sorting/mail/flip{ @@ -38723,6 +38607,15 @@ /obj/structure/stairs/north, /turf/open/floor/iron/smooth, /area/station/hallway/floor3/fore) +"kwk" = ( +/obj/machinery/camera/motion/directional/east{ + c_tag = "MiniSat Foyer"; + network = list("minisat") + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/aisat) "kwl" = ( /turf/open/floor/iron/dark/side{ dir = 9 @@ -38761,6 +38654,12 @@ /obj/machinery/power/smes/engineering, /turf/open/floor/iron, /area/station/engineering/engine_smes) +"kwT" = ( +/obj/structure/closet/cabinet, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/large, +/area/station/maintenance/floor4/starboard/aft) "kxf" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -38778,13 +38677,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"kxs" = ( -/obj/structure/table/wood/poker, -/obj/effect/spawner/random/entertainment/gambling, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/west, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) "kxu" = ( /obj/item/wheelchair{ pixel_y = -3 @@ -38883,6 +38775,14 @@ /obj/machinery/shieldgen, /turf/open/floor/iron/corner, /area/station/cargo/miningdock) +"kyp" = ( +/obj/item/clothing/suit/toggle/owlwings/griffinwings, +/obj/item/clothing/under/costume/griffin, +/obj/item/clothing/shoes/griffin, +/obj/structure/sign/poster/contraband/the_griffin/directional/north, +/obj/structure/closet/cabinet, +/turf/open/floor/wood/parquet, +/area/station/maintenance/floor2/port/aft) "kyq" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -38926,6 +38826,15 @@ "kyR" = ( /turf/closed/wall, /area/station/hallway/floor1/fore) +"kyT" = ( +/obj/machinery/computer{ + desc = "Might have worked twenty years ago."; + dir = 8; + name = "Bluescreened Weapons System" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium/red, +/area/station/maintenance/floor4/starboard/aft) "kza" = ( /obj/structure/railing/corner, /obj/machinery/disposal/bin, @@ -38992,6 +38901,13 @@ dir = 4 }, /area/station/hallway/floor3/aft) +"kzR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "kzU" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark/side{ @@ -39048,6 +38964,12 @@ }, /turf/open/floor/iron/smooth, /area/station/cargo/sorting) +"kAD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/floodlight_frame, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard/aft) "kAE" = ( /obj/effect/turf_decal/siding/wideplating_new{ dir = 4 @@ -39103,6 +39025,11 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/detectives_office/private_investigators_office) +"kBf" = ( +/obj/structure/window/plasma/spawner/directional/south, +/obj/machinery/rnd/server/master, +/turf/open/floor/circuit/telecomms, +/area/station/science/server) "kBi" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/machinery/computer/atmos_alert{ @@ -39153,16 +39080,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/floor4/starboard/aft) -"kBI" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/station_engineer, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/lobby) "kBL" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/eighties, @@ -39185,11 +39102,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"kCi" = ( -/obj/effect/spawner/random/trash/bin, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "kCm" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/machinery/holopad, @@ -39276,10 +39188,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"kEu" = ( -/obj/structure/sign/poster/contraband/atmosia_independence/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) "kEv" = ( /obj/effect/turf_decal/arrows, /turf/open/floor/wood/tile, @@ -39325,6 +39233,14 @@ dir = 4 }, /area/station/hallway/floor2/aft) +"kEV" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/spawner/random/maintenance/two, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "kEY" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Bulkhead" @@ -39340,10 +39256,6 @@ /obj/structure/chair/stool/bar/directional/north, /turf/open/floor/iron/kitchen, /area/station/service/kitchen/abandoned) -"kFd" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/turf/open/openspace, -/area/station/maintenance/floor2/port) "kFk" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{ dir = 4 @@ -39377,13 +39289,6 @@ "kFy" = ( /turf/open/openspace, /area/station/science/ordnance/testlab) -"kFF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "kFJ" = ( /obj/machinery/photocopier, /obj/machinery/camera/autoname/directional/north, @@ -39409,10 +39314,6 @@ }, /turf/open/floor/iron, /area/station/science/robotics/lab) -"kFY" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, -/turf/open/openspace, -/area/station/maintenance/floor3/port) "kGg" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/atmospherics/components/unary/thermomachine/freezer, @@ -39425,12 +39326,14 @@ /obj/machinery/recharge_station, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"kGr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"kGk" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/entertainment/directional/north, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/medical/abandoned) +/turf/open/floor/iron/checker, +/area/station/cargo/miningdock) "kGv" = ( /obj/structure/closet/crate/trashcart{ name = "book bin" @@ -39440,11 +39343,6 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark/textured_large, /area/station/service/library/printer) -"kGy" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "kGz" = ( /obj/effect/decal/cleanable/glitter, /obj/effect/turf_decal/siding/blue{ @@ -39476,6 +39374,13 @@ /obj/structure/tank_holder/extinguisher, /turf/open/floor/iron, /area/station/maintenance/floor1/starboard/fore) +"kGO" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/light/colour_cycle/dancefloor_a, +/area/station/medical/abandoned) "kGZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -39513,14 +39418,6 @@ /obj/structure/closet/firecloset/full, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) -"kHx" = ( -/obj/structure/closet/firecloset/full, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) "kHG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39599,42 +39496,40 @@ dir = 4 }, /area/station/hallway/floor3/fore) +"kIa" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "kIe" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible/layer2, /turf/open/floor/iron, /area/station/engineering/atmos) -"kIn" = ( -/obj/effect/turf_decal/trimline/brown/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/brown/line, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +"kIt" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/trimline/red/line{ + dir = 6 }, -/turf/open/floor/iron/dark/smooth_half, -/area/station/cargo/drone_bay) -"kIu" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "kIw" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/trimline/dark_blue/end, /turf/open/floor/iron/dark, /area/station/commons/storage/tools) +"kIC" = ( +/obj/item/skillchip/light_remover, +/obj/structure/closet/crate, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "kIG" = ( /obj/machinery/button/door/directional/north{ id = "Secure Storage"; @@ -39811,11 +39706,6 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/tile, /area/station/service/library) -"kKJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/space_heater, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) "kKK" = ( /obj/effect/turf_decal/tile/brown{ dir = 4 @@ -39914,13 +39804,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"kLF" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/aft) "kLH" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -39951,11 +39834,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/floor3/starboard/aft) -"kMb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) "kMh" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 10 @@ -39989,13 +39867,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/station/hallway/floor2/fore) -"kNd" = ( -/obj/machinery/vending/wallmed/directional/south, -/obj/structure/bed/medical/emergency, -/obj/machinery/iv_drip, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/white, -/area/station/security/medical) "kNh" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/fluff/paper/stack{ @@ -40082,6 +39953,11 @@ /obj/effect/turf_decal/tile/green/full, /turf/open/floor/iron, /area/station/service/hydroponics) +"kOK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/moisture_trap, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/aft) "kON" = ( /obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -40106,15 +39982,13 @@ dir = 4 }, /area/station/commons/storage/primary) -"kPm" = ( -/obj/structure/sign/poster/contraband/atmosia_independence/directional/west, -/obj/machinery/light/small/directional/west, -/obj/machinery/light_switch/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +"kPl" = ( +/obj/effect/turf_decal/stripes{ + dir = 1 }, -/turf/open/floor/wood/parquet, -/area/station/maintenance/floor2/port/aft) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/aft) "kPq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40139,11 +40013,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/side, /area/station/security/prison) +"kPH" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "kPN" = ( /turf/open/floor/iron/dark/textured_edge{ dir = 8 }, /area/station/maintenance/floor1/starboard/aft) +"kPP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "kPW" = ( /obj/structure/grille, /turf/open/floor/plating, @@ -40202,6 +40087,12 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor2/fore) +"kQx" = ( +/obj/item/stack/sheet/iron, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/medical/abandoned) "kQF" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 5 @@ -40210,6 +40101,12 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"kQJ" = ( +/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airalarm/engine_access, +/obj/effect/baseturf_helper/reinforced_plating/ceiling, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "kQN" = ( /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40349,14 +40246,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/starboard) -"kSn" = ( -/obj/machinery/iv_drip, -/obj/structure/mirror/directional/south, -/obj/structure/sign/poster/official/cleanliness/directional/east, -/obj/machinery/camera/autoname/directional/east, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/dark, -/area/station/medical/surgery/fore) "kSp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40462,6 +40351,13 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron/dark/side, /area/station/hallway/floor4/fore) +"kTD" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ + dir = 10 + }, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/turf/open/floor/engine/airless, +/area/station/science/ordnance/freezerchamber) "kTI" = ( /obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 @@ -40554,19 +40450,6 @@ "kVp" = ( /turf/open/floor/engine/hull, /area/space/nearstation) -"kVs" = ( -/obj/machinery/computer/security/telescreen/minisat{ - dir = 8; - pixel_x = 28 - }, -/obj/machinery/camera/directional/south{ - c_tag = "MiniSat Exterior Access"; - network = list("minisat") - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) "kVu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -40605,17 +40488,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/floor2/port/aft) -"kVY" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/table/reinforced, -/obj/item/stack/sheet/iron/twenty, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "kVZ" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 @@ -40628,11 +40500,6 @@ /obj/effect/mapping_helpers/airlock/access/all/command/eva, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) -"kWa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) "kWd" = ( /obj/effect/decal/cleanable/vomit/old, /obj/machinery/airalarm/directional/east, @@ -40685,6 +40552,16 @@ }, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) +"kWy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/engineering/lobby) "kWz" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/light/cold/directional/west, @@ -40700,11 +40577,6 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/dark, /area/station/command/bridge) -"kWM" = ( -/obj/item/stack/tile/wood, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) "kWN" = ( /obj/structure/chair/stool/bar/directional/south, /obj/effect/landmark/start/scientist, @@ -40750,11 +40622,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/bamboo/tatami/black, /area/station/commons/storage/art) -"kXK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, -/turf/open/floor/mineral/plastitanium/red, -/area/station/maintenance/floor4/starboard/aft) "kXP" = ( /obj/machinery/vending/wardrobe/chef_wardrobe, /turf/open/floor/wood/large, @@ -40770,6 +40637,16 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/lower) +"kYn" = ( +/obj/effect/turf_decal/tile/red/diagonal_edge, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/security/checkpoint/escape) "kYt" = ( /obj/structure/chair/comfy/carp, /turf/open/floor/carpet/neon/simple/pink/nodots, @@ -40807,10 +40684,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/port) -"kYD" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) "kYH" = ( /obj/structure/disposalpipe/segment, /obj/structure/sign/poster/random/directional/east, @@ -40852,13 +40725,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/service/bar/atrium) -"kZG" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet, -/area/station/service/abandoned_gambling_den) "kZS" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -40890,25 +40756,21 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/service) -"lad" = ( -/obj/effect/decal/cleanable/dirt, +"lae" = ( +/obj/effect/turf_decal/trimline/green/arrow_cw{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/miningdock) "lag" = ( /obj/structure/closet/crate/freezer/blood, /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/light/cold/directional/west, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) -"lak" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) "lao" = ( /obj/structure/chair/sofa/corp/right, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40951,6 +40813,11 @@ /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron/dark/side, /area/station/hallway/floor3/fore) +"laN" = ( +/obj/effect/spawner/random/engineering/atmospherics_portable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port/aft) "laO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -41018,19 +40885,19 @@ }, /turf/open/floor/wood/large, /area/station/service/library/lounge) -"lbr" = ( +"lbz" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/directional/north, +/turf/open/floor/plating, +/area/station/medical/abandoned) +"lbD" = ( +/obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"lbt" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, -/turf/open/openspace, -/area/station/maintenance/floor2/port) +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "lbK" = ( /obj/structure/chair/stool/bar/directional/south, /obj/effect/decal/cleanable/confetti, @@ -41072,19 +40939,6 @@ "lcv" = ( /turf/closed/wall/r_wall, /area/station/maintenance/floor2/port) -"lcF" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock{ - name = "Escape Pod C" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/escape_pod) "lcN" = ( /obj/effect/turf_decal/siding/yellow{ dir = 6 @@ -41125,11 +40979,6 @@ dir = 10 }, /area/station/engineering/storage/tech) -"ldq" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "ldw" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -41144,6 +40993,10 @@ /obj/machinery/holopad, /turf/open/floor/iron/white/textured, /area/station/medical/medbay/central) +"ldB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "ldD" = ( /obj/machinery/door/airlock/engineering{ name = "Power Generation Experimentation" @@ -41165,6 +41018,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/floor2/aft) +"ldJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/ammo_casing/c38{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "ldO" = ( /obj/structure/chair/stool/bar/directional/east, /obj/structure/disposalpipe/segment{ @@ -41172,23 +41033,27 @@ }, /turf/open/floor/wood, /area/station/service/bar/atrium) +"ldP" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "ldQ" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/radshelter/sci) -"len" = ( -/obj/machinery/status_display/evac/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/docking/directional/south, -/obj/machinery/computer/shuttle/mining/common{ +"lek" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/secondary/exit) +/obj/machinery/atm/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/medbay/central) "leo" = ( /obj/structure/closet/emcloset/anchored, /turf/open/floor/plating, @@ -41203,33 +41068,11 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /turf/open/floor/plating, /area/station/engineering/atmos) -"lew" = ( -/obj/machinery/light/dim/directional/south, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/sign/poster/contraband/random/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "lez" = ( /obj/effect/turf_decal/bot, /obj/machinery/research/anomaly_refinery, /turf/open/floor/iron/dark/textured, /area/station/science/ordnance/storage) -"leE" = ( -/obj/structure/table/wood, -/obj/item/folder/yellow{ - pixel_x = -6 - }, -/obj/item/stamp/head/qm{ - pixel_x = -6 - }, -/obj/structure/cable, -/obj/item/flashlight/lamp/green{ - pixel_x = 6; - pixel_y = 15 - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) "leF" = ( /obj/effect/turf_decal/siding/yellow{ dir = 10 @@ -41320,6 +41163,11 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/starboard/fore) +"lfH" = ( +/obj/item/stack/tile/iron/white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/medical/abandoned) "lfL" = ( /obj/effect/turf_decal/tile/blue/half{ dir = 8 @@ -41401,11 +41249,6 @@ /obj/item/clothing/suit/toggle/labcoat, /turf/open/floor/iron/white, /area/station/maintenance/floor3/starboard/aft) -"lgz" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "lgH" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -41427,6 +41270,14 @@ /obj/effect/turf_decal/trimline/blue/warning, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard/aft) +"lgT" = ( +/obj/effect/spawner/random/trash/garbage{ + spawn_loot_count = 3; + spawn_scatter_radius = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "lgX" = ( /obj/effect/turf_decal/trimline/blue/line{ dir = 8 @@ -41460,6 +41311,16 @@ /obj/machinery/modular_computer/preset/command, /turf/open/floor/carpet/blue, /area/station/command/bridge) +"lho" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/window/reinforced/tinted/spawner/directional/east, +/turf/open/floor/wood, +/area/station/commons/vacant_room/office) "lhp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, /obj/machinery/meter, @@ -41496,18 +41357,6 @@ /obj/structure/table, /turf/open/floor/iron, /area/station/science/genetics) -"lhG" = ( -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/carpet/red, -/area/station/service/library) "lhH" = ( /obj/item/analyzer{ pixel_y = 4 @@ -41535,14 +41384,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"lhP" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "lhT" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -41557,6 +41398,11 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/white, /area/station/science/lower) +"lhY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "lhZ" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 8 @@ -41582,24 +41428,17 @@ /obj/machinery/flasher/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/floor4/fore) -"lik" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) "liq" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 8 }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"liL" = ( +"liv" = ( +/obj/structure/ladder, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "liQ" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/hop) @@ -41607,6 +41446,16 @@ /obj/structure/cable/multilayer/multiz, /turf/open/floor/plating, /area/station/maintenance/floor3/port/fore) +"liU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/station/medical/chemistry) "liX" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 @@ -41775,18 +41624,6 @@ dir = 8 }, /area/station/hallway/floor2/aft) -"llm" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/security{ - name = "The Red Door" - }, -/turf/open/floor/carpet/red, -/area/station/maintenance/floor3/port/aft) "lln" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/storage) @@ -41798,13 +41635,6 @@ /obj/effect/mapping_helpers/airlock/access/all/science/general, /turf/open/floor/iron/white, /area/station/science/circuits) -"llp" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/north, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) "llr" = ( /obj/effect/turf_decal/trimline/green/warning{ dir = 1 @@ -41818,6 +41648,14 @@ }, /turf/open/misc/sandy_dirt, /area/station/hallway/secondary/entry) +"llK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/broken/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "llN" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -41867,11 +41705,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/iron/kitchen, /area/station/service/kitchen/abandoned) -"lmb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) "lme" = ( /obj/machinery/door/firedoor/heavy, /obj/machinery/door/airlock/public/glass{ @@ -41895,6 +41728,12 @@ dir = 8 }, /area/station/ai_monitored/command/storage/eva) +"lmi" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/mapping_helpers/airalarm/tlv_cold_room, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "lmk" = ( /obj/effect/turf_decal/trimline/red/warning{ dir = 8 @@ -41956,17 +41795,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/service/bar) -"lmV" = ( -/obj/machinery/vending/cola/pwr_game, -/obj/effect/turf_decal/siding/wood, -/obj/structure/sign/poster/contraband/pwr_game/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"lmW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "lng" = ( /obj/machinery/teleport/station, /obj/machinery/status_display/evac/directional/north, @@ -42129,15 +41957,6 @@ }, /turf/open/floor/plating/airless, /area/station/solars/starboard/aft) -"lpe" = ( -/obj/item/storage/bag/plants/portaseeder, -/obj/item/plant_analyzer, -/obj/item/cultivator, -/obj/structure/rack, -/obj/item/vending_refill/hydroseeds, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) "lph" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/pod/dark, @@ -42167,13 +41986,6 @@ name = "lab floor" }, /area/station/science/genetics) -"lpB" = ( -/obj/machinery/modular_computer/preset/civilian{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor2/starboard) "lpH" = ( /obj/structure/chair/comfy/carp{ dir = 1 @@ -42181,6 +41993,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/carpet/neon/simple/pink/nodots, /area/station/maintenance/floor2/port/fore) +"lpM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/structure/electrified_grille, +/turf/open/floor/plating, +/area/station/ai_monitored/security/armory) "lpR" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -42253,12 +42071,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/storage) -"lqD" = ( -/obj/item/food/deadmouse/moldy, -/obj/effect/turf_decal/tile/red/half, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/turf/open/floor/stone, -/area/station/maintenance/floor1/port) "lqE" = ( /obj/effect/turf_decal/siding/white/corner{ dir = 4 @@ -42320,6 +42132,11 @@ /obj/structure/curtain/cloth, /turf/open/floor/plating, /area/station/science/robotics/lab) +"lrK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/aft) "lrM" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/pod/light, @@ -42453,6 +42270,10 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"ltl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard/fore) "ltn" = ( /obj/item/storage/toolbox/mechanical/old, /turf/open/floor/plating, @@ -42577,12 +42398,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) -"luZ" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "lvm" = ( /obj/structure/table, /obj/item/assembly/igniter{ @@ -42656,13 +42471,6 @@ }, /turf/open/floor/wood/large, /area/station/security/prison/safe) -"lvG" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) "lvJ" = ( /obj/machinery/door/firedoor, /obj/structure/table/reinforced, @@ -42688,11 +42496,6 @@ "lvT" = ( /turf/closed/wall/r_wall, /area/station/security/evidence) -"lvW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) "lvY" = ( /obj/structure/chair/office{ dir = 8 @@ -42730,6 +42533,21 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, /area/station/hallway/floor3/aft) +"lwD" = ( +/obj/machinery/light/directional/south, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor3/starboard/aft) +"lwK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "lwP" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -42768,6 +42586,12 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor4/starboard) +"lxA" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/spawner/random/structure/crate_abandoned, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "lxC" = ( /obj/effect/turf_decal/trimline/blue/line{ dir = 8 @@ -42783,14 +42607,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/floor2/fore) -"lxI" = ( -/obj/item/stack/tile/wood, -/obj/effect/decal/cleanable/dirt, -/obj/item/ammo_casing/c38{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) "lxK" = ( /obj/effect/turf_decal/trimline/green/warning{ dir = 8 @@ -42818,14 +42634,6 @@ /obj/structure/sign/departments/medbay/alt/directional/south, /turf/open/floor/iron/dark/side, /area/station/hallway/floor2/aft) -"lxZ" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/firecloset/full, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) "lyd" = ( /obj/effect/turf_decal/trimline/green/line, /obj/structure/disposalpipe/segment{ @@ -42833,6 +42641,20 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/service/bar) +"lym" = ( +/obj/effect/turf_decal/tile/red/diagonal_edge, +/obj/machinery/firealarm/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/station/security/checkpoint/escape) +"lyn" = ( +/obj/machinery/airalarm/directional/south, +/obj/item/kirbyplants/random, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) "lyv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42867,6 +42689,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"lyQ" = ( +/obj/structure/table/glass, +/obj/item/multitool, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/circuit/telecomms, +/area/station/tcommsat/server/upper) "lyR" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/table, @@ -42915,21 +42743,12 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/aft) -"lzV" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/item/cigbutt/cigarbutt{ - pixel_x = 7 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/iron/dark/smooth_half, -/area/station/cargo/drone_bay) +"lzT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor4/starboard) "lzX" = ( /obj/effect/turf_decal/trimline/red/line, /obj/effect/turf_decal/trimline/white/warning, @@ -42967,22 +42786,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/checker, /area/station/cargo/miningdock) -"lAE" = ( -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 1 - }, -/obj/structure/bed/dogbed{ - desc = "A comfy-looking mouse bed."; - name = "Robert's bed" - }, -/mob/living/basic/mouse{ - desc = "Your only friend in this place"; - name = "Robert" - }, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/turf/open/floor/stone, -/area/station/maintenance/floor1/port) "lAH" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/item/stack/rods{ @@ -43003,9 +42806,31 @@ initial_gas_mix = "TEMP=2.7" }, /area/station/science/ordnance/bomb) +"lAR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/painting/library{ + pixel_y = 32 + }, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/starboard/aft) "lAU" = ( /turf/closed/wall, /area/station/service/library/printer) +"lBb" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/mining/glass{ + name = "Bitrunning Den" + }, +/turf/open/floor/pod/dark, +/area/station/cargo/drone_bay) "lBo" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ dir = 10 @@ -43104,11 +42929,11 @@ }, /turf/open/floor/iron/white/small, /area/station/commons/fitness/recreation) -"lCg" = ( +"lBU" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) +/obj/item/stack/cable_coil/cut, +/turf/open/floor/plating, +/area/station/medical/abandoned) "lCh" = ( /obj/machinery/vending/cigarette, /obj/item/radio/intercom/directional/east, @@ -43149,21 +42974,10 @@ /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/port) -"lCO" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) "lCR" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard) -"lCT" = ( -/obj/machinery/light/dim/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "lCW" = ( /obj/machinery/light/dim/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43199,6 +43013,16 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"lDv" = ( +/obj/effect/spawner/random/maintenance/two, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/mop, +/obj/effect/spawner/random/engineering/flashlight, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "lDD" = ( /obj/structure/rack, /obj/item/chair/plastic, @@ -43249,6 +43073,13 @@ /obj/effect/decal/cleanable/dirt, /turf/closed/wall, /area/station/medical/storage) +"lDU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/medical/abandoned) "lDW" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 4 @@ -43270,6 +43101,15 @@ /obj/machinery/duct, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/port) +"lEc" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/commons/storage/primary) "lEg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -43304,12 +43144,6 @@ /obj/structure/cable, /turf/open/floor/eighties, /area/station/commons/dorms/room2) -"lEC" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) "lEJ" = ( /obj/machinery/light/directional/north, /obj/machinery/airalarm/directional/north, @@ -43382,6 +43216,11 @@ /obj/machinery/duct, /turf/open/floor/iron/showroomfloor, /area/station/service/kitchen/diner) +"lFI" = ( +/obj/effect/landmark/blobstart, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/engineering/lobby) "lFL" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 4 @@ -43430,6 +43269,14 @@ dir = 1 }, /area/station/hallway/floor4/fore) +"lGl" = ( +/obj/effect/spawner/random/maintenance/two, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "lGo" = ( /obj/structure/railing{ dir = 4 @@ -43442,16 +43289,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness) -"lGu" = ( -/obj/machinery/netpod, -/obj/effect/decal/cleanable/vomit/old{ - pixel_x = -12; - pixel_y = -13 - }, -/obj/item/radio/intercom/directional/north, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/drone_bay) "lGw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43561,6 +43398,13 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/starboard/fore) +"lIl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "lIm" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/white/corner, @@ -43615,12 +43459,19 @@ }, /turf/open/floor/iron/white, /area/station/science/lobby) -"lIP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"lIO" = ( +/obj/effect/turf_decal/tile/green/half{ + dir = 4 + }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) +/obj/machinery/door/airlock{ + name = "Escape Pod B" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/escape_pod) "lIS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -43692,18 +43543,6 @@ dir = 1 }, /area/station/service/chapel) -"lJE" = ( -/obj/item/trash/semki/healthy, -/obj/item/trash/spacers_sidekick{ - pixel_x = -2 - }, -/obj/item/trash/syndi_cakes, -/obj/effect/decal/cleanable/ants, -/obj/effect/decal/cleanable/garbage, -/obj/effect/decal/cleanable/food/flour, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "lJG" = ( /obj/structure/window/spawner/directional/south, /obj/structure/rack, @@ -43760,12 +43599,11 @@ /obj/structure/cable/multilayer/multiz, /turf/open/floor/plating, /area/station/service/kitchen/abandoned) -"lKp" = ( -/obj/machinery/atmospherics/components/trinary/mixer, -/obj/effect/turf_decal/box, +"lKr" = ( +/obj/machinery/light/directional/east, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "lKy" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor/heavy, @@ -43808,19 +43646,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/circuit/green, /area/station/science/robotics/mechbay) -"lLm" = ( -/obj/effect/turf_decal/caution/stand_clear/white{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "lLp" = ( /obj/machinery/camera/motion/directional/north{ c_tag = "Minisat - Port" @@ -43838,6 +43663,13 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) +"lLH" = ( +/obj/effect/turf_decal/tile/red/half{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, +/turf/open/floor/stone, +/area/station/maintenance/floor1/port) "lLO" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -43915,6 +43747,11 @@ /obj/machinery/light/cold/no_nightlight/directional/south, /turf/open/floor/iron, /area/station/hallway/floor3/fore) +"lMZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/marker_beacon/ten, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "lNh" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 @@ -44066,14 +43903,6 @@ /obj/item/restraints/handcuffs, /turf/open/floor/iron/dark, /area/station/security/brig) -"lOF" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/mixingchamber_access, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/freezerchamber) "lOI" = ( /obj/machinery/airalarm/directional/west, /obj/structure/noticeboard/ce{ @@ -44119,11 +43948,6 @@ /obj/machinery/light/broken/directional/north, /turf/open/misc/dirt/jungle, /area/station/service/hydroponics/garden/abandoned) -"lPl" = ( -/obj/structure/reagent_dispensers/plumbed/fuel, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "lPs" = ( /obj/effect/turf_decal/delivery, /obj/structure/cable, @@ -44320,14 +44144,6 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"lRc" = ( -/obj/item/reagent_containers/dropper, -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "lRh" = ( /obj/structure/railing{ dir = 4 @@ -44377,6 +44193,20 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/floor3/aft) +"lRL" = ( +/obj/machinery/button/ignition/incinerator/ordmix{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/machinery/button/door/incinerator_vent_ordmix{ + pixel_x = -8; + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/mixingchamber_access, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/burnchamber) "lRO" = ( /obj/structure/table/wood, /obj/effect/spawner/random/entertainment/musical_instrument, @@ -44408,9 +44238,19 @@ }, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) +"lRU" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor1/port) "lRY" = ( /turf/closed/wall, /area/station/commons/vacant_room/office) +"lSp" = ( +/obj/structure/barricade/sandbags, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "lSs" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -44452,13 +44292,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"lSJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "lSP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -44487,6 +44320,14 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos/hfr_room) +"lTe" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port/aft) "lTl" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 6 @@ -44509,6 +44350,13 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard) +"lTF" = ( +/obj/structure/bed/double, +/obj/item/bedsheet/cosmos/double, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/large, +/area/station/maintenance/floor4/starboard/aft) "lTN" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Bulkhead" @@ -44550,6 +44398,13 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) +"lUs" = ( +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/structure/crate, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "lUu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -44563,16 +44418,20 @@ dir = 4 }, /area/station/medical/chemistry) -"lUY" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "lUZ" = ( /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/hallway/floor3/fore) +"lVc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "lVf" = ( /obj/structure/disposalpipe/junction/flip, /turf/open/floor/iron, @@ -44599,11 +44458,14 @@ dir = 4 }, /area/station/hallway/floor2/fore) -"lVq" = ( -/obj/effect/spawner/random/trash/graffiti, +"lVG" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "lVP" = ( /obj/machinery/door/airlock/security/glass{ name = "Third Deck Outpost" @@ -44627,11 +44489,6 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) -"lVV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "lVW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -44659,11 +44516,14 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"lWm" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/turf/open/openspace, -/area/station/maintenance/floor4/port/aft) +"lWu" = ( +/obj/effect/turf_decal/trimline/blue/corner, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "lWA" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 9 @@ -44680,23 +44540,12 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port) -"lWR" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/airalarm/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"lXj" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"lWT" = ( +/obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "lXm" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -44744,6 +44593,16 @@ }, /turf/open/floor/iron/white, /area/station/medical/pharmacy) +"lXC" = ( +/obj/effect/turf_decal/tile/green/anticorner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/snack/green, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/hallway/secondary/exit/escape_pod) "lXK" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, /obj/item/radio/intercom/directional/west, @@ -44832,6 +44691,10 @@ /obj/item/pen, /turf/open/floor/carpet/red, /area/station/service/library/lounge) +"lYg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/smooth_large, +/area/station/service/library/printer) "lYr" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -44862,16 +44725,6 @@ "lYx" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/freezerchamber) -"lYD" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) "lYL" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Hatch" @@ -44909,10 +44762,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/wood, /area/station/medical/psychology) -"lYX" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/blue, -/area/station/maintenance/floor3/port/aft) "lYY" = ( /obj/effect/turf_decal/tile/blue/half, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -44964,12 +44813,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/station/medical/abandoned) -"maq" = ( -/obj/machinery/light_switch/directional/east, -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "mar" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -44982,6 +44825,12 @@ "mau" = ( /turf/closed/wall/r_wall, /area/station/security/lockers) +"maH" = ( +/obj/effect/turf_decal/tile/green/half, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/side, +/area/station/hallway/secondary/exit/escape_pod) "maL" = ( /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/machinery/door/airlock/hatch{ @@ -45096,14 +44945,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"mbQ" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) +"mbP" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, +/turf/open/openspace, +/area/station/maintenance/floor4/port/aft) "mbS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, /obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle, @@ -45164,13 +45010,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"mcu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) "mcB" = ( /obj/effect/turf_decal/trimline/green/filled/warning{ dir = 1 @@ -45247,12 +45086,6 @@ /obj/machinery/status_display/ai/directional/west, /turf/open/floor/iron, /area/station/hallway/floor1/aft) -"mdu" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/engine_access, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/engine, -/area/station/engineering/supermatter) "mdB" = ( /turf/open/floor/iron, /area/station/commons/fitness/recreation) @@ -45324,12 +45157,6 @@ "mek" = ( /turf/closed/wall, /area/station/security/prison/shower) -"mel" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/suit/hazardvest, -/obj/structure/rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "mem" = ( /obj/machinery/shower/directional/east, /turf/open/floor/noslip, @@ -45396,6 +45223,23 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron/dark, /area/station/security/evidence) +"mff" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/broken/directional/east, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/rack, +/obj/item/stack/sheet/iron{ + amount = 30 + }, +/obj/item/stack/sheet/glass{ + amount = 30 + }, +/obj/item/stack/package_wrap, +/obj/item/flashlight/flare, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "mfk" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 8 @@ -45428,14 +45272,6 @@ /obj/item/reagent_containers/cup/rag, /turf/open/floor/iron/dark/smooth_large, /area/station/service/bar) -"mfQ" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/machinery/door/window/left/directional/south{ - name = "Storage" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "mfR" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -45489,13 +45325,6 @@ /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/floor/grass, /area/station/service/library/garden) -"mgq" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "mgx" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -45559,13 +45388,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/hallway/floor2/fore) -"mhh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) "mhl" = ( /obj/structure/table, /obj/structure/cable, @@ -45589,6 +45411,13 @@ /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron/dark/side, /area/station/hallway/floor1/aft) +"mhA" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port/aft) "mhC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -45608,6 +45437,14 @@ }, /turf/open/floor/carpet/royalblack, /area/station/service/kitchen/diner) +"mhI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "mhO" = ( /obj/structure/closet/secure_closet/freezer/empty, /turf/open/floor/iron/kitchen, @@ -45651,13 +45488,6 @@ dir = 1 }, /area/station/hallway/floor1/aft) -"mif" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) "mil" = ( /obj/structure/table, /obj/effect/turf_decal/tile/purple/fourcorners, @@ -45697,20 +45527,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/plating, /area/station/security/eva) -"mjd" = ( -/obj/machinery/camera/motion/directional/east{ - c_tag = "MiniSat Foyer"; - network = list("minisat") - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"mjj" = ( -/obj/structure/sign/poster/official/do_not_question/directional/south, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) "mjv" = ( /obj/machinery/door/airlock/engineering{ name = "Telecomms Storage" @@ -45726,6 +45542,14 @@ }, /turf/open/floor/iron/white, /area/station/medical/storage) +"mjL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "mjP" = ( /obj/structure/cable/multilayer/multiz, /obj/structure/cable, @@ -45873,6 +45697,17 @@ }, /turf/open/floor/iron/white, /area/station/science/lab) +"mlM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/green/half{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/poster/random/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/secondary/exit/escape_pod) "mlN" = ( /obj/effect/mapping_helpers/airlock/access/any/security/armory, /obj/machinery/door/airlock/security/glass{ @@ -45932,12 +45767,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) -"mms" = ( -/obj/machinery/space_heater/improvised_chem_heater, -/obj/effect/turf_decal/tile/blue/half, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/smooth_edge, -/area/station/medical/abandoned) "mmv" = ( /obj/machinery/door/airlock/public/glass{ name = "Public Mining & Aux Base" @@ -45972,6 +45801,18 @@ dir = 4 }, /area/station/security/checkpoint) +"mmO" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) "mmR" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 @@ -46108,12 +45949,6 @@ "mnR" = ( /turf/open/floor/iron, /area/station/cargo/storage) -"mnY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) "moe" = ( /obj/structure/table, /obj/item/pestle, @@ -46203,10 +46038,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port/aft) -"mpK" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) "mpL" = ( /obj/structure/table/wood, /obj/item/folder/blue, @@ -46362,11 +46193,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/white, /area/station/science/lower) -"mrq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth_corner, -/area/station/maintenance/floor2/starboard) "mrs" = ( /obj/structure/grille, /obj/item/shard, @@ -46451,16 +46277,6 @@ /obj/effect/spawner/random/structure/tank_holder, /turf/open/floor/pod/light, /area/station/maintenance/floor4/port) -"msu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) "msv" = ( /obj/structure/railing, /obj/structure/cable, @@ -46479,6 +46295,17 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/aft) +"msS" = ( +/obj/structure/sign/poster/official/plasma_effects/directional/east, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/suit_storage_unit/medical, +/turf/open/floor/iron/white, +/area/station/medical/storage) +"msT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/bag/trash, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "msW" = ( /obj/item/storage/box/chemimp{ pixel_x = 6 @@ -46666,6 +46493,12 @@ /obj/machinery/light/dim/directional/east, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard/aft) +"muQ" = ( +/obj/structure/rack, +/obj/item/storage/box/lights/tubes, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "mve" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -46694,17 +46527,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"mvs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "mvw" = ( /turf/open/floor/iron/dark/corner{ dir = 4 @@ -46798,22 +46620,22 @@ /obj/effect/turf_decal/tile/purple/opposingcorners, /turf/open/floor/iron/white, /area/station/command/heads_quarters/rd) +"mwN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/maintenance/floor3/starboard/aft) "mwO" = ( /obj/structure/table/wood, /obj/item/toy/crayon/spraycan, /obj/item/toy/crayon/spraycan, /turf/open/floor/wood/large, /area/station/service/library/lounge) -"mwR" = ( -/obj/structure/sign/poster/contraband/lusty_xenomorph/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"mwZ" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) +"mxb" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/item/stamp/head/captain, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/captain) "mxd" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -46837,10 +46659,6 @@ dir = 9 }, /area/station/hallway/secondary/exit) -"mxC" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "mxD" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/effect/turf_decal/tile/red/opposingcorners{ @@ -46859,6 +46677,16 @@ }, /turf/open/floor/plating, /area/station/medical/abandoned) +"mxR" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port) "mxT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -46867,16 +46695,20 @@ dir = 4 }, /area/station/hallway/secondary/exit/departure_lounge) -"mym" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 10 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/turf/open/floor/engine/airless, -/area/station/science/ordnance/freezerchamber) "myr" = ( /turf/open/floor/iron/textured_large, /area/station/hallway/secondary/entry) +"myw" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/table, +/obj/item/stack/cable_coil, +/obj/item/screwdriver, +/obj/effect/decal/cleanable/dirt, +/obj/item/weldingtool/largetank, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "myx" = ( /obj/structure/chair/stool/bamboo, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -46955,6 +46787,11 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"mze" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor4/starboard) "mzf" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/engine/n2, @@ -46986,6 +46823,11 @@ dir = 4 }, /area/station/command/bridge) +"mzz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/built/directional/south, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/cargo/warehouse) "mzA" = ( /obj/structure/railing{ dir = 4 @@ -47064,6 +46906,13 @@ }, /turf/open/floor/wood, /area/station/commons/dorms/apartment2) +"mBc" = ( +/obj/effect/turf_decal/trimline/purple/warning, +/obj/machinery/airalarm/directional/north, +/obj/effect/spawner/random/structure/crate, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "mBg" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -47080,6 +46929,17 @@ initial_gas_mix = "TEMP=2.7" }, /area/station/science/ordnance/bomb) +"mBr" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/green/warning, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "mBt" = ( /obj/structure/rack, /obj/item/paper/pamphlet/gateway, @@ -47129,6 +46989,17 @@ /obj/structure/cable, /turf/open/floor/plating/airless, /area/station/solars/starboard/fore) +"mCx" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 8 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/effect/spawner/random/engineering/canister, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "mCD" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -47203,6 +47074,11 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/security/brig) +"mCX" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "mDd" = ( /obj/effect/spawner/random/engineering/tank, /obj/effect/turf_decal/trimline/dark_blue/end{ @@ -47249,11 +47125,6 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/office) -"mDR" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "mDV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -47342,6 +47213,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/command/bridge) +"mEZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/item/clothing/suit/toggle/labcoat, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard/aft) "mFp" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -47443,6 +47320,13 @@ /obj/machinery/status_display/ai/directional/north, /turf/open/floor/iron/white, /area/station/science/lower) +"mGo" = ( +/obj/machinery/light/dim/directional/south, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/sign/poster/contraband/random/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "mGp" = ( /obj/effect/spawner/random/trash/garbage{ spawn_scatter_radius = 1 @@ -47458,12 +47342,6 @@ /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/floor/grass, /area/station/science/genetics) -"mGy" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/mining, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "mGF" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 @@ -47479,6 +47357,11 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) +"mGI" = ( +/obj/effect/spawner/random/trash/hobo_squat, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/medical/abandoned) "mGK" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/structure/disposalpipe/segment{ @@ -47517,6 +47400,11 @@ "mHa" = ( /turf/closed/wall, /area/station/commons/fitness/recreation/entertainment) +"mHb" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/fore) "mHc" = ( /obj/structure/rack, /obj/item/storage/briefcase{ @@ -47534,11 +47422,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/wood/parquet, /area/station/service/lawoffice) -"mHk" = ( -/obj/machinery/power/emitter, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) "mHm" = ( /obj/structure/chair/office{ dir = 1 @@ -47564,6 +47447,14 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/service/janitor) +"mHy" = ( +/obj/effect/turf_decal/trimline/blue/line{ + dir = 4 + }, +/obj/machinery/light/small/blacklight/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "mHz" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /obj/machinery/light/directional/west, @@ -47593,6 +47484,11 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/lockers) +"mId" = ( +/obj/item/kirbyplants/random/dead, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/turf/open/floor/iron/white, +/area/station/command/heads_quarters/rd) "mIh" = ( /obj/structure/closet/toolcloset, /obj/effect/turf_decal/bot, @@ -47617,6 +47513,11 @@ }, /turf/open/floor/iron/white, /area/station/science/lobby) +"mIt" = ( +/obj/effect/spawner/random/trash/graffiti, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/starboard/aft) "mIA" = ( /obj/machinery/door/firedoor, /obj/machinery/door/poddoor{ @@ -47653,15 +47554,6 @@ /obj/structure/ladder, /turf/open/floor/catwalk_floor, /area/station/hallway/floor3/aft) -"mIQ" = ( -/obj/machinery/computer{ - desc = "Might have worked twenty years ago."; - dir = 8; - name = "Bluescreened Weapons System" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/plastitanium/red, -/area/station/maintenance/floor4/starboard/aft) "mIV" = ( /obj/machinery/computer/security/telescreen{ desc = "Used for the Auxiliary Mining Base."; @@ -47694,17 +47586,17 @@ }, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) -"mJc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/aft) "mJg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/side{ dir = 8 }, /area/station/hallway/floor2/fore) +"mJi" = ( +/obj/item/stack/cable_coil/cut, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "mJt" = ( /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/smooth, @@ -47771,13 +47663,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"mKp" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 6 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/turf/open/floor/engine/airless, -/area/station/science/ordnance/freezerchamber) "mKs" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -47857,18 +47742,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness) -"mLp" = ( -/obj/machinery/door/firedoor, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/hallway/secondary/exit/escape_pod) "mLq" = ( /obj/effect/turf_decal/stripes{ dir = 1 @@ -47879,6 +47752,13 @@ dir = 1 }, /area/station/cargo/drone_bay) +"mLG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/delivery, +/obj/item/stack/sheet/cloth/five, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "mLH" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/pod/light, @@ -47892,6 +47772,14 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) +"mLL" = ( +/obj/effect/turf_decal/trimline/red/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "mLO" = ( /obj/machinery/camera/autoname/directional/north, /obj/structure/sign/painting/library{ @@ -47980,10 +47868,6 @@ "mMq" = ( /turf/open/floor/engine, /area/station/engineering/supermatter) -"mMr" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) "mMt" = ( /turf/open/floor/iron/dark/corner{ dir = 8 @@ -48032,11 +47916,13 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) -"mMO" = ( -/obj/effect/landmark/blobstart, +"mMW" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 1 + }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/engineering/lobby) +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "mNb" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -48065,6 +47951,21 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/tcommsat/server) +"mNq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron/stairs{ + dir = 1 + }, +/area/station/cargo/drone_bay) +"mNx" = ( +/obj/item/storage/pill_bottle, +/obj/effect/spawner/random/trash/graffiti{ + pixel_x = -32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/light/colour_cycle/dancefloor_a, +/area/station/medical/abandoned) "mNT" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 @@ -48113,6 +48014,11 @@ dir = 1 }, /area/station/hallway/secondary/entry) +"mOA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port/aft) "mOH" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -48192,6 +48098,21 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload_foyer) +"mPr" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/door/airlock/hatch{ + name = "Maintenance Access" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/maintenance/floor3/port/aft) "mPv" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -48267,11 +48188,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) -"mPZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) "mQd" = ( /obj/item/stack/cable_coil/five, /turf/open/floor/pod/light, @@ -48352,6 +48268,13 @@ /obj/structure/cable, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) +"mRp" = ( +/obj/effect/turf_decal/trimline/red/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "mRq" = ( /turf/open/misc/dirt/jungle, /area/station/service/hydroponics/garden/abandoned) @@ -48359,17 +48282,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/miningdock) -"mRx" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 9 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/large, -/area/station/command/gateway) "mRI" = ( /obj/effect/spawner/random/structure/grille, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -48383,11 +48295,6 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/iron/white, /area/station/medical/virology) -"mSa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/trashcart/filled, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) "mSe" = ( /obj/structure/closet/firecloset, /obj/machinery/light/dim/directional/north, @@ -48402,6 +48309,20 @@ /obj/item/knife/shiv, /turf/open/floor/iron, /area/station/maintenance/floor4/port/fore) +"mSo" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/green, +/area/station/service/abandoned_gambling_den) +"mSr" = ( +/obj/machinery/computer/slot_machine, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/green, +/area/station/service/abandoned_gambling_den) "mSG" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/burnchamber) @@ -48503,6 +48424,15 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor2/aft) +"mTJ" = ( +/obj/structure/grille/broken, +/obj/effect/turf_decal/trimline/red/line{ + dir = 5 + }, +/obj/effect/spawner/random/contraband/permabrig_weapon, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "mTK" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -48591,12 +48521,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/floor3/aft) -"mUF" = ( -/obj/structure/chair/office/light, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) "mUJ" = ( /obj/structure/table, /obj/item/stack/cable_coil, @@ -48649,6 +48573,14 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/floor4/fore) +"mVx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/chem_master, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/station/medical/chemistry) "mVy" = ( /obj/structure/closet/emcloset/anchored, /turf/open/floor/plating, @@ -48755,6 +48687,13 @@ }, /turf/open/openspace, /area/station/maintenance/floor2/port) +"mWE" = ( +/obj/effect/spawner/random/entertainment/arcade{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/maintenance/floor2/starboard) "mWH" = ( /obj/effect/turf_decal/stripes{ dir = 4 @@ -48846,24 +48785,10 @@ }, /turf/open/floor/iron/white, /area/station/security/medical) -"mYg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) "mYh" = ( /obj/machinery/shower/directional/east, /turf/open/floor/catwalk_floor/iron_dark, /area/station/engineering/atmos/office) -"mYo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) "mYp" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, /obj/item/radio/intercom/prison/directional/north, @@ -48899,11 +48824,15 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor4/starboard) -"mYK" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) +"mYG" = ( +/obj/structure/window/reinforced/tinted/spawner/directional/north, +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/structure/punching_bag, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/hallway/floor2/fore) "mYM" = ( /obj/structure/transit_tube/curved/flipped{ dir = 4 @@ -48913,6 +48842,12 @@ "mYN" = ( /turf/closed/wall, /area/station/command/heads_quarters/cmo) +"mYQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "mYV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -48973,6 +48908,10 @@ /obj/effect/landmark/start/botanist, /turf/open/floor/iron, /area/station/service/hydroponics) +"mZF" = ( +/obj/structure/sign/poster/contraband/eat/directional/west, +/turf/open/floor/carpet/royalblue, +/area/station/medical/break_room) "mZH" = ( /obj/effect/turf_decal/tile/red/half, /obj/structure/disposalpipe/segment{ @@ -49010,17 +48949,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"mZZ" = ( -/obj/machinery/power/emitter, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) "nag" = ( /obj/machinery/door/firedoor/heavy, /obj/structure/table/reinforced, @@ -49268,17 +49196,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor1/aft) -"ndL" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "ndR" = ( /obj/machinery/door/airlock/engineering{ name = "Chief Engineer's Quarters" @@ -49357,13 +49274,6 @@ name = "boxing ring" }, /area/station/commons/fitness) -"neJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) "neL" = ( /obj/structure/disposalpipe/segment{ dir = 2 @@ -49425,6 +49335,12 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /turf/open/space/basic, /area/space/nearstation) +"nfE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard/aft) "nfJ" = ( /obj/structure/cable, /obj/machinery/holopad, @@ -49452,14 +49368,6 @@ dir = 6 }, /area/station/hallway/floor4/fore) -"ngf" = ( -/obj/structure/railing, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "ngg" = ( /obj/machinery/airalarm/directional/south, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -49509,6 +49417,15 @@ name = "lab floor" }, /area/station/science/genetics) +"ngz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth_half{ + dir = 1 + }, +/area/station/maintenance/floor2/starboard) "ngD" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ dir = 8 @@ -49928,6 +49845,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor, /area/station/hallway/floor4/aft) +"nkK" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/window/reinforced/tinted/spawner/directional/west, +/turf/open/floor/wood, +/area/station/commons/vacant_room/office) "nkM" = ( /obj/machinery/light/directional/north, /turf/open/floor/iron/dark/side{ @@ -49938,6 +49865,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/hallway/floor3/aft) +"nkU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/trashcart, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/starboard/aft) "nkY" = ( /obj/machinery/light/directional/west, /obj/structure/chair/sofa/corp/left{ @@ -49989,17 +49921,6 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/engineering/lobby) -"nlo" = ( -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) "nlu" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -50074,12 +49995,14 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"nmq" = ( +"nmn" = ( /obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) +"nmu" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/tank_holder, /turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) +/area/station/maintenance/floor3/port/aft) "nmw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -50107,6 +50030,17 @@ /obj/item/shard, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/starboard) +"nmM" = ( +/obj/structure/table/reinforced/rglass, +/obj/item/flashlight/lamp{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/effect/spawner/random/entertainment/coin, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/west, +/turf/open/floor/carpet/black, +/area/station/hallway/secondary/service) "nmV" = ( /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/hallway) @@ -50117,28 +50051,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"nnc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"nne" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"nnj" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3; - spawn_scatter_radius = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "nno" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 @@ -50163,6 +50075,13 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) +"nnB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/skillchip/wine_taster, +/turf/open/floor/wood, +/area/station/maintenance/floor3/starboard/aft) "nnJ" = ( /obj/structure/filingcabinet, /turf/open/floor/iron/dark/smooth_large, @@ -50183,6 +50102,15 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) +"nnX" = ( +/obj/effect/spawner/random/structure/grille, +/obj/effect/turf_decal/tile/green/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "noa" = ( /obj/effect/mapping_helpers/airlock/access/all/supply/mining, /obj/machinery/door/airlock/mining{ @@ -50276,11 +50204,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor4/port/aft) -"noF" = ( -/obj/effect/spawner/random/trash/grime, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "noM" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ dir = 4 @@ -50322,6 +50245,11 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"npd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/pod, +/area/station/maintenance/floor4/port/fore) "nph" = ( /obj/structure/chair/sofa/bench/right{ dir = 1 @@ -50388,6 +50316,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/textured_large, /area/station/hallway/secondary/exit/departure_lounge) +"npY" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/decoration/carpet, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "npZ" = ( /obj/effect/turf_decal/trimline/green/warning, /turf/open/floor/pod/light, @@ -50433,14 +50367,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/side, /area/station/engineering/atmos/hfr_room) -"nqI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) "nqJ" = ( /obj/effect/turf_decal/loading_area/white{ dir = 4 @@ -50457,6 +50383,13 @@ }, /turf/open/floor/carpet/orange, /area/station/command/heads_quarters/qm) +"nqP" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "nqU" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -50485,6 +50418,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port) +"nri" = ( +/obj/machinery/firealarm/directional/south, +/obj/machinery/light/directional/south, +/obj/effect/decal/cleanable/oil/streak, +/obj/machinery/byteforge, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/drone_bay) "nrk" = ( /obj/structure/cable, /obj/structure/table, @@ -50534,6 +50475,12 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/eighties, /area/station/commons/dorms/room2) +"nrS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/item/bot_assembly/floorbot, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard/aft) "nrX" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /turf/open/floor/iron/white, @@ -50600,17 +50547,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"nsw" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) "nsB" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -50836,14 +50772,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor2/aft) -"nvw" = ( -/obj/machinery/door/poddoor/shutters{ - id = "maint-shut"; - name = "Maintenance Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "nvA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -50877,14 +50805,6 @@ dir = 1 }, /area/station/security/prison) -"nvT" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 8 - }, -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) "nwa" = ( /obj/effect/turf_decal/siding/wideplating_new{ dir = 8 @@ -50936,18 +50856,31 @@ }, /turf/open/floor/iron/dark/side, /area/station/security/prison) -"nwM" = ( -/obj/machinery/iv_drip, -/obj/structure/mirror/directional/south, -/obj/structure/sign/poster/official/cleanliness/directional/east, -/turf/open/floor/iron/dark, -/area/station/medical/surgery/aft) +"nwN" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/fore) "nwR" = ( /obj/structure/sign/warning{ pixel_y = -32 }, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/aisat) +"nwV" = ( +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/medical/glass{ + name = "Medical Front Desk" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/medical/abandoned) "nxm" = ( /obj/structure/chair/sofa/bench/left{ dir = 1 @@ -51049,13 +50982,6 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/floor2/fore) -"nyv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/painting/library{ - pixel_y = 32 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) "nyE" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/ai_upload_foyer) @@ -51066,6 +50992,11 @@ /obj/effect/landmark/blobstart, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/starboard) +"nyW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "nyZ" = ( /obj/item/paper_bin, /obj/item/pen, @@ -51134,6 +51065,20 @@ "nzz" = ( /turf/open/floor/iron/dark/textured, /area/station/medical/surgery/fore) +"nzC" = ( +/obj/machinery/door/airlock{ + name = "Escape Pod B" + }, +/obj/effect/turf_decal/tile/green/half{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/turf_decal/tile/green/half{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/escape_pod) "nzK" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/item/stack/rods{ @@ -51173,6 +51118,11 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/iron/textured_large, /area/station/cargo/storage) +"nAp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/cargo/warehouse) "nAu" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -51181,12 +51131,6 @@ dir = 4 }, /area/station/commons/storage/primary) -"nAv" = ( -/obj/item/storage/toolbox/electrical, -/obj/structure/table/glass, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server/upper) "nAC" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/flora/bush/lavendergrass/style_random, @@ -51281,14 +51225,6 @@ /obj/effect/turf_decal/trimline/green/filled/line, /turf/open/floor/iron, /area/station/service/hydroponics) -"nBO" = ( -/obj/machinery/door/airlock/command{ - name = "Rusted Airlock" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard/aft) "nBT" = ( /obj/structure/extinguisher_cabinet/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51369,6 +51305,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/pod/dark, /area/station/maintenance/floor4/port/aft) +"nCB" = ( +/obj/machinery/computer/quantum_console{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_corner, +/area/station/cargo/drone_bay) "nCD" = ( /obj/structure/flora/bush/flowers_br/style_random, /turf/open/floor/grass, @@ -51461,11 +51403,6 @@ /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard) -"nDE" = ( -/obj/machinery/light/dim/directional/north, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/turf/open/openspace, -/area/station/maintenance/floor4/port/aft) "nDK" = ( /obj/item/chair, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -51496,6 +51433,22 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, /area/station/command/gateway) +"nEt" = ( +/obj/effect/turf_decal/tile/green/full, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/hallway/secondary/exit/escape_pod) +"nEu" = ( +/obj/machinery/computer{ + desc = "Barely powered, it's not working well."; + name = "Flickering Nav Console" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium/red, +/area/station/maintenance/floor4/starboard/aft) "nEB" = ( /obj/machinery/door/airlock/hatch{ name = "MiniSat Antechamber" @@ -51530,6 +51483,11 @@ "nEI" = ( /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/aisat_interior) +"nEN" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "nEO" = ( /obj/structure/table, /obj/item/screwdriver, @@ -51564,17 +51522,17 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor3/port) -"nFi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"nFq" = ( -/obj/item/stack/cable_coil/cut, +"nFp" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/rack, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "nFr" = ( /obj/machinery/door_buttons/access_button{ idDoor = "asylum_airlock_exterior"; @@ -51601,6 +51559,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/checker, /area/station/commons/locker) +"nFA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "nFH" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -51761,12 +51724,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/lockers) -"nHB" = ( -/obj/machinery/atm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) "nHC" = ( /obj/machinery/door/airlock/virology/glass{ name = "Monkey Containment" @@ -51789,6 +51746,11 @@ dir = 4 }, /area/station/medical/abandoned) +"nHN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/black, +/area/station/hallway/secondary/service) "nHT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51796,11 +51758,13 @@ /obj/machinery/holopad, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"nIk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) +"nHZ" = ( +/obj/structure/bed/dogbed{ + name = "pet bed" + }, +/obj/structure/window/spawner/directional/south, +/turf/open/floor/carpet/green, +/area/station/command/heads_quarters/rd) "nIr" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 @@ -51845,13 +51809,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/office) -"nIB" = ( -/obj/effect/turf_decal/stripes{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) "nIL" = ( /obj/effect/turf_decal/siding/purple, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -52100,6 +52057,19 @@ }, /turf/open/floor/iron/dark, /area/station/service/library/garden) +"nLN" = ( +/obj/machinery/computer/security/telescreen/minisat{ + dir = 8; + pixel_x = 28 + }, +/obj/machinery/camera/directional/south{ + c_tag = "MiniSat Exterior Access"; + network = list("minisat") + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/aisat) "nLY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -52123,11 +52093,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/exam_room) -"nMn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/emcloset, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) "nMI" = ( /obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/structure/cable, @@ -52149,16 +52114,6 @@ /obj/structure/disposalpipe/trunk/multiz/down, /turf/open/openspace, /area/station/maintenance/floor4/starboard/fore) -"nMV" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "nMX" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -52169,19 +52124,49 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/hallway/floor3/fore) -"nNk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "nNq" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 }, /turf/open/floor/iron, /area/station/hallway/floor3/aft) +"nNw" = ( +/obj/structure/table/wood, +/obj/item/folder/yellow{ + pixel_x = -6 + }, +/obj/item/stamp/head/qm{ + pixel_x = -6 + }, +/obj/structure/cable, +/obj/item/flashlight/lamp/green{ + pixel_x = 6; + pixel_y = 15 + }, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/qm) +"nNy" = ( +/obj/structure/sign/poster/random/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/oil, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/drone_bay) +"nNF" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atm/directional/south, +/turf/open/floor/carpet/red, +/area/station/service/theater) "nNJ" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -52222,6 +52207,16 @@ /obj/effect/turf_decal/bot_red, /turf/open/floor/iron/textured_large, /area/station/cargo/warehouse) +"nOv" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port) "nOB" = ( /obj/structure/kitchenspike, /obj/structure/sign/poster/random/directional/north, @@ -52291,6 +52286,12 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron, /area/station/engineering/engine_smes) +"nPl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille, +/turf/open/floor/plating, +/area/station/maintenance/floor3/starboard) "nPn" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -52321,16 +52322,6 @@ }, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) -"nPy" = ( -/obj/effect/turf_decal/trimline/purple/arrow_ccw, -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/obj/item/radio/intercom/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/miningdock) "nPE" = ( /turf/closed/wall/r_wall, /area/station/maintenance/floor4/starboard) @@ -52382,6 +52373,18 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark/textured, /area/station/science/ordnance/storage) +"nQs" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/aft) "nQw" = ( /obj/machinery/light/dim/directional/east, /turf/open/floor/catwalk_floor, @@ -52401,19 +52404,6 @@ dir = 1 }, /area/station/security/prison) -"nQG" = ( -/obj/machinery/power/smes/engineering{ - input_attempt = 0; - input_level = 60000; - inputting = 0; - output_attempt = 0; - output_level = 60000; - outputting = 0 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth_large, -/area/station/maintenance/floor2/starboard) "nQH" = ( /obj/effect/turf_decal/stripes{ dir = 6 @@ -52512,10 +52502,24 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port) +"nRn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/floor2/starboard) "nRo" = ( /obj/machinery/vending/games, /turf/open/floor/bamboo/tatami/black, /area/station/commons/storage/art) +"nRt" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "nRv" = ( /obj/structure/marker_beacon/burgundy, /turf/open/floor/pod/light, @@ -52546,10 +52550,6 @@ /obj/structure/noticeboard/directional/east, /turf/open/floor/iron/dark/textured, /area/station/medical/pharmacy) -"nRS" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/turf/open/openspace, -/area/station/maintenance/floor2/port) "nRU" = ( /obj/structure/chair{ dir = 1 @@ -52586,6 +52586,18 @@ /obj/machinery/blackbox_recorder, /turf/open/floor/circuit/green/telecomms, /area/station/tcommsat/server) +"nSr" = ( +/obj/effect/decal/cleanable/oil/streak, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) +"nSu" = ( +/obj/machinery/space_heater/improvised_chem_heater, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "nSv" = ( /obj/structure/railing{ dir = 8 @@ -52596,6 +52608,13 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard) +"nSx" = ( +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/maintenance/floor1/port/aft) "nSz" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sink/kitchen/directional/south, @@ -52603,10 +52622,6 @@ dir = 5 }, /area/station/security/prison/garden) -"nSC" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "nSD" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/stripes, @@ -52664,10 +52679,19 @@ /obj/structure/sink/directional/west, /turf/open/floor/iron/dark, /area/station/medical/surgery/fore) +"nTz" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/medical/abandoned) "nTB" = ( /obj/structure/fluff/oldturret, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/station/maintenance/floor4/starboard/aft) +"nTH" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, +/turf/open/openspace, +/area/station/maintenance/floor2/port) "nTI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -52706,12 +52730,11 @@ /obj/machinery/computer/station_alert, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/aisat/service) -"nTU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) +"nTQ" = ( +/obj/effect/spawner/random/vending/colavend, +/obj/structure/sign/poster/official/cleanliness/directional/east, +/turf/open/floor/iron/dark/smooth_large, +/area/station/hallway/secondary/entry) "nTZ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/textured_large, @@ -52845,14 +52868,6 @@ }, /turf/open/floor/iron/dark, /area/station/service/hydroponics) -"nVP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/space_heater/improvised_chem_heater, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) "nVW" = ( /obj/structure/chair/office{ dir = 1 @@ -52966,6 +52981,13 @@ dir = 1 }, /area/station/command/gateway) +"nWU" = ( +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/starboard/fore) "nWW" = ( /turf/closed/wall, /area/station/hallway/floor4/aft) @@ -53124,6 +53146,18 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"nYV" = ( +/obj/effect/turf_decal/tile/green/half{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/hallway/secondary/exit/escape_pod) "nYX" = ( /obj/effect/turf_decal/trimline/purple/warning{ dir = 10 @@ -53165,12 +53199,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/command/heads_quarters/captain) -"nZh" = ( -/obj/effect/decal/cleanable/dirt, +"nZj" = ( +/obj/effect/spawner/random/trash/grime, /obj/effect/decal/cleanable/dirt, -/obj/structure/grille, /turf/open/floor/plating, -/area/station/hallway/floor3/fore) +/area/station/medical/abandoned) "nZm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -53190,16 +53223,18 @@ /obj/structure/window/reinforced/tinted/fulltile, /turf/open/floor/plating, /area/station/service/library) +"nZx" = ( +/obj/structure/sign/poster/official/cleanliness/directional/west, +/obj/machinery/holopad, +/obj/machinery/camera/directional/west{ + name = "Security - Medical" + }, +/turf/open/floor/iron/white, +/area/station/security/medical) "nZG" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/hallway/floor2/fore) -"nZJ" = ( -/obj/structure/table/glass, -/obj/item/multitool, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server/upper) "nZR" = ( /obj/machinery/light_switch/directional/north, /obj/effect/landmark/start/assistant, @@ -53225,12 +53260,6 @@ /obj/structure/sign/departments/engineering/directional/west, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/floor1/aft) -"oad" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/pump, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "oar" = ( /turf/open/misc/beach/sand, /area/station/hallway/secondary/entry) @@ -53411,6 +53440,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/carpet/red, /area/station/service/theater) +"ocY" = ( +/obj/machinery/iv_drip, +/obj/structure/mirror/directional/south, +/obj/structure/sign/poster/official/cleanliness/directional/east, +/turf/open/floor/iron/dark, +/area/station/medical/surgery/aft) "ode" = ( /obj/structure/chair/comfy/shuttle{ dir = 1 @@ -53428,6 +53463,14 @@ /obj/effect/spawner/random/trash/moisture_trap, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard/aft) +"odw" = ( +/obj/structure/bed/medical/emergency, +/obj/structure/sign/gym/mirrored{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured, +/area/station/commons/fitness) "odJ" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 6 @@ -53443,10 +53486,6 @@ /obj/item/plunger, /turf/open/floor/iron/textured_large, /area/station/medical/chemistry) -"odS" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/purple, -/area/station/maintenance/floor1/port/aft) "odY" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor/heavy, @@ -53458,6 +53497,11 @@ /obj/effect/mapping_helpers/airlock/access/any/service/general, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) +"oem" = ( +/obj/item/reagent_containers/spray/syndicate, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "oet" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53566,6 +53610,20 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) +"ofM" = ( +/obj/effect/turf_decal/trimline/blue/line, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) +"ofX" = ( +/obj/effect/turf_decal/arrows/white{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "ofY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, @@ -53590,6 +53648,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall, /area/station/hallway/floor1/fore) +"ogk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/trashcart/filled, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/starboard/aft) "ogl" = ( /turf/open/floor/iron/dark/side, /area/station/hallway/floor4/fore) @@ -53604,12 +53667,6 @@ /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/pod/light, /area/station/maintenance/solars/port/aft) -"ogA" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "ogD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53732,14 +53789,6 @@ /obj/effect/spawner/random/maintenance/two, /turf/open/floor/pod, /area/station/maintenance/floor4/starboard/aft) -"oin" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) "oiu" = ( /obj/machinery/computer/security/hos{ dir = 1 @@ -53772,10 +53821,11 @@ /mob/living/basic/slime, /turf/open/floor/grass, /area/station/maintenance/floor3/starboard) -"oiJ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) +"oiK" = ( +/obj/structure/table/wood, +/obj/structure/window/spawner/directional/south, +/turf/open/floor/carpet/green, +/area/station/command/heads_quarters/rd) "oiO" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -53791,19 +53841,6 @@ "oiU" = ( /turf/open/floor/carpet/green, /area/station/commons/dorms/apartment2) -"oiY" = ( -/obj/effect/turf_decal/caution/stand_clear/white{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "ojc" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -53843,11 +53880,6 @@ }, /turf/open/floor/iron/dark, /area/station/service/library/lounge) -"ojK" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "ojM" = ( /obj/structure/chair/comfy{ dir = 4 @@ -53856,6 +53888,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/command/teleporter) +"ojP" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/starboard/fore) "ojU" = ( /obj/structure/table/wood, /turf/open/floor/wood, @@ -53891,6 +53928,13 @@ /obj/effect/spawner/random/structure/chair_comfy, /turf/open/floor/pod/light, /area/station/maintenance/floor4/port/fore) +"okA" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/broken/directional/east, +/turf/open/floor/wood/large, +/area/station/maintenance/floor4/starboard/aft) "okH" = ( /obj/effect/spawner/random/trash/garbage{ spawn_scatter_radius = 1 @@ -53898,11 +53942,6 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port) -"okI" = ( -/obj/machinery/firealarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "okJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53967,6 +54006,11 @@ /obj/item/flashlight/lamp/green, /turf/open/floor/carpet/green, /area/station/cargo/miningdock) +"oll" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/fakebasalt, +/area/station/maintenance/floor3/port) "olm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/textured_corner{ @@ -53999,11 +54043,6 @@ /obj/structure/ladder, /turf/open/floor/pod/light, /area/station/maintenance/floor4/starboard/fore) -"olZ" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/structure/sign/poster/contraband/grey_tide/directional/north, -/turf/open/floor/iron/dark/corner, -/area/station/commons/storage/primary) "omh" = ( /obj/machinery/vending/boozeomat/all_access, /turf/open/floor/wood/tile, @@ -54092,14 +54131,6 @@ /obj/structure/sink/directional/west, /turf/open/floor/iron/white, /area/station/science/lobby) -"onc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/small/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) "ong" = ( /obj/machinery/light/directional/west, /obj/structure/sign/poster/random/directional/south, @@ -54127,34 +54158,41 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, /area/station/hallway/secondary/exit) +"onx" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "onC" = ( /obj/machinery/light/dim/directional/east, /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port) -"onE" = ( -/obj/item/paint/anycolor{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/paint/anycolor, -/obj/item/paint/anycolor{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "onI" = ( /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) +"onJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "onM" = ( /obj/structure/cable, /obj/machinery/power/solar, /turf/open/floor/iron/solarpanel/airless, /area/station/solars/starboard/aft) +"onN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/table/reinforced, +/obj/item/storage/box/lights/mixed{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/toolbox/electrical, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "onT" = ( /obj/machinery/door/airlock/science/glass{ name = "Science East" @@ -54208,14 +54246,6 @@ "ooy" = ( /turf/open/floor/iron/chapel, /area/station/service/chapel) -"ooC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/chem_master, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) "ooF" = ( /obj/effect/spawner/random/structure/tank_holder, /obj/effect/turf_decal/trimline/green/warning{ @@ -54230,29 +54260,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) -"ooP" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"ooQ" = ( -/obj/structure/closet/firecloset, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"ooV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/ammo_casing/c38{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) "ooW" = ( /obj/structure/table, /obj/item/key/security, @@ -54262,18 +54269,6 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/warden) -"ooY" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"opd" = ( -/obj/item/stack/sheet/cardboard, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) "opo" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 8 @@ -54316,19 +54311,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard/aft) -"opP" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/structure/rack, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/security/prison) "opR" = ( /obj/structure/table/wood/fancy/red, /obj/item/food/grown/poppy{ @@ -54432,10 +54414,6 @@ }, /turf/open/floor/iron, /area/station/cargo/miningdock) -"oqQ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) "oqW" = ( /obj/machinery/conveyor/inverted{ dir = 9; @@ -54580,14 +54558,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/third) -"oua" = ( -/obj/effect/turf_decal/trimline/blue/end{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/shower/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "oub" = ( /obj/structure/kitchenspike, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, @@ -54606,6 +54576,20 @@ /obj/structure/chair, /turf/open/floor/iron/kitchen/herringbone, /area/station/service/kitchen/diner) +"oum" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/warning{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/dim/directional/west, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "ouE" = ( /obj/machinery/light_switch/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -54698,6 +54682,14 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) +"ovX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard) "ovY" = ( /obj/structure/table/reinforced/rglass, /obj/effect/turf_decal/box/white, @@ -54705,12 +54697,6 @@ /obj/item/reagent_containers/dropper, /turf/open/floor/iron/white, /area/station/medical/virology) -"owb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port) "owf" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/stripes/end{ @@ -54795,11 +54781,6 @@ dir = 1 }, /area/station/security/prison) -"oxz" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) "oxJ" = ( /obj/structure/railing{ dir = 8 @@ -54813,11 +54794,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/port) -"oxO" = ( -/obj/item/storage/toolbox/electrical, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) "oxP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -54875,26 +54851,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port) -"oyN" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 10 - }, -/obj/machinery/airalarm/directional/east, -/obj/structure/closet/emcloset, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"oyO" = ( -/obj/machinery/power/solar_control{ - dir = 1; - id = "starboardsolar"; - name = "Starboard Quarter Solar Control" - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) "oyT" = ( /obj/item/radio/intercom/directional/south, /obj/structure/disposalpipe/segment{ @@ -54941,6 +54897,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/starboard/fore) +"ozo" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/turf/open/floor/circuit/telecomms, +/area/station/tcommsat/server/upper) "ozr" = ( /obj/structure/railing{ dir = 1 @@ -54956,6 +54920,17 @@ "ozt" = ( /turf/open/openspace, /area/station/medical/psychology) +"ozC" = ( +/obj/structure/chair, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/port/aft) +"ozD" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/mining, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "ozE" = ( /obj/item/storage/box/rubbershot{ pixel_x = -3; @@ -54980,6 +54955,14 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"ozH" = ( +/obj/structure/closet/firecloset/full, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor4/port) "ozJ" = ( /obj/structure/disposalpipe/junction/yjunction{ dir = 8 @@ -55029,12 +55012,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"oAv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/plating, -/area/station/medical/abandoned) "oAA" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/white{ @@ -55057,6 +55034,11 @@ }, /turf/open/space/basic, /area/space/nearstation) +"oAP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "oAU" = ( /obj/machinery/light/warm/directional/west, /turf/open/floor/carpet/royalblue, @@ -55115,11 +55097,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/floor1/aft) -"oBL" = ( -/obj/structure/ladder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "oBQ" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Bulkhead" @@ -55186,6 +55163,21 @@ /obj/effect/turf_decal/trimline/yellow/warning, /turf/open/floor/pod/dark, /area/station/cargo/storage) +"oCN" = ( +/obj/effect/turf_decal/trimline/brown/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port/aft) +"oCQ" = ( +/obj/effect/turf_decal/trimline/purple/warning{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard/fore) "oCW" = ( /obj/effect/turf_decal/tile/blue/half, /obj/structure/table/reinforced, @@ -55220,6 +55212,22 @@ /obj/structure/stairs/west, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard) +"oDp" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 8 + }, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) +"oDw" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "oDI" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, @@ -55254,6 +55262,17 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness) +"oDT" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/table/reinforced, +/obj/structure/cable, +/obj/item/phone{ + pixel_x = 6; + pixel_y = -2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port/aft) "oEh" = ( /obj/structure/chair/plastic{ dir = 8 @@ -55341,6 +55360,17 @@ "oFl" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/ce) +"oFn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "oFr" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -55373,23 +55403,11 @@ }, /turf/open/floor/iron/smooth_half, /area/station/tcommsat/server) -"oFL" = ( -/obj/structure/broken_flooring/singular/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) "oFM" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional, /obj/structure/cable, /turf/open/floor/plating, /area/station/security/prison/shower) -"oFN" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/terminal{ - dir = 4 - }, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server/upper) "oFS" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/side{ @@ -55443,6 +55461,12 @@ dir = 8 }, /area/station/command/teleporter) +"oGI" = ( +/obj/effect/decal/cleanable/oil/streak, +/obj/effect/decal/cleanable/dirt, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "oGL" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor/heavy, @@ -55468,13 +55492,6 @@ dir = 1 }, /area/station/hallway/secondary/exit/departure_lounge) -"oHa" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/sign/poster/contraband/got_wood/directional/west, -/turf/open/floor/wood, -/area/station/maintenance/floor1/port/aft) "oHp" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 @@ -55575,12 +55592,6 @@ /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/pod/light, /area/station/maintenance/floor3/port/fore) -"oIo" = ( -/obj/effect/turf_decal/trimline/purple/warning, -/obj/machinery/light/dim/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "oIr" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/east, @@ -55651,14 +55662,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/lockers) -"oJl" = ( -/obj/effect/turf_decal/trimline/green/arrow_ccw{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) "oJo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -55691,6 +55694,13 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hop) +"oJZ" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/item/kirbyplants/random/fullysynthetic, +/turf/open/floor/mineral/silver, +/area/station/service/chapel/funeral) "oKc" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 8 @@ -55793,6 +55803,21 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/showroomfloor, /area/station/command/heads_quarters/qm) +"oLO" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/bed/medical/emergency, +/obj/structure/sign/gym/mirrored/right{ + pixel_y = 32 + }, +/turf/open/floor/iron/dark/textured, +/area/station/commons/fitness) +"oLU" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/recharger, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/west, +/turf/open/floor/mineral/plastitanium/red, +/area/station/maintenance/floor4/starboard/aft) "oMd" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 4 @@ -55800,6 +55825,11 @@ /obj/structure/railing, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"oMk" = ( +/obj/effect/turf_decal/siding/white, +/obj/item/kirbyplants/random/fullysynthetic, +/turf/open/floor/mineral/silver, +/area/station/service/chapel/funeral) "oMn" = ( /obj/item/grenade/barrier{ pixel_x = -3; @@ -55891,13 +55921,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/aft) -"oNn" = ( -/obj/structure/bed/double, -/obj/item/bedsheet/cosmos/double, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) "oNs" = ( /obj/machinery/vending/hydronutrients, /obj/machinery/light/directional/north, @@ -55966,14 +55989,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/security/medical) -"oOr" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "oOA" = ( /obj/machinery/atmospherics/pipe/smart/manifold/dark/visible{ dir = 1 @@ -56054,6 +56069,12 @@ /obj/machinery/door/firedoor/heavy, /turf/open/floor/iron, /area/station/engineering/atmos) +"oPO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard/aft) "oPU" = ( /obj/structure/rack, /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, @@ -56152,6 +56173,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/port/fore) +"oRc" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/west, +/turf/open/floor/grass, +/area/station/hallway/secondary/exit/departure_lounge) "oRh" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 4 @@ -56189,12 +56218,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor3/aft) -"oRB" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) "oRG" = ( /obj/structure/cable/multilayer/multiz, /turf/open/floor/catwalk_floor, @@ -56253,6 +56276,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"oSr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/structure/electrified_grille, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port/aft) "oSt" = ( /turf/closed/wall, /area/station/engineering/lobby) @@ -56277,13 +56306,6 @@ dir = 1 }, /area/station/hallway/floor3/fore) -"oSz" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "oSA" = ( /obj/machinery/holopad, /turf/open/floor/iron/kitchen, @@ -56303,6 +56325,14 @@ /obj/machinery/holopad, /turf/open/floor/iron/white, /area/station/science/cytology) +"oSJ" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_y = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/port/aft) "oSL" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Bulkhead" @@ -56441,18 +56471,17 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) +"oTJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/floor3/starboard/aft) "oTK" = ( /obj/structure/sign/poster/contraband/robust_softdrinks, /turf/closed/wall, /area/station/maintenance/floor3/port/aft) -"oTQ" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/arrows/white{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "oTW" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 @@ -56478,6 +56507,14 @@ /obj/effect/turf_decal/stripes/white/corner, /turf/open/floor/iron/dark/side, /area/station/hallway/floor2/aft) +"oUF" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/machinery/light_switch/directional/east, +/obj/machinery/atm/directional/north, +/turf/open/floor/wood, +/area/station/commons/dorms/apartment2) "oUH" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/brown{ @@ -56506,6 +56543,16 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"oUY" = ( +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth_half, +/area/station/cargo/warehouse) "oUZ" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -56524,6 +56571,11 @@ dir = 8 }, /area/station/hallway/floor1/fore) +"oVh" = ( +/obj/effect/spawner/random/structure/tank_holder, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/fore) "oVj" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 5 @@ -56547,6 +56599,11 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/wood/tile, /area/station/commons/fitness/recreation) +"oWk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "oWt" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/arrow_ccw{ @@ -56577,10 +56634,6 @@ }, /turf/open/floor/wood/parquet, /area/station/service/lawoffice) -"oWM" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) "oWR" = ( /obj/structure/chair/sofa/bench, /turf/open/floor/iron/dark, @@ -56608,17 +56661,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"oXH" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/table/reinforced, -/obj/structure/cable, -/obj/item/phone{ - pixel_x = 6; - pixel_y = -2 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) "oXQ" = ( /obj/effect/turf_decal/tile/yellow, /obj/structure/cable, @@ -56668,6 +56710,12 @@ /obj/machinery/shower/directional/south, /turf/open/floor/catwalk_floor/iron_white, /area/station/cargo/miningoffice) +"oYo" = ( +/obj/structure/chair/office/light, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port/aft) "oYv" = ( /obj/effect/turf_decal/tile/green/anticorner{ dir = 1 @@ -56809,27 +56857,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/fore) -"oZY" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/decoration/material, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "oZZ" = ( /obj/machinery/atmospherics/components/tank/air, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard/aft) -"paA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"paN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "pbd" = ( /obj/machinery/light/cold/directional/south, /turf/open/floor/iron/dark, @@ -56856,12 +56887,6 @@ /obj/machinery/deepfryer, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"pbt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) "pbx" = ( /obj/effect/landmark/start/prisoner, /obj/structure/sign/poster/official/random/directional/west, @@ -56885,6 +56910,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/lobby) +"pbV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/mirror/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/sink/directional/south, +/turf/open/floor/wood/large, +/area/station/maintenance/floor4/starboard/aft) "pcf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -56893,23 +56926,16 @@ }, /turf/open/floor/wood, /area/station/service/kitchen/diner) -"pcg" = ( -/obj/structure/rack, -/obj/item/storage/box/lights/tubes, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"pcq" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/turf_decal/stripes/corner{ +"pct" = ( +/obj/effect/turf_decal/trimline/blue/corner{ dir = 1 }, +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "pcB" = ( /obj/structure/closet/secure_closet/medical2, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -56944,6 +56970,11 @@ "pdh" = ( /turf/closed/wall/r_wall, /area/station/science/server) +"pdn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "pdJ" = ( /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/machinery/door/airlock/hatch{ @@ -57000,6 +57031,10 @@ /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/open/floor/plating, /area/station/engineering/atmos) +"peJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "peN" = ( /obj/structure/table, /obj/effect/turf_decal/tile/purple/opposingcorners, @@ -57007,6 +57042,14 @@ /obj/item/stock_parts/cell/high, /turf/open/floor/iron/white, /area/station/science/circuits) +"peT" = ( +/obj/machinery/door/poddoor/shutters{ + id = "maint-shut"; + name = "Maintenance Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "peU" = ( /obj/machinery/light/cold/no_nightlight/directional/west, /turf/open/floor/grass, @@ -57106,6 +57149,16 @@ }, /turf/open/floor/wood/parquet, /area/station/service/lawoffice) +"pgP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/caution/stand_clear/white{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "pgS" = ( /obj/structure/cable, /turf/open/floor/catwalk_floor, @@ -57130,6 +57183,12 @@ "phd" = ( /turf/open/misc/sandy_dirt, /area/station/maintenance/floor3/starboard) +"phg" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "phm" = ( /obj/structure/closet/firecloset, /obj/effect/decal/cleanable/dirt, @@ -57223,6 +57282,14 @@ }, /turf/open/floor/wood, /area/station/service/theater) +"pis" = ( +/obj/machinery/light/directional/west, +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "piw" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57287,6 +57354,12 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"pjo" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/port/aft) "pjB" = ( /obj/effect/decal/cleanable/blood/old, /obj/structure/chair{ @@ -57302,13 +57375,6 @@ }, /turf/open/floor/pod/light, /area/station/cargo/sorting) -"pjG" = ( -/obj/machinery/netpod, -/obj/structure/railing{ - layer = 3.1 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/drone_bay) "pjM" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -57365,6 +57431,10 @@ /obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/station/service/kitchen/abandoned) +"pkH" = ( +/obj/structure/sign/poster/contraband/lusty_xenomorph/directional/west, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "pkI" = ( /obj/structure/railing{ dir = 6 @@ -57390,6 +57460,10 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/prison/work) +"plb" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/aisat_interior) "pld" = ( /obj/structure/chair/comfy, /turf/open/floor/iron/dark, @@ -57405,6 +57479,12 @@ dir = 1 }, /area/station/security/courtroom) +"plr" = ( +/obj/effect/spawner/random/structure/crate_loot, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "plC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57414,14 +57494,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port/fore) -"plE" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/light/small/blacklight/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "plI" = ( /obj/structure/table, /obj/item/food/pizzaslice/moldy, @@ -57445,11 +57517,6 @@ dir = 1 }, /area/station/security/prison) -"pme" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/head/costume/allies, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "pmk" = ( /obj/structure/chair/office{ dir = 1 @@ -57541,11 +57608,6 @@ }, /turf/open/floor/iron, /area/station/hallway/floor3/aft) -"pnk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/furniture_parts, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "pno" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /obj/effect/turf_decal/tile/red/opposingcorners{ @@ -57560,12 +57622,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/miningdock) -"pnw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/official/random/directional/south, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/security/range) "pnD" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/trimline/purple/filled/corner{ @@ -57599,14 +57655,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/janitor) -"pnO" = ( -/obj/structure/bed/medical/emergency, -/obj/structure/sign/gym/mirrored{ - pixel_y = 32 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) "pnV" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 4; @@ -57630,6 +57678,11 @@ "poE" = ( /turf/open/floor/catwalk_floor, /area/station/hallway/floor3/fore) +"poF" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/grass, +/area/station/science/xenobiology) "poL" = ( /obj/structure/chair/comfy/brown{ dir = 1 @@ -57740,13 +57793,12 @@ dir = 4 }, /area/station/hallway/floor3/aft) -"ppZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"pqb" = ( +/obj/machinery/light/dim/directional/south, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor3/port) +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "pqg" = ( /obj/machinery/button/door/directional/east{ id = "mechbay"; @@ -57797,19 +57849,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/textured_large, /area/station/security/checkpoint/escape) -"pqY" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/gibs/bubblegum, -/obj/effect/decal/cleanable/dirt, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/item/clothing/suit/toggle/labcoat, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) "pre" = ( /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/floor2/fore) @@ -57843,21 +57882,6 @@ /obj/machinery/smartfridge/organ, /turf/closed/wall, /area/station/science/cytology) -"pro" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"prt" = ( -/obj/machinery/door/airlock/mining{ - name = "Warehouse" - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/general, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "prw" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -57870,6 +57894,10 @@ dir = 8 }, /area/station/cargo/lobby) +"prB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/blue, +/area/station/maintenance/floor3/port/aft) "prD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57920,13 +57948,6 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"psc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "pse" = ( /turf/open/floor/iron/dark/side{ dir = 6 @@ -57950,6 +57971,11 @@ dir = 5 }, /area/station/security/checkpoint) +"psn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/maintenance/floor3/port/aft) "pso" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -57965,14 +57991,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_white, /area/station/science/cytology) -"psx" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/sign/poster/contraband/moffuchis_pizza/directional/north, -/turf/open/floor/wood, -/area/station/maintenance/floor1/port/aft) "psJ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -58050,6 +58068,14 @@ /obj/effect/turf_decal/tile/red, /turf/open/floor/iron/dark, /area/station/security/lockers) +"puh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/aft) "pui" = ( /turf/open/floor/iron, /area/station/engineering/atmos/project) @@ -58098,6 +58124,19 @@ /obj/machinery/vending/cigarette, /turf/open/floor/iron, /area/station/hallway/floor3/aft) +"puK" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/security/prison) "puM" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -58125,15 +58164,10 @@ /obj/item/hand_labeler, /turf/open/floor/wood/large, /area/station/service/kitchen/kitchen_backroom) -"pvm" = ( +"pvn" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced/rglass, -/obj/item/reagent_containers/pill/iron{ - desc = "What could it be?"; - name = "blue pill" - }, -/turf/open/floor/carpet/blue, -/area/station/maintenance/floor3/port/aft) +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) "pvs" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/plating, @@ -58180,25 +58214,21 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/office) +"pvX" = ( +/obj/structure/table/reinforced, +/obj/structure/barricade/wooden{ + name = "wooden barricade (KEEP OUT)" + }, +/obj/structure/window/reinforced/tinted/spawner/directional/south, +/obj/structure/window/reinforced/tinted/spawner/directional/north, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/station/medical/chemistry) "pvZ" = ( /obj/structure/chair/sofa/bench/left, /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/floor/grass, /area/station/service/library/garden) -"pwA" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"pwC" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/red, -/area/station/maintenance/floor3/port/aft) "pwL" = ( /obj/effect/turf_decal/siding/blue{ dir = 4 @@ -58294,12 +58324,6 @@ /obj/effect/decal/cleanable/vomit/old, /turf/open/floor/iron/white/small, /area/station/commons/fitness/recreation) -"pxK" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) "pxQ" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, @@ -58417,6 +58441,10 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) +"pzl" = ( +/obj/structure/sign/poster/contraband/moffuchis_pizza/directional/east, +/turf/open/floor/carpet/royalblue, +/area/station/medical/break_room) "pzu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/morgue{ @@ -58438,18 +58466,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/floor2/port) +"pzy" = ( +/obj/machinery/status_display/evac/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/purple, +/area/station/maintenance/floor1/port/aft) "pzE" = ( /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/plating, /area/station/construction) -"pzH" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "pzK" = ( /obj/structure/chair/wood{ dir = 1 @@ -58488,6 +58513,12 @@ /obj/item/stack/sheet/iron, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/aft) +"pAg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, +/obj/effect/turf_decal/stripes, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/aft) "pAn" = ( /obj/effect/mapping_helpers/airlock/access/any/medical/general, /obj/machinery/door/airlock/medical{ @@ -58524,6 +58555,13 @@ /obj/machinery/meter, /turf/closed/wall/r_wall, /area/station/engineering/atmos) +"pAW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "pAY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -58628,12 +58666,6 @@ /obj/effect/turf_decal/trimline/white/warning, /turf/open/floor/iron/dark, /area/station/hallway/floor1/aft) -"pCH" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "pCS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{ @@ -58651,11 +58683,6 @@ /obj/effect/turf_decal/trimline/green/filled/line, /turf/open/floor/iron/dark, /area/station/medical/virology) -"pCW" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "pDd" = ( /obj/structure/table/reinforced/plasmarglass, /obj/item/reagent_containers/pill/epinephrine{ @@ -58669,6 +58696,16 @@ /obj/structure/cable, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"pDn" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/commons/storage/primary) "pDq" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -58742,13 +58779,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"pEs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) "pEv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -58767,6 +58797,17 @@ /obj/structure/cable, /turf/open/floor/wood/large, /area/station/command/heads_quarters/hop) +"pEy" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/item/camera, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port) "pEA" = ( /obj/machinery/door/airlock/medical{ name = "Patient Containment" @@ -58810,24 +58851,6 @@ /obj/structure/emergency_shield/regenerating, /turf/open/floor/plating, /area/station/cargo/drone_bay) -"pFi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"pFu" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/turf/open/floor/iron/large, -/area/station/command/gateway) "pFA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -58836,11 +58859,19 @@ /obj/machinery/duct, /turf/open/floor/iron/checker, /area/station/service/bar/atrium) -"pFI" = ( +"pFB" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, /obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/trashcart, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) +/area/station/maintenance/floor4/port/fore) "pGb" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 @@ -58866,12 +58897,6 @@ /obj/machinery/duct, /turf/open/floor/wood/large, /area/station/service/kitchen/diner) -"pGr" = ( -/obj/structure/rack, -/obj/item/storage/box/lights/mixed, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "pGy" = ( /obj/machinery/door/airlock/security/glass{ name = "Briefing Room" @@ -58933,6 +58958,10 @@ dir = 8 }, /area/station/hallway/floor3/fore) +"pHs" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/engineering/lobby) "pHu" = ( /obj/machinery/smartfridge/chemistry/virology/preloaded, /obj/effect/turf_decal/tile/green/opposingcorners, @@ -59062,42 +59091,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/textured_large, /area/station/cargo/storage) -"pJj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/window/brigdoor/right/directional/west{ - name = "Shooting Range" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/range) -"pJq" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"pJs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"pJu" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/cobweb, -/obj/item/trash/ready_donk, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "pJv" = ( /obj/machinery/atmospherics/components/unary/portables_connector{ dir = 4 @@ -59166,19 +59159,27 @@ }, /turf/open/floor/grass, /area/station/service/library/garden) +"pKm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "pKp" = ( /obj/machinery/light/directional/east, /turf/open/floor/iron/dark/side{ dir = 4 }, /area/station/hallway/floor1/aft) -"pKD" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, +"pKv" = ( +/obj/structure/rack, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) +/turf/open/floor/wood, +/area/station/maintenance/floor3/starboard/aft) "pKE" = ( /obj/machinery/chem_master/condimaster{ name = "CondiMaster Neo" @@ -59204,6 +59205,13 @@ /obj/machinery/shower/directional/west, /turf/open/floor/iron/freezer, /area/station/hallway/secondary/service) +"pLz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "pLK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/plating, @@ -59220,6 +59228,13 @@ /obj/structure/reagent_dispensers/plumbed, /turf/open/floor/wood/large, /area/station/service/kitchen/kitchen_backroom) +"pLZ" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/turf/open/floor/grass, +/area/station/hallway/secondary/exit/departure_lounge) "pMa" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -59273,10 +59288,6 @@ dir = 1 }, /area/station/security/prison) -"pME" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/turf/open/openspace, -/area/station/maintenance/floor3/port) "pMI" = ( /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron, @@ -59298,13 +59309,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor2/fore) -"pMZ" = ( -/obj/structure/table/wood, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/east, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) "pNa" = ( /obj/structure/chair/office/light{ dir = 4 @@ -59328,6 +59332,12 @@ "pNj" = ( /turf/open/floor/carpet/red, /area/station/service/library) +"pNr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "pNA" = ( /obj/structure/rack, /obj/machinery/light/cold/no_nightlight/directional/north, @@ -59431,15 +59441,6 @@ /obj/item/clothing/suit/apron/overalls, /turf/open/floor/iron, /area/station/maintenance/floor2/starboard/aft) -"pOL" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/structure/window/reinforced/plasma/spawner/directional/west, -/obj/machinery/power/shuttle_engine/heater{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) "pOP" = ( /obj/effect/turf_decal/tile/red/half{ dir = 1 @@ -59545,11 +59546,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) -"pPG" = ( -/obj/effect/spawner/random/engineering/tank, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "pPL" = ( /obj/machinery/door/window/brigdoor/security/cell/left/directional/south{ id = "cell-2"; @@ -59561,11 +59557,6 @@ /obj/effect/decal/cleanable/oil/streak, /turf/open/floor/iron/smooth, /area/station/construction) -"pPY" = ( -/obj/machinery/light/dim/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "pQk" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -59619,6 +59610,11 @@ /obj/structure/lattice/catwalk, /turf/open/space/openspace, /area/space/nearstation) +"pRv" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, +/turf/open/openspace, +/area/station/maintenance/floor2/port) "pRD" = ( /obj/machinery/shower/directional/north, /obj/effect/turf_decal/trimline/green/end{ @@ -59642,15 +59638,6 @@ /obj/item/knife/shiv, /turf/open/floor/plating, /area/station/maintenance/floor1/port/aft) -"pRO" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "pRQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -59694,6 +59681,14 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/glass/reinforced, /area/station/service/library) +"pSg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "pSl" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59706,6 +59701,11 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"pSB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/dim/directional/east, +/turf/open/floor/iron/dark, +/area/station/maintenance/floor2/starboard/aft) "pSE" = ( /obj/effect/turf_decal/trimline/yellow/corner, /turf/open/floor/iron/dark/side{ @@ -59865,6 +59865,13 @@ "pUV" = ( /turf/open/floor/plating/airless, /area/station/solars/port/aft) +"pVa" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/cobweb, +/obj/item/trash/ready_donk, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "pVi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59905,11 +59912,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/first) -"pVZ" = ( -/obj/effect/turf_decal/trimline/yellow/line, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/half, -/area/station/engineering/lobby) "pWf" = ( /obj/effect/turf_decal/bot, /obj/structure/reagent_dispensers/watertank/high, @@ -59967,13 +59969,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/pod/light, /area/station/maintenance/floor3/starboard) -"pXh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) "pXi" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/light/directional/north, @@ -60043,6 +60038,13 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/carpet/blue, /area/station/command/heads_quarters/hop) +"pYs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/drone_bay) "pYw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -60176,27 +60178,6 @@ }, /turf/open/floor/iron, /area/station/security/prison) -"pZF" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/sign/poster/official/report_crimes/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"pZL" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3; - spawn_scatter_radius = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) "pZU" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -60336,6 +60317,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/aft) +"qbx" = ( +/obj/effect/turf_decal/tile/green/full, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/hallway/secondary/exit/escape_pod) "qbz" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -60373,6 +60362,11 @@ /obj/structure/cable, /turf/open/floor/plating/airless, /area/space/nearstation) +"qcv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "qcD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/oil, @@ -60423,11 +60417,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"qcZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) "qdc" = ( /obj/machinery/door/airlock/science/glass{ name = "Research and Development" @@ -60473,11 +60462,6 @@ }, /turf/open/floor/iron, /area/station/hallway/floor1/aft) -"qdO" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) "qdV" = ( /turf/open/floor/plating/airless, /area/station/solars/starboard/fore) @@ -60509,10 +60493,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor3/aft) -"qeb" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/aft) "qef" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, /obj/effect/turf_decal/stripes/end{ @@ -60573,17 +60553,16 @@ }, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"qeO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "qeW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningdock) -"qeX" = ( -/obj/structure/ladder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) "qeY" = ( /obj/machinery/door/airlock/wood{ id_tag = "library-private"; @@ -60601,12 +60580,6 @@ }, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) -"qfn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/medical/abandoned) "qfr" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -60621,13 +60594,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/eva) -"qfE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 9 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) "qfG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -60654,10 +60620,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/brig) -"qfT" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/light/colour_cycle/dancefloor_b, -/area/station/medical/abandoned) "qgb" = ( /obj/structure/table/wood, /obj/item/folder/red, @@ -60674,17 +60636,16 @@ }, /turf/open/floor/wood/large, /area/station/service/library/artgallery) +"qgn" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, +/turf/open/openspace, +/area/station/maintenance/floor2/port) "qgr" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 4 }, /turf/open/floor/pod/dark, /area/station/cargo/storage) -"qgw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/toy/nuke, -/turf/open/floor/pod/light, -/area/station/security/execution/education) "qgy" = ( /obj/structure/railing/corner, /obj/effect/turf_decal/trimline/purple/warning, @@ -60768,6 +60729,14 @@ /obj/structure/flora/bush/lavendergrass/style_random, /turf/open/floor/grass, /area/station/security/courtroom) +"qhu" = ( +/obj/machinery/chem_master, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "qhE" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -60860,6 +60829,16 @@ /obj/effect/decal/cleanable/greenglow, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/aft) +"qjz" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "qjK" = ( /obj/machinery/camera/autoname/directional/west, /obj/structure/sign/departments/restroom/directional/west, @@ -61002,6 +60981,12 @@ /obj/effect/turf_decal/tile/green/opposingcorners, /turf/open/floor/iron/white, /area/station/hallway/floor2/aft) +"qls" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/starboard/aft) "qlt" = ( /obj/effect/turf_decal/trimline/red/warning{ dir = 8 @@ -61019,6 +61004,14 @@ }, /turf/open/floor/iron, /area/station/cargo/miningdock) +"qlP" = ( +/obj/machinery/netpod, +/obj/machinery/airalarm/directional/east, +/obj/machinery/airalarm/directional/east, +/obj/machinery/airalarm/directional/east, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/cargo/drone_bay) "qlX" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -61080,6 +61073,12 @@ /obj/structure/closet/emcloset, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard/aft) +"qmx" = ( +/obj/item/rack_parts, +/obj/item/weldingtool/mini, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "qmB" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/curtain/cloth, @@ -61123,6 +61122,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/floor4/starboard/aft) +"qni" = ( +/obj/machinery/light/directional/south, +/obj/item/trash/champagne_cork{ + pixel_x = 8; + pixel_y = 5 + }, +/obj/item/trash/energybar, +/obj/item/stack/cannonball/trashball{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/trash/cheesie, +/obj/effect/decal/cleanable/garbage, +/obj/effect/decal/cleanable/food/plant_smudge, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "qnq" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 8 @@ -61155,15 +61171,6 @@ /obj/effect/turf_decal/tile/yellow/half/contrasted, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"qnI" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/old, -/obj/item/stack/sheet/iron/five, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) "qnN" = ( /obj/machinery/chem_heater/withbuffer, /turf/open/floor/circuit, @@ -61219,17 +61226,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/side, /area/station/commons/storage/primary) -"qoG" = ( -/obj/machinery/field/generator, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) "qoI" = ( /obj/structure/chair/wood{ dir = 4 @@ -61237,6 +61233,11 @@ /obj/machinery/keycard_auth/directional/north, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) +"qoT" = ( +/obj/machinery/biogenerator, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard) "qoV" = ( /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 4 @@ -61317,13 +61318,13 @@ /mob/living/basic/butterfly, /turf/open/floor/grass, /area/station/hallway/secondary/entry) -"qqj" = ( +"qpR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/flashlight, -/obj/structure/rack, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard) "qqp" = ( /obj/structure/toilet/greyscale{ dir = 4 @@ -61335,20 +61336,10 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/medical/storage) -"qqu" = ( -/obj/machinery/light/broken/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/fore) "qqv" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/hallway/floor3/fore) -"qqC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "qqE" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -61403,6 +61394,18 @@ dir = 1 }, /area/station/security/prison) +"qrC" = ( +/obj/structure/table, +/obj/item/clothing/head/soft/grey, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/starboard/fore) +"qrH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "qrK" = ( /obj/effect/turf_decal/trimline/blue/warning, /obj/machinery/camera/autoname/directional/east, @@ -61423,6 +61426,34 @@ dir = 8 }, /area/station/service/chapel) +"qrZ" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/sign/poster/official/report_crimes/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/security/detectives_office) +"qsc" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/item/cigbutt/cigarbutt{ + pixel_x = 7 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/iron/dark/smooth_half, +/area/station/cargo/drone_bay) "qse" = ( /obj/structure/closet/secure_closet/personal, /turf/open/floor/iron/dark, @@ -61485,19 +61516,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/textured_large, /area/station/security/checkpoint/escape) -"qsL" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "qsN" = ( /obj/effect/turf_decal/bot, /obj/structure/rack, @@ -61516,15 +61534,6 @@ /obj/machinery/status_display/ai/directional/east, /turf/open/floor/iron/dark/corner, /area/station/command/teleporter) -"qsR" = ( -/obj/effect/turf_decal/tile/blue/full, -/obj/machinery/power/floodlight, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/abandoned) "qsS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -61559,12 +61568,17 @@ /obj/machinery/duct, /turf/open/floor/iron/chapel, /area/station/service/chapel) -"qtj" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/spawner/random/structure/crate_abandoned, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) +"qtl" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 9 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/large, +/area/station/command/gateway) "qtm" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/trimline/purple/warning{ @@ -61572,16 +61586,6 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/port) -"qtz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "qtA" = ( /obj/structure/chair{ dir = 4 @@ -61634,15 +61638,6 @@ dir = 1 }, /area/station/hallway/floor3/fore) -"qtY" = ( -/obj/structure/cable, -/obj/machinery/power/smes/engineering{ - input_level = 60000; - output_level = 60000 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth_large, -/area/station/maintenance/floor2/starboard) "qun" = ( /turf/closed/wall/r_wall, /area/station/science/genetics) @@ -61763,6 +61758,10 @@ /obj/structure/cable, /turf/open/floor/carpet/royalblue, /area/station/commons/dorms/room4) +"qwd" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/circuit/telecomms, +/area/station/tcommsat/server/upper) "qwg" = ( /obj/structure/chair/comfy/brown{ dir = 1 @@ -61920,11 +61919,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/wood/tile, /area/station/science/xenobiology/hallway) -"qxQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "qxT" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 1 @@ -61990,6 +61984,16 @@ /obj/structure/disposalpipe/junction/flip, /turf/open/floor/iron, /area/station/hallway/floor4/fore) +"qyw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 5 + }, +/obj/structure/disposalpipe/trunk/multiz{ + dir = 8 + }, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "qyx" = ( /turf/open/floor/engine, /area/station/science/explab) @@ -62058,35 +62062,17 @@ /obj/structure/closet/emcloset, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/port/aft) -"qzc" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock{ - name = "Escape Pod B" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/escape_pod) "qzg" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 }, /turf/open/floor/plating, /area/station/construction) -"qzk" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/turf/open/openspace, -/area/station/maintenance/floor4/port/aft) -"qzm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"qzj" = ( +/obj/structure/flora/rock, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/smooth_corner, -/area/station/cargo/miningdock) +/turf/open/floor/fakebasalt, +/area/station/maintenance/floor3/port) "qzx" = ( /obj/structure/bookcase/random/fiction, /turf/open/floor/carpet/royalblack, @@ -62101,6 +62087,10 @@ /obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/port/aft) +"qzF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "qzH" = ( /obj/structure/railing, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -62160,10 +62150,6 @@ /obj/effect/turf_decal/trimline/red/corner, /turf/open/floor/pod/dark, /area/station/hallway/secondary/entry) -"qAn" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) "qAq" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -62184,15 +62170,6 @@ }, /turf/open/floor/iron/white, /area/station/hallway/floor2/fore) -"qAw" = ( -/obj/structure/closet/firecloset, -/obj/effect/turf_decal/trimline/red/line{ - dir = 10 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "qAx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, @@ -62415,14 +62392,6 @@ dir = 9 }, /area/station/hallway/floor4/aft) -"qCM" = ( -/obj/structure/table, -/obj/item/storage/pill_bottle/lsd{ - pixel_x = 5 - }, -/obj/structure/sign/poster/contraband/red_rum/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "qCO" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/tile/red/opposingcorners{ @@ -62592,6 +62561,10 @@ /obj/structure/table, /turf/open/floor/catwalk_floor/iron, /area/station/cargo/storage) +"qEj" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, +/turf/open/openspace, +/area/station/maintenance/floor3/port) "qEt" = ( /obj/structure/railing{ dir = 8 @@ -62620,6 +62593,14 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor3/aft) +"qEC" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ + dir = 10 + }, +/obj/machinery/airalarm/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) "qEE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -62710,15 +62691,6 @@ name = "bathroom tiles" }, /area/station/security/lockers) -"qFM" = ( -/obj/effect/spawner/random/structure/grille, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "qFO" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Access" @@ -62804,6 +62776,16 @@ /obj/item/multitool, /turf/open/floor/iron/dark, /area/station/command/bridge) +"qGG" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, +/turf/open/openspace, +/area/station/maintenance/floor3/port) +"qGT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/hallway/secondary/exit/escape_pod) "qGV" = ( /obj/structure/railing, /obj/effect/turf_decal/trimline/blue/line, @@ -63046,12 +63028,6 @@ /obj/structure/spider/stickyweb, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard) -"qKG" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/mod/maint, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) "qKR" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -63059,16 +63035,18 @@ /obj/machinery/door/firedoor, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/starboard) +"qKU" = ( +/obj/effect/turf_decal/stripes{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/starboard/fore) "qLg" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/item/radio/intercom/directional/south, /turf/open/floor/grass, /area/station/service/hydroponics/garden/abandoned) -"qLo" = ( -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/fore) "qLH" = ( /obj/machinery/fax{ fax_name = "Head of Personnel's Office"; @@ -63100,6 +63078,14 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor3/port) +"qLQ" = ( +/obj/machinery/airalarm/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/port/aft) "qLS" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -63115,6 +63101,12 @@ /obj/structure/ladder, /turf/open/floor/catwalk_floor, /area/station/hallway/floor2/fore) +"qMg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/up, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor4/starboard) "qMu" = ( /obj/structure/cable, /obj/effect/spawner/random/engineering/tracking_beacon, @@ -63125,11 +63117,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, /turf/open/floor/plating, /area/station/hallway/floor1/aft) -"qMB" = ( -/obj/structure/window/plasma/spawner/directional/south, -/obj/machinery/rnd/server, -/turf/open/floor/circuit/telecomms, -/area/station/science/server) "qMT" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63167,6 +63154,11 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) +"qNp" = ( +/obj/effect/spawner/random/trash/graffiti, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/port/aft) "qNu" = ( /obj/structure/displaycase/trophy, /turf/open/floor/carpet/royalblack, @@ -63228,10 +63220,6 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard/fore) -"qOh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/fore) "qOq" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 @@ -63278,12 +63266,6 @@ dir = 1 }, /area/station/security/brig) -"qON" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) "qOQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -63318,6 +63300,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor4/starboard/aft) +"qOZ" = ( +/obj/structure/window/reinforced/tinted/spawner/directional/east, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/iron/dark/smooth_large, +/area/station/service/library/printer) "qPb" = ( /obj/machinery/light/directional/south, /obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, @@ -63455,20 +63442,6 @@ }, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"qQi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/glass, -/obj/item/bonesetter, -/obj/effect/spawner/random/medical/surgery_tool, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"qQr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/secondary/exit/escape_pod) "qQs" = ( /obj/machinery/light/directional/east, /obj/effect/mapping_helpers/broken_floor, @@ -63587,10 +63560,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/side, /area/station/hallway/floor4/fore) -"qRS" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server/upper) "qRW" = ( /obj/structure/disposalpipe/junction{ dir = 8 @@ -63641,6 +63610,20 @@ /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron/checker, /area/station/commons/vacant_room/commissary) +"qSL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 9 + }, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8 + }, +/obj/effect/mapping_helpers/mail_sorting/engineering/general, +/obj/effect/mapping_helpers/mail_sorting/engineering/ce_office, +/obj/effect/mapping_helpers/mail_sorting/engineering/atmospherics, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "qSW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63672,6 +63655,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) +"qTy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "qTA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63692,18 +63680,16 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/hallway/floor1/aft) -"qTH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "qTI" = ( /obj/structure/table/wood, /obj/item/paper_bin, /turf/open/floor/wood/parquet, /area/station/commons/dorms/room2) +"qTJ" = ( +/obj/machinery/field/generator, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/engineering/lobby) "qTK" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63789,15 +63775,6 @@ }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"qVe" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "qVf" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -63815,6 +63792,11 @@ /obj/effect/mapping_helpers/airlock/access/any/science/robotics, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/hallway) +"qVs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset/full, +/turf/open/floor/iron/dark/textured_large, +/area/station/hallway/secondary/exit/escape_pod) "qVv" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -63878,11 +63860,6 @@ dir = 9 }, /area/station/ai_monitored/turret_protected/ai) -"qWm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/space_heater, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "qWn" = ( /obj/structure/railing/corner{ dir = 8 @@ -63903,11 +63880,6 @@ /obj/effect/spawner/random/structure/table_or_rack, /turf/open/floor/pod/light, /area/station/maintenance/floor3/starboard) -"qWJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/warehouse) "qWN" = ( /obj/structure/lattice, /turf/open/openspace, @@ -64041,6 +64013,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"qYj" = ( +/obj/structure/ladder, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port/aft) "qYq" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -64075,6 +64052,14 @@ dir = 6 }, /area/station/hallway/floor1/aft) +"qZg" = ( +/obj/item/stack/tile/wood, +/obj/effect/decal/cleanable/dirt, +/obj/item/ammo_casing/c38{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "qZh" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -64090,13 +64075,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark/textured, /area/station/science/ordnance/storage) -"qZq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "qZF" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, @@ -64141,10 +64119,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/lawoffice) -"rao" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "raq" = ( /turf/open/floor/wood, /area/station/hallway/floor4/fore) @@ -64173,6 +64147,13 @@ name = "lab floor" }, /area/station/science/robotics/lab) +"raA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/engineering/flashlight, +/obj/structure/rack, +/obj/machinery/light/dim/directional/west, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "raC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -64210,6 +64191,13 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/port) +"rba" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 6 + }, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "rbg" = ( /obj/structure/railing/corner{ dir = 8 @@ -64328,16 +64316,11 @@ /obj/effect/spawner/random/trash/cigbutt, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/aft) -"rcu" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, +"rcD" = ( +/obj/item/storage/toolbox/electrical, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) +/turf/open/floor/plating, +/area/station/maintenance/floor1/port) "rcO" = ( /turf/open/floor/plating/airless, /area/space/nearstation) @@ -64366,27 +64349,12 @@ }, /turf/open/floor/glass/reinforced, /area/station/service/library) -"rdu" = ( -/obj/structure/table/bronze, -/obj/item/storage/book/bible, -/turf/open/floor/iron, -/area/station/service/chapel) "rdx" = ( /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible{ dir = 4 }, /turf/open/floor/iron, /area/station/engineering/atmos) -"rdC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "rdF" = ( /obj/machinery/door/airlock/medical{ frequency = 1450; @@ -64518,14 +64486,6 @@ dir = 1 }, /area/station/hallway/floor2/aft) -"reD" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/floor/plating, -/area/station/medical/abandoned) "reK" = ( /obj/machinery/light/directional/east, /obj/structure/window/spawner/directional/south, @@ -64553,13 +64513,6 @@ name = "lab floor" }, /area/station/science/genetics) -"rfo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "rfx" = ( /turf/open/floor/light/colour_cycle/dancefloor_b, /area/station/medical/abandoned) @@ -64578,31 +64531,17 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/white, /area/station/medical/psychology) -"rfD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door/directional/east{ - id = "maint-shut"; - name = "Shutters Control" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"rfI" = ( -/obj/structure/closet/emcloset, +"rfN" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"rfM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/oil/streak, +/obj/effect/turf_decal/stripes, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/aft) +"rfP" = ( +/obj/effect/turf_decal/stripes, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "rfR" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -64715,12 +64654,6 @@ /obj/structure/closet/secure_closet/bar, /turf/open/floor/iron/checker, /area/station/service/bar) -"rhs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/landmark/start/cargo_technician, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "rhu" = ( /obj/machinery/light/directional/east, /obj/structure/flora/bush/flowers_yw/style_random, @@ -64762,12 +64695,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor4/port/fore) -"rhN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/contraband/permabrig_weapon, -/obj/machinery/light/small/blacklight/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "rhR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -64797,17 +64724,16 @@ /obj/effect/decal/cleanable/robot_debris, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard/aft) +"rii" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard/fore) "rim" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningdock) -"rio" = ( -/obj/structure/marker_beacon/burgundy, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "rip" = ( /obj/effect/turf_decal/tile/blue/full, /obj/structure/closet/crate/freezer/blood, @@ -64908,17 +64834,17 @@ "rjD" = ( /turf/closed/wall, /area/station/hallway/floor1/aft) -"rkc" = ( -/obj/structure/table/wood, -/obj/item/plate/large{ - pixel_y = 2 - }, -/obj/item/food/pizza/dank{ - pixel_y = 6 - }, -/obj/structure/sign/poster/contraband/pwr_game/directional/east, -/turf/open/floor/carpet/purple, -/area/station/maintenance/floor1/port/aft) +"rjH" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/starboard) +"rjJ" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/port/aft) "rkd" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -65023,18 +64949,6 @@ dir = 1 }, /area/station/hallway/floor4/aft) -"rmT" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) "rnd" = ( /obj/effect/turf_decal/trimline/white/warning{ dir = 1 @@ -65044,18 +64958,14 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/secondary/entry) -"rne" = ( -/obj/structure/falsewall, +"rnj" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, /turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"rnl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) +/area/station/medical/abandoned) "rns" = ( /obj/structure/railing{ dir = 1 @@ -65139,14 +65049,6 @@ "roo" = ( /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/floor3/aft) -"rou" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/turf/open/openspace, -/area/station/maintenance/floor2/port) -"rov" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/wall/r_wall, -/area/station/maintenance/floor4/starboard) "roy" = ( /obj/item/toy/plush/beeplushie{ desc = "Maybe hugging this will make you feel better about yourself."; @@ -65329,6 +65231,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port) +"rrb" = ( +/obj/item/stack/tile/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "rrk" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/trimline/green/warning{ @@ -65407,14 +65314,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/station/commons/dorms/apartment1) -"rsz" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) "rsH" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -65503,11 +65402,6 @@ }, /turf/open/floor/iron, /area/station/science/research/abandoned) -"rtH" = ( -/obj/machinery/vending/boozeomat/all_access, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) "rtL" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -65550,6 +65444,11 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"rum" = ( +/obj/structure/closet/firecloset/full, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port) "ruo" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 @@ -65559,12 +65458,30 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/service/hydroponics) -"ruE" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/sign/poster/contraband/have_a_puff/directional/north, -/obj/machinery/vending/snack/blue, -/turf/open/floor/iron/white, -/area/station/medical/break_room) +"rux" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/structure/electrified_grille, +/turf/open/floor/plating, +/area/station/maintenance/floor2/starboard/aft) +"ruD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/plumbed, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) +"ruM" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/item/folder/yellow, +/obj/item/wrench, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "ruQ" = ( /obj/effect/turf_decal/tile/blue/anticorner{ dir = 1 @@ -65607,6 +65524,29 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard/aft) +"rvi" = ( +/obj/machinery/light/dim/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor4/port) +"rvL" = ( +/obj/structure/window/reinforced/tinted/spawner/directional/south, +/obj/structure/mirror/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/sink/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/dorms/apartment2) +"rvV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/green/warning{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard/aft) "rvZ" = ( /obj/effect/turf_decal/trimline/blue/corner{ dir = 8 @@ -65681,6 +65621,16 @@ dir = 1 }, /area/station/cargo/drone_bay) +"rwx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/crayon{ + icon_state = "body" + }, +/obj/effect/decal/cleanable/chem_pile, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "rwG" = ( /obj/effect/turf_decal/trimline/purple/line, /obj/machinery/airalarm/directional/north, @@ -65698,6 +65648,14 @@ /obj/structure/cable, /turf/open/floor/iron/white/small, /area/station/commons/fitness/recreation) +"rwO" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 10 + }, +/obj/machinery/airalarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "rwP" = ( /obj/effect/turf_decal/siding/white/corner{ dir = 1 @@ -65742,6 +65700,24 @@ "rxn" = ( /turf/open/floor/iron, /area/station/hallway/floor1/aft) +"rxu" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) +"rxy" = ( +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "rxz" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -65821,6 +65797,13 @@ /obj/machinery/flasher/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/floor4/fore) +"ryK" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "rza" = ( /obj/effect/turf_decal/trimline/brown/warning{ dir = 9 @@ -65853,14 +65836,11 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, /area/station/command/bridge) -"rzA" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4 - }, -/obj/effect/turf_decal/box, +"rzG" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "rzI" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/structure/chair/stool/bar/directional/east, @@ -65870,6 +65850,15 @@ "rzK" = ( /turf/open/floor/iron/dark/side, /area/station/hallway/secondary/exit) +"rzV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth_corner{ + dir = 4 + }, +/area/station/maintenance/floor2/starboard) "rzW" = ( /obj/effect/turf_decal/siding/white{ dir = 6 @@ -65901,6 +65890,14 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/wood, /area/station/command/meeting_room) +"rAf" = ( +/obj/effect/turf_decal/trimline/blue/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "rAv" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 10 @@ -65908,6 +65905,14 @@ /obj/structure/closet/firecloset/full, /turf/open/floor/iron, /area/station/hallway/floor1/aft) +"rAx" = ( +/obj/machinery/iv_drip, +/obj/structure/mirror/directional/south, +/obj/structure/sign/poster/official/cleanliness/directional/east, +/obj/machinery/camera/autoname/directional/east, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/iron/dark, +/area/station/medical/surgery/fore) "rAy" = ( /turf/open/floor/pod/light, /area/station/maintenance/floor4/starboard) @@ -66049,14 +66054,6 @@ dir = 4 }, /area/station/security/prison/garden) -"rCK" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "rCN" = ( /obj/machinery/atmospherics/components/trinary/filter/flipped/layer2{ dir = 4 @@ -66100,6 +66097,12 @@ /obj/effect/turf_decal/tile/green/opposingcorners, /turf/open/floor/iron/white, /area/station/hallway/floor2/aft) +"rCY" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) "rDh" = ( /obj/machinery/camera/autoname/directional/west, /obj/item/radio/intercom/directional/west, @@ -66215,6 +66218,18 @@ dir = 1 }, /area/station/hallway/floor1/fore) +"rEz" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/purple, +/area/station/maintenance/floor1/port/aft) +"rEI" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "rES" = ( /obj/effect/turf_decal/trimline/blue/warning{ dir = 1 @@ -66228,16 +66243,16 @@ /obj/machinery/door/firedoor/heavy, /turf/open/floor/iron/dark, /area/station/hallway/floor4/fore) -"rFg" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) "rFC" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/iron, /area/station/engineering/atmos/project) +"rFT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/aft) "rGb" = ( /obj/machinery/camera/directional/south{ c_tag = "Security- Central" @@ -66272,20 +66287,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/smooth, /area/station/hallway/floor3/fore) -"rGC" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Front Desk" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/medical/abandoned) "rGF" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/broken/directional/north, @@ -66314,6 +66315,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/smooth_large, /area/station/service/kitchen/abandoned) +"rGV" = ( +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "rGZ" = ( /obj/structure/table, /obj/effect/turf_decal/tile/red, @@ -66349,14 +66356,6 @@ /obj/machinery/vending/wardrobe/atmos_wardrobe, /turf/open/floor/iron, /area/station/engineering/atmos) -"rHA" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "rHH" = ( /obj/item/bedsheet/double, /obj/structure/bed/double, @@ -66425,10 +66424,6 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron/dark/side, /area/station/hallway/secondary/entry) -"rIt" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) "rIK" = ( /obj/effect/spawner/random/vending/colavend, /turf/open/floor/iron/dark, @@ -66443,22 +66438,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/floor4/port/fore) -"rIY" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) "rJd" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -66482,15 +66461,6 @@ /obj/machinery/light/cold/no_nightlight/directional/west, /turf/open/floor/iron/dark, /area/station/science/breakroom) -"rJr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/maintenance/floor2/starboard) "rJy" = ( /turf/open/floor/pod, /area/station/cargo/miningdock) @@ -66571,14 +66541,6 @@ }, /turf/open/floor/plating, /area/station/security/eva) -"rKG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/flashlight/flare, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "rKJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66677,6 +66639,12 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor1/port) +"rLY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/starboard/aft) "rMl" = ( /obj/structure/chair/sofa/bench{ dir = 4 @@ -66741,6 +66709,12 @@ /obj/machinery/status_display/ai/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/floor2/fore) +"rNl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/random/directional/south, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/station/security/range) "rNm" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -66781,11 +66755,14 @@ /obj/effect/landmark/start/head_of_personnel, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) -"rNL" = ( +"rNy" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/door/window/left/directional/south{ + name = "Storage" + }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/dim/directional/north, /turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) +/area/station/maintenance/floor4/starboard/aft) "rNN" = ( /obj/effect/mapping_helpers/airlock/access/all/command/captain, /obj/machinery/door/firedoor, @@ -66920,13 +66897,6 @@ /obj/item/shard, /turf/open/floor/engine, /area/station/maintenance/floor1/port/aft) -"rQf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) "rQh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -66991,16 +66961,18 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/starboard/fore) -"rRg" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/turf/open/openspace, -/area/station/maintenance/floor2/port) "rRh" = ( /obj/structure/closet/radiation, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"rRl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/station/medical/chemistry) "rRp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -67152,18 +67124,6 @@ /obj/machinery/space_heater, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port) -"rTv" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) "rTw" = ( /obj/effect/turf_decal/stripes/corner, /obj/effect/turf_decal/tile/red{ @@ -67222,21 +67182,6 @@ }, /turf/open/floor/engine, /area/station/science/cytology) -"rUq" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"rUr" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/checkpoint/escape) "rUD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -67286,12 +67231,36 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/floor1/aft) +"rVj" = ( +/obj/effect/turf_decal/tile/red/anticorner{ + dir = 1 + }, +/obj/structure/bed/dogbed{ + desc = "A comfy-looking mouse bed."; + name = "Robert's bed" + }, +/mob/living/basic/mouse{ + desc = "Your only friend in this place"; + name = "Robert" + }, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, +/turf/open/floor/stone, +/area/station/maintenance/floor1/port) "rVk" = ( /turf/open/floor/iron, /area/station/security/courtroom) "rVy" = ( /turf/open/floor/plating, /area/station/maintenance/floor4/port/fore) +"rVC" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port) "rVI" = ( /obj/structure/rack, /obj/item/flashlight, @@ -67338,6 +67307,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) +"rWx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/aisat) "rWz" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 1 @@ -67408,24 +67383,22 @@ dir = 8 }, /area/station/hallway/floor3/fore) -"rYa" = ( -/obj/effect/turf_decal/tile/red/half{ - dir = 8 +"rYb" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/turf/open/floor/stone, -/area/station/maintenance/floor1/port) +/obj/machinery/firealarm/directional/north, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "rYw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/catwalk_floor/iron, /area/station/maintenance/solars/starboard/fore) -"rYA" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "rYM" = ( /obj/effect/turf_decal/trimline/white/line{ dir = 4 @@ -67492,6 +67465,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) +"rZJ" = ( +/obj/effect/turf_decal/tile/blue/full, +/obj/machinery/power/floodlight, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/textured_large, +/area/station/medical/abandoned) "rZS" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -67531,14 +67513,6 @@ /obj/structure/cable, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"sat" = ( -/obj/effect/decal/remains/human, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, -/turf/open/floor/stone, -/area/station/maintenance/floor1/port) "saA" = ( /obj/effect/turf_decal/siding/thinplating_new{ dir = 1 @@ -67556,10 +67530,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/floor3/starboard/fore) -"saL" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/grass, -/area/station/science/xenobiology) "saR" = ( /obj/structure/table/wood, /obj/item/storage/fancy/cigarettes/cigpack_uplift{ @@ -67581,11 +67551,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard/fore) -"sbn" = ( -/obj/structure/barricade/sandbags, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "sbq" = ( /obj/effect/turf_decal/trimline/green/line, /obj/effect/turf_decal/trimline/green/line{ @@ -67765,12 +67730,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/command/teleporter) -"sdO" = ( -/obj/item/stack/sheet/iron, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "sdQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -67780,6 +67739,11 @@ }, /turf/open/floor/engine, /area/station/hallway/secondary/entry) +"sdR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/dim/directional/east, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "sdV" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 @@ -67791,14 +67755,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/floor3/aft) -"see" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) "sei" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67808,13 +67764,14 @@ dir = 8 }, /area/station/hallway/floor3/fore) -"sff" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"seU" = ( +/obj/structure/chair/wood{ dir = 1 }, +/obj/effect/turf_decal/siding/wood, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor2/starboard) +/turf/open/floor/carpet/green, +/area/station/service/abandoned_gambling_den) "sfk" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -67859,29 +67816,13 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/security/brig) -"sfM" = ( -/obj/effect/mob_spawn/corpse/human/skeleton{ - pixel_y = 14 - }, -/obj/effect/turf_decal/tile/red/half{ - dir = 4 - }, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/turf/open/floor/stone, -/area/station/maintenance/floor1/port) -"sfR" = ( -/obj/machinery/photocopier, +"sgg" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"sfS" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) +/turf/open/floor/pod, +/area/station/maintenance/floor4/port/fore) "sgJ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -67896,6 +67837,12 @@ }, /turf/open/floor/iron/textured_half, /area/station/hallway/secondary/entry) +"sgZ" = ( +/obj/structure/rack, +/obj/item/paint/paint_remover, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "shd" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -67971,6 +67918,17 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/atmos/project) +"sir" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard) "siu" = ( /obj/structure/chair/sofa/bench/right, /turf/open/floor/iron/textured_large, @@ -68020,6 +67978,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/security/prison/work) +"siU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "siY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -68118,6 +68082,11 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig) +"skL" = ( +/obj/item/radio/intercom/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) "skU" = ( /turf/open/floor/iron/dark/side{ dir = 8 @@ -68304,11 +68273,6 @@ }, /turf/open/floor/iron, /area/station/hallway/floor1/aft) -"sow" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) "soy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68353,13 +68317,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/side, /area/station/security/brig) -"soZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/aft) "spb" = ( /obj/machinery/newscaster/directional/south, /obj/machinery/light_switch/directional/west, @@ -68417,6 +68374,20 @@ /obj/structure/sink/directional/west, /turf/open/floor/iron, /area/station/commons/toilet) +"spX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/station/service/abandoned_gambling_den) +"sqc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/flashlight/flare, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "sqi" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/cable, @@ -68454,6 +68425,14 @@ /obj/machinery/growing/tray, /turf/open/floor/iron/dark, /area/station/service/hydroponics/garden) +"sqI" = ( +/obj/item/reagent_containers/dropper, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "sqK" = ( /obj/structure/railing{ dir = 4 @@ -68464,6 +68443,12 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/cargo/storage) +"sqV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/port/aft) "srk" = ( /obj/effect/turf_decal/tile/purple{ dir = 8 @@ -68472,17 +68457,6 @@ /obj/machinery/growing/tray, /turf/open/floor/iron/white, /area/station/cargo/miningdock) -"srq" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "srz" = ( /obj/machinery/door/airlock/atmos{ name = "Atmospherics" @@ -68526,16 +68500,6 @@ }, /turf/open/floor/iron/kitchen/herringbone, /area/station/service/kitchen/diner) -"ssi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) "ssj" = ( /turf/open/floor/iron/kitchen/herringbone, /area/station/service/kitchen) @@ -68667,12 +68631,6 @@ /obj/structure/girder/displaced, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/fore) -"sua" = ( -/obj/machinery/light/dim/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "suh" = ( /obj/structure/table, /obj/machinery/microwave, @@ -68780,19 +68738,32 @@ dir = 8 }, /area/station/hallway/secondary/exit) -"svu" = ( +"svz" = ( +/obj/structure/rack, +/obj/item/trash/syndi_cakes, /obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) +"svA" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/electrified_grille, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"svy" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 6 +/obj/item/weldingtool/mini, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor4/starboard) +"svH" = ( +/obj/machinery/door/airlock{ + name = "Escape Pod A" + }, +/obj/effect/turf_decal/tile/green/half{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/hallway/secondary/exit/escape_pod) "svI" = ( /obj/machinery/door/poddoor/incinerator_ordmix, /turf/open/openspace, @@ -68847,6 +68818,11 @@ /obj/structure/cable, /turf/open/floor/iron/smooth_edge, /area/station/science/research/abandoned) +"swg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/sandbags, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "swm" = ( /obj/machinery/air_sensor/nitrogen_tank, /obj/effect/turf_decal/trimline/red/line, @@ -68868,6 +68844,12 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron, /area/station/engineering/atmos) +"swv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/tank_holder, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "swI" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -68879,17 +68861,21 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"swM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/freezer, -/obj/item/stack/medical/suture, -/obj/item/stack/medical/gauze/twelve, -/obj/item/stack/medical/bone_gel, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) "swT" = ( /turf/closed/wall/r_wall, /area/station/science/circuits) +"swX" = ( +/obj/machinery/door/firedoor, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/north, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/hallway/secondary/exit/escape_pod) "sxe" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -68951,19 +68937,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/disposal) -"sxK" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/fore) -"sxM" = ( -/obj/structure/sign/poster/official/cleanliness/directional/west, -/obj/machinery/holopad, -/obj/machinery/camera/directional/west{ - name = "Security - Medical" - }, -/turf/open/floor/iron/white, -/area/station/security/medical) "sxZ" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/pod/dark, @@ -69023,14 +68996,6 @@ name = "lab floor" }, /area/station/science/genetics) -"syE" = ( -/obj/machinery/door/airlock/hatch{ - name = "Fighter Airlock" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/plastitanium/red, -/area/station/maintenance/floor4/starboard/aft) "syP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69048,17 +69013,17 @@ /obj/structure/cable, /turf/open/misc/dirt/jungle, /area/station/service/hydroponics/garden/abandoned) -"szl" = ( -/obj/machinery/computer/slot_machine, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"szn" = ( -/obj/structure/rack, +"szo" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/food_or_drink/cups, +/obj/structure/closet/wardrobe/mixed, /turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) +/area/station/maintenance/floor4/port/fore) "szp" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -69066,20 +69031,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"szr" = ( -/obj/effect/turf_decal/trimline/brown/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/stripes, -/obj/effect/turf_decal/trimline/brown/line, -/turf/open/floor/iron/dark/smooth_half, -/area/station/cargo/drone_bay) "szt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -69172,6 +69123,12 @@ /obj/machinery/duct, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/captain/private) +"sAt" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/medical/abandoned) "sAv" = ( /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden{ dir = 4 @@ -69235,6 +69192,11 @@ /obj/machinery/light/cold/no_nightlight/directional/east, /turf/open/floor/iron/dark, /area/station/security/checkpoint/second) +"sBr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate_abandoned, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "sBt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -69249,17 +69211,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/medical/abandoned) -"sBy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/aft) -"sBE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) "sBF" = ( /obj/effect/turf_decal/trimline/green/corner{ dir = 1 @@ -69290,17 +69241,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/starboard/fore) -"sBU" = ( -/obj/structure/sign/poster/contraband/eat/directional/west, -/turf/open/floor/carpet/royalblue, -/area/station/medical/break_room) -"sBY" = ( -/obj/structure/sign/poster/contraband/hacking_guide/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) "sCe" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/table/wood, @@ -69338,6 +69278,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) +"sCP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "sCQ" = ( /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat) @@ -69348,21 +69293,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) -"sDp" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 5 - }, -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"sDE" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/recharger, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, -/turf/open/floor/mineral/plastitanium/red, -/area/station/maintenance/floor4/starboard/aft) "sDK" = ( /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/machinery/door/airlock/hatch{ @@ -69436,11 +69366,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/kitchen, /area/station/service/kitchen/abandoned) -"sEP" = ( -/obj/item/toy/plush/bubbleplush, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/fakebasalt, -/area/station/maintenance/floor3/port) "sFa" = ( /turf/open/floor/wood, /area/station/command/meeting_room) @@ -69469,16 +69394,6 @@ }, /turf/open/floor/wood, /area/station/service/theater) -"sFr" = ( -/obj/structure/table/reinforced, -/obj/item/plate{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/knife/butcher, -/obj/structure/sign/poster/official/cleanliness/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) "sFt" = ( /turf/open/floor/iron/kitchen, /area/station/service/kitchen) @@ -69515,11 +69430,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/wood/tile, /area/station/commons/fitness/recreation) -"sGN" = ( -/obj/item/stack/ducts/fifty, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "sGR" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -69551,6 +69461,15 @@ /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard/aft) +"sHh" = ( +/obj/structure/window/reinforced/tinted/spawner/directional/south, +/obj/structure/mirror/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/sink/directional/east, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/dorms/apartment1) "sHk" = ( /obj/effect/turf_decal/trimline/purple/line{ dir = 1 @@ -69575,21 +69494,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/checkpoint/second) -"sHv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"sHB" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) "sHJ" = ( /obj/structure/table, /obj/item/folder/blue{ @@ -69616,6 +69520,22 @@ /obj/item/pipe_dispenser, /turf/open/floor/iron/dark, /area/station/engineering/supermatter) +"sHM" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/aft) "sHP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69738,11 +69658,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/plastic, /area/station/security/prison/shower) -"sIZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/firecloset, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "sJg" = ( /obj/machinery/button/door/directional/north{ id = "dorms_lux_1_bolts"; @@ -69825,6 +69740,11 @@ }, /turf/open/space/openspace, /area/space/nearstation) +"sKq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/dim/directional/east, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port/aft) "sKt" = ( /turf/closed/wall, /area/station/maintenance/floor1/starboard/aft) @@ -69839,12 +69759,6 @@ /obj/effect/spawner/structure/window/hollow/middle, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard) -"sKE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) "sKI" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -69889,6 +69803,14 @@ dir = 8 }, /area/station/hallway/floor3/fore) +"sKP" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "sKQ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/railing{ @@ -69937,15 +69859,14 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/wood/tile, /area/station/service/library) -"sLe" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "sLl" = ( /obj/effect/spawner/structure/window/hollow/end, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard) +"sLn" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, +/turf/open/openspace, +/area/station/maintenance/floor4/port/aft) "sLA" = ( /obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 @@ -69987,48 +69908,10 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/smooth, /area/station/science/research/abandoned) -"sLY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/rack, -/obj/item/stack/sheet/iron{ - amount = 30 - }, -/obj/item/stack/sheet/glass{ - amount = 30 - }, -/obj/item/stack/package_wrap, -/obj/item/flashlight/flare, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) "sMb" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/hallway/floor3/fore) -"sMk" = ( -/obj/structure/sign/poster/random/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/oil, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/drone_bay) -"sMm" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) "sMo" = ( /obj/structure/chair/office/light{ dir = 8 @@ -70046,6 +69929,13 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) +"sMv" = ( +/obj/effect/spawner/random/trash/graffiti{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "sMx" = ( /obj/effect/turf_decal/trimline/purple/line{ dir = 9 @@ -70106,6 +69996,13 @@ }, /turf/open/floor/iron/textured_large, /area/station/cargo/sorting) +"sNz" = ( +/obj/effect/turf_decal/stripes{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/aft) "sNE" = ( /obj/machinery/vending/cigarette, /turf/open/floor/iron, @@ -70136,6 +70033,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) +"sOl" = ( +/obj/machinery/light/dim/directional/west, +/obj/effect/turf_decal/trimline/red/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/plumbed{ + dir = 4 + }, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "sOs" = ( /obj/machinery/airalarm/directional/south, /obj/structure/disposalpipe/segment{ @@ -70153,15 +70061,6 @@ "sOy" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat_interior) -"sOB" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"sOD" = ( -/obj/effect/turf_decal/trimline/brown/warning, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) "sOG" = ( /obj/machinery/light/directional/west, /obj/item/radio/intercom/directional/west, @@ -70206,12 +70105,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) -"sPs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/electrified_grille, -/turf/open/floor/plating, -/area/station/ai_monitored/security/armory) "sPu" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -70228,6 +70121,14 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/floor1/port/fore) +"sPO" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "sPZ" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Hatch" @@ -70235,13 +70136,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/aft) -"sQa" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) "sQj" = ( /obj/structure/table, /obj/item/gun/energy/laser/practice{ @@ -70561,19 +70455,6 @@ dir = 10 }, /area/station/security/prison) -"sUZ" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "sVb" = ( /obj/machinery/power/floodlight, /obj/structure/cable, @@ -70591,17 +70472,6 @@ /obj/structure/sign/warning/yes_smoking/circle/directional/west, /turf/open/floor/wood, /area/station/hallway/floor3/fore) -"sVi" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/wardrobe/mixed, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "sVp" = ( /obj/structure/transit_tube/curved{ dir = 4 @@ -70633,6 +70503,13 @@ }, /turf/open/floor/plating, /area/station/medical/virology) +"sVG" = ( +/obj/machinery/biogenerator, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/station/service/hydroponics) "sVQ" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 5 @@ -70698,10 +70575,6 @@ }, /turf/open/floor/plating, /area/station/security/lockers) -"sWo" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/security/range) "sWs" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/burgundy, @@ -70791,6 +70664,12 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) +"sXx" = ( +/obj/machinery/light/dim/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port) "sXE" = ( /obj/effect/turf_decal/trimline/yellow/line, /obj/machinery/navbeacon{ @@ -70799,6 +70678,16 @@ }, /turf/open/floor/iron, /area/station/hallway/floor1/fore) +"sXJ" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/commons/storage/primary) "sXM" = ( /obj/machinery/recharger, /obj/structure/table, @@ -70955,11 +70844,24 @@ }, /turf/open/floor/mineral/silver, /area/station/service/chapel) +"sZg" = ( +/obj/structure/table/wood/poker, +/obj/effect/spawner/random/entertainment/dice, +/obj/machinery/airalarm/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/green, +/area/station/service/abandoned_gambling_den) "sZj" = ( /obj/item/clothing/gloves/boxing, /obj/structure/rack, /turf/open/floor/pod/dark, /area/station/maintenance/floor1/starboard/aft) +"sZs" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/blue, +/area/station/maintenance/floor3/port/aft) "sZx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured, @@ -70985,12 +70887,6 @@ /obj/structure/cable, /turf/open/floor/eighties, /area/station/commons/fitness/recreation/entertainment) -"sZF" = ( -/obj/machinery/atm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor4/fore) "sZH" = ( /obj/structure/mirror/directional/west, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -71007,16 +70903,6 @@ dir = 8 }, /area/station/hallway/floor1/fore) -"sZL" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/commons/storage/primary) "sZO" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 @@ -71030,6 +70916,17 @@ }, /turf/open/floor/iron/dark/textured, /area/station/medical/cryo) +"sZW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/mass_driver/ordnance{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/iron/dark/textured, +/area/station/science/ordnance/storage) "sZX" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 6 @@ -71037,13 +70934,6 @@ /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"sZY" = ( -/obj/effect/turf_decal/loading_area{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) "tal" = ( /obj/structure/railing, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -71060,10 +70950,6 @@ "tat" = ( /turf/open/openspace, /area/station/maintenance/floor3/starboard/aft) -"taC" = ( -/obj/structure/cable, -/turf/closed/wall, -/area/station/cargo/drone_bay) "taD" = ( /obj/machinery/door/airlock/external/glass, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ @@ -71074,12 +70960,6 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/floor1/port/aft) -"taM" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "taW" = ( /obj/structure/table/wood, /obj/effect/spawner/random/entertainment/musical_instrument, @@ -71112,20 +70992,10 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/port) -"tbu" = ( -/obj/effect/spawner/random/trash/hobo_squat, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "tbw" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional, /turf/open/floor/plating, /area/station/medical/psychology) -"tby" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/barricade/sandbags, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "tbG" = ( /obj/structure/closet/secure_closet/atmospherics, /obj/effect/turf_decal/box, @@ -71138,6 +71008,11 @@ }, /turf/open/floor/carpet/neon/simple/pink/nodots, /area/station/maintenance/floor2/port/fore) +"tbV" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, +/turf/open/openspace, +/area/station/maintenance/floor3/port) "tbX" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, @@ -71173,6 +71048,16 @@ }, /turf/open/floor/iron, /area/station/hallway/floor3/fore) +"tcz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/spawner/random/contraband/landmine, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "tcE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -71233,13 +71118,6 @@ name = "lab floor" }, /area/station/science/genetics) -"tde" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "tdf" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ dir = 4 @@ -71251,6 +71129,13 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/port) +"tdu" = ( +/obj/effect/turf_decal/trimline/blue/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "tdw" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -71269,20 +71154,6 @@ }, /turf/open/floor/carpet/red, /area/station/service/theater) -"tdA" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) "tdF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -71319,14 +71190,6 @@ /obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/iron/corner, /area/station/engineering/atmos/office) -"tez" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) "teB" = ( /obj/effect/turf_decal/stripes{ dir = 4 @@ -71342,6 +71205,11 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard/aft) +"teK" = ( +/obj/machinery/camera/autoname/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "teN" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/iron/dark, @@ -71379,6 +71247,16 @@ }, /turf/open/floor/plating, /area/station/service/chapel/office) +"teX" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "tff" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -71436,6 +71314,11 @@ /obj/structure/sign/departments/medbay/alt/directional/south, /turf/open/floor/iron/white/textured, /area/station/medical/treatment_center) +"tgn" = ( +/obj/structure/grille, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/security/checkpoint) "tgq" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -71451,12 +71334,27 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/carpet/green, /area/station/service/abandoned_gambling_den) -"tgP" = ( -/obj/effect/turf_decal/tile/green/full, +"tgF" = ( +/obj/machinery/airalarm/directional/south, +/obj/effect/decal/cleanable/blood/drip, /obj/effect/decal/cleanable/dirt, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) +/turf/open/floor/iron, +/area/station/maintenance/floor3/starboard/aft) +"tgN" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/food_or_drink/condiment, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) +"tgR" = ( +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table, +/obj/structure/disposalpipe/segment, +/obj/item/stamp/head/hos, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hos) "tgS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -71514,14 +71412,6 @@ /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/port) -"thU" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 9 - }, -/obj/effect/spawner/random/structure/crate_loot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "tic" = ( /turf/open/floor/wood, /area/station/commons/dorms/apartment2) @@ -71538,11 +71428,6 @@ /obj/structure/sign/poster/contraband/grey_tide, /turf/closed/wall, /area/station/maintenance/floor3/port/aft) -"tiC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) "tiG" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, @@ -71592,18 +71477,6 @@ dir = 4 }, /area/station/maintenance/floor4/port/fore) -"tji" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) "tjq" = ( /obj/machinery/light/directional/east, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -71623,17 +71496,12 @@ dir = 8 }, /area/station/service/chapel) -"tjJ" = ( -/obj/effect/turf_decal/caution/stand_clear/white{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/effect/spawner/random/decoration/glowstick, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) +"tjI" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/turf/open/floor/grass, +/area/station/hallway/secondary/exit/departure_lounge) "tjN" = ( /turf/open/floor/iron, /area/station/maintenance/solars/starboard/fore) @@ -71677,6 +71545,12 @@ "tkB" = ( /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/floor3/starboard) +"tkD" = ( +/obj/machinery/atm/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/station/hallway/floor4/fore) "tkE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -71755,11 +71629,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos/hfr_room) -"tlr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) "tlt" = ( /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/port/fore) @@ -71856,6 +71725,10 @@ }, /turf/open/floor/iron/white, /area/station/science/lower) +"tmK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "tmM" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Hatch" @@ -71893,6 +71766,15 @@ /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/pod/light, /area/station/maintenance/floor3/starboard/aft) +"tnu" = ( +/obj/structure/table, +/obj/effect/spawner/random/food_or_drink/snack, +/obj/effect/spawner/random/food_or_drink/snack, +/obj/item/food/gumball, +/obj/item/food/gumball, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "tnx" = ( /obj/machinery/camera/autoname/directional/east, /obj/structure/sign/departments/science/alt/directional/east, @@ -71919,17 +71801,6 @@ /obj/effect/spawner/random/contraband/prison, /turf/open/floor/iron/dark, /area/station/maintenance/floor2/starboard/aft) -"tnN" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/firealarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "tnS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72007,6 +71878,16 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/range) +"toB" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 10 + }, +/obj/machinery/airalarm/directional/east, +/obj/structure/closet/emcloset, +/obj/effect/spawner/random/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "toC" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 @@ -72020,14 +71901,6 @@ "toH" = ( /turf/open/openspace, /area/station/maintenance/floor3/port/fore) -"toK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3; - spawn_scatter_radius = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) "toO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -72042,6 +71915,11 @@ /obj/structure/cable, /turf/open/floor/eighties, /area/station/commons/fitness/recreation/entertainment) +"toW" = ( +/obj/structure/closet/firecloset, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/engineering/lobby) "toX" = ( /obj/machinery/door/airlock/grunge{ name = "Prison Forestry" @@ -72098,16 +71976,11 @@ /obj/effect/baseturf_helper/reinforced_plating/ceiling, /turf/open/floor/iron/white, /area/station/medical/virology) -"tqa" = ( -/obj/structure/table/reinforced, -/obj/structure/barricade/wooden{ - name = "wooden barricade (KEEP OUT)" - }, -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/station/medical/chemistry) +"tqd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/sandbags, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "tqi" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -72354,13 +72227,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/abandoned) -"tua" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "tuc" = ( /obj/effect/turf_decal/caution/stand_clear, /obj/effect/turf_decal/siding/dark_blue, @@ -72477,11 +72343,6 @@ /obj/machinery/light/cold/no_nightlight/directional/east, /turf/open/floor/iron/dark, /area/station/security/detectives_office/private_investigators_office) -"tvB" = ( -/obj/structure/table/wood, -/obj/structure/sign/poster/contraband/pwr_game/directional/north, -/turf/open/floor/wood, -/area/station/maintenance/floor2/starboard) "tvH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -72579,11 +72440,6 @@ /obj/structure/sign/warning/directional/south, /turf/open/floor/iron/dark/textured, /area/station/science/ordnance/storage) -"twS" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) "twZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72598,13 +72454,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/aft) -"txv" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 4 - }, +"txh" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port/aft) +/obj/structure/closet/emcloset, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "txw" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/decoration/glowstick, @@ -72735,6 +72589,12 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/catwalk_floor, /area/station/hallway/floor4/aft) +"tzn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard) "tzp" = ( /obj/structure/rack, /obj/item/soulstone/anybody/chaplain, @@ -72772,6 +72632,24 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/maintenance/floor2/starboard/aft) +"tzF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/tile, +/area/station/commons/fitness/recreation) +"tzG" = ( +/obj/item/paint/anycolor{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/paint/anycolor, +/obj/item/paint/anycolor{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "tzQ" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 @@ -72840,6 +72718,11 @@ }, /turf/open/floor/plating, /area/station/cargo/lobby) +"tAP" = ( +/obj/structure/closet/firecloset/full, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "tAW" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/effect/decal/cleanable/ash, @@ -72865,15 +72748,18 @@ "tBk" = ( /turf/closed/wall/r_wall, /area/station/security/prison/visit) -"tBl" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, +"tBn" = ( +/obj/effect/turf_decal/tile/red/anticorner, +/obj/structure/bed/maint, +/obj/item/reagent_containers/cup/glass/bottle/hooch, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, +/turf/open/floor/stone, +/area/station/maintenance/floor1/port) +"tBu" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/newscaster/directional/east, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/service/theater) +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port) "tBv" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -72896,6 +72782,21 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"tBG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille, +/turf/open/floor/plating, +/area/station/hallway/floor3/fore) +"tBQ" = ( +/obj/structure/rack, +/obj/item/trash/boritos/red{ + pixel_x = 4; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "tCj" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -72903,6 +72804,24 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/kitchen, /area/station/command/heads_quarters/rd) +"tCm" = ( +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/brown/line, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/smooth_half, +/area/station/cargo/drone_bay) "tCB" = ( /obj/effect/spawner/random/trash/garbage{ spawn_scatter_radius = 1 @@ -72920,20 +72839,6 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron, /area/station/hallway/floor1/aft) -"tCS" = ( -/obj/effect/landmark/start/hangover, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"tCU" = ( -/obj/item/stack/tile/iron/white, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/plating, -/area/station/medical/abandoned) "tDf" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72989,18 +72894,6 @@ dir = 1 }, /area/station/engineering/atmos/office) -"tDO" = ( -/obj/structure/table, -/obj/item/paper_bin/carbon{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/stamp/head/hop{ - pixel_x = -4; - pixel_y = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) "tEb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/textured_large, @@ -73110,6 +73003,21 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor4/aft) +"tFq" = ( +/obj/item/trash/ready_donk, +/obj/item/trash/candle, +/obj/item/trash/can/food/envirochow{ + pixel_x = -7 + }, +/obj/item/trash/boritos/red{ + pixel_x = 4; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/garbage, +/obj/effect/decal/cleanable/food/pie_smudge, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "tFK" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 5 @@ -73122,11 +73030,6 @@ }, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) -"tFM" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "tFO" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -73154,6 +73057,14 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/wood/tile, /area/station/service/library) +"tGl" = ( +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 4 + }, +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "tGn" = ( /turf/closed/wall, /area/station/maintenance/floor3/port) @@ -73170,6 +73081,14 @@ dir = 4 }, /area/station/science/robotics/lab) +"tGz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port/aft) "tGA" = ( /obj/machinery/newscaster/directional/north, /obj/effect/decal/cleanable/dirt, @@ -73180,16 +73099,12 @@ "tGE" = ( /turf/open/floor/iron/textured, /area/station/command/heads_quarters/qm) -"tGW" = ( +"tGF" = ( +/obj/machinery/light/directional/north, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/caution/stand_clear/white{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/station/security/range) "tHh" = ( /obj/effect/turf_decal/trimline/white/corner{ dir = 4 @@ -73210,6 +73125,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard/aft) +"tHq" = ( +/obj/structure/table/wood, +/obj/structure/sign/poster/contraband/pwr_game/directional/north, +/turf/open/floor/wood, +/area/station/maintenance/floor2/starboard) "tHs" = ( /obj/structure/sink/kitchen/directional/east, /obj/structure/disposalpipe/segment{ @@ -73222,11 +73142,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness) -"tHH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) "tHL" = ( /turf/open/floor/iron/textured_large, /area/station/cargo/storage) @@ -73396,11 +73311,6 @@ /obj/machinery/light/cold/no_nightlight/directional/west, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"tJE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "tJG" = ( /obj/structure/cable, /turf/open/floor/wood/large, @@ -73425,14 +73335,6 @@ dir = 4 }, /area/station/command/gateway) -"tJY" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/light_switch/directional/east, -/obj/machinery/atm/directional/north, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) "tJZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -73560,16 +73462,6 @@ /obj/structure/sign/warning/pods/directional/south, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"tLt" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/table, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "tLE" = ( /obj/machinery/light/blacklight/directional/east, /obj/machinery/vending/cola/pwr_game, @@ -73579,11 +73471,6 @@ /obj/structure/closet/emcloset/anchored, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/port) -"tLQ" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/east, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) "tLV" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/small/directional/west, @@ -73624,6 +73511,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/locker) +"tMu" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/service/library/printer) "tMK" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -73644,12 +73541,10 @@ /obj/effect/turf_decal/tile/red/half, /turf/open/floor/iron/dark/side, /area/station/security/brig) -"tNf" = ( -/obj/machinery/shieldgen, -/obj/effect/decal/cleanable/cobweb, +"tNw" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) +/turf/open/floor/iron/dark/side, +/area/station/hallway/secondary/exit) "tNA" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -73670,6 +73565,15 @@ /obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/hallway/floor1/fore) +"tNN" = ( +/obj/machinery/button/door/directional/north{ + id = "survshop"; + name = "Workshop Shutters" + }, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "tNS" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -73706,6 +73610,12 @@ dir = 1 }, /area/station/hallway/floor1/fore) +"tOp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "tOr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, /obj/effect/turf_decal/tile/blue{ @@ -73715,6 +73625,14 @@ dir = 1 }, /area/station/hallway/floor1/aft) +"tOt" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 5 + }, +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "tOv" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/dark, @@ -73820,6 +73738,11 @@ /obj/structure/railing, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor4/port/aft) +"tPX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/medical/abandoned) "tQd" = ( /turf/closed/wall, /area/station/service/bar/atrium) @@ -73827,11 +73750,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/side, /area/station/cargo/miningdock) -"tQl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) "tQq" = ( /obj/effect/turf_decal/trimline/blue/line, /obj/effect/turf_decal/trimline/blue/line{ @@ -73924,6 +73842,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard) +"tRl" = ( +/obj/effect/spawner/random/trash/bin, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "tRo" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -73991,16 +73914,6 @@ }, /turf/open/floor/engine, /area/station/science/cytology) -"tSf" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/item/mop, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "tSs" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -74069,6 +73982,12 @@ dir = 4 }, /area/station/hallway/floor1/aft) +"tTr" = ( +/obj/structure/altar_of_gods, +/obj/effect/turf_decal/siding/white, +/obj/item/book/bible, +/turf/open/floor/mineral/silver, +/area/station/service/chapel) "tTw" = ( /obj/effect/turf_decal/trimline/purple/warning{ dir = 8 @@ -74079,6 +73998,14 @@ /obj/structure/closet/emcloset, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard) +"tTA" = ( +/obj/effect/turf_decal/trimline/green/arrow_ccw{ + dir = 1 + }, +/obj/machinery/airalarm/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white/small, +/area/station/commons/fitness/recreation) "tTB" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/statue/snow/snowman, @@ -74104,11 +74031,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/hallway/floor2/fore) -"tTT" = ( -/obj/machinery/chem_dispenser, -/obj/structure/sign/poster/official/periodic_table/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) "tTU" = ( /obj/structure/girder, /turf/open/floor/plating, @@ -74183,12 +74105,6 @@ /obj/effect/turf_decal/tile/red, /turf/open/floor/iron/dark, /area/station/security/office) -"tVc" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/space_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "tVp" = ( /obj/machinery/light_switch/directional/north, /obj/machinery/status_display/ai/directional/east, @@ -74236,11 +74152,6 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/fore) -"tWo" = ( -/obj/structure/closet/emcloset/anchored, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "tWv" = ( /obj/machinery/status_display/ai/directional/south, /obj/structure/disposalpipe/segment{ @@ -74258,6 +74169,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor/iron, /area/station/engineering/atmos) +"tWK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall, +/area/station/maintenance/floor3/port/aft) "tWL" = ( /obj/machinery/light/dim/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -74286,10 +74201,6 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) -"tXg" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) "tXF" = ( /obj/machinery/power/shuttle_engine/propulsion/burst{ dir = 4 @@ -74362,6 +74273,13 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) +"tZe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/white/line{ + dir = 9 + }, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "tZh" = ( /obj/machinery/door/airlock/science{ name = "Monkey Pen" @@ -74400,13 +74318,6 @@ /obj/machinery/holopad, /turf/open/floor/iron, /area/station/hallway/floor3/fore) -"tZJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/gibs/core, -/obj/effect/decal/cleanable/blood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) "tZR" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -74535,11 +74446,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/white/small, /area/station/commons/fitness/recreation) -"ubP" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "ubR" = ( /turf/open/floor/carpet/royalblack, /area/station/service/kitchen/diner) @@ -74564,6 +74470,11 @@ dir = 1 }, /area/station/medical/chemistry) +"uck" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth_corner, +/area/station/maintenance/floor2/starboard) "ucm" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -74592,6 +74503,13 @@ /obj/effect/landmark/start/research_director, /turf/open/floor/iron/large, /area/station/command/heads_quarters/rd) +"ucz" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "ucA" = ( /turf/open/space/openspace, /area/space) @@ -74627,14 +74545,6 @@ dir = 8 }, /area/station/cargo/lobby) -"ucS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "ucY" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -74665,11 +74575,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/engine, /area/station/science/auxlab/firing_range) -"udy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/mineral/wood, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) "udC" = ( /obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4, /turf/open/floor/iron, @@ -74681,6 +74586,13 @@ /obj/machinery/light/dim/directional/east, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port/fore) +"udG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/sign/poster/contraband/got_wood/directional/west, +/turf/open/floor/wood, +/area/station/maintenance/floor1/port/aft) "udU" = ( /obj/machinery/door/firedoor/heavy, /obj/effect/turf_decal/delivery, @@ -74714,13 +74626,6 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /turf/open/floor/iron, /area/station/maintenance/floor3/port/fore) -"ueC" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) "ueJ" = ( /obj/structure/chair/comfy/brown{ dir = 1 @@ -74730,16 +74635,6 @@ }, /turf/open/floor/carpet/royalblack, /area/station/service/theater) -"ueL" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/east, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) "ueN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -74783,10 +74678,6 @@ "ufl" = ( /turf/closed/wall, /area/station/commons/storage/art) -"ufs" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "ufA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured, @@ -74864,6 +74755,22 @@ }, /turf/open/floor/engine/hull, /area/space/nearstation) +"ugm" = ( +/obj/structure/railing, +/obj/effect/turf_decal/trimline/green/warning{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) +"ugp" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/aft) "ugs" = ( /turf/open/floor/iron/dark/side{ dir = 10 @@ -74902,16 +74809,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port) -"uhk" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/blue, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/landmark/start/cyborg, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) "uhn" = ( /obj/machinery/light/directional/east, /turf/open/openspace, @@ -74967,6 +74864,11 @@ }, /turf/open/floor/iron/checker, /area/station/commons/vacant_room/commissary) +"uhD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/toy/figure/syndie, +/turf/open/floor/pod/light, +/area/station/security/execution/education) "uhF" = ( /obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -74984,11 +74886,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/floor3/port/fore) -"uhU" = ( -/obj/structure/table/wood, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) "uid" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -75000,6 +74897,17 @@ /obj/effect/decal/cleanable/greenglow, /turf/open/floor/pod/light, /area/station/maintenance/floor4/port/fore) +"uij" = ( +/obj/machinery/status_display/evac/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/docking/directional/south, +/obj/machinery/computer/shuttle/mining/common{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/station/hallway/secondary/exit) "uit" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Access" @@ -75020,11 +74928,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/brig) -"uiA" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/turf/open/openspace, -/area/station/maintenance/floor3/port) "uiH" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/chair/sofa/bench/right{ @@ -75089,11 +74992,6 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor3/port/aft) -"ujs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "ujv" = ( /obj/docking_port/stationary/mining_home/common/northstar{ dir = 2 @@ -75144,14 +75042,12 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/office) -"ukf" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 10 - }, -/obj/machinery/airalarm/directional/north, +"ukk" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "ukm" = ( /obj/machinery/seed_extractor, /obj/effect/turf_decal/trimline/purple/filled/corner{ @@ -75194,6 +75090,25 @@ dir = 1 }, /area/station/medical/abandoned) +"ulg" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted/spawner/directional/west, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/disposal/bin{ + name = "Book Returns" + }, +/turf/open/floor/iron, +/area/station/service/library) +"uli" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard/aft) "ulj" = ( /obj/machinery/button/crematorium{ id = "crematorium_chapel"; @@ -75259,17 +75174,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/xenobiology/hallway) -"umg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/obj/machinery/firealarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) "umo" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/weather/dirt{ @@ -75360,13 +75264,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port) -"unC" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "unQ" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 4; @@ -75396,6 +75293,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port/aft) +"uoB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/obj/machinery/firealarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/hallway/floor1/fore) "uoE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/red/fourcorners, @@ -75417,6 +75325,12 @@ /obj/effect/spawner/random/engineering/tool, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port/fore) +"uoQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white/smooth_corner{ + dir = 4 + }, +/area/station/cargo/miningdock) "uoS" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -75446,6 +75360,19 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /turf/open/floor/plating, /area/station/hallway/floor3/fore) +"upi" = ( +/obj/effect/turf_decal/caution/stand_clear/white{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "upo" = ( /obj/structure/table/wood, /obj/item/canvas/twentyfour_twentyfour, @@ -75463,10 +75390,14 @@ }, /turf/open/floor/wood/parquet, /area/station/service/lawoffice) -"upP" = ( +"upB" = ( +/obj/effect/turf_decal/trimline/purple/warning{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "upS" = ( /obj/item/chair/plastic, /obj/structure/sign/poster/contraband/random/directional/north, @@ -75542,14 +75473,27 @@ dir = 1 }, /area/station/security/office) -"urD" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 +"urG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/machinery/light/directional/south, +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) +/turf/open/floor/plating, +/area/station/medical/abandoned) +"urH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard/aft) +"urM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille, +/turf/open/floor/plating, +/area/station/maintenance/floor4/port) "urO" = ( /obj/machinery/firealarm/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible/layer2{ @@ -75718,6 +75662,12 @@ /obj/structure/closet/firecloset, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port) +"utG" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/sign/poster/contraband/have_a_puff/directional/north, +/obj/machinery/vending/snack/blue, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "utJ" = ( /obj/effect/mapping_helpers/airlock/access/any/security/court, /obj/machinery/door/firedoor, @@ -75784,16 +75734,6 @@ dir = 1 }, /area/station/security/prison) -"uuz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "uuG" = ( /obj/effect/turf_decal/tile/green/half{ dir = 8 @@ -75850,6 +75790,12 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor3/fore) +"uvX" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/table/wood, +/obj/structure/window/reinforced/tinted/spawner/directional/west, +/turf/open/floor/carpet, +/area/station/commons/vacant_room/office) "uwa" = ( /obj/machinery/oven/range, /turf/open/floor/iron/kitchen, @@ -75871,12 +75817,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/pod/dark, /area/station/maintenance/floor4/starboard) -"uwl" = ( -/obj/machinery/computer/slot_machine, -/obj/machinery/firealarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) "uws" = ( /obj/machinery/door/firedoor/heavy, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ @@ -75897,17 +75837,6 @@ /obj/effect/turf_decal/tile/red, /turf/open/floor/iron/dark/corner, /area/station/security/brig) -"uwG" = ( -/obj/item/stack/sheet/iron/five, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"uwP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/power/port_gen/pacman, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "uwQ" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 5 @@ -75917,6 +75846,17 @@ "uwU" = ( /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) +"uxb" = ( +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, +/turf/open/openspace, +/area/station/maintenance/floor2/port) +"uxe" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/starboard) "uxf" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional, /obj/structure/cable, @@ -75938,18 +75878,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/security/brig) -"uxt" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/electrical{ - pixel_y = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"uxw" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "uxF" = ( /obj/machinery/status_display/ai/directional/west, /obj/structure/flora/bush/sparsegrass/style_random, @@ -75965,11 +75893,12 @@ "uxT" = ( /turf/closed/wall, /area/station/tcommsat/computer) -"uxW" = ( +"uxU" = ( +/obj/machinery/atmospherics/components/trinary/mixer, +/obj/effect/turf_decal/box, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) +/turf/open/floor/plating, +/area/station/maintenance/floor2/port) "uxX" = ( /obj/structure/closet/secure_closet/engineering_welding, /obj/structure/window/spawner/directional/west, @@ -76075,21 +76004,13 @@ }, /turf/open/floor/pod/dark, /area/station/hallway/secondary/entry) -"uzw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth_corner{ - dir = 4 - }, -/area/station/maintenance/floor2/starboard) -"uzB" = ( -/obj/structure/table/reinforced, -/obj/item/screwdriver, +"uzD" = ( +/obj/machinery/light/dim/directional/south, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard/aft) +/obj/structure/rack, +/obj/effect/spawner/random/maintenance/three, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "uzE" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -76139,17 +76060,6 @@ /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/atmos) -"uAi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) "uAI" = ( /obj/machinery/light/cold/directional/south, /obj/effect/turf_decal/trimline/blue/filled/corner, @@ -76158,20 +76068,21 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"uAL" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor3/starboard/aft) "uAT" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"uAU" = ( -/obj/machinery/light/directional/west, -/obj/structure/table/reinforced, -/obj/item/flashlight/lamp, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "uAY" = ( /obj/machinery/computer/security/telescreen/entertainment/directional/west, /turf/open/floor/carpet, @@ -76203,6 +76114,12 @@ /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron, /area/station/science/ordnance/testlab) +"uBM" = ( +/obj/machinery/computer/pandemic, +/obj/structure/sign/poster/official/periodic_table/directional/north, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron/dark, +/area/station/medical/virology) "uBN" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/trimline/white/filled/line{ @@ -76297,6 +76214,18 @@ }, /turf/open/floor/carpet/royalblack, /area/station/service/kitchen/diner) +"uCX" = ( +/obj/item/canvas/twentyfour_twentyfour, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) +"uDa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/landmark/start/cargo_technician, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "uDb" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/line{ @@ -76311,6 +76240,10 @@ }, /turf/open/floor/iron, /area/station/hallway/floor2/aft) +"uDh" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/miningdock) "uDr" = ( /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, @@ -76409,6 +76342,13 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"uEB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/maintenance/floor2/starboard/aft) "uEF" = ( /turf/closed/wall, /area/station/security/prison/work) @@ -76418,14 +76358,6 @@ }, /turf/open/floor/carpet/royalblack, /area/station/service/theater) -"uEK" = ( -/obj/effect/decal/cleanable/blood/tracks, -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) "uEL" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 9 @@ -76459,6 +76391,13 @@ dir = 8 }, /area/station/hallway/floor1/fore) +"uFn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "uFw" = ( /obj/structure/cable, /obj/machinery/holopad, @@ -76509,6 +76448,19 @@ /obj/item/flashlight/lamp/green, /turf/open/floor/wood/tile, /area/station/service/library) +"uGK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch/directional/west, +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/wood/large, +/area/station/maintenance/floor4/starboard/aft) "uGL" = ( /obj/item/rack_parts, /turf/open/floor/pod/light, @@ -76540,10 +76492,23 @@ /obj/machinery/vending/coffee, /turf/open/floor/iron/dark, /area/station/science/breakroom) +"uGW" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/storage) "uHa" = ( /obj/effect/turf_decal/tile/red, /turf/open/floor/iron/dark/side, /area/station/hallway/floor4/aft) +"uHd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/textured_large, +/area/station/hallway/secondary/exit/departure_lounge) "uHe" = ( /obj/machinery/atmospherics/components/unary/passive_vent{ dir = 1 @@ -76559,6 +76524,11 @@ }, /turf/open/floor/catwalk_floor, /area/station/hallway/floor3/fore) +"uHn" = ( +/obj/machinery/chem_dispenser, +/obj/structure/sign/poster/official/periodic_table/directional/west, +/turf/open/floor/iron/dark/textured, +/area/station/medical/pharmacy) "uHu" = ( /obj/effect/turf_decal/trimline/white/filled/line{ dir = 8 @@ -76567,11 +76537,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/medical/psychology) -"uHv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) +"uHw" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/obj/structure/railing{ + layer = 3.1 + }, +/obj/effect/decal/cleanable/robot_debris, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/drone_bay) "uHx" = ( /obj/structure/grille/broken, /turf/open/floor/plating, @@ -76659,10 +76638,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor1/aft) -"uIr" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "uIx" = ( /turf/closed/wall/r_wall, /area/station/maintenance/floor4/port/fore) @@ -76687,17 +76662,13 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port/fore) -"uIM" = ( -/obj/machinery/light/dim/directional/west, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, +"uIH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/plumbed{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) +/turf/open/floor/plating, +/area/station/maintenance/floor2/port/aft) "uIN" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/third) @@ -76735,6 +76706,11 @@ }, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/captain/private) +"uJF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "uJG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -76749,6 +76725,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"uJP" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/obj/effect/turf_decal/siding/wood, +/obj/structure/window/reinforced/tinted/spawner/directional/north, +/obj/structure/window/reinforced/tinted/spawner/directional/west, +/turf/open/floor/carpet, +/area/station/commons/vacant_room/office) "uJR" = ( /obj/effect/turf_decal/trimline/brown/warning{ dir = 4 @@ -76796,14 +76780,26 @@ /obj/structure/cable/multilayer/multiz, /turf/open/floor/catwalk_floor, /area/station/hallway/floor1/fore) -"uKz" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 8 +"uKx" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/folder/white, +/obj/item/taperecorder{ + pixel_x = -9; + pixel_y = 3 }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) +/obj/item/stamp/head/rd{ + pixel_x = 5 + }, +/obj/item/toy/figure/rd{ + pixel_x = 2; + pixel_y = 13 + }, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/siding{ + dir = 6 + }, +/turf/open/floor/iron/white, +/area/station/command/heads_quarters/rd) "uKC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/machinery/firealarm/directional/north, @@ -76811,17 +76807,6 @@ dir = 1 }, /area/station/hallway/floor1/fore) -"uKD" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) "uKE" = ( /obj/effect/turf_decal/trimline/brown/warning{ dir = 4 @@ -76855,6 +76840,10 @@ /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/port) +"uLw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor1/port) "uLA" = ( /obj/machinery/light/directional/south, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -77056,13 +77045,6 @@ dir = 8 }, /area/station/security/courtroom) -"uOe" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/dresser, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) "uOl" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -77083,14 +77065,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/pod, /area/station/maintenance/floor4/starboard/aft) -"uOq" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) "uOx" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -77175,6 +77149,10 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port) +"uPk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/red, +/area/station/maintenance/floor3/port/aft) "uPm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/moisture_trap{ @@ -77182,11 +77160,6 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port) -"uPA" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) "uPM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, @@ -77223,12 +77196,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor4/fore) -"uPY" = ( -/obj/machinery/light/dim/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) "uQe" = ( /obj/structure/chair/sofa/bench/left{ dir = 4 @@ -77344,6 +77311,13 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white/small, /area/station/medical/chemistry) +"uRv" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, +/area/station/service/abandoned_gambling_den) "uRE" = ( /obj/machinery/door/airlock/engineering{ name = "Auxiliary Base Supplies" @@ -77440,14 +77414,10 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, /area/station/hallway/floor4/aft) -"uTk" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) +"uTr" = ( +/obj/structure/broken_flooring/singular/directional/south, +/turf/open/floor/plating, +/area/station/maintenance/floor1/port) "uTx" = ( /obj/effect/turf_decal/trimline/brown/warning{ dir = 8 @@ -77528,13 +77498,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"uUi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/drone_bay) "uUj" = ( /obj/structure/transit_tube/curved{ dir = 8 @@ -77687,6 +77650,11 @@ /obj/structure/cable/multilayer/multiz, /turf/open/floor/catwalk_floor, /area/station/hallway/floor2/aft) +"uVU" = ( +/obj/machinery/light/dim/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/aft) "uVV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -77709,13 +77677,6 @@ /obj/effect/turf_decal/trimline/purple/filled/line, /turf/open/floor/iron/white, /area/station/science/server) -"uWi" = ( -/obj/machinery/chem_master{ - name = "Hydroanalysis Device" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "uWl" = ( /obj/effect/turf_decal/tile/blue/half{ dir = 1 @@ -77725,20 +77686,6 @@ dir = 1 }, /area/station/command/teleporter) -"uWm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 9 - }, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8 - }, -/obj/effect/mapping_helpers/mail_sorting/engineering/general, -/obj/effect/mapping_helpers/mail_sorting/engineering/ce_office, -/obj/effect/mapping_helpers/mail_sorting/engineering/atmospherics, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "uWn" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/transit_tube/curved{ @@ -77849,14 +77796,16 @@ }, /turf/open/floor/wood, /area/station/commons/dorms/apartment1) -"uXL" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 1 +"uXI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos) +/obj/effect/decal/cleanable/blood/tracks{ + dir = 5 + }, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "uXM" = ( /obj/effect/turf_decal/trimline/brown/warning{ dir = 9 @@ -77945,6 +77894,18 @@ dir = 8 }, /area/station/security/office) +"uYX" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/cigarettes/cigpack_midori{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/lighter{ + pixel_y = -6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/purple, +/area/station/maintenance/floor1/port/aft) "uZc" = ( /turf/closed/wall, /area/station/medical/abandoned) @@ -78015,6 +77976,12 @@ "uZF" = ( /turf/closed/wall/r_wall, /area/station/maintenance/floor2/starboard/aft) +"uZQ" = ( +/obj/effect/turf_decal/trimline/green/warning, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/dim/directional/north, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/fore) "uZV" = ( /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/machinery/door/airlock/hatch{ @@ -78134,6 +78101,11 @@ /obj/machinery/light/directional/north, /turf/open/floor/plating, /area/station/service/chapel/funeral) +"vaO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/structure/electrified_grille, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "vaQ" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 9 @@ -78158,16 +78130,6 @@ /obj/structure/girder/reinforced, /turf/open/floor/plating, /area/station/engineering/atmos) -"vba" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "vbg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -78178,13 +78140,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port/aft) -"vbs" = ( -/obj/effect/turf_decal/stripes{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) "vbx" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/siding/thinplating_new{ @@ -78206,17 +78161,11 @@ /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/floor/grass, /area/station/science/genetics) -"vbT" = ( +"vbW" = ( +/obj/effect/decal/cleanable/oil, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/corner, -/obj/structure/table/reinforced, -/obj/item/storage/box/lights/mixed{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/toolbox/electrical, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "vcd" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/machinery/airalarm/directional/west, @@ -78229,6 +78178,14 @@ /obj/effect/turf_decal/trimline/green/filled/line, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"vch" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "vcr" = ( /turf/closed/wall, /area/station/maintenance/floor1/port/aft) @@ -78242,16 +78199,6 @@ /obj/structure/sink/kitchen/directional/west, /turf/open/floor/catwalk_floor/iron_white, /area/station/cargo/miningdock) -"vdc" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/commons/storage/primary) "vdd" = ( /obj/effect/turf_decal/trimline/red, /obj/machinery/atmospherics/miner/nitrogen, @@ -78260,12 +78207,6 @@ "vdf" = ( /turf/open/floor/catwalk_floor, /area/station/hallway/floor1/aft) -"vdn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) "vds" = ( /obj/structure/table, /obj/item/paper_bin, @@ -78308,20 +78249,6 @@ }, /turf/open/floor/wood, /area/station/service/theater) -"veD" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/obj/structure/railing{ - layer = 3.1 - }, -/obj/effect/decal/cleanable/robot_debris, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/drone_bay) "veF" = ( /obj/effect/turf_decal/siding/white{ dir = 4 @@ -78362,6 +78289,12 @@ dir = 4 }, /area/station/service/chapel) +"vfc" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) "vff" = ( /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/machinery/door/airlock/hatch{ @@ -78373,17 +78306,19 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/floor2/port) -"vfi" = ( +"vfj" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"vfG" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/pod, +/area/station/maintenance/floor4/port/fore) +"vfH" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/warehouse) +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard) "vfI" = ( /obj/structure/chair/stool/bar/directional/north, /obj/effect/turf_decal/tile/purple/fourcorners, @@ -78478,26 +78413,25 @@ /obj/machinery/air_sensor/nitrous_tank, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) +"vgY" = ( +/obj/structure/rack, +/obj/item/reagent_containers/spray/cleaner{ + pixel_y = -5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/aft) "vhd" = ( /obj/machinery/smartfridge, /obj/machinery/door/firedoor, /obj/machinery/duct, /turf/open/floor/plating, /area/station/service/kitchen) -"vhj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"vhq" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, +"vhp" = ( +/obj/structure/ladder, /obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/starboard/aft) "vhr" = ( /obj/structure/bed, /obj/item/bedsheet/ian, @@ -78522,19 +78456,6 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port) -"vhP" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/obj/structure/tank_holder/emergency_oxygen, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 - }, -/area/station/medical/abandoned) "vhS" = ( /obj/machinery/light/dim/directional/south, /turf/open/openspace, @@ -78569,6 +78490,13 @@ /obj/machinery/vending/coffee, /turf/open/floor/iron, /area/station/commons/fitness) +"viv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/secondary/exit) "vix" = ( /obj/effect/mapping_helpers/airlock/access/all/medical/cmo, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -78588,15 +78516,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/service/chapel/office) -"viE" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/structure/table/reinforced/rglass, -/obj/item/paper_bin, -/obj/item/stamp/head/cmo, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) "viL" = ( /obj/effect/turf_decal/trimline/purple/line{ dir = 5 @@ -78657,14 +78576,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/kitchen, /area/station/service/kitchen/abandoned) -"vju" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) "vjv" = ( /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit) @@ -78710,6 +78621,17 @@ dir = 8 }, /area/station/hallway/floor3/aft) +"vke" = ( +/obj/effect/turf_decal/trimline/purple/warning{ + dir = 8 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/structure/closet/firecloset, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "vko" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/west, @@ -78722,13 +78644,6 @@ dir = 5 }, /area/station/security/office) -"vkz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 6 - }, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) "vkO" = ( /obj/structure/closet/firecloset, /obj/effect/decal/cleanable/dirt, @@ -78795,6 +78710,17 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/cafeteria, /area/station/service/theater) +"vlr" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/gun/ballistic/revolver/russian, +/turf/open/floor/wood/large, +/area/station/maintenance/floor4/starboard/aft) +"vlt" = ( +/obj/structure/sign/poster/contraband/atmosia_independence/directional/west, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/fore) "vlD" = ( /obj/machinery/light/directional/east, /obj/effect/landmark/start/hangover, @@ -78835,10 +78761,6 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor2/starboard/fore) -"vlX" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/red, -/area/station/maintenance/floor3/port/aft) "vlY" = ( /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/effect/mapping_helpers/airlock/abandoned, @@ -78853,6 +78775,11 @@ dir = 1 }, /area/station/hallway/floor3/fore) +"vmh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white/smooth_corner, +/area/station/cargo/miningdock) "vmj" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -79001,6 +78928,13 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/cafeteria, /area/station/service/theater) +"voc" = ( +/obj/effect/turf_decal/stripes{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/aft) "vog" = ( /obj/structure/bed/maint{ pixel_y = 14 @@ -79027,26 +78961,6 @@ /obj/structure/sign/departments/evac/directional/west, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) -"vok" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/item/pen/survival, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "vol" = ( /obj/structure/rack, /obj/machinery/light/directional/west, @@ -79059,6 +78973,11 @@ /obj/item/pen, /turf/open/floor/iron/dark, /area/station/command/teleporter) +"voq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/dim/directional/north, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "vox" = ( /obj/machinery/camera/autoname/directional/west, /turf/open/floor/carpet/orange, @@ -79084,6 +79003,13 @@ /obj/structure/closet/firecloset, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port) +"voP" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/starboard/fore) "voT" = ( /turf/closed/wall, /area/station/maintenance/floor4/port/fore) @@ -79118,11 +79044,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/carpet/red, /area/station/service/theater) -"vpn" = ( -/obj/machinery/biogenerator, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) "vpp" = ( /obj/structure/stairs/north, /turf/open/floor/iron, @@ -79246,26 +79167,6 @@ /obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard/aft) -"vqS" = ( -/obj/effect/decal/cleanable/oil/streak, -/obj/effect/decal/cleanable/dirt, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"vqT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/growing/tray, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"vrh" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/commons/storage/primary) "vrk" = ( /obj/structure/table, /obj/machinery/newscaster/directional/east, @@ -79327,16 +79228,6 @@ /obj/effect/spawner/random/structure/closet_empty, /turf/open/floor/pod/light, /area/station/maintenance/floor3/starboard) -"vrX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) "vsj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -79382,6 +79273,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/xenobiology/hallway) +"vsE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/contraband/landmine, +/turf/open/floor/engine{ + icon_state = "podfloor_light" + }, +/area/station/maintenance/floor4/port) "vsK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/showroomfloor, @@ -79436,19 +79334,6 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/carpet/red, /area/station/service/theater) -"vtj" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/item/folder/yellow, -/obj/item/wrench, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "vtt" = ( /obj/machinery/door/airlock/atmos{ name = "Atmospherics" @@ -79477,6 +79362,14 @@ dir = 10 }, /area/station/command/bridge) +"vtL" = ( +/obj/effect/turf_decal/stripes{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/aft) "vtO" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -79598,6 +79491,11 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/port/fore) +"vuU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "vuV" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=2-13"; @@ -79653,10 +79551,6 @@ dir = 4 }, /area/station/engineering/lobby) -"vvT" = ( -/obj/machinery/atm/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) "vvX" = ( /obj/machinery/door_buttons/access_button{ idDoor = "virology_airlock_exterior"; @@ -79694,6 +79588,23 @@ }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"vwg" = ( +/obj/machinery/door/airlock/medical{ + name = "The Blue Door" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/unres, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/blue, +/area/station/maintenance/floor3/port/aft) +"vwm" = ( +/obj/machinery/light/dim/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "vwv" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -79701,20 +79612,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"vwC" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/paper_bin/construction{ - pixel_x = 6; - pixel_y = 7 - }, -/obj/item/pen, -/obj/item/stamp/head/ce{ - pixel_x = -8 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/heads_quarters/ce) "vwD" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -79762,6 +79659,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/security/eva) +"vxw" = ( +/obj/structure/sign/poster/contraband/random/directional/west, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 8 + }, +/obj/item/plant_analyzer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "vxx" = ( /turf/open/floor/iron/dark/textured_edge{ dir = 1 @@ -79971,14 +79877,6 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/white/textured_large, /area/station/service/chapel) -"vzx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) "vzO" = ( /obj/machinery/status_display/ai/directional/north, /turf/open/floor/iron/dark/side{ @@ -80001,6 +79899,11 @@ /obj/structure/table/wood/poker, /turf/open/floor/carpet/green, /area/station/service/bar/atrium) +"vzU" = ( +/obj/structure/ladder, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "vzY" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/bookcase/random/fiction, @@ -80052,12 +79955,14 @@ dir = 8 }, /area/station/hallway/floor1/fore) -"vAB" = ( +"vAK" = ( +/obj/effect/turf_decal/trimline/blue/line{ + dir = 4 + }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/wrapping, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "vAU" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 @@ -80090,16 +79995,6 @@ dir = 1 }, /area/station/security/brig) -"vBd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/crayon{ - icon_state = "body" - }, -/obj/effect/decal/cleanable/chem_pile, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) "vBk" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/suit_storage_unit/medical, @@ -80110,6 +80005,14 @@ /obj/machinery/defibrillator_mount/directional/south, /turf/open/floor/iron/dark, /area/station/medical/surgery/fore) +"vBp" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/food_or_drink/condiment, +/obj/item/flashlight, +/obj/machinery/light/dim/directional/west, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "vBA" = ( /obj/machinery/door/airlock/medical{ name = "Safe Habitation B" @@ -80208,6 +80111,13 @@ "vDo" = ( /turf/open/floor/plating/foam, /area/station/maintenance/floor3/starboard/fore) +"vDq" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/holopad, +/obj/effect/landmark/navigate_destination/dockarrival, +/obj/machinery/atm/directional/south, +/turf/open/floor/iron/textured_large, +/area/station/hallway/secondary/entry) "vDz" = ( /obj/machinery/vending/wardrobe/sec_wardrobe, /obj/effect/turf_decal/tile/red/fourcorners, @@ -80321,6 +80231,16 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/service/bar) +"vFx" = ( +/obj/structure/frame/computer{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/window/reinforced/tinted/spawner/directional/east, +/turf/open/floor/wood, +/area/station/commons/vacant_room/office) "vFB" = ( /turf/open/floor/engine, /area/station/science/cytology) @@ -80334,12 +80254,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/floor1/port/aft) -"vFS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "vFV" = ( /obj/effect/turf_decal/trimline/blue/end, /obj/effect/mapping_helpers/airlock/access/any/command/general, @@ -80487,17 +80401,6 @@ /obj/effect/spawner/random/engineering/tank, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/port) -"vHz" = ( -/obj/machinery/field/generator, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) "vHC" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ dir = 8 @@ -80509,13 +80412,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) -"vHN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/broken/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit) "vHQ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -80526,12 +80422,6 @@ /obj/effect/turf_decal/tile/yellow/half/contrasted, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"vHX" = ( -/obj/effect/spawner/random/decoration/glowstick, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "vHZ" = ( /obj/structure/cable, /obj/effect/spawner/random/structure/grille, @@ -80618,6 +80508,14 @@ /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/iron/white, /area/station/medical/abandoned) +"vJb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/textured_large, +/area/station/hallway/secondary/exit/departure_lounge) "vJf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/portable_atmospherics/canister/air, @@ -80684,10 +80582,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"vKs" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) "vKt" = ( /obj/machinery/chem_master, /turf/open/floor/pod/light, @@ -80702,12 +80596,6 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/engine/cult, /area/station/service/chapel) -"vKH" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "vKY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -80790,6 +80678,20 @@ }, /turf/open/floor/iron, /area/station/hallway/floor1/fore) +"vLT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/sign/poster/official/safety_internals/directional/south, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/fore) +"vLV" = ( +/obj/structure/closet/emcloset, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/fore) "vLW" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/captain) @@ -80812,15 +80714,20 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/plating, /area/station/cargo/sorting) -"vMm" = ( +"vMr" = ( +/obj/structure/rack, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 +/obj/effect/spawner/random/mod/maint, +/turf/open/floor/wood, +/area/station/maintenance/floor3/starboard/aft) +"vMw" = ( +/obj/effect/decal/cleanable/blood/tracks, +/obj/structure/chair{ + dir = 4 }, -/area/station/hallway/secondary/exit/escape_pod) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/maintenance/floor2/starboard/aft) "vMB" = ( /obj/structure/table/reinforced, /obj/item/seeds/cannabis, @@ -80841,12 +80748,16 @@ /obj/structure/cable, /turf/open/floor/iron/dark/textured, /area/station/command/heads_quarters/ce) -"vMX" = ( -/obj/structure/sign/poster/official/plasma_effects/directional/east, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/suit_storage_unit/medical, -/turf/open/floor/iron/white, -/area/station/medical/storage) +"vMK" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "vNa" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/iron/chapel{ @@ -80882,6 +80793,17 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/department/medical) +"vND" = ( +/obj/structure/table/wood, +/obj/item/plate/large{ + pixel_y = 2 + }, +/obj/item/food/pizza/dank{ + pixel_y = 6 + }, +/obj/structure/sign/poster/contraband/pwr_game/directional/east, +/turf/open/floor/carpet/purple, +/area/station/maintenance/floor1/port/aft) "vNF" = ( /obj/machinery/light/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -81042,6 +80964,10 @@ dir = 1 }, /area/station/hallway/floor1/fore) +"vOP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "vOW" = ( /obj/structure/disposaloutlet{ dir = 4 @@ -81055,13 +80981,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/service) -"vPu" = ( -/obj/machinery/light/dim/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) "vPA" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional, /turf/open/floor/plating, @@ -81159,6 +81078,20 @@ }, /turf/open/floor/iron/white, /area/station/medical/storage) +"vQF" = ( +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/trimline/brown/line, +/turf/open/floor/iron/dark/smooth_half, +/area/station/cargo/drone_bay) "vQR" = ( /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron/dark/side{ @@ -81256,6 +81189,14 @@ }, /turf/open/floor/plating, /area/station/construction) +"vRX" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/structure/sign/poster/official/moth_meth/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "vSa" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark/side{ @@ -81276,27 +81217,18 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/pod, /area/station/maintenance/floor4/port/fore) -"vSQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"vSS" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/smes{ - charge = 5e+006 - }, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server/upper) "vSX" = ( /obj/structure/toilet{ dir = 4 }, /turf/open/floor/iron/showroomfloor, /area/station/service/kitchen/diner) +"vTd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/robot_debris/down, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "vTf" = ( /obj/machinery/airalarm/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -81436,20 +81368,6 @@ }, /turf/open/floor/carpet/green, /area/station/service/bar/atrium) -"vVb" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/delivery_chute{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/filled/arrow_cw, -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/turf_decal/trimline/green/filled/mid_joiner, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) "vVf" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -81602,15 +81520,6 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard) -"vXc" = ( -/obj/structure/grille/broken, -/obj/effect/turf_decal/trimline/red/line{ - dir = 5 - }, -/obj/effect/spawner/random/contraband/permabrig_weapon, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "vXh" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/line{ @@ -81626,20 +81535,6 @@ /obj/machinery/duct, /turf/open/floor/wood, /area/station/service/bar/atrium) -"vXn" = ( -/obj/machinery/button/door/directional/south{ - id = "survhang"; - name = "Hangar Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 10 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "vXr" = ( /obj/machinery/door/airlock/freezer{ name = "Cold Room" @@ -81650,25 +81545,6 @@ /obj/machinery/duct, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/station/service/kitchen/coldroom) -"vXG" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/structure/sign/poster/contraband/red_rum/directional/east, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/fitness) -"vXH" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"vXM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "vXT" = ( /obj/structure/railing{ dir = 4 @@ -81702,12 +81578,6 @@ /obj/effect/spawner/random/trash/moisture_trap, /turf/open/floor/pod/dark, /area/station/maintenance/floor1/starboard/aft) -"vYD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) "vYH" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{ dir = 6 @@ -81795,11 +81665,13 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"wab" = ( +"wai" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "wau" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -81828,6 +81700,19 @@ /obj/structure/sink/directional/north, /turf/open/floor/iron/white, /area/station/medical/surgery/fore) +"wbd" = ( +/obj/effect/turf_decal/tile/green/half{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Escape Pod C" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/escape_pod) "wbf" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4, @@ -81874,12 +81759,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/hallway/floor4/fore) -"wbx" = ( +"wbu" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/medical/abandoned) "wbS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -81902,6 +81786,12 @@ }, /turf/open/floor/iron/dark, /area/station/security/range) +"wcl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/station/hallway/floor3/fore) "wcm" = ( /obj/structure/chair{ dir = 1 @@ -82042,6 +81932,11 @@ "wdd" = ( /turf/closed/wall, /area/station/medical/treatment_center) +"wde" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/mop, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "wdj" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 4 @@ -82132,6 +82027,12 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) +"wdY" = ( +/obj/machinery/atm/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/floor3/fore) "wdZ" = ( /obj/machinery/conveyor{ dir = 6; @@ -82146,6 +82047,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/floor1/aft) +"wef" = ( +/obj/effect/turf_decal/trimline/blue/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "weg" = ( /obj/structure/sign/poster/official/random/directional/east, /obj/effect/turf_decal/arrows, @@ -82200,6 +82111,13 @@ }, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"wfv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "wfx" = ( /obj/machinery/door/window/brigdoor/left/directional/west, /obj/structure/cable, @@ -82210,6 +82128,18 @@ }, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) +"wfC" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/wardrobe/grey, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "wfD" = ( /obj/machinery/light/directional/east, /obj/structure/disposalpipe/segment{ @@ -82233,13 +82163,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/commons/dorms/apartment2) -"wfS" = ( -/obj/effect/turf_decal/trimline/purple/warning, -/obj/machinery/airalarm/directional/north, -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) "wfT" = ( /turf/closed/wall, /area/station/engineering/atmos/office) @@ -82338,14 +82261,6 @@ "whR" = ( /turf/closed/wall, /area/station/service/bar) -"whU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/mirror/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/sink/directional/south, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) "whV" = ( /turf/closed/wall, /area/station/maintenance/floor1/starboard) @@ -82355,16 +82270,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/virology) -"wir" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "wit" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -82416,14 +82321,6 @@ /obj/structure/sign/directions/ptl/directional/east, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"wiH" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood, -/obj/effect/spawner/random/bureaucracy, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/structure/window/reinforced/tinted/spawner/directional/east, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) "wiJ" = ( /obj/effect/decal/cleanable/dirt, /obj/item/assembly/mousetrap, @@ -82448,6 +82345,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/engineering/lobby) +"wiO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/light_switch/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/port/aft) "wiR" = ( /obj/structure/table, /obj/effect/turf_decal/tile/red, @@ -82523,6 +82428,21 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"wkc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) +"wkg" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/table/wood, +/obj/effect/spawner/random/bureaucracy, +/obj/structure/window/reinforced/tinted/spawner/directional/north, +/obj/structure/window/reinforced/tinted/spawner/directional/east, +/turf/open/floor/carpet, +/area/station/commons/vacant_room/office) "wkm" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/cable, @@ -82530,19 +82450,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/parquet, /area/station/medical/break_room) -"wkn" = ( -/obj/structure/cable, +"wku" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"wkr" = ( -/obj/item/storage/box/lights/bulbs, -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "wkv" = ( /obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 @@ -82561,18 +82475,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/port/aft) -"wky" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"wkF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) "wkH" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -82635,6 +82537,13 @@ /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/open/floor/iron/dark, /area/station/engineering/atmos/pumproom) +"wlC" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/west, +/turf/open/floor/grass, +/area/station/hallway/secondary/exit/departure_lounge) "wlF" = ( /obj/effect/spawner/random/entertainment/arcade{ dir = 1 @@ -82721,6 +82630,18 @@ /obj/effect/baseturf_helper/reinforced_plating/ceiling, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/hallway) +"wmy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/spawner/random/maintenance, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door/directional/east{ + id = "maint-shut"; + name = "Shutters Control" + }, +/turf/open/floor/plating, +/area/station/maintenance/floor2/port/aft) "wmz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -82737,11 +82658,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) -"wmD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/toy/figure/syndie, -/turf/open/floor/pod/light, -/area/station/security/execution/education) "wmG" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -82789,6 +82705,11 @@ }, /turf/open/floor/iron, /area/station/hallway/floor3/aft) +"wnw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/table_or_rack, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "wnI" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical{ @@ -82821,6 +82742,20 @@ /obj/effect/decal/cleanable/glass, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) +"wnT" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/item/paper_bin/construction{ + pixel_x = 6; + pixel_y = 7 + }, +/obj/item/pen, +/obj/item/stamp/head/ce{ + pixel_x = -8 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/command/heads_quarters/ce) "woa" = ( /obj/structure/girder/reinforced, /obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle{ @@ -82902,6 +82837,15 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron/checker, /area/station/service/bar) +"woJ" = ( +/obj/structure/rack, +/obj/item/trash/champagne_cork{ + pixel_x = 8; + pixel_y = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "woK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/red/half, @@ -82929,6 +82873,16 @@ }, /turf/open/floor/plating, /area/station/science/genetics) +"wpv" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/white/line{ + dir = 5 + }, +/turf/open/floor/iron/large, +/area/station/command/gateway) "wpE" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 @@ -82956,6 +82910,14 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/floor1/fore) +"wpU" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted/spawner/directional/north, +/obj/structure/closet/masks, +/turf/open/floor/iron/dark, +/area/station/hallway/floor2/fore) "wpV" = ( /obj/structure/chair/sofa/bench/left, /obj/structure/cable, @@ -82998,17 +82960,6 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"wqF" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/gloves/cargo_gauntlet, -/obj/item/clothing/gloves/cargo_gauntlet, -/obj/item/clothing/gloves/cargo_gauntlet, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "wqN" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -83017,6 +82968,11 @@ dir = 8 }, /area/station/hallway/floor1/aft) +"wqO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/furniture_parts, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "wqS" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -83077,6 +83033,19 @@ /obj/structure/sign/poster/random/directional/north, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) +"wrA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/mess, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) +"wrE" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "wrJ" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -83117,6 +83086,14 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor4/port/fore) +"wsk" = ( +/obj/machinery/door/airlock/command{ + name = "Rusted Airlock" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/floor2/starboard/aft) "wsl" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -83160,13 +83137,6 @@ /obj/machinery/duct, /turf/open/floor/iron/showroomfloor, /area/station/commons/fitness) -"wsH" = ( -/obj/effect/spawner/random/entertainment/arcade{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor2/starboard) "wsL" = ( /obj/structure/table/wood, /turf/open/floor/bamboo/tatami/black, @@ -83180,6 +83150,16 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"wsQ" = ( +/obj/effect/spawner/random/structure/chair_maintenance{ + dir = 8 + }, +/obj/item/toy/plush/pkplush{ + name = "Hug Emoji" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard) "wsS" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -83266,10 +83246,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) -"wtL" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) "wtM" = ( /obj/machinery/door/airlock/grunge{ name = "Courtroom" @@ -83298,6 +83274,15 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"wud" = ( +/obj/item/storage/bag/plants/portaseeder, +/obj/item/plant_analyzer, +/obj/item/cultivator, +/obj/structure/rack, +/obj/item/vending_refill/hydroseeds, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard) "wug" = ( /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, @@ -83382,21 +83367,12 @@ }, /turf/open/floor/iron, /area/station/hallway/floor2/fore) -"wvg" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) "wvi" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/dark/textured, /area/station/medical/morgue) -"wvo" = ( -/obj/machinery/chem_dispenser, -/obj/structure/sign/poster/official/periodic_table/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) "wvq" = ( /turf/open/floor/iron/dark, /area/station/command/teleporter) @@ -83445,21 +83421,6 @@ /obj/item/pneumatic_cannon/pie, /turf/open/floor/carpet/red, /area/station/service/theater) -"wwi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"wwk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) "wwm" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -83474,13 +83435,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor1/fore) -"wwp" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/structure/chair/stool/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) "wwu" = ( /turf/closed/wall, /area/station/maintenance/floor2/starboard/fore) @@ -83593,6 +83547,11 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/circuits) +"wxo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash/graffiti, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "wxw" = ( /obj/item/radio/intercom/directional/south, /obj/machinery/door/airlock/public/glass{ @@ -83685,24 +83644,10 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron, /area/station/commons/fitness) -"wys" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) "wyv" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, /area/station/security/range) -"wyC" = ( -/obj/effect/spawner/random/structure/crate_loot, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) "wyD" = ( /obj/effect/turf_decal/tile/red/full, /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ @@ -83724,6 +83669,17 @@ /obj/structure/sign/poster/random/directional/south, /turf/open/floor/carpet/red, /area/station/service/theater) +"wyO" = ( +/obj/effect/turf_decal/caution/stand_clear/white{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/effect/spawner/random/decoration/glowstick, +/turf/open/floor/pod, +/area/station/maintenance/floor4/starboard/aft) "wyU" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -83778,6 +83734,12 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/white/textured_large, /area/station/service/chapel/office) +"wzF" = ( +/obj/structure/sign/poster/official/random/directional/north, +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard) "wzS" = ( /obj/structure/table, /obj/machinery/door/window/left/directional/north{ @@ -83833,6 +83795,19 @@ /obj/effect/turf_decal/tile/purple, /turf/open/floor/iron, /area/station/science/research/abandoned) +"wAv" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/starboard/aft) +"wAy" = ( +/obj/machinery/light/dim/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "wAz" = ( /obj/machinery/vending/autodrobe, /obj/machinery/light_switch/directional/east, @@ -83848,6 +83823,15 @@ /obj/structure/table, /turf/open/floor/iron/checker, /area/station/commons/dorms/apartment2) +"wAK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/green/half{ + dir = 1 + }, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/secondary/exit/escape_pod) "wAM" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 1 @@ -83878,17 +83862,24 @@ }, /turf/open/floor/engine/airless, /area/station/engineering/atmos/pumproom) -"wBg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/robot_debris/up, -/obj/item/assembly/prox_sensor, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) "wBq" = ( /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) +"wBu" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/shieldgen, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "wBA" = ( /obj/structure/table, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -83977,6 +83968,13 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/engine, /area/station/engineering/supermatter) +"wCv" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/purple/warning, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "wCG" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 1 @@ -83986,14 +83984,6 @@ dir = 5 }, /area/station/hallway/floor2/aft) -"wCR" = ( -/obj/effect/turf_decal/tile/red/anticorner, -/obj/structure/bed/maint, -/obj/item/reagent_containers/cup/glass/bottle/hooch, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/turf/open/floor/stone, -/area/station/maintenance/floor1/port) "wCX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -84085,11 +84075,6 @@ /obj/item/storage/toolbox/mechanical, /turf/open/floor/iron/dark, /area/station/security/brig) -"wDS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor3/port/aft) "wEr" = ( /obj/structure/rack, /obj/machinery/light/dim/directional/east, @@ -84257,13 +84242,6 @@ "wGl" = ( /turf/open/openspace, /area/station/maintenance/floor2/starboard) -"wGq" = ( -/obj/effect/decal/cleanable/blood/tracks, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) "wGA" = ( /obj/structure/window/spawner/directional/north, /obj/structure/table/reinforced, @@ -84330,16 +84308,6 @@ /obj/effect/turf_decal/tile/green/full, /turf/open/floor/iron, /area/station/service/janitor) -"wHa" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) "wHe" = ( /obj/structure/table, /obj/machinery/cell_charger{ @@ -84362,15 +84330,12 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"wHr" = ( +"wHk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3; - spawn_scatter_radius = 1 - }, -/obj/structure/spider/stickyweb, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/medical/abandoned) "wHs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -84382,10 +84347,6 @@ /obj/machinery/holopad, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hop) -"wHv" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) "wHw" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/green/half/contrasted{ @@ -84429,19 +84390,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/warden) -"wHV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/item/stack/cable_coil/cut, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"wIe" = ( -/obj/machinery/light/dim/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/aft) "wIn" = ( /obj/structure/sign/poster/official/random/directional/west, /obj/structure/easel, @@ -84557,16 +84505,6 @@ /obj/structure/holosign/barrier/engineering, /turf/open/floor/iron, /area/station/engineering/atmos/project) -"wJq" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "wJx" = ( /obj/structure/table/wood, /obj/item/paint_palette, @@ -84584,6 +84522,12 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/floor1/starboard) +"wJE" = ( +/obj/structure/cable, +/obj/effect/turf_decal/stripes, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "wJG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -84614,13 +84558,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/starboard) -"wJM" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/item/kirbyplants/random/fullysynthetic, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) "wJR" = ( /obj/structure/table, /obj/item/plate{ @@ -84710,6 +84647,11 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/floor2/fore) +"wKt" = ( +/obj/structure/table/bronze, +/obj/item/book/bible, +/turf/open/floor/iron, +/area/station/service/chapel) "wKz" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -84724,6 +84666,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/floor2/port/aft) +"wKB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/floor4/starboard/aft) "wKC" = ( /obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, @@ -84779,14 +84728,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"wLj" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/food_or_drink/condiment, -/obj/item/flashlight, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "wLl" = ( /obj/structure/ladder, /obj/effect/turf_decal/stripes/white/line, @@ -84844,6 +84785,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/floor2/port) +"wMf" = ( +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "wMr" = ( /obj/machinery/door/airlock{ id_tag = "dorms_3_bolts"; @@ -84880,6 +84828,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) +"wMP" = ( +/obj/effect/turf_decal/trimline/blue/corner{ + dir = 4 + }, +/obj/machinery/light/small/blacklight/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "wMQ" = ( /obj/effect/turf_decal/bot, /obj/effect/spawner/random/structure/crate, @@ -84959,6 +84918,15 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/commons/dorms/room3) +"wNO" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/solars/starboard/aft) +"wNQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor3/starboard/aft) "wNR" = ( /obj/machinery/airalarm/directional/west, /obj/structure/rack, @@ -84973,11 +84941,6 @@ }, /turf/open/floor/plating, /area/station/security/brig) -"wOd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "wOg" = ( /obj/effect/turf_decal/tile/brown{ dir = 4 @@ -85020,14 +84983,6 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard) -"wOy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/closet/toolcloset, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "wOE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -85148,6 +85103,13 @@ dir = 1 }, /area/station/hallway/secondary/entry) +"wQi" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + name = "killroom vent" + }, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/turf/open/floor/engine/telecomms, +/area/station/science/xenobiology) "wQo" = ( /turf/closed/wall, /area/station/security/prison/garden) @@ -85159,6 +85121,14 @@ dir = 1 }, /area/station/hallway/floor2/aft) +"wQx" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "aband_armour"; + name = "Armoury Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/maintenance/floor2/starboard/aft) "wQA" = ( /obj/machinery/door/window/brigdoor/right/directional/east{ req_access = list("maint_tunnels") @@ -85200,13 +85170,6 @@ /obj/effect/turf_decal/tile/blue/opposingcorners, /turf/open/floor/iron/dark, /area/station/hallway/floor4/fore) -"wQX" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) "wQY" = ( /obj/machinery/duct, /turf/open/floor/iron/dark/side, @@ -85309,20 +85272,6 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) -"wSP" = ( -/obj/machinery/door/airlock{ - name = "Escape Pod A" - }, -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) "wSR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, @@ -85419,21 +85368,14 @@ }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"wUy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) "wUA" = ( /turf/open/floor/iron/dark/textured, /area/station/medical/surgery/aft) +"wUC" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "wUF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -85484,6 +85426,13 @@ }, /turf/open/floor/engine, /area/station/command/heads_quarters/rd) +"wVa" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/maintenance/floor3/port) "wVf" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/effect/mapping_helpers/airlock/access/any/medical/general, @@ -85519,13 +85468,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port) -"wVr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) "wVs" = ( /obj/structure/table, /obj/item/storage/toolbox/electrical, @@ -85544,6 +85486,12 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/pod/light, /area/station/maintenance/solars/starboard/aft) +"wVI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/spawner/random/structure/grille, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/aft) "wVN" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /obj/machinery/meter, @@ -85606,10 +85554,6 @@ /obj/effect/turf_decal/trimline/purple, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"wWo" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) "wWw" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -85652,6 +85596,11 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard) +"wXw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "wXy" = ( /obj/machinery/airalarm/directional/north, /mob/living/basic/bot/cleanbot, @@ -85695,14 +85644,16 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron/white, /area/station/science/lobby) -"wYl" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/structure/cable, +"wXZ" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) +/turf/closed/wall/r_wall, +/area/station/maintenance/floor4/starboard) +"wYk" = ( +/obj/effect/decal/cleanable/blood/splatter, +/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/maintenance/floor3/starboard/aft) "wYs" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/carpet, @@ -85722,6 +85673,14 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark, /area/station/commons/storage/tools) +"wYx" = ( +/obj/effect/turf_decal/trimline/blue/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "wYB" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -85770,6 +85729,14 @@ dir = 8 }, /area/station/security/brig) +"wZb" = ( +/obj/item/stack/sheet/iron, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor3/starboard/aft) "wZr" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /obj/machinery/door/firedoor, @@ -85859,15 +85826,6 @@ /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron/dark/side, /area/station/hallway/floor4/fore) -"xaA" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/structure/mirror/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment1) "xaG" = ( /obj/machinery/light/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -85950,11 +85908,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"xbF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) "xbK" = ( /obj/structure/closet/emcloset/anchored, /turf/open/floor/pod/light, @@ -86003,14 +85956,6 @@ /obj/machinery/shieldgen, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard/aft) -"xcA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) "xcG" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -86020,6 +85965,14 @@ }, /turf/open/floor/wood/parquet, /area/station/medical/psychology) +"xcM" = ( +/obj/effect/turf_decal/trimline/green/arrow_cw{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/cargo/miningdock) "xcN" = ( /obj/structure/railing{ dir = 1 @@ -86091,15 +86044,6 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/commons/toilet) -"xdm" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"xdy" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "xdB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -86250,6 +86194,11 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/pod/light, /area/station/maintenance/floor3/port/aft) +"xfM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset, +/turf/open/floor/pod/light, +/area/station/maintenance/floor2/port/aft) "xfT" = ( /turf/open/floor/plating, /area/station/maintenance/floor1/port) @@ -86295,6 +86244,12 @@ "xgH" = ( /turf/closed/wall, /area/station/maintenance/floor1/port) +"xgI" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "xgN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -86414,11 +86369,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/textured_large, /area/station/cargo/miningdock) -"xhU" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "xhV" = ( /obj/item/restraints/handcuffs, /obj/structure/table/optable, @@ -86494,14 +86444,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/floor2/port/aft) -"xiL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/medical/abandoned) "xiO" = ( /obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer2{ dir = 4 @@ -86557,12 +86499,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/first) -"xjX" = ( -/obj/structure/rack, -/obj/item/paint/paint_remover, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "xkf" = ( /obj/effect/spawner/random/structure/crate_empty, /turf/open/floor/pod/light, @@ -86621,11 +86557,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"xkG" = ( -/obj/structure/closet, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) "xkN" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/item/hatchet, @@ -86716,6 +86647,15 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/wood/tile, /area/station/service/library) +"xme" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced/plasmarglass, +/obj/item/reagent_containers/pill/cyanide{ + desc = "What could it be?"; + name = "red pill" + }, +/turf/open/floor/carpet/red, +/area/station/maintenance/floor3/port/aft) "xmh" = ( /obj/structure/table, /obj/effect/turf_decal/tile/green/opposingcorners, @@ -86730,6 +86670,14 @@ }, /turf/open/floor/wood/tile, /area/station/service/library) +"xmC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/floor1/port) "xmG" = ( /obj/effect/turf_decal/trimline/red/line{ dir = 1 @@ -86801,10 +86749,14 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard/fore) -"xnw" = ( -/obj/structure/sign/poster/contraband/moffuchis_pizza/directional/east, -/turf/open/floor/carpet/royalblue, -/area/station/medical/break_room) +"xnu" = ( +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor2/starboard) "xny" = ( /obj/machinery/door/airlock/medical{ name = "CMO Quarters" @@ -86878,6 +86830,13 @@ "xpt" = ( /turf/open/floor/mineral/plastitanium, /area/station/maintenance/floor2/starboard/aft) +"xpy" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/aft) "xpA" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -86999,19 +86958,6 @@ dir = 4 }, /area/station/command/teleporter) -"xrj" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"xrq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) "xrs" = ( /obj/machinery/computer/shuttle/mining{ dir = 8 @@ -87036,15 +86982,6 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"xrY" = ( -/obj/machinery/button/door/directional/north{ - id = "survshop"; - name = "Workshop Shutters" - }, -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) "xsf" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Access" @@ -87137,10 +87074,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/service/hydroponics) -"xsX" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/turf/open/openspace, -/area/station/maintenance/floor3/port) +"xsY" = ( +/obj/effect/turf_decal/trimline/red/line{ + dir = 9 + }, +/obj/effect/spawner/random/structure/crate_loot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "xtd" = ( /obj/effect/turf_decal/tile/green{ dir = 1 @@ -87259,6 +87200,24 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/port/aft) +"xur" = ( +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/brown/line, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 8 + }, +/area/station/cargo/drone_bay) "xuv" = ( /turf/closed/wall/r_wall, /area/station/maintenance/floor2/starboard/fore) @@ -87279,15 +87238,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/white, /area/station/medical/psychology) -"xuR" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/structure/mirror/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/sink/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment2) "xuW" = ( /obj/effect/turf_decal/trimline/red/line, /obj/effect/turf_decal/trimline/white/warning, @@ -87356,14 +87306,14 @@ }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"xvO" = ( -/obj/effect/decal/cleanable/oil, +"xvP" = ( +/obj/machinery/atmospherics/components/unary/portables_connector{ + dir = 1 + }, +/obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) +/turf/open/floor/plating, +/area/station/maintenance/floor2/port) "xvW" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/white/corner{ @@ -87458,20 +87408,6 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/station/service/kitchen/coldroom) -"xwP" = ( -/obj/machinery/button/ignition/incinerator/ordmix{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/machinery/button/door/incinerator_vent_ordmix{ - pixel_x = -8; - pixel_y = 32 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/mixingchamber_access, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/burnchamber) "xwX" = ( /obj/structure/easel, /turf/open/floor/bamboo/tatami/black, @@ -87553,6 +87489,10 @@ }, /turf/open/floor/engine, /area/station/science/cytology) +"xya" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/fore) "xyb" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -87601,6 +87541,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard) +"xyT" = ( +/obj/machinery/netpod, +/obj/effect/decal/cleanable/vomit/old{ + pixel_x = -12; + pixel_y = -13 + }, +/obj/item/radio/intercom/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/cargo/drone_bay) "xyU" = ( /obj/effect/decal/cleanable/dirt, /obj/item/picket_sign, @@ -87763,6 +87713,25 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/cargo/lobby) +"xBk" = ( +/obj/machinery/door/airlock/hatch{ + name = "Maintenance Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/structure/barricade/wooden{ + name = "wooden barricade (KEEP OUT)" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/service/abandoned_gambling_den) "xBl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -87779,6 +87748,11 @@ /obj/structure/closet/l3closet/scientist, /turf/open/floor/iron/dark, /area/station/command/gateway) +"xBy" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/cargo/storage) "xBB" = ( /obj/machinery/door/airlock/public{ id_tag = "theater_toilets"; @@ -87899,6 +87873,17 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/iron/smooth, /area/station/tcommsat/computer) +"xDk" = ( +/obj/machinery/shieldgen, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/engineering/lobby) "xDm" = ( /obj/machinery/button/door/directional/south{ id = "theater_toilets"; @@ -87908,6 +87893,11 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/service/theater) +"xDo" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/structure/sign/poster/contraband/grey_tide/directional/north, +/turf/open/floor/iron/dark/corner, +/area/station/commons/storage/primary) "xDw" = ( /obj/structure/closet/crate/trashcart, /obj/effect/spawner/random/contraband/prison, @@ -87960,6 +87950,17 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"xDR" = ( +/obj/effect/turf_decal/trimline/green/warning{ + dir = 1 + }, +/obj/effect/turf_decal/stripes{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/dim/directional/south, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor2/starboard) "xDS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -88071,13 +88072,6 @@ "xEP" = ( /turf/closed/wall/r_wall, /area/station/security/warden) -"xEY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit) "xFf" = ( /obj/effect/turf_decal/tile/green/half{ dir = 8 @@ -88143,6 +88137,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/hfr_room) +"xFQ" = ( +/obj/effect/spawner/random/structure/crate, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/floor2/port/aft) "xFR" = ( /obj/effect/turf_decal/siding/thinplating_new{ dir = 1 @@ -88172,11 +88174,6 @@ "xGx" = ( /turf/open/floor/plating, /area/station/medical/abandoned) -"xGB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) "xGI" = ( /turf/closed/wall, /area/station/command/heads_quarters/ce) @@ -88204,18 +88201,6 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/qm, /turf/open/floor/iron/textured, /area/station/command/heads_quarters/qm) -"xGT" = ( -/obj/item/emergency_bed, -/obj/item/emergency_bed{ - pixel_y = 3 - }, -/obj/item/emergency_bed{ - pixel_y = 6 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/glass, -/turf/open/floor/iron/white/textured, -/area/station/medical/medbay/central) "xGU" = ( /obj/effect/turf_decal/trimline/brown/warning{ dir = 4 @@ -88225,14 +88210,19 @@ /obj/item/pen, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) +"xHd" = ( +/obj/machinery/power/emitter, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/engineering/lobby) "xHe" = ( /turf/closed/wall, /area/station/maintenance/floor4/starboard/fore) -"xHf" = ( -/obj/structure/chair/wood, +"xHl" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/station/maintenance/floor3/starboard/aft) "xHr" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -88254,6 +88244,11 @@ "xHA" = ( /turf/closed/wall, /area/station/maintenance/disposal) +"xHQ" = ( +/obj/effect/turf_decal/trimline/brown/warning, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/station/maintenance/floor3/port/aft) "xHR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -88261,6 +88256,15 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/port/aft) +"xHS" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "xHT" = ( /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 4 @@ -88325,6 +88329,11 @@ }, /turf/open/floor/plating, /area/station/security/brig) +"xIR" = ( +/obj/machinery/photocopier, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/parquet, +/area/station/service/lawoffice) "xIX" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 @@ -88332,12 +88341,16 @@ /obj/machinery/vending/coffee, /turf/open/floor/iron, /area/station/hallway/floor3/aft) -"xJo" = ( +"xJn" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/airalarm/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, /turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) +/area/station/maintenance/floor2/port/aft) "xJp" = ( /obj/item/canvas/twentyfour_twentyfour, /obj/structure/table, @@ -88422,6 +88435,16 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/pod/light, /area/station/maintenance/floor3/port) +"xKT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_large, +/area/station/engineering/lobby) "xKZ" = ( /obj/machinery/light_switch/directional/north, /obj/machinery/shower/directional/west, @@ -88477,6 +88500,12 @@ "xLs" = ( /turf/open/floor/iron/dark/side, /area/station/hallway/floor2/fore) +"xLu" = ( +/obj/structure/rack, +/obj/item/storage/box/lights/mixed, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port/aft) "xLw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -88519,6 +88548,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port/fore) +"xMd" = ( +/obj/effect/turf_decal/trimline/blue/corner, +/obj/structure/cable, +/obj/machinery/light/small/blacklight/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "xMk" = ( /turf/open/floor/wood/large, /area/station/medical/virology/isolation) @@ -88532,12 +88571,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/command/teleporter) -"xMG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/power/port_gen/pacman, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server/upper) "xMH" = ( /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/machinery/door/airlock/hatch{ @@ -88592,6 +88625,10 @@ /obj/machinery/atmospherics/components/unary/cryo_cell, /turf/open/floor/iron/dark/textured, /area/station/medical/cryo) +"xNr" = ( +/obj/structure/cable, +/turf/closed/wall, +/area/station/cargo/drone_bay) "xNx" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron, @@ -88650,12 +88687,6 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor1/port) -"xOC" = ( -/obj/structure/table/reinforced, -/obj/item/modular_computer/laptop, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard/aft) "xOF" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/dark, @@ -88740,12 +88771,6 @@ /obj/structure/railing, /turf/open/floor/pod/dark, /area/station/maintenance/floor1/starboard/aft) -"xPX" = ( -/obj/machinery/light/dim/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil/streak, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) "xQc" = ( /obj/machinery/light/directional/east, /turf/open/floor/wood, @@ -88756,6 +88781,20 @@ /obj/machinery/status_display/evac/directional/south, /turf/open/floor/iron/dark/textured, /area/station/science/ordnance/storage) +"xQi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/robot_debris/up, +/obj/item/assembly/prox_sensor, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/station/maintenance/floor2/starboard/aft) +"xQj" = ( +/obj/structure/closet/crate/large, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/station/maintenance/floor3/starboard/aft) "xQo" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -88765,13 +88804,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/floor1/aft) -"xQq" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) "xQv" = ( /obj/structure/table, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -88817,14 +88849,6 @@ /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/floor/grass, /area/station/service/library/garden) -"xRs" = ( -/obj/structure/rack, -/obj/item/reagent_containers/spray/cleaner{ - pixel_y = -5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) "xRB" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -88836,6 +88860,15 @@ }, /turf/open/space/openspace, /area/space/nearstation) +"xRF" = ( +/obj/effect/turf_decal/trimline/blue/corner, +/obj/item/wrench, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/telecomms, +/area/station/tcommsat/server/upper) "xRG" = ( /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/iron/dark/textured, @@ -88907,6 +88940,11 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor4/port/fore) +"xSz" = ( +/obj/structure/falsewall, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/floor3/port/aft) "xSB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -88929,16 +88967,11 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/security/detectives_office) -"xTa" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "aband_armour"; - name = "Armoury Shutters" - }, +"xSV" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port) "xTw" = ( /obj/machinery/door/airlock/security{ name = "Monitoring" @@ -88994,11 +89027,6 @@ /obj/effect/turf_decal/tile/green/full, /turf/open/floor/iron, /area/station/service/hydroponics) -"xUp" = ( -/obj/item/kirbyplants/random/dead, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) "xUI" = ( /obj/structure/cable, /obj/structure/chair/sofa/bench/left, @@ -89057,6 +89085,14 @@ /obj/structure/cable, /turf/open/floor/iron/white/textured_large, /area/station/service/chapel) +"xVG" = ( +/obj/effect/turf_decal/tile/red/anticorner{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, +/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, +/turf/open/floor/stone, +/area/station/maintenance/floor1/port) "xVJ" = ( /obj/structure/table, /obj/item/toy/cards/deck, @@ -89087,6 +89123,11 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/pod/dark, /area/station/maintenance/floor4/starboard) +"xVW" = ( +/obj/machinery/chem_dispenser, +/obj/structure/sign/poster/official/periodic_table/directional/east, +/turf/open/floor/iron/dark/textured, +/area/station/medical/pharmacy) "xWe" = ( /turf/closed/wall/r_wall, /area/station/science/auxlab) @@ -89110,6 +89151,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"xWp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "xWq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/shower/directional/west, @@ -89144,6 +89193,12 @@ dir = 1 }, /area/station/hallway/floor4/aft) +"xWL" = ( +/obj/item/storage/toolbox/electrical, +/obj/structure/table/glass, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/circuit/telecomms, +/area/station/tcommsat/server/upper) "xWM" = ( /turf/open/floor/iron/dark, /area/station/security/eva) @@ -89154,6 +89209,11 @@ /obj/machinery/bluespace_vendor/directional/south, /turf/open/floor/iron/dark/side, /area/station/hallway/floor1/fore) +"xWQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/port/fore) "xWV" = ( /obj/effect/turf_decal/tile/green/half, /obj/effect/landmark/navigate_destination/dockescpod, @@ -89184,11 +89244,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/station/medical/psychology) -"xXm" = ( -/obj/machinery/space_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) "xXo" = ( /obj/docking_port/stationary{ dheight = 1; @@ -89367,17 +89422,6 @@ dir = 8 }, /area/station/hallway/secondary/exit/departure_lounge) -"xZl" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/warning, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) "xZu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -89434,6 +89478,15 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron, /area/station/hallway/secondary/exit/escape_pod) +"yaO" = ( +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/newscaster/directional/east, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/service/theater) "yaR" = ( /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/wood/large, @@ -89481,16 +89534,6 @@ dir = 1 }, /area/station/cargo/sorting) -"ybr" = ( -/obj/structure/frame/computer{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/east, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) "ybB" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 @@ -89649,18 +89692,15 @@ /obj/structure/table/reinforced, /turf/open/floor/iron/kitchen/herringbone, /area/station/service/kitchen) +"ydf" = ( +/obj/structure/sign/poster/contraband/eat/directional/east, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/port) "ydi" = ( /obj/machinery/firealarm/directional/south, /obj/effect/landmark/navigate_destination/chapel, /turf/open/floor/iron/chapel, /area/station/service/chapel) -"ydj" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server/upper) "ydm" = ( /turf/open/floor/plating, /area/station/construction/mining/aux_base) @@ -89917,20 +89957,16 @@ "ygT" = ( /turf/open/floor/wood, /area/station/service/bar/atrium) -"yhb" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) -"yhj" = ( -/obj/structure/railing{ - dir = 1 +"ygZ" = ( +/obj/structure/table/wood/fancy/red, +/obj/item/flashlight/flare/candle{ + pixel_x = 1; + pixel_y = 7 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, +/obj/item/food/ready_donk, /turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) +/area/station/maintenance/floor3/port/fore) "yhn" = ( /obj/machinery/light/cold/no_nightlight/directional/north, /obj/effect/turf_decal/tile/purple/opposingcorners, @@ -89978,12 +90014,11 @@ /obj/effect/spawner/random/trash/hobo_squat, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/fore) -"yhX" = ( +"yhT" = ( +/obj/structure/reagent_dispensers/plumbed/fuel, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) +/turf/open/floor/pod/light, +/area/station/maintenance/floor4/starboard/aft) "yhZ" = ( /turf/open/floor/iron/dark/smooth_large, /area/station/service/library/printer) @@ -90028,12 +90063,6 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/floor2/fore) -"yiI" = ( -/obj/item/canvas/twentyfour_twentyfour, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "yiK" = ( /obj/effect/spawner/random/structure/table_fancy, /obj/structure/window/reinforced/spawner/directional/north, @@ -90046,11 +90075,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/grass/fairy, /area/station/maintenance/floor2/port/fore) -"yiZ" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "yjm" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -90059,14 +90083,6 @@ /obj/structure/sign/poster/contraband/random/directional/east, /turf/open/floor/iron/dark, /area/station/commons/vacant_room/commissary) -"yjq" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood, -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/window/reinforced/tinted/spawner/directional/east, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) "yjz" = ( /obj/structure/table, /obj/item/stack/sheet/mineral/plasma{ @@ -90091,11 +90107,6 @@ /obj/effect/turf_decal/siding/wideplating_new/dark/corner, /turf/open/floor/engine/co2, /area/station/engineering/atmos) -"yjN" = ( -/obj/structure/closet/crate/trashcart/filled, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) "yjR" = ( /obj/effect/turf_decal/siding/wideplating_new{ dir = 8 @@ -90120,11 +90131,6 @@ "ykb" = ( /turf/open/floor/wood, /area/station/commons/dorms/apartment1) -"yke" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) "ykr" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/item/reagent_containers/pill/maintenance, @@ -90138,25 +90144,12 @@ dir = 4 }, /area/station/hallway/floor3/aft) -"ykL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) "ykP" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"ykU" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"ykV" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) "ykW" = ( /obj/machinery/computer/records/security, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -90169,6 +90162,13 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/commons/dorms/apartment1) +"yla" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/maintenance/floor4/starboard/aft) "ylb" = ( /turf/open/floor/iron/dark, /area/station/hallway/floor1/aft) @@ -104745,21 +104745,21 @@ nhf nqj oWe rpr -tCS +jkt nqj lRO xYo bIG ycy -lvG +wlC siu ncu epv bkz -bpN +oRc aYa pvw -aFn +kmx ylE qiy hhx @@ -104770,7 +104770,7 @@ svs lJn wxH hpn -len +uij hhx kop kop @@ -104992,15 +104992,15 @@ imY lBR hpI jZE -lEC +vfc mdB mdB mGq -mMr +pvn mUe nhs nun -oWM +tzF nqj nqj nun @@ -105008,15 +105008,15 @@ taW xYo oGQ oVB -diK +cTl nlw ncu qVl gXG mmR -tlr +uHd hII -yhb +tjI dgb qCx mmv @@ -105027,7 +105027,7 @@ xJz lQm lQm aRS -hFa +tNw pRk kop kop @@ -105271,14 +105271,14 @@ cCu lUu ltR lUu -vhj +fLY hII byi ycy faw hhx glp -vHN +cXN kWd uMk apk @@ -105522,15 +105522,15 @@ usk xYo psK ycy -beb +hrZ nlw -wwk -gsN +vJb +aDw uZf qDt npR hII -yhb +tjI ycy nBW hhx @@ -105769,7 +105769,7 @@ mdB nrx bag mdB -mMr +pvn mdB pgo rqM @@ -105779,15 +105779,15 @@ mdB xYo viS vnE -llp +aHm xWx mit epv bkz -bpN +oRc npR nph -fbX +pLZ ycy nBW wBR @@ -106053,7 +106053,7 @@ jvY jvY rqx wBR -xEY +viv xlD rzK pRk @@ -106292,7 +106292,7 @@ aKc aLz xYo xYo -aDl +dNM nYP daf lDs @@ -106310,7 +106310,7 @@ gbU nJp ciH wBR -dzs +fEB ast isK hhx @@ -106560,7 +106560,7 @@ iUP inq qsF wUH -hyN +lym wBR pTR mIV @@ -106811,11 +106811,11 @@ nzk cVD nHT fRo -gdr +qzF jLI keF inq -rUr +kYn pqP oRw wBR @@ -107060,7 +107060,7 @@ xLb imY wKd fRA -oJl +tTA xYo bor xFm @@ -108603,7 +108603,7 @@ oic bpz ayv oiF -umg +uoB uFh qwA aQR @@ -109400,7 +109400,7 @@ qez qez qez cgi -ijs +vLV hJy hJy hJy @@ -109914,7 +109914,7 @@ wiJ xoN hJy hJy -ijs +vLV kAY hJy hJy @@ -110167,7 +110167,7 @@ hJy hJy eiM hJy -aJk +mHb qez gxW hJy @@ -110690,7 +110690,7 @@ izz hJy wnI mkk -cAU +vLT hJy hJy owI @@ -111190,7 +111190,7 @@ vIx hJy rXp oZW -tiC +hsS ifx hJy htg @@ -111202,7 +111202,7 @@ cgi cgi hJy xtY -kEu +vlt foK jAO hJy @@ -111460,7 +111460,7 @@ bvU hJy upS plI -mcu +jKr iuP hJy hJy @@ -111678,7 +111678,7 @@ rJR sBT oic oic -gUv +gQC oic oic hmn @@ -111934,7 +111934,7 @@ sBT sBT sBT oic -aMx +dVr uNF uaJ oic @@ -112192,7 +112192,7 @@ oic sBT vnp uaJ -ixt +qrC uNF oic jrx @@ -112449,7 +112449,7 @@ oic sBT oic uNF -ekz +ojP oic oic jrx @@ -112951,18 +112951,18 @@ owI owI aQK aQK -dob -bJI +nCB +hSr aQK aQK aQK aQK -gUS +bim nOj dzo -bUC -yiZ -unC +gPY +hAL +lUs wMQ ncc nYh @@ -112975,7 +112975,7 @@ oOc bCz prw rze -vvT +gaa rpj ppf vsv @@ -113208,19 +113208,19 @@ owI owI aQK aQK -sMk -fTs -fNv -szr -hFC +nNy +bnm +mNq +vQF +nri aQK rGF -yiZ -yiZ -bUC -mwZ -rCK -lUY +hAL +hAL +gPY +lWT +fCo +dWC ncc dJc jrx @@ -113465,19 +113465,19 @@ owI owI aQK aQK -ifn -fhi -veD -kIn -uUi +bFU +iuv +uHw +tCm +pYs gfn -hBR -qWJ -qWJ +jYE +aPK +aPK imO -vfG +nAp vNZ -eYY +mzz ncc nYh jrx @@ -113722,18 +113722,18 @@ owI owI aQK aQK -lGu -bVH -pjG -asE -lzV +xyT +qlP +ixP +xur +qsc gfn -rYA -eEB -lUY -bUC -yiZ -yiZ +xgI +xHS +dWC +gPY +hAL +hAL mMH ncc utu @@ -113981,15 +113981,15 @@ aQK aQK aQK aQK -taC -hKX +xNr +lBb aQK aQK -fxr -fve -aSL -iCn -ooP +wBu +fOp +sPO +oUY +qjz jUP jUP ncc @@ -114242,11 +114242,11 @@ gFU kHQ mLq aQK -vtj -tLt -iHZ -lSJ -wqF +ruM +hnf +myw +lIl +nFp jUP gVm hIV @@ -114499,11 +114499,11 @@ wZu vTt vOD aQK -pCW -rhs -dmk -lSJ -mxC +aSp +uDa +fRe +lIl +ldB jUP gYy myW @@ -114757,10 +114757,10 @@ xxQ rww aQK jUP -prt +fSZ jUP -bkx -gcj +gfO +cuq jUP gWv new @@ -114783,7 +114783,7 @@ brj btN bvG brj -axz +nTQ abn ari ddB @@ -116330,7 +116330,7 @@ aDr sqy jKO vWG -acj +vDq brj brj xtP @@ -116816,7 +116816,7 @@ dOs oCK gjR izq -iJG +uGW izq abU wOg @@ -116854,11 +116854,11 @@ xgH xgH rLU xgH -xcA -xcA -sKE -sKE -sKE +xmC +xmC +iKr +iKr +iKr xgH xgH owI @@ -117072,7 +117072,7 @@ dOs bxs oCK bZr -gun +bky tHL rbT hLP @@ -117111,7 +117111,7 @@ xgH cfC ksu xgH -sKE +iKr uZk uZk uZk @@ -117368,7 +117368,7 @@ xgH oJO dJO xgH -sKE +iKr uZk ebN gQI @@ -117625,7 +117625,7 @@ xgH xgH uFQ xgH -sKE +iKr uZk xYE vRB @@ -117845,7 +117845,7 @@ oCK bZr hBw tHL -aJE +xBy hLP ejg syp @@ -117882,7 +117882,7 @@ wVn wVn wVn xgH -sKE +iKr uZk kXo dNA @@ -118101,7 +118101,7 @@ dOs dRo mjQ rbT -ijL +eTl nAm hLP ydt @@ -118873,7 +118873,7 @@ dfY qDV kwK tHL -aJE +xBy hLP ydt oYn @@ -119638,7 +119638,7 @@ wZN lWH lNE pZU -leE +nNw cmT sMS mar @@ -120164,7 +120164,7 @@ hXa oIi qly pEv -nPy +cym dpH juI ksz @@ -120187,7 +120187,7 @@ kzE rTt dyS xgH -sFr +brr qRz xgH xgH @@ -120678,7 +120678,7 @@ ehG ehG uNn hUk -cKH +gtI dpH dpH dpH @@ -120959,7 +120959,7 @@ xgH dyS xgH pxb -jQf +ydf enB xgH wVn @@ -121195,7 +121195,7 @@ pEv pnr eur tQf -qzm +vmh gtX gUO dpH @@ -121449,11 +121449,11 @@ olh ehG mMn pEv -dsl +xcM bgO lJq fdx -hah +uoQ aKY dpH jYS @@ -121963,7 +121963,7 @@ tEL tnz khh pEv -htc +lae ehG ehG ehG @@ -122475,7 +122475,7 @@ ehG ehG ehG ehG -bLt +uDh qeW rim njk @@ -122509,9 +122509,9 @@ kzE lJk twx mEa -lAE -rYa -ksG +rVj +lLH +xVG njQ xgH xgH @@ -122736,9 +122736,9 @@ apM quB nYw ehG -gGP +kGk nsr -urD +bxL dpH fvS rjD @@ -122751,7 +122751,7 @@ tcJ hBY kzE cgT -gyc +hjD lUH ucf kLc @@ -122766,9 +122766,9 @@ kzE bMz eOY mEa -sat +dRD xrB -lqD +cxi njQ xgH xgH @@ -123023,9 +123023,9 @@ kzE twx oTc mEa -gFf -sfM -wCR +cPb +eQc +tBn njQ xgH xgH @@ -123522,7 +123522,7 @@ cAu vBW kzE okL -gOh +ehi lfL bOB kLc @@ -123790,9 +123790,9 @@ hLX hLX hLX lkE -tqa -fKC -hzV +pvX +rRl +cwe xgH xgH saR @@ -124048,7 +124048,7 @@ kbE hjd lHw jQb -hzV +cwe vLM lBB xgH @@ -124291,7 +124291,7 @@ xgH wVn xgH hXe -oFL +uTr aHM kzE qWe @@ -124305,8 +124305,8 @@ kOR jJs kOR wCn -nVP -ssi +idL +liU tkz xgH dxS @@ -124563,7 +124563,7 @@ kzE kzE kzE wAe -mYo +eOT ciP xgH wVn @@ -124819,8 +124819,8 @@ xgH twx jCU xMH -ooC -pFi +mVx +cyd qHH xgH oBQ @@ -125830,15 +125830,15 @@ cax mFW kSN xgH -sKE -sKE -sKE -sKE -sKE -sKE -sKE -sKE -sKE +iKr +iKr +iKr +iKr +iKr +iKr +iKr +iKr +iKr aIV aIV aIV @@ -126847,7 +126847,7 @@ qzg afe pRY nhu -olZ +xDo nAu kPk kQb @@ -128121,7 +128121,7 @@ irp kxq nJK nBx -cFY +jYB rIS cEP kqP @@ -128133,9 +128133,9 @@ dMm cjx nhu ica -vdc -sZL -vrh +pDn +sXJ +lEc qsy nhu fkf @@ -128378,7 +128378,7 @@ hMw cdS siA xUc -sMm +mmO rIS hkq hkq @@ -128634,10 +128634,10 @@ eAm khr vgx khr -ukf +qEC aWy bpu -uXL +jlK nuM mxD mxD @@ -128676,8 +128676,8 @@ twx hdA tIj lBv -upP -upP +uLw +uLw xfT vEt xgH @@ -128932,7 +128932,7 @@ hdA hdA hdA tIj -upP +uLw ltn vnt uHx @@ -129189,7 +129189,7 @@ xgH xgH eVh pJg -bsG +lRU sph vyF uHx @@ -129446,7 +129446,7 @@ cJB xgH hdA lzZ -oxO +rcD xfT xfT uHx @@ -129921,7 +129921,7 @@ ayB peC oIJ aPA -bKa +bnH phL tti lKb @@ -130178,7 +130178,7 @@ aux ugD xeO fjG -bKa +bnH aQJ tti vUt @@ -130478,7 +130478,7 @@ xgH hdA hdA hdA -iXi +kgv xgH xgH owI @@ -131207,8 +131207,8 @@ ugD xeO bRd qXk -bKa -bKa +bnH +bnH gmw rdx aAB @@ -132005,8 +132005,8 @@ mdQ dHf dHf xgH -sKE -sKE +iKr +iKr xgH aKt twx @@ -132523,7 +132523,7 @@ sjs oFr bbN kzE -sKE +iKr xgH wxx xdN @@ -132780,7 +132780,7 @@ xdT vMJ vgn kzE -sKE +iKr xgH bMd vcr @@ -133033,7 +133033,7 @@ nPb qDs kSF cpE -vwC +wnT qIf xGI kzE @@ -133537,7 +133537,7 @@ wRe jEw wmU nDw -bhp +bSD jPh wmU emj @@ -133782,14 +133782,14 @@ xeO izY vgm rBP -tNf +deD bWd izm -gkI +qTJ rBP dnT jUo -dFT +gkU hur yib wmU @@ -133797,7 +133797,7 @@ nDw obA jPh wmU -pVZ +hmT uKL rGe mkd @@ -134034,15 +134034,15 @@ awb xFJ mqI kIe -fxo +hvk uvD ocv nJb rBP -iTu +xDk iko -vHz -qoG +gSC +dbr rBP cJh xND @@ -134290,15 +134290,15 @@ mMu hkq rLx cYR -blI -gkx +ajz +guU xeO vsL kfg rBP -fxd +toW haK -gHV +aAA haK art jUR @@ -134333,7 +134333,7 @@ wtm wtm vcr vFE -oxz +blr vcr vcr owI @@ -134547,15 +134547,15 @@ ayB peC oIJ cmi -blI +ajz pJG kDg vsL kDg rBP iht -ykU -mMO +pHs +lFI tCC art hKq @@ -134811,14 +134811,14 @@ vsL kDg rBP kjF -dcp -wHa -dcp +kWy +xKT +kWy rBP kIG uxX rBP -gvk +aCg cFc rBP cOX @@ -134831,7 +134831,7 @@ rBP uMl oOd otD -kBI +dEr dEc ulU vcr @@ -135068,8 +135068,8 @@ vsL kDg rBP dFR -mHk -mZZ +xHd +dlQ tDE rBP wYB @@ -136108,7 +136108,7 @@ sly uyD aFJ mMq -mdu +kQJ uyD sHL ddT @@ -136128,7 +136128,7 @@ wss vcr iNe bCM -cgx +cfb aSj nhU vcr @@ -136385,7 +136385,7 @@ iav vcr xbz bCM -grD +iUv aSj wor vcr @@ -136897,11 +136897,11 @@ vcr uov qju vcr -txv +nSx wRS pJC pJC -txv +nSx vcr uov vcr @@ -137157,8 +137157,8 @@ vcr vcr iJc lzI -lIP -mDR +eXS +gPQ vcr uov vcr @@ -137413,9 +137413,9 @@ uov uov vcr hoy -lCT -lIP -uWi +hPs +eXS +ghG vcr uov vcr @@ -138440,13 +138440,13 @@ uov eAP uov vcr -pJu -ekk -izI +pVa +tBQ +svz vcr -wkr -aHt -pGr +jsj +peJ +xLu vcr dEc owI @@ -138685,8 +138685,8 @@ cFt iMY cFt dEc -hTU -aHt +ihv +peJ uov vcr vcr @@ -138697,13 +138697,13 @@ vcr vcr uov cHu -lJE -aXO -aHl +gyE +tFq +qni vcr -pcg -oSz -pGr +muQ +wMf +xLu vcr dEc dEc @@ -138942,8 +138942,8 @@ rqc oYd pJh gYc -evz -evz +dQz +dQz klO klO uov @@ -138954,13 +138954,13 @@ uov uov uov vcr -izI -fGK -ekk +svz +woJ +tBQ vcr -wkr -cIp -pGr +jsj +lKr +xLu vcr vcr dEc @@ -139199,10 +139199,10 @@ owI gXd owI dEc -eBu -aHt -rfo -rUq +sBr +peJ +pLz +teK vcr vcr vcr @@ -139458,11 +139458,11 @@ cHX dEc dEc dEc -xkG -aHt +eOa +peJ vcr -psx -oHa +dfM +udG fTE fTE vcr @@ -139475,8 +139475,8 @@ dFq oEo oHx dEc -vYD -vYD +hRJ +hRJ dEc dEc owI @@ -139715,12 +139715,12 @@ owI oyh kVp dEc -eBu -aHt +sBr +peJ vcr iFn -odS -hzx +rEz +uYX pED vcr uov @@ -139733,7 +139733,7 @@ ifS iWE dEc dEc -vYD +hRJ vcr dEc owI @@ -139972,12 +139972,12 @@ owI oyh kVp dEc -jVM -oSz +hFM +wMf vcr -duw -odS -rkc +pzy +rEz +vND pCv vcr deF @@ -139990,7 +139990,7 @@ fHy fSS fIK dEc -vYD +hRJ vcr dEc owI @@ -140247,7 +140247,7 @@ fFY bHw fFY dEc -vYD +hRJ vcr dEc dEc @@ -140504,8 +140504,8 @@ fHb fXU gyz dEc -vYD -vYD +hRJ +hRJ vcr dEc owI @@ -140761,8 +140761,8 @@ cIT bKP ogc dEc -vYD -vYD +hRJ +hRJ vcr dEc owI @@ -141018,8 +141018,8 @@ fKi sdo kdu dEc -vYD -vYD +hRJ +hRJ vcr dEc owI @@ -141275,8 +141275,8 @@ ksN fDT gKg dEc -vYD -vYD +hRJ +hRJ vcr dEc owI @@ -141532,8 +141532,8 @@ fNK gdM gdM dEc -vYD -vYD +hRJ +hRJ vcr dEc owI @@ -142247,13 +142247,13 @@ owI teq sKt gxE -jMa +kjL gxE gxE -jMa +kjL gxE gxE -jMa +kjL jFh sKt xPW @@ -142297,13 +142297,13 @@ oyh clF dEc cjC -pOL +ahr ueS aZW -pOL +ahr mXC aZW -pOL +ahr bME vcr dEc @@ -173110,7 +173110,7 @@ rbh wcn lJZ sTq -kKJ +dbD wwu rtm kwl @@ -173367,7 +173367,7 @@ rbh bDr bDr sTq -jEe +rii wwu okK cvC @@ -176208,7 +176208,7 @@ lgk shi tqW shi -faj +wpU fME gtO hLz @@ -176465,7 +176465,7 @@ shi shi tqW shi -fci +due fRa gAp hLz @@ -176722,7 +176722,7 @@ lxD lxD lPz shi -ffd +fph fRd gFy hLz @@ -177236,7 +177236,7 @@ yaX shi qKp shi -fhY +iif fVe gWj hLz @@ -177461,10 +177461,10 @@ wwu wwu cwq iKw -ooY -ooY -vbs -duX +nWU +nWU +isP +kjP sxy sbm wvR @@ -177493,7 +177493,7 @@ qia shi dhX shi -fci +due fWh lJS hLz @@ -177718,9 +177718,9 @@ wwu wwu cwq hxW -qnI -eOo -dXb +jDA +voP +qKU xuv xuv xuv @@ -177750,7 +177750,7 @@ qia shi dsb shi -flw +mYG fWp gXo hLz @@ -181096,7 +181096,7 @@ jjF mxd jjF iit -iNs +nmM jjF bSh hLz @@ -181314,8 +181314,8 @@ ucA ucA wwu wwu -qLo -qOh +oVh +jfR wwu hcF wwu @@ -181353,7 +181353,7 @@ glY hoX jjF ilG -iPr +nHN jgJ jtQ hLz @@ -181571,7 +181571,7 @@ ucA ucA gqP gqP -sxK +kto uVj wwu cwq @@ -181828,7 +181828,7 @@ ucA ucA wwu wwu -qOh +jfR uVj wwu gjh @@ -182085,8 +182085,8 @@ ucA ucA wwu wwu -qqu -hJD +gEA +azc wwu wwu wwu @@ -182342,13 +182342,13 @@ ucA ucA gqP gqP -qOh -qOh +jfR +jfR tDI xYg pzT wwu -tXg +ltl cwq xuv cZk @@ -182605,7 +182605,7 @@ sbm cQj nOZ wwu -tXg +ltl cwq ihW pUr @@ -183116,10 +183116,10 @@ wwu jYo wwu wwu -gvQ -gvQ +oCQ +oCQ xEo -tXg +ltl cwq xuv agh @@ -183370,8 +183370,8 @@ ucA ucA wwu wwu -tXg -tXg +ltl +ltl hgC cwq xtC @@ -183892,10 +183892,10 @@ hge dPi hge oiO -xUp +mId aeI aiN -hdw +uKx anN vIp asz @@ -184165,7 +184165,7 @@ qAG qAG qAG dpL -iVH +ivd rtv lES jvv @@ -184699,9 +184699,9 @@ kqy uHu kQO wVY -ruE +utG nlL -sBU +mZF oAU qFO wVO @@ -185213,7 +185213,7 @@ cmG gsp cmG wVY -lmV +bAS xQo kor rQX @@ -186500,7 +186500,7 @@ iZe wVY djo cUm -xnw +pzl aSa aal iiA @@ -186997,7 +186997,7 @@ jyD tQq aWc hDE -tTT +uHn nhJ evq hbT @@ -187008,7 +187008,7 @@ wcB gFE mYN vzt -xGT +huP sCs nMO gXY @@ -187514,7 +187514,7 @@ hDE ilg gmj unV -cjm +vRX kKr aUz mAb @@ -188045,9 +188045,9 @@ gXY gXY gXY aal -hgT -kFd -rRg +acf +bKm +nTH jHr aal aal @@ -188253,13 +188253,13 @@ ucA ucA vnK vnK -gjC -hJU +wCv +wJE uZg vnK -mrq -rJr -uzw +uck +ngz +rzV vnK sLL aEf @@ -188290,7 +188290,7 @@ obM kKr dXt wRD -viE +gOk okN cBa dYv @@ -188302,9 +188302,9 @@ jZe bYn rBK aal -lbt +hHt hAg -nRS +qgn biS aal aal @@ -188510,13 +188510,13 @@ ucA ucA vnK vnK -oIo -tFM +fWo +rfP mOb vnK -fmQ -uOq -lWR +cdP +xnu +ayw vnK tIF eZN @@ -188559,9 +188559,9 @@ uQN wmQ wba aal -jqJ -rou -gfF +fXQ +uxb +pRv jHr aal aal @@ -188767,13 +188767,13 @@ ucA ucA vnK vnK -wfS -ioD +mBc +fAv uZg vnK -nlo -fVk -nlo +cnJ +uxe +cnJ vnK vnK vnK @@ -189028,9 +189028,9 @@ fov vnK qKR vnK -nQG -qdO -qtY +dSO +rjH +gwW vnK dpN wob @@ -189282,7 +189282,7 @@ ucA vnK vnK ggg -pro +haY kpt vnK vnK @@ -189328,7 +189328,7 @@ fdW quE tWV nTx -kSn +rAx aal sjN sjN @@ -189542,7 +189542,7 @@ vnK vnK uBW kpt -sHv +nRn kpt kRS kRS @@ -189802,10 +189802,10 @@ gQA wJI vnK tTw -cnL +vke wug -uKz -bXC +upB +ixa vnK qJa dYx @@ -190061,7 +190061,7 @@ vnK vnK vnK vnK -jxK +rYb aQV iOA qun @@ -190315,8 +190315,8 @@ vnK vnK wJI vnK -wsH -lpB +mWE +jsy vnK wGl wGl @@ -190338,7 +190338,7 @@ bYg tQq aWc hDE -wvo +xVW nRQ olS lXz @@ -190572,7 +190572,7 @@ voA wJI wJI qvk -sff +aYc dsw erN wGl @@ -190826,10 +190826,10 @@ vnK vnK fdr vnK -hbe +mCx iak vnK -tvB +tHq ojU vnK lci @@ -190870,7 +190870,7 @@ cuL adB sYd jyd -nwM +ocY aal evx nca @@ -191089,7 +191089,7 @@ vnK vnK vnK vnK -sHB +vfH iOA iOA sJn @@ -191339,14 +191339,14 @@ ucA vnK vnK wJI -ndL +xDR vnK vaC dUU -tdA +oum dnJ -cTJ -wvg +rwO +knn iOA mRQ viV @@ -191598,11 +191598,11 @@ vnK wJI xeM geb -gns -fcz +hpw +ugm wGl wGl -xZl +mBr lba iOA usZ @@ -191630,7 +191630,7 @@ tou aHk lGB oIU -azp +dYz bKb omk omk @@ -191855,8 +191855,8 @@ vnK wJI vnK vnK -mgq -iPV +cMC +mMW kVm wGl gIa @@ -192112,11 +192112,11 @@ vnK wJI vnK eQD -hgB -sDp -fzG -jlJ -eYp +hCw +tOt +nRt +fdQ +ryK wXs iOA aAi @@ -192376,7 +192376,7 @@ uJi vnK vnK iOA -iUe +uBM pZm wJy tKr @@ -192629,7 +192629,7 @@ oHr bXh vnK jUJ -iDh +hRs vnK dVf iOA @@ -192667,7 +192667,7 @@ utM jmr nUa qUE -vMX +msS lzp vBk lkL @@ -192881,12 +192881,12 @@ ucA vnK vnK wJI -okI +cIX oHr uyL vnK uhu -iDh +hRs vnK dVf iOA @@ -192920,7 +192920,7 @@ slQ kMl lXO nrm -jMd +lek kkF nUa nUa @@ -193142,8 +193142,8 @@ olA vnK vnK vnK -ogA -nFq +cwB +mJi vnK dVf iOA @@ -193652,9 +193652,9 @@ ucA vnK vnK nmK -wky +fVB vnK -tnN +bPF xYQ pjX pog @@ -193911,11 +193911,11 @@ vnK wJI xyM kMk -gFO +uJF bAP bAP -gFO -gFO +uJF +uJF xVt gEL vnK @@ -194168,12 +194168,12 @@ vnK wJI vnK vnK -qVe -ejI -oyN -ooQ +oDp +teX +toB +juu wug -gFO +uJF vnK vnK vnK @@ -195752,7 +195752,7 @@ aal aal aal aal -wab +cie aal ybG mbi @@ -196008,8 +196008,8 @@ mgc iHc vHt aal -wab -wab +cie +cie aal uxP mbi @@ -198287,8 +198287,8 @@ cvg hkz pOH oIS -ipu -aUe +fbR +cXK dEt aPc sPu @@ -198540,12 +198540,12 @@ dEt dEt mPw pNI -dxK +cnf oIS -dxK -dxK -wbx -pJs +cnf +cnf +pAg +rvV dEt nmF igR @@ -198579,8 +198579,8 @@ bsK bxr bzY aal -wab -wab +cie +cie aal ybG iRN @@ -198800,7 +198800,7 @@ eHk meB fxm pJA -wBg +xQi fpN axf dEt @@ -199053,15 +199053,15 @@ oyh dEt kJU mPw -sQa +kPl spr spr del spr -jFB -pJs +rfN +rvV rif -dGe +mEZ uZF sHs uiH @@ -199096,7 +199096,7 @@ lcv hAg hAg wYM -vSQ +faU rCz ybG xhf @@ -199310,7 +199310,7 @@ oyh dEt xcw mPw -sQa +kPl spr aOa vyv @@ -199318,7 +199318,7 @@ spr pxw rrk awA -jBf +nrS uZF rlI pPL @@ -199353,7 +199353,7 @@ jer hAg hAg wYM -vSQ +faU rCz tfR aal @@ -199824,12 +199824,12 @@ oyh tFm oHL mPw -vhq +vtL spr aOa xpt spr -gri +juo fkD dEt lYb @@ -199837,9 +199837,9 @@ uZF uZF uZF uZF -svu -svu -svu +rux +rux +rux cuR wxY hsI @@ -200081,7 +200081,7 @@ oyh dEt dEt mPw -sQa +kPl spr kSX kSX @@ -200094,7 +200094,7 @@ mPw mPw mPw uZF -svu +rux uZF uZF uZF @@ -200124,7 +200124,7 @@ lcv pJv iiA lfy -sZY +iRS lcv ybG aal @@ -200340,9 +200340,9 @@ dEt mPw tIT oIS -dxK +cnf oIS -dxK +cnf kgY mPw dEt @@ -200351,7 +200351,7 @@ bET kFp mPw uZF -svu +rux uZF noO ijZ @@ -200378,9 +200378,9 @@ opr byI bAn lcv -rzA -gFz -tez +rVC +xvP +aOn iiA lcv ybG @@ -200595,12 +200595,12 @@ oyh dEt dEt mPw -dge +voc bRI -ueC -ueC +ugp +ugp bRI -nIB +sNz mPw dEt dEt @@ -200608,7 +200608,7 @@ loM dEt mPw uZF -svu +rux uZF lSI biR @@ -200624,7 +200624,7 @@ qjn wxb wkw slk -giV +mOA nlN nlN nlN @@ -200635,10 +200635,10 @@ nlN nlN nlN lcv -nvT +erg qMV -lKp -gFz +uxU +xvP lcv ybG aal @@ -200865,7 +200865,7 @@ vwN dEt mPw uZF -svu +rux uZF iOD biR @@ -200881,16 +200881,16 @@ tPm tPm fDR nlN -giV -giV +mOA +mOA nlN pEp pEp pEp pEp -gwT -pPG -paN +aTG +ima +cdy lcv lcv lcv @@ -201122,7 +201122,7 @@ teB dEt mPw uZF -svu +rux uZF noO jiD @@ -201134,7 +201134,7 @@ nDa lNh nno tPm -gSu +oSr tPm fDR nlN @@ -201145,10 +201145,10 @@ vJs pEp pEp pEp -xQq +ucz qbw qbw -geB +msT nlN qza meU @@ -201365,10 +201365,10 @@ oyh oyh dEt dEt -xOC +dOb hjP jRW -nBO +wsk fIM fXq dEt @@ -201379,7 +201379,7 @@ fOK dEt mPw uZF -svu +rux uZF uZF uZF @@ -201391,7 +201391,7 @@ ffv oia sus tPm -gSu +oSr tPm rGL qjn @@ -201622,9 +201622,9 @@ oyh oyh dEt dEt -ioZ -uzB -fpt +jhn +dwI +cgs dEt tfE fXq @@ -201636,9 +201636,9 @@ fOK dEt mPw uZF -svu -svu -svu +rux +rux +rux uZF cfH hOc @@ -201648,18 +201648,18 @@ aVq xsE ikM tPm -gSu +oSr tPm xui nlN -uWm -iSu +qSL +gOL nlN qDS pEp pEp pEp -xQq +ucz xui qbw qbw @@ -201895,7 +201895,7 @@ mPw uZF uZF uZF -svu +rux uZF cfH aVq @@ -201905,18 +201905,18 @@ wmw bMG rIl tPm -gSu +oSr tPm xui nlN -bvC -uuz +qyw +xJn nlN ylj pEp pEp pEp -yhj +aBz xui nlN nlN @@ -202152,7 +202152,7 @@ mPw imI wWk uZF -svu +rux uZF cfH btU @@ -202162,7 +202162,7 @@ xCl bou aVE tPm -gSu +oSr tPm xui nlN @@ -202409,7 +202409,7 @@ mPw imI aBx uZF -svu +rux uZF tPm tPm @@ -202419,7 +202419,7 @@ tPm tPm tPm tPm -gSu +oSr tPm xui xui @@ -202666,22 +202666,22 @@ mPw imI oWS uZF -svu -gSu -gSu -gSu -gSu -gSu -gSu -gSu -gSu -gSu -gSu +rux +oSr +oSr +oSr +oSr +oSr +oSr +oSr +oSr +oSr +oSr tPm uGL giX xui -wOd +bLc xui oDa xui @@ -202917,7 +202917,7 @@ qKl tzB hZJ ivQ -qAn +jWw ajb mPw dEt @@ -203174,17 +203174,17 @@ ajb tzB aSB xRJ -paA +ftf ajb mPw -svy -nvw -fhA -fAw -fBO -dNI -uAU -gYe +jOx +peT +jWI +crh +pNr +mLG +pis +wrE tPm meU hLB @@ -203192,7 +203192,7 @@ aiw hLB hjx xui -acE +dme giX xui oDa @@ -203434,14 +203434,14 @@ hZJ mcm dEt mPw -eNa -nvw -fhA -oTQ -opd -oTQ -mUF -kVY +jeg +peT +jWI +bfC +fES +bfC +oYo +fSY tPm jzp hLB @@ -203457,8 +203457,8 @@ nlN hsh nlN nlN -cEj -kPm +kyp +dlz nlN xui hxF @@ -203691,14 +203691,14 @@ rrr ghI uNZ mPw -hCv -nvw -wHV -rHA -wyC -isQ -gJy -oXH +fhq +peT +igL +ofX +plr +lTe +kzR +oDT tPm nlN hjx @@ -203948,14 +203948,14 @@ ptc ghI uNZ mPw -kLF -nvw -rfD -ojK -esH -maq -aGE -qtj +wAv +peT +wmy +brR +xFQ +rGV +uIH +lxA nlN nlN xui @@ -204217,11 +204217,11 @@ nlN nlN giX nRv -geB -qqC -eOf -wOd -hXu +msT +qTy +oWk +bLc +vuU xui nlN hzR @@ -204469,7 +204469,7 @@ sGZ dEt xui xui -qqC +qTy nlN nlN nlN @@ -204715,7 +204715,7 @@ rNm dDP guZ hZJ -ezI +pSB hZJ rrr mPw @@ -204725,16 +204725,16 @@ dJq dJq hss xui -hXu -nmq +vuU +swv nlN -ahh -qqj -sIZ +txh +raA +xfM nlN -hXu +vuU giX -pnk +wqO qbw xui nlN @@ -204974,8 +204974,8 @@ dEt dEt dEt dEt -qeb -qeb +grw +grw dEt mnj muP @@ -205256,12 +205256,12 @@ mbe mbe rcp dqJ -oin +tGz hzz cCq lQM cCq -vKs +fnZ cCq hvY cCq @@ -205478,8 +205478,8 @@ oyh dEt dEt rxe -uEK -wGq +vMw +cJz rrr hZJ dEt @@ -205516,10 +205516,10 @@ rkd mFv xRo cCq -iDm -xrj -aHf -bIm +wiO +pjo +iRL +ozC hMs qCt pUV @@ -205739,8 +205739,8 @@ xSn mzC haS jDJ -xTa -bfk +ccv +uEB lZa pMx lNS @@ -205773,10 +205773,10 @@ nZq bbL xRo cCq -lbr -vdn -cWR -ioQ +iCo +ctC +sqV +qLQ aVr img gYb @@ -205996,7 +205996,7 @@ axG ajb gxf eeC -fzR +wQx rrr hZJ fQY @@ -206030,9 +206030,9 @@ nld qbw sut cCq -pxK -gmQ -uxt +rjJ +qNp +oSJ cCq hvY cCq @@ -207297,11 +207297,11 @@ oyh oyh tUT tUT -nAv -jkv -wYl -dXR -hRc +xWL +xMd +wYx +wMP +cQx tUT tUT eYj @@ -207554,12 +207554,12 @@ oyh oyh tUT rlN -qRS -dfd -inK -oOr -oFN -xMG +qwd +ayp +liv +rAf +fpf +iBH tUT fPW eYj @@ -207811,11 +207811,11 @@ oyh oyh tUT tUT -aqU -srq -pRO -nMV -vSS +dzC +fER +aZH +pct +ozo tUT tUT itT @@ -238641,7 +238641,7 @@ saG saG eAE nxm -vrX +eSo aic fOS icY @@ -238663,7 +238663,7 @@ toH toH toH nST -hEo +iMq gwL sJU gwL @@ -238923,7 +238923,7 @@ joE oQS niP bne -rfI +nwN gwL gwL ucA @@ -239155,7 +239155,7 @@ saG nNM gAt eAE -vrX +eSo wRJ wRJ wRJ @@ -239179,8 +239179,8 @@ gwL lsm oQS fIg -hEo -gVx +iMq +ayK gwL gwL ucA @@ -239433,7 +239433,7 @@ teN sVh kkr gwL -oRB +uZQ cQr gwL gwL @@ -239682,7 +239682,7 @@ iQp oZx oZx oZx -sfS +iGC ivu oon oon @@ -239690,10 +239690,10 @@ sKN wFY qIS gwL -fqE +frP oQS lYL -jFE +chf rSY uhK uhK @@ -239947,11 +239947,11 @@ hQA mlX hQX gwL -fmF +deK oQS gwL -fiX -fYM +fpY +ygZ gwL gwL ucA @@ -245590,7 +245590,7 @@ rMo lok gaA whR -nHB +wdY vEw dFd awt @@ -245827,10 +245827,10 @@ sCu gUX vaQ wUS -dzt +ayP iMz uHe -qMB +jOP ccH dxB wRJ @@ -246087,7 +246087,7 @@ uWf dke ycg uHe -gKQ +kBf ccH klw wRJ @@ -247912,7 +247912,7 @@ qBx nIv sVU jUf -emy +sVG qBx gyr fAz @@ -248691,7 +248691,7 @@ ftp pzi eMj diA -iRu +lmi dDn pmQ pDK @@ -248926,10 +248926,10 @@ ffZ rPw liQ kqW -ktz +skL wfI gMf -eJF +lyn liQ fjo vEw @@ -249463,9 +249463,9 @@ qBx qBx tGn fZC -sEP -bxH -cwl +iQR +oll +jqR tGn mUA mUA @@ -249689,7 +249689,7 @@ cQg rWT byY dzQ -gGu +oiK wIN iHm oiH @@ -249719,10 +249719,10 @@ bLX nKa oLG tGn -gNS -cwl +qzj +jqR fhx -cwl +jqR tGn npO bGc @@ -249946,7 +249946,7 @@ gFb rWT uhF vhL -gGu +oiK wIN iHm bqI @@ -249956,7 +249956,7 @@ iHm iHm iHm hnC -eHG +fFs xjh liQ vzO @@ -249976,9 +249976,9 @@ tuH smi dLV tGn -jFQ -jFQ -dEN +mxR +mxR +pEy tGn tGn tGn @@ -250203,7 +250203,7 @@ bRH rWT sNd evW -kkt +nHZ wIN iHm fNq @@ -250234,7 +250234,7 @@ smi xpR tGn tGn -nsw +iaX tGn tGn aoM @@ -250242,8 +250242,8 @@ tGn xIF tGn ewY -ppZ -twS +wVa +rum tGn tGn ucA @@ -250491,7 +250491,7 @@ rhu aPH oZE lxK -lYD +nOv lxK tGn tGn @@ -250500,7 +250500,7 @@ pSl uiR qFr nDk -uPY +sXx tGn tGn ucA @@ -250749,13 +250749,13 @@ uZc tGn pSl pSl -khP +gPX pSl pSl pSl pSl tGn -rIt +tBu nDk tLF tGn @@ -250997,12 +250997,12 @@ jww jww jww eDe -ufs -ufs +nTz +nTz xGx xGx kak -ufs +nTz tGn rfT tGn @@ -251254,16 +251254,16 @@ jww tro jww eDe -ufs -ufs +nTz +nTz naR -sdO -caQ -lmW +kQx +urG +wbu uZc rtB uZc -pCH +sAt bQK dYf tGn @@ -251513,16 +251513,16 @@ jww eDe xGx diU -ufs +nTz xGx -dDu -ufs +jtS +nTz uZc -tCU -dTk +fvM +mNx rfx oZp -awo +vOP tGn tGn tGn @@ -251732,7 +251732,7 @@ ucA ucA ucA nAj -gyV +wQi fbq tJq wlb @@ -251771,15 +251771,15 @@ eDe uZc mxP wEE -xGB +tPX rtB uZc uZc sAz kLN dfp -qfT -ldq +dee +gXX tGn pSl fvb @@ -251989,7 +251989,7 @@ ucA ucA ucA nAj -gyV +wQi wEw tJq tuA @@ -252008,11 +252008,11 @@ qrd shB isU qrd -cbt -cbt -cbt -cbt -cbt +nPl +nPl +nPl +nPl +nPl qrd ybQ ybQ @@ -252020,21 +252020,21 @@ rAW bsN ybQ xLG -pbt -nZh -pbt -nZh -nZh +wcl +tBG +wcl +tBG +tBG uZc vAg uZc -kiS +glB rtB uZc -oua +hTy dYf -kil -qfT +kGO +dee oZp ykr tGn @@ -252289,9 +252289,9 @@ icF rtB uZc pjW -awo +vOP tzv -awo +vOP eSa tGn tGn @@ -252547,7 +252547,7 @@ cWM uZc uZc lvs -mbQ +vch lvs uZc tGn @@ -252761,7 +252761,7 @@ ucA ucA nAH nBg -saL +caS hMe gby hMX @@ -252799,14 +252799,14 @@ iuo mFF ncl iuo -cQY -nnc -awo -awo -awo +hoG +inC +vOP +vOP +vOP tzv -ufs -xiL +nTz +rnj tGn aoM cmr @@ -253018,7 +253018,7 @@ ucA ucA nAH nEC -cVt +gAB wdl nPn nPn @@ -253058,12 +253058,12 @@ iuo iuo iki tzv -ujs +wxo dYf -awo -vhP -awo -knh +vOP +hfA +vOP +gGg tGn tGn tGn @@ -253275,7 +253275,7 @@ ucA ucA nAH nNQ -eNK +poF wdl gme hWh @@ -253316,10 +253316,10 @@ iuo nDj ogo uZc -jwW +jWH ukT -gvn -mms +iQd +bvZ dYf tGn ajs @@ -253532,7 +253532,7 @@ ucA ucA nAH nBg -saL +caS feF vZV nPQ @@ -253542,7 +253542,7 @@ qrd qrd qrd qrd -sBY +gsW vTf gvO boP @@ -253571,19 +253571,19 @@ nUA dch iuo fzY -tua -rGC +aiJ +nwV ttJ -bhF +qhu eTQ -hyW -dgZ +beM +wfv kQN jPG ewA -jzH -pME -uiA +gRB +jKG +tbV cnq tGn tGn @@ -253827,20 +253827,20 @@ iuo iuo iuo iuo -ufs -kGr +nTz +wHk uZc -qsL -awo +rxu +vOP tzv dYf -gZm +nEN tGn hnZ ewA -kFY +iao aGQ -fIz +qEj kcl tGn tGn @@ -254080,24 +254080,24 @@ ykb xBl iuo nzw -xaA +sHh iim iuo -bJs -cbE +kdR +lBU sBx uZc uZc map kSZ -mYK +hEX uZc tGn nbi ewA -ccs -xsX -fur +gCO +qGG +ftz cnq tGn tGn @@ -254311,7 +254311,7 @@ sSB sSB qrd nQQ -vXG +iAE nWe kpS hwr @@ -254341,13 +254341,13 @@ ykZ ybK iuo wcC -noF +nZj hiu uZc -gYj -bsl +sMv +lfH nHF -uwG +jXS kVM tGn mwg @@ -254599,13 +254599,13 @@ uZc uZc uZc aJZ -qTH +lDU aXR -ubP -eiP -qsR -ufs -dqF +fXv +bcH +rZJ +nTz +iwO tGn tGn ueX @@ -254852,15 +254852,15 @@ xXY yaW peo uZc -oAv -qfn +dRq +hrK uZc -reD -tbu +fXn +mGI uZc keW vIZ -wkn +lbz obs hTK tGn @@ -255598,7 +255598,7 @@ qrd qrd qrd qrd -pnO +odw omK mnH eCg @@ -255855,7 +255855,7 @@ nDx qrd iOY qrd -heP +oLO dXo nVe lbM @@ -256641,7 +256641,7 @@ rfU rfU rfU rfU -jPs +eVS sbq jiL eLw @@ -257935,7 +257935,7 @@ tic lnA wuL xFg -xuR +rvL oNV eLw cmh @@ -258203,10 +258203,10 @@ npZ pOn piR alf -cMU +lXC fBt exN -wys +qbx fBt sfk sfk @@ -258459,11 +258459,11 @@ piR tnX pOn piR -msu +gMw iUQ -wSP -rcu -tji +svH +aIR +nYV kaq ldf rcO @@ -258681,7 +258681,7 @@ qrd gyG qrd xPv -lvW +fXG kGv omG qrd @@ -258716,11 +258716,11 @@ vjK qSg pOn piR -uAi +mlM mVj wkL -nMn -ykL +eQk +qVs wkL yli yli @@ -258937,11 +258937,11 @@ aVs qrd iOY qrd -tLQ +qOZ yhZ uoS -gpM -jGj +tMu +gks qrd sSB qrd @@ -258973,11 +258973,11 @@ vER pOn ojx piR -iwZ +dJa oTw myO -mLp -ioP +swX +btJ myO myO myO @@ -259195,7 +259195,7 @@ eud yfY qrd xWr -kYD +lYg iJl cvX fpk @@ -259230,7 +259230,7 @@ vZK abD tUc piR -msu +gMw mVj fBt exN @@ -259451,8 +259451,8 @@ dZf fLR lgv qrd -vVb -ivV +buO +evQ eEf hjr nnJ @@ -259473,7 +259473,7 @@ sbq jiL oKc wuL -tJY +oUF mdc hWS hSo @@ -259487,12 +259487,12 @@ cJi pOn ozS piR -uAi +mlM xWV -fAp -yhX -yhX -qzc +nzC +qGT +qGT +lIO ldf rcO rcO @@ -259744,11 +259744,11 @@ piR iga piR piR -wUy +erI mVj wkL -see -tgP +nEt +aYi wkL yli yli @@ -259994,18 +259994,18 @@ jNu lRY tMk pYU -cLL -jsW +uJP +gYB vrw piR pOn myO tto -anH -iSO +cYi +fAk myO -mLp -ioP +swX +btJ myO myO myO @@ -260251,15 +260251,15 @@ kkg xxy lvp fZX -yjq -ueL +hMZ +lho rKM piR mZh myO -vMm +wAK yaK -cZe +maH fBt czr nOY @@ -260508,19 +260508,19 @@ nzj lRY irT fZX -eNJ -axn +uvX +nkK aNB piR qSg uDH qRE -qQr +jzz qBP -jMu -iZG -rmT -lcF +erf +aoS +hGi +wbd ldf rcO rcO @@ -260765,18 +260765,18 @@ jXb lRY ngL fZX -wiH -ybr +wkg +vFx qFz piR gHN myO uXD -iYH +dAR dYB wkL -see -see +nEt +nEt wkL yli yli @@ -260999,7 +260999,7 @@ fpU fpU kKU iXQ -lhG +dzn fUi nLd iMN @@ -261256,7 +261256,7 @@ fpU fpU kKU biM -jNp +giz iED pNj mpp @@ -261291,7 +261291,7 @@ pOn hBp pOn lXM -nne +xpy hcT hcT piR @@ -261534,7 +261534,7 @@ xlE fDv uOW lRY -iua +fFW gJm lRY lRY @@ -262058,7 +262058,7 @@ pnf jRi dBw jNg -hyx +fol kdK wza pOn @@ -262285,7 +262285,7 @@ ePH wjm tXV iMN -eIz +ulg iMN iMN nGj @@ -262316,8 +262316,8 @@ foL leY piR awU -get -fHE +tWK +oCN piR mom hcT @@ -262574,10 +262574,10 @@ prQ piR biO piR -qeX +qYj cvf pOn -rIY +sHM lRh piR piR @@ -262827,7 +262827,7 @@ wHP wmX mmi yll -dYn +nNF piR piR piR @@ -263087,8 +263087,8 @@ yll qmb til bAe -gSS -mPZ +nmu +lrK piR mom hcT @@ -263344,7 +263344,7 @@ kpe hJg piR bBS -wwi +gzi pvE piR mom @@ -263600,8 +263600,8 @@ yll qNW dER piR -xRs -bKR +vgY +aij mHo piR mom @@ -264107,7 +264107,7 @@ vnY vGi wAz frW -tBl +yaO xDm frW yll @@ -264119,8 +264119,8 @@ pOn pOn pOn pOn -uKD -rTv +jBy +nQs piR piR ucA @@ -264596,13 +264596,13 @@ stx dFL yiK kRw -qQi +jzu iAg lgw -swM +csQ kRw -axP -hdg +xQj +ffP kRw fKb uVL @@ -264630,11 +264630,11 @@ ljL abD piR piR -szl -uwl -kxs +mSr +jIL +iBm wTU -szl +mSr pen pen ucA @@ -264854,12 +264854,12 @@ uCP vCy kRw gJM -kWa -wQX +eSr +gAz ekO kRw -ihn -rQf +nnB +oTJ kRw mMm faS @@ -264885,13 +264885,13 @@ xFl dER piR pOn -gSS +nmu piR -kZG -kZG -kZG -bbs -kZG +uRv +uRv +uRv +buX +uRv pen pen ucA @@ -265111,12 +265111,12 @@ uCP pyt kRw iGo -irh +wYk bbb -wWo +mwN kRw -kIu -rQf +jPT +oTJ kRw dtI xCJ @@ -265142,13 +265142,13 @@ ctd dQn piR pOn -vzx -gGx -rnl -lik -ffV +puh +mPr +oDw +lVG +rEI aDN -wwp +guD pen pen ucA @@ -265399,13 +265399,13 @@ piR aMJ piR pOn -gSS +nmu piR -gRI +dow gcf hXI -gxd -aWj +geP +eDV eqk eqk ucA @@ -265624,13 +265624,13 @@ kRw kRw kRw kRw -pqY -fdX +jQn +wZb ryi -liL +wNQ kRw -gqF -qKG +pKv +vMr kRw nRo asS @@ -265654,15 +265654,15 @@ xNL gvh oTK dVD -sOD +xHQ pOn mVR piR -xHf +hkv cBq -rsz -mnY -uhU +seU +tOp +onx pen pen ucA @@ -265879,15 +265879,15 @@ cIM cIM cIM cIM -lVq +mIt kRw -pJq -pwA +ciU +uAL rlX -amf +lwD kRw -abJ -sBE +hKf +xHl kRw upo wvw @@ -265910,16 +265910,16 @@ ugW tjq ycu piR -bGh -sOD +laN +xHQ pOn jAU piR tgA -cFK -gaT +sZg +mSo vuI -rtH +gae pen pen ucA @@ -266136,15 +266136,15 @@ snd snd snd cIM -eNi +qls pAn efa xJM hCJ -vXH +tgF kRw -sBE -iMM +xHl +akS kRw cpa kXF @@ -266170,12 +266170,12 @@ piR piR piR pOn -gSS +nmu piR pen pen pen -aTj +xBk pen pen pen @@ -266390,7 +266390,7 @@ snd qPS cCk qjq -eJc +rLY jOT nHf cIM @@ -266429,11 +266429,11 @@ piR bFf piR piR -lCO -rFg -rFg -gdS -gAP +rCY +htf +htf +tcz +oem pen pen ucA @@ -266647,7 +266647,7 @@ snd wVu pUC lrM -qON +hUB snd tat kYv @@ -266686,11 +266686,11 @@ sKI pOn ebn piR -rFg -lxI -udy +htf +qZg +ggb lOh -oiJ +fes pen pen ucA @@ -266903,8 +266903,8 @@ rCv snd iWf hci -oyO -uPA +ixj +wNO snd tat kYv @@ -266941,13 +266941,13 @@ piR piR piR kEe -mPZ +lrK piR -tHH +blk cky -vBd -ooV -vkz +rwx +ldJ +rba eqk eqk ucA @@ -267198,13 +267198,13 @@ pOn pOn bFf xHR -gSS +nmu piR -nFi -rFg -hHn -kWM -tHH +spX +htf +cZg +rrb +blk pen pen ucA @@ -267424,9 +267424,9 @@ kRw kRw kRw kRw -toK +eTE cIM -eiJ +fZa kRw kRw kRw @@ -267443,7 +267443,7 @@ dzR piR piR piR -lxZ +iuh qdX ick piR @@ -267681,12 +267681,12 @@ kRw kRw kRw kRw -pZL +bAz cIM -mSa +ogk kRw -jOX -hcR +keQ +vhp aKx cfH qhp @@ -267700,12 +267700,12 @@ piR piR lCs piR -eXB -pXh -qcZ +ihY +mhA +sKq piR rsW -pvm +bPs piR piR piR @@ -267940,9 +267940,9 @@ kRw kRw aSK cIM -pFI +nkU kRw -nyv +lAR gmH aKx aKx @@ -267954,14 +267954,14 @@ tnt cIM pmB piR -kuA -pwC +xme +aud piR piR -rne +xSz piR piR -hGL +sZs ivE piR piR @@ -268212,13 +268212,13 @@ cIM jNt piR pDd -vlX -vlX -llm -wDS -huR -lYX -lYX +uPk +uPk +jfA +psn +vwg +prB +prB piR piR piR @@ -272833,10 +272833,10 @@ ucA ucA tUT tUT -qRS -fwF -frE -vba +qwd +lWu +mHy +iKe tUT oyh oyh @@ -273090,10 +273090,10 @@ ucA ucA tUT rlN -qRS -kGy -inK -oOr +qwd +hVO +liv +rAf tUT oyh oyh @@ -273347,10 +273347,10 @@ ucA ucA tUT tUT -nZJ -jps -ydj -pzH +lyQ +wef +tdu +hIn tUT oyh oyh @@ -304175,10 +304175,10 @@ ucA xHe xHe xHe -hIp +kIC xHe beE -ngf +aUb pCS mTs qox @@ -304198,7 +304198,7 @@ uIx nDu nDu nDu -bkY +wfC aDQ sNa sfw @@ -304431,8 +304431,8 @@ ucA ucA xHe xHe -xJo -uxw +siU +xya xHe qhQ dgJ @@ -304455,9 +304455,9 @@ uIx nDu mTi eZD -sUZ -mpK -qtz +pFB +bMq +pKm nsh jcf voT @@ -304688,12 +304688,12 @@ ucA ucA xHe xHe -yjN -uxw +ijr +xya aLb eGK -bNb -gEB +uFn +nqP cmw cHz aNs @@ -304709,13 +304709,13 @@ rrX nss oGo uIx -sVi -wJq -wJq -ucS -hGy -uxW -wVr +szo +vMK +vMK +pSg +eVn +nyW +sgg wsj voT voT @@ -304948,10 +304948,10 @@ xHe xHe xHe xHe -rNL -bNb -yiI -uxw +voq +uFn +uCX +xya pkm aNs qFW @@ -304966,13 +304966,13 @@ rrX iBb gUr uIx -sow -kMb -hDK +vfj +npd +doj tJL aFY okt -dLL +daz nYo voT voT @@ -305202,14 +305202,14 @@ ucA ucA xHe xHe -ioM -uxw +lGl +xya xjQ -iqD +sCP euv xJp -uxw -xjX +xya +sgZ aNs kWD sZO @@ -305223,11 +305223,11 @@ hwM ukK sXl uIx -oad -uxW -rao -qZq -qZq +bLO +nyW +iyO +hBh +hBh dAi fBY gjn @@ -305459,14 +305459,14 @@ ucA ucA xHe xHe -lRc -lVV +sqI +bVE uww hdL mUq mwr eGK -onE +tzG aNs szY wFT @@ -305483,7 +305483,7 @@ uIx wHe lvm vSG -mpK +bMq key nsh nsh @@ -305973,7 +305973,7 @@ ucA ucA xHe xHe -jnv +kEV dzY lJp lJp @@ -306000,8 +306000,8 @@ rhJ rhJ rhJ bxc -rao -iES +iyO +xWQ voT voT ucA @@ -306230,7 +306230,7 @@ ucA ucA xHe xHe -gBs +wde xHe sHq aNs @@ -306241,7 +306241,7 @@ aNs aNs aNs sHq -gGB +ain aNs sRO rzu @@ -306257,8 +306257,8 @@ nDu nDu nDu xSr -rao -yke +iyO +gTj voT voT ucA @@ -306487,7 +306487,7 @@ ucA ucA xHe xHe -vXM +ruD rPA abP aNs @@ -306514,8 +306514,8 @@ oqx mpZ mpZ rSK -rao -hVk +iyO +uzD voT voT ucA @@ -307539,11 +307539,11 @@ vhV omr nfU voT -epk +cdu ndo wAH -pPY -faL +vwm +baj voT jvf vNa @@ -307770,14 +307770,14 @@ xHe xHe lJp lJp -hTr +evv aNs sTG qlp qlp oKq mFS -eBn +mxb dWu wfx vLW @@ -307796,11 +307796,11 @@ hKg raq voT voT -rao +iyO ndo dQs -rao -rao +iyO +iyO iiW tje laZ @@ -308024,7 +308024,7 @@ xHe xHe xHe xHe -tWo +gIx lJp aNs aNs @@ -308275,11 +308275,11 @@ pRs xHe xHe xHe -tSf +lDv xHe eGK -uxw -kCi +xya +tRl xHe xHe lJp @@ -308309,10 +308309,10 @@ bGP bcD mtW uIx -qWm -yke -fDM -rao +nFA +gTj +aQO +iyO wAH ndo voT @@ -308530,13 +308530,13 @@ ucA ucA pRs aDn -uxw +xya krF -uxw +xya xHe jbc -nnj -nnj +lgT +lgT hto hto lJp @@ -308566,9 +308566,9 @@ sFa bcD sFa uIx -nIk -rao -mel +eYC +iyO +gTx okt wAH ndo @@ -308795,7 +308795,7 @@ hto hto hto hto -uxw +xya lJp aNs glw @@ -308832,9 +308832,9 @@ uIx voT rIU voT -vbT -ehr -wOy +onN +eyr +fYI voT qlh nDu @@ -309049,10 +309049,10 @@ kqp dIQ dIQ hto -uxw +xya jBa xHe -dGp +qcv lJp aNs glw @@ -309089,9 +309089,9 @@ uIx aaO xFo lBG -gmg +gRd tIa -wkF +hAt dad qlh nDu @@ -309306,8 +309306,8 @@ qox qox qox mhY -awH -oBL +iGE +vzU xHe jgz lJp @@ -309343,12 +309343,12 @@ yfb xMF kBi uIx -rao -rao -rao +iyO +iyO +iyO nry eiO -wkF +hAt voT qyi nDu @@ -309563,10 +309563,10 @@ exe xHe exe mhY -uxw -epQ +xya +lMZ xHe -vAB +jdP lJp aNs glw @@ -309600,12 +309600,12 @@ wQR xMF xyA uIx -uwP -uwP -hSh +mYQ +mYQ +wXw nAE sIE -cQC +dhR voT vZq mNY @@ -309823,7 +309823,7 @@ efY qkZ qkZ jFO -jDD +hru lJp aNs glw @@ -310077,8 +310077,8 @@ bRh bRh rQx uEY -uxw -uxw +xya +xya aSU qkZ prD @@ -310120,9 +310120,9 @@ cub wTg vEa rxZ -mwR -pme -iho +pkH +gdp +oAP fXs vlb fXs @@ -310376,10 +310376,10 @@ uzZ egJ ehX vEa -iZA -fTa -fTa -aOB +crX +swg +swg +vsE fXs dek dek @@ -310591,17 +310591,17 @@ tQO mXH qyH mXH -xwP +lRL nmc xJx -rov +wXZ bvM fUk rXJ gDy -xXm -eRZ -uIr +rxy +fsP +jKd nPE tKs xLV @@ -310633,10 +310633,10 @@ qkU pHc cRJ vEa -vok -fTa -wtL -lew +jBH +swg +nmn +mGo fXs dKk qEh @@ -310851,7 +310851,7 @@ mKO rDL fPd jha -rov +wXZ xVV gsy uwf @@ -310890,10 +310890,10 @@ vEa vEa vEa vEa -qCM -fTa -bMW -sbn +joq +swg +vaO +lSp fXs nGW dek @@ -311116,9 +311116,9 @@ nPE nPE pDq aex -tZJ -fkv -wHr +bCN +aja +imB jCA eXT mpM @@ -311144,8 +311144,8 @@ wvq rJI uyI vEa -owb -owb +urM +urM fXs fXs fXs @@ -311372,10 +311372,10 @@ ddH ddH nPE pDq -vfi -lmb -lak -eeN +tzn +mze +lzT +qMg jCA pbe lSY @@ -311401,11 +311401,11 @@ tPx rJI idH vEa -owb +urM fXs fXs aeL -wtL +nmn bAG bAG bAG @@ -311613,7 +311613,7 @@ ucA ucA ucA ucA -mKp +cmI crp crp dWz @@ -311630,9 +311630,9 @@ jjT nPE pDq iea -jPp -bwA -gRA +drN +hqO +svA jCA jZm ulW @@ -311658,13 +311658,13 @@ efb qsP llT vEa -owb +urM fXs -dIh -wtL -wtL +wnw +nmn +nmn bAG -wtL +nmn fXs fXs sdh @@ -311870,7 +311870,7 @@ ucA ucA ucA ucA -mym +kTD vPP rrs bYl @@ -311902,7 +311902,7 @@ uPX gRe raq oAe -pZF +qrZ scI jwj aYl @@ -311915,15 +311915,15 @@ uqc uqc uqc vEa -owb +urM fXs fRx msj -ayU +sdR bAG bAG fXs -tJE +xSV biC fXs fXs @@ -312172,7 +312172,7 @@ pIj nYN szx vEa -owb +urM vEa vEa vEa @@ -312180,8 +312180,8 @@ vEa vEa bAG fXs -vFS -tde +qrH +aqF fXs fXs ucA @@ -312385,7 +312385,7 @@ ucA ucA ucA lYx -lOF +fIS koC oOA tyR @@ -312398,7 +312398,7 @@ auO fNt hsT lEs -dIl +iiL nPE nPE vZi @@ -312429,11 +312429,11 @@ qFL gYI rPK vEa -owb -owb -owb -owb -owb +urM +urM +urM +urM +urM vEa bAG fXs @@ -312655,7 +312655,7 @@ pNa pGb nPE pDq -cSk +gUU nPE wIz jLt @@ -312690,12 +312690,12 @@ vEa vEa vEa vEa -owb +urM vEa bAG bAG bAG -lCg +onJ fXs fXs ucA @@ -312947,12 +312947,12 @@ piE gDN pke vEa -owb +urM vEa vEa -wtL +nmn bAG -wtL +nmn fXs fXs ucA @@ -313174,7 +313174,7 @@ nPE nCP hOF tJN -pFu +wpv rIb xAk qyD @@ -313204,10 +313204,10 @@ biy nah jLm vEa -owb -owb +urM +urM vEa -eEN +jQx bAG tqr fXs @@ -313443,8 +313443,8 @@ euu cKO kTm bDL -dHD -dHD +tgn +tgn bDL bDL dTY @@ -313683,12 +313683,12 @@ gDy gDy gDy gDy -cSk +gUU nPE hKt nWP xvr -mRx +qtl nTo hns bHL @@ -313937,7 +313937,7 @@ nPE jNM xZu gDy -dvc +vxw eMg gDy gDy @@ -313973,7 +313973,7 @@ apg sWm kHO iAq -cOw +tgR iAq cBx vEa @@ -314184,7 +314184,7 @@ xuh xuh xuh hNj -keh +sZW lVU aWw oSQ @@ -314194,9 +314194,9 @@ nPE pDq gDy gDy -mif -pcq -lpe +eTr +sir +wud gDy sCz nPE @@ -314450,10 +314450,10 @@ twR nPE pDq gAd -iPs -rfM -lXj -vpn +cTo +ovX +hUw +qoT gDy uDE nPE @@ -314707,10 +314707,10 @@ nQj nPE pDq gDy -qFM -bWn -neJ -vqT +nnX +tGl +qpR +eTn gDy uDE nPE @@ -314718,7 +314718,7 @@ hMm ipn pYl geD -tDO +bmb mKs lif jmI @@ -314966,7 +314966,7 @@ pDq gDy gDy gDy -jJI +wsQ gDy gDy mYF @@ -314981,7 +314981,7 @@ liQ liQ liQ liQ -sZF +tkD uPX pIG buI @@ -315006,7 +315006,7 @@ vEa jbV jbV jbV -eNj +bVN hFK jbV fXs @@ -315731,7 +315731,7 @@ vnI mzk vnI lln -tVc +wzF bpF mbk gDy @@ -315774,12 +315774,12 @@ ebz jpS lku vEa -owb -owb -owb +urM +urM +urM fXs mgx -kHx +ozH fXs fXs ucA @@ -315992,9 +315992,9 @@ gDy bpF vVZ gDy -szn -wLj -aWV +jJd +vBp +tgN gDy tlZ oaU @@ -316033,10 +316033,10 @@ dnU fXs vEa vEa -owb +urM fXs xGh -vPu +rvi fXs fXs ucA @@ -316247,11 +316247,11 @@ sbU tAW gDy lIS -uIr +jKd gqC rAy -hGB -fTu +lhY +rzG gDy fZI oaU @@ -316290,7 +316290,7 @@ mnG fDI wcf vEa -owb +urM fXs mgx bMP @@ -316504,11 +316504,11 @@ bew jCM gDy bpF -uIr +jKd gDy -aTi -oZY -gts +npY +ddL +qmx gDy cek hKS @@ -316547,7 +316547,7 @@ toy pii dvJ vEa -owb +urM fXs jjh fXs @@ -316804,7 +316804,7 @@ sQj otJ jye vEa -owb +urM fXs tPS sOU @@ -317021,9 +317021,9 @@ bpF bpF bpF gDy -heg -iEa -xhU +nSu +wrA +ldP gDy uDE gDy @@ -317058,7 +317058,7 @@ fQA oTG dnU bVj -pJj +aps duZ vEa fXs @@ -317278,9 +317278,9 @@ gDy gDy tPK gDy -aZd -rhN -eUZ +juw +bhT +tnu gDy uDE gDy @@ -317314,9 +317314,9 @@ aEh fQA gJA dnU -sWo -sWo -pnw +bWQ +bWQ +rNl ycM sOU sOU @@ -317525,13 +317525,13 @@ ucA ucA ucA otM -sOB -dBb -nTU -pEs -jid -goe -goe +kPH +kAD +nfE +fAH +urH +hlr +hlr gDy gAd gDy @@ -317571,9 +317571,9 @@ fQA fQA sXp dnU -sWo +bWQ wyv -sWo +bWQ ycM sOU sOU @@ -317782,18 +317782,18 @@ ucA ucA ucA otM -sOB -bjg -emZ -rKG -kFF -xrq -psc +kPH +wkc +xWp +sqc +yla +kPP +lwK dlW kDq dlW -xrY -xdm +tNN +qeO wLy vJf rVI @@ -317828,9 +317828,9 @@ xYz cfD vWw vWw -fwC +tGF cWK -sWo +bWQ ycM cTs sOU @@ -318039,22 +318039,22 @@ ucA ucA ucA otM -sOB -nNk -nSC -nSC -nSC -mGy -oiY +kPH +pAW +tmK +tmK +tmK +ozD +kmS daY pOQ dLk -tGW -ell +pgP +gEH bRl -jzB -giQ -onc +nSr +jaL +mjL txa wBF rVk @@ -318085,7 +318085,7 @@ mqB lOp rBU qjr -sWo +bWQ jJC wyv ycM @@ -318296,22 +318296,22 @@ ucA ucA ucA otM -sOB -nNk -dtv -dtv -tby -cjB -bRt +kPH +pAW +ehY +ehY +tqd +lbD +sKP daY iCU dLk -xbF +hDD nTB moq chP -cgw -lad +vbW +wku txa twB yfx @@ -318342,8 +318342,8 @@ nhm qQG puQ qjr -sWo -jvz +bWQ +gAG wyv ycM bGM @@ -318553,22 +318553,22 @@ ucA ucA ucA otM -sOB -cVb -uHv -qxQ -tby -sLe -psc +kPH +euj +ayZ +hQR +tqd +mCX +lwK daY iCU dLk -xdm -xdm +qeO +qeO moq moq chP -lad +wku txa xjo xHv @@ -318810,22 +318810,22 @@ ucA ucA ucA otM -sOB -wir -tby -tby -tby -sLe -psc +kPH +kIa +tqd +tqd +tqd +mCX +lwK daY iCU dLk -xdm +qeO chP moq -sDE +oLU moq -lad +wku txa lOg uiS @@ -318858,7 +318858,7 @@ lXm kdh cSq iXF -sPs +lpM ycM dmR mCN @@ -319067,22 +319067,22 @@ ucA ucA ucA otM -sOB -wir -nSC -nSC -nSC -luZ -bRt +kPH +kIa +tmK +tmK +tmK +foN +sKP qGf dzB fZS -vqS +oGI wFb -bjT -kXK -syE -clT +nEu +jRU +jDI +llK txa wUK tsi @@ -319115,11 +319115,11 @@ mqB lOp ozE iXF -sPs +lpM ycM -bGy +cDN nvt -qzk +mbP gWN ncB ncB @@ -319324,22 +319324,22 @@ ucA ucA ucA otM -sOB -wir -nSC -dtv -dtv -sLe -psc +kPH +kIa +tmK +ehY +ehY +mCX +lwK daY iCU dLk -xdm +qeO chP moq -mIQ +kyT moq -nqI +mhI txa lIr fQv @@ -319372,11 +319372,11 @@ qqE eLg oMn uXo -sPs +lpM orf sOU sOU -fGC +sLn gWN ncB ncB @@ -319581,22 +319581,22 @@ ucA ucA ucA otM -sOB -nNk -nSC -dtv -fEr -sLe -psc +kPH +pAW +tmK +ehY +vTd +mCX +lwK daY iCU dLk -tQl -xdm +iQJ +qeO moq moq chP -lad +wku txa dWg xkR @@ -319629,11 +319629,11 @@ syd qnv msW iXF -sPs +lpM ycM -nDE -aDq -lWm +dwA +gWa +kjM gWN ncB ncB @@ -319838,22 +319838,22 @@ ucA ucA ucA otM -sOB -mvs -gid -nSC -nSC -sLe -bRt +kPH +oFn +eaz +tmK +tmK +mCX +sKP daY iCU dLk -xbF +hDD nTB moq chP -xdm -xvO +qeO +dYt txa bTK qEt @@ -319886,7 +319886,7 @@ hdK gMo jOc iXF -sPs +lpM ycM noA noA @@ -320095,19 +320095,19 @@ ucA ucA qXo otM -sOB -dKf -nSC -nSC -nSC -mGy -lLm +kPH +dhg +tmK +tmK +tmK +ozD +upi daY klC dLk -tjJ -qfE -xdm +wyO +tZe +qeO txw bRl nKA @@ -320352,19 +320352,19 @@ ucA ucA ucA otM -sOB -ckU -jKi -rdC -cIE -eov -vXn +kPH +uXI +wai +lVc +bux +anE +jwr dlW xcT ntn -lad -xvO -sLY +wku +dYt +mff sHQ uOo aUH @@ -320393,7 +320393,7 @@ fRv sHY eoL hSJ -sxM +nZx mXY vxL qFI @@ -320609,13 +320609,13 @@ ucA ucA ucA otM -sOB -dBb -hKx -mhh -csF -csF -psc +kPH +kAD +oPO +wKB +uli +uli +lwK dlW kBF dlW @@ -320652,17 +320652,17 @@ dDR iTd oPA wHC -hfd +fWv qFI iPH wuJ -mjj +kqh ycM esB -wIe +uVU ncB -mJc -aWZ +kOK +rFT ncB ncB ucA @@ -320876,10 +320876,10 @@ mMk dlW lsC dlW -whU -vju -buC -jKh +pbV +aBM +uGK +kwT dlW lks txa @@ -320909,7 +320909,7 @@ bsI oOi dOD dVq -kNd +eYW qFI aLu uOL @@ -320919,7 +320919,7 @@ esB esB esB ncB -sBy +wVI ncB ncB ucA @@ -321124,19 +321124,19 @@ ucA ucA dlW rIo -mfQ -avf -aBR -xdy +rNy +jGG +hML +tAP rIo oGD iCU oGD dlW -oNn -pMZ -enE -uOe +lTF +okA +vlr +djg dlW dlW dlW @@ -321382,13 +321382,13 @@ ucA dlW rIo rIo -sua -sOB -hJG +wAy +kPH +pdn cVo oGD -rio -xPX +phg +pqb dlW dlW dlW @@ -321639,9 +321639,9 @@ ucA ucA dlW rIo -lPl -sGN -jqh +yhT +gSF +exF rIo lsC oGD @@ -322689,7 +322689,7 @@ nTv tme ohm upx -sfR +xIR dJF bVy uVr @@ -322934,9 +322934,9 @@ sxo sxo sxo dlW -taM -soZ -vXc +ukk +dkY +mTJ dlW dlW dlW @@ -323191,7 +323191,7 @@ viA qcS qPt dlW -gTR +jXd oGD oGD oGD @@ -323450,7 +323450,7 @@ xiA dlW omA xxS -vHX +eFw sXR oGD rsL @@ -323713,10 +323713,10 @@ oGD oGD oGD oGD -thU -uIM -fMB -qAw +xsY +sOl +mLL +ekR dlW ipQ bVy @@ -323970,10 +323970,10 @@ dlW dlW dlW oGD -uTk -eWW -pKD -fuy +azE +ciD +mRp +kIt dlW rIK bVy @@ -324483,7 +324483,7 @@ eYN cVX ggW dlW -sOB +kPH dlW dlW tEc @@ -324740,7 +324740,7 @@ rNo fwV ulu dlW -lgz +wUC dlW kON qnc @@ -324763,7 +324763,7 @@ itu jnM qkP jVK -opP +puK ozO ozO tZX @@ -324991,7 +324991,7 @@ deM act rNo gZn -rdu +wKt vQt rNo mBP @@ -325020,7 +325020,7 @@ dvT jwi tOn jVK -gqI +cQh bqs cSQ hiN @@ -325277,7 +325277,7 @@ jMn sTr dji jVK -ipv +aKO ozO mYp nAb @@ -325784,11 +325784,11 @@ eYj oyh fkA fkA -wmD +uhD fkA kUZ wcL -oqQ +iRG vQo jVK lum @@ -326010,7 +326010,7 @@ vVT mTG deM kmc -iUE +tTr xVF kWs deM @@ -326041,10 +326041,10 @@ eYj eYj fkA fkA -qgw +gEi fkA dkP -oqQ +iRG duI iMc jVK @@ -328582,9 +328582,9 @@ fVV fVV fVV ulj -wJM +oJZ gbZ -ahv +oMk iWQ xeQ fVV @@ -329116,7 +329116,7 @@ oyh oyh hWr ojl -mYg +rWx kKP wXk uQA @@ -329375,7 +329375,7 @@ oyh nbP tIl lSP -kVs +nLN nbP oyh oyh @@ -330402,7 +330402,7 @@ oyh nbP fYV tOv -uhk +bLH dPC dPC jRo @@ -330915,7 +330915,7 @@ oyh oyh nbP nbP -mjd +kwk lSP prS nbP @@ -332196,7 +332196,7 @@ aFj clH wvd trB -ykV +afA fQh aFj cnB @@ -332459,7 +332459,7 @@ aFj vug onI wdW -wHv +plb hux vyR dGN @@ -333228,7 +333228,7 @@ knH knH aFj hwK -wHv +plb hPC hPC hPC @@ -338369,10 +338369,10 @@ ucA ucA tUT tUT -gwD -chA -lhP -vba +iLe +xRF +vAK +iKe tUT ucA ucA @@ -338626,10 +338626,10 @@ ucA ucA tUT rlN -qRS -vKH -inK -gMd +qwd +ofM +liv +iZu tUT ucA ucA @@ -338883,10 +338883,10 @@ ucA ucA tUT tUT -qRS -jps -plE -ikF +qwd +wef +bkI +drH tUT ucA ucA diff --git a/_maps/map_files/Ouroboros/Ouroboros.dmm b/_maps/map_files/Ouroboros/Ouroboros.dmm index 69b695c16589..7eca091a3f3a 100644 --- a/_maps/map_files/Ouroboros/Ouroboros.dmm +++ b/_maps/map_files/Ouroboros/Ouroboros.dmm @@ -118,17 +118,6 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/engineering) -"abX" = ( -/obj/structure/bed, -/obj/effect/landmark/start/prisoner, -/obj/item/bedsheet/brown, -/obj/machinery/button/curtain{ - id = "Cell1Privacy"; - pixel_x = 24; - pixel_y = 24 - }, -/turf/open/floor/iron/dark, -/area/station/security/prison) "abY" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/end{ @@ -164,11 +153,6 @@ dir = 8 }, /area/station/hallway/primary/central) -"acJ" = ( -/obj/structure/bed/double, -/obj/item/bedsheet/qm/double, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "acL" = ( /obj/machinery/conveyor{ dir = 8; @@ -356,6 +340,14 @@ dir = 4 }, /area/station/hallway/primary/central/fore) +"afa" = ( +/obj/machinery/newscaster/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Library - Public Lounge" + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/carpet/green, +/area/station/service/library) "afh" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/bronze, @@ -3350,6 +3342,12 @@ "bbg" = ( /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) +"bbh" = ( +/obj/structure/bed/maint, +/obj/machinery/light/small/broken/directional/north, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/dark/small, +/area/station/security/prison/safe) "bbk" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3707,13 +3705,6 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) -"bfZ" = ( -/obj/item/assembly/mousetrap/armed, -/obj/item/crowbar/large{ - pixel_y = 20 - }, -/turf/open/floor/wood, -/area/station/maintenance/starboard/fore) "bgb" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3949,6 +3940,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet/purple, /area/station/command/heads_quarters/rd) +"bjh" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/light_switch/directional/west{ + pixel_y = -9 + }, +/obj/machinery/light/red/directional/west, +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "bjs" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 8 @@ -4026,6 +4025,25 @@ }, /turf/open/floor/wood/parquet, /area/station/medical/patients_rooms) +"bkh" = ( +/obj/structure/table/wood, +/obj/item/folder/yellow{ + pixel_y = 12; + pixel_x = 5 + }, +/obj/item/stamp/head/qm{ + pixel_y = 5 + }, +/obj/item/stamp{ + pixel_x = 5 + }, +/obj/item/stamp/denied{ + pixel_x = -5 + }, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 8 + }, +/area/station/cargo/quartermaster) "bko" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/structure/cable, @@ -4446,6 +4464,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/small, /area/station/hallway/secondary/entry) +"bps" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "bpv" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/sign/warning/vacuum/external/directional/north, @@ -4502,6 +4529,20 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron, /area/station/engineering/atmos) +"bqN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple/half{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/security/bitden) "brb" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -4669,16 +4710,6 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/central) -"btc" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Cargo - Bitrunner Office" - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/small, -/area/station/bitrunning/den) "btn" = ( /obj/structure/chair/office, /obj/structure/cable, @@ -4858,11 +4889,7 @@ /obj/effect/turf_decal/trimline/red/corner{ dir = 4 }, -/obj/structure/table/glass, -/obj/item/healthanalyzer{ - pixel_y = 10 - }, -/obj/item/clothing/gloves/latex, +/obj/structure/closet/secure_closet/brig_physician, /turf/open/floor/iron/white, /area/station/security/medical) "buK" = ( @@ -5628,11 +5655,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"bHB" = ( -/obj/machinery/light/red/directional/east, -/obj/machinery/byteforge, -/turf/open/floor/catwalk_floor, -/area/station/bitrunning/den) "bHF" = ( /obj/structure/curtain/cloth/fancy/mechanical{ id = "backbarbercurtains" @@ -5718,14 +5740,6 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron/checker, /area/station/maintenance/abandon_diner) -"bIS" = ( -/obj/machinery/button/door/directional/south{ - id = "qm"; - name = "Privacy Shutters Control"; - req_access = list("qm") - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/qm) "bIZ" = ( /obj/machinery/light/cold/directional/west, /obj/machinery/modular_computer/preset/civilian{ @@ -5938,6 +5952,20 @@ /obj/item/pen, /turf/open/floor/wood, /area/station/maintenance/starboard/fore) +"bNg" = ( +/obj/structure/table, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/item/mining_voucher, +/obj/item/gps/mining{ + gpstag = "QM0"; + pixel_y = 4 + }, +/obj/machinery/light_switch/directional/east, +/turf/open/floor/iron/large, +/area/station/cargo/quartermaster) "bNi" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6439,6 +6467,26 @@ }, /turf/open/floor/wood/tile, /area/station/service/bar) +"bXd" = ( +/obj/item/paper_bin/carbon{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/computer_disk/quartermaster, +/obj/item/computer_disk/quartermaster, +/obj/structure/table/wood, +/obj/machinery/status_display/supply{ + pixel_y = 32 + }, +/obj/machinery/light/warm/directional/north, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 8 + }, +/area/station/cargo/quartermaster) "bXk" = ( /turf/closed/wall, /area/station/service/janitor) @@ -6446,6 +6494,15 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/large, /area/station/cargo/storage) +"bXy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/grunge{ + id_tag = "Cell3Privacy"; + name = "Cell 3" + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/prison/safe) "bXJ" = ( /obj/effect/turf_decal/tile/dark_blue/half{ dir = 1 @@ -7421,15 +7478,6 @@ }, /turf/open/floor/iron/dark, /area/station/service/janitor) -"cmp" = ( -/obj/effect/mapping_helpers/airlock/access/all/security/brig, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/security{ - id_tag = "IsolationCell"; - name = "Isolation Cell" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/prison) "cmu" = ( /obj/machinery/light/warm/directional/west, /turf/open/floor/engine, @@ -7984,6 +8032,11 @@ }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) +"cuA" = ( +/obj/structure/window/reinforced/tinted/fulltile, +/obj/structure/hedge/opaque, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "cuJ" = ( /obj/item/toy/figure/assistant{ pixel_y = 17; @@ -8702,12 +8755,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/meeting_room/council) -"cFv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "cFC" = ( /obj/effect/turf_decal/tile/red/real_red{ dir = 8 @@ -9038,6 +9085,9 @@ /obj/item/mod/module/thermal_regulator, /turf/open/floor/iron, /area/station/engineering/supermatter/room) +"cKK" = ( +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "cKN" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/bronze, @@ -9301,6 +9351,20 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) +"cNH" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/fax{ + fax_name = "Quartermaster's Office"; + name = "Quartermaster's Fax Machine"; + pixel_y = 3 + }, +/obj/machinery/light/warm/directional/east, +/turf/open/floor/iron/large, +/area/station/cargo/quartermaster) "cNL" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -9549,6 +9613,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/aft/greater) +"cSt" = ( +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "cSw" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch" @@ -9848,14 +9916,6 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"cZE" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/blueshield) "cZO" = ( /obj/machinery/light/directional/east, /obj/item/kirbyplants/organic/plant22, @@ -9877,6 +9937,17 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/range) +"dad" = ( +/obj/structure/bed, +/obj/effect/landmark/start/prisoner, +/obj/item/bedsheet/brown, +/obj/machinery/button/curtain{ + id = "Cell3Privacy"; + pixel_x = 24; + pixel_y = 24 + }, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "dap" = ( /obj/structure/fluff/paper/stack{ dir = 8 @@ -10646,10 +10717,6 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/station/maintenance/central) -"djV" = ( -/obj/structure/table, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/qm) "dkb" = ( /obj/structure/anvil, /turf/open/floor/wood/large, @@ -10886,6 +10953,12 @@ }, /turf/open/floor/plating, /area/station/command/heads_quarters/hos) +"dns" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/small, +/area/station/cargo/quartermaster) "dnu" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -10946,10 +11019,6 @@ /obj/effect/turf_decal/tile/green/anticorner/contrasted, /turf/open/floor/iron, /area/station/security/checkpoint/service) -"dow" = ( -/obj/machinery/netpod, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/bitrunning/den) "doz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -10958,16 +11027,6 @@ /obj/effect/turf_decal/tile/yellow/half/contrasted, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"doQ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/machinery/computer/shuttle/mining{ - dir = 4 - }, -/obj/effect/turf_decal/box, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) "dpd" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -10979,18 +11038,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/auxlab) -"dpr" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) "dpt" = ( /obj/effect/turf_decal/delivery, /obj/structure/tank_holder/extinguisher, @@ -11593,14 +11640,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) -"dyv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) "dyw" = ( /obj/structure/table/wood, /obj/effect/turf_decal/bot_white, @@ -12153,15 +12192,6 @@ /obj/machinery/light/floor/has_bulb, /turf/open/floor/engine, /area/station/science/xenobiology) -"dIz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/turf/open/floor/iron/dark/small, -/area/station/bitrunning/den) "dIE" = ( /obj/structure/railing, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12647,20 +12677,6 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/engine, /area/station/science/ordnance) -"dPH" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/supply/qm, -/obj/machinery/door/airlock/qm{ - name = "Quartermaster's Office" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/qm) "dPN" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -14332,20 +14348,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/smooth_large, /area/station/command/heads_quarters/rd) -"emn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/half{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/bitrunning/den) "emu" = ( /obj/machinery/button/door/directional/east{ id = "private_2"; @@ -15014,15 +15016,6 @@ /obj/machinery/light/warm/directional/south, /turf/open/floor/wood/large, /area/station/service/barber) -"evF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "evI" = ( /obj/effect/turf_decal/tile/dark/opposingcorners{ dir = 1 @@ -15451,6 +15444,14 @@ /obj/item/kirbyplants/organic/plant21, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/teleporter) +"eCD" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/station/cargo/quartermaster) "eCE" = ( /obj/effect/turf_decal/tile/blue/full, /turf/open/floor/iron/dark/smooth_large, @@ -15629,14 +15630,6 @@ }, /turf/open/floor/iron/large, /area/station/maintenance/port/fore) -"eFl" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners{ - dir = 1 - }, -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/checker, -/area/station/maintenance/abandon_diner) "eFo" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -16532,6 +16525,11 @@ "eSH" = ( /turf/open/floor/iron, /area/station/maintenance/port/fore) +"eSR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "eTh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, /obj/structure/cable, @@ -16773,11 +16771,6 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"eXh" = ( -/obj/structure/dresser, -/obj/machinery/light/small/directional/south, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "eXz" = ( /obj/structure/table/wood, /obj/item/storage/lockbox/medal{ @@ -17343,9 +17336,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/engine, /area/station/engineering/atmos/upper) -"ffU" = ( -/turf/closed/wall/r_wall, -/area/station/bitrunning/den) "fgl" = ( /obj/effect/spawner/random/maintenance/three, /obj/structure/closet/crate/bin, @@ -18620,6 +18610,18 @@ /obj/item/radio/intercom/chapel/directional/west, /turf/open/floor/wood/tile, /area/station/service/chapel/office) +"fAL" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/navigate_destination, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/heads_quarters/blueshield) "fAT" = ( /obj/effect/turf_decal/arrows{ dir = 8; @@ -19318,34 +19320,6 @@ /obj/effect/turf_decal/tile/purple/opposingcorners, /turf/open/floor/iron/dark, /area/station/service/barber) -"fMP" = ( -/obj/effect/turf_decal/tile/dark/diagonal_edge, -/obj/item/storage/box/drinkingglasses{ - pixel_y = 12; - pixel_x = 6 - }, -/obj/structure/table, -/obj/item/reagent_containers/condiment/peppermill{ - desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; - pixel_x = -8; - pixel_y = 6 - }, -/obj/item/reagent_containers/condiment/rice{ - pixel_x = 8; - pixel_y = 5 - }, -/obj/item/reagent_containers/condiment/flour{ - pixel_x = 8 - }, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -9 - }, -/obj/item/storage/fancy/egg_box{ - pixel_y = -7 - }, -/obj/structure/cable, -/turf/open/floor/iron/kitchen/diagonal, -/area/station/security/prison) "fMR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -19645,6 +19619,18 @@ }, /turf/open/floor/wood/tile, /area/station/service/lawoffice) +"fRo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/holopad/secure, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 8 + }, +/area/station/cargo/quartermaster) "fRv" = ( /obj/effect/spawner/random/structure/furniture_parts, /turf/open/floor/plating, @@ -19778,6 +19764,11 @@ /obj/structure/closet/secure_closet/engineering_welding, /turf/open/floor/iron, /area/station/engineering/supermatter/room) +"fUt" = ( +/obj/structure/dresser, +/obj/machinery/light/small/directional/south, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "fUu" = ( /obj/machinery/door/firedoor/border_only{ dir = 8 @@ -20213,25 +20204,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/research) -"gbt" = ( -/obj/structure/table/wood, -/obj/item/folder/yellow{ - pixel_y = 12; - pixel_x = 5 - }, -/obj/item/stamp/head/qm{ - pixel_y = 5 - }, -/obj/item/stamp{ - pixel_x = 5 - }, -/obj/item/stamp/denied{ - pixel_x = -5 - }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, -/area/station/command/heads_quarters/qm) "gbv" = ( /obj/effect/spawner/random/engineering/tank, /turf/open/floor/plating, @@ -20343,9 +20315,6 @@ dir = 4 }, /area/station/engineering/atmos/hfr_room) -"gcu" = ( -/turf/closed/wall, -/area/station/bitrunning/den) "gcy" = ( /obj/structure/hedge, /obj/structure/window/fulltile, @@ -20536,6 +20505,16 @@ /obj/machinery/light/warm/directional/east, /turf/open/floor/wood/tile, /area/station/service/bar) +"gfJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "gfO" = ( /obj/structure/lattice, /turf/open/openspace, @@ -20936,17 +20915,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/atmos) -"glr" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Quarters" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/blueshield) "glu" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/machinery/door/poddoor/preopen{ @@ -21069,14 +21037,6 @@ }, /turf/open/floor/iron/small, /area/station/security/checkpoint/escape) -"gnv" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/station/command/heads_quarters/qm) "gnw" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 @@ -22407,6 +22367,16 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/central/aft) +"gJx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/curtain/cloth/fancy/mechanical{ + icon_state = "bounty-open"; + icon_type = "bounty"; + id = "Cell2Privacy"; + name = "curtain" + }, +/turf/open/floor/plating, +/area/station/security/prison/safe) "gJH" = ( /obj/effect/turf_decal/tile/dark_blue{ dir = 8 @@ -22631,6 +22601,15 @@ }, /turf/open/floor/plating, /area/station/command/heads_quarters/hop) +"gMS" = ( +/obj/effect/mapping_helpers/airlock/access/all/security/brig, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/security{ + id_tag = "IsolationCell"; + name = "Isolation Cell" + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/prison/safe) "gNf" = ( /obj/effect/turf_decal/tile/blue/full, /obj/effect/turf_decal/tile/dark_blue/full, @@ -23297,13 +23276,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"gWI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/prison) "gWJ" = ( /obj/item/kirbyplants/organic/plant22, /obj/effect/turf_decal/siding/dark_blue{ @@ -23478,11 +23450,6 @@ /obj/item/radio/intercom/directional/east, /turf/open/openspace, /area/station/medical/treatment_center) -"gZL" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/heads_quarters/qm) "gZR" = ( /obj/effect/turf_decal/tile/green{ dir = 8 @@ -23527,6 +23494,11 @@ }, /turf/open/floor/iron/dark/smooth_edge, /area/station/service/hydroponics) +"hao" = ( +/obj/structure/bed, +/obj/item/bedsheet/qm, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "hap" = ( /obj/effect/turf_decal/box/corners{ dir = 1 @@ -23605,11 +23577,6 @@ /obj/machinery/light/warm/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos/upper) -"hbm" = ( -/obj/structure/window/reinforced/tinted/fulltile, -/obj/structure/hedge/opaque, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/qm) "hbr" = ( /obj/structure/lattice, /obj/structure/railing{ @@ -24081,10 +24048,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/prison) -"hjz" = ( -/obj/machinery/drone_dispenser, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) "hjJ" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat_interior) @@ -24132,6 +24095,36 @@ /obj/effect/landmark/start/brig_physician, /turf/open/floor/iron/white/smooth_large, /area/station/security/medical) +"hkQ" = ( +/obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/item/storage/box/drinkingglasses{ + pixel_y = 12; + pixel_x = 6 + }, +/obj/structure/table, +/obj/item/reagent_containers/condiment/peppermill{ + desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/reagent_containers/condiment/rice{ + pixel_x = 8; + pixel_y = 5 + }, +/obj/item/reagent_containers/condiment/flour{ + pixel_x = 8 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -9 + }, +/obj/item/storage/fancy/egg_box{ + pixel_y = -7 + }, +/obj/structure/cable, +/obj/item/kitchen/rollingpin, +/obj/item/knife/plastic, +/turf/open/floor/iron/kitchen/diagonal, +/area/station/security/prison) "hkU" = ( /obj/effect/turf_decal/tile/dark_blue{ dir = 1 @@ -24939,26 +24932,6 @@ /obj/structure/chair/wood, /turf/open/floor/wood, /area/station/service/chapel) -"hvP" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/bottle/rum{ - pixel_y = 12 - }, -/obj/item/reagent_containers/cup/glass/bottle/whiskey{ - pixel_y = 9; - pixel_x = 6 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_y = 5; - pixel_x = -9 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = -2 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "hwl" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -25092,14 +25065,6 @@ dir = 5 }, /area/station/science/circuits) -"hyL" = ( -/obj/machinery/photocopier, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/qm) "hyO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26085,10 +26050,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) -"hOK" = ( -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/bitrunning/den) "hOS" = ( /obj/machinery/light/floor/has_bulb, /obj/effect/turf_decal/siding/dark_blue/corner{ @@ -26205,6 +26166,16 @@ /obj/machinery/status_display/evac/directional/east, /turf/open/floor/iron/dark, /area/station/command/teleporter) +"hQp" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/ammo_casing/c45, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/port/fore) "hQC" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/small/directional/east, @@ -26600,18 +26571,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"hVn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad/secure, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, -/area/station/command/heads_quarters/qm) "hVt" = ( /obj/machinery/photocopier, /obj/effect/turf_decal/stripes/line{ @@ -26658,12 +26617,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"hWe" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/small, -/area/station/command/heads_quarters/qm) "hWq" = ( /obj/effect/turf_decal/tile/green/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply, @@ -26755,17 +26708,6 @@ }, /turf/open/floor/iron/kitchen/diagonal, /area/station/security/prison) -"hWW" = ( -/obj/structure/bed, -/obj/effect/landmark/start/prisoner, -/obj/machinery/button/curtain{ - id = "Cell2Privacy"; - pixel_x = 24; - pixel_y = -24 - }, -/obj/item/bedsheet/brown, -/turf/open/floor/iron/dark, -/area/station/security/prison) "hWY" = ( /obj/structure/table/glass, /obj/effect/turf_decal/stripes/line, @@ -26812,6 +26754,13 @@ dir = 8 }, /area/station/hallway/primary/starboard) +"hXA" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/box, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "hXE" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -27065,6 +27014,8 @@ /obj/effect/mapping_helpers/airlock/unres, /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/any/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, /obj/effect/mapping_helpers/airlock/access/any/medical/morgue, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/medbay/lobby) @@ -27287,6 +27238,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/port) +"ieG" = ( +/obj/item/radio/intercom/directional/north, +/obj/machinery/light/red/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown/half{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/security/bitden) "ieH" = ( /obj/structure/closet/secure_closet/medical1{ anchored = 1 @@ -27401,15 +27368,6 @@ /obj/effect/turf_decal/tile/purple/opposingcorners, /turf/open/floor/iron, /area/station/maintenance/department/security/upper) -"igm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/grunge{ - id_tag = "Cell1Privacy"; - name = "Cell 1" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/prison) "igo" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/ce) @@ -27744,6 +27702,12 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/upper) +"ill" = ( +/obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/machinery/light/warm/directional/north, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/kitchen/diagonal, +/area/station/security/prison) "ilq" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -27794,18 +27758,6 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/dark/smooth_large, /area/station/science/genetics) -"ilV" = ( -/obj/machinery/pdapainter/supply, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/item/toy/figure/qm{ - pixel_y = 14 - }, -/obj/machinery/light/warm/directional/east, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/qm) "ilW" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external/glass{ @@ -28341,11 +28293,6 @@ /obj/structure/window/reinforced/fulltile, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/port) -"iuN" = ( -/obj/item/restraints/legcuffs/beartrap/prearmed, -/obj/item/stack/sheet/iron/five, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "iuO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -29803,6 +29750,15 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"iQD" = ( +/obj/effect/turf_decal/tile/dark_red/opposingcorners{ + dir = 1 + }, +/obj/structure/chair/stool/bar/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/checker, +/area/station/maintenance/abandon_diner) "iQI" = ( /obj/effect/turf_decal/tile/dark_red, /obj/structure/cable, @@ -29943,11 +29899,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/station/command/heads_quarters/captain) -"iSZ" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/dark/diagonal_edge, -/turf/open/floor/iron/kitchen/diagonal, -/area/station/security/prison) "iTa" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/blue, @@ -30066,6 +30017,14 @@ }, /turf/open/floor/grass, /area/station/medical/virology) +"iUW" = ( +/obj/machinery/photocopier, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/turf/open/floor/iron/large, +/area/station/cargo/quartermaster) "iUY" = ( /obj/structure/sign/directions/evac/directional/north{ dir = 4 @@ -30637,6 +30596,9 @@ /obj/machinery/griddle, /turf/open/floor/iron/kitchen/diagonal, /area/station/security/prison) +"jch" = ( +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "jcw" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/railing, @@ -30837,13 +30799,6 @@ /obj/effect/spawner/random/trash/food_packaging, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"jfA" = ( -/obj/machinery/newscaster/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "Library - Public Lounge" - }, -/turf/open/floor/carpet/green, -/area/station/service/library) "jfD" = ( /obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ dir = 4 @@ -30901,6 +30856,10 @@ /obj/effect/turf_decal/lunar_sand/plating, /turf/open/floor/iron/dark, /area/station/science/cytology) +"jgb" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/security/bitden) "jgs" = ( /obj/effect/turf_decal/delivery, /obj/structure/closet/cardboard, @@ -30972,6 +30931,11 @@ "jhs" = ( /turf/closed/wall, /area/station/hallway/primary/central) +"jhw" = ( +/obj/machinery/light/red/directional/east, +/obj/machinery/byteforge, +/turf/open/floor/catwalk_floor, +/area/station/security/bitden) "jhz" = ( /obj/item/clothing/head/cone, /obj/effect/mapping_helpers/burnt_floor, @@ -31256,14 +31220,6 @@ /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/exit/departure_lounge) -"jlO" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/box, -/obj/structure/disposalpipe/trunk, -/obj/machinery/keycard_auth/directional/east, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/qm) "jlW" = ( /obj/structure/chair/office, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -31289,6 +31245,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/secondary/command) +"jmY" = ( +/obj/structure/toilet/greyscale{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "jnh" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/neutral/full, @@ -31389,6 +31353,14 @@ }, /turf/open/floor/iron/white/side, /area/station/science/ordnance) +"joA" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/machinery/microwave{ + pixel_y = 6 + }, +/turf/open/floor/iron/kitchen/diagonal, +/area/station/security/prison) "joR" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/effect/mapping_helpers/airlock/access/any/engineering/general, @@ -32203,15 +32175,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/catwalk_floor, /area/station/maintenance/department/science/xenobiology) -"jCv" = ( -/obj/structure/chair/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/ammo_casing/c45, -/turf/open/floor/wood, -/area/station/maintenance/port/fore) "jCE" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 @@ -33285,16 +33248,6 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) -"jSO" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/machinery/computer/security/qm{ - dir = 4 - }, -/obj/effect/turf_decal/box, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) "jSQ" = ( /obj/machinery/light/warm/directional/south, /turf/open/floor/engine, @@ -34279,15 +34232,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"khR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/grunge{ - id_tag = "Cell3Privacy"; - name = "Cell 3" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/prison) "kid" = ( /obj/effect/turf_decal/tile/dark/opposingcorners{ dir = 1 @@ -34715,6 +34659,21 @@ /obj/structure/frame/machine/secured, /turf/open/floor/iron/dark/small, /area/station/science/research) +"kno" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/storage/bag/tray, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3; + pixel_y = 9 + }, +/obj/item/reagent_containers/condiment/peppermill{ + dir = 1; + pixel_x = 3; + pixel_y = 9 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/prison) "knM" = ( /obj/effect/turf_decal/siding/white{ dir = 8 @@ -35350,6 +35309,18 @@ /obj/effect/turf_decal/box, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/pharmacy) +"kuQ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/meeting_room/council) "kuV" = ( /turf/open/openspace, /area/station/maintenance/port/fore) @@ -35454,11 +35425,6 @@ /obj/effect/turf_decal/lunar_sand/plating, /turf/open/floor/iron/dark, /area/station/science/xenobiology) -"kxn" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/dark/full, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/prison) "kxt" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -35981,17 +35947,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/command/heads_quarters/ce) -"kES" = ( -/obj/structure/bed, -/obj/effect/landmark/start/prisoner, -/obj/item/bedsheet/brown, -/obj/machinery/button/curtain{ - id = "Cell3Privacy"; - pixel_x = 24; - pixel_y = 24 - }, -/turf/open/floor/iron/dark, -/area/station/security/prison) "kFb" = ( /obj/structure/sink/kitchen/directional/west{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; @@ -36669,6 +36624,16 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/carpet, /area/station/commons/vacant_room/office) +"kOW" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/curtain/cloth/fancy/mechanical{ + icon_state = "bounty-open"; + icon_type = "bounty"; + id = "Cell1Privacy"; + name = "curtain" + }, +/turf/open/floor/plating, +/area/station/security/prison/safe) "kOX" = ( /obj/structure/railing{ dir = 4 @@ -37814,23 +37779,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/smooth_large, /area/station/security/corrections_officer) -"leN" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/half{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/bitrunning/den) "leT" = ( /obj/machinery/door/firedoor, /turf/open/floor/iron/dark/smooth_large, @@ -37906,6 +37854,9 @@ /mob/living/simple_animal/bot/secbot/pingsky, /turf/open/floor/wood/large, /area/station/tcommsat/computer) +"lgc" = ( +/turf/closed/wall, +/area/station/security/bitden) "lgd" = ( /obj/effect/turf_decal/tile/red/real_red{ dir = 1 @@ -38688,6 +38639,16 @@ }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) +"lsm" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/machinery/chem_dispenser/drinks{ + pixel_y = 6; + pixel_x = -2; + dir = 1 + }, +/turf/open/floor/iron/kitchen/diagonal, +/area/station/security/prison) "lsp" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/duct, @@ -38834,10 +38795,6 @@ }, /turf/open/floor/wood/large, /area/station/service/library) -"luA" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/bitrunning/den) "luC" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -39059,18 +39016,23 @@ "lyw" = ( /turf/closed/wall/r_wall, /area/station/command/bridge) +"lyO" = ( +/obj/structure/bed, +/obj/effect/landmark/start/prisoner, +/obj/machinery/button/curtain{ + id = "Cell2Privacy"; + pixel_x = 24; + pixel_y = -24 + }, +/obj/item/bedsheet/brown, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "lyU" = ( /obj/structure/cable, /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/engineering/tool, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"lza" = ( -/obj/structure/bed/maint, -/obj/machinery/light/small/broken/directional/north, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/iron/dark/small, -/area/station/security/prison) "lzc" = ( /obj/structure/table, /obj/effect/turf_decal/tile/green/diagonal_centre, @@ -39124,6 +39086,11 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, /area/station/engineering/atmos/upper) +"lzS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "lzZ" = ( /obj/machinery/vending/cigarette, /obj/effect/turf_decal/bot_white, @@ -39165,6 +39132,19 @@ /obj/machinery/power/emitter, /turf/open/floor/plating, /area/station/engineering/storage_shared) +"lAE" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/security/prison) "lAJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39711,18 +39691,6 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/central) -"lJh" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/blueshield) "lJk" = ( /obj/machinery/holopad/secure, /obj/structure/cable, @@ -39783,6 +39751,18 @@ /obj/machinery/light/small/red/directional/south, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) +"lKq" = ( +/obj/machinery/pdapainter/supply, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/item/toy/figure/qm{ + pixel_y = 14 + }, +/obj/machinery/light/warm/directional/east, +/turf/open/floor/iron/large, +/area/station/cargo/quartermaster) "lKt" = ( /obj/structure/trash_pile, /turf/open/floor/plating, @@ -40727,6 +40707,14 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"lWK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/cargo/quartermaster) "lWS" = ( /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, /turf/open/floor/engine, @@ -41704,6 +41692,18 @@ /obj/machinery/atm/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/central) +"mlL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/chair/office{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/wood, +/area/station/cargo/quartermaster) "mlU" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/table/reinforced, @@ -41744,6 +41744,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) +"mmk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/computer/shuttle/mining{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/wood, +/area/station/cargo/quartermaster) "mmp" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -41802,16 +41812,6 @@ dir = 1 }, /area/station/medical/pharmacy) -"mnk" = ( -/obj/machinery/door/airlock/qm{ - name = "Quartermaster's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/qm, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/qm) "mnq" = ( /obj/effect/turf_decal/tile/blue/half/contrasted, /obj/effect/turf_decal/siding/blue{ @@ -41891,15 +41891,6 @@ "moK" = ( /turf/open/floor/iron, /area/station/engineering/atmos/upper) -"moL" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/dark/diagonal_edge, -/obj/machinery/microwave{ - pixel_y = 6 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/kitchen/diagonal, -/area/station/security/prison) "moV" = ( /obj/machinery/chem_dispenser/drinks{ pixel_y = 6; @@ -41935,6 +41926,15 @@ /obj/structure/cable, /turf/open/floor/iron/dark/corner, /area/station/commons/dorms) +"mpL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/grunge{ + id_tag = "Cell2Privacy"; + name = "Cell 2" + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/prison/safe) "mpS" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance/two, @@ -42153,6 +42153,11 @@ /obj/structure/barricade/security, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"mtz" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/netpod, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/security/bitden) "mtE" = ( /obj/effect/turf_decal/siding/dark_blue/corner{ dir = 1 @@ -42286,14 +42291,6 @@ /obj/structure/rack/shelf, /turf/open/floor/iron, /area/station/maintenance/department/security/lower) -"mvF" = ( -/obj/structure/toilet/greyscale{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/prison) "mvM" = ( /obj/effect/spawner/random/engineering/material, /obj/structure/closet, @@ -42349,10 +42346,6 @@ }, /turf/open/floor/carpet/green, /area/station/command/heads_quarters/nt_rep) -"mwX" = ( -/obj/machinery/quantum_server, -/turf/open/floor/catwalk_floor, -/area/station/bitrunning/den) "mwZ" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/disposalpipe/segment{ @@ -42981,11 +42974,6 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) -"mEr" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/netpod, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/bitrunning/den) "mEH" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -43114,6 +43102,11 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/service/abandoned_gambling_den) +"mGq" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "mGK" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted, /obj/effect/turf_decal/tile/blue, @@ -43567,6 +43560,17 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron/dark/small, /area/station/science/circuits) +"mMK" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/camera/directional/north{ + c_tag = "Cargo - Quartermaster Office" + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "mNa" = ( /obj/machinery/conveyor{ id = "QMLoad2" @@ -44273,16 +44277,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/transit_tube) -"mWv" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/curtain/cloth/fancy/mechanical{ - icon_state = "bounty-open"; - icon_type = "bounty"; - id = "Cell2Privacy"; - name = "curtain" - }, -/turf/open/floor/plating, -/area/station/security/prison) "mWA" = ( /obj/effect/spawner/random/structure/steam_vent, /obj/structure/sign/poster/random/directional/east, @@ -46209,6 +46203,15 @@ /obj/effect/spawner/random/entertainment/cigarette, /turf/open/floor/wood/tile, /area/station/commons/lounge) +"nyK" = ( +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/blueshield) "nzg" = ( /obj/structure/stairs/north, /turf/open/floor/plating, @@ -46611,6 +46614,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/glass/reinforced, /area/station/science/xenobiology) +"nGb" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/firealarm/directional/east, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/iron/dark/small, +/area/station/cargo/quartermaster) "nGd" = ( /obj/machinery/modular_computer/preset/engineering{ dir = 8 @@ -46905,6 +46917,16 @@ "nMl" = ( /turf/open/floor/iron, /area/station/hallway/secondary/exit) +"nMm" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/machinery/computer/security/qm{ + dir = 4 + }, +/obj/effect/turf_decal/box, +/turf/open/floor/wood, +/area/station/cargo/quartermaster) "nMt" = ( /turf/closed/wall/r_wall, /area/station/maintenance/port/fore) @@ -48445,15 +48467,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/prison) -"olb" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/obj/machinery/firealarm/directional/east, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/iron/dark/small, -/area/station/command/heads_quarters/qm) "olc" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/stripes/line{ @@ -49235,6 +49248,16 @@ /obj/effect/turf_decal/vg_decals/atmos/nitrous_oxide, /turf/open/floor/engine/n2o, /area/station/engineering/atmos/upper) +"ovR" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Cargo - Bitrunner Office" + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "ovW" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/all/supply/mining, @@ -49318,9 +49341,6 @@ /obj/item/multitool, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"oxR" = ( -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/qm) "oyb" = ( /obj/machinery/modular_computer/preset/research{ dir = 8 @@ -50171,6 +50191,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) +"oMK" = ( +/obj/machinery/airalarm/directional/south, +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/bottle/rum{ + pixel_y = 12 + }, +/obj/item/reagent_containers/cup/glass/bottle/whiskey{ + pixel_y = 9; + pixel_x = 6 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_y = 5; + pixel_x = -9 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -2 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "oML" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -50273,6 +50313,10 @@ /obj/item/stack/cable_coil/five, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"oOC" = ( +/obj/structure/table, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "oOH" = ( /obj/structure/closet/secure_closet/security/science, /obj/machinery/requests_console/auto_name/directional/north, @@ -51029,6 +51073,18 @@ /obj/effect/spawner/random/engineering/flashlight, /turf/open/openspace, /area/station/maintenance/starboard/greater) +"pcp" = ( +/obj/structure/closet/secure_closet/quartermaster, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/item/clothing/glasses/material/mining/gar, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/large, +/area/station/cargo/quartermaster) "pcv" = ( /obj/effect/turf_decal/tile/dark_blue/half, /obj/structure/cable, @@ -51163,20 +51219,26 @@ /obj/machinery/light/cold/no_nightlight/directional/east, /turf/open/openspace, /area/station/medical/chemistry) -"pfm" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/dark{ +"peI" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/machinery/computer/quantum_console{ + dir = 1 + }, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine"; - pixel_y = 3 +/obj/effect/turf_decal/tile/brown/half{ + dir = 4 }, -/obj/machinery/light/warm/directional/east, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/qm) +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/security/bitden) "pfs" = ( /obj/machinery/door/firedoor, /obj/machinery/biogenerator, @@ -52190,6 +52252,10 @@ /mob/living/basic/rabbit/daisy, /turf/open/floor/wood, /area/station/service/library/lounge) +"pux" = ( +/obj/machinery/drone_dispenser/preloaded, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) "puz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ @@ -52214,6 +52280,20 @@ /obj/structure/sign/warning/electric_shock/directional/west, /turf/open/floor/iron/dark/smooth_large, /area/station/engineering/main) +"puO" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/dark/diagonal_edge, +/obj/machinery/camera/directional/east{ + c_tag = "Security - Permabrig Kitchen"; + network = list("ss13","prison") + }, +/obj/machinery/chem_dispenser/drinks/beer{ + pixel_y = 6; + pixel_x = 2; + dir = 1 + }, +/turf/open/floor/iron/kitchen/diagonal, +/area/station/security/prison) "puQ" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Control" @@ -54075,26 +54155,6 @@ /obj/structure/lattice, /turf/open/space/openspace, /area/space/nearstation) -"pWQ" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/computer/quantum_console{ - dir = 1 - }, -/obj/effect/turf_decal/box, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown/half{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/bitrunning/den) "pWX" = ( /obj/effect/turf_decal/bot_white, /obj/effect/turf_decal/siding/dark_blue/corner{ @@ -54111,6 +54171,17 @@ /obj/effect/turf_decal/stripes/white/box, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat_interior) +"pXd" = ( +/obj/structure/bed, +/obj/effect/landmark/start/prisoner, +/obj/item/bedsheet/brown, +/obj/machinery/button/curtain{ + id = "Cell1Privacy"; + pixel_x = 24; + pixel_y = 24 + }, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "pXh" = ( /obj/structure/lattice/catwalk, /obj/structure/disposalpipe/segment{ @@ -54663,6 +54734,15 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/engineering/atmos/upper) +"qeT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/requests_console/auto_name/directional/west, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/turf/open/floor/wood, +/area/station/cargo/quartermaster) "qeV" = ( /obj/structure/table, /obj/item/reagent_containers/cup/glass/drinkingglass{ @@ -55528,12 +55608,23 @@ /obj/structure/cable, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) +"qrR" = ( +/obj/item/assembly/mousetrap/armed, +/obj/item/crowbar/large{ + pixel_y = 20 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/starboard/fore) "qrZ" = ( /obj/effect/turf_decal/tile/dark_blue/opposingcorners, /turf/open/floor/iron/dark/side{ dir = 10 }, /area/station/security/brig/entrance) +"qsd" = ( +/turf/closed/wall/r_wall, +/area/station/security/prison/safe) "qsh" = ( /obj/structure/lattice, /obj/item/stack/sheet/iron/fifty, @@ -55830,6 +55921,16 @@ }, /turf/open/floor/iron/white/side, /area/station/hallway/primary/starboard) +"qwQ" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Drone Bay" + }, +/obj/effect/mapping_helpers/airlock/access/any/supply/qm, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "qwT" = ( /obj/effect/turf_decal/tile/green/half/contrasted, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -56849,6 +56950,20 @@ /obj/effect/spawner/random/engineering/tank, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"qNY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown/half{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/security/bitden) "qOg" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -57320,11 +57435,6 @@ /obj/structure/cable, /turf/open/floor/engine/hull/reinforced, /area/station/solars/aisat) -"qWS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/qm) "qWU" = ( /obj/machinery/porta_turret/ai{ dir = 4 @@ -57658,11 +57768,6 @@ /obj/structure/chair/office, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/teleporter) -"rcJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark/small, -/area/station/bitrunning/den) "rcL" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/directional/west, @@ -58597,16 +58702,6 @@ /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/department/security/upper) -"rrj" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "qm"; - name = "Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/qm) "rrl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, /obj/structure/cable, @@ -58722,6 +58817,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"rud" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/station/security/prison/safe) "rue" = ( /obj/effect/turf_decal/tile/dark_blue{ dir = 1 @@ -58915,6 +59016,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/diagonal, /area/station/security/courtroom) +"rwC" = ( +/obj/item/reagent_containers/cup/bucket, +/obj/machinery/flasher/directional/south{ + id = "Isolation" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/dark/small, +/area/station/security/prison/safe) "rwD" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/green{ @@ -59106,14 +59218,13 @@ /obj/item/trash/syndi_cakes, /turf/open/floor/plating, /area/station/maintenance/department/bridge) -"rzE" = ( -/obj/structure/chair/office{ +"rzw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/qm) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "rzH" = ( /obj/machinery/atmospherics/components/tank, /obj/machinery/light/cold/directional/south, @@ -59354,14 +59465,6 @@ /obj/machinery/atmospherics/components/unary/delam_scram/directional/north, /turf/open/floor/engine, /area/station/engineering/supermatter) -"rFq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/mirror/directional/west, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/prison) "rFu" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/cerulean, @@ -59696,6 +59799,10 @@ dir = 4 }, /area/station/security/brig/entrance) +"rLd" = ( +/obj/machinery/smartfridge/food, +/turf/closed/wall/r_wall, +/area/station/security/corrections_officer) "rLh" = ( /obj/structure/railing, /obj/effect/turf_decal/siding/white, @@ -59738,6 +59845,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/smooth_edge, /area/station/service/hydroponics) +"rMl" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/curtain/cloth/fancy/mechanical{ + icon_state = "bounty-open"; + icon_type = "bounty"; + id = "Cell3Privacy"; + name = "curtain" + }, +/turf/open/floor/plating, +/area/station/security/prison/safe) "rMm" = ( /obj/item/clothing/head/cone, /obj/structure/disposalpipe/segment, @@ -60011,17 +60128,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/command/gateway) -"rOC" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "Cargo - Quartermaster Office" - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/qm) "rOJ" = ( /obj/machinery/power/emitter, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -62496,16 +62602,14 @@ }, /turf/open/floor/wood/tile, /area/station/service/theater) -"syX" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/curtain/cloth/fancy/mechanical{ - icon_state = "bounty-open"; - icon_type = "bounty"; - id = "Cell1Privacy"; - name = "curtain" +"szf" = ( +/obj/machinery/button/door/directional/south{ + id = "qm"; + name = "Privacy Shutters Control"; + req_access = list("qm") }, -/turf/open/floor/plating, -/area/station/security/prison) +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "szi" = ( /obj/machinery/firealarm/directional/south, /obj/machinery/camera/directional/south{ @@ -62630,6 +62734,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"sAK" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) "sAL" = ( /obj/structure/sign/poster/random/directional/north, /obj/structure/disposalpipe/broken, @@ -62638,26 +62750,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"sAM" = ( -/obj/item/paper_bin/carbon{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/computer_disk/quartermaster, -/obj/item/computer_disk/quartermaster, -/obj/structure/table/wood, -/obj/machinery/status_display/supply{ - pixel_y = 32 - }, -/obj/machinery/light/warm/directional/north, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, -/area/station/command/heads_quarters/qm) "sAS" = ( /obj/effect/spawner/random/engineering/tank, /turf/open/floor/plating, @@ -62894,19 +62986,6 @@ dir = 1 }, /area/station/security/brig/entrance) -"sFE" = ( -/obj/structure/closet/secure_closet/quartermaster, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/item/gun_maintenance_supplies, -/obj/item/clothing/glasses/material/mining/gar, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/qm) "sFJ" = ( /turf/closed/wall, /area/station/security/courtroom) @@ -63551,6 +63630,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"sNO" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/large, +/area/station/cargo/quartermaster) "sNQ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/hatch{ @@ -63561,12 +63651,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/station/tcommsat/computer) -"sNR" = ( -/obj/effect/turf_decal/tile/dark/opposingcorners{ - dir = 1 - }, -/turf/closed/wall/r_wall, -/area/station/security/prison) "sNT" = ( /obj/structure/table/wood, /obj/effect/spawner/random/bureaucracy/folder{ @@ -63628,6 +63712,11 @@ }, /turf/open/floor/carpet, /area/station/medical/psychology) +"sPb" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/aft/greater) "sPj" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/effect/turf_decal/tile/blue{ @@ -63689,20 +63778,6 @@ /obj/item/analysis_bin, /turf/open/floor/iron/white, /area/station/science/explab) -"sQi" = ( -/obj/structure/table, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/item/mining_voucher, -/obj/item/gps/mining{ - gpstag = "QM0"; - pixel_y = 4 - }, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/qm) "sQj" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -63802,6 +63877,15 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"sRZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/grunge{ + id_tag = "Cell1Privacy"; + name = "Cell 1" + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/prison/safe) "sSc" = ( /obj/effect/turf_decal/weather/dirt, /obj/item/flashlight/lantern{ @@ -64088,11 +64172,6 @@ /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"sWM" = ( -/obj/effect/turf_decal/tile/dark/diagonal_edge, -/obj/machinery/light/warm/directional/north, -/turf/open/floor/iron/kitchen/diagonal, -/area/station/security/prison) "sWN" = ( /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/green{ @@ -64507,15 +64586,6 @@ }, /turf/open/floor/engine, /area/station/engineering/main) -"tdd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/heads_quarters/qm) "tdi" = ( /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/iron/dark, @@ -64974,6 +65044,16 @@ /obj/structure/cable, /turf/open/floor/iron/dark/smooth_half, /area/station/service/hydroponics) +"tjZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "qm"; + name = "Privacy Shutters" + }, +/turf/open/floor/plating, +/area/station/cargo/quartermaster) "tkj" = ( /obj/machinery/airalarm/directional/east, /obj/machinery/light/warm/directional/east, @@ -65460,6 +65540,14 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/science/research) +"tsn" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/cargo/quartermaster) "tsE" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -65681,6 +65769,14 @@ /obj/machinery/door/airlock/mining/glass, /turf/open/floor/iron/dark/smooth_large, /area/station/cargo/storage) +"twL" = ( +/obj/structure/toilet/greyscale{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "twM" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/heat_exchanging/simple, @@ -66206,11 +66302,6 @@ dir = 8 }, /area/station/commons/storage/mining) -"tEQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/small, -/area/station/bitrunning/den) "tFn" = ( /obj/effect/turf_decal/stripes/end{ dir = 4 @@ -66307,15 +66398,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"tGZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/grunge{ - id_tag = "Cell2Privacy"; - name = "Cell 2" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/prison) "tHg" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -66460,14 +66542,6 @@ /obj/machinery/light/cold/directional/east, /turf/open/floor/iron, /area/station/common/cryopods) -"tKo" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) "tKr" = ( /obj/effect/turf_decal/tile/dark_blue, /obj/machinery/status_display/door_timer{ @@ -66613,17 +66687,6 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"tND" = ( -/obj/item/reagent_containers/cup/bucket, -/obj/machinery/flasher/directional/south{ - id = "Isolation" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/iron/dark/small, -/area/station/security/prison) "tNH" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Hydroponics Maintenance" @@ -66734,20 +66797,6 @@ /obj/structure/transit_tube, /turf/open/floor/plating, /area/station/cargo/lobby) -"tPB" = ( -/obj/effect/turf_decal/tile/dark/opposingcorners{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white/corner, -/obj/machinery/light/warm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/prison) "tPF" = ( /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple/half/contrasted, @@ -67938,19 +67987,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/prison) -"ugX" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/modular_computer/preset/id{ - dir = 4 - }, -/obj/effect/turf_decal/box, -/obj/machinery/requests_console/auto_name/directional/west, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) "uhn" = ( /obj/structure/railing{ dir = 4 @@ -69033,6 +69069,10 @@ /obj/effect/turf_decal/trimline/red/mid_joiner{ dir = 1 }, +/obj/item/clothing/gloves/latex, +/obj/item/healthanalyzer{ + pixel_y = 10 + }, /turf/open/floor/iron/white/smooth_edge{ dir = 1 }, @@ -70019,6 +70059,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/tile, /area/station/commons/lounge) +"uLx" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/structure/mirror/directional/west, +/obj/structure/sink/directional/east, +/turf/open/floor/iron/dark, +/area/station/security/prison/safe) "uLP" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -70335,22 +70383,6 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/wood, /area/station/commons/vacant_room/office) -"uQd" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/light/red/directional/north, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown/half{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/bitrunning/den) "uQe" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -70650,16 +70682,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"uUp" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/curtain/cloth/fancy/mechanical{ - icon_state = "bounty-open"; - icon_type = "bounty"; - id = "Cell3Privacy"; - name = "curtain" - }, -/turf/open/floor/plating, -/area/station/security/prison) "uUr" = ( /turf/closed/wall/r_wall, /area/station/security/lockers) @@ -70833,6 +70855,13 @@ /obj/effect/landmark/start/medical_doctor, /turf/open/floor/iron/dark, /area/station/medical/treatment_center) +"uXY" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron, +/area/station/service/forge) "uYc" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/camera/directional/west{ @@ -71237,6 +71266,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) +"vcw" = ( +/obj/machinery/netpod, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/security/bitden) "vcy" = ( /obj/machinery/camera/directional/south{ c_tag = "MiniSat External North-East"; @@ -71330,13 +71363,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/storage) -"veA" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/grass, -/area/station/security/prison) "veB" = ( /obj/structure/sign/warning/secure_area/directional/north, /obj/structure/marker_beacon/burgundy, @@ -72121,20 +72147,14 @@ dir = 8 }, /area/station/science/robotics/lab) -"vqp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown/half{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ +"vqq" = ( +/obj/structure/chair/office{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/bitrunning/den) +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "vqA" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Atmospherics Storage Maintenance" @@ -72614,6 +72634,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/turret_protected/ai) +"vyU" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/supply/qm, +/obj/machinery/door/airlock/mining/glass{ + name = "Drone Bay" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "vzd" = ( /obj/structure/sign/warning/radiation/rad_area/directional/north, /obj/effect/turf_decal/tile/yellow{ @@ -72706,6 +72740,12 @@ }, /turf/open/floor/plastic, /area/station/common/carpshop) +"vAq" = ( +/obj/item/restraints/legcuffs/beartrap/prearmed, +/obj/item/stack/sheet/iron/five, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "vAr" = ( /obj/structure/table/reinforced, /turf/open/floor/iron/kitchen, @@ -74174,6 +74214,9 @@ /obj/structure/stairs/south, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"vTK" = ( +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/quartermaster) "vTQ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -74586,6 +74629,13 @@ /obj/structure/railing, /turf/open/floor/iron/dark/smooth_large, /area/station/command/meeting_room/council) +"vZi" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/grass, +/area/station/security/prison) "vZj" = ( /obj/structure/chair/sofa/bench/left, /obj/effect/turf_decal/siding/wood{ @@ -74956,6 +75006,10 @@ dir = 5 }, /area/station/service/kitchen/diner) +"weM" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "weN" = ( /obj/structure/lattice/catwalk, /turf/open/openspace, @@ -75191,6 +75245,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/commons/storage/mining) +"win" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "wip" = ( /obj/machinery/door/airlock/hatch{ id_tag = "vacant_space"; @@ -75628,18 +75688,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/station/command/heads_quarters/cmo) -"wnQ" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room/council) "wnX" = ( /obj/structure/chair/pew/left, /turf/open/floor/iron/chapel{ @@ -76443,6 +76491,10 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/surgery/aft) +"wAI" = ( +/obj/machinery/quantum_server, +/turf/open/floor/catwalk_floor, +/area/station/security/bitden) "wAJ" = ( /obj/structure/railing{ dir = 1 @@ -76512,16 +76564,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/openspace, /area/station/maintenance/department/security/upper) -"wBv" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/dark/diagonal_edge, -/obj/structure/reagent_dispensers/servingdish, -/obj/machinery/camera/directional/east{ - c_tag = "Security - Permabrig Kitchen"; - network = list("ss13","prison") - }, -/turf/open/floor/iron/kitchen/diagonal, -/area/station/security/prison) "wBw" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -77097,14 +77139,6 @@ /obj/machinery/light/cold/directional/east, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"wKt" = ( -/obj/machinery/firealarm/directional/west, -/obj/machinery/light_switch/directional/west{ - pixel_y = -9 - }, -/obj/machinery/light/red/directional/west, -/turf/open/floor/iron/dark/small, -/area/station/bitrunning/den) "wKw" = ( /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, @@ -77435,9 +77469,6 @@ /obj/structure/stairs/north, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"wOj" = ( -/turf/open/floor/iron/dark/small, -/area/station/bitrunning/den) "wOt" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -77638,18 +77669,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) -"wRp" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/qm) "wRw" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ @@ -78039,14 +78058,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/white/side, /area/station/science/ordnance) -"wXL" = ( -/obj/structure/toilet/greyscale{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/prison) "wXZ" = ( /obj/structure/railing{ dir = 1 @@ -78483,6 +78494,15 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/hallway/secondary/command) +"xfV" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/bitden) "xfY" = ( /obj/machinery/door/morgue{ name = "Massage Lounge" @@ -78953,6 +78973,9 @@ dir = 8 }, /area/station/service/salon) +"xnQ" = ( +/turf/closed/wall/r_wall, +/area/station/security/bitden) "xnS" = ( /obj/item/kirbyplants/organic/plant22, /obj/effect/turf_decal/siding/dark/end{ @@ -79127,6 +79150,11 @@ /obj/item/stack/sheet/iron/five, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"xrc" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "xro" = ( /obj/effect/turf_decal/trimline/neutral/warning{ dir = 4 @@ -79160,6 +79188,17 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs) +"xrM" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Quarters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/heads_quarters/blueshield) "xsq" = ( /obj/effect/spawner/random/trash/grime, /obj/structure/disposalpipe/segment{ @@ -79550,9 +79589,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/science/circuits) -"xyQ" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/qm) "xyT" = ( /obj/effect/turf_decal/tile/dark_blue{ dir = 1 @@ -79792,6 +79828,11 @@ dir = 8 }, /area/station/maintenance/starboard/fore) +"xCl" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/cargo/quartermaster) "xCo" = ( /obj/machinery/light/small/directional/west, /obj/effect/spawner/random/engineering/tank, @@ -81906,6 +81947,23 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/small, /area/station/engineering/atmos/office) +"ykF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple/half{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/security/bitden) "ykH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -107544,7 +107602,7 @@ gqh wUI tcl rWp -evF +gfJ ePv owu lMk @@ -108574,7 +108632,7 @@ sMF dVE soH bWR -jCv +hQp pvr nlv uDp @@ -109875,7 +109933,7 @@ xAm vZy xsW dvI -hjz +pux fPA iyO oHE @@ -115538,7 +115596,7 @@ gTt gTt gTt ykB -wnQ +kuQ qbi gWJ fKE @@ -116566,9 +116624,9 @@ xUm aTL kGu hBQ -glr +xrM ffw -cZE +nyK lNk jdG vSA @@ -117079,7 +117137,7 @@ oTb kcf aYJ vbN -lJh +fAL vbN fGw hHf @@ -121230,7 +121288,7 @@ ogC lzn yiW dxe -nkv +sPb nkv pAJ gqN @@ -124010,11 +124068,11 @@ gKl ucv buh ilt -qld -qld -qld -qld -qld +qsd +qsd +qsd +qsd +qsd jBY mvw oVX @@ -124267,14 +124325,14 @@ wDi hkU rOy ilt -lza -sNR -wXL -rFq -qld -qld -qld -qld +bbh +rud +twL +uLx +qsd +qsd +qsd +qsd jVI aDk fid @@ -124524,17 +124582,17 @@ ilt pCs mWH ilt -tND -sNR -abX -gWI -qld -rFq -mvF -qld -qld -qld -qld +rwC +rud +pXd +rzw +qsd +uLx +jmY +qsd +qsd +qsd +qsd qww qww nzB @@ -124770,7 +124828,7 @@ dFV gUR kFx gBI -veA +vZi qld qld qld @@ -124781,17 +124839,17 @@ ilt tTc noa ilt -cmp -sNR -syX -igm -qld -gWI -hWW -qld -wXL -rFq -qld +gMS +rud +kOW +sRZ +qsd +rzw +lyO +qsd +twL +uLx +qsd kIS qtt gig @@ -125043,12 +125101,12 @@ pOx pZN jOj qld -tGZ -mWv -qld -kES -gWI -qld +mpL +gJx +qsd +dad +rzw +qsd qmI poq woY @@ -125303,9 +125361,9 @@ swt vwB tlF qld -uUp -khR -qld +rMl +bXy +qsd qld lgd nRy @@ -125543,7 +125601,7 @@ fHR eqz rwl gFR -tPB +lAE gCL gCL gCL @@ -125800,14 +125858,14 @@ uSh rtl cSd ley -cSd -moL +rLd +joA pLW xyg qvI evU siz -kxn +kno xhf uDe rdU @@ -126058,10 +126116,10 @@ oFW cSd jgJ cSd -sWM +ill rjQ vGA -iSZ +hWS evU deL lDa @@ -126318,7 +126376,7 @@ cSd jca tVv ekL -hWS +lsm evU qbx vvF @@ -126574,8 +126632,8 @@ xuB qld oFW oFW -fMP -wBv +hkQ +puO azL xIL uqJ @@ -127603,13 +127661,13 @@ laO laO laO xuB -ffU -luA -luA -gcu -btc -dIz -ffU +xnQ +jgb +jgb +lgc +ovR +xfV +xnQ qld qld qld @@ -127860,13 +127918,13 @@ laO laO laO laO -ffU -hOK -wOj -wKt -rcJ -tEQ -ffU +xnQ +cSt +jch +bjh +lzS +mGq +xnQ laO xuB xuB @@ -128117,13 +128175,13 @@ laO laO laO laO -ffU -uQd -emn -vqp -leN -pWQ -ffU +xnQ +ieG +bqN +qNY +ykF +peI +xnQ laO laO xuB @@ -128374,13 +128432,13 @@ laO laO laO laO -ffU -mEr -dow -dow -bHB -mwX -ffU +xnQ +mtz +vcw +vcw +jhw +wAI +xnQ laO laO tzq @@ -128631,13 +128689,13 @@ laO laO laO laO -ffU -ffU -ffU -ffU -ffU -ffU -ffU +xnQ +xnQ +xnQ +xnQ +xnQ +xnQ +xnQ laO laO laO @@ -169787,12 +169845,12 @@ wkF pHs wIF juy -xyQ -rrj -rrj -dPH -gZL -xyQ +cKK +tjZ +tjZ +vyU +xCl +cKK tio vEH cZr @@ -170044,18 +170102,18 @@ xfC pqB qur qur -xyQ -rOC -rzE -tdd -bIS -xyQ -xyQ -xyQ -xyQ -xyQ -xyQ -xyQ +cKK +mMK +vqq +bps +szf +cKK +cKK +cKK +cKK +cKK +cKK +cKK ykH vDj izT @@ -170301,18 +170359,18 @@ jgx uXo sBY pHs -xyQ -sAM -gbt -hVn -oxR -jSO -ugX -doQ -hbm -sFE -wRp -xyQ +cKK +bXd +bkh +fRo +vTK +nMm +qeT +mmk +cuA +pcp +sNO +cKK xcE esM iTN @@ -170558,18 +170616,18 @@ bdy nCH muk pHs -jlO -olb -hWe -gnv -qWS -dyv -dpr -tKo -mnk -cFv -hvP -xyQ +hXA +nGb +dns +eCD +eSR +tsn +mlL +lWK +qwQ +win +oMK +cKK sDQ dAi fqi @@ -170815,18 +170873,18 @@ pHs pHs pHs pHs -xyQ -xyQ -xyQ -pfm -djV -hyL -sQi -ilV -hbm -acJ -eXh -xyQ +cKK +cKK +cKK +cNH +oOC +iUW +bNg +lKq +cuA +hao +fUt +cKK hQb lvl eBy @@ -171074,16 +171132,16 @@ gAm jDg aEP cPA -xyQ -xyQ -xyQ -xyQ -xyQ -xyQ -xyQ -xyQ -xyQ -xyQ +cKK +cKK +cKK +cKK +cKK +cKK +cKK +cKK +cKK +cKK scu kMZ iFo @@ -171819,7 +171877,7 @@ iNr wEl lpC mMv -mMv +sAK jiJ xaP eGr @@ -173925,7 +173983,7 @@ oxw dZR gfP jqJ -ygD +xrc jut rmw tzq @@ -174178,7 +174236,7 @@ wUS gfP qEB oPK -jNS +weM uHH gfP gfP @@ -175687,7 +175745,7 @@ klA mRJ rUk eBo -jfA +afa ifB ued nra @@ -176241,7 +176299,7 @@ sah qyI gqd fuQ -jNS +weM jNS rmw tzq @@ -184206,7 +184264,7 @@ sRc pHy qgn igS -eFl +iQD pJF wfQ enO @@ -185665,7 +185723,7 @@ wqg tRY gzl cBn -bfZ +qrR qcF tRY ikp @@ -186958,7 +187016,7 @@ tRY tRY ugb edi -iuN +vAq xGj roZ fJT @@ -189307,7 +189365,7 @@ eOE pWC wAS ggA -jDi +uXY eol eol eol diff --git a/_maps/map_files/Voidraptor/VoidRaptor.dmm b/_maps/map_files/Voidraptor/VoidRaptor.dmm index 96561ca31d06..5d87e3059cbb 100644 --- a/_maps/map_files/Voidraptor/VoidRaptor.dmm +++ b/_maps/map_files/Voidraptor/VoidRaptor.dmm @@ -1199,19 +1199,6 @@ }, /turf/open/floor/iron/textured, /area/station/command/cc_dock) -"ark" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/station/maintenance/department/engine/atmos) "art" = ( /obj/machinery/door/firedoor, /obj/structure/table/reinforced, @@ -1439,7 +1426,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/pathology) "aub" = ( /obj/structure/reagent_dispensers/water_cooler, /obj/effect/turf_decal/siding/wood{ @@ -1666,7 +1653,7 @@ dir = 4 }, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/pharmacy) +/area/station/maintenance/department/medical/central) "axY" = ( /obj/structure/dresser, /obj/item/toy/figure/cmo{ @@ -1993,7 +1980,7 @@ name = "Cell 6" }, /turf/open/floor/iron/dark/textured_large, -/area/station/security/prison) +/area/station/security/prison/safe) "aBX" = ( /obj/effect/decal/cleanable/dirt, /obj/item/screwdriver, @@ -2315,10 +2302,6 @@ }, /turf/open/floor/iron/large, /area/station/commons/dorms) -"aHi" = ( -/obj/machinery/status_display/evac, -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/qm) "aHV" = ( /obj/structure/cable, /obj/machinery/computer/warrant, @@ -2339,6 +2322,9 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/medical/surgery) +"aIL" = ( +/turf/closed/wall, +/area/station/maintenance/department/bridge) "aIP" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -2365,7 +2351,7 @@ pixel_y = 24 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "aJr" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2512,6 +2498,12 @@ /obj/machinery/holopad/secure, /turf/open/floor/carpet, /area/station/security/courtroom) +"aLy" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/machinery/chem_dispenser/drinks/beer, +/turf/open/floor/iron/kitchen, +/area/station/security/prison/mess) "aLz" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -2525,6 +2517,10 @@ }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"aLA" = ( +/obj/machinery/status_display/evac, +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "aLB" = ( /obj/structure/chair/sofa/corp/right, /obj/effect/turf_decal/tile/dark/opposingcorners{ @@ -2919,7 +2915,14 @@ /turf/open/floor/iron/white/textured_corner{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) +"aQv" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Commissary Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/bridge) "aQC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/trimline/blue/filled/warning{ @@ -3084,6 +3087,13 @@ "aSS" = ( /turf/closed/wall/r_wall, /area/station/engineering/power_room) +"aSU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/textured, +/area/station/maintenance/port/fore) "aTk" = ( /obj/structure/cable, /obj/machinery/airalarm/directional/east, @@ -3388,7 +3398,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/medbay/central) +/area/station/maintenance/department/medical/central) "aWH" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/iron/textured, @@ -3412,18 +3422,6 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/iron/textured, /area/station/maintenance/aft) -"aWT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/newscaster/directional/west, -/obj/structure/bed/dogbed{ - anchored = 1; - name = "Citrus's bed" - }, -/mob/living/basic/sloth/citrus, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "aWY" = ( /obj/structure/chair/sofa/right/brown{ dir = 8 @@ -3949,6 +3947,10 @@ /obj/structure/cable/layer3, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) +"bdS" = ( +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/grass, +/area/station/security/prison/garden) "bdV" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/carpet, @@ -4363,14 +4365,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/wood, /area/station/hallway/secondary/entry) -"bmj" = ( -/obj/item/radio/intercom/directional/east, -/obj/machinery/light/warm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "bmt" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -4384,7 +4378,7 @@ }, /obj/machinery/light/small/directional/north, /turf/open/floor/iron/textured, -/area/station/medical/virology) +/area/station/medical/pathology) "bmG" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 9 @@ -4462,20 +4456,6 @@ "bnJ" = ( /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/department/crew_quarters/bar) -"bnV" = ( -/obj/machinery/modular_computer/preset/id{ - dir = 4 - }, -/obj/structure/sign/calendar/directional/north, -/obj/machinery/keycard_auth/directional/north{ - pixel_x = -27 - }, -/obj/machinery/status_display/supply{ - pixel_x = -32 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "boe" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/bot, @@ -4838,7 +4818,7 @@ dir = 8 }, /turf/open/floor/iron/white/herringbone, -/area/station/medical/virology) +/area/station/medical/pathology) "btZ" = ( /obj/machinery/firealarm/directional/south, /obj/machinery/light_switch/directional/south{ @@ -4992,6 +4972,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured_large, /area/station/security/prison/work) +"bvz" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Blueshield's Equipment Room" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/textured_large, +/area/station/command/heads_quarters/blueshield) "bvI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -5020,13 +5015,38 @@ }, /area/station/hallway/primary/central/aft) "bvV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/dark_green/line{ + dir = 8 + }, +/obj/structure/closet/secure_closet/wall/directional/west{ + name = "Pathologist Equipment" + }, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/gloves/latex, +/obj/item/clothing/gloves/latex, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/reagent_containers/cup/tube, +/obj/item/device/antibody_scanner, +/obj/item/device/antibody_scanner, +/obj/item/device/antibody_scanner, /obj/effect/turf_decal/trimline/dark_green/filled/line{ dir = 9 }, -/obj/machinery/firealarm/directional/north, -/obj/structure/closet/l3closet/virology, +/obj/machinery/light/directional/north, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/pathology) "bws" = ( /obj/structure/table, /obj/item/storage/bag/egg, @@ -5464,7 +5484,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) "bCE" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -5572,6 +5592,14 @@ /obj/machinery/holopad/secure, /turf/open/floor/vault, /area/station/ai_monitored/turret_protected/ai_upload) +"bFr" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "bFv" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 4 @@ -5650,7 +5678,7 @@ /obj/item/reagent_containers/cup/tube, /obj/item/reagent_containers/cup/tube, /turf/open/floor/iron/white/textured_large, -/area/station/medical/virology) +/area/station/medical/pathology) "bGZ" = ( /obj/structure/showcase/machinery/signal_decrypter, /obj/machinery/power/apc/auto_name/directional/north, @@ -5815,15 +5843,6 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) -"bJW" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "bKE" = ( /obj/effect/turf_decal/delivery, /obj/machinery/space_heater, @@ -5875,7 +5894,7 @@ dir = 10 }, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/virology) +/area/station/medical/pathology) "bKX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6024,7 +6043,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/box/blue, /turf/open/floor/iron/white/herringbone, -/area/station/medical/virology) +/area/station/medical/pathology) "bNu" = ( /obj/structure/chair/sofa/left/brown{ dir = 4 @@ -6262,7 +6281,7 @@ /turf/open/floor/iron/white/textured_corner{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) "bQF" = ( /turf/open/floor/iron/textured, /area/station/maintenance/department/science/ordnance_maint) @@ -6406,21 +6425,6 @@ "bTo" = ( /turf/closed/wall, /area/station/commons/storage/primary) -"bTq" = ( -/obj/machinery/digital_clock, -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/qm) -"bTF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/status_display/ai/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/comfy/brown{ - color = "#A46106"; - dir = 1 - }, -/obj/effect/landmark/start/quartermaster, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "bTJ" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -6975,16 +6979,6 @@ dir = 1 }, /area/station/hallway/primary/central) -"cdB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/requests_console/directional/east{ - department = "Quartermaster's Desk"; - name = "Quartermaster's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "cdL" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -7198,6 +7192,15 @@ /obj/machinery/status_display/ai, /turf/closed/wall, /area/station/engineering/atmos) +"cgC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "cgH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7293,16 +7296,6 @@ /obj/item/seeds/sugarcane, /turf/open/floor/grass, /area/station/service/chapel) -"chX" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/service/library/abandoned) "cie" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -7546,7 +7539,7 @@ req_access = list("pathology") }, /turf/open/floor/grass, -/area/station/medical/virology) +/area/station/medical/pathology) "cmW" = ( /obj/effect/turf_decal/tile/brown/anticorner{ dir = 1 @@ -7706,21 +7699,6 @@ /obj/structure/sign/departments/maint/directional/east, /turf/open/floor/iron/dark/textured, /area/station/hallway/secondary/command) -"cpg" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/camera/directional/south{ - c_tag = "Cargo - Quartermaster's Office"; - name = "cargo camera" - }, -/obj/machinery/status_display/ai/directional/south, -/obj/structure/table/wood/fancy/black, -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine"; - pixel_y = 3 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "cpz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/large, @@ -7780,7 +7758,7 @@ /obj/structure/flora/bush/large, /obj/machinery/status_display/ai/directional/north, /turf/open/floor/grass, -/area/station/medical/virology) +/area/station/medical/pathology) "cqn" = ( /obj/item/toy/basketball, /obj/effect/turf_decal/trimline/blue/line{ @@ -7828,7 +7806,7 @@ name = "Air to Distro" }, /turf/open/floor/iron/textured, -/area/station/medical/virology) +/area/station/medical/pathology) "cqB" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -8522,6 +8500,19 @@ }, /turf/open/floor/engine, /area/station/bitrunning/den) +"cBo" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Atmospherics Maintenance" + }, +/obj/machinery/door/poddoor/preopen{ + id = "atmoslock"; + name = "Atmospherics Lockdown Blast Door" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/port) "cBU" = ( /obj/structure/chair/comfy/beige{ dir = 1 @@ -8957,10 +8948,6 @@ "cHR" = ( /turf/closed/wall, /area/station/security/checkpoint/customs) -"cHS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet/black, -/area/station/commons/dorms) "cIc" = ( /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, @@ -9011,7 +8998,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) "cIE" = ( /obj/effect/turf_decal/trimline/brown/filled/warning{ dir = 1 @@ -9070,7 +9057,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 1 }, -/area/station/medical/virology) +/area/station/medical/pathology) "cJm" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stack/sheet/cardboard, @@ -9354,7 +9341,7 @@ dir = 4 }, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/medbay/central) +/area/station/maintenance/department/medical/central) "cOs" = ( /obj/machinery/door/airlock/grunge{ name = "Chapel Office" @@ -9413,7 +9400,7 @@ }, /obj/effect/turf_decal/tile/dark_green/diagonal_centre, /turf/open/floor/iron/white/diagonal, -/area/station/medical/virology) +/area/station/medical/pathology) "cPv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9433,14 +9420,14 @@ /turf/open/floor/iron/white/textured_large, /area/station/commons/fitness/recreation/entertainment) "cPF" = ( -/obj/structure/closet/l3closet, /obj/effect/turf_decal/stripes/line{ dir = 6 }, /obj/machinery/airalarm/directional/south, /obj/effect/turf_decal/tile/dark_green/diagonal_centre, +/obj/structure/closet/l3closet/virology, /turf/open/floor/iron/white/diagonal, -/area/station/medical/virology) +/area/station/medical/pathology) "cPN" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 @@ -9477,6 +9464,26 @@ }, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) +"cPV" = ( +/obj/structure/table/wood, +/obj/item/folder/yellow{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/stamp/head/qm{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/stamp/denied{ + pixel_x = -7; + pixel_y = 9 + }, +/obj/item/stamp{ + pixel_x = -7; + pixel_y = 1 + }, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "cQa" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -10864,7 +10871,7 @@ /turf/open/floor/iron/grimy, /area/station/service/chapel) "dkF" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/atmospherics/miner/carbon_dioxide, /turf/open/floor/engine/co2, /area/station/engineering/atmos) "dkR" = ( @@ -11138,6 +11145,17 @@ /obj/machinery/status_display/ai/directional/north, /turf/open/floor/pod/dark, /area/station/service/chapel/funeral) +"dom" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/service/library/abandoned) "dou" = ( /obj/machinery/airalarm/directional/south, /obj/structure/rack, @@ -11222,12 +11240,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/engineering/supermatter/room) -"dqy" = ( -/obj/structure/bed/double, -/obj/item/bedsheet/qm/double, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "dqJ" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 6 @@ -11639,6 +11651,14 @@ /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron/dark/textured_large, /area/station/security/execution/transfer) +"dwb" = ( +/obj/effect/spawner/random/trash/mess, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/kitchen, +/area/station/service/kitchen/abandoned) "dwd" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 1 @@ -11839,7 +11859,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/station/medical/virology) +/area/station/medical/pathology) "dzk" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 5 @@ -12053,7 +12073,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/grass, -/area/station/medical/virology) +/area/station/medical/pathology) "dBK" = ( /obj/structure/railing, /obj/structure/flora/grass/jungle, @@ -12252,6 +12272,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/textured_large, /area/station/engineering/storage_shared) +"dER" = ( +/obj/effect/spawner/random/maintenance, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/textured, +/area/station/maintenance/port/fore) "dFa" = ( /obj/structure/mop_bucket/janitorialcart{ dir = 4 @@ -12391,7 +12420,7 @@ dir = 9 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "dGO" = ( /obj/structure/bookcase/random/nonfiction, /obj/effect/turf_decal/siding/wood, @@ -12801,6 +12830,14 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark/textured, /area/station/security/warden) +"dLA" = ( +/obj/structure/sign/calendar/directional/north, +/obj/machinery/status_display/supply{ + pixel_x = -32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "dLE" = ( /obj/structure/table/glass, /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -13010,19 +13047,6 @@ }, /turf/open/floor/iron/textured, /area/station/engineering/atmos/hfr_room) -"dOM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "dOV" = ( /obj/structure/sign/poster/random/directional/south, /turf/open/floor/catwalk_floor/iron_smooth, @@ -13188,7 +13212,7 @@ dir = 4 }, /turf/open/floor/iron/white/textured_large, -/area/station/medical/virology) +/area/station/medical/pathology) "dQE" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/machinery/airalarm/directional/south, @@ -13216,7 +13240,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) "dQX" = ( /obj/structure/toilet/greyscale{ dir = 4 @@ -13227,7 +13251,7 @@ dir = 9 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "dRs" = ( /obj/structure/disposalpipe/junction/yjunction, /turf/open/floor/iron/white/textured_large, @@ -13409,6 +13433,22 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark/textured_large, /area/station/command/bridge) +"dTZ" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/box, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "dUa" = ( /obj/effect/turf_decal/loading_area{ dir = 1 @@ -13753,7 +13793,7 @@ name = "curtain" }, /turf/open/floor/plating, -/area/station/security/prison) +/area/station/security/prison/safe) "dYG" = ( /obj/machinery/airalarm/directional/west, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -14261,7 +14301,7 @@ name = "curtain" }, /turf/open/floor/plating, -/area/station/security/prison) +/area/station/security/prison/safe) "efl" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -14944,15 +14984,6 @@ /obj/structure/sink/directional/east, /turf/open/floor/iron/dark/small, /area/station/security/prison/garden) -"eoq" = ( -/obj/structure/reagent_dispensers/plumbed{ - dir = 1; - name = "science water reservoir" - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/delivery/blue, -/turf/open/floor/iron/textured, -/area/station/commons/vacant_room) "eou" = ( /obj/structure/closet, /obj/effect/turf_decal/delivery, @@ -15294,13 +15325,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/large, /area/station/commons/fitness/recreation/entertainment) -"euw" = ( -/obj/effect/spawner/random/trash/mess, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) "eux" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/structure/disposalpipe/segment, @@ -15913,7 +15937,7 @@ /obj/effect/turf_decal/delivery, /obj/machinery/space_heater, /turf/open/floor/iron/textured, -/area/station/medical/medbay/central) +/area/station/maintenance/department/medical/central) "eDN" = ( /obj/structure/chair/sofa/bench/right, /obj/effect/turf_decal/siding/wood{ @@ -16056,25 +16080,6 @@ dir = 1 }, /area/station/hallway/secondary/command) -"eFd" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Blueshield's Equipment Room" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - name = "Bridge Blast Door" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/blueshield) "eFg" = ( /obj/structure/chair/comfy/beige{ dir = 1 @@ -16708,6 +16713,11 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/space/basic, /area/space/nearstation) +"eOK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "eON" = ( /obj/effect/spawner/random/trash/food_packaging, /obj/effect/decal/cleanable/dirt, @@ -16935,6 +16945,13 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/large, /area/station/commons/vacant_room) +"eSq" = ( +/obj/structure/chair/wood{ + dir = 1; + layer = 2.8 + }, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "eSv" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17001,21 +17018,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white/textured_large, /area/station/science/xenobiology) -"eUl" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Blueshield's Equipment Room" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/blueshield) "eUm" = ( /obj/structure/bed, /obj/item/bedsheet/yellow, @@ -17443,9 +17445,6 @@ /obj/machinery/computer/security/telescreen/entertainment/directional/south, /turf/open/floor/iron, /area/station/commons/vacant_room) -"eZa" = ( -/turf/open/floor/iron/textured, -/area/station/commons/vacant_room) "faf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/railing/wood{ @@ -18338,6 +18337,10 @@ "fop" = ( /turf/open/floor/grass, /area/station/service/hydroponics/upper) +"for" = ( +/obj/machinery/duct, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/bridge) "fos" = ( /obj/structure/table/glass, /obj/effect/spawner/random/trash/cigbutt, @@ -18532,6 +18535,9 @@ }, /turf/open/floor/iron/textured_large, /area/station/command/heads_quarters/hos) +"frk" = ( +/turf/open/floor/iron/textured, +/area/station/maintenance/department/bridge) "frl" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/garbage, @@ -18686,6 +18692,18 @@ /obj/structure/window/reinforced/plasma/spawner/directional/east, /turf/open/floor/iron/textured, /area/station/maintenance/aft/lesser) +"ftw" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "ftA" = ( /obj/machinery/status_display/evac/directional/south, /obj/effect/turf_decal/siding/wood/end{ @@ -18986,14 +19004,6 @@ dir = 1 }, /area/station/hallway/primary/fore) -"fyT" = ( -/obj/machinery/computer/cargo{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "fyY" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 @@ -19584,7 +19594,7 @@ name = "Cell 3" }, /turf/open/floor/iron/dark/textured_large, -/area/station/security/prison) +/area/station/security/prison/safe) "fJT" = ( /obj/structure/railing, /obj/structure/flora/grass/jungle, @@ -19645,6 +19655,17 @@ }, /turf/open/floor/iron/textured_large, /area/station/cargo/warehouse) +"fLb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/status_display/ai/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/chair/comfy/brown{ + color = "#A46106"; + dir = 1 + }, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "fLd" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -19826,7 +19847,7 @@ dir = 10 }, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/pathology) "fOm" = ( /obj/effect/turf_decal/trimline/brown/filled/corner, /obj/structure/disposalpipe/segment{ @@ -19855,7 +19876,7 @@ "fOv" = ( /obj/structure/trash_pile, /turf/open/floor/iron/textured, -/area/station/medical/medbay/central) +/area/station/maintenance/department/medical/central) "fOR" = ( /obj/machinery/camera/directional/south{ c_tag = "Bridge - Captain's Quarters"; @@ -20227,14 +20248,6 @@ "fUT" = ( /turf/open/floor/iron/grimy, /area/station/commons/lounge) -"fUU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/four, -/obj/effect/spawner/random/engineering/vending_restock, -/obj/item/storage/box/lights/mixed, -/turf/open/floor/iron/textured, -/area/station/commons/vacant_room) "fVd" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -20294,7 +20307,7 @@ /obj/machinery/duct, /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/pathology) "fVF" = ( /obj/structure/chair{ dir = 4 @@ -20427,7 +20440,7 @@ dir = 4 }, /turf/open/floor/iron/white/textured_large, -/area/station/medical/virology) +/area/station/medical/pathology) "fXv" = ( /obj/effect/landmark/start/detective, /turf/open/floor/carpet, @@ -20549,7 +20562,7 @@ pixel_y = 7 }, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/pathology) "fZt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, @@ -20660,11 +20673,12 @@ }, /obj/machinery/door/firedoor, /obj/machinery/duct, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/effect/mapping_helpers/airlock/access/any/medical/morgue, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/morgue, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/white/textured_large, /area/station/medical/medbay/central) "gba" = ( @@ -20809,7 +20823,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) "gdS" = ( /obj/machinery/door/firedoor, /obj/structure/cable, @@ -21515,6 +21529,10 @@ /area/station/science/research) "glS" = ( /obj/structure/rack, +/obj/item/analyzer{ + pixel_x = 7; + pixel_y = 3 + }, /obj/item/pipe_dispenser, /obj/item/clothing/glasses/meson/engine, /obj/effect/turf_decal/stripes/line{ @@ -21589,16 +21607,6 @@ /obj/structure/closet/firecloset, /turf/open/floor/engine, /area/station/engineering/main) -"gnh" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "gnw" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -21764,6 +21772,25 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/textured_large, /area/station/cargo/storage) +"gqG" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Blueshield's Equipment Room" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/textured_large, +/area/station/command/heads_quarters/blueshield) "gqN" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 4 @@ -21987,6 +22014,10 @@ /obj/effect/turf_decal/trimline/dark_red/arrow_ccw, /turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) +"gtJ" = ( +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "gtM" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/status_display/evac/directional/south, @@ -22137,7 +22168,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 4 }, -/area/station/medical/virology) +/area/station/medical/pathology) "gvG" = ( /turf/open/floor/engine, /area/station/science/auxlab/firing_range) @@ -22432,7 +22463,7 @@ dir = 1 }, /turf/open/floor/iron/white/diagonal, -/area/station/medical/virology) +/area/station/medical/pathology) "gAm" = ( /obj/machinery/disposal/bin, /obj/structure/extinguisher_cabinet/directional/west, @@ -22481,7 +22512,7 @@ }, /obj/item/clothing/head/cone, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/virology) +/area/station/medical/pathology) "gAG" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, @@ -23324,7 +23355,6 @@ pixel_y = 21 }, /obj/structure/rack, -/obj/item/stack/sheet/iron/fifty, /obj/item/analyzer, /obj/item/pipe_dispenser, /turf/open/floor/engine, @@ -23443,7 +23473,7 @@ dir = 8 }, /turf/open/floor/iron/textured, -/area/station/medical/virology) +/area/station/medical/pathology) "gPk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -23768,6 +23798,15 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/station/solars/port/aft) +"gST" = ( +/obj/machinery/airalarm/directional/south, +/obj/structure/closet/secure_closet/quartermaster, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "gSW" = ( /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/loading_area{ @@ -24128,6 +24167,17 @@ }, /turf/open/floor/wood/large, /area/station/service/library) +"gYc" = ( +/obj/machinery/computer/security/qm{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/sign/calendar/directional/west, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "gYp" = ( /obj/effect/turf_decal/weather/sand, /obj/structure/flora/bush/sparsegrass{ @@ -24418,18 +24468,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/hallway/secondary/command) -"hcg" = ( -/obj/structure/table/wood/fancy/black, -/obj/effect/turf_decal/siding/wood, -/obj/item/stack/package_wrap{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/hand_labeler{ - pixel_y = 3 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "hch" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24557,6 +24595,14 @@ /obj/item/stack/sheet/cardboard, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/starboard/upper) +"hdq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/sepia, +/area/station/service/library) "hds" = ( /obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron/grimy, @@ -24689,6 +24735,11 @@ "hfU" = ( /turf/closed/wall, /area/station/service/kitchen/coldroom) +"hgd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/carpet/black, +/area/station/commons/dorms) "hgk" = ( /obj/machinery/door/airlock/grunge{ name = "Chapel Garden" @@ -24808,7 +24859,7 @@ }, /obj/machinery/disease2/diseaseanalyser, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/pathology) "hhP" = ( /obj/effect/turf_decal/trimline/green/filled/warning{ dir = 1 @@ -25291,6 +25342,17 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/starboard/aft) +"hpU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock{ + id_tag = "commissarydoors"; + name = "Vacant Commissary" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/large, +/area/station/commons/vacant_room/commissary) "hqd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, @@ -25459,6 +25521,15 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/textured_large, /area/station/cargo/sorting) +"htk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "htq" = ( /obj/structure/table/wood, /obj/item/book/manual/wiki/security_space_law{ @@ -26177,7 +26248,7 @@ /obj/item/clothing/neck/stethoscope, /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/pathology) "hBZ" = ( /obj/machinery/pdapainter/research, /obj/machinery/computer/security/telescreen/rd{ @@ -27197,16 +27268,6 @@ /obj/structure/window/fulltile, /turf/open/floor/grass, /area/station/hallway/secondary/exit/departure_lounge) -"hRM" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "hRW" = ( /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 5 @@ -27563,6 +27624,10 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark/textured_edge, /area/station/security/prison) +"hXd" = ( +/obj/machinery/digital_clock, +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "hXj" = ( /obj/machinery/rnd/production/circuit_imprinter, /obj/item/radio/intercom/directional/west, @@ -28210,7 +28275,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/herringbone, -/area/station/medical/virology) +/area/station/medical/pathology) "ihB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -28222,7 +28287,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 4 }, -/area/station/medical/virology) +/area/station/medical/pathology) "ihT" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -28298,6 +28363,14 @@ /obj/item/radio, /turf/open/floor/iron/textured, /area/station/security/checkpoint/supply) +"ijg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/random/engineering/vending_restock, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/iron/textured, +/area/station/maintenance/department/bridge) "ijj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -28486,12 +28559,6 @@ dir = 8 }, /area/station/security/office) -"ilT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/carpet/cyan, -/area/station/command/heads_quarters/blueshield) "ilY" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/effect/turf_decal/trimline/blue/filled/line, @@ -28580,7 +28647,7 @@ name = "curtain" }, /turf/open/floor/plating, -/area/station/security/prison) +/area/station/security/prison/safe) "imV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -28650,6 +28717,13 @@ dir = 8 }, /area/station/cargo/storage) +"inx" = ( +/obj/structure/dresser, +/obj/item/toy/figure/qm{ + pixel_y = 14 + }, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "inB" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -28972,6 +29046,15 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/iron/textured, /area/station/maintenance/port/central) +"irl" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/structure/reagent_dispensers/plumbed{ + dir = 1; + name = "science water reservoir" + }, +/obj/effect/turf_decal/delivery/blue, +/turf/open/floor/iron/textured, +/area/station/maintenance/department/bridge) "irm" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -29101,15 +29184,6 @@ /obj/structure/trash_pile, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"iss" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "isx" = ( /obj/structure/rack, /obj/item/storage/box/lights/mixed, @@ -29208,6 +29282,14 @@ /obj/machinery/light/small/directional/east, /turf/closed/wall/r_wall, /area/station/maintenance/department/science/xenobiology) +"itx" = ( +/obj/item/radio/intercom/directional/east, +/obj/machinery/light/warm/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "ity" = ( /obj/structure/table, /obj/item/clothing/mask/gas, @@ -29373,7 +29455,26 @@ }, /obj/effect/spawner/random/structure/tank_holder, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/virology) +/area/station/medical/pathology) +"ivM" = ( +/obj/structure/table/wood/fancy/black, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/item/gun_maintenance_supplies{ + pixel_y = 4 + }, +/obj/item/gps/mining{ + gpstag = "QM0"; + pixel_y = 4 + }, +/obj/machinery/light_switch/directional/south, +/obj/item/folder/yellow{ + pixel_x = -15; + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "ivQ" = ( /obj/machinery/computer/order_console/cook, /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -29395,7 +29496,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/structure/curtain, /turf/open/floor/plating, -/area/station/medical/virology) +/area/station/medical/pathology) "ivY" = ( /obj/structure/flora/grass/jungle, /obj/structure/flora/bush/grassy, @@ -29557,6 +29658,12 @@ "ixX" = ( /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port/central) +"iyd" = ( +/obj/structure/bed, +/obj/item/bedsheet/qm, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "iye" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance/two, @@ -29687,13 +29794,6 @@ dir = 4 }, /area/station/security/checkpoint/science/research) -"izK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "izY" = ( /obj/machinery/door/airlock/grunge{ name = "Chapel" @@ -30205,7 +30305,7 @@ pixel_y = 5 }, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/pathology) "iHX" = ( /obj/effect/decal/cleanable/oil, /obj/effect/turf_decal/stripes/corner{ @@ -30729,7 +30829,7 @@ /turf/open/floor/iron/textured_large, /area/station/cargo/lobby) "iQz" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/machinery/atmospherics/miner/n2o, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) "iQV" = ( @@ -30973,6 +31073,12 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/pod, /area/station/service/chapel/office) +"iTX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/textured, +/area/station/maintenance/starboard/fore) "iUc" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=hall2"; @@ -31026,16 +31132,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/textured, /area/station/maintenance/department/engine/atmos) -"iUM" = ( -/obj/structure/chair/comfy/brown{ - color = "#A46106" - }, -/obj/effect/landmark/start/quartermaster, -/obj/machinery/computer/security/telescreen/vault{ - pixel_y = 30 - }, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "iVa" = ( /turf/open/floor/engine, /area/station/security/range) @@ -31210,13 +31306,6 @@ /obj/effect/turf_decal/tile/blue/diagonal_centre, /turf/open/floor/iron/white/diagonal, /area/station/medical/medbay/central) -"iWQ" = ( -/obj/structure/chair/wood{ - dir = 1; - layer = 2.8 - }, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "iWZ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -31316,6 +31405,14 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/vault, /area/station/ai_monitored/turret_protected/aisat/foyer) +"iXX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/popcorn, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/aft/lesser) "iXY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -31383,7 +31480,7 @@ dir = 10 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "iYT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/green/diagonal_centre, @@ -31604,6 +31701,17 @@ dir = 8 }, /area/station/science/robotics/lab) +"jbo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/wood/parquet, +/area/station/common/night_club) "jbu" = ( /obj/machinery/vending/boozeomat, /obj/effect/turf_decal/tile/bar/opposingcorners, @@ -32116,6 +32224,9 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/airless, /area/station/medical/chemistry) +"jjg" = ( +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/bridge) "jji" = ( /obj/structure/sign/poster/contraband/crocin_pool/directional/south, /obj/effect/spawner/liquids_spawner, @@ -32453,6 +32564,30 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/textured, /area/station/maintenance/port/greater) +"jor" = ( +/obj/machinery/door/airlock/corporate{ + name = "Blueshield's Quarters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/siding/wood/end, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/wood/large, +/area/station/command/heads_quarters/blueshield) "jos" = ( /obj/machinery/vending/coffee{ default_price = 0; @@ -33158,6 +33293,24 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/starboard/lesser) +"jwQ" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp{ + pixel_x = -4; + pixel_y = 12 + }, +/obj/machinery/firealarm/directional/west, +/obj/item/paper_bin/carbon{ + pixel_x = 12; + pixel_y = 4 + }, +/obj/item/pen/fourcolor{ + pixel_x = 12; + pixel_y = 4 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "jwV" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/iron/textured, @@ -33727,6 +33880,17 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/holding_cell) +"jEm" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_blue/end{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark_blue/full, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/iron/dark/textured_large, +/area/station/command/heads_quarters/blueshield) "jEy" = ( /obj/structure/table/wood, /obj/machinery/status_display/ai/directional/north, @@ -34141,6 +34305,11 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port/central) +"jKa" = ( +/obj/effect/spawner/liquids_spawner, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/lowered/iron/pool, +/area/station/common/pool) "jKi" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green, @@ -34861,17 +35030,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/medical) -"jVG" = ( -/obj/machinery/computer/security/qm{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/sign/calendar/directional/west, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "jVW" = ( /obj/structure/table, /turf/open/floor/iron/cafeteria, @@ -35995,7 +36153,7 @@ /obj/structure/flora/bush/sparsegrass, /obj/machinery/light/cold/directional/west, /turf/open/floor/grass, -/area/station/medical/virology) +/area/station/medical/pathology) "kmZ" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -36134,16 +36292,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/large, /area/station/security/office) -"koK" = ( -/obj/structure/chair/office{ - color = "#A46106" - }, -/obj/effect/landmark/start/quartermaster, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "koP" = ( /obj/structure/table/glass, /obj/item/storage/box/petridish{ @@ -36221,11 +36369,6 @@ dir = 8 }, /area/station/hallway/primary/fore) -"kpn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured, -/area/station/maintenance/starboard/fore) "kpq" = ( /obj/machinery/disposal/delivery_chute, /obj/structure/disposalpipe/trunk{ @@ -36594,6 +36737,16 @@ /obj/item/clothing/head/cone, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/starboard/fore) +"kvN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "kvR" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/research/glass{ @@ -36867,7 +37020,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 1 }, -/area/station/medical/virology) +/area/station/medical/pathology) "kzk" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -37346,7 +37499,7 @@ }, /obj/effect/turf_decal/tile/dark_green/diagonal_centre, /turf/open/floor/iron/white/diagonal, -/area/station/medical/virology) +/area/station/medical/pathology) "kEP" = ( /obj/machinery/door/airlock/grunge{ name = "Funeral Room" @@ -37867,12 +38020,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/surgery) -"kLk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/iron/textured, -/area/station/maintenance/port/fore) "kLl" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -38107,6 +38254,12 @@ }, /turf/open/floor/plating, /area/station/security/prison/garden) +"kPk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/cyan, +/area/station/command/heads_quarters/blueshield) "kPn" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -38737,7 +38890,7 @@ }, /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white/textured_edge, -/area/station/medical/virology) +/area/station/medical/pathology) "kXz" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/trimline/brown/filled/warning{ @@ -39520,7 +39673,7 @@ }, /area/station/hallway/secondary/command) "liY" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/atmospherics/miner/oxygen, /turf/open/floor/engine/o2, /area/station/engineering/atmos) "liZ" = ( @@ -40217,7 +40370,27 @@ /obj/effect/turf_decal/stripes/box, /obj/effect/turf_decal/siding/thinplating/dark/end, /turf/open/floor/iron/checker, -/area/station/medical/virology) +/area/station/medical/pathology) +"ltz" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/mining{ + name = "Mining Lobby" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/textured_large, +/area/station/cargo/quartermaster) "ltB" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -40331,7 +40504,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) "lvs" = ( /obj/machinery/door/airlock/maintenance{ name = "Barbershop Maintenance" @@ -40426,9 +40599,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/edge, /area/station/security/checkpoint/customs) -"lwb" = ( -/turf/closed/wall, -/area/station/command/heads_quarters/qm) "lwj" = ( /obj/machinery/door/airlock/external{ name = "Departure Shuttle Airlock" @@ -41590,7 +41760,7 @@ name = "curtain" }, /turf/open/floor/plating, -/area/station/security/prison) +/area/station/security/prison/safe) "lMS" = ( /turf/closed/wall/r_wall, /area/station/maintenance/port) @@ -41617,7 +41787,7 @@ /obj/machinery/duct, /obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/virology) +/area/station/medical/pathology) "lNr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42582,26 +42752,6 @@ "lZg" = ( /turf/closed/wall/r_wall, /area/station/maintenance/port/central) -"lZh" = ( -/obj/structure/table/wood, -/obj/item/folder/yellow{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/item/stamp/head/qm{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/item/stamp/denied{ - pixel_x = -7; - pixel_y = 9 - }, -/obj/item/stamp{ - pixel_x = -7; - pixel_y = 1 - }, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "lZl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42610,7 +42760,7 @@ name = "Cell 2" }, /turf/open/floor/iron/dark/textured_large, -/area/station/security/prison) +/area/station/security/prison/safe) "lZs" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43027,15 +43177,6 @@ /obj/structure/window/fulltile, /turf/open/floor/grass, /area/station/commons/dorms) -"mgS" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/closet/secure_closet/quartermaster, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "mgV" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -43142,7 +43283,7 @@ pixel_y = 24 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "miA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -43463,14 +43604,6 @@ }, /turf/open/floor/iron/checker, /area/station/service/theater) -"mmJ" = ( -/obj/machinery/pdapainter/supply, -/obj/effect/turf_decal/siding/wood, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/bot, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "mna" = ( /obj/structure/plasticflaps{ name = "Deliveries" @@ -43925,6 +44058,27 @@ }, /turf/open/floor/iron/textured_large, /area/station/construction/mining/aux_base) +"mvl" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/iron/dark/textured_large, +/area/station/command/heads_quarters/blueshield) "mvz" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning, /obj/structure/disposalpipe/segment{ @@ -44254,32 +44408,6 @@ dir = 4 }, /area/station/hallway/primary/fore) -"mBe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/qm{ - name = "Quartermaster's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/obj/effect/turf_decal/siding/wood/end, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/textured_large, -/area/station/command/heads_quarters/qm) "mBg" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/spirit_board, @@ -44427,7 +44555,7 @@ name = "virology water reservoir" }, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/virology) +/area/station/medical/pathology) "mDf" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/structure/cable, @@ -44518,6 +44646,16 @@ }, /turf/open/floor/plating, /area/station/science/robotics/mechbay) +"mEw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/textured, +/area/station/maintenance/aft/greater) "mEC" = ( /obj/machinery/corral_corner{ mapping_id = "5" @@ -44910,7 +45048,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 4 }, -/area/station/medical/virology) +/area/station/medical/pathology) "mKs" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -45769,7 +45907,7 @@ /turf/open/floor/wood/large, /area/station/commons/fitness/recreation/entertainment) "mVF" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/machinery/atmospherics/miner/nitrogen, /turf/open/floor/engine/n2, /area/station/engineering/atmos) "mVK" = ( @@ -46073,6 +46211,32 @@ /obj/structure/table/wood/fancy/blue, /turf/open/floor/wood/large, /area/station/security/courtroom) +"mZJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining{ + name = "Mining Lobby" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/obj/effect/turf_decal/siding/wood/end, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/textured_large, +/area/station/cargo/quartermaster) "mZO" = ( /obj/effect/turf_decal/arrows/white{ color = "#00AAFF"; @@ -46761,7 +46925,7 @@ /obj/item/radio/intercom/directional/north, /obj/effect/turf_decal/bot, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/pathology) "nkb" = ( /obj/item/kirbyplants/random, /obj/structure/cable, @@ -46822,7 +46986,7 @@ name = "Chemistry Maintenance" }, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/chemistry) +/area/station/maintenance/department/medical/central) "nkA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/small, @@ -46977,13 +47141,6 @@ }, /turf/open/floor/iron/white/textured_edge, /area/station/medical/medbay/central) -"nmA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/starboard/fore) "nmB" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 4 @@ -47962,6 +48119,9 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) +"nAt" = ( +/turf/closed/wall/r_wall, +/area/station/cargo/quartermaster) "nAw" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -48039,7 +48199,7 @@ dir = 1 }, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/virology) +/area/station/medical/pathology) "nCE" = ( /obj/machinery/door/airlock{ id_tag = "Cell1"; @@ -48585,25 +48745,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/science/robotics/lab) -"nLY" = ( -/obj/structure/table/wood/fancy/black, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/item/gun_maintenance_supplies{ - pixel_y = 4 - }, -/obj/item/gps/mining{ - gpstag = "QM0"; - pixel_y = 4 - }, -/obj/machinery/light_switch/directional/south, -/obj/item/folder/yellow{ - pixel_x = -15; - pixel_y = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "nMf" = ( /obj/structure/reagent_dispensers/plumbed{ name = "medbay water reservoir" @@ -48712,6 +48853,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port/greater) +"nNa" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "nNc" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/table{ @@ -49293,24 +49447,6 @@ }, /turf/open/floor/iron/textured_large, /area/station/engineering/atmos) -"nTW" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp{ - pixel_x = -4; - pixel_y = 12 - }, -/obj/machinery/firealarm/directional/west, -/obj/item/paper_bin/carbon{ - pixel_x = 12; - pixel_y = 4 - }, -/obj/item/pen/fourcolor{ - pixel_x = 12; - pixel_y = 4 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "nTZ" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, @@ -49484,14 +49620,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/textured_edge, /area/station/cargo/warehouse) -"nWl" = ( -/obj/effect/spawner/random/maintenance, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/iron/textured, -/area/station/maintenance/port/fore) "nWq" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 @@ -49597,18 +49725,6 @@ }, /turf/open/floor/carpet/blue, /area/station/command/bridge) -"nXO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "nXW" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 @@ -50011,26 +50127,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/department/science/xenobiology) -"ofb" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/qm/glass{ - name = "Quartermaster's Office" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/textured_large, -/area/station/command/heads_quarters/qm) "ofc" = ( /obj/structure/table/glass, /obj/item/radio/intercom/directional/east, @@ -50232,6 +50328,16 @@ dir = 8 }, /area/station/engineering/storage_shared) +"ohQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/requests_console/directional/east{ + department = "Quartermaster's Desk"; + name = "Quartermaster's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "oia" = ( /obj/effect/turf_decal/tile/green/diagonal_centre, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -50328,7 +50434,7 @@ name = "Cell 1" }, /turf/open/floor/iron/dark/textured_large, -/area/station/security/prison) +/area/station/security/prison/safe) "ojJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -50454,7 +50560,7 @@ }, /obj/effect/turf_decal/box, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/pathology) "okX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -50462,11 +50568,6 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/department/crew_quarters/bar) -"olf" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured, -/area/station/maintenance/port/greater) "olo" = ( /obj/structure/chair/office{ dir = 8 @@ -50597,9 +50698,6 @@ /obj/machinery/status_display/evac/directional/west, /turf/open/floor/engine, /area/station/engineering/atmos/storage/gas) -"onP" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/qm) "onY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/landmark/event_spawn, @@ -50826,7 +50924,7 @@ /obj/effect/landmark/event_spawn, /obj/machinery/computer/diseasesplicer, /turf/open/floor/iron/white/textured_large, -/area/station/medical/virology) +/area/station/medical/pathology) "ore" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -51077,10 +51175,11 @@ /turf/open/floor/wood/large, /area/station/security/courtroom) "otQ" = ( -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/machinery/door/airlock/maintenance{ name = "Medical Maintenance" }, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/department/medical/morgue) "otU" = ( @@ -51102,6 +51201,9 @@ }, /turf/open/floor/iron/large, /area/station/commons/dorms/laundry) +"out" = ( +/turf/closed/wall, +/area/station/cargo/quartermaster) "ouu" = ( /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/light/colour_cycle/dancefloor_b, @@ -51447,19 +51549,19 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/iron/textured, /area/station/maintenance/department/engine/atmos) -"ozn" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "ozq" = ( /obj/effect/turf_decal/vg_decals/numbers/three, /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/command) +"ozs" = ( +/obj/structure/reagent_dispensers/plumbed{ + dir = 1; + name = "science water reservoir" + }, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/delivery/blue, +/turf/open/floor/iron/textured, +/area/station/maintenance/department/bridge) "ozH" = ( /obj/effect/mapping_helpers/airlock/access/all/science/research, /obj/structure/disposalpipe/segment{ @@ -51491,7 +51593,7 @@ /obj/machinery/light/cold/directional/north, /obj/item/crowbar/red, /turf/open/floor/iron/white/textured_edge, -/area/station/medical/virology) +/area/station/medical/pathology) "oAo" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -51675,7 +51777,7 @@ dir = 1 }, /turf/open/floor/iron/white/textured_large, -/area/station/medical/virology) +/area/station/medical/pathology) "oCY" = ( /obj/structure/chair/office{ dir = 8 @@ -52179,13 +52281,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/prison/mess) -"oKJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/large, -/area/station/commons/vacant_room/commissary) "oKR" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured, @@ -52284,7 +52379,7 @@ }, /obj/effect/turf_decal/box/blue, /turf/open/floor/iron/white/herringbone, -/area/station/medical/virology) +/area/station/medical/pathology) "oLS" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52740,7 +52835,7 @@ dir = 6 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "oSy" = ( /obj/structure/table/wood, /obj/machinery/status_display/evac/directional/east, @@ -52878,7 +52973,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 4 }, -/area/station/medical/virology) +/area/station/medical/pathology) "oUo" = ( /obj/structure/cable, /obj/effect/spawner/random/trash/garbage, @@ -52904,7 +52999,7 @@ /obj/machinery/holopad, /obj/effect/turf_decal/bot, /turf/open/floor/iron/white/textured_large, -/area/station/medical/virology) +/area/station/medical/pathology) "oUR" = ( /obj/structure/flora/bush/fullgrass, /obj/structure/flora/bush/ferny, @@ -53156,13 +53251,6 @@ }, /turf/open/floor/grass, /area/station/command/heads_quarters/nt_rep) -"oXG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/trash/popcorn, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/aft/lesser) "oXI" = ( /turf/closed/wall, /area/station/cargo/miningdock) @@ -53407,7 +53495,7 @@ /obj/structure/flora/bush/lavendergrass/style_random, /obj/structure/sign/poster/official/fruit_bowl/directional/west, /turf/open/floor/grass, -/area/station/medical/virology) +/area/station/medical/pathology) "paA" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/effect/turf_decal/bot, @@ -54771,8 +54859,9 @@ dir = 8 }, /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, /obj/effect/mapping_helpers/airlock/access/any/medical/morgue, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, /turf/open/floor/iron/white/textured_large, /area/station/medical/medbay/central) "pte" = ( @@ -55416,7 +55505,7 @@ dir = 4 }, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/virology) +/area/station/medical/pathology) "pCl" = ( /obj/machinery/light/warm/directional/east, /obj/structure/bed/double, @@ -55845,7 +55934,7 @@ /obj/machinery/iv_drip, /obj/effect/turf_decal/bot, /turf/open/floor/iron/white/textured_edge, -/area/station/medical/virology) +/area/station/medical/pathology) "pIi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -56247,7 +56336,7 @@ }, /obj/machinery/light/small/directional/east, /turf/open/floor/iron/white/herringbone, -/area/station/medical/virology) +/area/station/medical/pathology) "pNx" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 @@ -56460,7 +56549,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 4 }, -/area/station/medical/virology) +/area/station/medical/pathology) "pRr" = ( /mob/living/basic/spider/giant/hunter/scrawny, /obj/machinery/light/small/directional/south, @@ -56580,6 +56669,14 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/aft/greater) +"pSO" = ( +/obj/machinery/computer/cargo{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "pSX" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ @@ -56870,7 +56967,7 @@ /turf/open/floor/iron/white/textured_corner{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) "pXj" = ( /obj/effect/turf_decal/tile/red/anticorner{ dir = 8 @@ -57389,7 +57486,7 @@ dir = 5 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "qbl" = ( /obj/effect/turf_decal/siding/thinplating, /obj/machinery/door/firedoor, @@ -57457,7 +57554,7 @@ "qbX" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/medical/virology) +/area/station/medical/pathology) "qca" = ( /obj/machinery/cryopod{ dir = 1 @@ -57517,7 +57614,7 @@ /obj/effect/spawner/random/trash/garbage, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/medbay/central) +/area/station/maintenance/department/medical/central) "qcB" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -58271,6 +58368,16 @@ }, /turf/closed/wall, /area/station/maintenance/aft/upper) +"qnt" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "qnC" = ( /obj/structure/table/wood, /obj/item/paper_bin/carbon{ @@ -58449,7 +58556,7 @@ name = "Cell 4" }, /turf/open/floor/iron/dark/textured_large, -/area/station/security/prison) +/area/station/security/prison/safe) "qpR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/assistant, @@ -59342,6 +59449,12 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark/textured, /area/station/security/brig) +"qEh" = ( +/obj/effect/spawner/random/trash/garbage, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) "qEq" = ( /obj/structure/sign/departments/aisat/directional/north, /obj/machinery/light/cold/directional/north, @@ -59580,6 +59693,16 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/freezer, /area/station/security/checkpoint/medical) +"qHw" = ( +/obj/structure/chair/comfy/brown{ + color = "#A46106" + }, +/obj/effect/landmark/start/quartermaster, +/obj/machinery/computer/security/telescreen/vault{ + pixel_y = 30 + }, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "qHx" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -59907,7 +60030,7 @@ /obj/effect/turf_decal/tile/dark_green/diagonal_centre, /obj/effect/turf_decal/tile/dark_green/diagonal_centre, /turf/open/floor/iron/white/textured_large, -/area/station/medical/virology) +/area/station/medical/pathology) "qLu" = ( /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/department/science/xenobiology) @@ -60007,6 +60130,14 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/iron, /area/station/commons/storage/art) +"qMN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron/large, +/area/station/commons/vacant_room/commissary) "qMR" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -60110,6 +60241,20 @@ }, /turf/open/floor/iron/dark/textured_edge, /area/station/security/brig) +"qPy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/turf_decal/siding/wood, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/department/engine/atmos) "qPI" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, @@ -60241,7 +60386,7 @@ }, /obj/effect/turf_decal/tile/dark_green/diagonal_centre, /turf/open/floor/iron/white/diagonal, -/area/station/medical/virology) +/area/station/medical/pathology) "qRv" = ( /obj/structure/table, /obj/effect/spawner/random/trash/food_packaging, @@ -60461,6 +60606,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood/large, /area/station/hallway/primary/central/fore) +"qTs" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/newscaster/directional/west, +/obj/structure/bed/dogbed{ + anchored = 1; + name = "Citrus's bed" + }, +/mob/living/basic/sloth/citrus, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "qTA" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -60669,7 +60826,7 @@ name = "curtain" }, /turf/open/floor/plating, -/area/station/security/prison) +/area/station/security/prison/safe) "qVT" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/siding/wood{ @@ -60749,10 +60906,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/textured, /area/station/maintenance/department/engine) -"qXo" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/command/heads_quarters/qm) "qXq" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -62900,27 +63053,6 @@ /obj/effect/landmark/start/chemist, /turf/open/floor/iron/dark/textured, /area/station/medical/break_room) -"rDO" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/blueshield) "rDP" = ( /obj/machinery/computer/shuttle/mining{ dir = 1; @@ -62937,15 +63069,6 @@ /obj/item/storage/box/lights/mixed, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"rEe" = ( -/obj/machinery/status_display/evac/directional/west, -/obj/effect/turf_decal/siding/wood/end{ - dir = 1 - }, -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/textured_large, -/area/station/command/heads_quarters/qm) "rEk" = ( /obj/effect/turf_decal/box, /obj/machinery/atmospherics/components/unary/thermomachine/heater/on, @@ -64065,7 +64188,7 @@ name = "Cell 5" }, /turf/open/floor/iron/dark/textured_large, -/area/station/security/prison) +/area/station/security/prison/safe) "rUE" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -64288,11 +64411,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/grimy, /area/station/service/library) -"rXL" = ( -/obj/effect/spawner/random/trash/garbage, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/department/crew_quarters/bar) "rXU" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /turf/open/floor/iron/freezer, @@ -64346,10 +64464,6 @@ dir = 8 }, /area/station/hallway/primary/aft) -"rYT" = ( -/obj/item/robot_suit, -/turf/open/floor/plating, -/area/station/science/research/abandoned) "rYX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -64505,7 +64619,7 @@ dir = 4 }, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/pathology) "scI" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, @@ -64564,13 +64678,6 @@ }, /turf/open/floor/iron/white, /area/station/hallway/primary/fore) -"sdh" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Commissary Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/commons/vacant_room) "sdi" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/item/target, @@ -64756,13 +64863,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/large, /area/station/commons/fitness/recreation) -"sgi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/iron/sepia, -/area/station/service/library) "sgk" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/closet_empty/crate, @@ -64917,11 +65017,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/large, /area/station/hallway/primary/central/aft) -"sid" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/dark/opposingcorners, -/turf/open/floor/iron/kitchen, -/area/station/security/prison/mess) "sig" = ( /obj/machinery/corral_corner{ mapping_id = "2" @@ -65007,9 +65102,8 @@ /turf/open/floor/iron/textured, /area/station/maintenance/department/crew_quarters/bar) "sjV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/medbay/central) +/turf/closed/wall, +/area/station/security/prison/safe) "sjW" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 4 @@ -65357,7 +65451,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/medical/virology) +/area/station/medical/pathology) "soZ" = ( /obj/effect/turf_decal/nova_decals/enclave/top/middle{ color = "#52B4E9" @@ -65472,7 +65566,7 @@ }, /obj/effect/landmark/start/virologist, /turf/open/floor/iron/white/textured_large, -/area/station/medical/virology) +/area/station/medical/pathology) "sqD" = ( /obj/structure/table/optable, /obj/effect/turf_decal/tile/blue/full, @@ -65658,7 +65752,7 @@ pixel_y = 24 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "sts" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -65724,6 +65818,16 @@ }, /turf/open/floor/iron/large, /area/station/security/detectives_office) +"sun" = ( +/obj/structure/chair/office{ + color = "#A46106" + }, +/obj/effect/landmark/start/quartermaster, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "sur" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -65770,7 +65874,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/medbay/lobby) +/area/station/maintenance/department/medical/central) "svh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/lawyer, @@ -66197,16 +66301,6 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/engine/air, /area/station/engineering/atmos) -"sCm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark_blue/end{ - dir = 4 - }, -/obj/effect/turf_decal/tile/dark_blue/full, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/blueshield) "sCw" = ( /obj/machinery/door/airlock/maintenance_hatch, /obj/effect/mapping_helpers/airlock/abandoned, @@ -66291,6 +66385,11 @@ }, /turf/open/floor/iron/textured_large, /area/station/engineering/power_room) +"sDA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/wood, +/area/station/maintenance/port/aft) "sDB" = ( /obj/structure/dresser, /obj/item/radio/intercom/directional/east, @@ -67410,7 +67509,7 @@ /obj/structure/sign/poster/official/cleanliness/directional/north, /obj/effect/turf_decal/tile/dark_green/diagonal_centre, /turf/open/floor/iron/white/diagonal, -/area/station/medical/virology) +/area/station/medical/pathology) "sOJ" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -67503,7 +67602,7 @@ pixel_y = 24 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "sQk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/siding/green{ @@ -68203,7 +68302,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) "sZG" = ( /obj/machinery/computer/records/security, /obj/structure/sign/calendar/directional/north, @@ -68365,6 +68464,7 @@ "tbw" = ( /obj/structure/table, /obj/effect/turf_decal/bot, +/obj/item/stack/sheet/iron/fifty, /obj/item/storage/toolbox/mechanical, /obj/item/flashlight, /obj/item/clothing/glasses/meson/engine, @@ -68507,7 +68607,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) "tdG" = ( /obj/structure/chair/stool/directional/west{ dir = 4 @@ -68735,6 +68835,21 @@ }, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"tgP" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/kitchen{ + dir = 1 + }, +/area/station/commons/dorms/laundry) "tgQ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69152,12 +69267,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/wood/large, /area/station/hallway/primary/central/fore) -"tmQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/fake_stairs/wood/directional/east, -/turf/open/floor/wood/large, -/area/station/service/barber) "tne" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ @@ -69428,6 +69537,15 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/iron/textured, /area/station/maintenance/port/aft) +"tqz" = ( +/obj/machinery/status_display/evac/directional/west, +/obj/effect/turf_decal/siding/wood/end{ + dir = 1 + }, +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/textured_large, +/area/station/cargo/quartermaster) "tqA" = ( /obj/structure/window/spawner/directional/south, /obj/structure/flora/bush/sparsegrass, @@ -69453,7 +69571,7 @@ dir = 6 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "tqM" = ( /obj/machinery/pdapainter/security, /obj/machinery/newscaster/directional/east, @@ -69823,16 +69941,6 @@ }, /turf/open/floor/wood/large, /area/station/hallway/secondary/entry) -"tvH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/parquet, -/area/station/common/night_club) "tvM" = ( /obj/effect/turf_decal/trimline/green/filled/warning{ dir = 6 @@ -70017,10 +70125,12 @@ }, /obj/item/storage/box/syringes, /obj/structure/sign/warning/biohazard/directional/east, +/obj/item/storage/box/monkeycubes/mousecubes, +/obj/item/storage/box/monkeycubes/mousecubes, /turf/open/floor/iron/white/textured_edge{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) "txu" = ( /turf/closed/wall/r_wall, /area/station/maintenance/port/fore) @@ -70637,11 +70747,6 @@ /obj/effect/turf_decal/siding/green, /turf/open/floor/wood/large, /area/station/hallway/primary/central/fore) -"tFF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "tFG" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -70843,13 +70948,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/aft/greater) -"tJv" = ( -/obj/structure/dresser, -/obj/item/toy/figure/qm{ - pixel_y = 14 - }, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "tJJ" = ( /obj/structure/fake_stairs/wood/directional/east, /turf/open/floor/wood/large, @@ -71056,6 +71154,13 @@ }, /turf/open/floor/iron/textured_large, /area/station/cargo/storage) +"tMp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/fake_stairs/wood/directional/east, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/wood/large, +/area/station/service/barber) "tMq" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72337,7 +72442,7 @@ }, /obj/effect/turf_decal/tile/dark_green/diagonal_centre, /turf/open/floor/iron/white/diagonal, -/area/station/medical/virology) +/area/station/medical/pathology) "uhe" = ( /turf/closed/wall, /area/station/cargo/lobby) @@ -72800,6 +72905,15 @@ }, /turf/open/floor/iron/white/textured_large, /area/station/medical/surgery) +"unj" = ( +/obj/machinery/firealarm/directional/north, +/obj/machinery/light_switch/directional/west, +/obj/structure/table/wood, +/obj/item/flashlight/lamp{ + pixel_y = 5 + }, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "uno" = ( /obj/machinery/airalarm/directional/north, /obj/machinery/suit_storage_unit/rd, @@ -73265,17 +73379,6 @@ }, /turf/open/floor/iron/large, /area/station/service/hydroponics) -"usJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - id_tag = "commissarydoor2"; - name = "Vacant Commissary" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/large, -/area/station/commons/vacant_room/commissary) "usV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -73529,7 +73632,7 @@ /obj/machinery/firealarm/directional/north, /obj/effect/turf_decal/tile/dark_green/diagonal_centre, /turf/open/floor/iron/white/diagonal, -/area/station/medical/virology) +/area/station/medical/pathology) "uwg" = ( /obj/effect/turf_decal/siding/thinplating/corner{ dir = 8 @@ -74040,7 +74143,7 @@ /turf/open/floor/iron/textured_large, /area/station/cargo/sorting) "uCn" = ( -/obj/machinery/portable_atmospherics/canister/plasma, +/obj/machinery/atmospherics/miner/plasma, /turf/open/floor/engine/plasma, /area/station/engineering/atmos) "uCv" = ( @@ -74488,7 +74591,7 @@ dir = 1 }, /turf/open/floor/iron/white/textured_large, -/area/station/medical/virology) +/area/station/medical/pathology) "uIw" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/airless, @@ -74753,30 +74856,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/solars/port/aft) -"uNm" = ( -/obj/machinery/door/airlock/corporate{ - name = "Blueshield's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood/end, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/blueshield) "uNu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -74848,7 +74927,7 @@ }, /obj/machinery/light/small/directional/east, /turf/open/floor/iron/white/herringbone, -/area/station/medical/virology) +/area/station/medical/pathology) "uNY" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /obj/structure/cable, @@ -74886,7 +74965,7 @@ }, /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/medical/pathology) "uOt" = ( /obj/structure/rack, /obj/machinery/status_display/ai/directional/north, @@ -75235,7 +75314,7 @@ dir = 1 }, /turf/open/floor/grass, -/area/station/medical/virology) +/area/station/medical/pathology) "uTT" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -75794,7 +75873,7 @@ pixel_y = 24 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "vcW" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 @@ -76148,20 +76227,6 @@ }, /turf/open/floor/iron/textured_large, /area/station/engineering/atmos/storage) -"vjc" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/kitchen{ - dir = 1 - }, -/area/station/commons/dorms/laundry) "vjt" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -76234,6 +76299,14 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) +"vjU" = ( +/obj/machinery/photocopier, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "vjY" = ( /obj/structure/training_machine, /obj/item/target, @@ -76256,6 +76329,13 @@ /obj/structure/cable, /turf/open/floor/vault, /area/station/ai_monitored/turret_protected/aisat/foyer) +"vkv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "vkB" = ( /obj/structure/rack/shelf, /obj/effect/spawner/random/techstorage/service_all, @@ -76521,20 +76601,11 @@ /area/station/service/chapel/funeral) "vnu" = ( /turf/closed/wall/r_wall, -/area/station/medical/virology) +/area/station/medical/pathology) "vnv" = ( /mob/living/simple_animal/bot/secbot/beepsky/officer, /turf/open/floor/iron/dark/textured_large, /area/station/security/office) -"vnO" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/light_switch/directional/west, -/obj/structure/table/wood/fancy/black, -/obj/item/flashlight/lamp{ - pixel_y = 5 - }, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "vnQ" = ( /obj/structure/chair/sofa/right/brown{ dir = 4 @@ -76758,6 +76829,10 @@ name = "Holodeck Projector Floor" }, /area/station/holodeck/rec_center) +"vrK" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/cargo/quartermaster) "vrU" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 4 @@ -76848,6 +76923,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured, /area/station/science/research/abandoned) +"vtA" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/iron/textured, +/area/station/maintenance/port/greater) "vtC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -77039,7 +77120,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor/iron_smooth, -/area/station/medical/medbay/central) +/area/station/maintenance/department/medical/central) "vvT" = ( /obj/machinery/door/firedoor/heavy, /obj/effect/turf_decal/stripes/line{ @@ -77146,9 +77227,6 @@ /obj/effect/spawner/armory_spawn/mod_lasers_small, /turf/open/floor/iron/dark/textured_corner, /area/station/ai_monitored/security/armory) -"vwo" = ( -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/commons/vacant_room) "vwz" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -77297,7 +77375,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) "vzg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/garbage, @@ -77870,7 +77948,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/herringbone, -/area/station/medical/virology) +/area/station/medical/pathology) "vHM" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/wood, @@ -78217,7 +78295,7 @@ /obj/item/folder/white, /obj/item/pen/red, /turf/open/floor/iron/white/textured_edge, -/area/station/medical/virology) +/area/station/medical/pathology) "vMO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -78376,22 +78454,9 @@ /obj/effect/turf_decal/tile/green/diagonal_centre, /turf/open/floor/iron/diagonal, /area/station/hallway/secondary/service) -"vPc" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/reagent_dispensers/plumbed{ - dir = 1; - name = "science water reservoir" - }, -/obj/effect/turf_decal/delivery/blue, -/turf/open/floor/iron/textured, -/area/station/commons/vacant_room) "vPf" = ( /turf/open/floor/pod/dark, /area/station/engineering/storage/tech) -"vPk" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) "vPl" = ( /obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/tile/green/diagonal_centre, @@ -78612,7 +78677,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/herringbone, -/area/station/medical/virology) +/area/station/medical/pathology) "vSj" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/effect/turf_decal/delivery, @@ -79466,7 +79531,7 @@ /obj/structure/flora/bush/large, /obj/machinery/status_display/evac/directional/south, /turf/open/floor/grass, -/area/station/medical/virology) +/area/station/medical/pathology) "wel" = ( /obj/effect/turf_decal/trimline/blue/mid_joiner, /turf/open/space/basic, @@ -79685,7 +79750,7 @@ dir = 10 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "whS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/all/command/gateway, @@ -79874,7 +79939,7 @@ /turf/open/floor/iron/white/textured_corner{ dir = 1 }, -/area/station/medical/virology) +/area/station/medical/pathology) "wkT" = ( /obj/machinery/atmospherics/components/tank/air{ dir = 8 @@ -79900,6 +79965,18 @@ /obj/structure/fluff/beach_umbrella/syndi, /turf/open/floor/iron/white/small, /area/station/common/pool) +"wle" = ( +/obj/structure/table/wood/fancy/black, +/obj/effect/turf_decal/siding/wood, +/obj/item/stack/package_wrap{ + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/hand_labeler{ + pixel_y = 3 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "wlh" = ( /obj/machinery/incident_display/delam, /turf/closed/wall, @@ -79987,6 +80064,14 @@ /obj/structure/window/fulltile, /turf/open/floor/grass, /area/station/commons/fitness/recreation) +"wmE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/gary, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/starboard/fore) "wmF" = ( /obj/structure/railing{ dir = 8 @@ -80095,7 +80180,7 @@ layer = 2.9 }, /turf/open/floor/grass, -/area/station/medical/virology) +/area/station/medical/pathology) "woB" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/large, @@ -81144,6 +81229,16 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/stairs/medium, /area/station/hallway/secondary/command) +"wBo" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/camera/directional/south{ + c_tag = "Cargo - Quartermaster's Office"; + name = "cargo camera" + }, +/obj/machinery/status_display/ai/directional/south, +/obj/structure/table/wood, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "wBy" = ( /obj/effect/spawner/random/entertainment/arcade, /obj/structure/sign/poster/contraband/random/directional/north, @@ -81362,16 +81457,6 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/medical/morgue) -"wEm" = ( -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/machinery/door/airlock/maintenance{ - name = "Command Hallway Maintenance" - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/commons/vacant_room) "wEB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -81531,6 +81616,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"wGn" = ( +/obj/item/robot_suit, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/science/research/abandoned) "wGw" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -81920,22 +82010,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/dark/textured_large, /area/station/engineering/atmos) -"wMh" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/box, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "wMl" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 @@ -82029,10 +82103,6 @@ dir = 1 }, /area/station/cargo/office) -"wMT" = ( -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/commons/vacant_room) "wNh" = ( /obj/effect/turf_decal/trimline/dark_red/filled/line{ dir = 1 @@ -82383,15 +82453,6 @@ }, /turf/open/floor/iron/corner, /area/station/service/hydroponics) -"wTh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/iron/textured, -/area/station/maintenance/aft/greater) "wTj" = ( /obj/machinery/power/shuttle_engine/heater, /obj/effect/turf_decal/stripes/line{ @@ -82573,6 +82634,12 @@ /mob/living/simple_animal/bot/mulebot, /turf/open/floor/iron/textured_edge, /area/station/cargo/storage) +"wVY" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/light_switch/directional/east, +/turf/open/floor/carpet/black, +/area/station/cargo/quartermaster) "wWw" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/chair/office{ @@ -82599,18 +82666,6 @@ dir = 4 }, /area/station/commons/fitness/recreation/entertainment) -"wXg" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Atmospherics Maintenance" - }, -/obj/machinery/door/poddoor/preopen{ - id = "atmoslock"; - name = "Atmospherics Lockdown Blast Door" - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/port) "wXr" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 9 @@ -82675,14 +82730,6 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"wZs" = ( -/obj/machinery/photocopier, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "wZR" = ( /obj/structure/table/reinforced/rglass, /obj/machinery/keycard_auth{ @@ -82966,6 +83013,13 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) +"xfD" = ( +/obj/effect/turf_decal/siding/wood, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "xfM" = ( /turf/open/floor/catwalk_floor/iron_smooth, /area/station/science/robotics/mechbay) @@ -83016,7 +83070,7 @@ /turf/open/floor/iron/white/textured_edge{ dir = 8 }, -/area/station/medical/virology) +/area/station/medical/pathology) "xgy" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 4 @@ -84168,12 +84222,6 @@ }, /turf/open/floor/iron/textured_large, /area/station/engineering/main) -"xvJ" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/carpet/black, -/area/station/command/heads_quarters/qm) "xvN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -84559,7 +84607,7 @@ network = list("ss13","medbay") }, /turf/open/floor/iron/white/herringbone, -/area/station/medical/virology) +/area/station/medical/pathology) "xBE" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -84861,6 +84909,15 @@ /obj/effect/spawner/random/trash/garbage, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"xGt" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/quartermaster) "xGv" = ( /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 4 @@ -85365,7 +85422,7 @@ name = "curtain" }, /turf/open/floor/plating, -/area/station/security/prison) +/area/station/security/prison/safe) "xPs" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -85957,6 +86014,16 @@ /obj/structure/cable, /turf/open/floor/iron/textured_large, /area/station/cargo/miningoffice) +"xXG" = ( +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/machinery/door/airlock/maintenance{ + name = "Command Hallway Maintenance" + }, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/bridge) "xXU" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, @@ -86140,7 +86207,7 @@ pixel_y = 24 }, /turf/open/floor/iron/dark/textured, -/area/station/security/prison) +/area/station/security/prison/safe) "yaj" = ( /turf/closed/wall, /area/station/cargo/miningoffice) @@ -86648,15 +86715,6 @@ }, /turf/open/floor/wood, /area/station/commons/dorms) -"yhD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "yhL" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 8 @@ -86765,6 +86823,13 @@ /obj/effect/turf_decal/bot, /turf/open/floor/wood/large, /area/station/commons/fitness/recreation) +"yjY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/cyan, +/area/station/command/heads_quarters/blueshield) "ykd" = ( /obj/structure/flora/grass/jungle, /obj/structure/flora/bush/grassy, @@ -103512,8 +103577,8 @@ soY qbX qbX vnu -qbX -qbX +vnu +vnu vnu ttw ttw @@ -106911,7 +106976,7 @@ lQt oxA ipJ dwi -vPk +sDA rzh uUU jwC @@ -107162,7 +107227,7 @@ sbU xtV dUO lQt -eMd +gtJ oxA oxA oxA @@ -109690,7 +109755,7 @@ lgX gMx wKf ryt -olf +vtA rLZ wKf lnU @@ -111701,7 +111766,7 @@ ndE uvK uRb fgh -vjc +tgP efJ uRb qyR @@ -112015,7 +112080,7 @@ bow pkR iXs jmM -wXg +cBo mMw irQ pzD @@ -112450,7 +112515,7 @@ uvj uvj xmH lQf -rXL +qEh lQf nRd wjI @@ -112928,7 +112993,7 @@ veh veh sRK hrR -kLk +aSU cwH gQh veh @@ -113430,7 +113495,7 @@ ttw veh veh scI -nWl +dER fmR veh veh @@ -114764,7 +114829,7 @@ dje gDL jFt faf -tmQ +tMp tJJ wjI vWf @@ -114775,7 +114840,7 @@ mhe mhe mhe xcl -cHS +hgd xir aKT aGK @@ -116411,7 +116476,7 @@ mkr qbr brI hbb -ark +qPy brI iJi qAD @@ -116777,7 +116842,7 @@ bMb joM cmH iZr -rDO +mvl iuB cmH wxS @@ -116790,9 +116855,9 @@ aEF hER hZN rDu -imR -wEm -imR +aIL +xXG +aIL bFO bFO bFO @@ -117047,9 +117112,9 @@ aEF mav xjX sXX -imR -vwo -fUU +aIL +jjg +ijg vBP dwE gIr @@ -117304,9 +117369,9 @@ uIR srd kuc gMY -imR -wMT -wMT +aIL +for +for pAw nKV utT @@ -117551,7 +117616,7 @@ uvW uvW wEB kAm -ilT +yjY pGk cmH nVQ @@ -117561,9 +117626,9 @@ xLF tPD xjX kYC -imR -wMT -eZa +aIL +for +frk vBP mVv exy @@ -117641,7 +117706,7 @@ dfi pNq suM aWG -sjV +cay fiN pdh goS @@ -117806,8 +117871,8 @@ tuF cmH vEu ohi -imV -uNm +kPk +jor imV uaz cmH @@ -117818,9 +117883,9 @@ xLF tPD rcY qBT -imR -wMT -eoq +aIL +for +ozs vBP nyh vBI @@ -118075,9 +118140,9 @@ xLF tPD xjX jKG -imR -wMT -vPc +aIL +for +irl vBP jYI eKU @@ -118320,7 +118385,7 @@ doJ cmH gTg cmH -eUl +bvz cmH cmH cmH @@ -118332,9 +118397,9 @@ aEF xwb xjX sxs -imR -sdh -imR +aIL +aQv +aIL vBP vBP vBP @@ -118835,7 +118900,7 @@ azd oSL cmH iYy -sCm +jEm pCy cmH skL @@ -119092,7 +119157,7 @@ eip lAb cmH cmH -eFd +gqG cmH cmH agB @@ -123312,7 +123377,7 @@ eYK xud syE syE -usJ +hpU syE syE bTo @@ -123826,7 +123891,7 @@ jEb xud tHN uAc -oKJ +qMN qDp mhK hYq @@ -124302,7 +124367,7 @@ uuO sSJ mOm oBK -sgi +hdq efP jjw bPq @@ -124842,7 +124907,7 @@ eWh eWh eWh eWh -eWh +jKa aCq lRS oNR @@ -125866,12 +125931,12 @@ xud mdf gZX xVS -onP -onP -onP -onP -onP -onP +nAt +nAt +nAt +nAt +nAt +nAt nAD vwJ wKg @@ -126020,7 +126085,7 @@ ttw ttw xHb vTF -nmA +wmE ioM piC ioM @@ -126121,14 +126186,14 @@ ryo vrJ xud mdf -onP -onP -onP -rEe -wMh -aWT -jVG -onP +nAt +nAt +nAt +tqz +dTZ +qTs +gYc +nAt nYU lWY uXx @@ -126378,14 +126443,14 @@ ryo ryo xud cYz -onP -bnV -nTW -iWQ -gnh -koK -fyT -bTq +nAt +dLA +jwQ +eSq +kvN +sun +pSO +hXd uRm pNh nMh @@ -126635,14 +126700,14 @@ ryo ryo xud cYz -onP -iUM -lZh -iWQ -hRM -yhD -cpg -onP +nAt +qHw +cPV +eSq +qnt +cgC +wBo +nAt urc lWY jKT @@ -126892,14 +126957,14 @@ ryo ryo xud cYz -onP -xvJ -tFF -cdB -bJW -iss -mmJ -onP +nAt +wVY +eOK +ohQ +htk +xGt +xfD +nAt nSV rJf jsz @@ -127149,14 +127214,14 @@ ryo ryo xud dOV -onP -lwb -mBe -lwb -wZs -nXO -hcg -onP +nAt +out +mZJ +out +vjU +ftw +wle +nAt nWh vFv tqu @@ -127406,14 +127471,14 @@ xud xud xud sKs -onP -vnO -bTF -lwb -lwb -dOM -nLY -onP +nAt +unj +fLb +out +out +nNa +ivM +nAt mCf dtq qxI @@ -127574,7 +127639,7 @@ vwi taf eju dJK -kpn +iTX dZd eju taf @@ -127663,14 +127728,14 @@ pMm iGa rWS mdf -onP -tJv -izK -mgS -onP -ofb -qXo -onP +nAt +inx +vkv +gST +nAt +ltz +vrK +nAt pqh vCX hTD @@ -127920,11 +127985,11 @@ bOJ iGa rWS mdf -onP -dqy -bmj -ozn -aHi +nAt +iyd +itx +bFr +aLA tPA tMq bzZ @@ -128177,11 +128242,11 @@ bOJ oSD oSD cYz -onP -onP -onP -onP -onP +nAt +nAt +nAt +nAt +nAt bNm oQF qNj @@ -128230,7 +128295,7 @@ ish aVb yiU dJY -wTh +mEw oGI dSV nrb @@ -129008,7 +129073,7 @@ nrb eeF sak xag -chX +dom bWt sak kFh @@ -129168,7 +129233,7 @@ ePH vNJ vwe xjd -euw +dwb elo aez vVF @@ -129531,7 +129596,7 @@ jrP unI vWy ehk -tvH +jbo opW ghP dvO @@ -130029,14 +130094,14 @@ iay dBC kLl kLl -rYT +wGn mPs dNh kLl cQb iay dzC -oXG +iXX uVV xRx wIM @@ -132477,10 +132542,10 @@ bpy agC dQX iYH -iyU +sjV dQX iYH -iyU +sjV dGL iYH pQm @@ -132734,10 +132799,10 @@ xNf agC aIV tqC -iyU +sjV yaf tqC -iyU +sjV stk tqC pQm @@ -132991,10 +133056,10 @@ vzN agC imS fJz -iyU +sjV xPg ojc -iyU +sjV lML lZl iyU @@ -134033,7 +134098,7 @@ aNs aLb sCZ tyF -sid +aOV vBB oeM fnM @@ -134290,7 +134355,7 @@ kHq exx oKn iXB -aOV +aLy mBM cSZ sKy @@ -135043,7 +135108,7 @@ dKK xbD fkx wpp -uZu +bdS jDe qhJ dFp @@ -135561,10 +135626,10 @@ jPN arU efi qpM -iyU +sjV dYB rUC -iyU +sjV qVR aBT iyU @@ -135818,10 +135883,10 @@ ttw tHI sQc whu -iyU +sjV miz whu -iyU +sjV vcy whu iyU @@ -136075,10 +136140,10 @@ ttw tHI qbc oSw -iyU +sjV qbc oSw -iyU +sjV qbc oSw iyU diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index b84faf05a59c..0126a707f6de 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -1734,16 +1734,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/science) +"hg" = ( +/obj/structure/tank_dispenser{ + pixel_x = -1 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "hr" = ( /obj/machinery/electroplater, /turf/open/floor/iron, /area/station/commons/storage/primary) -"hA" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/construction) "hD" = ( /obj/structure/closet/secure_closet/chemical/heisenberg{ locked = 0 @@ -1751,8 +1751,9 @@ /turf/open/floor/iron, /area/station/medical/chemistry) "hJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ - dir = 1 +/obj/machinery/conveyor{ + dir = 4; + id = "debug" }, /turf/open/floor/plating, /area/station/construction) @@ -1783,9 +1784,7 @@ /turf/open/floor/plating, /area/station/engineering/atmos) "jF" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 6 - }, +/obj/machinery/bouldertech/crusher, /turf/open/floor/plating, /area/station/construction) "jU" = ( @@ -1928,9 +1927,6 @@ dir = 4 }, /obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 5 - }, /turf/open/floor/iron, /area/station/construction) "oV" = ( @@ -1944,8 +1940,7 @@ /turf/closed/wall/r_wall, /area/station/bitrunning/den) "pt" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/obj/machinery/meter/monitored/distro_loop, +/obj/item/construction/plumbing, /turf/open/floor/plating, /area/station/construction) "pv" = ( @@ -1962,7 +1957,7 @@ }, /obj/machinery/camera/autoname/directional/west, /obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/structure/test_boulder_spawner, /turf/open/floor/iron, /area/station/construction) "pI" = ( @@ -1976,6 +1971,9 @@ /obj/machinery/door/airlock, /turf/open/floor/plating, /area/station/engineering/atmos) +"qn" = ( +/turf/open/space/basic, +/area/shipbreak) "qF" = ( /obj/machinery/airalarm/directional/north, /obj/effect/mapping_helpers/airalarm/unlocked, @@ -1995,7 +1993,9 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "rr" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/machinery/conveyor_switch/oneway{ + id = "debug" + }, /turf/open/floor/plating, /area/station/construction) "rK" = ( @@ -2010,7 +2010,7 @@ /turf/open/floor/iron, /area/station/hallway/primary/central) "rU" = ( -/obj/machinery/atmospherics/components/binary/circulator, +/obj/item/stack/ducts/fifty, /turf/open/floor/plating, /area/station/construction) "rZ" = ( @@ -2065,7 +2065,10 @@ /turf/open/floor/iron/dark, /area/station/science/explab) "tY" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, +/obj/machinery/conveyor{ + dir = 6; + id = "debug" + }, /turf/open/floor/plating, /area/station/construction) "uf" = ( @@ -2082,10 +2085,6 @@ }, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"uo" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater/on, -/turf/open/floor/plating, -/area/station/construction) "ut" = ( /obj/structure/closet/secure_closet/atmospherics{ locked = 0 @@ -2115,8 +2114,10 @@ /turf/open/floor/iron/dark, /area/station/science/explab) "vh" = ( -/obj/machinery/power/thermoelectric_generator, -/obj/structure/cable, +/obj/machinery/conveyor{ + dir = 1; + id = "debug" + }, /turf/open/floor/plating, /area/station/construction) "vm" = ( @@ -2169,16 +2170,14 @@ /turf/open/floor/iron, /area/station/bitrunning/den) "yx" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 4 +/obj/machinery/conveyor{ + dir = 8; + id = "debug" }, /turf/open/floor/plating, /area/station/construction) "yy" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/plasma, +/obj/machinery/big_manipulator, /turf/open/floor/plating, /area/station/construction) "yA" = ( @@ -2193,15 +2192,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"yJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/construction) "yK" = ( /obj/structure/fans/tiny/invisible, /obj/effect/turf_decal/stripes/line{ @@ -2215,7 +2205,10 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "yT" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, +/obj/machinery/conveyor{ + dir = 2; + id = "debug" + }, /turf/open/floor/plating, /area/station/construction) "zo" = ( @@ -2224,11 +2217,9 @@ /turf/open/floor/iron, /area/station/engineering/atmos) "Aa" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/construction) +/obj/machinery/big_manipulator, +/turf/open/floor/iron, +/area/station/commons/storage/primary) "AP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 8 @@ -2236,11 +2227,8 @@ /turf/open/floor/iron, /area/station/science) "AR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/open/floor/iron, +/obj/machinery/bouldertech/refinery/smelter, +/turf/open/floor/plating, /area/station/construction) "AY" = ( /obj/effect/landmark/start/assistant, @@ -2275,6 +2263,12 @@ /obj/item/gun/ballistic/automatic/pistol, /turf/open/floor/iron, /area/station/command/bridge) +"BK" = ( +/obj/machinery/computer/shipbreaker{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "BW" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/camera/directional/north, @@ -2282,7 +2276,10 @@ /turf/open/floor/iron, /area/station/construction) "Cc" = ( -/obj/item/wrench, +/obj/machinery/conveyor{ + dir = 9; + id = "debug" + }, /turf/open/floor/plating, /area/station/construction) "Ce" = ( @@ -2320,8 +2317,7 @@ /turf/open/floor/iron, /area/station/bitrunning/den) "DL" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/obj/machinery/meter/monitored/distro_loop, +/obj/machinery/bouldertech/crystalizer, /turf/open/floor/plating, /area/station/construction) "DW" = ( @@ -2362,7 +2358,10 @@ /turf/open/floor/iron, /area/station/command/bridge) "EN" = ( -/obj/structure/cable, +/obj/machinery/conveyor{ + dir = 5; + id = "debug" + }, /turf/open/floor/plating, /area/station/construction) "ES" = ( @@ -2379,12 +2378,6 @@ }, /turf/open/floor/iron, /area/station/medical/chemistry) -"Fi" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/construction) "GB" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -2410,7 +2403,7 @@ /turf/open/floor/plating, /area/station/commons/storage/primary) "Hr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible, +/obj/machinery/bouldertech/chemical_injector, /turf/open/floor/plating, /area/station/construction) "Id" = ( @@ -2443,9 +2436,7 @@ /turf/open/floor/iron, /area/station/cargo/miningoffice) "Jn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 1 - }, +/obj/machinery/bouldertech/purification_chamber, /turf/open/floor/plating, /area/station/construction) "Jp" = ( @@ -2467,17 +2458,16 @@ /turf/open/floor/plating, /area/station/engineering/atmos) "Li" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 9 - }, +/obj/machinery/bouldertech/enricher, /turf/open/floor/plating, /area/station/construction) "Lq" = ( /turf/open/floor/circuit/green, /area/station/bitrunning/den) "Lx" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 9 +/obj/machinery/conveyor{ + dir = 10; + id = "debug" }, /turf/open/floor/plating, /area/station/construction) @@ -2493,14 +2483,6 @@ /obj/machinery/door/airlock/research, /turf/open/floor/iron/dark, /area/station/science/explab) -"LL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light_switch/directional/west, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/open/floor/iron, -/area/station/construction) "LW" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, @@ -2509,6 +2491,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) +"Mu" = ( +/obj/machinery/door/airlock/external/ruin{ + name = "Departure Lounge Airlock" + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "ME" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -2542,14 +2530,13 @@ /turf/open/floor/iron, /area/station/science) "Ob" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 10 - }, +/obj/machinery/bouldertech/chemical_washer, /turf/open/floor/plating, /area/station/construction) "Oc" = ( -/obj/machinery/atmospherics/components/binary/volume_pump{ - dir = 4 +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "debug" }, /turf/open/floor/plating, /area/station/construction) @@ -2605,7 +2592,7 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "Rx" = ( -/obj/machinery/atmospherics/components/binary/circulator/cold, +/obj/item/wrench/abductor, /turf/open/floor/plating, /area/station/construction) "RM" = ( @@ -2619,7 +2606,7 @@ /turf/open/floor/iron, /area/station/bitrunning/den) "Sd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, +/obj/machinery/bouldertech/dissolution_chamber, /turf/open/floor/plating, /area/station/construction) "Sj" = ( @@ -2733,6 +2720,10 @@ }, /turf/open/floor/iron, /area/station/medical/chemistry) +"Xi" = ( +/obj/machinery/suit_storage_unit/ce, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "Xp" = ( /obj/machinery/light/directional/south, /obj/structure/tank_dispenser{ @@ -2745,10 +2736,7 @@ /turf/open/floor/iron, /area/station/science) "XE" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Port to Filter" - }, +/obj/machinery/light/floor/has_bulb, /turf/open/floor/plating, /area/station/construction) "XN" = ( @@ -6160,11 +6148,11 @@ bE cN UK dm -yJ -LL +dy +ii pD -AR -AR +dy +dy oK ii dy @@ -6251,16 +6239,16 @@ ES rL cP cX -uo -Sd dn +Sd +yy dn dn dn Oc -dn -dn -dn +yT +yT +yT dL sr nn @@ -6343,16 +6331,16 @@ bE Mh TV EA -uo -Sd dn +Sd +yy dn dn dn -Jn +yx XE yy -dn +yy dL cN lQ @@ -6435,16 +6423,16 @@ bE bE ef EA -uo -Sd dn dn dn dn -Aa -dn dn +Rx +yx dn +Jn +Jn dL tE ZP @@ -6529,11 +6517,11 @@ cN BW dn Ob -pt +dn rU pt rr -Li +yx dn dn dn @@ -6620,15 +6608,15 @@ bE cN EA EN -EN -EN vh -dn +vh +vh +vh Cc -dn -dn -dn -dn +yx +XE +yy +yy dL cN fI @@ -6711,16 +6699,16 @@ lX bE cN cY -dn -jF +hJ DL -Rx DL -yT -hA -dn -dn +DL +DL +yx +yx dn +jF +jF dZ cN Tt @@ -6804,11 +6792,11 @@ bE cN cY tY -Hr -dn -dn -dn -dn +yT +yT +yT +yT +Lx yx dn dn @@ -6895,16 +6883,16 @@ bE bE cN cY -tY -Hr dn -dn -dn -dn -hJ +yy +yy +yy +yy +yy +yx XE yy -dn +yy dL cN Tt @@ -6987,16 +6975,16 @@ bE bE ef cY -tY -Hr -dn -dn -dn -dn -Oc -dn dn +Hr +Hr +Hr +Hr +Hr +yx dn +Li +Li dL cN Tt @@ -7080,15 +7068,15 @@ bE ef cY dn -Fi +yT yT yT yT yT Lx dn -dn -dn +AR +AR dL cN Tt @@ -7638,7 +7626,7 @@ dJ dI dJ dJ -dJ +Aa dJ dJ ny @@ -7729,9 +7717,9 @@ hr oE dI dJ +Aa dJ -dJ -dJ +Aa dJ dO cS @@ -7822,7 +7810,7 @@ dJ dI dJ dJ -dJ +Aa dJ dJ jU @@ -8932,7 +8920,9 @@ fh fh et ga -ga +fO +fO +fO ga ga ga @@ -8977,8 +8967,6 @@ aa aa aa aa -aa -aa "} (68,1,1) = {" aa @@ -9023,13 +9011,13 @@ ew aa aa aa -aa -aa -aa -aa -aa -aa -aa +ga +fO +fO +fO +Mu +fO +ga aa aa aa @@ -9115,13 +9103,13 @@ fh aa aa aa -aa -aa -aa -aa -aa -aa -aa +ga +hg +fO +fO +ga +fO +ga aa aa aa @@ -9207,13 +9195,13 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa +ga +Xi +BK +fO +ga +fO +ga aa aa aa @@ -9299,13 +9287,13 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa +ga +ga +gf +gf +ga +Mu +ga aa aa aa @@ -9574,25 +9562,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -9666,25 +9654,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -9758,25 +9746,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -9850,25 +9838,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -9942,25 +9930,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -10034,25 +10022,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -10126,25 +10114,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -10218,25 +10206,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -10310,25 +10298,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -10402,25 +10390,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa @@ -10494,25 +10482,25 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn +qn aa aa aa diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index ea198ff6287e..21f969587678 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -72,7 +72,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/admin/general, /turf/open/floor/iron, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/supply) "aal" = ( /obj/effect/turf_decal/bot, /obj/effect/spawner/random/entertainment/money_large, @@ -345,11 +345,9 @@ /turf/open/floor/iron/dark, /area/centcom/central_command_areas/briefing) "aaW" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/obj/machinery/light/directional/west, +/turf/open/floor/carpet/donk, +/area/centcom/central_command_areas/adminroom) "aaX" = ( /obj/effect/turf_decal/trimline/green/line, /obj/structure/reagent_dispensers/watertank/high, @@ -470,7 +468,7 @@ pixel_x = -32 }, /turf/open/floor/carpet/red, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "abl" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -495,7 +493,7 @@ dir = 1 }, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "abo" = ( /obj/effect/turf_decal/siding/green{ dir = 8 @@ -734,7 +732,7 @@ /turf/open/floor/iron/white/corner{ dir = 1 }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "abT" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -766,7 +764,7 @@ }, /obj/item/pen/edagger, /turf/open/floor/carpet/neon/simple/black, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "abX" = ( /obj/effect/turf_decal/tile/dark/opposingcorners, /obj/machinery/light/floor/has_bulb, @@ -811,9 +809,11 @@ /turf/open/floor/wood/large, /area/centcom/central_command_areas/botany) "acd" = ( -/obj/machinery/rnd/production/protolathe/department/science, -/turf/open/floor/circuit/green, -/area/centcom/central_command_areas/admin) +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) "ace" = ( /obj/structure/railing/wood{ dir = 1 @@ -932,7 +932,11 @@ /turf/open/floor/iron/dark, /area/centcom/central_command_areas/medical) "acv" = ( -/turf/open/floor/iron/white/textured_large, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/warning, +/turf/open/floor/iron/dark/smooth_large, /area/centcom/central_command_areas/retirement_yard) "acw" = ( /obj/effect/turf_decal/siding/wood, @@ -988,7 +992,7 @@ pixel_x = -32 }, /turf/closed/indestructible/riveted, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "acD" = ( /obj/structure/chair/pew{ dir = 8 @@ -1016,14 +1020,14 @@ /obj/structure/table/wood/fancy/purple, /obj/machinery/computer/records/medical/laptop, /turf/open/floor/plating/abductor, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "acI" = ( /obj/machinery/door/airlock/centcom{ - name = "Abraxis' Office" + name = "NT Helpdesk" }, /obj/effect/mapping_helpers/airlock/access/any/admin/captain, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "acJ" = ( /obj/docking_port/stationary{ dir = 4; @@ -1054,7 +1058,7 @@ dir = 4 }, /turf/open/floor/carpet, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "acN" = ( /obj/machinery/light/floor/has_bulb, /obj/effect/landmark/prisonwarp, @@ -1315,12 +1319,7 @@ name = "Bio Creature Tank" }, /turf/open/floor/mineral/titanium/tiled/white, -/area/centcom/central_command_areas/admin) -"adt" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/obj/structure/closet/mini_fridge, -/turf/open/floor/iron/dark/small, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "adu" = ( /obj/effect/turf_decal/siding/white{ dir = 1 @@ -1384,11 +1383,9 @@ /turf/open/floor/plating, /area/centcom/syndicate_mothership/expansion_bombthreat) "adC" = ( -/obj/machinery/modular_computer/preset/id/centcom{ - dir = 8 - }, -/turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/obj/structure/fireaxecabinet/directional/north, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) "adD" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -1507,7 +1504,7 @@ "adP" = ( /obj/machinery/dna_scannernew, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "adQ" = ( /obj/machinery/light/floor/has_bulb, /turf/open/floor/wood/large, @@ -1546,7 +1543,7 @@ pixel_x = 32 }, /turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "adW" = ( /obj/item/radio{ pixel_x = 5; @@ -1640,7 +1637,7 @@ /obj/machinery/growing, /obj/item/seeds/pumpkin, /turf/open/floor/carpet/red, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aei" = ( /obj/machinery/griddle, /obj/structure/sign/poster/contraband/syndiemoth/directional/north, @@ -1668,7 +1665,7 @@ "ael" = ( /obj/structure/chair/comfy/teal, /turf/open/floor/glass/reinforced/plasma, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aem" = ( /obj/machinery/chem_mass_spec, /turf/open/floor/mineral/titanium/tiled/yellow, @@ -1687,7 +1684,7 @@ /obj/structure/table/reinforced/titaniumglass, /obj/machinery/computer/security/wooden_tv, /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aep" = ( /obj/machinery/power/shuttle_engine/heater, /obj/effect/decal/cleanable/dirt, @@ -1898,7 +1895,7 @@ "aeW" = ( /obj/structure/closet/secure_closet, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aeX" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -1980,19 +1977,9 @@ /turf/open/misc/asteroid/snow/icemoon, /area/centcom/syndicate_mothership/control) "afl" = ( -/obj/machinery/door/airlock/centcom{ - dir = 4; - name = "Softie's Office" - }, -/obj/effect/mapping_helpers/airlock/access/any/admin/captain, -/turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) -"afm" = ( -/obj/machinery/door/airlock/centcom{ - name = "Raziel's Theatre" - }, -/obj/effect/mapping_helpers/airlock/access/any/admin/captain, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/siding/white, +/obj/structure/flora/bush/large/style_3, +/turf/open/floor/grass, /area/centcom/central_command_areas/admin) "afn" = ( /obj/effect/turf_decal/siding/dark{ @@ -2087,7 +2074,7 @@ /area/centcom/central_command_areas/evacuation/ship) "afA" = ( /turf/open/floor/iron/white/side, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "afB" = ( /turf/open/floor/wood/large, /area/centcom/central_command_areas/admin_hangout) @@ -2213,7 +2200,7 @@ "afU" = ( /obj/machinery/modular_computer/preset/id/centcom, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "afV" = ( /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/evacuation/ship) @@ -2280,7 +2267,7 @@ /obj/machinery/light/small/maintenance/directional/east, /obj/structure/window/reinforced/tinted/spawner/directional/south, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "agh" = ( /obj/structure/sign/poster/contraband/revolver/directional/south, /turf/open/floor/mineral/titanium, @@ -2337,11 +2324,11 @@ /area/centcom/syndicate_mothership/control) "agn" = ( /turf/closed/indestructible/sandstone, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ago" = ( /obj/structure/closet, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "agp" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -2617,9 +2604,6 @@ }, /turf/open/floor/iron, /area/centcom/central_command_areas/armory) -"agY" = ( -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation) "agZ" = ( /obj/structure/hedge, /obj/structure/railing/wood, @@ -2711,7 +2695,7 @@ /turf/open/floor/iron/white/side{ dir = 1 }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ahm" = ( /obj/effect/turf_decal/siding/blue, /obj/effect/turf_decal/siding/blue/corner{ @@ -2764,7 +2748,7 @@ /turf/closed/indestructible/fakeglass{ color = "#ffe599" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aht" = ( /obj/structure/table/reinforced, /obj/machinery/camera/autoname/directional/east{ @@ -2790,7 +2774,7 @@ pixel_y = 5 }, /turf/open/floor/carpet/neon/simple/black, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ahv" = ( /obj/structure/table/wood/fancy/royalblue, /obj/machinery/door/window/brigdoor/security, @@ -2803,7 +2787,7 @@ pixel_y = 7 }, /turf/open/floor/glass/reinforced/plasma, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ahw" = ( /obj/structure/chair/office{ dir = 4 @@ -2873,7 +2857,7 @@ "ahF" = ( /obj/structure/sign/poster/official/bless_this_spess/directional/west, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ahG" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 @@ -2913,7 +2897,7 @@ pixel_x = -1 }, /turf/open/floor/glass/reinforced/plasma, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ahM" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -2958,7 +2942,7 @@ /obj/item/pizzabox/infinite, /obj/machinery/light/floor/has_bulb, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ahS" = ( /obj/structure/window/reinforced/survival_pod/spawner/directional/east, /obj/machinery/growing/tray, @@ -2986,7 +2970,7 @@ layer = 2.8 }, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ahV" = ( /obj/effect/landmark/navigate_destination/centcom/boxing, /turf/open/floor/carpet, @@ -3048,10 +3032,12 @@ /turf/open/floor/wood/parquet, /area/centcom/central_command_areas/borbop) "aid" = ( -/obj/structure/table/wood, -/obj/item/book/granter/sign_language, -/turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/obj/effect/mapping_helpers/airlock/access/any/admin/captain, +/obj/machinery/door/airlock/vault{ + name = "Pooba's Lair" + }, +/turf/open/floor/carpet/orange, +/area/centcom/central_command_areas/adminroom) "aie" = ( /obj/effect/turf_decal/tile/dark/diagonal_edge, /obj/structure/table/wood/fancy/royalblue, @@ -3087,7 +3073,7 @@ dir = 8 }, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aih" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/iron/smooth_half, @@ -3139,20 +3125,13 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/hall) -"aip" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/wood/large, -/area/centcom/central_command_areas/evacuation) "aiq" = ( /obj/machinery/computer/records/security/laptop{ dir = 4 }, /obj/structure/table/reinforced/plastitaniumglass, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "air" = ( /obj/machinery/shower/directional/south, /obj/machinery/light/floor/has_bulb, @@ -3247,7 +3226,7 @@ dir = 1 }, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aiE" = ( /obj/structure/table/wood, /obj/item/pizzabox, @@ -3337,7 +3316,7 @@ /obj/machinery/door/window, /obj/effect/mapping_helpers/airlock/access/any/admin/captain, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aiU" = ( /obj/structure/table/wood/fancy/royalblue, /obj/item/mod/module/megaphone{ @@ -3352,7 +3331,7 @@ /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/mapping_helpers/airlock/access/any/admin/captain, /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aiV" = ( /turf/open/floor/mineral/titanium/tiled/yellow, /area/centcom/syndicate_mothership) @@ -3421,7 +3400,7 @@ pixel_x = -6 }, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aje" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -3630,7 +3609,7 @@ pixel_y = 8 }, /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ajE" = ( /obj/effect/turf_decal/siding/blue{ dir = 4 @@ -3707,8 +3686,22 @@ /turf/open/floor/iron, /area/centcom/central_command_areas/supply) "ajM" = ( -/mob/living/basic/bot/cleanbot/medbay, /obj/machinery/light/floor/has_bulb, +/obj/structure/table/reinforced, +/obj/item/storage/backpack/duffelbag/med/surgery{ + pixel_x = 6; + pixel_y = 10 + }, +/obj/item/storage/backpack/duffelbag/med/surgery{ + pixel_x = 6 + }, +/obj/item/storage/backpack/duffelbag/med/surgery{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/storage/backpack/duffelbag/med/surgery{ + pixel_x = -6 + }, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/medical) "ajN" = ( @@ -3724,7 +3717,7 @@ "ajP" = ( /obj/structure/hedge, /turf/open/floor/carpet, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ajQ" = ( /obj/effect/turf_decal/siding/green{ dir = 5 @@ -3780,7 +3773,7 @@ /turf/open/floor/sepia{ color = "#cc9439" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ajV" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 @@ -3863,7 +3856,7 @@ /obj/machinery/computer/records/security/laptop, /obj/item/spellbook_charge/debug, /turf/open/floor/plating/abductor, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "akj" = ( /obj/item/flashlight/lamp{ pixel_y = -3; @@ -3883,7 +3876,7 @@ dir = 4 }, /turf/open/floor/carpet, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "akm" = ( /turf/closed/wall/mineral/wood, /area/centcom/syndicate_mothership/control) @@ -3960,7 +3953,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/admin/captain, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "akw" = ( /obj/effect/turf_decal/siding/green{ dir = 10 @@ -3975,7 +3968,7 @@ "aky" = ( /obj/structure/chair/office, /turf/open/floor/iron/white/side, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "akz" = ( /obj/machinery/door/airlock/maintenance/external{ name = "Bunk Room 1" @@ -4223,7 +4216,7 @@ pixel_x = -32 }, /turf/open/floor/iron/dark/herringbone, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ald" = ( /obj/structure/fireplace{ fuel_added = 3000 @@ -4236,7 +4229,7 @@ layer = 2.8 }, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ale" = ( /obj/effect/turf_decal/box, /obj/structure/punching_bag, @@ -4309,7 +4302,7 @@ name = "treat storage" }, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "alo" = ( /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, @@ -4377,14 +4370,6 @@ }, /turf/open/floor/mineral/titanium/tiled/blue, /area/centcom/syndicate_mothership/control) -"aly" = ( -/obj/machinery/status_display/evac/directional/west, -/obj/machinery/light/directional/west, -/obj/structure/railing/wood{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation) "alz" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/mineral/plastitanium, @@ -4479,7 +4464,7 @@ dir = 8 }, /turf/open/floor/mineral/titanium/tiled/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "alM" = ( /obj/structure/toilet{ dir = 1 @@ -4517,7 +4502,7 @@ pixel_x = 32 }, /turf/open/floor/iron/dark/herringbone, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "alP" = ( /obj/machinery/light/cold/directional/south, /turf/open/floor/mineral/titanium, @@ -4583,7 +4568,7 @@ /obj/machinery/computer/security/wooden_tv, /obj/machinery/light/small/directional/east, /turf/open/floor/carpet, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "amb" = ( /obj/machinery/light/floor/has_bulb, /obj/effect/turf_decal/siding/wood, @@ -4631,7 +4616,7 @@ /obj/item/bedsheet/centcom, /obj/item/toy/plush/lizard_plushie/green, /turf/open/floor/iron/dark/small, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ami" = ( /obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 1 @@ -4761,7 +4746,7 @@ pixel_y = 4 }, /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "amw" = ( /turf/closed/indestructible/fakeglass, /area/centcom/central_command_areas/firing_range_checkpoint_control) @@ -4875,7 +4860,7 @@ "amJ" = ( /obj/structure/curtain/bounty, /turf/closed/indestructible/fakeglass, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "amK" = ( /obj/machinery/light/cold/directional/east, /obj/item/kirbyplants/random, @@ -5106,7 +5091,7 @@ "anq" = ( /obj/structure/stone_tile/slab, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "anr" = ( /obj/machinery/light/directional/east{ dir = 8 @@ -5121,7 +5106,7 @@ }, /obj/item/reagent_containers/cup/beaker/meta/omnizine, /turf/open/floor/mineral/titanium/tiled/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ans" = ( /obj/effect/turf_decal/tile/dark/opposingcorners, /obj/structure/railing/wood, @@ -5163,7 +5148,7 @@ /turf/open/floor/iron/white/side{ dir = 1 }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "any" = ( /obj/machinery/computer/operating{ dir = 8 @@ -5176,29 +5161,11 @@ }, /turf/open/floor/mineral/titanium/tiled/yellow, /area/centcom/syndicate_mothership/expansion_bombthreat) -"anA" = ( -/obj/effect/mapping_helpers/airlock/access/any/admin/captain, -/obj/machinery/door/airlock/sandstone{ - dir = 4; - name = "Amun's Office" - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) "anB" = ( /obj/structure/filingcabinet/filingcabinet, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/ferry) -"anC" = ( -/obj/effect/turf_decal/tile/dark/opposingcorners, -/obj/structure/railing/wood{ - dir = 4 - }, -/obj/structure/railing/wood{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/hall) "anD" = ( /obj/structure/flora/grass/both/style_random, /turf/open/misc/asteroid/snow/airless, @@ -5288,7 +5255,7 @@ /turf/open/floor/sepia{ color = "#cc9439" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "anR" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -5326,7 +5293,7 @@ /turf/open/floor/sepia{ color = "#cc9439" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "anX" = ( /obj/structure/hedge, /obj/effect/turf_decal/siding/dark{ @@ -5436,7 +5403,7 @@ "aoj" = ( /obj/structure/flora/grass/green/style_random, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aok" = ( /obj/structure/fight_button, /obj/machinery/light/floor/has_bulb, @@ -5453,7 +5420,7 @@ /obj/effect/grand_rune/finale, /obj/structure/chair/old, /turf/open/floor/plating/abductor, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aon" = ( /obj/effect/turf_decal/siding/green{ dir = 4 @@ -5461,10 +5428,6 @@ /obj/structure/table/glass, /turf/open/floor/iron/dark/small, /area/centcom/central_command_areas/botany) -"aoo" = ( -/obj/structure/fake_stairs/wood/directional/north, -/turf/open/floor/wood/large, -/area/centcom/central_command_areas/hall) "aop" = ( /obj/structure/window/reinforced/spawner/directional/north{ color = "#008000"; @@ -5564,12 +5527,12 @@ /area/centcom/central_command_areas/retirement_home) "aoB" = ( /turf/closed/wall/vault/sandstone, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aoC" = ( /obj/machinery/door/airlock/medical/glass, /obj/effect/mapping_helpers/airlock/access/any/admin/captain, /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aoD" = ( /turf/closed/indestructible/opsglass, /area/centcom/syndicate_mothership/control) @@ -5717,19 +5680,6 @@ }, /turf/open/floor/iron/terracotta/small, /area/centcom/central_command_areas/retirement_home) -"aoU" = ( -/obj/structure/closet/emcloset, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/effect/turf_decal/delivery, -/obj/machinery/light/directional/south, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/iron, -/area/centcom/central_command_areas/ferry) "aoV" = ( /obj/structure/sign/poster/contraband/free_drone/directional/north, /turf/open/floor/iron/dark/textured_half{ @@ -5794,11 +5744,8 @@ /turf/open/floor/iron/dark, /area/centcom/central_command_areas/supply) "ape" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/donut_box, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/turf/open/space/basic, +/area) "apf" = ( /obj/structure/chair/sofa/left/brown{ dir = 4 @@ -5846,7 +5793,7 @@ dir = 1 }, /turf/open/floor/carpet, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "apl" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -5860,7 +5807,7 @@ }, /obj/machinery/light/directional/east, /turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "apm" = ( /obj/structure/flora/rock/pile/style_random, /obj/structure/flora/grass/both/style_random, @@ -5935,7 +5882,7 @@ dir = 1 }, /turf/open/floor/plating/abductor, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "apw" = ( /obj/effect/turf_decal/trimline/blue, /obj/machinery/light/floor/has_bulb, @@ -6040,11 +5987,11 @@ dir = 1 }, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "apM" = ( /obj/structure/chair/plastic, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "apN" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -6110,11 +6057,7 @@ pixel_x = -32 }, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) -"apQ" = ( -/obj/effect/turf_decal/bot, -/turf/closed/indestructible/riveted, -/area/centcom/central_command_areas/supply) +/area/centcom/central_command_areas/adminroom) "apR" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, @@ -6203,7 +6146,7 @@ name = "Abraxis' Fax Machine" }, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aqf" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 @@ -6261,7 +6204,7 @@ /obj/machinery/computer/records/security/laptop, /obj/machinery/light/floor/has_bulb, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aqn" = ( /obj/structure/filingcabinet/filingcabinet, /obj/machinery/airalarm/directional/south, @@ -6292,11 +6235,6 @@ /obj/machinery/door/airlock/maintenance_hatch, /turf/open/floor/catwalk_floor, /area/centcom/central_command_areas/evacuation/ship) -"aqq" = ( -/obj/machinery/light/floor/has_bulb, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood/large, -/area/centcom/central_command_areas/hall) "aqr" = ( /obj/machinery/light/small/directional/south, /obj/structure/cable, @@ -6478,7 +6416,7 @@ /obj/item/scrying, /obj/item/mod/control/pre_equipped/enchanted, /turf/open/floor/plating/abductor, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aqO" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -6621,7 +6559,7 @@ "arh" = ( /obj/structure/light_prism, /turf/open/floor/plating/abductor, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ari" = ( /obj/structure/railing/wood{ dir = 8 @@ -6657,10 +6595,6 @@ }, /turf/open/floor/iron, /area/centcom/central_command_areas/ferry) -"aro" = ( -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/turf/open/floor/iron/dark/small, -/area/centcom/central_command_areas/admin) "arp" = ( /obj/effect/turf_decal/stripes/box, /obj/machinery/shower/directional/south, @@ -6934,11 +6868,6 @@ }, /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/hall) -"asc" = ( -/obj/effect/turf_decal/tile/dark/opposingcorners, -/obj/structure/chair/sofa/corp/right, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/hall) "asd" = ( /obj/machinery/door/airlock/centcom{ name = "Orbital Drop Pod Loading" @@ -6947,9 +6876,10 @@ /turf/open/floor/iron, /area/centcom/central_command_areas/ferry) "ase" = ( -/obj/structure/table/reinforced, -/obj/item/storage/belt/utility/full/engi, -/turf/open/floor/circuit/green, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/open/floor/grass, /area/centcom/central_command_areas/admin) "asf" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ @@ -6970,7 +6900,7 @@ "ash" = ( /obj/item/kirbyplants/random, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "asi" = ( /obj/machinery/growing/tray, /obj/machinery/light/cold/directional/west, @@ -7009,13 +6939,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/evacuation/ship) -"asn" = ( -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Raziel's Desk" - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) "aso" = ( /obj/effect/turf_decal/siding/green{ dir = 9 @@ -7174,7 +7097,7 @@ /area/centcom/central_command_areas/borbop) "asI" = ( /turf/open/floor/carpet, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "asJ" = ( /obj/effect/turf_decal/tile/dark/opposingcorners, /turf/closed/indestructible/riveted, @@ -7252,14 +7175,14 @@ dir = 4 }, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "asU" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, /obj/effect/turf_decal/siding/wood/corner, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "asV" = ( /obj/machinery/door/poddoor/shuttledock, /obj/effect/turf_decal/delivery, @@ -7360,7 +7283,7 @@ /area/centcom/syndicate_mothership/expansion_bombthreat) "atj" = ( /turf/closed/indestructible/rock/snow, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "atk" = ( /obj/effect/turf_decal/trimline/blue, /obj/machinery/light/floor/has_bulb, @@ -7663,21 +7586,6 @@ /obj/structure/table, /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/arcade) -"atS" = ( -/obj/machinery/light/small/maintenance/directional/west, -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/effect/spawner/random/trash/garbage{ - pixel_x = 5; - pixel_y = -3 - }, -/obj/effect/spawner/random/trash/garbage{ - pixel_x = -4 - }, -/obj/effect/spawner/random/trash/garbage{ - pixel_y = 9 - }, -/turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) "atT" = ( /obj/structure/chair/comfy/brown, /turf/open/floor/wood, @@ -7697,7 +7605,7 @@ dir = 1 }, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "atX" = ( /obj/structure/chair/comfy{ dir = 8 @@ -7732,7 +7640,7 @@ "aua" = ( /obj/structure/curtain/cloth/fancy, /turf/closed/indestructible/fakeglass, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aub" = ( /obj/machinery/vending/wardrobe/det_wardrobe, /obj/machinery/light/directional/north, @@ -7752,7 +7660,7 @@ "aue" = ( /obj/structure/chair/sofa/corp/right, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "auf" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 @@ -7766,7 +7674,11 @@ /turf/open/floor/wood, /area/centcom/central_command_areas/retirement_home) "auh" = ( -/turf/open/floor/carpet/purple, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/flora/bush/fullgrass/style_2, +/turf/open/floor/grass, /area/centcom/central_command_areas/admin) "aui" = ( /obj/effect/turf_decal/siding/dark, @@ -7822,7 +7734,7 @@ dir = 8 }, /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "auq" = ( /obj/effect/turf_decal/tile/dark/opposingcorners, /obj/structure/chair/stool/bar/directional/south, @@ -7858,7 +7770,7 @@ /obj/structure/table/wood, /obj/machinery/computer/records/medical/laptop, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "auv" = ( /obj/machinery/door/airlock/centcom{ dir = 4; @@ -7928,7 +7840,7 @@ pixel_y = 5 }, /turf/open/floor/carpet/neon/simple/black, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "auC" = ( /obj/structure/railing/wood, /turf/open/floor/glass/reinforced, @@ -7958,10 +7870,6 @@ "auG" = ( /turf/closed/indestructible/opsglass, /area/centcom/syndicate_mothership/expansion_bioterrorism) -"auH" = ( -/obj/effect/turf_decal/stripes/line, -/turf/closed/indestructible/riveted, -/area/centcom/central_command_areas/supply) "auI" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -8442,7 +8350,7 @@ dir = 4 }, /turf/open/floor/carpet/red, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "awa" = ( /obj/effect/turf_decal/siding/dark{ dir = 6 @@ -8453,11 +8361,14 @@ /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/hall) "awb" = ( -/obj/structure/chair/sofa/right{ +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ dir = 4 }, -/turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/turf/open/floor/iron/dark/smooth_large, +/area/centcom/central_command_areas/retirement_yard) "awc" = ( /turf/closed/indestructible/riveted, /area/centcom/central_command_areas/borbop) @@ -8551,19 +8462,12 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/centcom/syndicate_mothership/control) -"awo" = ( -/obj/structure/table/reinforced/plastitaniumglass{ - name = "Andrea's Desk" - }, -/obj/machinery/coffeemaker/impressa, -/turf/open/floor/carpet/royalblue, -/area/centcom/central_command_areas/admin) "awp" = ( /obj/structure/chair/sofa/left/brown{ dir = 4 }, /turf/open/floor/carpet, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "awq" = ( /obj/structure/hedge, /turf/open/floor/iron/dark, @@ -8661,16 +8565,6 @@ /obj/machinery/light/floor/has_bulb, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/kitchen) -"awD" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 6 - }, -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Raziel's Desk" - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) "awE" = ( /obj/structure/chair/sofa/corp/left, /turf/open/floor/carpet, @@ -8685,7 +8579,7 @@ /turf/open/floor/sepia{ color = "#cc9439" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "awG" = ( /obj/effect/turf_decal/siding/blue/corner{ dir = 1 @@ -8801,7 +8695,7 @@ "awV" = ( /obj/machinery/computer/security/wooden_tv, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "awW" = ( /obj/item/kirbyplants{ icon_state = "plant-21" @@ -8823,8 +8717,8 @@ /turf/open/floor/catwalk_floor, /area/centcom/central_command_areas/evacuation/ship) "awY" = ( -/obj/machinery/autolathe, -/turf/open/floor/circuit/green, +/obj/structure/flora/tree/jungle, +/turf/open/floor/grass, /area/centcom/central_command_areas/admin) "awZ" = ( /obj/effect/turf_decal/siding/wood, @@ -9000,7 +8894,7 @@ /turf/open/floor/sepia{ color = "#cc9439" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "axy" = ( /obj/structure/closet/secure_closet/contraband/armory, /turf/open/floor/iron/dark, @@ -9035,7 +8929,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "axD" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -9175,7 +9069,7 @@ pixel_x = 32 }, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "axY" = ( /obj/item/toy/cards/deck/kotahi{ pixel_y = 26 @@ -9221,7 +9115,7 @@ "aya" = ( /obj/structure/flora/grass/both/style_random, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ayb" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -9263,7 +9157,7 @@ /area/centcom/central_command_areas/botany) "ayg" = ( /turf/open/floor/circuit/green, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ayh" = ( /obj/item/toy/figure/assistant, /obj/item/toy/figure/atmos, @@ -9350,11 +9244,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/hall) -"ayn" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/warning/vacuum, -/turf/open/floor/plating, -/area/centcom/central_command_areas/ferry) "ayo" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -9407,7 +9296,7 @@ pixel_x = -32 }, /turf/open/floor/carpet/red, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ayv" = ( /turf/closed/indestructible/fakedoor{ name = "Tac-Com" @@ -9461,7 +9350,7 @@ /area/centcom/syndicate_mothership/control) "ayC" = ( /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ayD" = ( /turf/closed/indestructible/rock/snow, /area/centcom/syndicate_mothership) @@ -9530,9 +9419,12 @@ /turf/open/floor/wood/parquet, /area/centcom/central_command_areas/arcade) "ayM" = ( -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/light/street_lamp, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) "ayN" = ( /obj/structure/table/wood, /obj/effect/spawner/random/trash/garbage, @@ -9553,24 +9445,7 @@ }, /obj/structure/window/reinforced/tinted/spawner/directional/north, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) -"ayO" = ( -/obj/item/paper_bin{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/paper_bin{ - pixel_x = -8; - pixel_y = 5 - }, -/obj/item/paper_bin{ - pixel_x = 18; - pixel_y = 5 - }, -/obj/machinery/atm/directional/north, -/obj/structure/table, -/turf/open/floor/iron/dark/herringbone, -/area/centcom/central_command_areas/arcade) +/area/centcom/central_command_areas/adminroom) "ayP" = ( /obj/machinery/newscaster{ pixel_y = -32 @@ -9591,7 +9466,7 @@ /area/centcom/central_command_areas/admin_hangout) "ayR" = ( /turf/open/floor/carpet/orange, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "ayS" = ( /obj/structure/table/reinforced, /obj/item/storage/box/emps, @@ -9719,7 +9594,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/admin/captain, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "azk" = ( /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/medical) @@ -9744,12 +9619,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/supply) -"azo" = ( -/obj/machinery/door/poddoor/shutters/indestructible/preopen, -/turf/closed/indestructible/fakeglass{ - color = "#ffe599" - }, -/area/centcom/central_command_areas/admin) "azp" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/large, @@ -9790,7 +9659,7 @@ icon = 'goon/icons/turf/floors.dmi'; icon_state = "boxing" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "azu" = ( /obj/structure/hedge, /obj/machinery/light/floor/has_bulb, @@ -9845,7 +9714,7 @@ dir = 9 }, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "azz" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs/cable/zipties, @@ -9858,7 +9727,7 @@ /obj/structure/bed, /obj/structure/curtain/cloth/fancy, /turf/open/floor/glass/reinforced/plasma, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "azB" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -9966,10 +9835,12 @@ /turf/open/floor/carpet, /area/centcom/central_command_areas/kitchen) "azQ" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/mecha_part_fabricator, -/turf/open/floor/mineral/titanium/purple, -/area/centcom/central_command_areas/admin) +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/structure/flora/bush/fullgrass/style_2, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) "azR" = ( /obj/structure/chair/sofa/corp/right{ dir = 4; @@ -10024,7 +9895,7 @@ /area/centcom/central_command_areas/borbop) "azX" = ( /turf/open/floor/plating/abductor, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "azY" = ( /obj/structure/destructible/cult/item_dispenser/archives/library{ color = "#cc9439"; @@ -10033,15 +9904,16 @@ /turf/open/floor/sepia{ color = "#cc9439" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "azZ" = ( /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, /area/centcom/central_command_areas/supplypod/loading/three) "aAa" = ( -/obj/machinery/suit_storage_unit/rd, -/turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/turf/open/chasm{ + name = "Pooba's Hole of Dead Body Storage +1" + }, +/area/centcom/central_command_areas/adminroom) "aAb" = ( /obj/structure/railing/wood, /obj/structure/railing/wood{ @@ -10121,7 +9993,7 @@ /area/centcom/central_command_areas/admin_hangout) "aAl" = ( /turf/open/floor/mineral/titanium/tiled/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aAm" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -10133,7 +10005,7 @@ /area/centcom/central_command_areas/kitchen) "aAo" = ( /turf/open/floor/vault/sandstone, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aAp" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -10254,7 +10126,7 @@ pixel_x = 4 }, /turf/open/floor/iron/white/diagonal, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aAD" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -10332,7 +10204,7 @@ /obj/structure/table/reinforced/titaniumglass, /obj/machinery/computer/records/medical/laptop, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aAO" = ( /obj/machinery/computer/operating{ dir = 8 @@ -10343,7 +10215,7 @@ "aAP" = ( /obj/machinery/nuclearbomb/beer, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aAQ" = ( /obj/structure/lattice/catwalk, /obj/effect/turf_decal/stripes/line{ @@ -10358,7 +10230,7 @@ /obj/structure/table/reinforced/plastitaniumglass, /obj/item/dice/d20, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aAS" = ( /obj/machinery/light/floor/has_bulb, /turf/open/floor/carpet/royalblue, @@ -10656,7 +10528,7 @@ }, /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aBC" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -10848,11 +10720,11 @@ pixel_y = -32 }, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aCc" = ( /obj/structure/chair/comfy/shuttle, /turf/open/floor/circuit/green, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aCd" = ( /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership/control) @@ -10920,7 +10792,7 @@ dir = 8 }, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aCo" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 @@ -10950,7 +10822,7 @@ "aCs" = ( /obj/effect/turf_decal/siding/dark, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aCt" = ( /obj/machinery/light/directional/south, /obj/effect/turf_decal/siding/wood, @@ -11088,7 +10960,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/admin/captain, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aCO" = ( /obj/structure/fireaxecabinet/directional/north, /turf/open/misc/grass, @@ -11141,7 +11013,7 @@ dir = 10 }, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aCV" = ( /obj/structure/flora/bush/large/style_3, /turf/open/floor/grass, @@ -11221,13 +11093,13 @@ "aDh" = ( /obj/structure/bookcase, /obj/item/book/granter/action/spell/random, -/obj/item/storage/book/bible, +/obj/item/book/bible, /obj/item/book/manual/wiki/security_space_law, /obj/item/book/random, /obj/item/book/random, /obj/item/book/random, /turf/open/floor/plating/abductor, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aDi" = ( /turf/closed/indestructible/riveted, /area/centcom/ai_multicam_room) @@ -11248,7 +11120,7 @@ dir = 8 }, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aDm" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -11303,7 +11175,7 @@ dir = 5 }, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aDu" = ( /obj/item/pizzabox/meat{ pixel_y = 5 @@ -11329,7 +11201,7 @@ dir = 4 }, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aDx" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -11429,10 +11301,11 @@ /turf/open/floor/catwalk_floor, /area/centcom/central_command_areas/evacuation/ship) "aDM" = ( -/obj/machinery/door/window{ - dir = 8 +/obj/effect/turf_decal/siding/white{ + dir = 1 }, -/turf/open/floor/carpet/purple, +/obj/structure/flora/bush/fullgrass/style_3, +/turf/open/floor/grass, /area/centcom/central_command_areas/admin) "aDN" = ( /obj/structure/table/glass/plasmaglass, @@ -11556,7 +11429,7 @@ /obj/item/storage/box/cups, /obj/machinery/light/floor/has_bulb, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aEc" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/siding/wood{ @@ -11569,7 +11442,7 @@ name = "treat storage" }, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aEe" = ( /obj/structure/chair/wood/wings{ dir = 8 @@ -11611,7 +11484,7 @@ "aEj" = ( /obj/machinery/limbgrower/fullupgrade, /turf/open/floor/mineral/titanium/tiled/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aEk" = ( /obj/item/toy/figure/syndie, /turf/open/misc/asteroid/snow/icemoon, @@ -11720,11 +11593,6 @@ /mob/living/basic/cow, /turf/open/floor/grass, /area/centcom/central_command_areas/hall) -"aEz" = ( -/obj/effect/turf_decal/tile/dark/opposingcorners, -/obj/structure/hedge, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/hall) "aEA" = ( /obj/machinery/computer/records/security/laptop, /obj/structure/table/wood, @@ -11733,7 +11601,7 @@ }, /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aEB" = ( /obj/structure/table/reinforced, /obj/machinery/fax{ @@ -11743,7 +11611,7 @@ /turf/open/floor/iron/white/corner{ dir = 4 }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aEC" = ( /obj/machinery/light/floor/has_bulb, /obj/structure/hedge, @@ -11861,11 +11729,6 @@ }, /turf/open/floor/wood/large, /area/centcom/central_command_areas/kitchen) -"aEQ" = ( -/obj/effect/turf_decal/tile/dark/opposingcorners, -/obj/structure/chair/sofa/corp/left, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/hall) "aER" = ( /obj/effect/turf_decal/tile/dark/diagonal_edge, /obj/structure/table/reinforced, @@ -11967,13 +11830,6 @@ /obj/structure/weightmachine/weightlifter, /turf/open/floor/mineral/titanium, /area/centcom/syndicate_mothership/control) -"aFe" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/wood/large, -/area/centcom/central_command_areas/evacuation) "aFf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 8 @@ -12000,10 +11856,6 @@ /obj/effect/landmark/basketball/game_area, /turf/open/space/basic, /area/space) -"aFj" = ( -/obj/structure/fake_stairs/wood/directional/north, -/turf/open/misc/dirt, -/area/centcom/central_command_areas/retirement_yard) "aFk" = ( /obj/effect/turf_decal/siding/white{ dir = 1 @@ -12054,7 +11906,7 @@ }, /obj/structure/table/wood, /turf/open/floor/carpet/red, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aFq" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -12188,11 +12040,13 @@ name = "treat storage" }, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aFH" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 }, +/obj/item/kirbyplants/random, +/obj/machinery/light/directional/east, /turf/open/floor/wood/large, /area/centcom/central_command_areas/evacuation) "aFI" = ( @@ -12208,7 +12062,7 @@ name = "Andrea's Fax Machine" }, /turf/open/floor/carpet/royalblue, -/area/centcom/central_command_areas/admin) +/area) "aFK" = ( /obj/structure/hedge, /obj/effect/turf_decal/siding/wood/corner{ @@ -12216,12 +12070,6 @@ }, /turf/open/floor/wood/large, /area/centcom/central_command_areas/hall) -"aFL" = ( -/obj/structure/railing/wood{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation) "aFM" = ( /obj/structure/railing/wood, /turf/open/floor/glass/reinforced, @@ -12276,7 +12124,7 @@ }, /obj/structure/table/reinforced/plastitaniumglass, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aFT" = ( /obj/structure/table/wood, /obj/effect/spawner/random/bureaucracy/folder, @@ -12293,7 +12141,7 @@ /turf/open/floor/sepia{ color = "#cc9439" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aFV" = ( /obj/structure/closet/crate/freezer/blood, /turf/open/floor/iron/dark, @@ -12337,7 +12185,7 @@ dir = 4 }, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aGc" = ( /obj/structure/sign/poster/contraband/random/directional/south, /obj/structure/chair/pew/left{ @@ -12358,7 +12206,7 @@ }, /obj/machinery/light/directional/south, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aGf" = ( /obj/structure/table/wood, /obj/item/stack/medical/bruise_pack, @@ -12472,7 +12320,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/admin/captain, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aGu" = ( /obj/effect/turf_decal/siding/dark{ dir = 9 @@ -12690,7 +12538,7 @@ fax_name = "Trapp's Office" }, /turf/open/floor/plating/abductor, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aGZ" = ( /obj/machinery/door/airlock/centcom{ dir = 4 @@ -12727,7 +12575,7 @@ /obj/item/dice/d6, /obj/item/dice/d6, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aHd" = ( /obj/structure/chair/stool/bar/directional/east, /turf/open/floor/wood/parquet, @@ -12817,7 +12665,7 @@ icon = 'goon/icons/turf/floors.dmi'; icon_state = "boxing" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aHp" = ( /obj/machinery/modular_computer/preset/id/centcom{ dir = 4 @@ -13008,7 +12856,7 @@ /obj/structure/table/reinforced, /obj/machinery/microwave, /turf/open/floor/iron/white/diagonal, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aHR" = ( /obj/structure/bed/medical/emergency, /obj/machinery/iv_drip, @@ -13100,7 +12948,7 @@ icon = 'goon/icons/turf/floors.dmi'; icon_state = "boxing" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aIe" = ( /obj/machinery/light/small/directional/north, /obj/effect/turf_decal/siding/wood{ @@ -13179,7 +13027,7 @@ "aIn" = ( /obj/structure/table/reinforced/plastitaniumglass, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aIo" = ( /obj/machinery/primitive_stove, /turf/open/floor/iron/terracotta/small, @@ -13270,7 +13118,7 @@ pixel_x = -32 }, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aIB" = ( /obj/structure/closet, /obj/structure/window/plasma/spawner/directional/east, @@ -13283,7 +13131,7 @@ /area/centcom/syndicate_mothership/control) "aID" = ( /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aIE" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 @@ -13309,21 +13157,6 @@ icon_state = "boxing" }, /area/centcom/central_command_areas/hall) -"aIH" = ( -/obj/structure/sign{ - name = "wall"; - icon = 'monkestation/icons/turf/walls/reinforced_wall.dmi'; - icon_state = "reinforced_wall-3"; - desc = "Effectively impervious to conventional methods of destruction."; - pixel_x = -32 - }, -/obj/structure/closet/secure_closet/ert_med, -/obj/item/storage/toolbox/mechanical{ - pixel_y = -3 - }, -/obj/item/mod/module/flamethrower, -/turf/open/floor/glass/reinforced/plasma, -/area/centcom/central_command_areas/admin) "aII" = ( /obj/structure/railing/wood, /obj/structure/fake_stairs/wood/directional/east, @@ -13398,9 +13231,11 @@ /turf/open/floor/wood/large, /area/centcom/central_command_areas/kitchen) "aIS" = ( -/obj/machinery/door/poddoor/shutters/indestructible/preopen, +/obj/machinery/door/poddoor/shutters/indestructible/preopen{ + id = "donutstealthisid" + }, /turf/closed/indestructible/fakeglass, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aIT" = ( /obj/effect/turf_decal/stripes/box, /obj/machinery/portable_atmospherics/pump/lil_pump{ @@ -13410,7 +13245,7 @@ /area/centcom/syndicate_mothership/expansion_bombthreat) "aIU" = ( /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aIV" = ( /obj/effect/turf_decal/tile/dark/diagonal_edge, /turf/open/floor/iron/white/diagonal, @@ -13422,7 +13257,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/admin/captain, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aIX" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -13497,7 +13332,7 @@ "aJj" = ( /obj/structure/chair/stool/sandstone, /turf/open/floor/vault/sandstone, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aJk" = ( /obj/effect/turf_decal/loading_area{ dir = 8 @@ -13526,14 +13361,14 @@ /obj/item/book/manual/wiki/security_space_law, /obj/machinery/light/floor/has_bulb, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aJp" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 }, /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aJq" = ( /obj/machinery/camera/motion/thunderdome{ pixel_x = 10 @@ -13572,12 +13407,14 @@ /turf/open/floor/wood/large, /area/centcom/central_command_areas/admin_hangout) "aJv" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/infinite, -/turf/open/floor/mineral/titanium/purple, -/area/centcom/central_command_areas/admin) +/obj/structure/sign{ + name = "wall"; + icon = 'monkestation/icons/turf/walls/reinforced_wall.dmi'; + icon_state = "reinforced_wall-12"; + pixel_y = -32 + }, +/turf/closed/indestructible/riveted, +/area/centcom/central_command_areas/retirement_yard) "aJw" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -13705,10 +13542,6 @@ }, /turf/open/floor/grass, /area/centcom/central_command_areas/borbop) -"aJN" = ( -/obj/structure/railing/wood, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation) "aJO" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -13737,7 +13570,7 @@ /obj/item/stamp/denied, /obj/item/stamp/void, /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aJR" = ( /obj/effect/turf_decal/siding/wood/corner, /obj/effect/turf_decal/siding/wood/corner{ @@ -13798,7 +13631,7 @@ /obj/structure/window/reinforced/tinted/spawner/directional/west, /obj/structure/window/reinforced/tinted/spawner/directional/north, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aJZ" = ( /obj/machinery/smartfridge/chemistry/virology/preloaded, /turf/closed/indestructible/syndicate, @@ -13829,8 +13662,9 @@ /turf/open/floor/grass, /area/centcom/central_command_areas/hall) "aKc" = ( -/turf/open/floor/mineral/titanium/purple, -/area/centcom/central_command_areas/admin) +/obj/machinery/computer/camera_advanced/syndie, +/turf/open/floor/carpet/donk, +/area/centcom/central_command_areas/adminroom) "aKd" = ( /obj/effect/turf_decal/trimline/green/corner{ dir = 1 @@ -13967,13 +13801,6 @@ /obj/structure/fluff/iced_abductor, /turf/open/floor/carpet, /area/centcom/central_command_areas/admin_hangout) -"aKt" = ( -/obj/effect/turf_decal/tile/dark/opposingcorners, -/obj/structure/railing/wood{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/hall) "aKu" = ( /obj/effect/turf_decal/trimline/green/line{ dir = 10 @@ -14515,7 +14342,7 @@ "aLL" = ( /obj/machinery/vending/boozeomat, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aLM" = ( /obj/docking_port/stationary{ dir = 8; @@ -14701,7 +14528,7 @@ dir = 4 }, /turf/open/floor/plating/abductor, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aMl" = ( /obj/structure/hedge, /turf/open/floor/wood/large, @@ -14758,12 +14585,6 @@ "aMs" = ( /turf/closed/indestructible/riveted/uranium, /area/centcom/wizard_station) -"aMt" = ( -/obj/machinery/door/airlock/centcom{ - name = "Admin Retirement Home" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/centcom/central_command_areas/hall) "aMu" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/airlock/titanium{ @@ -14845,7 +14666,7 @@ dir = 8 }, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aMF" = ( /obj/structure/curtain/cloth/fancy, /obj/effect/spawner/structure/window/reinforced, @@ -14874,7 +14695,7 @@ name = "Raziel's Fax Machine" }, /turf/open/floor/glass/reinforced/plasma, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aMJ" = ( /obj/structure/chair/office, /obj/effect/landmark/ert_spawn, @@ -14900,11 +14721,6 @@ /obj/machinery/power/shuttle_engine/large, /turf/open/floor/plating, /area/centcom/central_command_areas/evacuation/ship) -"aMN" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/obj/structure/flora/bush/fullgrass/style_random, -/turf/open/floor/grass, -/area/centcom/central_command_areas/hall) "aMO" = ( /obj/item/kirbyplants{ icon_state = "plant-22"; @@ -14958,7 +14774,7 @@ /turf/open/floor/sepia{ color = "#cc9439" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aMS" = ( /obj/machinery/door/airlock{ icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; @@ -14975,7 +14791,7 @@ dir = 8 }, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aMV" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 5 @@ -14987,12 +14803,6 @@ /obj/item/storage/belt/medical, /turf/open/floor/mineral/titanium/tiled/blue, /area/centcom/syndicate_mothership/control) -"aMW" = ( -/obj/machinery/status_display/evac/directional/west, -/obj/machinery/light/directional/west, -/obj/structure/railing/wood, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation) "aMX" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -15010,7 +14820,7 @@ /area/centcom/central_command_areas/medical) "aNa" = ( /turf/open/floor/glass/reinforced/plasma, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aNb" = ( /turf/open/floor/iron/dark, /area/centcom/central_command_areas/medical) @@ -15020,7 +14830,7 @@ name = "gamer chair" }, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aNd" = ( /obj/effect/turf_decal/siding/green, /obj/structure/hedge, @@ -15078,7 +14888,7 @@ "aNl" = ( /obj/machinery/light/floor/has_bulb, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aNm" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -15133,11 +14943,11 @@ pixel_x = -32 }, /turf/open/floor/carpet/red, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aNs" = ( /obj/structure/dresser, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aNt" = ( /obj/item/kirbyplants{ icon_state = "plant-22"; @@ -15375,7 +15185,7 @@ dir = 1 }, /turf/open/floor/carpet, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aOc" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/siding/red{ @@ -15430,9 +15240,11 @@ /turf/open/floor/wood/large, /area/centcom/central_command_areas/kitchen) "aOk" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/mineral/titanium/purple, -/area/centcom/central_command_areas/admin) +/obj/machinery/quantum_server{ + name = "NT Quantum Server Relay" + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) "aOl" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -15595,7 +15407,7 @@ desc = "A little known fact is that clones requires souls, the men and woman who worked on the first success of what would come to be known as the Iden Project did not know that." }, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aOE" = ( /turf/closed/indestructible/fakeglass, /area/centcom/central_command_areas/retirement_yard) @@ -15686,7 +15498,7 @@ /obj/structure/table/reinforced, /obj/machinery/coffeemaker/impressa, /turf/open/floor/iron/white/diagonal, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aOS" = ( /obj/effect/decal/remains/human, /obj/effect/decal/cleanable/blood/splatter, @@ -15753,7 +15565,7 @@ /turf/open/floor/sepia{ color = "#cc9439" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aPa" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -15803,7 +15615,7 @@ dir = 1 }, /turf/open/floor/iron/dark/herringbone, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aPg" = ( /obj/structure/fake_stairs/wood/directional/north, /turf/open/indestructible/hotelwood, @@ -15815,11 +15627,6 @@ /obj/effect/mapping_helpers/airlock/access/all/syndicate/general, /turf/open/floor/iron/smooth_edge, /area/centcom/syndicate_mothership/control) -"aPi" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/item/chair/wood, -/turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) "aPj" = ( /obj/machinery/light/floor/has_bulb, /turf/open/floor/wood/large, @@ -15833,7 +15640,7 @@ /obj/structure/table/reinforced/plastitaniumglass, /obj/item/dice/d10, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aPm" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/iron, @@ -16097,7 +15904,7 @@ /obj/item/pen/fourcolor, /obj/machinery/pollution_scrubber, /turf/open/floor/carpet, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aQa" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -16166,7 +15973,7 @@ pixel_x = -32 }, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aQi" = ( /obj/structure/railing/wood{ dir = 8 @@ -16274,8 +16081,9 @@ /turf/open/floor/iron, /area/centcom/syndicate_mothership/control) "aQx" = ( -/turf/closed/indestructible/fakedoor{ - name = "Sub-Laboratory Elevator" +/obj/machinery/door/puzzle/keycard/syndicate_suit_storage, +/turf/open/floor/iron/smooth_half{ + dir = 4 }, /area/centcom/syndicate_mothership/control) "aQy" = ( @@ -16418,7 +16226,7 @@ /obj/effect/heretic_rune/big, /obj/structure/chair/musical, /turf/open/floor/plating/abductor, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aQQ" = ( /obj/structure/chair/wood/wings{ dir = 1 @@ -16439,14 +16247,6 @@ }, /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/admin_hangout) -"aQT" = ( -/obj/structure/table/wood, -/obj/item/trash/tray, -/obj/item/trash/energybar, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) "aQU" = ( /obj/structure/flora/tree/pine/style_random, /obj/structure/flora/grass/both/style_random, @@ -16458,15 +16258,11 @@ /area/centcom/syndicate_mothership/control) "aQV" = ( /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aQW" = ( /obj/machinery/light/directional/east, /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) -"aQX" = ( -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation) +/area/centcom/central_command_areas/adminroom) "aQY" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -16499,7 +16295,7 @@ }, /obj/machinery/computer/rdconsole, /turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aRe" = ( /obj/machinery/light/floor/has_bulb, /obj/effect/turf_decal/siding/wood{ @@ -16593,11 +16389,12 @@ /turf/open/floor/engine/cult, /area/centcom/wizard_station) "aRt" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen/fourcolor, -/turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/obj/effect/turf_decal/trimline/yellow/warning, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/centcom/central_command_areas/retirement_yard) "aRu" = ( /obj/item/statuebust{ pixel_y = 12 @@ -16852,7 +16649,7 @@ /obj/structure/table/reinforced, /obj/structure/sign/poster/official/moth_meth/directional/west, /turf/open/floor/iron/white/corner, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aRZ" = ( /obj/structure/chair/bronze{ name = "gamer chair mk2" @@ -16862,10 +16659,6 @@ }, /turf/open/floor/carpet/neon/simple/white, /area/centcom/central_command_areas/admin) -"aSa" = ( -/obj/structure/flora/tree/jungle/style_3, -/turf/open/floor/grass, -/area/centcom/central_command_areas/evacuation) "aSb" = ( /obj/structure/rack/gunrack, /obj/effect/spawner/armory_spawn/shotguns, @@ -16883,7 +16676,7 @@ pixel_y = 4 }, /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aSd" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/lattice, @@ -16940,11 +16733,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/briefing) -"aSl" = ( -/obj/effect/turf_decal/tile/dark/opposingcorners, -/obj/structure/chair/sofa/corp, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/hall) "aSm" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -16963,7 +16751,7 @@ opacity = 1 }, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aSn" = ( /obj/machinery/light/cold/directional/west, /turf/open/floor/mineral/titanium, @@ -16974,7 +16762,7 @@ name = "Tomb of Amun Set Hep" }, /turf/open/floor/vault/sandstone, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aSp" = ( /obj/structure/closet/crate/freezer{ name = "meat freezer" @@ -17022,7 +16810,7 @@ dir = 4 }, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aSt" = ( /obj/structure/fake_stairs/wood/directional/south, /turf/open/floor/iron/dark, @@ -17159,7 +16947,8 @@ /area/centcom/central_command_areas/admin) "aSJ" = ( /obj/machinery/light/directional/east, -/obj/structure/flora/tree/jungle/style_3, +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, /turf/open/floor/grass, /area/centcom/central_command_areas/hall) "aSK" = ( @@ -17231,13 +17020,6 @@ dir = 4 }, /area/centcom/syndicate_mothership/control) -"aSQ" = ( -/obj/item/reagent_containers/syringe/contraband/fentanyl{ - pixel_x = 2; - pixel_y = 6 - }, -/turf/closed/indestructible/riveted, -/area/centcom/central_command_areas/admin) "aSR" = ( /turf/open/floor/circuit/green, /area/centcom/central_command_areas/briefing) @@ -17256,7 +17038,7 @@ /obj/structure/table/wood, /obj/machinery/computer/security/wooden_tv, /turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aSV" = ( /obj/structure/chair/comfy/lime{ dir = 8 @@ -17297,7 +17079,7 @@ pixel_y = 18 }, /turf/open/floor/glass/reinforced/plasma, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aTa" = ( /turf/open/floor/iron/white, /area/centcom/wizard_station) @@ -17331,7 +17113,7 @@ dir = 1 }, /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aTg" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -17527,7 +17309,7 @@ /obj/structure/hedge, /obj/structure/stone_tile/slab, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aTB" = ( /obj/structure/table/wood, /obj/item/storage/box/donkpockets, @@ -17599,7 +17381,7 @@ "aTL" = ( /obj/machinery/growing/soil, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aTM" = ( /obj/effect/turf_decal/siding/wideplating_new/dark{ dir = 4 @@ -17761,7 +17543,7 @@ name = "treat storage" }, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aUh" = ( /obj/effect/turf_decal/tile/dark/opposingcorners, /turf/open/floor/iron/dark, @@ -17801,7 +17583,7 @@ "aUo" = ( /obj/structure/flora/grass/brown/style_random, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aUp" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/light/neon_lining{ @@ -17839,13 +17621,6 @@ }, /turf/open/floor/wood/large, /area/centcom/central_command_areas/borbop) -"aUu" = ( -/obj/item/storage/box/coffeepack/robusta, -/obj/item/storage/box/coffeepack/robusta, -/obj/item/reagent_containers/cup/coffeepot/bluespace, -/obj/item/reagent_containers/cup/coffeepot/bluespace, -/turf/open/floor/carpet/royalblue, -/area/centcom/central_command_areas/admin) "aUv" = ( /obj/structure/sign{ name = "wall"; @@ -17932,7 +17707,7 @@ /turf/open/floor/iron/white/side{ dir = 1 }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aUI" = ( /obj/effect/turf_decal/siding/green{ dir = 4 @@ -18036,7 +17811,7 @@ /turf/open/floor/sepia{ color = "#cc9439" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aUW" = ( /obj/structure/bed/double, /obj/item/bedsheet/centcom/double, @@ -18076,13 +17851,15 @@ }, /obj/structure/light_prism, /turf/open/floor/plating/abductor, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aVc" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight/lamp, -/obj/item/reagent_containers/cup/glass/mug/nanotrasen, -/turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/structure/flora/bush/fullgrass/style_2, +/obj/structure/flora/biolumi/flower, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) "aVd" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -18300,7 +18077,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/admin/captain, /turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aVB" = ( /obj/structure/chair/sofa/bench/right{ dir = 4 @@ -18323,7 +18100,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/admin/captain, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aVE" = ( /obj/structure/table/reinforced, /obj/item/gun/ballistic/automatic/wt550, @@ -18351,10 +18128,6 @@ }, /turf/open/floor/wood/large, /area/centcom/central_command_areas/borbop) -"aVI" = ( -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/mineral/titanium/purple, -/area/centcom/central_command_areas/admin) "aVJ" = ( /obj/structure/window/plasma/spawner/directional/east, /obj/machinery/photocopier/gratis, @@ -18400,12 +18173,12 @@ "aVQ" = ( /obj/structure/flora/tree/pine/style_random, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aVR" = ( /obj/machinery/light/directional/west, /obj/structure/hedge, /turf/open/floor/carpet, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aVS" = ( /obj/structure/railing/wood, /obj/structure/railing/wood{ @@ -18422,7 +18195,7 @@ "aVU" = ( /obj/structure/chair/comfy/carp, /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aVV" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -18432,10 +18205,6 @@ }, /turf/open/floor/wood/large, /area/centcom/central_command_areas/admin_hangout) -"aVW" = ( -/obj/effect/turf_decal/siding/white, -/turf/open/misc/dirt, -/area/centcom/central_command_areas/retirement_yard) "aVX" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 8 @@ -18464,7 +18233,7 @@ /turf/open/floor/sepia{ color = "#cc9439" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aVZ" = ( /obj/structure/closet/secure_closet/ert_med, /obj/structure/sign/directions/medical{ @@ -18481,7 +18250,7 @@ dir = 4 }, /turf/open/floor/mineral/titanium/tiled/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aWb" = ( /turf/open/floor/wood/large, /area/centcom/tdome/observation) @@ -18707,13 +18476,7 @@ dir = 1 }, /turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) -"aWI" = ( -/obj/effect/turf_decal/siding/dark/end{ - dir = 1 - }, -/turf/closed/indestructible/riveted, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aWJ" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -18848,7 +18611,7 @@ pixel_x = 32 }, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aWY" = ( /obj/machinery/light/directional/north, /obj/structure/table/reinforced, @@ -18927,7 +18690,7 @@ }, /obj/structure/flora/tree/pine/style_random, /turf/open/misc/snow/actually_safe, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aXj" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ @@ -18977,16 +18740,7 @@ dir = 8 }, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) -"aXo" = ( -/obj/structure/table/wood, -/obj/item/toy/plush/lizard_plushie, -/obj/machinery/fax{ - fax_name = "s"; - name = "Abraxis' Fax Machine" - }, -/turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aXp" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/computer/monitor, @@ -19137,7 +18891,7 @@ "aXI" = ( /obj/structure/table/abductor, /turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aXJ" = ( /turf/open/floor/iron/smooth_edge{ dir = 8 @@ -19193,7 +18947,7 @@ /obj/machinery/light/small/directional/west, /obj/item/toy/plush/lizard_plushie, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aXS" = ( /obj/structure/flora/tree/dead/style_random, /obj/structure/flora/grass/both/style_random, @@ -19219,12 +18973,6 @@ }, /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/admin) -"aXV" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/glass/reinforced, -/area/centcom/central_command_areas/hall) "aXW" = ( /obj/machinery/light/floor/has_bulb, /turf/open/floor/iron/dark, @@ -19281,15 +19029,7 @@ dir = 1 }, /turf/open/floor/iron/dark/herringbone, -/area/centcom/central_command_areas/admin) -"aYd" = ( -/obj/structure/closet/crate/science, -/obj/item/clothing/head/beret/science/rd, -/turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) -"aYe" = ( -/turf/open/misc/dirt, -/area/centcom/central_command_areas/retirement_yard) +/area/centcom/central_command_areas/adminroom) "aYf" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -19346,7 +19086,7 @@ dir = 4 }, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aYk" = ( /obj/effect/turf_decal/bot, /obj/effect/spawner/random/structure/crate, @@ -19361,7 +19101,7 @@ "aYm" = ( /obj/structure/table/optable, /turf/open/floor/mineral/titanium/tiled/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aYn" = ( /turf/closed/indestructible/riveted, /area/centcom/central_command_areas/supplypod) @@ -19380,12 +19120,12 @@ pixel_x = 32 }, /turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aYp" = ( /obj/machinery/light/small/maintenance/directional/east, /obj/structure/filingcabinet/employment, /turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aYq" = ( /obj/machinery/door/airlock{ icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; @@ -19401,7 +19141,7 @@ dir = 8 }, /turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aYt" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/fake_stairs/wood/directional/east, @@ -19435,7 +19175,7 @@ pixel_x = 5 }, /turf/open/floor/mineral/titanium/tiled/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aYx" = ( /turf/open/floor/iron/white/herringbone, /area/centcom/central_command_areas/evacuation/ship) @@ -19454,7 +19194,7 @@ name = "Waffles' Fax Machine" }, /turf/open/floor/carpet, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aYA" = ( /obj/machinery/light/directional/south, /turf/open/floor/wood, @@ -19531,13 +19271,6 @@ }, /turf/open/floor/iron/dark/herringbone, /area/centcom/central_command_areas/hall) -"aYO" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/fax{ - fax_name = "Raziel's Desk" - }, -/turf/open/floor/circuit, -/area/centcom/central_command_areas/admin) "aYP" = ( /obj/effect/spawner/random/trash/garbage, /obj/effect/spawner/random/structure/closet_maintenance, @@ -19552,7 +19285,7 @@ /turf/open/floor/iron/white/corner{ dir = 8 }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aYR" = ( /obj/effect/turf_decal/siding/dark{ dir = 8 @@ -19636,7 +19369,7 @@ pixel_x = 32 }, /turf/open/floor/wood/large, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aZb" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/door/airlock/centcom{ @@ -19650,7 +19383,7 @@ /area/centcom/central_command_areas/ferry) "aZc" = ( /turf/open/floor/iron/dark/small, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aZd" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 10 @@ -19672,7 +19405,7 @@ }, /obj/item/paint_palette, /turf/open/floor/iron/dark/herringbone, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aZf" = ( /turf/closed/indestructible/fakeglass, /area/centcom/central_command_areas/admin) @@ -19742,11 +19475,9 @@ /turf/open/floor/iron/white/herringbone, /area/centcom/central_command_areas/evacuation/ship) "aZr" = ( -/obj/structure/chair/sofa/left{ - dir = 4 - }, -/turf/open/floor/carpet/purple, -/area/centcom/central_command_areas/admin) +/obj/machinery/computer/arcade, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) "aZs" = ( /obj/machinery/shuttle_manipulator, /turf/open/floor/circuit/green, @@ -19782,7 +19513,7 @@ icon = 'goon/icons/turf/floors.dmi'; icon_state = "boxing" }, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aZy" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/heat_exchanging/manifold, @@ -19830,7 +19561,7 @@ /obj/structure/chair/sofa/corp/corner, /obj/machinery/light/floor/has_bulb, /turf/open/floor/mineral/titanium/white, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aZE" = ( /obj/effect/landmark/error, /turf/open/misc/ashplanet/wateryrock{ @@ -19975,7 +19706,7 @@ dir = 1 }, /turf/open/floor/iron/dark/herringbone, -/area/centcom/central_command_areas/admin) +/area/centcom/central_command_areas/adminroom) "aZU" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -20020,6 +19751,11 @@ /obj/structure/flora/tree/jungle/small/style_5, /turf/open/floor/grass, /area/centcom/central_command_areas/borbop) +"bfA" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/large/style_3, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) "bhR" = ( /obj/effect/landmark/start/assaultop, /obj/structure/chair/plastic{ @@ -20032,12 +19768,49 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"bjH" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/machinery/light/street_lamp, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) "bkY" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 4 }, /turf/open/misc/asteroid, /area/cruiser_dock) +"blf" = ( +/obj/machinery/light/neon_lining{ + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/toy/mecha/seraph{ + pixel_y = 9 + }, +/turf/open/floor/iron/dark/textured_edge, +/area/centcom/central_command_areas/evacuation) +"blr" = ( +/obj/effect/mapping_helpers/airlock/access/any/admin/captain, +/obj/machinery/door/airlock/hatch{ + name = "Pooba's Observatory" + }, +/turf/open/floor/carpet/donk, +/area/centcom/central_command_areas/adminroom) +"blD" = ( +/obj/effect/mapping_helpers/airlock/access/any/admin/captain, +/obj/machinery/door/airlock/sandstone{ + dir = 4; + name = "Amun's Office" + }, +/turf/open/floor/vault/sandstone, +/area/centcom/central_command_areas/adminroom) +"bnc" = ( +/obj/machinery/light/floor/has_bulb, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) "bnQ" = ( /obj/structure/table, /obj/item/pizzabox/pineapple, @@ -20047,6 +19820,13 @@ /obj/structure/table, /turf/open/floor/carpet/red, /area/cruiser_dock) +"bCf" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/chair/sofa/corp, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) "bCO" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 4 @@ -20069,6 +19849,15 @@ /obj/structure/shipping_container/cybersun, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"bTx" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/centcom/central_command_areas/retirement_yard) "bTZ" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -20076,6 +19865,42 @@ /obj/machinery/light/cold/directional/south, /turf/open/misc/asteroid, /area/cruiser_dock) +"bVz" = ( +/obj/effect/turf_decal/trimline/white/end, +/turf/open/floor/iron/dark/smooth_large, +/area/centcom/central_command_areas/admin) +"bWo" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/structure/railing/wood{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/hall) +"bYA" = ( +/obj/machinery/light/neon_lining{ + dir = 1; + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 5 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/textured_corner{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) +"cjY" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/obj/structure/chair/office{ + dir = 1; + name = "gamer chair" + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) "coC" = ( /obj/structure/sign/poster/quirk/engineering_slogan, /turf/closed/wall/mineral/titanium/nodiagonal, @@ -20084,10 +19909,44 @@ /obj/machinery/armament_station/assault_operatives, /turf/open/floor/iron/smooth_large, /area/cruiser_dock) +"cvJ" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/large, +/area/centcom/central_command_areas/evacuation) +"cxr" = ( +/turf/open/misc/dirt, +/area/centcom/central_command_areas/retirement_yard) "cyj" = ( /obj/machinery/suit_storage_unit/industrial/assault_operative, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"cDd" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/adminroom) +"cFh" = ( +/obj/structure/railing/wood{ + dir = 4 + }, +/turf/open/floor/glass/reinforced, +/area/centcom/central_command_areas/evacuation) +"cFo" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/obj/machinery/vending/cola/sodie, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) +"cGT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/glass/reinforced, +/area/centcom/central_command_areas/hall) "cIh" = ( /obj/effect/turf_decal/siding/thinplating_new/dark/corner{ dir = 4 @@ -20099,10 +19958,68 @@ /obj/machinery/door/puzzle/keycard/assault_ops_chemistry, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"cOz" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 6 + }, +/turf/open/floor/iron/dark/textured_corner{ + dir = 1 + }, +/area/centcom/central_command_areas/evacuation) +"cQz" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"cQL" = ( +/obj/machinery/computer/communications/syndicate, +/turf/open/floor/carpet/donk, +/area/centcom/central_command_areas/adminroom) +"cSL" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/open/misc/dirt, +/area/centcom/central_command_areas/retirement_yard) +"diV" = ( +/obj/structure/closet/abductor{ + name = "Sentient Locker of Transport" + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"dki" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 1 + }, +/area/centcom/central_command_areas/evacuation) +"dlh" = ( +/obj/item/storage/box/coffeepack/robusta{ + pixel_x = -18; + pixel_y = 11 + }, +/obj/item/storage/box/coffeepack/robusta{ + pixel_x = -21; + pixel_y = -3 + }, +/turf/open/floor/carpet/royalblue, +/area/centcom/central_command_areas/admin) "dqh" = ( /obj/structure/closet/firecloset, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"drb" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 10 + }, +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/open/floor/iron/dark/textured_corner{ + dir = 4 + }, +/area/centcom/central_command_areas/evacuation) "drE" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/item/storage/fancy/cigarettes/cigars/havana{ @@ -20116,11 +20033,40 @@ dir = 8 }, /area/cruiser_dock) +"dtE" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/structure/flora/bush/fullgrass/style_2, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"duq" = ( +/obj/structure/railing/wood{ + dir = 1 + }, +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) +"dwU" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/structure/flora/bush/large/style_3, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) "dxL" = ( /obj/machinery/vending/cigarette/syndicate, /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"dCz" = ( +/obj/structure/statue/sandstone/venus{ + name = "Justice" + }, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) "dEH" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -20133,6 +20079,13 @@ /obj/machinery/chem_master, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"dQc" = ( +/obj/effect/mapping_helpers/airlock/access/any/admin/captain, +/obj/machinery/door/airlock/wood/glass{ + name = "Pooba's Bedroom" + }, +/turf/open/floor/carpet/orange, +/area/centcom/central_command_areas/adminroom) "dRD" = ( /obj/structure/chair/plastic, /obj/effect/landmark/start/assaultop, @@ -20142,6 +20095,22 @@ "dUR" = ( /turf/open/floor/carpet/red, /area/cruiser_dock) +"efN" = ( +/obj/structure/chair/sofa/corp{ + dir = 1 + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"egP" = ( +/obj/effect/turf_decal/siding/white{ + dir = 9 + }, +/obj/machinery/light/street_lamp, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"egY" = ( +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) "eiE" = ( /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/smooth_large, @@ -20152,6 +20121,28 @@ }, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"elw" = ( +/obj/machinery/vending/coffee, +/obj/machinery/light/directional/north, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"erK" = ( +/obj/structure/flora/bush/fullgrass/style_2, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"exk" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"exy" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L11" + }, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) "eAb" = ( /turf/open/floor/iron/stairs/medium{ dir = 1 @@ -20165,12 +20156,27 @@ }, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"eEo" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 9 + }, +/obj/effect/turf_decal/siding/dark/corner, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/adminroom) +"eHz" = ( +/turf/closed/indestructible/fakeglass, +/area/centcom/central_command_areas/adminroom) "eHN" = ( /obj/effect/turf_decal/loading_area/white{ dir = 4 }, /turf/open/floor/iron/smooth_large, /area/cruiser_dock) +"eJD" = ( +/obj/structure/window/reinforced/tinted/frosted, +/obj/structure/closet/mini_fridge, +/turf/open/floor/iron/dark/small, +/area/centcom/central_command_areas/adminroom) "eOz" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 6 @@ -20185,22 +20191,81 @@ dir = 4 }, /area/cruiser_dock) +"ePC" = ( +/obj/machinery/light/directional/east, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) "eQR" = ( /obj/effect/turf_decal/siding/thinplating_new/dark/corner{ dir = 8 }, /turf/open/floor/iron/smooth_large, /area/cruiser_dock) +"eSA" = ( +/obj/machinery/door/poddoor/shutters/indestructible/preopen{ + id = "donutstealthisid" + }, +/turf/closed/indestructible/fakeglass, +/area/centcom/central_command_areas/admin) "eVz" = ( /obj/effect/turf_decal/siding/thinplating_new/dark/corner, /turf/open/floor/plating, /area/cruiser_dock) +"eWh" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"fan" = ( +/obj/machinery/light/floor/has_bulb, +/turf/open/floor/carpet/orange, +/area/centcom/central_command_areas/adminroom) +"fcP" = ( +/obj/machinery/light/neon_lining{ + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 6 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/textured_corner{ + dir = 1 + }, +/area/centcom/central_command_areas/evacuation) +"ffV" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/structure/flora/bush/fullgrass/style_2, +/obj/structure/flora/bush/fullgrass/style_2, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) "fgR" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 }, /turf/open/floor/iron/smooth_large, /area/cruiser_dock) +"flN" = ( +/obj/structure/table/reinforced/titaniumglass, +/obj/machinery/fax{ + name = "NT Helpdesk Fax Machine"; + fax_name = "NT Helpdesk" + }, +/obj/machinery/light/directional/west, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"fuy" = ( +/obj/machinery/light/neon_lining{ + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/pizzabox/pineapple{ + pixel_x = 3; + pixel_y = 9 + }, +/turf/open/floor/iron/dark/textured_edge, +/area/centcom/central_command_areas/evacuation) "fEL" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -20225,6 +20290,55 @@ name = "Base Access" }, /area/cruiser_dock) +"fRS" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) +"fWt" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) +"fYP" = ( +/obj/vehicle/sealed/mecha/durand{ + name = "\improper Rosie" + }, +/obj/machinery/light/directional/east, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"fYQ" = ( +/obj/structure/table/reinforced/plastitaniumglass{ + name = "Andrea's Desk" + }, +/obj/machinery/coffeemaker/impressa, +/obj/item/reagent_containers/cup/coffeepot/bluespace{ + pixel_x = 8; + pixel_y = 11 + }, +/obj/item/reagent_containers/cup/coffeepot/bluespace{ + pixel_x = 8 + }, +/turf/open/floor/carpet/royalblue, +/area/centcom/central_command_areas/admin) +"gfj" = ( +/obj/structure/chair/sofa/corp/left{ + dir = 8 + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"ggS" = ( +/obj/machinery/light/neon_lining{ + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 6 + }, +/turf/open/floor/iron/dark/textured_corner{ + dir = 1 + }, +/area/centcom/central_command_areas/evacuation) "ghD" = ( /obj/effect/turf_decal/siding/thinplating_new/dark/corner{ dir = 8 @@ -20233,6 +20347,28 @@ dir = 4 }, /area/cruiser_dock) +"gjY" = ( +/obj/machinery/light/neon_lining{ + dir = 1; + icon_state = "pink2_1" + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"gmQ" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L10" + }, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"gqw" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/chair/sofa/corp, +/obj/structure/sign/poster/abductor/ayylian/directional/north, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) "gwo" = ( /obj/structure/closet/cardboard, /mob/living/basic/bot/medbot{ @@ -20242,6 +20378,46 @@ }, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"gyJ" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L5" + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/pen{ + pixel_x = -6; + pixel_y = 5 + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"gBq" = ( +/obj/machinery/vending/imported/mothic, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"gBx" = ( +/obj/structure/railing/wood{ + dir = 4 + }, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) +"gCO" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L7" + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/spawner/random/entertainment/dice, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"gEP" = ( +/obj/structure/railing/wood, +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) "gFh" = ( /obj/effect/turf_decal/box/corners{ dir = 8 @@ -20252,10 +20428,63 @@ /obj/structure/shipping_container/gorlex, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"gHM" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/structure/chair/sofa/corp/left, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/hall) +"gJY" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) +"gMl" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 6 + }, +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/open/floor/iron/dark/textured_corner{ + dir = 1 + }, +/area/centcom/central_command_areas/evacuation) +"gRd" = ( +/obj/machinery/status_display/evac/directional/west, +/obj/machinery/light/directional/west, +/obj/machinery/light/neon_lining{ + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 10 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/textured_corner{ + dir = 4 + }, +/area/centcom/central_command_areas/evacuation) +"gSn" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) "gXq" = ( /obj/structure/punching_bag, /turf/open/floor/plating, /area/cruiser_dock) +"gXN" = ( +/obj/structure/table/reinforced/titaniumglass, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"gYo" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 1 + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"hdA" = ( +/turf/open/floor/iron/dark/textured, +/area/centcom/central_command_areas/evacuation) "hfj" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 4 @@ -20263,29 +20492,128 @@ /obj/machinery/light/cold/directional/south, /turf/open/misc/asteroid, /area/cruiser_dock) +"hfx" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/structure/railing/wood, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/evacuation) +"hke" = ( +/obj/machinery/light/neon_lining{ + icon_state = "pink2_1" + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) "hkm" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /turf/open/floor/iron/smooth, /area/cruiser_dock) +"hol" = ( +/obj/item/kirbyplants/synthetic, +/turf/open/floor/carpet/orange, +/area/centcom/central_command_areas/adminroom) +"hpt" = ( +/obj/effect/turf_decal/siding/white, +/obj/machinery/light/street_lamp, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"hpU" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/structure/flora/bush/large/style_3, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) "hrx" = ( /obj/machinery/light/cold/directional/east, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"hsh" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/obj/machinery/vending/cola/red, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) +"hxZ" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/structure/flora/bush/fullgrass/style_2, +/obj/structure/flora/bush/large/style_3, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) "hAI" = ( /obj/effect/turf_decal/box/corners{ dir = 8 }, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"hAP" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/carpet/orange, +/area/centcom/central_command_areas/adminroom) +"hAZ" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/clothing/mask/cigarette/rollie/cannabis, +/obj/item/clothing/mask/cigarette/rollie/cannabis{ + pixel_y = 6 + }, +/obj/item/clothing/mask/cigarette/pipe/crackpipe{ + pixel_x = 8 + }, +/obj/item/reagent_containers/crackbrick{ + pixel_x = 5; + pixel_y = 6 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) "hCn" = ( /turf/open/floor/iron/smooth_edge{ dir = 4 }, /area/cruiser_dock) +"hCF" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/lantern/syndicate{ + pixel_x = 8; + pixel_y = 15 + }, +/obj/item/ammo_box/magazine/plastikov9mm{ + pixel_x = -8 + }, +/obj/item/ammo_box/magazine/plastikov9mm{ + pixel_x = -4 + }, +/obj/item/ammo_box/magazine/plastikov9mm, +/obj/item/ammo_box/magazine/plastikov9mm{ + pixel_x = 4 + }, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/centcom/syndicate_mothership/control) "hFg" = ( /obj/effect/turf_decal/box/corners, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"hFy" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/glass/reinforced, +/area/centcom/central_command_areas/evacuation) +"hGa" = ( +/obj/machinery/door/airlock/centcom{ + name = "Admin Retirement Home" + }, +/obj/effect/mapping_helpers/airlock/access/any/admin/captain, +/turf/open/floor/iron/dark/smooth_large, +/area/centcom/central_command_areas/admin) "hHJ" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 5 @@ -20310,9 +20638,21 @@ dir = 8 }, /area/cruiser_dock) +"hQH" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L13" + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) "hVj" = ( /turf/open/floor/iron/stairs/right, /area/cruiser_dock) +"iew" = ( +/obj/structure/bed/double, +/obj/item/bedsheet/syndie/double, +/obj/item/toy/plush/pooba_bee_plush, +/turf/open/floor/carpet/orange, +/area/centcom/central_command_areas/adminroom) "ifF" = ( /obj/effect/landmark/start/assaultop, /obj/structure/chair/office/light{ @@ -20320,24 +20660,110 @@ }, /turf/open/floor/carpet/red, /area/cruiser_dock) +"ihy" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 5 + }, +/turf/open/floor/iron/dark/textured_corner{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) +"ike" = ( +/obj/machinery/status_display/evac/directional/west, +/obj/machinery/light/directional/west, +/obj/machinery/light/neon_lining{ + dir = 1; + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 9 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/textured_corner, +/area/centcom/central_command_areas/evacuation) +"ins" = ( +/obj/item/shell/server{ + name = "NT Helpdesk Backup Server Assembly" + }, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"ivR" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/fax{ + name = "Pooba's Fax Machine" + }, +/turf/open/floor/carpet/donk, +/area/centcom/central_command_areas/adminroom) +"iCr" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 4 + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) "iDX" = ( /turf/open/floor/catwalk_floor/iron_smooth, /area/cruiser_dock) +"iJG" = ( +/obj/machinery/light/floor/has_bulb, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/large, +/area/centcom/central_command_areas/hall) "iKz" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 4 }, /turf/open/floor/iron/smooth_large, /area/cruiser_dock) +"iOc" = ( +/obj/effect/turf_decal/siding/white{ + dir = 5 + }, +/obj/machinery/light/street_lamp, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"iQv" = ( +/obj/structure/flora/bush/large/style_3, +/obj/item/toy/plush/lizard_plushie, +/turf/open/floor/grass, +/area/centcom/central_command_areas/hall) "iQV" = ( /obj/machinery/light/cold/directional/east, /turf/open/floor/iron/smooth_large, /area/cruiser_dock) +"iRM" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/flora/bush/fullgrass/style_2, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) "iSx" = ( /turf/open/floor/iron/smooth_edge{ dir = 8 }, /area/cruiser_dock) +"iWt" = ( +/obj/structure/closet/secure_closet/ert_med, +/obj/item/storage/toolbox/mechanical{ + pixel_y = -3 + }, +/obj/item/mod/module/flamethrower, +/obj/structure/sign{ + name = "wall"; + icon = 'monkestation/icons/turf/walls/reinforced_wall.dmi'; + icon_state = "reinforced_wall-3"; + desc = "Effectively impervious to conventional methods of destruction."; + pixel_x = -32 + }, +/turf/open/floor/glass/reinforced/plasma, +/area/centcom/central_command_areas/adminroom) +"jbf" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/structure/flora/biolumi/mine, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) "jce" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -20348,10 +20774,30 @@ /obj/structure/marker_beacon/teal, /turf/open/misc/asteroid, /area/cruiser_dock) +"jhU" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L2" + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"jmZ" = ( +/turf/open/floor/wood/large, +/area/centcom/central_command_areas/evacuation) "jpy" = ( /obj/effect/baseturf_helper/asteroid, /turf/closed/indestructible/syndicate, /area/cruiser_dock) +"jth" = ( +/obj/machinery/light/directional/east, +/turf/open/floor/carpet/donk, +/area/centcom/central_command_areas/adminroom) +"jvd" = ( +/obj/structure/hedge, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/botany) +"jAA" = ( +/turf/open/floor/carpet/donk, +/area/centcom/central_command_areas/adminroom) "jFt" = ( /obj/structure/table/glass/plasmaglass, /obj/item/storage/box/beakers{ @@ -20366,6 +20812,73 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"jFK" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 9 + }, +/turf/open/floor/iron/dark/textured, +/area/centcom/central_command_areas/evacuation) +"jOY" = ( +/obj/machinery/ticket_machine/directional/north, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"jPc" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/obj/structure/chair/office{ + name = "gamer chair" + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) +"jUj" = ( +/obj/structure/fake_stairs/wood/directional/north, +/turf/open/misc/dirt, +/area/centcom/central_command_areas/retirement_yard) +"kch" = ( +/obj/structure/closet/cabinet{ + name = "Pooba's Storage Cabinet of Intrigue" + }, +/obj/item/toy/balloon/syndicate, +/obj/item/storage/fancy/cigarettes/cigpack_syndicate, +/obj/item/lighter/skull, +/obj/item/storage/box/donkpockets/donkpocketteriyaki, +/obj/item/radio/headset/syndicate/alt/leader, +/obj/item/clothing/under/costume/syndie_pajamas, +/obj/item/storage/backpack/duffelbag/syndie, +/turf/open/floor/carpet/orange, +/area/centcom/central_command_areas/adminroom) +"kcm" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/structure/railing/wood{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/evacuation) +"khW" = ( +/obj/machinery/light/small/maintenance/directional/west, +/obj/effect/spawner/random/trash/garbage{ + pixel_x = 5; + pixel_y = -3 + }, +/obj/effect/spawner/random/trash/garbage{ + pixel_x = -4 + }, +/obj/effect/spawner/random/trash/garbage{ + pixel_y = 9 + }, +/obj/structure/window/reinforced/tinted/spawner/directional/south, +/turf/open/floor/iron/grimy, +/area/centcom/central_command_areas/adminroom) +"kjO" = ( +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"kpH" = ( +/turf/closed/indestructible/riveted, +/area/centcom/central_command_areas/adminroom) "kqc" = ( /turf/open/floor/iron/stairs/left{ dir = 4 @@ -20378,10 +20891,32 @@ /obj/machinery/vending/tool, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"kEZ" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/structure/hedge, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/hall) +"kIi" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/obj/structure/railing/wood{ + dir = 1 + }, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) "kLl" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /turf/open/floor/iron/smooth_large, /area/cruiser_dock) +"kTQ" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/structure/railing/wood{ + dir = 8 + }, +/obj/structure/railing/wood, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/evacuation) "kUz" = ( /turf/open/floor/iron/stairs/left{ dir = 1 @@ -20392,6 +20927,34 @@ dir = 4 }, /area/cruiser_dock) +"ldR" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/mob/living/basic/cow, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) +"lhf" = ( +/obj/machinery/light/neon_lining{ + dir = 1; + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/toy/figure/captain{ + pixel_x = 3; + pixel_y = 6 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 1 + }, +/area/centcom/central_command_areas/evacuation) +"lkv" = ( +/obj/structure/flora/bush/fullgrass/style_2, +/obj/structure/flora/bush/fullgrass/style_2, +/obj/structure/flora/biolumi/flower, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) "lwC" = ( /obj/effect/turf_decal/siding/thinplating_new/dark/corner{ dir = 1 @@ -20401,10 +20964,53 @@ "lBd" = ( /turf/open/floor/iron/smooth_corner, /area/cruiser_dock) +"lCG" = ( +/obj/effect/turf_decal/siding/white, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/billboard/nanotrasen, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) +"lKm" = ( +/obj/structure/fake_stairs/wood/directional/north, +/turf/open/floor/wood/large, +/area/centcom/central_command_areas/hall) +"lMm" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/obj/structure/railing/wood, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) +"lMs" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/centcom/central_command_areas/evacuation) +"lMR" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/fax, +/turf/open/floor/circuit, +/area/centcom/central_command_areas/adminroom) "lNv" = ( /obj/machinery/chem_dispenser/fullupgrade, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"lQf" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/chair/sofa/corp/corner, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"lRs" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) "lWT" = ( /turf/open/floor/iron/smooth_edge{ dir = 1 @@ -20415,6 +21021,76 @@ /obj/machinery/light/cold/directional/east, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"mdv" = ( +/obj/machinery/door/poddoor/shutters/indestructible/preopen{ + dir = 8; + id = "donutstealthisid" + }, +/turf/open/floor/wood/large, +/area/centcom/central_command_areas/admin) +"mho" = ( +/obj/machinery/light/neon_lining{ + dir = 1; + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 9 + }, +/turf/open/floor/iron/dark/textured_corner, +/area/centcom/central_command_areas/evacuation) +"mkD" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/rock/pile/jungle/large/style_random, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) +"mCs" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/obj/structure/chair/sofa/corp, +/obj/structure/sign/poster/abductor/ayy_no/directional/north, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"mCP" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L3" + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/sunset_sarsaparilla, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"mFZ" = ( +/obj/item/chair/wood, +/obj/structure/window/reinforced/tinted/spawner/directional/south, +/turf/open/floor/iron/grimy, +/area/centcom/central_command_areas/adminroom) +"mJK" = ( +/obj/effect/turf_decal/siding/white{ + dir = 6 + }, +/obj/machinery/light/street_lamp, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"mKK" = ( +/obj/structure/table/wood, +/obj/machinery/fax, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/admin) +"mUv" = ( +/obj/effect/turf_decal/trimline/yellow/warning, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/centcom/central_command_areas/admin) +"nbv" = ( +/obj/effect/turf_decal/siding/white, +/turf/open/misc/dirt, +/area/centcom/central_command_areas/retirement_yard) "ncQ" = ( /obj/effect/turf_decal/siding/thinplating_new/dark/corner, /turf/open/floor/iron/smooth, @@ -20422,6 +21098,17 @@ "nhm" = ( /turf/open/floor/iron/stairs/medium, /area/cruiser_dock) +"nmt" = ( +/obj/structure/table/reinforced, +/obj/item/tank/jetpack/oxygen/harness{ + pixel_y = 10; + pixel_x = -2 + }, +/obj/item/gun/ballistic/automatic/plastikov{ + pixel_y = -3 + }, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/centcom/syndicate_mothership/control) "npG" = ( /obj/effect/turf_decal/box/corners{ dir = 8 @@ -20438,6 +21125,32 @@ /obj/machinery/light/cold/directional/north, /turf/open/misc/asteroid, /area/cruiser_dock) +"nwx" = ( +/obj/effect/turf_decal/siding/dark/end{ + dir = 1 + }, +/obj/machinery/button/door/directional/north{ + name = "Emergency Assistants Fuck Off Button"; + id = "donutstealthisid"; + req_access = "cent_captain" + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/admin) +"nwT" = ( +/obj/structure/railing/wood{ + dir = 1 + }, +/obj/structure/railing/wood{ + dir = 4 + }, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) +"nzM" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) "nIX" = ( /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) @@ -20468,12 +21181,53 @@ }, /turf/open/misc/asteroid, /area/cruiser_dock) +"obs" = ( +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/paper_bin{ + pixel_x = -8; + pixel_y = 5 + }, +/obj/item/paper_bin{ + pixel_x = 18; + pixel_y = 5 + }, +/obj/structure/table, +/obj/machinery/atm/directional/north, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/arcade) +"ode" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/chair/sofa/corp, +/obj/structure/sign/poster/abductor/ayy_recruitment/directional/north, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"odD" = ( +/obj/structure/railing, +/obj/structure/chair/office/tactical, +/turf/open/floor/carpet/donk, +/area/centcom/central_command_areas/adminroom) "ofy" = ( /obj/effect/turf_decal/box/corners{ dir = 4 }, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"ojs" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L12" + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/sunset_sarsaparilla{ + pixel_x = 2; + pixel_y = 5 + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) "ojQ" = ( /obj/item/trench_tool, /obj/item/tank/internals/emergency_oxygen/double, @@ -20487,10 +21241,32 @@ /obj/item/clothing/suit/armor/vest, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"okM" = ( +/obj/machinery/vending/imported, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"ooz" = ( +/obj/machinery/light/neon_lining{ + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/pizzabox/meat{ + pixel_x = 1; + pixel_y = 7 + }, +/turf/open/floor/iron/dark/textured_edge, +/area/centcom/central_command_areas/evacuation) "opw" = ( /obj/structure/closet/l3closet/security, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"ouy" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/centcom/central_command_areas/evacuation) "oxw" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/bot_white, @@ -20499,10 +21275,40 @@ }, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"oyQ" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) "oDh" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"oDI" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/centcom/central_command_areas/admin) +"oEF" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 10 + }, +/turf/open/floor/iron/dark/textured_corner{ + dir = 4 + }, +/area/centcom/central_command_areas/evacuation) +"oEQ" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/chair/sofa/corp, +/obj/structure/sign/poster/abductor/ayy_over_tizira/directional/north, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) "oHu" = ( /turf/open/floor/mineral/titanium/tiled/white, /area/cruiser_dock) @@ -20510,13 +21316,76 @@ /obj/effect/turf_decal/siding/thinplating_new/dark, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"oJx" = ( +/obj/effect/turf_decal/siding/white, +/obj/structure/flora/bush/fullgrass/style_2, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"oNH" = ( +/obj/machinery/light/neon_lining{ + dir = 1; + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/gun/ballistic/shotgun/toy/unrestricted, +/obj/item/gun/ballistic/shotgun/toy/unrestricted{ + pixel_y = 7 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 1 + }, +/area/centcom/central_command_areas/evacuation) +"oPp" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 9 + }, +/turf/open/floor/iron/dark/textured_corner, +/area/centcom/central_command_areas/evacuation) +"oZB" = ( +/obj/machinery/door/airlock/centcom{ + name = "Admin Retirement Home" + }, +/turf/open/floor/iron/dark/smooth_large, +/area/centcom/central_command_areas/retirement_yard) +"peK" = ( +/obj/structure/railing/wood{ + dir = 4 + }, +/obj/structure/railing/wood, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) "pfR" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /turf/open/misc/asteroid, /area/cruiser_dock) +"pgU" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/obj/machinery/vending/cola/blue, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) +"pkn" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 5 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/centcom/central_command_areas/admin) "plB" = ( /turf/open/floor/iron/smooth, /area/cruiser_dock) +"ppk" = ( +/obj/machinery/computer/camera_advanced{ + dir = 4 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) "prl" = ( /obj/item/mop, /obj/structure/mop_bucket, @@ -20527,6 +21396,14 @@ /obj/item/storage/box/tiziran_meats, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"pCB" = ( +/obj/structure/table/wood, +/obj/item/trash/tray, +/obj/item/trash/energybar, +/obj/structure/window/reinforced/tinted/spawner/directional/south, +/obj/structure/window/reinforced/tinted/spawner/directional/west, +/turf/open/floor/iron/grimy, +/area/centcom/central_command_areas/adminroom) "pDQ" = ( /obj/effect/landmark/start/assaultop, /obj/structure/chair/office/light{ @@ -20534,6 +21411,24 @@ }, /turf/open/floor/carpet/red, /area/cruiser_dock) +"pIi" = ( +/turf/open/floor/wood/large, +/area) +"pVf" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/structure/chair/sofa/corp, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/hall) +"pXo" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) +"pYm" = ( +/obj/structure/railing/wood{ + dir = 1 + }, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) "qaG" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -20554,6 +21449,26 @@ }, /turf/open/floor/iron/smooth, /area/cruiser_dock) +"qne" = ( +/obj/machinery/light/neon_lining{ + dir = 1; + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 1 + }, +/area/centcom/central_command_areas/evacuation) +"qqF" = ( +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 9 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/textured_corner, +/area/centcom/central_command_areas/evacuation) "qwj" = ( /turf/open/floor/iron/stairs/right{ dir = 1 @@ -20562,6 +21477,10 @@ "qwu" = ( /turf/open/floor/plating, /area/cruiser_dock) +"qze" = ( +/obj/structure/railing/wood, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) "qCL" = ( /obj/structure/closet/crate/cardboard, /obj/item/reagent_containers/cup/glass/bottle/champagne, @@ -20569,6 +21488,11 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"qGX" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/structure/chair/sofa/corp/right, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/hall) "qKe" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 6 @@ -20581,9 +21505,69 @@ dir = 8 }, /area/cruiser_dock) +"qVW" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark, +/turf/open/floor/iron/dark/textured_edge, +/area/centcom/central_command_areas/evacuation) +"qXd" = ( +/obj/machinery/button/door/directional/north{ + name = "Emergency Assistants Fuck Off Button"; + id = "donutstealthisid"; + req_access = "cent_captain" + }, +/turf/open/floor/wood/large, +/area/centcom/central_command_areas/admin) "rdl" = ( /turf/closed/indestructible/opsglass, /area/cruiser_dock) +"rnC" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/machinery/light/street_lamp, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"rsi" = ( +/obj/structure/chair/office/light, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"rtD" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark, +/obj/structure/sign/poster/contraband/random/directional/south, +/turf/open/floor/iron/dark/textured_edge, +/area/centcom/central_command_areas/evacuation) +"ruO" = ( +/obj/effect/turf_decal/siding/dark, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/machinery/button/door/directional/north{ + name = "Emergency Assistants Fuck Off Button"; + id = "donutstealthisid"; + req_access = "cent_captain" + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/admin) +"rxE" = ( +/obj/effect/turf_decal/siding/white, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"rCN" = ( +/obj/machinery/light/small/directional/west, +/obj/item/stack/cable_coil, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = -4; + pixel_y = 2 + }, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/centcom/syndicate_mothership/control) +"rGd" = ( +/obj/structure/railing/wood, +/obj/structure/railing/wood{ + dir = 4 + }, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) "rHE" = ( /obj/effect/turf_decal/box/corners{ dir = 8 @@ -20597,6 +21581,19 @@ dir = 4 }, /area/cruiser_dock) +"rLi" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 5 + }, +/turf/open/floor/iron/dark/textured_corner{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) +"rNh" = ( +/obj/structure/flora/tree/jungle/style_random, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) "rQG" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 10 @@ -20615,14 +21612,55 @@ }, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"rVD" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/effect/turf_decal/siding/white, +/obj/machinery/light/street_lamp, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) "rXO" = ( /turf/open/floor/iron/smooth_large, /area/cruiser_dock) +"rYm" = ( +/obj/machinery/telecomms/relay/preset/ruskie{ + use_power = 0 + }, +/turf/open/floor/carpet/orange, +/area/centcom/central_command_areas/adminroom) +"saC" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L1" + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) "sco" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/syndicate, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"skB" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/cocainebrick, +/obj/item/reagent_containers/cocainebrick{ + pixel_x = 6; + pixel_y = 9 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) +"skO" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 9 + }, +/obj/structure/billboard/space_cola, +/turf/open/floor/iron/dark/textured_corner, +/area/centcom/central_command_areas/evacuation) "sAG" = ( /turf/open/floor/iron/smooth_edge, /area/cruiser_dock) @@ -20632,6 +21670,17 @@ /obj/structure/sign/poster/contraband/free_drone/directional/north, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"sNq" = ( +/obj/structure/rack, +/obj/item/clothing/suit/space/hardsuit/juggernaut, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/centcom/syndicate_mothership/control) +"sOU" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/centcom/central_command_areas/evacuation) "sRv" = ( /obj/effect/turf_decal/box/corners{ dir = 1 @@ -20639,10 +21688,59 @@ /obj/structure/shipping_container/vitezstvi, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"sTV" = ( +/mob/living/basic/bot/cleanbot/medbay, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/medical) "sUM" = ( /obj/structure/chair/plastic, /turf/open/floor/iron/smooth, /area/cruiser_dock) +"sYg" = ( +/obj/machinery/light/neon_lining{ + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/pizzabox/mushroom{ + pixel_x = 4; + pixel_y = 9 + }, +/turf/open/floor/iron/dark/textured_edge, +/area/centcom/central_command_areas/evacuation) +"sYu" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 6 + }, +/obj/structure/table/wood, +/obj/machinery/fax, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/adminroom) +"tbq" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 10 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/centcom/central_command_areas/retirement_yard) +"tez" = ( +/obj/machinery/door/airlock/centcom{ + name = "Raziel's Theatre" + }, +/obj/effect/mapping_helpers/airlock/access/any/admin/captain, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"tiz" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/clothing/mask/breath/poob_mask, +/obj/machinery/light/directional/east, +/turf/open/floor/carpet/orange, +/area/centcom/central_command_areas/adminroom) +"tlQ" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/large/style_3, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) "tmF" = ( /obj/item/trench_tool, /obj/item/tank/internals/emergency_oxygen/double, @@ -20657,6 +21755,46 @@ /obj/item/clothing/suit/armor/vest, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"toM" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark/textured_edge, +/area/centcom/central_command_areas/evacuation) +"tqd" = ( +/mob/living/basic/monkey_animatronic, +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) +"tse" = ( +/obj/structure/hedge, +/obj/structure/railing/wood, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/botany) +"tsg" = ( +/obj/structure/table/reinforced/titaniumglass, +/obj/machinery/cell_charger_multi, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"tsH" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/flora/bush/fullgrass/style_2, +/obj/structure/flora/biolumi/flower, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) +"tsY" = ( +/obj/structure/table/reinforced/titaniumglass, +/obj/item/paper_bin, +/obj/item/pen/fourcolor, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"tvA" = ( +/obj/structure/flora/tree/jungle/style_random, +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) "tyZ" = ( /obj/machinery/light/cold/directional/east, /obj/effect/turf_decal/siding/thinplating_new/dark/corner{ @@ -20664,6 +21802,47 @@ }, /turf/open/floor/iron/smooth, /area/cruiser_dock) +"tzv" = ( +/obj/machinery/light/neon_lining{ + dir = 1; + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/toy/figure/clown{ + pixel_x = -5; + pixel_y = 5 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 1 + }, +/area/centcom/central_command_areas/evacuation) +"tzK" = ( +/mob/living/basic/monkey_animatronic, +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) +"tCt" = ( +/obj/machinery/light/neon_lining{ + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/toy/mecha/marauder{ + pixel_y = 9 + }, +/turf/open/floor/iron/dark/textured_edge, +/area/centcom/central_command_areas/evacuation) +"tEv" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 4 + }, +/area/centcom/central_command_areas/evacuation) "tGB" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -20677,6 +21856,34 @@ }, /turf/open/floor/iron/smooth_large, /area/cruiser_dock) +"tLg" = ( +/obj/machinery/light/neon_lining{ + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 10 + }, +/turf/open/floor/iron/dark/textured_corner{ + dir = 4 + }, +/area/centcom/central_command_areas/evacuation) +"tNY" = ( +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/turf/open/floor/carpet/donk, +/area/centcom/central_command_areas/adminroom) +"tWL" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/structure/railing/wood{ + dir = 4 + }, +/obj/structure/railing/wood{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/hall) "tWT" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -20696,11 +21903,30 @@ }, /turf/open/misc/asteroid, /area/cruiser_dock) +"uun" = ( +/obj/structure/flora/bush/large/style_3, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"uwL" = ( +/obj/machinery/light/street_lamp, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) "uAz" = ( /turf/open/floor/iron/smooth_corner{ dir = 4 }, /area/cruiser_dock) +"uDr" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L9" + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/nuka_cola{ + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) "uGL" = ( /obj/structure/reagent_dispensers/water_cooler, /obj/effect/turf_decal/bot_white, @@ -20709,11 +21935,67 @@ }, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"uIG" = ( +/obj/machinery/door/airlock/centcom{ + name = "NT Helpdesk" + }, +/obj/effect/mapping_helpers/airlock/access/any/admin/captain, +/turf/open/floor/mineral/titanium/tiled/white, +/area/centcom/central_command_areas/adminroom) +"uNf" = ( +/obj/machinery/light/neon_lining{ + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark, +/turf/open/floor/iron/dark/textured_edge, +/area/centcom/central_command_areas/evacuation) +"uOq" = ( +/obj/machinery/door/airlock/centcom{ + name = "Admin Auxillary Offices" + }, +/obj/effect/mapping_helpers/airlock/access/any/admin/captain, +/turf/open/floor/iron/dark/smooth_large, +/area/centcom/central_command_areas/admin) +"uSs" = ( +/obj/structure/statue/sandstone/venus{ + dir = 1; + name = "Honor" + }, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) "uYh" = ( /turf/open/floor/iron/stairs/right{ dir = 8 }, /area/cruiser_dock) +"uYG" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L8" + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/sunset_sarsaparilla{ + pixel_x = 6 + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"veh" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/chair/sofa/corp/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"veX" = ( +/obj/structure/railing/wood{ + dir = 4 + }, +/obj/structure/railing/wood{ + dir = 1 + }, +/turf/open/floor/glass/plasma, +/area/centcom/central_command_areas/evacuation) "vgV" = ( /obj/structure/closet/syndicate{ desc = "It's a personal storage unit for operative gear." @@ -20763,6 +22045,30 @@ }, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"voH" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) +"vrG" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/structure/railing/wood{ + dir = 1 + }, +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/evacuation) +"vtr" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/centcom/central_command_areas/evacuation) "vAz" = ( /obj/effect/turf_decal/box/corners{ dir = 4 @@ -20776,6 +22082,23 @@ }, /turf/closed/indestructible/syndicate, /area/cruiser_dock) +"vOK" = ( +/obj/machinery/light/neon_lining{ + dir = 1; + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/toy/figure/hos{ + pixel_y = 3; + pixel_x = 9 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 1 + }, +/area/centcom/central_command_areas/evacuation) "vPF" = ( /obj/structure/chair/plastic{ dir = 4 @@ -20784,12 +22107,70 @@ dir = 4 }, /area/cruiser_dock) +"vRz" = ( +/obj/effect/landmark/ctf, +/turf/open/space/basic, +/area/space) +"vZP" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/obj/machinery/vending/cola/black, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) "wcn" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/bot_white, /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"wcr" = ( +/obj/machinery/light/neon_lining{ + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/toy/nuke{ + pixel_y = 5; + pixel_x = 1 + }, +/turf/open/floor/iron/dark/textured_edge, +/area/centcom/central_command_areas/evacuation) +"wdp" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L14" + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"wkZ" = ( +/obj/machinery/light/neon_lining{ + dir = 1; + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 5 + }, +/turf/open/floor/iron/dark/textured_corner{ + dir = 8 + }, +/area/centcom/central_command_areas/evacuation) +"wmA" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L4" + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/nuka_cola{ + pixel_x = 7 + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"wul" = ( +/obj/item/storage/toolbox/syndicate, +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/centcom/syndicate_mothership/control) "wuw" = ( /obj/structure/table, /obj/effect/spawner/random/food_or_drink/donkpockets{ @@ -20805,6 +22186,11 @@ dir = 8 }, /area/cruiser_dock) +"wMv" = ( +/obj/structure/table/wood, +/obj/item/toy/plush/lizard_plushie, +/turf/open/floor/iron/grimy, +/area/centcom/central_command_areas/adminroom) "wQY" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/structure/showcase/machinery/tv{ @@ -20820,17 +22206,102 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) +"xdU" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) +"xih" = ( +/obj/structure/railing/wood{ + dir = 1 + }, +/obj/structure/railing/wood{ + dir = 4 + }, +/turf/open/floor/glass/reinforced, +/area/centcom/central_command_areas/evacuation) "xiw" = ( /obj/structure/chair/office{ dir = 8 }, /turf/open/floor/mineral/titanium/tiled/white, /area/cruiser_dock) +"xjq" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/light/street_lamp, +/turf/open/floor/grass, +/area/centcom/central_command_areas/admin) +"xkv" = ( +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/turf/open/floor/carpet/donk, +/area/centcom/central_command_areas/adminroom) +"xno" = ( +/obj/structure/window/reinforced/tinted/frosted, +/turf/open/floor/iron/dark/small, +/area/centcom/central_command_areas/adminroom) +"xrb" = ( +/obj/effect/turf_decal/trimline/green/line, +/obj/structure/railing/wood, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/botany) "xrp" = ( /obj/effect/turf_decal/siding/thinplating_new/dark, /obj/machinery/light/cold/directional/west, /turf/open/misc/asteroid, /area/cruiser_dock) +"xte" = ( +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 10 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/textured_corner{ + dir = 4 + }, +/area/centcom/central_command_areas/evacuation) +"xxA" = ( +/obj/structure/chair/sofa/corp/left{ + dir = 1 + }, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"xzi" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L6" + }, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"xDC" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/flora/bush/large/style_3, +/turf/open/floor/grass, +/area/centcom/central_command_areas/retirement_yard) +"xMe" = ( +/obj/machinery/light/neon_lining{ + dir = 1; + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted{ + pixel_x = 1; + pixel_y = 7 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 1 + }, +/area/centcom/central_command_areas/evacuation) "xPB" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/bot_white, @@ -20840,6 +22311,12 @@ /obj/machinery/door/poddoor/shutters/indestructible, /turf/open/floor/plating, /area/cruiser_dock) +"xSB" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/centcom/central_command_areas/evacuation) "xSI" = ( /obj/item/trench_tool, /obj/item/tank/internals/emergency_oxygen/double, @@ -20860,618 +22337,68 @@ /obj/item/storage/box/mothic_rations, /turf/open/floor/iron/dark/textured_large, /area/cruiser_dock) - -(1,1,1) = {" -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -agu -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(2,1,1) = {" -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aLV -aLV -aLV -aLV -aLV -aLV -aLV -aLV -aLV -aLV -aLV -aaa -"} -(3,1,1) = {" -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +"xXl" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/carpet/donk, +/area/centcom/central_command_areas/adminroom) +"yaU" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/centcom/central_command_areas/evacuation) +"ydt" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/chair/sofa/corp, +/obj/structure/sign/poster/abductor/ayy_piping/directional/north, +/turf/open/floor/iron/dark/herringbone, +/area/centcom/central_command_areas/evacuation) +"yfp" = ( +/obj/structure/railing/wood{ + dir = 1 + }, +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/glass/reinforced, +/area/centcom/central_command_areas/evacuation) +"yhF" = ( +/turf/open/floor/iron/dark/smooth_large, +/area/centcom/central_command_areas/admin) +"yhG" = ( +/obj/machinery/light/neon_lining{ + dir = 1; + icon_state = "pink2_1" + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/dualsaber/toy, +/turf/open/floor/iron/dark/textured_edge{ + dir = 1 + }, +/area/centcom/central_command_areas/evacuation) + +(1,1,1) = {" +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +agu aaa aaa aaa @@ -21586,29 +22513,6 @@ aaa aaa aaa aaa -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi aaa aaa aaa @@ -21619,35 +22523,7 @@ aaa aaa aaa aaa -aLV -aLW -aLW -aLW -aLW -aLW -aLW -aLW -aLW -aLW -aLV aaa -"} -(4,1,1) = {" -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX aaa aaa aaa @@ -21763,6 +22639,23 @@ aaa aaa aaa aaa +"} +(2,1,1) = {" +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX aaa aaa aaa @@ -21801,27 +22694,12 @@ aaa aaa aaa aaa -aOL -aOL -aOL -aOL -aOL -aOL -aOL -aOL -aOL aaa aaa aaa aaa aaa aaa -aOL -aOL -aOL -aOL -aOL -aOL aaa aaa aaa @@ -21843,29 +22721,6 @@ aaa aaa aaa aaa -aDi -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aDi aaa aaa aaa @@ -21876,35 +22731,7 @@ aaa aaa aaa aaa -aLV -aLW -azi -azi -azi -aik -azi -azi -azi -aLW -aLV aaa -"} -(5,1,1) = {" -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX aaa aaa aaa @@ -21998,38 +22825,6 @@ aaa aaa aaa aaa -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aMs -aMs -asQ -asQ -asQ -aMs -aMs -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl aaa aaa aaa @@ -22057,28 +22852,7 @@ aaa aaa aaa aaa -aOL -aOL -aku -aku -aku -aku -aku -aku -aku -aOL aaa -aOL -aOL -aOL -aOL -aOL -aOL -aPL -aPL -aPL -aPL -aOL aaa aaa aaa @@ -22100,29 +22874,6 @@ aaa aaa aaa aaa -aDi -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aDi aaa aaa aaa @@ -22134,19 +22885,19 @@ aaa aaa aaa aLV -aLW -azi -azi -azi -aik -azi -azi -azi -aLW +aLV +aLV +aLV +aLV +aLV +aLV +aLV +aLV +aLV aLV aaa "} -(6,1,1) = {" +(3,1,1) = {" afX afX afX @@ -22255,204 +23006,6 @@ aaa aaa aaa aaa -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aMs -aMs -aMs -aMs -aOv -aWD -axW -aWD -aNG -aMs -asQ -asQ -aMs -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aOL -aku -agP -abB -aiw -aDN -apO -aQR -aku -aOL -aOL -aOL -aPL -aPL -aPL -aJZ -aPL -arU -amT -aWw -aPL -aOL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aDi -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aDi -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aLV -aLW -azi -azi -azi -aik -azi -azi -azi -aLW -aLV -aaa -"} -(7,1,1) = {" -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -afX -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -22512,38 +23065,6 @@ aaa aaa aaa aaa -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aMs -aMs -aGo -afc -ajz -aQZ -aQZ -aQZ -aQZ -aQZ -aMS -aQZ -aQZ -aMs -aMs -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl aaa aaa aaa @@ -22571,38 +23092,11 @@ aaa aaa aaa aaa -aOL -aku -aNu -aqc -aqc -aqc -aqc -aqc -aku -anK -anK -anK -aPL -aKE -aoH -asf -asi -auG -amT -amT -aPL -aOL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -22615,27 +23109,27 @@ aaa aaa aaa aDi -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe -aQe +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi aDi aaa aaa @@ -22649,18 +23143,19 @@ aaa aaa aLV aLW -aik -aik -aik -aik -aik -aik -aik +aLW +aLW +aLW +aLW +aLW +aLW +aLW aLW aLV aaa "} -(8,1,1) = {" +(4,1,1) = {" +afX afX afX afX @@ -22668,7 +23163,6 @@ afX afX afX afX -ade afX afX afX @@ -22769,38 +23263,39 @@ aaa aaa aaa aaa -aCl -aCl -aCl -aCl -aCl -aCl -aMs -aMs -aUl -acZ -afc -aMs -aQZ -aQZ -aQZ -aQZ -aQZ -aMs -aQZ -aaN -aQZ -aMs -aMs -aMs -aMs -aMs -aCl -aCl -aCl -aCl -aCl -aCl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -22829,26 +23324,25 @@ aaa aaa aaa aOL -aku -aBD -aCp -aCp -aCp -aCp -aOd -aku -ark -ark -ark -aPL -avM -aUe -apE -ane -auG -auG -auG -aPL +aOL +aOL +aOL +aOL +aOL +aOL +aOL +aOL +aaa +aaa +aaa +aaa +aaa +aaa +aOL +aOL +aOL +aOL +aOL aOL aaa aaa @@ -22910,14 +23404,14 @@ azi azi azi aik -aik -aik -aik +azi +azi +azi aLW aLV aaa "} -(9,1,1) = {" +(5,1,1) = {" afX afX afX @@ -23031,30 +23525,30 @@ aCl aCl aCl aCl -aMs -aMs -afc -afc -afc -afc -aMs -aOv -aWD -aQZ -aWD -aNG -aMs -aQZ -aQZ -aQZ -aMs -aDv -aDe -aUJ +aCl +aCl +aCl +aCl +aCl +aCl aMs aMs asQ +asQ +asQ aMs +aMs +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl aCl aCl aCl @@ -23086,25 +23580,25 @@ aaa aaa aaa aOL +aOL aku -aQy -arC -aDc -avL -avu -aHg aku -ark -ark -ark +aku +aku +aku +aku +aku +aOL +aaa +aOL +aOL +aOL +aOL +aOL +aOL +aPL +aPL aPL -ajG -acX -aeO -aex -auG -amT -awg aPL aOL aaa @@ -23162,19 +23656,19 @@ aaa aaa aaa aLV -aLX +aLW azi azi azi aik -aik -aZE -afy +azi +azi +azi aLW aLV aaa "} -(10,1,1) = {" +(6,1,1) = {" afX afX afX @@ -23288,33 +23782,38 @@ aCl aCl aCl aCl +aCl +aCl +aCl aMs -aji -ayF -afc -afc -aYA aMs aMs -asQ -asQ -asQ aMs +aOv +aWD +axW +aWD +aNG aMs -afd -aaN -aQZ -aBT -aPD -aPD -atl -aJD -aQZ -aQZ +asQ +asQ aMs aCl aCl aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -23329,11 +23828,6 @@ aaa aaa aaa aaa -ayD -ayD -ayD -ayD -ayD aaa aaa aaa @@ -23344,24 +23838,24 @@ aaa aaa aOL aku -aTH -axr -aAK -aJP -aJP -azB +agP +abB +aiw +aDN +apO +aQR aku -anK -aQx -anK +aOL +aOL +aOL aPL -amz -acX -apE -avy -auG -amT +aPL +aPL +aJZ +aPL +arU amT +aWw aPL aOL aaa @@ -23424,14 +23918,14 @@ azi azi azi aik -aik -aik -aik +azi +azi +azi aLW aLV aaa "} -(11,1,1) = {" +(7,1,1) = {" afX afX afX @@ -23542,36 +24036,49 @@ aaa aaa aCl aCl +aCl +aCl +aCl +aCl +aCl aMs aMs -aMs -aMs -aUl -afc -afc +aGo afc -aRu -aMs -aGf +ajz aQZ aQZ aQZ -aeQ -aMs aQZ aQZ +aMS +aQZ aQZ -aMs -ahq -aIm -aaT -aMs -aMs -aJD -aMs aMs aMs aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -23581,19 +24088,6 @@ aaa aaa aaa aaa -ayD -ayD -ayD -ayD -ayD -ayD -aWd -aWd -aWd -ayD -ayD -ayD -ayD aaa aaa aaa @@ -23601,29 +24095,29 @@ aaa aaa aOL aku -aMw -aCr -axO -aPy -aOi -aGk +aNu +aqc +aqc +aqc +aqc +aqc aku -akd -aje -aah -auG -aXT -aqs -aHf -ahS -auG -auG +anK +anK +anK +aPL +aKE +aoH +asf +asi auG +amT +amT aPL aOL -aOL -aOL -aOL +aaa +aaa +aaa aaa aaa aaa @@ -23688,8 +24182,7 @@ aLW aLV aaa "} -(12,1,1) = {" -afX +(8,1,1) = {" afX afX afX @@ -23697,6 +24190,7 @@ afX afX afX afX +ade afX afX afX @@ -23798,22 +24292,22 @@ aaa aaa aaa aCl +aCl +aCl +aCl +aCl +aCl aMs aMs -aRs -alG -aMs -aMs -aMs -aze -aMs -aMs +aUl +acZ +afc aMs -afK aQZ aQZ aQZ -aOU +aQZ +aQZ aMs aQZ aaN @@ -23823,11 +24317,11 @@ aMs aMs aMs aMs -aQZ -aQZ -aCf -aop -aMs +aCl +aCl +aCl +aCl +aCl aCl aaa aaa @@ -23837,49 +24331,46 @@ aaa aaa aaa aaa -ayD -ayD -ajH -ajH -ajH -ayD -aWd -aWd -aIz -aWd -aWd -aWd -aWd -ayD -ayD -ayD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa aOL aku -aWn -aiJ -aiJ -aiJ -aiJ -avb -aIq -aDS -axU -aoS -aJy -aVd -aeO -acA -acA -aPu +aBD +aCp +aCp +aCp +aCp +aOd +aku +nmt +sNq +rCN +aPL +avM +aUe +apE +ane auG -axJ -aga -aIw -aIw -aZw +auG +auG +aPL aOL aaa aaa @@ -23899,6 +24390,9 @@ aaa aaa aaa aaa +aaa +aaa +aaa aDi aQe aQe @@ -23938,14 +24432,14 @@ azi azi azi aik -azi -azi -azi +aik +aik +aik aLW aLV aaa "} -(13,1,1) = {" +(9,1,1) = {" afX afX afX @@ -24055,37 +24549,55 @@ aaa aaa aaa aCl -asQ -aQZ -aQZ -aQZ -asQ -aQZ -aQZ -aQZ -amF -aON +aCl +aCl +aCl +aCl aMs +aMs +afc +afc +afc +afc +aMs +aOv +aWD aQZ -aQZ -aQZ -aQZ -aQZ -asQ +aWD +aNG +aMs aQZ aQZ aQZ aMs -aCe -aUr -aIg +aDv +aDe +aUJ aMs -aHz -aQZ -aQZ -aop -amx -aiB +aMs +asQ +aMs +aCl +aCl +aCl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -24093,50 +24605,29 @@ aaa aaa aaa aaa -ayD -ayD -ajH -ajH -aFz -ajH -ajH -aWd -aHF -axE -axE -aBd -aRw -aWd -aWd -aWd -ayD -ayD aaa aaa aOL aku -aRb -aqc -aNp -aqc -aqc -aqc -afL -aDS -axU -aoS -auG -aWz -aLr -aMT -aOY -aFC +aQy +arC +aDc +avL +avu +aHg +aku +hCF +ark +wul +aPL +ajG +acX +aeO +aex auG -aZd -aga -aIw -aIw -aZy +amT +awg +aPL aOL aaa aaa @@ -24156,6 +24647,9 @@ aaa aaa aaa aaa +aaa +aaa +aaa aDi aQe aQe @@ -24190,19 +24684,19 @@ aaa aaa aaa aLV -aLW +aLX azi azi azi aik -azi -azi -azi +aik +aZE +afy aLW aLV aaa "} -(14,1,1) = {" +(10,1,1) = {" afX afX afX @@ -24312,37 +24806,45 @@ aaa aaa aaa aCl +aCl +aCl +aCl +aCl +aMs +aji +ayF +afc +afc +aYA +aMs +aMs asQ -art -aQZ -aQZ -agb -aQZ -aQZ -aQZ -aQZ -aQZ -aEg -aQZ -aQZ -aeL -aBq -aQZ -aMS -aQZ +asQ +asQ +aMs +aMs +afd aaN aQZ -aPV -aaN -aTT -aaN -asQ -amY +aBT +aPD +aPD +atl +aJD aQZ aQZ -aop -amx -aiB +aMs +aCl +aCl +aCl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -24351,49 +24853,38 @@ aaa aaa ayD ayD -ajH -ajH -aFz -aFz -aFz -ajH -ajH -axE -aiK -aIz -axA -afx -afx -aPs -aWd -aWd -ayD ayD ayD ayD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aOL aku +aTH +axr +aAK +aJP +aJP +azB aku -aHC -atE -aSx -awi -aem -aIq -aDS -axU -alW -aNw -aNw -aNw -aNw -aNw -aNw -aNw -aNw -aNw -arJ -azl -aUd +anK +aQx +anK +aPL +amz +acX +apE +avy +auG +amT +amT +aPL aOL aaa aaa @@ -24413,6 +24904,9 @@ aaa aaa aaa aaa +aaa +aaa +aaa aDi aQe aQe @@ -24424,7 +24918,7 @@ aQe aQe aQe aQe -apW +aQe aQe aQe aQe @@ -24452,14 +24946,14 @@ azi azi azi aik -azi -azi -azi +aik +aik +aik aLW aLV aaa "} -(15,1,1) = {" +(11,1,1) = {" afX afX afX @@ -24569,37 +25063,40 @@ aaa aaa aaa aCl -asQ -aQZ -aQZ -aQZ -asQ -aQZ -aQZ -aQZ -avX -aND +aCl aMs +aMs +aMs +aMs +aUl +afc +afc +afc +aRu +aMs +aGf aQZ aQZ aQZ -aQZ -aQZ -asQ +aeQ +aMs aQZ aQZ aQZ aMs -aiQ -aUi -aXl +ahq +aIm +aaT aMs -aUO -aQZ -aQZ -aop -amx -aiB +aMs +aJD +aMs +aMs +aMs +aCl +aaa +aaa +aaa aaa aaa aaa @@ -24607,50 +25104,47 @@ aaa aaa aaa ayD -ajH -ajH -aFz -aFz -aFz -aFz -aFz -ajH -ajH -axE -axE -aBd -afx -afx -afx -aRw -aWd -aWd -aWd +ayD +ayD +ayD +ayD +ayD aWd aWd aWd +ayD +ayD +ayD +ayD +aaa +aaa +aaa +aaa +aaa +aOL aku +aMw +aCr +axO +aPy +aOi +aGk aku -aku -aku -aku -aku -aku -aQr -axU -aoa -aNw -azL -aen -aVg -adm -aGB -ack -aNw -aNw -aNw -aNw -aNw +akd +aje +aah +auG +aXT +aqs +aHf +ahS +auG +auG +auG +aPL +aOL +aOL +aOL aOL aaa aaa @@ -24705,18 +25199,18 @@ aaa aaa aLV aLW -aLW -aLW -aLW -aLW -aLW -aLW -aLW +aik +aik +aik +aik +aik +aik +aik aLW aLV aaa "} -(16,1,1) = {" +(12,1,1) = {" afX afX afX @@ -24828,16 +25322,16 @@ aaa aCl aMs aMs -aas -avv +aRs +alG aMs aMs aMs -adN +aze aMs aMs aMs -auW +afK aQZ aQZ aQZ @@ -24851,7 +25345,7 @@ aMs aMs aMs aMs -asW +aQZ aQZ aCf aop @@ -24863,51 +25357,51 @@ aaa aaa aaa aaa +aaa +aaa +ayD ayD ajH -aFz -aFz -aFz -aFz -aFz -aFz -aFz ajH ajH -axE -aBp -afx -afx -aif -afx -afx -aJS +ayD +aWd +aWd aIz -axE -aJS -aZJ -anK -akL -ahT -aSw -adr -aUM -aoD +aWd +aWd +aWd +aWd +ayD +ayD +ayD +aaa +aaa +aaa +aOL +aku +aWn +aiJ +aiJ +aiJ +aiJ +avb +aIq aDS axU aoS -akU -aWc -aIQ -aWm -atZ -abh -aqS -aqt -atV -aeH -aqW -aNw +aJy +aVd +aeO +acA +acA +aPu +auG +axJ +aga +aIw +aIw +aZw aOL aaa aaa @@ -24961,19 +25455,19 @@ aaa aaa aaa aLV -aLV -aLV -aLV -aLV -aLV -aLV -aLV -aLV -aLV +aLW +azi +azi +azi +aik +azi +azi +azi +aLW aLV aaa "} -(17,1,1) = {" +(13,1,1) = {" afX afX afX @@ -25083,37 +25577,38 @@ aaa aaa aaa aCl -aCl -aMs -aMs -aMs -aMs -aaN -aJa -aaN -azC -aow -aMs -aoI -aML -aKv +asQ aQZ aQZ -aMs aQZ +asQ aQZ aQZ +aQZ +amF +aON aMs -anH -ajo -aZK -aMs -aMs +aQZ +aQZ +aQZ +aQZ +aQZ asQ +aQZ +aQZ +aQZ aMs +aCe +aUr +aIg aMs -aMs -aCl +aHz +aQZ +aQZ +aop +amx +aiB +aaa aaa aaa aaa @@ -25121,50 +25616,49 @@ aaa aaa aaa ayD +ayD ajH ajH -ajH -ajH -akK -ajH -aFz -aFz aFz ajH +ajH +aWd +aHF axE -aBd -afx -afx -azc -aZJ -afx -axE -anD axE -anD -ayc -anK -agw -aMn -aRn -ahP -aoS -aSP +aBd +aRw +aWd +aWd +aWd +ayD +ayD +aaa +aaa +aOL +aku +aRb +aqc +aNp +aqc +aqc +aqc +afL aDS axU aoS -aNY -aeZ -aeZ -aeZ -aeZ -ahC -aIT -aWO -aNw -aps -aDH -aNw +auG +aWz +aLr +aMT +aOY +aFC +auG +aZd +aga +aIw +aIw +aZy aOL aaa aaa @@ -25217,34 +25711,35 @@ aaa aaa aaa aaa -aaa -aaa -aaa -afR -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aLV +aLW +azi +azi +azi +aik +azi +azi +azi +aLW +aLV aaa "} -(18,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +(14,1,1) = {" +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX aaa aaa aaa @@ -25286,7 +25781,6 @@ aaa aaa aaa aaa -aFi aaa aaa aaa @@ -25340,37 +25834,37 @@ aaa aaa aaa aCl -aCl -aCl -aCl -aCl -aMs -aqX -aju -aQQ -aaN -afP -aMs -aMs asQ -asQ -asQ -aMs -aMs -afd +art +aQZ +aQZ +agb +aQZ +aQZ +aQZ +aQZ +aQZ +aEg +aQZ +aQZ +aeL +aBq +aQZ +aMS +aQZ aaN aQZ -aYq -aTa -aTa -alM -aMs -aCl -aCl -aCl -aCl -aCl -aCl +aPV +aaN +aTT +aaN +asQ +amY +aQZ +aQZ +aop +amx +aiB aaa aaa aaa @@ -25378,50 +25872,50 @@ aaa aaa aaa ayD -aWd -ajH -ajH -axw -axL +ayD ajH ajH -akK +aFz +aFz +aFz ajH ajH -aog -aBd -afx +axE +aiK +aIz +axA afx afx -aif -anD -axE -afs -afs -axE -anD -anK -aMV -alx -amj -aMi -aOz -aoD +aPs +aWd +aWd +ayD +ayD +ayD +ayD +aku +aku +aHC +atE +aSx +awi +aem +aIq aDS axU -aoS -akU -aJO -aeu -aZU -agp -aJe -anz -ati -atV -aSH -aqW +alW +aNw +aNw +aNw +aNw +aNw aNw +aNw +aNw +aNw +arJ +azl +aUd aOL aaa aaa @@ -25452,7 +25946,7 @@ aQe aQe aQe aQe -aQe +apW aQe aQe aQe @@ -25474,35 +25968,35 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aLV +aLW +azi +azi +azi +aik +azi +azi +azi +aLW +aLV aaa "} -(19,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +(15,1,1) = {" +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX aaa aaa aaa @@ -25597,87 +26091,87 @@ aaa aaa aaa aCl -aCl -aCl -aCl -aCl -aMs -aMs -aEe -aaN -aJa -aaN asQ -avc -apb -asL -aOS -apb +aQZ +aQZ +aQZ asQ aQZ aQZ aQZ +avX +aND aMs -aYv -aRC -aKC +aQZ +aQZ +aQZ +aQZ +aQZ +asQ +aQZ +aQZ +aQZ aMs -aCl -aCl -aCl -aCl -aCl -aCl +aiQ +aUi +aXl +aMs +aUO +aQZ +aQZ +aop +amx +aiB +aaa aaa aaa aaa aaa aaa ayD -aWd -afx -aRw ajH -alz -aXQ -apY ajH -aiV -aUs +aFz +aFz +aFz +aFz +aFz ajH -abs +ajH +axE +axE aBd afx afx afx -axE -aeJ -axE -axE -anD -anK -anK -anK -anK -anK -anK -aGG -aGG -aGG -aVe -avd -ath +aRw +aWd +aWd +aWd +aWd +aWd +aWd +aku +aku +aku +aku +aku +aku +aku +aQr +axU +aoa +aNw +azL +aen +aVg +adm +aGB +ack +aNw +aNw +aNw aNw -agJ -adg -aDJ -agJ -afM -aSB -aYY -agM -ahJ -ahJ aNw aOL aaa @@ -25725,41 +26219,41 @@ aaa aaa aaa aaa -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -aaa -"} -(20,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa aaa aaa aaa +aLV +aLW +aLW +aLW +aLW +aLW +aLW +aLW +aLW +aLW +aLV aaa +"} +(16,1,1) = {" +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX aaa aaa aaa @@ -25854,23 +26348,23 @@ aaa aaa aaa aCl -aCl -aCl -aCl -aCl -aCl aMs aMs -aqX -aZC -aQQ -asQ -aEu -axM -aEu -aRg -aEu -asQ +aas +avv +aMs +aMs +aMs +adN +aMs +aMs +aMs +auW +aQZ +aQZ +aQZ +aOU +aMs aQZ aaN aQZ @@ -25879,62 +26373,62 @@ aMs aMs aMs aMs +asW +aQZ +aCf +aop +aMs aCl -aCl -aCl -aCl -aCl -aCl +aaa +aaa aaa aaa aaa aaa ayD -aWd -afx -aRw -afx -ajH -aVi -aAx -ajH ajH -akK +aFz +aFz +aFz +aFz +aFz +aFz +aFz ajH ajH -abs -aBd +axE +aBp afx afx aif +afx +afx +aJS +aIz axE -axE -anD -anD -aoD -aoD -anK -aMz -awn -aGT -aRI -aGG -aBL -aGG -anK -aMu +aJS +aZJ anK -aNw -avQ -adB -anE -aZh -aOT -aNk -aIP -aNw -aWM -aWM +akL +ahT +aSw +adr +aUM +aoD +aDS +axU +aoS +akU +aWc +aIQ +aWm +atZ +abh +aqS +aqt +atV +aeH +aqW aNw aOL aaa @@ -25982,41 +26476,41 @@ aaa aaa aaa aaa -ajA -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ajA -aaa -"} -(21,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa aaa aaa aaa +aLV +aLV +aLV +aLV +aLV +aLV +aLV +aLV +aLV +aLV +aLV aaa +"} +(17,1,1) = {" +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX +afX aaa aaa aaa @@ -26112,86 +26606,86 @@ aaa aaa aCl aCl -aCl -aCl -aCl -aCl -aCl aMs aMs -aEe +aMs +aMs aaN -asQ -ahk -ajq -apb -axM -apb -asQ +aJa +aaN +azC +aow +aMs +aoI +aML +aKv +aQZ +aQZ +aMs +aQZ aQZ aQZ aMs +anH +ajo +aZK +aMs +aMs +asQ +aMs +aMs aMs -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl aCl aaa aaa aaa +aaa +aaa +aaa ayD -aWd -afx -afx -aPs -afx ajH -awU -awU ajH -aWe -aWe -aWe -aWe -atG -aVq +ajH +ajH +akK +ajH +aFz +aFz +aFz +ajH +axE +aBd afx afx -aIz +azc +aZJ +afx axE +anD axE -aeJ -aoD -aoD -azb +anD +ayc anK -aei -aBc -aBc -aBc -aFw -aAu -aGG -arp -aTt -aXH -aNw -aCk -aQb -abJ -aun -adH -aUX -aAW +agw +aMn +aRn +ahP +aoS +aSP +aDS +axU +aoS +aNY +aeZ +aeZ +aeZ +aeZ +ahC +aIT +aWO aNw -atQ -atQ +aps +aDH aNw aOL aaa @@ -26239,26 +26733,7 @@ aaa aaa aaa aaa -ajA -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ajA aaa -"} -(22,1,1) = {" aaa aaa aaa @@ -26267,6 +26742,7 @@ aaa aaa aaa aaa +afR aaa aaa aaa @@ -26275,6 +26751,8 @@ aaa aaa aaa aaa +"} +(18,1,1) = {" aaa aaa aaa @@ -26330,6 +26808,22 @@ aaa aaa aaa aaa +aFi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -26372,27 +26866,27 @@ aCl aCl aCl aCl -aCl -aCl -aCl -aMs -aMs aMs +aqX +aju +aQQ +aaN +afP aMs -apb -axM -aEu -auV -akV aMs asQ asQ +asQ +aMs +aMs +afd +aaN +aQZ +aYq +aTa +aTa +alM aMs -aCl -aCl -aCl -aCl -aCl aCl aCl aCl @@ -26402,53 +26896,53 @@ aCl aaa aaa aaa +aaa +aaa +aaa ayD aWd -atP -aNM -atP -atP ajH -aqU -aef ajH -aqU -aqU -aHx -aqU -aqU -aVN +axw +axL +ajH +ajH +akK +ajH +ajH +aog +aBd afx afx afx +aif +anD axE -aqy +afs +afs axE +anD +anK +aMV +alx +amj +aMi +aOz aoD -agW -aVK -aNh -aBc -aBc -aBc -aQw -aGG -adI -aGG -asz -aTt -aoQ -aNw -aNw -aNw -aNw -aNw -aNw -aNw -aNw -aNw -azm -azm +aDS +axU +aoS +akU +aJO +aeu +aZU +agp +aJe +anz +ati +atV +aSH +aqW aNw aOL aaa @@ -26496,26 +26990,26 @@ aaa aaa aaa aaa -ajA -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ajA +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa "} -(23,1,1) = {" +(19,1,1) = {" aaa aaa aaa @@ -26629,18 +27123,26 @@ aCl aCl aCl aCl -aCl -aCl -aCl -aCl -aCl -aCl -aMs -aMs -aMs aMs aMs +aEe +aaN +aJa +aaN +asQ +avc +apb +asL +aOS +apb +asQ +aQZ +aQZ +aQZ aMs +aYv +aRC +aKC aMs aCl aCl @@ -26648,64 +27150,56 @@ aCl aCl aCl aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl -aCl +aaa +aaa +aaa aaa aaa ayD aWd -axE -aPs -aRw -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx afx +aRw +ajH +alz +aXQ +apY +ajH +aiV +aUs +ajH +abs +aBd afx afx afx +axE aeJ +axE +axE anD -aIz -aoD -aCY -aVK anK -aeb -ajx -aBc -afo +anK +anK +anK +anK +anK aGG -aSp aGG -aKL -aTt -aZW -anK -air -arN -aPN -aSn -alw -alN -aUQ -aNw -aNw +aGG +aVe +avd +ath aNw +agJ +adg +aDJ +agJ +afM +aSB +aYY +agM +ahJ +ahJ aNw aOL aaa @@ -26754,55 +27248,25 @@ aaa aaa aaa ajA -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH -ahH +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA ajA aaa "} -(24,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +(20,1,1) = {" aaa aaa aaa @@ -26911,59 +27375,89 @@ aaa aaa aaa aaa +aCl +aCl +aCl +aCl +aCl +aCl +aMs +aMs +aqX +aZC +aQQ +asQ +aEu +axM +aEu +aRg +aEu +asQ +aQZ +aaN +aQZ +aMs +aMs +aMs +aMs +aMs +aCl +aCl +aCl +aCl +aCl +aCl aaa aaa aaa aaa ayD aWd -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE afx +aRw +afx +ajH +aVi +aAx +ajH +ajH +akK +ajH +ajH +abs +aBd +afx +afx +aif axE axE +anD +anD aoD aoD -aVK -aVK -akB -aTB -aeg -aGF -aBl +anK +aMz +awn +aGT +aRI aGG -akT +aBL aGG anK -akY -anK -anK -air -avU -adX -ajT -ajT -aqC -aqC +aMu anK -aOL -aOL -aOL +aNw +avQ +adB +anE +aZh +aOT +aNk +aIP +aNw +aWM +aWM +aNw aOL aaa aaa @@ -27004,7 +27498,7 @@ aQe aQe aQe aQe -apu +aQe aDi aaa aaa @@ -27029,7 +27523,7 @@ ahH ajA aaa "} -(25,1,1) = {" +(21,1,1) = {" aaa aaa aaa @@ -27134,93 +27628,93 @@ aaa aaa aaa aaa -ask -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD +aaa +aaa +aaa +aaa +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aMs +aMs +aEe +aaN +asQ +ahk +ajq +apb +axM +apb +asQ +aQZ +aQZ +aMs +aMs +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aaa +aaa +aaa ayD +aWd +afx +afx +aPs +afx +ajH +awU +awU +ajH +aWe +aWe +aWe +aWe +atG +aVq +afx +afx +aIz axE axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -aif -axE aeJ aoD -avi -aVK -alP +aoD +azb anK -aBv -aNZ -aNZ -aBQ -aGG -aGG +aei +aBc +aBc +aBc +aFw +aAu aGG -aPF -anS -amn -anK -anK -anK -aEi -anK -anK -anK -anK -anK -aOL -aOL -aOL +arp +aTt +aXH +aNw +aCk +aQb +abJ +aun +adH +aUX +aAW +aNw +atQ +atQ +aNw aOL aaa aaa @@ -27241,27 +27735,27 @@ aaa aaa aaa aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi -aDi +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe aDi aaa aaa @@ -27286,27 +27780,7 @@ ahH ajA aaa "} -(26,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +(22,1,1) = {" aaa aaa aaa @@ -27391,94 +27865,6 @@ aaa aaa aaa aaa -ayD -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -afx -anD -axE -aoD -aFd -aVK -aVK -arv -aXJ -aXJ -aXJ -aXJ -aEF -amu -aAt -akF -akF -adp -aeM -anK -aiz -aqr -auM -aWp -apf -aDk -aoD -aCC -aGl -aOL -aOL aaa aaa aaa @@ -27503,6 +27889,90 @@ aaa aaa aaa aaa +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aMs +aMs +aMs +aMs +apb +axM +aEu +auV +akV +aMs +asQ +asQ +aMs +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aaa +aaa +aaa +ayD +aWd +atP +aNM +atP +atP +ajH +aqU +aef +ajH +aqU +aqU +aHx +aqU +aqU +aVN +afx +afx +afx +axE +aqy +axE +aoD +agW +aVK +aNh +aBc +aBc +aBc +aQw +aGG +adI +aGG +asz +aTt +aoQ +aNw +aNw +aNw +aNw +aNw +aNw +aNw +aNw +aNw +azm +azm +aNw +aOL aaa aaa aaa @@ -27521,6 +27991,30 @@ aaa aaa aaa aaa +aDi +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aDi +aaa aaa aaa aaa @@ -27543,7 +28037,9 @@ ahH ajA aaa "} -(27,1,1) = {" +(23,1,1) = {" +aaa +aaa aaa aaa aaa @@ -27648,93 +28144,91 @@ aaa aaa aaa aaa +aaa +aaa +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aMs +aMs +aMs +aMs +aMs +aMs +aMs +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aCl +aaa +aaa ayD +aWd axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE +aPs +aRw +afx +afx +afx +afx +afx +afx +afx +afx +afx +afx +afx +afx +afx +afx afx aeJ -axE +anD +aIz aoD -akD -aVK +aCY aVK -aIY -aFr -anS -anS -anS -aYh -anS -aaQ -agV -ajB -akF -are -aUP -aXd -aXd -ayW -aIu -aBc +anK +aeb +ajx aBc -aoD -avY -aCC -ajN +afo +aGG +aSp +aGG +aKL +aTt +aZW +anK +air +arN +aPN +aSn +alw +alN +aUQ +aNw +aNw +aNw +aNw aOL aaa aaa @@ -27754,29 +28248,29 @@ aaa aaa aaa aaa -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aDi +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aDi aaa aaa aaa @@ -27787,11 +28281,11 @@ ahH ahH ahH ahH -ajA -ajA -ajA -ajA -ajA +ahH +ahH +ahH +ahH +ahH ahH ahH ahH @@ -27800,7 +28294,45 @@ ahH ajA aaa "} -(28,1,1) = {" +(24,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -27906,6 +28438,7 @@ aaa aaa aaa ayD +aWd axE axE axE @@ -27923,75 +28456,36 @@ axE axE axE axE +afx axE axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -afx -aIz -anD aoD -aFd +aoD aVK aVK -arv -aby -aby -aby -aby -aEF -anS -aaQ -aaQ -aaQ -atc -apa +akB +aTB +aeg +aGF +aBl +aGG +akT +aGG +anK +akY +anK +anK +air +avU +adX +ajT +ajT +aqC +aqC anK -aap -aDf -aPP -aDf -aoP -aNn -aoD -aWA -aWA -aCI +aOL +aOL +aOL aOL aaa aaa @@ -28011,29 +28505,29 @@ aaa aaa aaa aaa -aYn -aKF -aKF -aKF -aKF -aKF -aSS -aYn -aYn -aEZ -aEZ -aEZ -aEZ -aEZ -aQM -aYn -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aDi +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +aQe +apu +aDi aaa aaa aaa @@ -28044,11 +28538,11 @@ ahH ahH ahH ahH -ajA -alS -alS -alS -ajA +ahH +ahH +ahH +ahH +ahH ahH ahH ahH @@ -28057,7 +28551,7 @@ ahH ajA aaa "} -(29,1,1) = {" +(25,1,1) = {" aaa aaa aaa @@ -28162,6 +28656,44 @@ aaa aaa aaa aaa +ask +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD ayD axE axE @@ -28181,74 +28713,36 @@ axE axE axE axE +aif axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -afx -axE -aiK -aoD +aeJ aoD -ake -asy +avi +aVK +alP anK -aru -aWL -adj -ajV +aBv +aNZ +aNZ +aBQ +aGG +aGG +aGG +aPF +anS +amn anK -aFs -awj -aeM -aeM -aQk -aQk anK anK -akz +aEi +anK anK -ayx anK anK anK -aCP -aWA -ajj +aOL +aOL +aOL aOL aaa aaa @@ -28268,29 +28762,29 @@ aaa aaa aaa aaa -aYn -aAH -aAH -aAH -aAH -aOP -aPK -aYn -aYn -aVn -aPW -aVn -aPW -aVn -azZ -aYn -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi +aDi aaa aaa aaa @@ -28301,11 +28795,11 @@ ahH ahH ahH ahH -ajA -alS -alS -alS -ajA +ahH +ahH +ahH +ahH +ahH ahH ahH ahH @@ -28314,7 +28808,7 @@ ahH ajA aaa "} -(30,1,1) = {" +(26,1,1) = {" aaa aaa aaa @@ -28477,35 +28971,35 @@ axE axE axE afx -axE anD axE aoD -ale -aQc -anK -aCX -akE -aBx -aVT -anK -ahn -aaQ -aaQ -aDK -anK -aGV -anK -aBO -axn -akm -aBU -aBO +aFd +aVK +aVK +arv +aXJ +aXJ +aXJ +aXJ +aEF +amu +aAt +akF +akF +adp +aeM anK -avY -ajj -aCI -aWA +aiz +aqr +auM +aWp +apf +aDk +aoD +aCC +aGl +aOL aOL aaa aaa @@ -28525,22 +29019,22 @@ aaa aaa aaa aaa -aYn -aOP -aAH -aAH -aAH -aOP -aPK -aYn -aYn -aVn -aPW -aVn -aPW -aVn -azZ -aYn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -28558,11 +29052,11 @@ ahH ahH ahH ahH -ajA -alS -alS -alS -ajA +ahH +ahH +ahH +ahH +ahH ahH ahH ahH @@ -28571,7 +29065,7 @@ ahH ajA aaa "} -(31,1,1) = {" +(27,1,1) = {" aaa aaa aaa @@ -28734,35 +29228,35 @@ axE axE axE afx -axE -axE aeJ +axE aoD -aGr -aFc -anK -aAg -aiE -apr -aIf -anK -aNU -aaQ +akD +aVK +aVK +aIY +aFr +anS +anS +anS +aYh +anS aaQ -adp -aPh -ayT -anK -arc -aih -akm -akc -abu -anK -aWA -aCP -aqj +agV +ajB +akF +are +aUP +aXd +aXd +ayW +aIu +aBc +aBc +aoD avY +aCC +ajN aOL aaa aaa @@ -28783,20 +29277,20 @@ aaa aaa aaa aYn -aOP -aOP -aOP -aOP -aOP -aPK aYn aYn -aVn -aPW -aVn -aPW -aVn -azZ +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn aYn aaa aaa @@ -28828,7 +29322,7 @@ ahH ajA aaa "} -(32,1,1) = {" +(28,1,1) = {" aaa aaa aaa @@ -28991,35 +29485,35 @@ axE axE axE afx -anD -axE +aIz anD aoD -aoD -aYu -anK -aFt -alR -ayZ -akH -anK -atg +aFd +aVK +aVK +arv +aby +aby +aby +aby +aEF +anS aaQ aaQ -anT -anK -aGj -anK -aYV -aAi -akm -arA -aYV +aaQ +atc +apa anK -aRP +aap +aDf +aPP +aDf +aoP +aNn +aoD aWA -avY -aCC +aWA +aCI aOL aaa aaa @@ -29040,20 +29534,20 @@ aaa aaa aaa aYn -aAH -aAH -aAH -aAH -aOP -aPK +aKF +aKF +aKF +aKF +aKF +aSS aYn aYn -aVn -aVn -aVn -aVn -aVn -azZ +aEZ +aEZ +aEZ +aEZ +aEZ +aQM aYn aaa aaa @@ -29072,11 +29566,11 @@ ahH ahH ahH ahH -ahH -ahH -ahH -ahH -ahH +ajA +alS +alS +alS +ajA ahH ahH ahH @@ -29085,7 +29579,7 @@ ahH ajA aaa "} -(33,1,1) = {" +(29,1,1) = {" aaa aaa aaa @@ -29249,35 +29743,34 @@ axE axE afx axE -aeJ -aqy -axE +aiK aoD aoD +ake +asy anK -aoD -aoD -aoD -aoD +aru +aWL +adj +ajV anK -aUE -aHh -aHh +aFs +awj +aeM +aeM +aQk aQk anK anK +akz anK -aoD -aoD +ayx anK -aoD -aoD anK anK -avY -avY -avY -aOL +aCP +aWA +ajj aOL aaa aaa @@ -29296,21 +29789,22 @@ aaa aaa aaa aaa +aaa aYn -aXD -aXD -aXD -aXD -aXD -aXs +aAH +aAH +aAH +aAH +aOP +aPK aYn aYn -aTz -aTz -aTz -aTz -aTz -azE +aVn +aPW +aVn +aPW +aVn +azZ aYn aaa aaa @@ -29329,11 +29823,11 @@ ahH ahH ahH ahH -ahH -ahH -ahH -ahH -ahH +ajA +alS +alS +alS +ajA ahH ahH ahH @@ -29342,7 +29836,7 @@ ahH ajA aaa "} -(34,1,1) = {" +(30,1,1) = {" aaa aaa aaa @@ -29508,36 +30002,32 @@ afx axE anD axE -aIz -aCJ +aoD +ale +aQc anK +aCX +akE +aBx +aVT anK -axE -aeJ -axE -aXS -aoD -aUE -aIC -aIC -aQk -aoD -aBW +ahn +aaQ +aaQ +aDK anK -aTs -aTs -aTs -aTs -aTs +aGV anK +aBO +axn +akm +aBU +aBO anK avY -avY -avY -aBG -aOL -aOL -aOL +ajj +aCI +aWA aOL aaa aaa @@ -29553,21 +30043,25 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa aYn +aOP +aAH +aAH +aAH +aOP +aPK aYn aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn +aVn +aPW +aVn +aPW +aVn +azZ aYn aaa aaa @@ -29586,11 +30080,11 @@ ahH ahH ahH ahH -ahH -ahH -ahH -ahH -ahH +ajA +alS +alS +alS +ajA ahH ahH ahH @@ -29599,7 +30093,7 @@ ahH ajA aaa "} -(35,1,1) = {" +(31,1,1) = {" aaa aaa aaa @@ -29764,38 +30258,33 @@ axE afx axE axE -aiK -axE -aCJ -axE -anD -axE -anD -aqy -axE -aoD -alb -aIC -aIC -abP +aeJ aoD -aBW -aCP -ajN -avY -apm -avY -ajj +aGr +aFc +anK +aAg +aiE +apr +aIf +anK +aNU +aaQ +aaQ +adp +aPh +ayT +anK +arc +aih +akm +akc +abu +anK aWA +aCP +aqj avY -avY -avY -avY -abc -avY -avY -avY -aOL aOL aaa aaa @@ -29810,21 +30299,26 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa +aaa aYn -azM -azM -azM -azM -azM -azs +aOP +aOP +aOP +aOP +aOP +aPK aYn aYn -aPv -aPv -aPv -aPv -aPv -aZQ +aVn +aPW +aVn +aPW +aVn +azZ aYn aaa aaa @@ -29843,11 +30337,11 @@ ahH ahH ahH ahH -ahH -ahH -ahH -ahH -ahH +ajA +ajA +ajA +ajA +ajA ahH ahH ahH @@ -29856,7 +30350,7 @@ ahH ajA aaa "} -(36,1,1) = {" +(32,1,1) = {" aaa aaa aaa @@ -30019,40 +30513,35 @@ axE axE axE afx -afx anD axE anD -aCJ -axE -axE -aXS -axE -axE -aeJ aoD -alb -aIC -aIC -abP aoD -aBW +aYu +anK +aFt +alR +ayZ +akH +anK +atg +aaQ +aaQ +anT +anK +aGj +anK +aYV +aAi +akm +arA +aYV +anK +aRP aWA -aCI -aCP -ajN -apm -avY -avY -avY -avY -avY -avY -aBG -avY -avY -avY avY +aCC aOL aaa aaa @@ -30067,21 +30556,26 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa +aaa aYn -aSe -aSi -aSe -aSe -aSe -aTc +aAH +aAH +aAH +aAH +aOP +aPK aYn aYn -aPm -aPm -aPm -aXh -aXh -aWt +aVn +aVn +aVn +aVn +aVn +azZ aYn aaa aaa @@ -30113,7 +30607,7 @@ ahH ajA aaa "} -(37,1,1) = {" +(33,1,1) = {" aaa aaa aaa @@ -30276,45 +30770,45 @@ axE axE axE afx -afx -afx -afx -afx -aCJ -aCJ -axE -axE -anD axE +aeJ +aqy axE aoD +aoD +anK +aoD +aoD +aoD +aoD +anK aUE -amO -azd +aHh +aHh aQk +anK +anK +anK aoD -aBW -avY -aCC -aWA -avY -avY -afk -avY -avY -afk -avY -avY -abV -avY +aoD +anK +aoD +aoD +anK +anK avY avY avY aOL aOL -aOL -aOL -aOL +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -30325,20 +30819,20 @@ aaa aaa aaa aYn -aSe -aSi -aSe -aSi -aSe -aTc +aXD +aXD +aXD +aXD +aXD +aXs aYn aYn -aXh -aXh -aPm -aXh -aXh -aWt +aTz +aTz +aTz +aTz +aTz +azE aYn aaa aaa @@ -30370,7 +30864,7 @@ ahH ajA aaa "} -(38,1,1) = {" +(34,1,1) = {" aaa aaa aaa @@ -30533,44 +31027,38 @@ axE axE axE afx -afx -afx -afx -afx -afx -aDz -afx axE +anD axE +aIz +aCJ +anK +anK axE -anD +aeJ +axE +aXS aoD aUE -aoV -aDI +aIC +aIC aQk aoD aBW -aWA -avY -avY -afk -avY -avY -avY -avY +anK +aTs +aTs +aTs +aTs +aTs +anK +anK avY avY avY aBG -avY -avY -avY -avY aOL aOL -axm -avY aOL aOL aaa @@ -30581,21 +31069,27 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa +aaa +aaa +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn aYn -aSe -aSi -aSe -aSi -aSe -aTc aYn aYn -aXh -aXh -aPm -aXh -aXh -aWt aYn aaa aaa @@ -30627,7 +31121,7 @@ ahH ajA aaa "} -(39,1,1) = {" +(35,1,1) = {" aaa aaa aaa @@ -30790,16 +31284,16 @@ axE axE axE afx -afx -afx -afx -afx -afx -afx -afx -afx axE axE +aiK +axE +aCJ +axE +anD +axE +anD +aqy axE aoD alb @@ -30808,28 +31302,28 @@ aIC abP aoD aBW +aCP +ajN avY +apm avY -avY -avY -ahO -anK -aiS -aiS -aiS -ahO -aiS -anK -aCB -avY +ajj +aWA avY avY avY avY +abc avY avY avY aOL +aOL +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -30839,20 +31333,20 @@ aaa aaa aaa aYn -aSe -aSe -aSe -aSi -aSe -aTc +azM +azM +azM +azM +azM +azs aYn aYn -aPm -aPm -aPm -aPm -aPm -aWt +aPv +aPv +aPv +aPv +aPv +aZQ aYn aaa aaa @@ -30866,25 +31360,25 @@ aaa aaa aaa ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA -ajA +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH ajA aaa "} -(40,1,1) = {" +(36,1,1) = {" aaa aaa aaa @@ -31046,18 +31540,18 @@ axE axE axE axE -aJS -afx -afx -afx -afx -afx -afx afx afx +anD +axE +anD +aCJ +axE axE +aXS axE axE +aeJ aoD alb aIC @@ -31065,27 +31559,22 @@ aIC abP aoD aBW +aWA +aCI +aCP +ajN +apm avY avY avY avY -aaD -auR -arT -arT -arT -arT -arT -auR -aDq -aCB avY avY -aOL +aBG +avY avY avY avY -agC aOL aaa aaa @@ -31095,39 +31584,27 @@ aaa aaa aaa aaa -aYn -aVk -aVk -aVk -aVk -aVk -aOq -aYn -aYn -aCo -aCo -aCo -aCo -aCo -aVP -aYn -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa aaa aaa +aYn +aSe +aSi +aSe +aSe +aSe +aTc +aYn +aYn +aPm +aPm +aPm +aXh +aXh +aWt +aYn aaa aaa aaa @@ -31139,9 +31616,26 @@ aaa aaa aaa aaa +ajA +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ajA aaa "} -(41,1,1) = {" +(37,1,1) = {" aaa aaa aaa @@ -31308,41 +31802,40 @@ afx afx afx afx -afx -afx -afx +aCJ +aCJ axE axE +anD axE axE aoD aUE -abt -aKW +amO +azd aQk aoD aBW avY +aCC +aWA +avY avY afk -ahO -aJx -auR -arT -arT -arT -arT -arT -auR -arT -aGw +avY +avY +afk +avY +avY +abV +avY +avY avY avY aOL aOL -avY -agC -aOe +aOL +aOL aOL aaa aaa @@ -31352,39 +31845,23 @@ aaa aaa aaa aaa +aaa aYn +aSe +aSi +aSe +aSi +aSe +aTc aYn aYn +aXh +aXh +aPm +aXh +aXh +aWt aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aYn -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -31396,9 +31873,27 @@ aaa aaa aaa aaa +ajA +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ajA aaa "} -(42,1,1) = {" +(38,1,1) = {" +aaa aaa aaa aaa @@ -31454,7 +31949,6 @@ aaa aaa aaa aaa -agt aaa aaa aaa @@ -31560,46 +32054,46 @@ axE axE axE axE -aRw -aif afx afx afx afx +afx +afx +aDz +afx axE axE axE -aCJ -axE -axE +anD aoD aUE -amO -azd +aoV +aDI aQk aoD aBW -apm +aWA avY avY -aOt -arT -auR -aAQ -aAU -aAU -aAU -asg -auR -arT -aHH +afk avY -aWA -aOL avY avY -aHs +avY +avY +avY +avY +aBG +avY +avY +avY +avY +aOL +aOL axm +avY +aOL aOL aaa aaa @@ -31609,6 +32103,22 @@ aaa aaa aaa aaa +aYn +aSe +aSi +aSe +aSi +aSe +aTc +aYn +aYn +aXh +aXh +aPm +aXh +aXh +aWt +aYn aaa aaa aaa @@ -31620,42 +32130,26 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +ajA +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ahH +ajA aaa "} -(43,1,1) = {" +(39,1,1) = {" aaa aaa aaa @@ -31817,16 +32311,16 @@ axE axE axE axE -aif afx -aPs -aif +afx +afx +afx +afx +afx +afx +afx afx axE -aIz -anD -aCJ -aCJ axE axE aoD @@ -31836,61 +32330,28 @@ aIC abP aoD aBW -ajN avY avY -aaD -arT -atO -aMq -agU -agU -agU -abT -anZ -arT -arT -asZ avY -aOL -ary +avY +ahO +anK +aiS +aiS +aiS +ahO +aiS +anK +aCB +avY +avY +avY +avY +avY +avY +avY avY aOL -aOL -aOL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -31899,6 +32360,22 @@ aaa aaa aaa aaa +aYn +aSe +aSe +aSe +aSi +aSe +aTc +aYn +aYn +aPm +aPm +aPm +aPm +aPm +aWt +aYn aaa aaa aaa @@ -31910,9 +32387,26 @@ aaa aaa aaa aaa +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA +ajA aaa "} -(44,1,1) = {" +(40,1,1) = {" aaa aaa aaa @@ -32074,18 +32568,18 @@ axE axE axE axE +aJS +afx +afx +afx +afx +afx +afx afx -aif afx -aiK -axE axE -anD axE -aCJ -anD axE -aZt aoD alb aIC @@ -32093,26 +32587,27 @@ aIC abP aoD aBW -aCI avY avY -ahf -aXm -aMq -agU -agU -agU -agU -agU -abT -aRR +avY +avY +aaD +auR arT -aGw -aCI -aOL +arT +arT +arT +arT +auR +aDq +aCB +avY +avY aOL avY avY +avY +agC aOL aaa aaa @@ -32122,23 +32617,22 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aYn +aVk +aVk +aVk +aVk +aVk +aOq +aYn +aYn +aCo +aCo +aCo +aCo +aCo +aVP +aYn aaa aaa aaa @@ -32169,7 +32663,7 @@ aaa aaa aaa "} -(45,1,1) = {" +(41,1,1) = {" aaa aaa aaa @@ -32331,63 +32825,47 @@ axE axE axE axE -aJS afx -aIz +afx +afx +afx +afx +afx +afx +afx axE -anD -aqy axE -anD -aCJ axE axE -aXS aoD aUE -aIC -aIC +abt +aKW aQk aoD aBW -anK avY avY -avY -aNA -agU -agU -agU -agU -agU -agU -agU -abR +afk +ahO +aJx +auR arT -aDy +arT +arT +arT +arT +auR +arT +aGw +avY avY -aOL aOL aOL avY +agC +aOe aOL -aOL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -32396,6 +32874,22 @@ aaa aaa aaa aaa +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn +aYn aaa aaa aaa @@ -32426,8 +32920,7 @@ aaa aaa aaa "} -(46,1,1) = {" -aaa +(42,1,1) = {" aaa aaa aaa @@ -32483,6 +32976,7 @@ aaa aaa aaa aaa +agt aaa aaa aaa @@ -32588,49 +33082,47 @@ axE axE axE axE -anK -anK -anK -anK -anK -anK +aRw +aif +afx +afx +afx +afx axE -afs -aqy -anD -anK -anK -aFs -aFs -aQO -aMr +axE +axE +aCJ +axE +axE +aoD +aUE +amO +azd aQk -anK -anK -anK -aPB +aoD +aBW +apm avY avY -aKD -axt -agU -agU -agU -agU -agU -agU -abR +aOt arT -aCB -aqj -aOL -aOL +auR +aAQ +aAU +aAU +aAU +asg +auR +arT +aHH +avY +aWA aOL avY avY +aHs +axm aOL -aOL -aaa aaa aaa aaa @@ -32638,17 +33130,19 @@ aaa aaa aaa aaa -aKH -aLt -aLt -aLt -aLt -aLt -aLt -aaa -aaa -aaa -aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -32683,7 +33177,7 @@ aaa aaa aaa "} -(47,1,1) = {" +(43,1,1) = {" aaa aaa aaa @@ -32845,47 +33339,45 @@ axE axE axE axE -aib -aXf -asN -aXv -aSg -anK -aoD -aoD +aif +afx +aPs +aif +afx +axE +aIz +anD +aCJ +aCJ +axE +axE aoD +alb +aIC +aIC +abP aoD -anK -afN -adL -aSN -arA -arA -aQF -adi -adi -aGx -avY +aBW +ajN avY avY -aKD -agU -agU -agU -agU +aaD +arT +atO +aMq agU agU agU -abR +abT +anZ arT -abd +arT +asZ avY -aRP aOL +ary avY -aEk -avY -aqb +aOL aOL aOL aaa @@ -32894,14 +33386,16 @@ aaa aaa aaa aaa -aKH -aLt -aKK -awk -aQt -aLk -acP -aMM +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -32940,7 +33434,7 @@ aaa aaa aaa "} -(48,1,1) = {" +(44,1,1) = {" aaa aaa aaa @@ -33102,48 +33596,45 @@ axE axE axE axE -aib -aXf -aXf -aXf -aSg -alB -aXO -aVC -aVC -aXO -alB -aVK -akZ -anM -arA -aCv -anK -anK -anK -anK -amS +afx +aif +afx +aiK +axE +axE +anD +axE +aCJ +anD +axE +aZt +aoD +alb +aIC +aIC +abP +aoD +aBW +aCI avY avY -aYU -aZR +ahf +aXm +aMq agU agU agU agU agU -atM -alt -aCP -aCC -avY +abT +aRR +arT +aGw aCI aOL -aEk -acO -aEk +aOL +avY avY -aHs aOL aaa aaa @@ -33151,14 +33642,17 @@ aaa aaa aaa aaa -aLt -atA -awX -aHG -aHG -aLk -acP -aKQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -33197,7 +33691,7 @@ aaa aaa aaa "} -(49,1,1) = {" +(45,1,1) = {" aaa aaa aaa @@ -33359,48 +33853,46 @@ axE axE axE axE -aib -aXf -aXf -aXf -aSg -aPd -aXO -aVC -aVC -aXO -aPd -aVK -akZ -anM -arA -aez -anK -aXM -aXM -anK +aJS +afx +aIz +axE +anD +aqy +axE +anD +aCJ +axE +axE +aXS +aoD +aUE +aIC +aIC +aQk +aoD +aBW anK -aqj avY avY -aXa -aZR +avY +aNA agU agU agU -atM -aph -aCP -ajN -aCI +agU +agU +agU +agU +abR +arT +aDy avY -ajj aOL aOL -aEk +aOL avY -agC -aOe +aOL aOL aaa aaa @@ -33408,14 +33900,16 @@ aaa aaa aaa aaa -aKH -aLt -aLt -aLJ -afW -aSC -aLt -aLt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -33454,7 +33948,7 @@ aaa aaa aaa "} -(50,1,1) = {" +(46,1,1) = {" aaa aaa aaa @@ -33616,47 +34110,46 @@ axE axE axE axE -aib -aXf -aXf -abG anK anK -aoD -aoc -apn -aoD anK -aZO -atN -aPk -arA -arA -ajF -aXM -aXM -aXM anK -aOL -aCI -aWA -aKz -aHO -akA -aQz -akA -ayy -aKz -ajj -aCI -ajN -aCP -aOL -aOL -aOL +anK +anK +axE +afs +aqy +anD +anK +anK +aFs +aFs +aQO +aMr +aQk +anK +anK +anK +aPB +avY +avY +aKD +axt +agU +agU +agU +agU +agU +agU +abR +arT +aCB +aqj aOL aOL aOL +avY +avY aOL aOL aaa @@ -33667,12 +34160,13 @@ aaa aaa aaa aaa +aKH +aLt +aLt aLt aLt -aqp aLt aLt -aaa aaa aaa aaa @@ -33711,7 +34205,7 @@ aaa aaa aaa "} -(51,1,1) = {" +(47,1,1) = {" aaa aaa aaa @@ -33875,41 +34369,45 @@ axE axE aib aXf -aXf -aXf +asN +aXv +aSg +anK +aoD +aoD +aoD aoD -aws -aVm -aAZ -aBc -ars anK -aab -aVB -aPk +afN +adL +aSN arA arA -ajF -aXM -aXM -aXM -anK -aOL +aQF +adi +adi +aGx avY -aQU -aKz -aCI -aoD -aJc -aoD -aWA -aKz -ajw -aCP -aOL -aOL -aOL +avY +avY +aKD +agU +agU +agU +agU +agU +agU +agU +abR +arT +abd +avY +aRP aOL +avY +aEk +avY +aqb aOL aOL aaa @@ -33918,25 +34416,21 @@ aaa aaa aaa aaa +aKH +aLt +aKK +awk +aQt +aLk +acP +aMM aaa aaa aaa aaa aaa aaa -afT -aLo -aLf -aSd -apV -aaa -aaa aaa -aKH -aLt -aLt -aLt -aKH aaa aaa aaa @@ -33968,7 +34462,7 @@ aaa aaa aaa "} -(52,1,1) = {" +(48,1,1) = {" aaa aaa aaa @@ -34129,40 +34623,49 @@ axE axE axE axE -aXu +axE aib aXf aXf aXf -aAq -aBc -aBc -aBc -aBc -aBc -aye +aSg +alB +aXO +aVC +aVC +aXO +alB aVK akZ anM arA -alj +aCv anK -aXM -aXM anK anK -aOL -aOL +anK +amS +avY +avY +aYU +aZR +agU +agU +agU +agU +agU +atM +alt +aCP +aCC +avY aCI -aKz -ajj -aoD -alU -aoD -aRP -aKz -aWA -ajj +aOL +aEk +acO +aEk +avY +aHs aOL aaa aaa @@ -34170,6 +34673,14 @@ aaa aaa aaa aaa +aLt +atA +awX +aHG +aHG +aLk +acP +aKQ aaa aaa aaa @@ -34181,23 +34692,6 @@ aaa aaa aaa aaa -aLt -aLt -aqp -aLt -aLt -aaa -aaa -aKH -aLt -acl -aHR -aGi -aLt -aKH -aaa -aaa -aaa aaa aaa aaa @@ -34225,7 +34719,7 @@ aaa aaa aaa "} -(53,1,1) = {" +(49,1,1) = {" aaa aaa aaa @@ -34391,35 +34885,44 @@ aib aXf aXf aXf -aAq -aOy -aJf -aBc -amE -aav -anK -ayY -aVt -aOH +aSg +aPd +aXO +aVC +aVC +aXO +aPd +aVK +akZ +anM arA -aCv -anK +aez anK +aXM +aXM anK anK +aqj +avY +avY +aXa +aZR +agU +agU +agU +atM +aph +aCP +ajN +aCI +avY +ajj aOL aOL -aOL -aOL -aKz -aWA -aoD -aJc -aoD -aql -anK -aRP -aOL +aEk +avY +agC +aOe aOL aaa aaa @@ -34427,6 +34930,15 @@ aaa aaa aaa aaa +aKH +aLt +aLt +aLJ +afW +aSC +aLt +aLt +aaa aaa aaa aaa @@ -34437,26 +34949,8 @@ aaa aaa aaa aaa -aKH -aLt -aaZ -aXj -acr -aLt aaa aaa -aLt -aVh -aLI -aCH -aCH -aPJ -aLt -aLt -aLt -aLt -aLt -aKH aaa aaa aaa @@ -34482,7 +34976,7 @@ aaa aaa aaa "} -(54,1,1) = {" +(50,1,1) = {" aaa aaa aaa @@ -34645,37 +35139,47 @@ axE axE axE aib -aYM +aXf aXf abG anK anK -anK -aPS -aht -arx -anK -anK -aUE -anK -acz -acz -anK -arS -apc -anK -anK -anK -anK -anK -anK aoD +aoc +apn aoD -aJc anK -ajj +aZO +atN +aPk +arA +arA +ajF +aXM +aXM +aXM +anK +aOL +aCI aWA -avY +aKz +aHO +akA +aQz +akA +ayy +aKz +ajj +aCI +ajN +aCP +aOL +aOL +aOL +aOL +aOL +aOL +aOL aOL aaa aaa @@ -34685,6 +35189,20 @@ aaa aaa aaa aaa +aLt +aLt +aqp +aLt +aLt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -34694,41 +35212,17 @@ aaa aaa aaa aaa -aLt -aXp -alg -aKZ -aaL -aLt -aLt aaa -aLH -aLN -aOW -ayX -ayX -aNm -aLt -aey -aLG -apH -agj -aLt -aKH aaa -aut aaa aaa aaa -aLM aaa aaa aaa -aPw aaa aaa aaa -apJ aaa aaa aaa @@ -34739,7 +35233,7 @@ aaa aaa aaa "} -(55,1,1) = {" +(51,1,1) = {" aaa aaa aaa @@ -34905,31 +35399,37 @@ aib aXf aXf aXf -aZI -ahb -anK -anK -anK +aoD +aws +aVm +aAZ +aBc +ars anK +aab +aVB +aPk +arA +arA +ajF +aXM +aXM +aXM anK -aUb -amL +aOL +avY +aQU +aKz +aCI aoD -aVK -aVK -abf -aBX -aBX -aUw -aqA -aiL -aoX -aDS -alU aJc -aJc -aJc -anK +aoD +aWA +aKz +ajw +aCP +aOL +aOL aOL aOL aOL @@ -34946,46 +35446,17 @@ aaa aaa aaa aaa +afT +aLo +aLf +aSd +apV aaa aaa aaa -aaa -aaa -aLw -aQB -aec -aAe -aHZ -aQD -aLt -aLt -aLt -aLO -aZq -aYx -aAA -aDa -aLt -aiI -aLF -aBR -aMC -aEN -aLt -aLt -aLC -aLt -aLt -aLt -aLC -aLt -aLt -aLt -aLC -aLt +aKH aLt aLt -aLC aLt aKH aaa @@ -34995,8 +35466,31 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} -(56,1,1) = {" +(52,1,1) = {" aaa aaa aaa @@ -35157,38 +35651,40 @@ axE axE axE axE -axE +aXu aib aXf aXf aXf -aSA -agh -anK -agm -azw -aGy -anK -avn -aBH -aoD -aVK +aAq +aBc +aBc +aBc +aBc +aBc +aye aVK -aKn -aUD -aDp -anL -aGE -aiL -anK -anK -anK -anK +akZ +anM +arA +alj anK +aXM +aXM anK anK aOL -aCd +aOL +aCI +aKz +ajj +aoD +alU +aoD +aRP +aKz +aWA +ajj aOL aaa aaa @@ -35207,53 +35703,51 @@ aaa aaa aaa aaa -aaa -aLw -aYi -afV -aYW -avJ -aaI aLt -apZ aLt -amB -aLj -afI -avq -aOF -aLw -awP -aud -aIv -aNI -aNI -aLw -aKP -aJE -aVv -aof -aLD -aKV -aEL -aEw -aLu -aKV -aLD -aTM -aLD -aJE -aTu +aqp +aLt aLt aaa aaa +aKH +aLt +acl +aHR +aGi +aLt +aKH +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa aaa aaa "} -(57,1,1) = {" +(53,1,1) = {" aaa aaa aaa @@ -35419,34 +35913,36 @@ aib aXf aXf aXf -aiY -acp +aAq +aOy +aJf +aBc +amE +aav +anK +ayY +aVt +aOH +arA +aCv anK -aJt -aeN -aRQ anK anK -ajy -aFs -aPQ -aVK -aKn -aai -aqk -anY -aGE -aiL -aRW anK aOL aOL aOL aOL +aKz +aWA +aoD +aJc +aoD +aql +anK +aRP aOL aOL -aCd -aOL aaa aaa aaa @@ -35463,45 +35959,43 @@ aaa aaa aaa aaa +aKH +aLt +aaZ +aXj +acr +aLt aaa aaa -aLw -aSX -ajC -aHl -aHl -aYW -agd -akr -adK -aLQ -aLQ -acj -acj -awT -aLm -aHL -aHJ -aHJ -aHJ -aHJ -aci -aQH -aWE -aWE -aLi -aLb -aLb -aWE -aWE -aLb -aLi -aLi -aLb -abN -abN -abN aLt +aVh +aLI +aCH +aCH +aPJ +aLt +aLt +aLt +aLt +aLt +aKH +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -35510,7 +36004,7 @@ aaa aaa aaa "} -(58,1,1) = {" +(54,1,1) = {" aaa aaa aaa @@ -35673,36 +36167,37 @@ axE axE axE aib +aYM aXf -aXf -aXf -aTn -ahG +abG +anK +anK +anK +aPS +aht +arx +anK +anK +aUE +anK +acz +acz +anK +arS +apc +anK +anK +anK +anK +anK anK -arO -aeN -aNe aoD -aVK -aVK -akZ -aVK -aVK -aKn -aCw -aPU -aOc -aGE -aiL -aXt +aoD +aJc anK -aOL -aCd -aCd -aOL -aCd -aOL -aOL +ajj +aWA +avY aOL aaa aaa @@ -35721,45 +36216,44 @@ aaa aaa aaa aaa -aaa -aLw -aRp -abb -aMH -afV -asm aLt -aOG +aXp +alg +aKZ +aaL aLt -aLR -aTm -aTm -aFf -ayH -aLw -aAD -aoY -adn -adn -aeR -aLw -aKO -aLA -anb -asB -azx -aZA -aLp -asB -aDA -aLA -aLp -aFE -aLp -aLB -atm aLt aaa +aLH +aLN +aOW +ayX +ayX +aNm +aLt +aey +aLG +apH +agj +aLt +aKH +aaa +aut +aaa +aaa +aaa +aLM +aaa +aaa +aaa +aPw +aaa +aaa +aaa +apJ +aaa +aaa +aaa aaa aaa aaa @@ -35767,7 +36261,7 @@ aaa aaa aaa "} -(59,1,1) = {" +(55,1,1) = {" aaa aaa aaa @@ -35933,35 +36427,35 @@ aib aXf aXf aXf -aSA -aVK +aZI +ahb anK -aLZ -aDd -aDd -aRB -aFl -aFl -akZ +anK +anK +anK +anK +aUb +amL +aoD aVK aVK -aKn -aLe -acL -aOI -aGE +abf +aBX +aBX +aUw +aqA aiL -aCK +aoX +aDS +alU +aJc +aJc +aJc anK aOL aOL aOL aOL -aOL -aOL -aOL -aaa -aaa aaa aaa aaa @@ -35980,40 +36474,40 @@ aaa aaa aaa aLw -aCT -asw -adv -aLz +aQB +aec +aAe +aHZ aQD aLt aLt aLt -aKJ -aEq -aIp -aIp -aJT +aLO +aZq +aYx +aAA +aDa aLt -aDn -aBR -aLG +aiI +aLF aBR -aRT +aMC +aEN aLt aLt -aLP +aLC aLt aLt aLt -aLP +aLC aLt aLt aLt -aLP +aLC aLt aLt aLt -aLP +aLC aLt aKH aaa @@ -36024,7 +36518,7 @@ aaa aaa aaa "} -(60,1,1) = {" +(56,1,1) = {" aaa aaa aaa @@ -36188,30 +36682,36 @@ axE axE aib aXf -aZk -ano -aiY -azg +aXf +aXf +aSA +agh anK -arO -ayB -aiP +agm +azw +aGy +anK +avn +aBH aoD aVK aVK -akZ -aVK -aVK -aDm -aBV -aBV -aBV -aSG -aSr -arK +aKn +aUD +aDp +anL +aGE +aiL +anK +anK +anK +anK +anK anK anK aOL +aCd +aOL aaa aaa aaa @@ -36230,49 +36730,43 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aLt -asF -aLn -aYH -aTb -aLt -aLt -aaa +aLw +aYi +afV +aYW +avJ +aaI aLt -aZG -aAG -aQd -aTv -aEH +apZ aLt -aLl -aLG -amU -aRJ +amB +aLj +afI +avq +aOF +aLw +awP +aud +aIv +aNI +aNI +aLw +aKP +aJE +aVv +aof +aLD +aKV +aEL +aEw +aLu +aKV +aLD +aTM +aLD +aJE +aTu aLt -aKH -aaa -agi -aaa -aaa -aaa -acJ -aaa -aaa -aaa -aKS -aaa -aaa -aaa -azr -aaa -aaa aaa aaa aaa @@ -36281,7 +36775,7 @@ aaa aaa aaa "} -(61,1,1) = {" +(57,1,1) = {" aaa aaa aaa @@ -36443,32 +36937,38 @@ axE axE axE axE +aib +aXf +aXf +aXf +aiY +acp anK +aJt +aeN +aRQ anK anK -anK -anK -anK -anK -anK -anK -anK -anK -anK -aoD -aHa -aoD +ajy +aFs +aPQ aVK -aSj -adF -alY -ajO -aKf +aKn +aai +aqk +anY +aGE aiL -ayv -aEs +aRW anK aOL +aOL +aOL +aOL +aOL +aOL +aCd +aOL aaa aaa aaa @@ -36487,49 +36987,43 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aKH -aLt -aLU -aLd -arG -aLt -aaa -aaa -aLt -aEV -aeX -amf -arz -awN -aLt -aLt -aLt -aLt +aLw +aSX +ajC +aHl +aHl +aYW +agd +akr +adK +aLQ +aLQ +acj +acj +awT +aLm +aHL +aHJ +aHJ +aHJ +aHJ +aci +aQH +aWE +aWE +aLi +aLb +aLb +aWE +aWE +aLb +aLi +aLi +aLb +abN +abN +abN aLt -aKH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -36538,7 +37032,7 @@ aaa aaa aaa "} -(62,1,1) = {" +(58,1,1) = {" aaa aaa aaa @@ -36700,32 +37194,38 @@ axE axE axE axE -anK -anK -afx -aNv -afx -aoz -anK -anK -aNv -afx -afx -aia -aoD +aib aXf -aoD -amK -aSj -aPA -aWK -aPA -aKf -abg -anK +aXf +aXf +aTn +ahG anK +arO +aeN +aNe +aoD +aVK +aVK +akZ +aVK +aVK +aKn +aCw +aPU +aOc +aGE +aiL +aXt anK aOL +aCd +aCd +aOL +aCd +aOL +aOL +aOL aaa aaa aaa @@ -36744,49 +37244,43 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aLt -aLt -age -aLt +aLw +aRp +abb +aMH +afV +asm aLt -aaa -aaa -aKH +aOG aLt -aCy -aiC -aPo +aLR +aTm +aTm +aFf +ayH +aLw +aAD +aoY +adn +adn +aeR +aLw +aKO +aLA +anb +asB +azx +aZA +aLp +asB +aDA +aLA +aLp +aFE +aLp +aLB +atm aLt -aKH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -36795,7 +37289,7 @@ aaa aaa aaa "} -(63,1,1) = {" +(59,1,1) = {" aaa aaa aaa @@ -36957,32 +37451,37 @@ axE axE axE axE -afx -aia -afx -agA -afx -afx -aia -agA -afx -afx -aKR -afx -aoD +aib aXf -aoD -anK -aoD -aer -aPz -aRl -aoD +aXf +aXf +aSA +aVK anK +aLZ +aDd +aDd +aRB +aFl +aFl +akZ +aVK +aVK +aKn +aLe +acL +aOI +aGE +aiL +aCK anK aOL aOL aOL +aOL +aOL +aOL +aOL aaa aaa aaa @@ -37002,24 +37501,42 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -afT -aLo -aRk -aSd -apV -aaa -aaa -aaa -aKH +aLw +aCT +asw +adv +aLz +aQD aLt aLt aLt +aKJ +aEq +aIp +aIp +aJT +aLt +aDn +aBR +aLG +aBR +aRT +aLt +aLt +aLP +aLt +aLt +aLt +aLP +aLt +aLt +aLt +aLP +aLt +aLt +aLt +aLP +aLt aKH aaa aaa @@ -37028,31 +37545,8 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa "} -(64,1,1) = {" +(60,1,1) = {" aaa aaa aaa @@ -37214,33 +37708,32 @@ axE axE axE axE -afx -afx -aoz -afx -aKR -afx -afx -afx -afx -afx -afx -aNv -aoD -amM -aoD -aqg -aoD -aoD -aoD -aoD +aib +aXf +aZk +ano +aiY +azg +anK +arO +ayB +aiP aoD -aia -aWd -ayD -axE -ayD -aaa +aVK +aVK +akZ +aVK +aVK +aDm +aBV +aBV +aBV +aSG +aSr +arK +anK +anK +aOL aaa aaa aaa @@ -37266,39 +37759,40 @@ aaa aaa aaa aLt -aLt -age +asF +aLn +aYH +aTb aLt aLt aaa +aLt +aZG +aAG +aQd +aTv +aEH +aLt +aLl +aLG +amU +aRJ +aLt +aKH aaa +agi aaa aaa aaa +acJ aaa aaa aaa +aKS aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +azr aaa aaa aaa @@ -37309,7 +37803,7 @@ aaa aaa aaa "} -(65,1,1) = {" +(61,1,1) = {" aaa aaa aaa @@ -37471,32 +37965,33 @@ axE axE axE axE -afx -afx -aqg -afx -afx -agA -afx -anu -aia -afx -afx -afx +anK +anK +anK +anK +anK +anK +anK +anK +anK +anK +anK +anK aoD -aXf +aHa aoD -afx -agA -afx -aia -afx -afx -aKR -aWd -ayD -axE -ayD +aVK +aSj +adF +alY +ajO +aKf +aiL +ayv +aEs +anK +aOL +aaa aaa aaa aaa @@ -37522,25 +38017,24 @@ aaa aaa aKH aLt +aLU +aLd +arG aLt -aTe -aDL -aCF -aLt -aLt -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa +aLt +aEV +aeX +amf +arz +awN +aLt +aLt +aLt +aLt +aLt +aKH aaa aaa aaa @@ -37566,7 +38060,7 @@ aaa aaa aaa "} -(66,1,1) = {" +(62,1,1) = {" aaa aaa aaa @@ -37728,35 +38222,32 @@ axE axE axE axE +anK +anK afx +aNv afx +aoz +anK +anK +aNv afx afx aia -afx -afx -afx -afx -afx -agA -aia aoD aXf aoD -aia -afx -afx -afx -aNv -afx -afx -aWd -aWd -ayD -ayD -aaa -aaa -aaa +amK +aSj +aPA +aWK +aPA +aKf +abg +anK +anK +anK +aOL aaa aaa aaa @@ -37777,22 +38268,25 @@ aaa aaa aaa aaa -aLt -afz -aza -aMX -aDL -aep -acP -aMM -aaa aaa aaa aaa aaa aaa +aLt +aLt +age +aLt +aLt aaa aaa +aKH +aLt +aCy +aiC +aPo +aLt +aKH aaa aaa aaa @@ -37823,7 +38317,7 @@ aaa aaa aaa "} -(67,1,1) = {" +(63,1,1) = {" aaa aaa aaa @@ -37986,30 +38480,31 @@ axE axE axE afx -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE +aia afx -aoD -asD -aoD +agA afx -aNv afx +aia +agA afx afx -agA +aKR afx -aia -aWd -ayD +aoD +aXf +aoD +anK +aoD +aer +aPz +aRl +aoD +anK +anK +aOL +aOL +aOL aaa aaa aaa @@ -38034,21 +38529,20 @@ aaa aaa aaa aaa -aKH -aLt -acT -aHb -aOC -aep -acP -aKQ -aaa -aaa -aaa aaa +afT +aLo +aRk +aSd +apV aaa aaa aaa +aKH +aLt +aLt +aLt +aKH aaa aaa aaa @@ -38080,7 +38574,7 @@ aaa aaa aaa "} -(68,1,1) = {" +(64,1,1) = {" aaa aaa aaa @@ -38243,30 +38737,31 @@ axE axE axE afx -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -aCL -axE -axE -axE afx -agA +aoz +afx +aKR +afx afx afx -aia afx +afx +afx +aNv +aoD +amM +aoD +aqg +aoD +aoD +aoD +aoD +aoD +aia aWd ayD +axE +ayD aaa aaa aaa @@ -38292,11 +38787,9 @@ aaa aaa aaa aaa -aKH -coC -aLt aLt aLt +age aLt aLt aaa @@ -38336,8 +38829,9 @@ aaa aaa aaa aaa +aaa "} -(69,1,1) = {" +(65,1,1) = {" aaa aaa aaa @@ -38500,29 +38994,30 @@ axE axE axE afx -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE afx +aqg +afx +afx +agA +afx +anu aia +afx +afx +afx +aoD +aXf +aoD +afx agA afx -aNv +aia afx afx +aKR +aWd +ayD +axE ayD aaa aaa @@ -38547,15 +39042,14 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aKH +aLt +aLt +aTe +aDL +aCF +aLt +aLt aaa aaa aaa @@ -38594,7 +39088,7 @@ aaa aaa aaa "} -(70,1,1) = {" +(66,1,1) = {" aaa aaa aaa @@ -38757,29 +39251,30 @@ axE axE axE afx -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE afx afx afx +aia +afx +afx +afx +afx +afx +agA +aia +aoD +aXf +aoD +aia +afx afx afx +aNv afx afx +aWd +aWd +ayD ayD aaa aaa @@ -38804,15 +39299,14 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aLt +afz +aza +aMX +aDL +aep +acP +aMM aaa aaa aaa @@ -38851,7 +39345,7 @@ aaa aaa aaa "} -(71,1,1) = {" +(67,1,1) = {" aaa aaa aaa @@ -39024,19 +39518,19 @@ axE axE axE axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE -axE afx +aoD +asD +aoD +afx +aNv +afx +afx +afx +agA +afx +aia +aWd ayD aaa aaa @@ -39062,14 +39556,14 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aKH +aLt +acT +aHb +aOC +aep +acP +aKQ aaa aaa aaa @@ -39108,7 +39602,7 @@ aaa aaa aaa "} -(72,1,1) = {" +(68,1,1) = {" aaa aaa aaa @@ -39271,13 +39765,6 @@ axE axE axE afx -afx -axE -axE -axE -axE -axE -axE axE axE axE @@ -39290,10 +39777,17 @@ axE axE axE axE +aCL axE axE axE afx +agA +afx +afx +aia +afx +aWd ayD aaa aaa @@ -39320,13 +39814,13 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aKH +coC +aLt +aLt +aLt +aLt +aLt aaa aaa aaa @@ -39365,7 +39859,7 @@ aaa aaa aaa "} -(73,1,1) = {" +(69,1,1) = {" aaa aaa aaa @@ -39528,12 +40022,6 @@ axE axE axE afx -afx -axE -axE -axE -axE -axE axE axE axE @@ -39551,6 +40039,12 @@ axE axE axE afx +aia +agA +afx +aNv +afx +afx ayD aaa aaa @@ -39622,7 +40116,7 @@ aaa aaa aaa "} -(74,1,1) = {" +(70,1,1) = {" aaa aaa aaa @@ -39785,12 +40279,6 @@ axE axE axE afx -afx -axE -axE -axE -axE -axE axE axE axE @@ -39808,6 +40296,12 @@ axE axE axE afx +afx +afx +afx +afx +afx +afx ayD aaa aaa @@ -39879,7 +40373,7 @@ aaa aaa aaa "} -(75,1,1) = {" +(71,1,1) = {" aaa aaa aaa @@ -40042,7 +40536,7 @@ axE axE axE afx -afx +axE axE axE axE @@ -40136,7 +40630,7 @@ aaa aaa aaa "} -(76,1,1) = {" +(72,1,1) = {" aaa aaa aaa @@ -40393,7 +40887,7 @@ aaa aaa aaa "} -(77,1,1) = {" +(73,1,1) = {" aaa aaa aaa @@ -40650,7 +41144,7 @@ aaa aaa aaa "} -(78,1,1) = {" +(74,1,1) = {" aaa aaa aaa @@ -40813,7 +41307,7 @@ axE axE axE afx -axE +afx axE axE axE @@ -40907,7 +41401,7 @@ aaa aaa aaa "} -(79,1,1) = {" +(75,1,1) = {" aaa aaa aaa @@ -41070,6 +41564,12 @@ axE axE axE afx +afx +axE +axE +axE +axE +axE axE axE axE @@ -41086,12 +41586,6 @@ axE axE axE axE -afx -afx -afx -afx -afx -afx afx ayD aaa @@ -41164,7 +41658,7 @@ aaa aaa aaa "} -(80,1,1) = {" +(76,1,1) = {" aaa aaa aaa @@ -41327,6 +41821,12 @@ axE axE axE afx +afx +axE +axE +axE +axE +axE axE axE axE @@ -41343,12 +41843,6 @@ axE axE axE axE -afx -afx -afx -afx -afx -afx afx ayD aaa @@ -41421,7 +41915,7 @@ aaa aaa aaa "} -(81,1,1) = {" +(77,1,1) = {" aaa aaa aaa @@ -41584,6 +42078,12 @@ axE axE axE afx +afx +axE +axE +axE +axE +axE axE axE axE @@ -41601,13 +42101,6 @@ axE axE axE afx -afx -aHV -aHV -aHV -afx -aWd -ayD ayD aaa aaa @@ -41677,8 +42170,9 @@ aaa aaa aaa aaa +aaa "} -(82,1,1) = {" +(78,1,1) = {" aaa aaa aaa @@ -41851,129 +42345,20 @@ axE axE axE axE -afx -afx -afx -afx -afx -afx -afx -afx -aHV -afx -afx -afx -aWd axE -ayD -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(83,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +afx +ayD aaa aaa aaa @@ -42040,92 +42425,11 @@ aaa aaa aaa aaa -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -axE -axE -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -aWd -aWd -aWd -ayD -ayD aaa aaa aaa +"} +(79,1,1) = {" aaa aaa aaa @@ -42191,8 +42495,6 @@ aaa aaa aaa aaa -"} -(84,1,1) = {" aaa aaa aaa @@ -42232,6 +42534,88 @@ aaa aaa aaa aaa +ayD +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +afx +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +afx +afx +afx +afx +afx +afx +afx +ayD aaa aaa aaa @@ -42301,6 +42685,8 @@ aaa aaa aaa aaa +"} +(80,1,1) = {" aaa aaa aaa @@ -42351,34 +42737,6 @@ aaa aaa aaa aaa -ayD -axE -axE -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -afx -aHV -aHV -afx -aWd -aWd -ayD -ayD -ayD aaa aaa aaa @@ -42433,6 +42791,88 @@ aaa aaa aaa aaa +ayD +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +afx +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +afx +afx +afx +afx +afx +afx +afx +ayD aaa aaa aaa @@ -42448,8 +42888,6 @@ aaa aaa aaa aaa -"} -(85,1,1) = {" aaa aaa aaa @@ -42504,6 +42942,8 @@ aaa aaa aaa aaa +"} +(81,1,1) = {" aaa aaa aaa @@ -42611,30 +43051,85 @@ aaa ayD axE axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE afx -afx -aHV -aHV -aHV -aHV -afx -afx -afx -afx -aHV -aHV +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE afx afx aHV aHV aHV -aHV -afx afx aWd -axE ayD -axE ayD aaa aaa @@ -42704,63 +43199,8 @@ aaa aaa aaa aaa -aaa "} -(86,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +(82,1,1) = {" aaa aaa aaa @@ -42868,7 +43308,71 @@ aaa ayD axE axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE afx +axE +axE +axE +axE +axE +axE +axE +axE +axE +axE afx afx afx @@ -42876,26 +43380,14 @@ afx afx afx afx -aWd -aWd -afx -afx -afx -afx -afx -afx afx +aHV afx afx afx aWd axE ayD -axE -ayD -aaa -aaa -aaa aaa aaa aaa @@ -42962,62 +43454,10 @@ aaa aaa aaa aaa -"} -(87,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa +"} +(83,1,1) = {" aaa aaa aaa @@ -43124,6 +43564,60 @@ aaa aaa ayD ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +axE axE afx afx @@ -43132,10 +43626,11 @@ afx afx afx afx -aWd -aWd -aWd -aWd +afx +afx +afx +afx +afx afx afx afx @@ -43146,8 +43641,8 @@ afx afx afx aWd -ayD -ayD +aWd +aWd ayD ayD aaa @@ -43218,10 +43713,8 @@ aaa aaa aaa aaa -aaa "} -(88,1,1) = {" -aaa +(84,1,1) = {" aaa aaa aaa @@ -43381,29 +43874,30 @@ aaa aaa aaa ayD -ayD -aWd -aWd -aWd -aWd +axE +axE +afx +afx afx afx -aWd -aWd -ayD -ayD -aWd -aWd -aWd -aWd afx afx afx afx afx +afx +afx +afx +afx +afx +afx +afx +afx +aHV +aHV +afx aWd aWd -axE ayD ayD ayD @@ -43477,9 +43971,7 @@ aaa aaa aaa "} -(89,1,1) = {" -aaa -aaa +(85,1,1) = {" aaa aaa aaa @@ -43639,29 +44131,31 @@ aaa aaa aaa ayD -ayD -ayD -ayD -aWd -aWd -aWd -aWd -ayD -aaa -aaa -ayD -ayD -ayD -aWd -aWd -aWd -aWd -aWd -aWd +axE +axE +afx +afx +aHV +aHV +aHV +aHV +afx +afx +afx +afx +aHV +aHV +afx +afx +aHV +aHV +aHV +aHV +afx +afx aWd -ayD -ayD axE +ayD axE ayD aaa @@ -43734,88 +44228,7 @@ aaa aaa aaa "} -(90,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +(86,1,1) = {" aaa aaa aaa @@ -43898,29 +44311,11 @@ aaa aaa aaa aaa -ayD -ayD -ayD -ayD -ayD -ayD aaa aaa aaa aaa aaa -ayD -ayD -ayD -ayD -ayD -ayD -ayD -ayD -axE -ayD -ayD -ayD aaa aaa aaa @@ -43990,10 +44385,36 @@ aaa aaa aaa aaa -"} -(91,1,1) = {" aaa aaa +ayD +axE +axE +afx +afx +afx +afx +afx +afx +afx +afx +aWd +aWd +afx +afx +afx +afx +afx +afx +afx +afx +afx +afx +aWd +axE +ayD +axE +ayD aaa aaa aaa @@ -44063,6 +44484,8 @@ aaa aaa aaa aaa +"} +(87,1,1) = {" aaa aaa aaa @@ -44171,13 +44594,6 @@ aaa aaa aaa aaa -ayD -ayD -ayD -ayD -ayD -ayD -ayD aaa aaa aaa @@ -44228,6 +44644,34 @@ aaa aaa aaa aaa +ayD +ayD +axE +afx +afx +afx +afx +afx +afx +afx +aWd +aWd +aWd +aWd +afx +afx +afx +afx +afx +afx +afx +afx +afx +aWd +ayD +ayD +ayD +ayD aaa aaa aaa @@ -44247,8 +44691,6 @@ aaa aaa aaa aaa -"} -(92,1,1) = {" aaa aaa aaa @@ -44299,6 +44741,8 @@ aaa aaa aaa aaa +"} +(88,1,1) = {" aaa aaa aaa @@ -44430,11 +44874,6 @@ aaa aaa aaa aaa -ayD -ayD -ayD -ayD -ayD aaa aaa aaa @@ -44463,6 +44902,33 @@ aaa aaa aaa aaa +ayD +ayD +aWd +aWd +aWd +aWd +afx +afx +aWd +aWd +ayD +ayD +aWd +aWd +aWd +aWd +afx +afx +afx +afx +afx +aWd +aWd +axE +ayD +ayD +ayD aaa aaa aaa @@ -44504,8 +44970,6 @@ aaa aaa aaa aaa -"} -(93,1,1) = {" aaa aaa aaa @@ -44534,6 +44998,8 @@ aaa aaa aaa aaa +"} +(89,1,1) = {" aaa aaa aaa @@ -44694,6 +45160,34 @@ aaa aaa aaa aaa +ayD +ayD +ayD +ayD +aWd +aWd +aWd +aWd +ayD +aaa +aaa +ayD +ayD +ayD +aWd +aWd +aWd +aWd +aWd +aWd +aWd +ayD +ayD +axE +axE +ayD +aaa +aaa aaa aaa aaa @@ -44762,7 +45256,7 @@ aaa aaa aaa "} -(94,1,1) = {" +(90,1,1) = {" aaa aaa aaa @@ -44926,9 +45420,29 @@ aaa aaa aaa aaa +ayD +ayD +ayD +ayD +ayD +ayD +aaa +aaa aaa aaa aaa +ayD +ayD +ayD +ayD +ayD +ayD +ayD +ayD +axE +ayD +ayD +ayD aaa aaa aaa @@ -44998,6 +45512,8 @@ aaa aaa aaa aaa +"} +(91,1,1) = {" aaa aaa aaa @@ -45018,8 +45534,6 @@ aaa aaa aaa aaa -"} -(95,1,1) = {" aaa aaa aaa @@ -45179,6 +45693,13 @@ aaa aaa aaa aaa +ayD +ayD +ayD +ayD +ayD +ayD +ayD aaa aaa aaa @@ -45248,6 +45769,8 @@ aaa aaa aaa aaa +"} +(92,1,1) = {" aaa aaa aaa @@ -45275,8 +45798,6 @@ aaa aaa aaa aaa -"} -(96,1,1) = {" aaa aaa aaa @@ -45431,6 +45952,11 @@ aaa aaa aaa aaa +ayD +ayD +ayD +ayD +ayD aaa aaa aaa @@ -45500,6 +46026,8 @@ aaa aaa aaa aaa +"} +(93,1,1) = {" aaa aaa aaa @@ -45532,8 +46060,6 @@ aaa aaa aaa aaa -"} -(97,1,1) = {" aaa aaa aaa @@ -45757,6 +46283,8 @@ aaa aaa aaa aaa +"} +(94,1,1) = {" aaa aaa aaa @@ -45789,8 +46317,6 @@ aaa aaa aaa aaa -"} -(98,1,1) = {" aaa aaa aaa @@ -46014,6 +46540,8 @@ aaa aaa aaa aaa +"} +(95,1,1) = {" aaa aaa aaa @@ -46046,8 +46574,6 @@ aaa aaa aaa aaa -"} -(99,1,1) = {" aaa aaa aaa @@ -46271,6 +46797,8 @@ aaa aaa aaa aaa +"} +(96,1,1) = {" aaa aaa aaa @@ -46303,8 +46831,6 @@ aaa aaa aaa aaa -"} -(100,1,1) = {" aaa aaa aaa @@ -46528,6 +47054,8 @@ aaa aaa aaa aaa +"} +(97,1,1) = {" aaa aaa aaa @@ -46560,8 +47088,6 @@ aaa aaa aaa aaa -"} -(101,1,1) = {" aaa aaa aaa @@ -46785,6 +47311,8 @@ aaa aaa aaa aaa +"} +(98,1,1) = {" aaa aaa aaa @@ -46817,8 +47345,6 @@ aaa aaa aaa aaa -"} -(102,1,1) = {" aaa aaa aaa @@ -46900,6 +47426,20 @@ aaa aaa aaa aaa +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn aaa aaa aaa @@ -47028,6 +47568,8 @@ aaa aaa aaa aaa +"} +(99,1,1) = {" aaa aaa aaa @@ -47074,8 +47616,6 @@ aaa aaa aaa aaa -"} -(103,1,1) = {" aaa aaa aaa @@ -47143,6 +47683,20 @@ aaa aaa aaa aaa +aOn +aXX +aqZ +aqZ +aqZ +aqZ +aqZ +aqZ +aqZ +afv +aqZ +aqZ +aHw +aOn aaa aaa aaa @@ -47155,6 +47709,7 @@ aaa aaa aaa aaa +aKm aaa aaa aaa @@ -47270,6 +47825,8 @@ aaa aaa aaa aaa +"} +(100,1,1) = {" aaa aaa aaa @@ -47331,8 +47888,6 @@ aaa aaa aaa aaa -"} -(104,1,1) = {" aaa aaa aaa @@ -47385,6 +47940,20 @@ aaa aaa aaa aaa +aOn +aWZ +aKx +aWT +aWT +aWT +aWT +aWT +aKx +aWZ +axa +aYb +aAw +aOn aaa aaa aaa @@ -47396,6 +47965,9 @@ aaa aaa aaa aaa +aGA +axc +aGA aaa aaa aaa @@ -47510,6 +48082,8 @@ aaa aaa aaa aaa +"} +(101,1,1) = {" aaa aaa aaa @@ -47580,16 +48154,16 @@ aaa aaa aaa aaa +aad aaa aaa aaa +avo aaa aaa aaa aaa aaa -"} -(105,1,1) = {" aaa aaa aaa @@ -47623,6 +48197,20 @@ aaa aaa aaa aaa +aOn +aWZ +aWT +akn +aGQ +aWk +aes +anU +aWT +aWZ +aUS +avs +aAw +aOn aaa aaa aaa @@ -47634,6 +48222,9 @@ aaa aaa aaa aaa +aGA +axd +aGA aaa aaa aaa @@ -47748,6 +48339,8 @@ aaa aaa aaa aaa +"} +(102,1,1) = {" aaa aaa aaa @@ -47818,10 +48411,23 @@ aaa aaa aaa aaa +aiX +ajk +ajr +aiX +ajr +ajI +aIh aaa aaa aaa aaa +aIh +aIh +aiF +aiF +aiF +aiF aaa aaa aaa @@ -47840,18 +48446,43 @@ aaa aaa aaa aaa +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +ruO +aKx +aWT +aWT +aWT +aWT +aWT +aKx +aWZ +aUS +ahj +aAw +aOn aaa aaa aaa aaa aaa -"} -(106,1,1) = {" aaa aaa aaa aaa aaa +aGA +aGA +aXy +aGA +aGA aaa aaa aaa @@ -47965,6 +48596,8 @@ aaa aaa aaa aaa +"} +(103,1,1) = {" aaa aaa aaa @@ -48035,21 +48668,63 @@ aaa aaa aaa aaa +ajb +ajl +ajs +aiX +ajs +ajJ +aZo aaa aaa aaa aaa +aIh +aOM +amG +anl +apd +aiF aaa aaa aaa aaa aaa +aiF +kpH +agn +ahs +agn +ahs +agn aaa aaa aaa aaa aaa aaa +aOn +aDs +aur +ajh +aUa +aBn +aOn +abF +aKB +alF +aqZ +aqZ +aqZ +aqZ +aqZ +aqZ +aqZ +aKM +aTZ +ahK +aAw +aOn aaa aaa aaa @@ -48060,6 +48735,11 @@ aaa aaa aaa aaa +aGA +anp +anp +anp +aGA aaa aaa aaa @@ -48102,8 +48782,6 @@ aaa aaa aaa aaa -"} -(107,1,1) = {" aaa aaa aaa @@ -48175,6 +48853,8 @@ aaa aaa aaa aaa +"} +(104,1,1) = {" aaa aaa aaa @@ -48223,12 +48903,87 @@ aaa aaa aaa aaa +kpH +kpH +kpH +kpH +kpH +kpH +kpH +aOn +aOn +aOn +aOn +aOn +kpH +kpH +kpH +kpH +kpH +kpH aaa +aiF +aiN +aiX +aiX +ajm +ajr +aiX +ajr +ajK +aIh +aIh +aIh +aIh +aiN +aiF +aGz +amH +anm +aTO +aiF aaa aaa aaa aaa aaa +aiF +agn +agn +aVY +aAo +aSo +agn +aOn +aOn +aZf +aZf +aZf +aOn +aOn +agD +auo +aSV +auo +auo +aOn +alm +aZn +aFT +aZn +aZn +aZn +ahD +ahD +ahD +ahD +aAw +aHy +ahr +aAw +aOn +aOn +aOn aaa aaa aaa @@ -48237,6 +48992,11 @@ aaa aaa aaa aaa +aGA +anp +anp +anp +aGA aaa aaa aaa @@ -48340,7 +49100,6 @@ aaa aaa aaa aaa -aKm aaa aaa aaa @@ -48351,6 +49110,8 @@ aaa aaa aaa aaa +"} +(105,1,1) = {" aaa aaa aaa @@ -48359,8 +49120,6 @@ aaa aaa aaa aaa -"} -(108,1,1) = {" aaa aaa aaa @@ -48401,7 +49160,87 @@ aaa aaa aaa aaa +kpH +flN +tsY +aAl +tsY +ppk +kpH +bVz +yhF +mUv +yhF +hpU +kpH +cQL +aaW +xkv +jAA +kpH aaa +aiF +aiO +aiO +ajc +ajn +aaF +aPC +aaj +ajL +ajc +ajc +ajc +aiO +aiO +aiX +amd +aiR +ann +ayP +aiF +aiF +aiF +aiF +aiF +aiF +aiF +agn +anW +aUV +aAo +ajU +agn +aOn +ahA +agH +anO +aDT +ahp +aOn +auo +aeB +avf +aeB +auo +aOn +aTQ +aAS +ahD +aAS +ahD +ahD +ahD +agB +aPp +ahD +aeA +aqZ +aqZ +aKo +aKB +aHw +aOn aaa aaa aaa @@ -48410,6 +49249,11 @@ aaa aaa aaa aaa +aGA +anp +anp +anp +aGA aaa aaa aaa @@ -48523,6 +49367,8 @@ aaa aaa aaa aaa +"} +(106,1,1) = {" aaa aaa aaa @@ -48571,23 +49417,87 @@ aaa aaa aaa aaa +kpH +rsi +gXN +aAl +gXN +exk +eHz +bVz +yhF +mUv +yhF +aDM +kpH +ivR +odD +aAa +xXl +kpH aaa +aiF +aHk +aHk +atf +aBg +afQ +avK +aac +arW +azS +aEE +agq +abC +abC +aiX +ame +amI +alo +anG +aiF +ayd +aGL +ajt +aFO +aTq +aiF +agn +awF +aJj +aAo +axx +agn aOn +aSD +auk +auk +auk +aRK aOn +asK aOn aOn aOn aOn aOn +aTQ +aFI +ahD +aFI +ahD +ajW +ahD +aAS +amq +aKw +aAw +aWu +aVa +aVa +aWu +aAw aOn -aOn -aOn -aOn -aOn -aOn -aOn -aaa -aaa aaa aaa aaa @@ -48597,7 +49507,9 @@ aaa aaa aaa aGA -axc +anp +anp +anp aGA aaa aaa @@ -48616,74 +49528,6 @@ aaa aaa aaa aaa -"} -(109,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -48780,6 +49624,8 @@ aaa aaa aaa aaa +"} +(107,1,1) = {" aaa aaa aaa @@ -48828,35 +49674,100 @@ aaa aaa aaa aaa +kpH +jOY +gXN +aAl +tsg +aAl +kpH +mJK +yhF +mUv +yhF +iOc +kpH +aKc +jth +tNY +jAA +kpH aaa +aiF +aDX +aGC +aJL +aKX +aCj +aGC +aNi +awd +aDE +awM +aCj +aGC +abq +aiN +azn +aiR +alo +aVw +aiF +ahz +ami +apj +anm +aXA +aiF +agn +aUV +aUV +aAo +aMR +agn aOn -aXX -aqZ -aqZ -aqZ -aqZ -aqZ -aqZ -aqZ -afv -aqZ -aqZ -aHw +aCO +auk +aJi +aRZ +ayw +aOn +arV +aOn +aYP +acW +aJK +aOn +aTQ +aFI +ahD +aFI +ahD +acs +ahD +aQL +aFm +ahD +aAw +aBe +avx +avx +avx +aAw aOn -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aGA -axd +aGA +amD +amD +aGA aGA aaa +aGA +anp +anp +anp +aGA aaa aaa aaa @@ -48873,13 +49784,6 @@ aaa aaa aaa aaa -"} -(110,1,1) = {" -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -48977,6 +49881,8 @@ aaa aaa aaa aaa +"} +(108,1,1) = {" aaa aaa aaa @@ -49025,9 +49931,100 @@ aaa aaa aaa aaa +kpH +adC +aAl +aAl +aAl +aAl +eHz +yhF +yhF +mUv +yhF +yhF +kpH +kpH +kpH +blr +kpH +kpH aaa +aiF +aac +aBJ +amy +aMd +aYt +aWh +aYt +awd +awM +awM +awM +aDE +aac +alJ +ahz +aiR +alo +ahz +alJ +ahz +aiR +aoJ +alo +aUq +aiF +aoB +aAo +aJj +aAo +aAo +aoB +aOn +awQ +auk +aJi +auk +axP +aOn +aul +aCZ +aeD +ani +aks +aOn +aTQ +aFI +ahD +aFI +ahD +atB +ahD +aAS +adk +ahD +aAw +ako +atX +atX +avx +aAw +aOn aaa +aGA +aGa +asq +ato +aZN +aGA aaa +aGA +anp +anp +anp +aGA aaa aaa aaa @@ -49086,20 +50083,6 @@ aaa aaa aaa aaa -aOn -aWZ -aKx -aWT -aWT -aWT -aWT -aWT -aKx -aWZ -axa -aYb -aAw -aOn aaa aaa aaa @@ -49109,11 +50092,6 @@ aaa aaa aaa aaa -aGA -aGA -aXy -aGA -aGA aaa aaa aaa @@ -49130,8 +50108,6 @@ aaa aaa aaa aaa -"} -(111,1,1) = {" aaa aaa aaa @@ -49162,6 +50138,8 @@ aaa aaa aaa aaa +"} +(109,1,1) = {" aaa aaa aaa @@ -49210,9 +50188,100 @@ aaa aaa aaa aaa +kpH +elw +aAl +aAl +aAl +aAl +uIG +yhF +yhF +mUv +yhF +yhF +aid +fan +ayR +ayR +fan +kpH aaa +aiF +aac +ady +ajp +aCj +aPG +aPG +aPG +aNi +awM +aFW +aEO +awM +aac +aiF +aXA +abL +alq +aQK +aiF +aos +aiR +aoJ +alo +aqn +aiF +agn +aOZ +aFU +aAo +azY +agn +aOn +aaS +auk +aJi +auk +auk +aOn +aNT +ahB +aGq +aGq +aBM +aOn +aTQ +aAS +ahD +aAS +ahD +ahD +ahD +aFJ +fYQ +ahD +aAw +aWu +aay +aay +aWu +aAw +aOn aaa +amD +aFX +asr +atp +aXr +amD aaa +aGA +anp +anp +anp +aGA aaa aaa aaa @@ -49300,11 +50369,9 @@ aaa aaa aaa aaa -aad aaa aaa aaa -avo aaa aaa aaa @@ -49328,6 +50395,8 @@ aaa aaa aaa aaa +"} +(110,1,1) = {" aaa aaa aaa @@ -49343,20 +50412,6 @@ aaa aaa aaa aaa -aOn -aWZ -aWT -akn -aGQ -aWk -aes -anU -aWT -aWZ -aUS -avs -aAw -aOn aaa aaa aaa @@ -49366,11 +50421,6 @@ aaa aaa aaa aaa -aGA -anp -anp -anp -aGA aaa aaa aaa @@ -49387,8 +50437,6 @@ aaa aaa aaa aaa -"} -(112,1,1) = {" aaa aaa aaa @@ -49397,8 +50445,100 @@ aaa aaa aaa aaa +kpH +okM +aAl +aOk +aZr +aAl +eHz +yhF +yhF +mUv +yhF +yhF +kpH +kpH +kpH +kpH +dQc +kpH aaa +aiF +aac +ady +aYk +awM +awM +awM +awM +awM +awM +aal +aTX +awM +aac +aiF +aiF +aiF +aiF +aiF +aiN +aot +amI +aoJ +ann +aqo +aiN +agn +agn +anQ +aAo +aFU +agn +aOn +auk +auk +aJi +auk +arH +aOn +aBw +aEJ +aGq +aeD +aSh +aOn +aaO +aqx +aVJ +aqx +aIB +aIB +ahD +awJ +dlh +ahD +aeA +aqZ +aqZ +aqZ +aqZ +aXU +aOn aaa +aGA +arm +ass +atq +aIr +amD +avA +aGA +anp +anp +anp +aGA aaa aaa aaa @@ -49512,6 +50652,8 @@ aaa aaa aaa aaa +"} +(111,1,1) = {" aaa aaa aaa @@ -49557,111 +50699,109 @@ aaa aaa aaa aaa -aiX -ajk -ajr -aiX -ajr -ajI -aIh aaa aaa aaa +kpH +gBq +aAl +ins +aZr +aAl +kpH +rVD +yhF +mUv +yhF +egP +kpH +rYm +hAP +ayR +ayR +kpH aaa -aIh -aIh -aiF aiF +aac +awM +awM +awM +aBz +aTk +aGP +awM +awM +amm +aUT +awM +aCj +aGC +aGC +aGC +aGC +aRD aiF +aou +aiR +aoJ +alo +aoM aiF -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +abD +agn +agn +blD +ahs +agn aOn aOn aOn +abO +eSA aOn aOn aOn aOn +auv +aOn +aOn +aOn +nwx +aqZ +aqZ +aqZ +aqZ +aqZ +aqZ +aqZ +aqZ +aqZ +aXU +aOn +aOn +aOn aOn aOn -aWZ -aKx -aWT -aWT -aWT -aWT -aWT -aKx -aWZ -aUS -ahj -aAw aOn -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aGA +arn +ast +atr +aum +amD +avB +aBS anp anp anp aGA -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(113,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +ata +aGA +atd +aGA +ata +amD aaa aaa aaa @@ -49769,6 +50909,8 @@ aaa aaa aaa aaa +"} +(112,1,1) = {" aaa aaa aaa @@ -49814,63 +50956,119 @@ aaa aaa aaa aaa -ajb -ajl -ajs -aiX -ajs -ajJ -aZo aaa aaa aaa +kpH +diV +aAl +aOk +aZr +aAl +eHz +oJx +yhF +mUv +yhF +dtE +kpH +ayR +ayR +ayR +ayR +kpH aaa -aIh -aOM -amG -anl -apd aiF +aqQ +aDE +awM +awM +awM +awM +awM +awM +awM +awM +awM +awM +awM +awM +awM +awM +aDE +afQ +alK +ahz +aoN +aiZ +alq +azh +aiF +aiF +aiF +aiF +aMc +aMc +aMc +aMc +aMc +aMc +aMc +pIi +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aOn +aaa +amD +aWY +asu +ats +aBy +amD +avC +awr +axe +awr +awx +amD +apB +apT +apT +apT +aqF +aGA aaa aaa aaa aaa aaa -aOn -aOn -agn -ahs -agn -ahs -agn -aOn aaa aaa aaa aaa aaa -aOn -aDs -aur -ajh -aUa -aBn -aOn -abF -aKB -alF -aqZ -aqZ -aqZ -aqZ -aqZ -aqZ -aqZ -aKM -aTZ -ahK -aAw -aOn aaa aaa aaa @@ -49880,11 +51078,6 @@ aaa aaa aaa aaa -aGA -anp -anp -anp -aGA aaa aaa aaa @@ -49901,8 +51094,6 @@ aaa aaa aaa aaa -"} -(114,1,1) = {" aaa aaa aaa @@ -49975,6 +51166,8 @@ aaa aaa aaa aaa +"} +(113,1,1) = {" aaa aaa aaa @@ -50023,8 +51216,106 @@ aaa aaa aaa aaa +kpH +fYP +aAl +aOk +aZr +ePC +eHz +oJx +yhF +mUv +yhF +dtE +kpH +iew +tiz +kch +hol +kpH aaa +aiF +aRi +aPG +aPG +aor +aPG +aPG +aPG +aPG +aPG +aor +aPG +aPG +aPG +aor +aPG +ayA +aPG +aXF +aiF +aov +aoO +ado +ahz +aWS +aWo +awM +aij +aak +adQ +aMc +aMc +aMc +aMc +aMc +adQ +abK +aMc +aMc +aMc +aMc +adQ +aMc +aMc +aMc +aMc +aMc +adQ +aMc +aMc +aMc +aMc +aMc +adQ +aMc +aMc +aMc +aMc +aMc +adQ +aMc +aOn aaa +aGA +anB +asu +ats +apR +auO +avD +afw +axf +afw +ayp +asd +apC +apU +apU +apU +aqG +aGA aaa aaa aaa @@ -50068,68 +51359,11 @@ aaa aaa aaa aaa -aiF -aiN -aiX -aiX -ajm -ajr -aiX -ajr -ajK -aIh -aIh -aIh -aIh -aiN -aiF -aGz -amH -anm -aTO -aiF aaa aaa aaa aaa aaa -aOn -agn -agn -aVY -aAo -aSo -agn -aOn -aOn -aZf -aZf -aZf -aOn -aOn -agD -auo -aSV -auo -auo -aOn -alm -aZn -aFT -aZn -aZn -aZn -ahD -ahD -ahD -ahD -aAw -aHy -ahr -aAw -aOn -aOn -aOn aaa aaa aaa @@ -50137,11 +51371,6 @@ aaa aaa aaa aaa -aGA -anp -anp -anp -aGA aaa aaa aaa @@ -50158,8 +51387,6 @@ aaa aaa aaa aaa -"} -(115,1,1) = {" aaa aaa aaa @@ -50196,6 +51423,8 @@ aaa aaa aaa aaa +"} +(114,1,1) = {" aaa aaa aaa @@ -50244,8 +51473,106 @@ aaa aaa aaa aaa +kpH +kpH +kpH +kpH +kpH +kpH +kpH +oJx +yhF +mUv +yhF +dtE +kpH +kpH +kpH +kpH +kpH +kpH aaa +aiF +aiF +aiN +aiF +aiF +aiF +aiF +aiF +aIh +aiF +aiF +aiF +aiN +aiF +aiF +aiF +aiF +aiF +aiF +aiF +aiN +aiF +aiF +aiF +aiF +aiF +aiF +aiF +aiF +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aMc +aOn aaa +amD +aeY +asv +att +aJl +amD +avE +awt +axg +awt +atn +amD +apD +apX +apX +apX +arb +aGA aaa aaa aaa @@ -50325,68 +51652,6 @@ aaa aaa aaa aaa -aiF -aiO -aiO -ajc -ajn -aaF -aPC -aaj -ajL -ajc -ajc -ajc -aiO -aiO -aiX -amd -aiR -ann -ayP -aiF -aiF -aiF -aiF -aiF -aiF -aiF -agn -anW -aUV -aAo -ajU -agn -aOn -ahA -agH -anO -aDT -ahp -aOn -auo -aeB -avf -aeB -auo -aOn -aTQ -aAS -ahD -aAS -ahD -ahD -ahD -agB -aPp -ahD -aeA -aqZ -aqZ -aKo -aKB -aHw -aOn aaa aaa aaa @@ -50394,11 +51659,6 @@ aaa aaa aaa aaa -aGA -anp -anp -anp -aGA aaa aaa aaa @@ -50415,13 +51675,13 @@ aaa aaa aaa aaa -"} -(116,1,1) = {" aaa aaa aaa aaa aaa +"} +(115,1,1) = {" aaa aaa aaa @@ -50476,6 +51736,17 @@ aaa aaa aaa aaa +aOn +afl +yhF +mUv +yhF +hpU +kjO +erK +erK +erK +aOn aaa aaa aaa @@ -50499,6 +51770,67 @@ aaa aaa aaa aaa +akG +atj +atj +atj +atj +kpH +kpH +kpH +kpH +kpH +kpH +kpH +kpH +aMc +aMc +aMc +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aGZ +eSA +aOn +kpH +kpH +kpH +aIW +aIS +kpH +kpH +aOn +aOn +aOn +aOn +aOn +aOn +amD +amD +amD +atu +amD +amD +amD +awu +axh +awu +amD +amD +azT +acn +agO +acn +azT +agO +agO aaa aaa aaa @@ -50582,68 +51914,6 @@ aaa aaa aaa aaa -aiF -aHk -aHk -atf -aBg -afQ -avK -aac -arW -azS -aEE -agq -abC -abC -aiX -ame -amI -alo -anG -aiF -ayd -aGL -ajt -aFO -aTq -aiF -agn -awF -aJj -aAo -axx -agn -aOn -aSD -auk -auk -auk -aRK -aOn -asK -aOn -aOn -aOn -aOn -aOn -aTQ -aFI -ahD -aFI -ahD -ajW -ahD -aAS -amq -aKw -aAw -aWu -aVa -aVa -aWu -aAw -aOn aaa aaa aaa @@ -50651,11 +51921,6 @@ aaa aaa aaa aaa -aGA -anp -anp -anp -aGA aaa aaa aaa @@ -50673,19 +51938,7 @@ aaa aaa aaa "} -(117,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +(116,1,1) = {" aaa aaa aaa @@ -50740,12 +51993,101 @@ aaa aaa aaa aaa +aOn +rxE +yhF +mUv +yhF +ase +kjO +kjO +awY +erK +aOn +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aft +aJv +atj +aXi +aTL +aQh +kpH +alc +apP +aNr +abk +ayu +aIA +kpH +aMc +aMc +aMc +aOn +api +api +api +auD +agf +aHp +aOn +aSI +aSI +api +api +aEK +kpH +aOb +aVR +atW +aHo +azt +kpH aaa aaa aaa aaa aaa aaa +amD +aBm +apR +apR +apR +aaK +amD +awv +awv +awv +amD +acx +aWN +acb +awW +atb +aaV +aho +agO aaa aaa aaa @@ -50839,80 +52181,7 @@ aaa aaa aaa aaa -aiF -aDX -aGC -aJL -aKX -aCj -aGC -aNi -awd -aDE -awM -aCj -aGC -abq -aiN -azn -aiR -alo -aVw -aiF -ahz -ami -apj -anm -aXA -aiF -agn -aUV -aUV -aAo -aMR -agn -aOn -aCO -auk -aJi -aRZ -ayw -aOn -arV -aOn -aYP -acW -aJK -aOn -aTQ -aFI -ahD -aFI -ahD -acs -ahD -aQL -aFm -ahD -aAw -aBe -avx -avx -avx -aAw -aOn aaa -aGA -aGA -amD -amD -aGA -aGA -aGA -anp -anp -anp -aGA aaa aaa aaa @@ -50925,12 +52194,12 @@ aaa aaa aaa aaa +"} +(117,1,1) = {" aaa aaa aaa aaa -"} -(118,1,1) = {" aaa aaa aaa @@ -50981,12 +52250,101 @@ aaa aaa aaa aaa +aOn +rxE +yhF +mUv +yhF +ase +kjO +kjO +kjO +erK +aOn +afC +afC +aCV +cxr +cxr +aYB +aYB +aYB +aYB +lkv +aYB +aCV +afC +aYB +aYB +lkv +afC +aCV +aYB +aYB +aYB +aGD +afC +aJv +atj +aya +aUo +aTA +eHz +aZe +aZT +aeh +avZ +aFp +aCb +kpH +aMc +aMc +aMc +eSA +api +api +aXN +aeU +api +api +aZf +api +api +api +api +api +kpH +apk +ajP +aJp +aZx +aId +kpH aaa aaa aaa aaa aaa aaa +amD +aau +apR +adx +apR +add +amD +aWQ +axh +aWQ +amD +ahy +aeF +aeF +aeF +aeF +aeF +adb +agO aaa aaa aaa @@ -51093,83 +52451,12 @@ aaa aaa aaa aaa +"} +(118,1,1) = {" aaa aaa aaa -aiF -aac -aBJ -amy -aMd -aYt -aWh -aYt -awd -awM -awM -awM -aDE -aac -alJ -ahz -aiR -alo -ahz -alJ -ahz -aiR -aoJ -alo -aUq -aiF -aoB -aAo -aJj -aAo -aAo -aoB -aOn -awQ -auk -aJi -auk -axP -aOn -aul -aCZ -aeD -ani -aks -aOn -aTQ -aFI -ahD -aFI -ahD -atB -ahD -aAS -adk -ahD -aAw -ako -atX -atX -avx -aAw -aOn aaa -aGA -aGa -asq -ato -aZN -aGA -aBS -anp -anp -anp -aGA aaa aaa aaa @@ -51186,8 +52473,6 @@ aaa aaa aaa aaa -"} -(119,1,1) = {" aaa aaa aaa @@ -51222,11 +52507,101 @@ aaa aaa aaa aaa +aOn +hpt +yhF +mUv +yhF +iOc +cQz +cQz +cQz +rnC +aOn +acd +acd +bjH +dwU +cSL +cSL +azQ +hxZ +azQ +azQ +bjH +acd +aVc +ffV +azQ +azQ +azQ +bjH +jbf +azQ +azQ +azQ +acd +aJv +atj +aNl +aMU +ahU +kpH +ald +aPf +auB +abW +ahu +asU +aSm +aMc +adQ +aMc +aCS +api +api +aXN +aNK +aJC +api +aZf +api +ahw +ahw +api +api +kpH +aCn +aig +aXn +aDw +aGe +kpH aaa aaa aaa aaa aaa +amD +amD +amD +amD +amD +amD +aqR +amD +aww +axi +awz +aqR +aNQ +aeF +ahx +aTE +aVL +aeF +abU +aMY aaa aaa aaa @@ -51333,6 +52708,8 @@ aaa aaa aaa aaa +"} +(119,1,1) = {" aaa aaa aaa @@ -51353,80 +52730,7 @@ aaa aaa aaa aaa -aiF -aac -ady -ajp -aCj -aPG -aPG -aPG -aNi -awM -aFW -aEO -awM -aac -aiF -aXA -abL -alq -aQK -aiF -aos -aiR -aoJ -alo -aqn -aiF -agn -aOZ -aFU -aAo -azY -agn -aOn -aaS -auk -aJi -auk -auk -aOn -aNT -ahB -aGq -aGq -aBM -aOn -aTQ -aAS -ahD -aAS -ahD -ahD -ahD -aFJ -awo -ahD -aAw -aWu -aay -aay -aWu -aAw -aOn aaa -amD -aFX -asr -atp -aXr -amD -aBS -anp -anp -anp -aGA aaa aaa aaa @@ -51443,8 +52747,6 @@ aaa aaa aaa aaa -"} -(120,1,1) = {" aaa aaa aaa @@ -51462,11 +52764,101 @@ aaa aaa aaa aaa +aOn +rxE +yhF +mUv +yhF +yhF +yhF +yhF +yhF +yhF +uOq +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aJv +atj +aoj +apL +anq +azj +eEo +aYc +aRd +aYs +aSU +aCb +kpH +aMc +aMc +aMc +aOn +api +api +api +api +api +api +aZf +alQ +aeU +aNK +api +api +kpH +azy +axC +aCU +aiD +aOR +kpH aaa aaa aaa aaa aaa +amD +aTd +aTd +aTd +aTd +aTd +aTd +amD +ass +axj +afa +amD +aTj +aeF +aPX +aKe +aeV +aeF +agF +agO aaa aaa aaa @@ -51573,6 +52965,25 @@ aaa aaa aaa aaa +"} +(120,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -51610,81 +53021,108 @@ aaa aaa aaa aaa -aiF -aac -ady -aYk -awM -awM -awM -awM -awM -awM -aal -aTX -awM -aac -aiF -aiF -aiF -auH -aiF -aiN -aot -amI -aoJ -ann -aqo -aiN -agn -agn -anQ -aAo -aFU -agn aOn -auk -auk -aJi -auk -arH +rxE +yhF +pkn +oDI +oDI +oDI +oDI +oDI +oDI aOn -aBw -aEJ -aGq -aeD -aSh +bTx +bTx +bTx +bTx +bTx +bTx +bTx +bTx +bTx +awb +bTx +awb +bTx +awb +bTx +awb +awb +awb +bTx +awb +awb +tbq +aYr +aJv +atj +aVQ +aTL +axX +kpH +alO +aZa +aYo +apl +adV +aWX +kpH +qXd +aMc +aMc aOn -aaO -aqx -aVJ -aqx -aIB -aIB -ahD -awJ -aUu -ahD -aeA -aqZ -aqZ -aqZ -aqZ -aXU +aEK +api +aSI +aSI +mKK +aLy aOn +aqa +app +api +api +mKK +kpH +aEA +cDd +aCs +aiD +aHQ +kpH +aaa +aaa +aaa +aaa aaa -aGA -arm -ass -atq -aIr amD -avA -anp -anp -anp -ayn +aTd +aTd +aTd +aTd +aTd +aTd amD +ass +afw +atr +agS +avm +aWR +aRH +aWR +ahe +aWR +aty +agO +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -51700,8 +53138,6 @@ aaa aaa aaa aaa -"} -(121,1,1) = {" aaa aaa aaa @@ -51786,6 +53222,8 @@ aaa aaa aaa aaa +"} +(121,1,1) = {" aaa aaa aaa @@ -51840,6 +53278,102 @@ aaa aaa aaa aaa +aOn +oJx +yhF +yhF +yhF +yhF +yhF +yhF +yhF +yhF +hGa +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +aYr +acv +aYr +aft +atj +atj +atj +atj +kpH +kpH +kpH +kpH +kpH +kpH +kpH +kpH +aMc +aMc +aMc +kpH +kpH +kpH +kpH +kpH +kpH +kpH +kpH +aTx +api +api +api +aLy +kpH +aDt +aSs +sYu +aBB +aAC +kpH +aaa +aaa +aaa +aaa +aaa +amD +aTd +aTd +aTd +aTd +aTd +aTd +amD +awx +afw +awB +ayr +apR +aRH +aJW +aeE +arB +aRH +aYI +agO +aaa aaa aaa aaa @@ -51867,87 +53401,7 @@ aaa aaa aaa aaa -aiF -aac -awM -awM -awM -aBz -aTk -aGP -awM -awM -amm -aUT -awM -aCj -aGC -aGC -aGC -aGC -aRD -aiF -aou -aiR -aoJ -alo -aoM -aiF -abD -agn -agn -anA -azo -agn -aOn -aOn -aOn -abO -aIS -aOn -aOn -aOn -aOn -auv -aOn -aOn -aWI -aqZ -aqZ -aqZ -aqZ -aqZ -aqZ -aqZ -aqZ -aqZ -aqZ -aXU -aOn -aOn -aOn -aOn -aOn -aOn aaa -aGA -arn -ast -atr -aum -amD -avB -anp -anp -anp -aoU -amD -ata -aGA -atd -aGA -ata -amD aaa aaa aaa @@ -51957,8 +53411,6 @@ aaa aaa aaa aaa -"} -(122,1,1) = {" aaa aaa aaa @@ -52027,6 +53479,8 @@ aaa aaa aaa aaa +"} +(122,1,1) = {" aaa aaa aaa @@ -52081,6 +53535,154 @@ aaa aaa aaa aaa +aOn +uwL +auh +lRs +lRs +xjq +lRs +auh +auh +xjq +aOn +gJY +gJY +iRM +iRM +iRM +ayM +xDC +gJY +gJY +iRM +iRM +tsH +gJY +gJY +gJY +ayM +iRM +tsH +gJY +lCG +aYr +acv +aYr +aft +aUv +aPR +acC +iWt +aup +aMI +ajD +ads +anr +aWa +aEj +kpH +aMc +aMc +aMc +kpH +aln +ahF +aQV +khW +aRY +aEB +kpH +aOn +aZf +aZf +aZf +aOn +kpH +kpH +eHz +eHz +eHz +kpH +kpH +aaa +aaa +aaa +aaa +aaa +amD +amD +amD +amD +aTd +aTd +aTd +avF +awy +aTK +axQ +amD +apR +aWy +aSk +aZs +aRF +aOX +aNL +agO +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -52124,87 +53726,7 @@ aaa aaa aaa aaa -aiF -aqQ -aDE -awM -awM -awM -awM -awM -awM -awM -awM -awM -awM -awM -awM -awM -awM -aDE -afQ -alK -ahz -aoN -aiZ -alq -azh -aiF -aiF -aiF -aOn -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aOn aaa -amD -aWY -asu -ats -aBy -amD -avC -awr -axe -awr -awx -amD -apB -apT -apT -apT -aqF -aGA aaa aaa aaa @@ -52270,8 +53792,64 @@ aaa aaa aaa aaa +aOn +erK +erK +erK +erK +kjO +erK +erK +erK +uun +aOn +afC +afC +aGD +aCV +aYB +aYB +aYB +aYB +afC +afC +aYB +aYB +afC +aYB +aYB +aYB +aYB +afC +afC +aqz +aYr +aRt +aYr +aOE aaa aaa +aua +amv +aNa +aID +ahL +aAl +ayR +ayR +aAl +kpH +aMc +aMc +aMc +aIS +aQV +asT +aJY +pCB +aky +ahl +amJ aaa aaa aaa @@ -52292,6 +53870,23 @@ aaa aaa aaa aaa +amD +aTd +aTd +aTd +agS +awz +aTK +axR +aOQ +aQE +aPM +aOm +aSR +aYy +aAL +aoK +agO aaa aaa aaa @@ -52381,87 +53976,7 @@ aaa aaa aaa aaa -aiF -aRi -aPG -aPG -aor -aPG -aPG -aPG -aPG -aPG -aor -aPG -aPG -aPG -aor -aPG -ayA -aPG -aXF -aiF -aov -aoO -ado -ahz -aWS -aWo -awM -aij -aak -adQ -aMc -aMc -aMc -aMc -aMc -adQ -abK -aMc -aMc -aMc -aMc -adQ -aMc -aMc -aMc -aMc -aMc -adQ -aMc -aMc -aMc -aMc -aMc -adQ -aMc -aMc -aMc -aMc -aMc -adQ -aMc -aOn aaa -aGA -anB -asu -ats -apR -auO -avD -afw -axf -afw -ayp -asd -apC -apU -apU -apU -aqG -aGA aaa aaa aaa @@ -52471,8 +53986,6 @@ aaa aaa aaa aaa -"} -(124,1,1) = {" aaa aaa aaa @@ -52480,6 +53993,8 @@ aaa aaa aaa aaa +"} +(124,1,1) = {" aaa aaa aaa @@ -52534,8 +54049,64 @@ aaa aaa aaa aaa +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aOn +aft +aft +aAf +aYB +aGH +aUy +ahW +aYB +afC +ahW +aPI +aYB +aGH +afC +aWU +aCV +aYB +arI +ajY +afC +aqz +aYr +acv +aYr +aOE aaa aaa +aua +ahv +aID +ael +aSc +aAl +ayR +ayR +aAl +tez +aMc +adQ +aMc +aVA +aQV +apM +abn +mFZ +afA +aUH +amJ aaa aaa aaa @@ -52556,6 +54127,23 @@ aaa aaa aaa aaa +amD +aTd +aTd +aTd +amD +asu +afw +awh +agS +anj +aMJ +aTI +aZl +azz +aOX +aaR +agO aaa aaa aaa @@ -52638,87 +54226,7 @@ aaa aaa aaa aaa -aiF -aiF -aiN -aiF -aiF -aiF -aiF -aiF -aIh -aiF -aiF -aiF -aiN -aiF -aiF -aiF -aiF -aiF -aiF -aiF -aiN -aiF -apQ -apQ -aiF -aiF -aiF -aiF -aOn -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aMc -aOn aaa -amD -aeY -asv -att -aJl -amD -avE -awt -axg -awt -atn -amD -apD -apX -apX -apX -arb -aGA aaa aaa aaa @@ -52728,8 +54236,6 @@ aaa aaa aaa aaa -"} -(125,1,1) = {" aaa aaa aaa @@ -52744,6 +54250,8 @@ aaa aaa aaa aaa +"} +(125,1,1) = {" aaa aaa aaa @@ -52807,7 +54315,55 @@ aaa aaa aaa aaa +aft +aft +aEW +aYB +aGH +ahW +aQG +aQG +aQG +aQG +aQG +aYB +aBN +aEW +aGH +aCR +aYB +ahW +aEW +aCR +aCR +aZi +aYr +aRt +aYr +aOE +aOE aaa +aua +aiU +aNa +aID +aSZ +aAl +ayR +ayR +aAl +kpH +aMc +aMc +aMc +kpH +ajd +aQV +ayN +aiT +afA +anx +amJ aaa aaa aaa @@ -52828,6 +54384,23 @@ aaa aaa aaa aaa +amD +aTd +aTd +aTd +amD +asu +afw +abm +amD +avm +aNy +aar +afi +aar +aNy +asx +agO aaa aaa aaa @@ -52916,67 +54489,6 @@ aaa aaa aaa aaa -akG -atj -atj -atj -atj -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aMc -aMc -aMc -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aGZ -aIS -aOn -aOn -aOn -aOn -aIW -aIS -aOn -aOn -aOn -aOn -afl -aIS -aOn -aOn -amD -amD -amD -atu -amD -amD -amD -awu -axh -awu -amD -amD -azT -acn -agO -acn -azT -agO -agO aaa aaa aaa @@ -52985,8 +54497,6 @@ aaa aaa aaa aaa -"} -(126,1,1) = {" aaa aaa aaa @@ -52997,6 +54507,8 @@ aaa aaa aaa aaa +"} +(126,1,1) = {" aaa aaa aaa @@ -53060,7 +54572,55 @@ aaa aaa aaa aaa +aft +aCR +aGH +afC +aGD +aAf +aQG +aIi +alf +awI +aQG +aQG +aQG +aQG +aQG +aQG +aQG +aug +aqL +aPH +aGU +aXK +aYr +acv +aYr +aRS +aft aaa +kpH +azA +aQW +aNa +aoC +aAl +aYw +aYm +alL +kpH +qXd +aMc +aMc +kpH +aYp +aQV +aVD +agg +aYQ +abS +kpH aaa aaa aaa @@ -53081,6 +54641,23 @@ aaa aaa aaa aaa +amD +amD +amD +amD +amD +aSF +afw +ats +aqR +aff +aWR +aRH +aNC +aRH +aWR +adW +agO aaa aaa aaa @@ -53173,67 +54750,6 @@ aaa aaa aaa aaa -akG -atj -aXi -aTL -aQh -aOn -alc -apP -aNr -abk -ayu -aIA -aOn -aMc -aMc -aMc -aOn -api -api -api -auD -agf -aHp -aOn -aSI -aSI -api -api -aEK -aOn -aOb -aVR -atW -aHo -azt -aOn -aZr -awb -auh -azQ -aKc -aOn -amD -aBm -apR -apR -apR -aaK -amD -awv -awv -awv -amD -acx -aWN -acb -awW -atb -aaV -aho -agO aaa aaa aaa @@ -53242,14 +54758,14 @@ aaa aaa aaa aaa -"} -(127,1,1) = {" aaa aaa aaa aaa aaa aaa +"} +(127,1,1) = {" aaa aaa aaa @@ -53312,6 +54828,56 @@ aaa aaa aaa aaa +aft +aft +aim +afC +afC +aEW +aYB +aQG +aQG +awR +aQG +aQG +aQG +aat +aMA +aKg +ams +avI +atT +aSy +afr +cxr +aaY +aYr +aRt +aYr +apt +aft +aft +kpH +kpH +kpH +kpH +kpH +kpH +kpH +kpH +kpH +kpH +aMc +aMc +aMc +kpH +kpH +kpH +kpH +kpH +kpH +kpH +kpH aaa aaa aaa @@ -53332,6 +54898,23 @@ aaa aaa aaa aaa +amD +aNE +aNE +aNE +amD +asu +afw +ats +amD +amD +arY +aST +aVO +aST +arY +aYa +aYa aaa aaa aaa @@ -53430,67 +55013,6 @@ aaa aaa aaa aaa -akG -atj -aya -aUo -aTA -aZf -aZe -aZT -aeh -avZ -aFp -aCb -aOn -aMc -aMc -aMc -aIS -api -api -aXN -aeU -api -api -aZf -api -api -api -api -api -aOn -apk -ajP -aJp -aZx -aId -aOn -aid -ape -auh -aJv -aVI -aOn -amD -aau -apR -adx -apR -add -amD -aWQ -axh -aWQ -amD -ahy -aeF -aeF -aeF -aeF -aeF -adb -agO aaa aaa aaa @@ -53563,7 +55085,56 @@ aaa aaa aaa aaa +aft +aYB +aGH +aGD +ajY +aQG +aQG +aQG +ayV +aAY +aMA +adU +aQG +aHe +aVo +acf +alv +aQG +aox +aSy +ayI +cxr +nbv +aYr +acv +aYr +atJ +aYB +aft aaa +kpH +aGb +aiq +aFS +lMR +adP +ayC +aFG +kpH +aMc +aMc +aMc +kpH +ahR +aEb +ash +aAN +aqm +aYj +kpH aaa aaa aaa @@ -53584,6 +55155,23 @@ aaa aaa aaa aaa +amD +aNE +aNE +aNE +amD +asu +afw +ats +amD +abp +aZv +asE +abH +asE +aZv +aVZ +aYa aaa aaa aaa @@ -53687,72 +55275,6 @@ aaa aaa aaa aaa -akG -atj -aNl -aMU -ahU -aOn -ald -aPf -auB -abW -ahu -asU -aSm -aMc -adQ -aMc -aCS -api -api -aXN -aNK -aJC -api -aZf -api -ahw -ahw -api -api -aOn -aCn -aig -aXn -aDw -aGe -aOn -auh -auh -auh -aOk -aKc -aOn -amD -amD -amD -amD -amD -aqR -amD -aww -axi -awz -aqR -aNQ -aeF -ahx -aTE -aVL -aeF -abU -aMY -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -53820,7 +55342,56 @@ aaa aaa aaa aaa +aft +aAf +aGH +aYB +aCE +aQG +auK +anJ +amN +aYl +arw +agI +adM +akp +aVo +aVo +aBb +aXG +aWq +aWq +jUj +cxr +aWl +aYr +acv +aYr +aDV +aGD +aOE aaa +eHz +aME +ayg +aCc +aAR +ayC +ayg +ayg +kpH +aMc +aMc +aMc +aIS +aIU +aID +aVU +aJQ +aTf +aIU +aua aaa aaa aaa @@ -53841,6 +55412,23 @@ aaa aaa aaa aaa +amD +aNE +aNE +aNE +amD +asu +axf +ats +amD +aDY +abH +abH +abH +asE +asE +aVu +aYa aaa aaa aaa @@ -53944,72 +55532,6 @@ aaa aaa aaa aaa -akG -atj -aoj -apL -anq -azj -aXX -aYc -aRd -aYs -aSU -aCb -aOn -aMc -aMc -aMc -aOn -api -api -api -api -api -api -aZf -alQ -aeU -aNK -api -api -aOn -azy -axC -aCU -aiD -aOR -aOn -aRt -aVc -aDM -ase -ayg -aOn -aTd -aTd -aTd -aTd -aTd -aTd -amD -ass -axj -afa -amD -aTj -aeF -aPX -aKe -aeV -aeF -agF -agO -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -54077,7 +55599,56 @@ aaa aaa aaa aaa +aft +aGD +aCR +aAf +aYB +avI +aTo +aYG +aqP +avT +all +aQG +aXq +aSu +ahY +ahY +aFu +aQG +aDD +aEX +aTD +afG +aMb +aYr +acv +aYr +adu +aYB +aOE aaa +eHz +aOD +ayg +ayg +aPl +ayC +ayC +ayg +aCN +aMc +adQ +aMc +acI +aIU +aID +aVU +aeo +aID +aIU +aua aaa aaa aaa @@ -54098,6 +55669,23 @@ aaa aaa aaa aaa +amD +aNE +aNE +aNE +aqR +awA +afw +ats +amD +aVE +abH +aRV +aSq +agX +asE +ayS +aYa aaa aaa aaa @@ -54201,72 +55789,6 @@ aaa aaa aaa aaa -akG -atj -aVQ -aTL -axX -aOn -alO -aZa -aYo -apl -adV -aWX -aOn -aMc -aMc -aMc -aOn -aEK -api -aSI -aSI -asn -aLy -aOn -aqa -app -api -api -asn -aOn -aEA -app -aCs -aiD -aHQ -aOn -ayM -aaW -auh -ayg -ayg -aOn -aTd -aTd -aTd -aTd -aTd -aTd -amD -ass -afw -atr -agS -avm -aWR -aRH -aWR -ahe -aWR -aty -agO -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -54334,7 +55856,56 @@ aaa aaa aaa aaa +aft +aft +aUy +aCR +aGH +avI +aOu +aYG +aqP +aQG +aQG +aQG +aQG +aQG +aEa +aXL +aRh +aQG +aQu +aIx +aPH +arI +aqz +aYr +acv +aYr +apt +aGD +aOE aaa +eHz +awV +ayg +ayg +aIn +ayg +ayC +ayC +aIS +aMc +aMc +aMc +kpH +aue +aXI +aID +aID +aID +aUg +aua aaa aaa aaa @@ -54355,6 +55926,23 @@ aaa aaa aaa aaa +amD +aNE +aNE +aNE +amD +asu +afw +ats +amD +aXe +abH +abA +abj +aPt +asE +aFB +aYa aaa aaa aaa @@ -54459,72 +56047,6 @@ aaa aaa aaa aaa -atj -atj -atj -atj -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aMc -aMc -aMc -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aTx -api -api -api -aLy -aOn -aDt -aSs -awD -aBB -aAC -aOn -adC -aAa -aYd -acd -awY -aOn -aTd -aTd -aTd -aTd -aTd -aTd -amD -awx -afw -awB -ayr -apR -aRH -aJW -aeE -arB -aRH -aYI -agO -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa "} @@ -54592,7 +56114,55 @@ aaa aaa aaa aaa +aft +afC +aGH +aEW +aQG +aIe +aOo +aJr +aQG +ais +aOr +amN +aMe +aWF +aWF +aWF +avI +aGD +ahW +aCR +aYB +akx +aYr +acv +aYr +aDV +afC +aft aaa +kpH +ago +ayC +ayC +aWH +ayg +ayg +aHc +kpH +qXd +aMc +aMc +kpH +aZD +aDl +aAP +aeW +aqe +aJo +kpH aaa aaa aaa @@ -54613,6 +56183,23 @@ aaa aaa aaa aaa +amD +aNE +aNE +aNE +amD +asu +axk +ats +amD +ayl +abH +abH +abH +asE +asE +aIK +aYa aaa aaa aaa @@ -54716,71 +56303,6 @@ aaa aaa aaa aaa -aUv -aPR -acC -aIH -aup -aMI -ajD -ads -anr -aWa -aEj -aOn -aMc -aMc -aMc -aOn -aln -ahF -aQV -atS -aRY -aEB -aOn -aOn -aZf -aZf -aZf -aOn -aOn -aOn -aZf -aZf -aZf -aOn -aOn -aOn -aZf -aZf -aZf -aOn -aYn -aYn -aYn -aYn -aTd -aTd -aTd -avF -awy -aTK -axQ -amD -apR -aWy -aSk -aZs -aRF -aOX -aNL -agO -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -54849,8 +56371,57 @@ aaa aaa aaa aaa +aft +aft +aUy +ahW +aQG +aFy +aUW +aSb +aQG +aNW +aOo +aBP +aQG +aAE +aWF +als +avI +aCR +aCa +aEW +ahW +akt +aYr +aRt +aYr +adu +aft +aft aaa +kpH +kpH +kpH +kpH +kpH +kpH +kpH +kpH +kpH +aMc +aMc +aMc +kpH +kpH +kpH +kpH +kpH +kpH +kpH +kpH aaa +ape aaa aaa aaa @@ -54869,6 +56440,23 @@ aaa aaa aaa aaa +amD +aNE +aNE +aNE +amD +awB +axi +axS +amD +abI +aoL +afj +aRM +aPE +awl +aVM +aYa aaa aaa aaa @@ -54949,55 +56537,6 @@ aaa aaa aaa aaa -aft -aft -aft -aft -aft -aft -aft -aft -aft -aft -aft -aft -aft -aft -aft -aft -aft -aft -aft -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aua -amv -aNa -aID -ahL -aAl -ayR -ayR -aAl -aOn -aMc -aMc -aMc -aIS -aQV -asT -aJY -aQT -aky -ahl -amJ -aaa -aaa aaa aaa aaa @@ -55016,23 +56555,6 @@ aaa aaa aaa aaa -aYn -aTd -aTd -aTd -agS -awz -aTK -axR -aOQ -aQE -aPM -aOm -aSR -aYy -aAL -aoK -agO aaa aaa aaa @@ -55107,9 +56629,54 @@ aaa aaa aaa aaa +aft +aft +aAf +aQG +aQG +aQG +aQG +aQG +aoA +aDx +aiy +aQG +atF +aWF +aIo +aQG +afC +aDr +aCR +aYB +akx +aYr +acv +aYr +aFk +aft aaa aaa aaa +kpH +afU +aNc +aXR +wMv +aXR +aLL +kpH +aMc +aMc +aMc +kpH +arh +azX +azX +acH +aki +aMk +kpH aaa aaa aaa @@ -55130,6 +56697,28 @@ aaa aaa aaa aaa +amD +aNE +aNE +aNE +amD +awu +axh +awu +amD +amD +arY +aYa +aYa +aYa +aYa +aYa +aYa +aFR +aFR +aFR +aFR +aFR aaa aaa aaa @@ -55205,56 +56794,6 @@ aaa aaa aaa aaa -aft -aft -aAf -aYB -aGH -aUy -ahW -aYB -afC -ahW -aPI -aYB -aGH -afC -aWU -afC -aYB -arI -ajY -aft -aOE -aOE -aOE -aOE -aOE -aaa -aaa -aua -ahv -aID -ael -aSc -aAl -ayR -ayR -aAl -afm -aMc -adQ -aMc -aVA -aQV -apM -abn -aPi -afA -aUH -amJ -aaa -aaa aaa aaa aaa @@ -55273,23 +56812,6 @@ aaa aaa aaa aaa -aYn -aTd -aTd -aTd -amD -asu -afw -awh -agS -anj -aMJ -aTI -aZl -azz -aOX -aaR -agO aaa aaa aaa @@ -55365,9 +56887,53 @@ aaa aaa aaa aaa +aft +adS +adS +adS +adS +adS +adS +aQG +aQG +aQG +aQG +aQG +afZ +aoT +aQG +aCa +aCR +aCV +aCR +akx +aYr +aRt +aYr +aft +aft aaa aaa aaa +eHz +auu +aQV +aQV +aQV +aQV +aQV +kpH +aMc +aMc +aMc +aIS +azX +aQP +azX +azX +azX +azX +eHz aaa aaa aaa @@ -55388,6 +56954,28 @@ aaa aaa aaa aaa +amD +aNE +aNE +aNE +avz +avz +avz +avz +aTY +amD +aQC +aFR +aQf +aTy +axY +aqI +akR +aUm +aUn +ana +aGc +aFR aaa aaa aaa @@ -55461,55 +57049,6 @@ aaa aaa aaa aaa -aft -aft -aEW -aYB -aGH -ahW -aQG -aQG -aQG -aQG -aQG -aYB -aBN -aEW -aGH -aCR -aYB -ahW -aEW -aCR -aCR -aZi -aYr -acv -aYr -aOE -aOE -aaa -aua -aiU -aNa -aID -aSZ -aAl -ayR -ayR -aAl -aOn -aMc -aMc -aMc -aOn -ajd -aQV -ayN -aiT -afA -anx -amJ aaa aaa aaa @@ -55530,23 +57069,6 @@ aaa aaa aaa aaa -aYn -aTd -aTd -aTd -amD -asu -afw -abm -amD -avm -aNy -aar -afi -aar -aNy -asx -agO aaa aaa aaa @@ -55623,10 +57145,52 @@ aaa aaa aaa aaa +adS +jvd +aHn +axH +tse +adS +adS +adS +adS +adS +aQG +aQG +aQG +aQG +ahW +aUy +ahW +aft +aft +oZB +aOE +oZB +aft aaa aaa aaa aaa +eHz +aNs +aQV +awp +acM +akl +aQV +akv +aMc +adQ +aMc +aGt +azX +azX +azX +apv +azX +arh +eHz aaa aaa aaa @@ -55643,6 +57207,32 @@ aaa aaa aaa aaa +amD +amD +amD +amD +amD +aQC +aQC +amD +amD +aZb +amD +aZb +amD +axG +aMP +aFR +obs +aHj +aHj +apK +axF +aUm +aDu +aZF +asX +aFR aaa aaa aaa @@ -55718,57 +57308,6 @@ aaa aaa aaa aaa -aft -aCR -aGH -afC -aGD -aAf -aQG -aIi -alf -awI -aQG -aQG -aQG -aQG -aQG -aQG -aQG -aug -aqL -aPH -aGU -aXK -aYr -aYr -aYr -aRS -aft -aaa -aOn -azA -aQW -aNa -aoC -aAl -aYw -aYm -alL -aOn -aMc -aMc -aMc -aOn -aYp -aQV -aVD -agg -aYQ -abS -aOn -aaa -aaa aaa aaa aaa @@ -55787,23 +57326,6 @@ aaa aaa aaa aaa -aYn -amD -amD -amD -amD -aSF -afw -ats -aqR -aff -aWR -aRH -aNC -aRH -aWR -adW -agO aaa aaa aaa @@ -55880,16 +57402,94 @@ aaa aaa aaa aaa +agL +aJF +aLK +aLK +xrb +ard +acF +aIF +afh +adS +adS +adS +adS +adS +adS +apG +apG +apG +arj +aZP +aoE +aQl +apG aaa aaa aaa aaa +eHz +aZc +xno +asI +asI +asI +aQV +aIS +aMc +aMc +aMc +kpH +azX +aom +azX +azX +azX +azX +eHz aaa aaa aaa aaa aaa aaa +awc +awc +awc +awc +awc +awc +awc +awc +awc +awc +awc +awc +anP +afu +afu +afu +afu +afu +afu +axp +aPr +aaw +aae +aew +aew +aFR +atD +amo +ayh +atR +axF +aUm +aQg +akj +auL +aFR aaa aaa aaa @@ -55974,67 +57574,6 @@ aaa aaa aaa aaa -aft -aft -aim -afC -afC -aEW -aYB -aQG -aQG -awR -aQG -aQG -aQG -aat -aMA -aKg -ams -avI -atT -aSy -afr -aYe -aaY -aYr -acv -aYr -apt -aft -aft -aOn -aOn -aOn -aSQ -aOn -aOn -aOn -aOn -aOn -aOn -aMc -aMc -aMc -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -56044,23 +57583,6 @@ aaa aaa aaa aaa -aYn -aNE -aNE -aNE -amD -asu -afw -ats -amD -amD -arY -aST -aVO -aST -arY -aYa -aYa aaa aaa aaa @@ -56137,16 +57659,94 @@ aaa aaa aaa aaa +agL +aRc +aLK +aLK +aIM +aYE +arq +atv +adS +adS +aXZ +arM +abo +arL +adS +apG +apG +arj +arj +aXb +auQ +ayi +apG aaa aaa aaa aaa +kpH +amh +eJD +aYz +ama +aPZ +aEd +kpH +qXd +aMc +aMc +kpH +aVb +azX +azX +aqN +aGY +aDh +kpH aaa aaa aaa aaa aaa aaa +awc +aWg +aJh +aJh +aIE +aIE +aJh +aJh +aIE +aIE +aIs +aaJ +axp +aaw +anP +axp +aHt +aaw +anP +aTV +aWb +aMo +apq +aew +aew +aDG +aKI +aPq +aPq +aPq +axF +aUm +aPn +acD +amX +aFR aaa aaa aaa @@ -56231,61 +57831,6 @@ aaa aaa aaa aaa -aft -aYB -aGH -aGD -ajY -aQG -aQG -aQG -ayV -aAY -aMA -adU -aQG -aHe -aVo -acf -alv -aQG -aox -aSy -ayI -aYe -aVW -aYr -acv -aYr -atJ -aYB -aft -aaa -aOn -aGb -aiq -aFS -aYO -adP -ayC -aFG -aOn -aMc -aMc -aMc -aOn -ahR -aEb -ash -aAN -aqm -aYj -aOn -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -56301,33 +57846,16 @@ aaa aaa aaa aaa -aYn -aNE -aNE -aNE -amD -asu -afw -ats -amD -abp -aZv -asE -abH -asE -aZv -aVZ -aYa aaa aaa +"} +(139,1,1) = {" aaa aaa aaa aaa aaa aaa -"} -(139,1,1) = {" aaa aaa aaa @@ -56388,16 +57916,94 @@ aaa aaa aaa aaa +agL +aJF +aLK +aLK +aIM +aYE +abr +atv +agL +aso +akb +aWB +aWB +aNd +adS +aMm +arj +arj +arj +aXb +auQ +ayi +apG aaa aaa aaa aaa +kpH +kpH +kpH +kpH +kpH +kpH +kpH +kpH +mdv +mdv +mdv +kpH +kpH +kpH +kpH +kpH +kpH +kpH +kpH aaa aaa aaa aaa aaa aaa +awc +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aaJ +aTV +aWb +aSt +aTV +aWb +aMo +aSt +aTV +aqM +aMo +aJd +aew +adh +aDG +aKI +aPq +aPq +aPq +afb +aqD +aOa +aOa +aOa +aFR aaa aaa aaa @@ -56488,56 +58094,7 @@ aaa aaa aaa aaa -aft -aAf -aGH -aYB -aCE -aQG -auK -anJ -amN -aYl -arw -agI -adM -akp -aVo -aVo -aBb -aXG -aWq -aWq -aFj -aYe -aWl -aYr -aYr -aYr -aDV -aGD -aOE aaa -aZf -aME -ayg -aCc -aAR -ayC -ayg -ayg -aOn -aMc -aMc -aMc -aIS -aIU -aID -aVU -aJQ -aTf -aIU -aua aaa aaa aaa @@ -56548,6 +58105,8 @@ aaa aaa aaa aaa +"} +(140,1,1) = {" aaa aaa aaa @@ -56558,23 +58117,6 @@ aaa aaa aaa aaa -aYn -aNE -aNE -aNE -amD -asu -axf -ats -amD -aDY -abH -abH -abH -asE -asE -aVu -aYa aaa aaa aaa @@ -56583,8 +58125,6 @@ aaa aaa aaa aaa -"} -(140,1,1) = {" aaa aaa aaa @@ -56633,6 +58173,29 @@ aaa aaa aaa aaa +adS +ard +aLK +aLK +aIM +aYE +arq +atv +axz +arr +amW +aUI +aNN +aZH +aQn +aEv +arj +abX +arj +aXb +auQ +ayi +apG aaa aaa aaa @@ -56642,12 +58205,62 @@ aaa aaa aaa aaa +aiA +aiA +aiA +afB +afB +afB +aiA +aiA +aiA aaa aaa aaa aaa aaa +aiA +aiA +aiA +aiA +aiA aaa +awc +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aaJ +aYD +aMo +aSt +aTV +aWb +aMo +aSt +aTV +aqM +aMo +aJd +aew +aew +aDG +ahN +aHd +aHd +aPq +aEf +aHv +aYf +aYf +akR +aFR aaa aaa aaa @@ -56745,59 +58358,12 @@ aaa aaa aaa aaa -aft -aGD -aCR -aAf -aYB -avI -aTo -aYG -aqP -avT -all -aQG -aXq -aSu -ahY -ahY -aFu -aQG -aDD -aEX -aTD -afG -aMb -aYr -acv -aYr -adu -aYB -aOE aaa -aZf -aOD -ayg -ayg -aPl -ayC -ayC -ayg -aCN -aMc -adQ -aMc -acI -aIU -aID -aVU -aeo -aID -aIU -aua aaa aaa aaa +"} +(141,1,1) = {" aaa aaa aaa @@ -56815,23 +58381,6 @@ aaa aaa aaa aaa -aYn -aNE -aNE -aNE -aqR -awA -afw -ats -amD -aVE -abH -aRV -aSq -agX -asE -ayS -aYa aaa aaa aaa @@ -56840,8 +58389,6 @@ aaa aaa aaa aaa -"} -(141,1,1) = {" aaa aaa aaa @@ -56880,12 +58427,97 @@ aaa aaa aaa aaa +adS +adS +agL +adS +adS +ard +aLK +abz +aWJ +aWC +atv +agL +ajQ +aSM +aSM +aSM +aES +aQn +aGS +abX +arj +arj +aXb +avp +ayi +apG aaa aaa +aiA +aiA +aiA aaa aaa aaa aaa +aiA +aUh +aUh +afB +aPj +afB +aUh +aUh +aiA +aiA +aiA +aiA +aiA +aiA +aiA +amP +aSL +amP +aiA +aXw +aXw +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aaJ +agx +aMo +anP +agx +aWb +aOh +anP +aTV +aqM +aMo +apq +aew +aGI +aFR +aHq +aqJ +aZg +ayL +aPq +aPq +akJ +aGg +awZ +aFR aaa aaa aaa @@ -56987,6 +58619,8 @@ aaa aaa aaa aaa +"} +(142,1,1) = {" aaa aaa aaa @@ -57002,56 +58636,7 @@ aaa aaa aaa aaa -aft -aft -aUy -aCR -aGH -avI -aOu -aYG -aqP -aQG -aQG -aQG -aQG -aQG -aEa -aXL -aRh -aQG -aQu -aIx -aPH -arI -aqz -aYr -acv -aYr -apt -aGD -aOE aaa -aZf -awV -ayg -ayg -aIn -ayg -ayC -ayC -aIS -aMc -aMc -aMc -aOn -aue -aXI -aID -aID -aID -aUg -aua aaa aaa aaa @@ -57072,23 +58657,6 @@ aaa aaa aaa aaa -aYn -aNE -aNE -aNE -amD -asu -afw -ats -amD -aXe -abH -abA -abj -aPt -asE -aFB -aYa aaa aaa aaa @@ -57097,8 +58665,6 @@ aaa aaa aaa aaa -"} -(142,1,1) = {" aaa aaa aaa @@ -57117,8 +58683,98 @@ aaa aaa aaa aaa +adS +adS +aUF +ajf +ayG +adS +adS +aLK +aaX +aWi +aXE +atv +adS +adS +aLx +aii +akw +aaq +aQn +aKN +arj +arj +aZP +aTW +aFA +aol +apG aaa aaa +aiA +aKs +aiA +aiA +aiA +aiA +aiA +aiA +aUh +ans +agT +agT +agT +auU +aUh +aiA +aDg +alk +aFh +azR +amP +akf +aQa +agQ +aQa +azv +amP +aXw +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aaJ +aHr +aMo +aHY +aHr +aWb +aUC +aHY +aTV +aWb +aMo +aae +aew +abZ +aFR +axZ +axZ +aKA +ayL +aPq +aPq +akJ +auY +awZ +aFR aaa aaa aaa @@ -57220,6 +58876,8 @@ aaa aaa aaa aaa +"} +(143,1,1) = {" aaa aaa aaa @@ -57260,55 +58918,7 @@ aaa aaa aaa aaa -aft -afC -aGH -aEW -aQG -aIe -aOo -aJr -aQG -ais -aOr -amN -aMe -aWF -aWF -aWF -avI -aGD -ahW -aCR -aYB -akx -aYr -aYr -aYr -aDV -afC -aft aaa -aOn -ago -ayC -ayC -aWH -ayg -ayg -aHc -aOn -aMc -aMc -aMc -aOn -aZD -aDl -aAP -aeW -aqe -aJo -aOn aaa aaa aaa @@ -57329,24 +58939,99 @@ aaa aaa aaa aaa -aYn -aNE -aNE -aNE -amD -asu -axk -ats -amD -ayl -abH -abH -abH -asE -asE -aIK -aYa aaa +agL +ahg +aKd +aLK +adz +aKu +agL +aLK +avN +aMa +aXE +aoe +aZm +aLs +aYZ +aCA +auJ +akw +aNF +aZP +aaE +aaE +aqf +aod +aDC +ang +apG +aiA +aiA +aiA +arZ +aiA +ayt +auI +aiA +aiA +aUh +aUh +aLg +ayb +ayQ +aev +auF +aUh +aUh +aHP +alC +aUk +anf +aSz +aCq +aHT +aHT +aHT +aMh +aSz +aXw +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aaJ +aHr +aMo +aHY +aHr +aWb +aUC +aHY +aTV +aNf +aMo +aae +aew +aVj +aFR +axZ +axZ +aCz +asp +asp +asp +aNo +asp +aFQ +aFR aaa aaa aaa @@ -57354,8 +59039,6 @@ aaa aaa aaa aaa -"} -(143,1,1) = {" aaa aaa aaa @@ -57450,6 +59133,8 @@ aaa aaa aaa aaa +"} +(144,1,1) = {" aaa aaa aaa @@ -57512,60 +59197,115 @@ aaa aaa aaa aaa +adS +awO +aSv +apg +aaG +auS +apx +aLK +akM +acc +aXE +amg +aZp +aPO +aYZ +aWG +aWG +aAv +aNF +aXb +auQ +auQ +avp +aQo +aYF +anh +apG +aDQ +aiA +aJz +aHK +aHK +adD +aVV +aJu +aiA +ach +aQJ +aIl +auf +afB +aEM +avr +auF +ach +auj +aMf +aKY +auT +amP +aUc +aHT +aRr +aHT +aMv +amP +aXw +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aaJ +aBA +aMo +anP +aBA +aWb +aRf +anP +aTV +aWb +aMo +apq +aew +agc +aFR +aFR +aFR +aFR +aAs +aAs +aqv +aFR +aFR +aFR +aFR +alr +alr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa aaa aaa -aft -aft -aUy -ahW -aQG -aFy -aUW -aSb -aQG -aNW -aOo -aBP -aQG -aAE -aWF -als -avI -aCR -aCa -aEW -ahW -akt -aYr -aYr -aYr -adu -aft -aft aaa -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aMc -aMc -aMc -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aOn aaa aaa aaa @@ -57586,23 +59326,6 @@ aaa aaa aaa aaa -aYn -aNE -aNE -aNE -amD -awB -axi -axS -amD -abI -aoL -afj -aRM -aPE -awl -aVM -aYa aaa aaa aaa @@ -57611,8 +59334,6 @@ aaa aaa aaa aaa -"} -(144,1,1) = {" aaa aaa aaa @@ -57669,6 +59390,8 @@ aaa aaa aaa aaa +"} +(145,1,1) = {" aaa aaa aaa @@ -57731,6 +59454,101 @@ aaa aaa aaa aaa +agL +ajv +abE +aLK +akg +ayf +agL +aLK +aAy +aMa +aXE +aKU +aWx +aHu +aYZ +aCA +acm +aVy +aNF +aJB +aET +aET +ahI +aKy +arX +aMG +apG +aka +aSE +aPY +aGW +aGW +aGW +aGW +aZM +aev +aJH +ayb +auf +aco +aED +aoi +aEM +aev +aAM +aVf +aGn +aHM +auT +aJH +aCq +aHT +aGW +aHT +aMh +amA +aXw +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aaJ +aTV +aMo +aSt +aTV +aWb +aMo +aSt +aTV +aqM +aMo +aJd +axp +aHt +aHt +aHt +aHt +aHt +aHt +aHt +aHt +aaw +amw +arE +aGM +aKT +alr +aaa aaa aaa aaa @@ -57775,54 +59593,9 @@ aaa aaa aaa aaa -aft -aft -aAf -aQG -aQG -aQG -aQG -aQG -aoA -aDx -aiy -aQG -atF -aWF -aIo -aQG -afC -aDr -aCR -aYB -akx -aYr -acv -aYr -aFk -aft aaa aaa aaa -aOn -afU -aNc -aXR -aXo -aXR -aLL -aOn -aMc -aMc -aMc -aOn -arh -azX -azX -acH -aki -aMk -aOn aaa aaa aaa @@ -57843,33 +59616,9 @@ aaa aaa aaa aaa -aYn -aNE -aNE -aNE -amD -awu -axh -awu -amD -amD -arY -aYa -aYa -aYa -aYa -aYa -aYa -aFR -aFR -aFR -aFR -aFR aaa aaa aaa -"} -(145,1,1) = {" aaa aaa aaa @@ -57898,6 +59647,8 @@ aaa aaa aaa aaa +"} +(146,1,1) = {" aaa aaa aaa @@ -57960,6 +59711,100 @@ aaa aaa aaa aaa +adS +adS +akh +aFg +aNJ +adS +adS +aLK +aaX +aWi +aXE +atv +adS +adS +alT +aEG +aVy +ayK +aQn +aEv +arj +arj +aJB +aTr +aFA +aol +apG +aka +aSE +aPc +aGW +aQi +ayJ +aGW +aQv +aUc +aJH +aMv +afB +aFZ +agE +acq +afB +aUc +aAM +aKr +adT +ahh +auT +aJH +aUc +aJs +aGW +aJs +aMv +aKi +aXw +aIt +aIt +aIt +aIt +aIt +aJq +aIt +aIt +aIt +aIt +aaJ +aYD +aMo +aSt +aTV +aok +aMo +aSt +aRj +aqM +aMo +aJd +aTV +aNf +aWb +aWb +aWb +aWb +aWb +aNf +aWb +aMo +aoF +aGM +aGM +aEY +alr aaa aaa aaa @@ -58033,53 +59878,9 @@ aaa aaa aaa aaa -aft -adS -adS -agL -agL -adS -adS -aQG -aQG -aQG -aQG -aQG -afZ -aoT -aQG -aCa -aCR -aCV -aCR -akx -aYr -acv -aYr -aft -aft aaa aaa aaa -aZf -auu -aQV -aQV -aQV -aQV -aQV -aOn -aMc -aMc -aMc -aIS -azX -aQP -azX -azX -azX -azX -aZf aaa aaa aaa @@ -58100,33 +59901,18 @@ aaa aaa aaa aaa -aYn -aNE -aNE -aNE -avz -avz -avz -avz -aTY -amD -aQC -aFR -aQf -aTy -axY -aqI -akR -aUm -aUn -ana -aGc -aFR aaa aaa aaa "} -(146,1,1) = {" +(147,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -58183,6 +59969,99 @@ aaa aaa aaa aaa +adS +adS +agL +adS +adS +ard +aLK +aRX +aGR +ava +atv +agL +aso +aQI +aQI +aQI +asG +aQn +aGS +abX +arj +arj +aXb +avp +ayi +apG +aka +aSE +aPY +aGW +aGW +aGW +aGW +aJX +aNz +aJH +abi +azv +aDF +aAk +aHN +akf +aNz +aAM +aKj +aLv +aHM +auT +aJH +aCq +aHT +aGW +aHT +aMh +aGO +aXw +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aaJ +aTV +aMo +aSt +aTV +aWb +aMo +aSt +aTV +aqM +aMo +aJd +aXx +aMp +aMp +aMp +aMp +aMp +aMp +aMp +aMp +aRo +amw +awq +aGM +axy +alr aaa aaa aaa @@ -58282,6 +60161,22 @@ aaa aaa aaa aaa +"} +(148,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -58291,52 +60186,10 @@ aaa aaa aaa aaa -adS -ard -aHn -axH -auE -adS -adS -adS -adS -adS -aQG -aQG -aQG -aQG -ahW -aUy -ahW -apG -apG -aMt -aUz -aMt -apG aaa aaa aaa aaa -aZf -aNs -aQV -awp -acM -akl -aQV -akv -aMc -adQ -aMc -aGt -azX -azX -azX -apv -azX -arh -aZf aaa aaa aaa @@ -58353,37 +60206,9 @@ aaa aaa aaa aaa -aYn -aYn -aYn -aYn -aYn -aQC -aQC -amD -amD -aZb -amD -aZb -amD -axG -aMP -aFR -ayO -aHj -aHj -apK -axF -aUm -aDu -aZF -asX -aFR aaa aaa aaa -"} -(147,1,1) = {" aaa aaa aaa @@ -58404,6 +60229,104 @@ aaa aaa aaa aaa +adS +ard +aLK +aLK +aIM +aYE +arq +atv +axz +arr +amW +aUI +aNN +aZH +aQn +aKN +arj +abX +arj +aXb +auQ +ayi +apG +aMx +aiA +aHm +aEl +aEl +aEl +aEl +aaM +aiA +aDo +aNH +aTp +azv +afB +akf +aeG +aDb +aDo +agZ +aMf +aXY +auT +amP +aUc +aHT +aRr +aHT +aMv +amP +aXw +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aaJ +agx +aMo +anP +agx +aWb +aOh +anP +aTV +aWb +aMo +apq +aew +aqH +aQC +atU +atU +ala +atU +ala +atU +atU +alr +alr +apF +alr +alr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -58495,6 +60418,8 @@ aaa aaa aaa aaa +"} +(149,1,1) = {" aaa aaa aaa @@ -58548,99 +60473,110 @@ aaa aaa aaa aaa -agL -aJF -aLK -aLK -aRX -ard -acF -aIF -afh -adS -adS -adS -adS -adS -adS -apG -apG -apG -arj -aZP -aoE -aQl -apG aaa aaa aaa aaa -aZf -aZc -aro -asI -asI -asI -aQV -aIS -aMc -aMc -aMc -aOn -azX -aom -azX -azX -azX -azX -aZf aaa aaa aaa aaa aaa aaa -awc -awc -awc -awc -awc -awc -awc -awc -awc -awc -awc -awc -anP -afu -afu -afu -afu -afu -afu -axp -aPr -aaw -aae -aew -aew -aFR -atD -amo -ayh -atR -axF -aUm -aQg -akj -auL -aFR aaa aaa aaa -"} -(148,1,1) = {" +agL +axb +aLK +aLK +aIM +aYE +abr +atv +agL +ajQ +aKl +aWB +aWB +aNd +adS +aMm +arj +arj +arj +aXb +auQ +ayi +apG +aiA +aiA +aiA +aiA +aPT +aDg +acY +aiA +aiA +aUh +aUh +aeI +abi +aQa +aNz +aDb +aUh +aUh +aHP +aQS +aYR +aBf +aSz +aCq +aHT +aHT +aHT +aMh +aSz +aXw +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aaJ +aHr +aMo +aHY +aHr +aWb +aUC +aHY +aTV +aNf +aMo +aae +aew +aFo +aQC +aGs +aGs +aGs +atU +aGs +aGs +aGs +amw +aRa +aGM +akQ +alr +aaa aaa aaa aaa @@ -58739,6 +60675,8 @@ aaa aaa aaa aaa +"} +(150,1,1) = {" aaa aaa aaa @@ -58806,7 +60744,7 @@ aaa aaa aaa agL -aRc +aQN aLK aLK aIM @@ -58815,10 +60753,10 @@ arq atv adS adS -aXZ -arM -abo -arL +aBi +aon +aFY +aet adS apG apG @@ -58830,74 +60768,72 @@ ayi apG aaa aaa -aaa -aaa -aOn -amh -adt -aYz -ama -aPZ -aEd -aOn -aMc -aMc -aMc -aOn -aVb -azX -azX -aqN -aGY -aDh -aOn -aaa -aaa -aaa -aaa -aaa -aaa +aiA +aiA +aBk +apz +ada awc -aWg -aJh -aJh -aIE -aIE -aJh -aJh -aIE -aIE -aIs +aiA +aiA +aUh +ans +acY +acY +acY +auU +aUh +aiA +aDg +atw +atx +aUG +amP +aEM +ayQ +aEm +ayQ +auf +amP +aXw +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt +aIt aaJ -axp -aaw -anP -axp -aHt -aaw -anP +aHr +aMo +aHY +aHr +aWb +aUC +aHY aTV aWb aMo -apq -aew +aae aew -aDG -aKI -aPq -aPq -aPq -axF -aUm -aPn -acD -amX -aFR -aaa -aaa +aUL +aQC +afO +atU +atU +atU +atU +atU +afO +amw +aaB +aGM +akP +alr aaa -"} -(149,1,1) = {" aaa aaa aaa @@ -58996,6 +60932,8 @@ aaa aaa aaa aaa +"} +(151,1,1) = {" aaa aaa aaa @@ -59063,58 +61001,58 @@ aaa aaa aaa agL -aJF +aHn aLK aLK -aIM -aYE -abr -atv -agL -aso -akb -aWB -aWB -aNd +aRX +ard +aqO +avG +afh adS -aMm -arj -arj -arj -aXb -auQ -ayi +amQ +amQ +amQ +amQ +amQ +amQ +apG +apG +aqw +aXb +aTF +ayi +apG apG aaa -aaa -aaa -aaa -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aMc -aMc -aMc -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aOn -aaa -aaa -aaa -aaa -aaa -aaa awc +atz +aHU +aQq +aDU +aqi +awc +aiA +aUh +aUh +afB +aPj +afB +aUh +aUh +aiA +aiA +aiA +aiA +aiA +aiA +aiA +afB +aPj +afB +aiA +aXw +aXw aIt aIt aIt @@ -59126,35 +61064,33 @@ aIt aIt aIt aaJ -aTV -aWb -aSt -aTV -aWb +aBA aMo -aSt +anP +aBA +aWb +aRf +anP aTV aqM aMo -aJd +apq aew -adh -aDG -aKI -aPq -aPq -aPq -afb -aqD -aOa -aOa -aOa -aFR -aaa -aaa +aIk +aQC +aGs +aGs +aGs +atU +aGs +aGs +aGs +amw +aUU +aGM +aob +alr aaa -"} -(150,1,1) = {" aaa aaa aaa @@ -59253,6 +61189,8 @@ aaa aaa aaa aaa +"} +(152,1,1) = {" aaa aaa aaa @@ -59321,56 +61259,56 @@ aaa aaa adS ard -aLK -aLK -aIM -aYE -arq -atv -axz -arr -amW -aUI -aNN -aZH -aQn -aEv -arj -abX +arF +agv +auE +amQ +amQ +amQ +amQ +amQ +aOj +aUj +amC +azP +azu +amQ +amQ +apG arj aXb -auQ +avp ayi +arj apG -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +awc +awc +azq +aic +awS +afJ +aUp +awc +aiA +aiA +aiA aiA aiA aiA -afB -afB -afB aiA aiA aiA -aaa aaa aaa aaa aaa aiA aiA +aXw +aXw +aXw aiA aiA -aiA -aaa awc aIt aIt @@ -59396,22 +61334,21 @@ aMo aJd aew aew -aDG -ahN -aHd -aHd -aPq -aEf -aHv -aYf -aYf -akR -aFR -aaa +aQC +atU +atU +ala +atU +ala +atU +atU +alr +alr +apF +alr +alr aaa aaa -"} -(151,1,1) = {" aaa aaa aaa @@ -59509,6 +61446,8 @@ aaa aaa aaa aaa +"} +(153,1,1) = {" aaa aaa aaa @@ -59573,62 +61512,61 @@ aaa aaa aaa aaa -adS -adS -agL -adS -adS -ard -aLK -abz -aWJ -aWC -atv -agL -ajQ -aSM -aSM -aSM -aES -aQn -aGS -abX +amQ +amQ +amQ +amQ +amQ +amQ +amQ +amQ +amR +avH +amQ +axl +aXg +ays +amC +azF +aAm +aFq +amQ arj arj -aXb -avp -ayi -apG -aaa -aaa -aiA -aiA -aiA +aJB +aET +aYX +arj +aio +awc +ara +atY +aha +aGp +aMD +aoq +aFP +awc +aEr +alh +awc +awc +awc +awc +awc +awc aaa aaa aaa aaa -aiA -aUh -aUh -afB -aPj -afB -aUh -aUh -aiA -aiA -aiA -aiA -aiA -aiA -aiA -amP -aSL -amP -aiA -aXw -aXw +aJb +aXB +aEn +aEn +aEn +aYJ +aJb +awc aIt aIt aIt @@ -59640,35 +61578,34 @@ aIt aIt aIt aaJ -agx +aTV aMo -anP -agx +aSt +aTV aWb -aOh -anP +aMo +aSt aTV aqM aMo -apq +aJd aew -aGI -aFR -aHq -aqJ -aZg -ayL -aPq -aPq -akJ -aGg -awZ -aFR -aaa +adh +aQC +aBo +aBo +aBo +aBo +aBo +aBo +aBo +amw +awq +aGM +axy +alr aaa aaa -"} -(152,1,1) = {" aaa aaa aaa @@ -59766,6 +61703,8 @@ aaa aaa aaa aaa +"} +(154,1,1) = {" aaa aaa aaa @@ -59829,168 +61768,99 @@ aaa aaa aaa aaa -adS -adS -aUF -ajf -ayG -adS -adS -aLK -aaX -aWi -aXE -atv -adS -adS -aLx -aii -akw -aaq -aQn -aKN +amQ +amQ +aRm +aAc +aVz +aNx +aZX +amQ +atL +aaf +amp +aYC +afS +aJn +awE +amC +azN +aAm +aZY +aMF arj arj -aZP -aTW -aFA -aol -apG -aaa -aaa -aiA -aKs -aiA -aiA -aiA -aiA -aiA -aiA -aUh -ans -agT -agT -agT -auU -aUh -aiA -aDg -alk -aFh -azR -amP -akf -aQa -agQ -aQa -azv -amP -aXw -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aaJ -aHr -aMo -aHY -aHr -aWb -aUC -aHY -aTV -aWb -aMo -aae -aew -abZ -aFR -axZ -axZ -aKA -ayL -aPq -aPq -akJ -auY -awZ -aFR -aaa -aaa -aaa -"} -(153,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +auc +aZu +auc +arj +arj +aOf +aKa +aCh +ahQ +auX +aEo +aCh +ate +ace +aJG +aGh +ajS +awc +aEC +aEh +aHD +awc +awc aaa aaa aaa +aJb +azD +abQ +avw +acN +axv +aJb +awc +aWg +aJk +aJk +aIJ +aIJ +aJk +aJk +aIJ +aIJ +aWg +aaJ +aXx +aRo +anP +aXx +aMp +aRo +anP +aTV +aWb +aMo +apq +aew +aew +aQC +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aoF +aGM +aGM +aEY +alr aaa aaa aaa @@ -60046,6 +61916,7 @@ aaa aaa aaa aaa +vRz aaa aaa aaa @@ -60086,103 +61957,11 @@ aaa aaa aaa aaa -agL -ahg -aKd -aLK -adz -aKu -agL -aLK -avN -aMa -aXE -aoe -aZm -aLs -aYZ -aCA -auJ -akw -aNF -aZP -aaE -aaE -aqf -aod -aDC -ang -apG -aiA -aiA -aiA -arZ -aiA -ayt -auI -aiA -aiA -aUh -aUh -aLg -ayb -ayQ -aev -auF -aUh -aUh -aHP -alC -aUk -anf -aSz -aCq -aHT -aHT -aHT -aMh -aSz -aXw -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aaJ -aHr -aMo -aHY -aHr -aWb -aUC -aHY -aTV -aNf -aMo -aae -aew -aVj -aFR -axZ -axZ -aCz -asp -asp -asp -aNo -asp -aFQ -aFR aaa aaa aaa "} -(154,1,1) = {" +(155,1,1) = {" aaa aaa aaa @@ -60246,9 +62025,100 @@ aaa aaa aaa aaa +amQ +amc +avl +aIV +aIV +aIV +aGX +aUN +aao +aao +akW +awC +aEP +aJR +aKG +aAn +atL +aIX +aIR +adE +arj +arj +aZP +aaE +aQl +arj +arj +aOf +acQ +aYS +aHX +aHX +aHX +aLS +asa +ace +arg +aJm +aJm +asH +aui +aJm +aed +ahX +awc aaa aaa aaa +aJb +aJb +azD +aNj +axv +aJb +aJb +awc +awc +awc +awc +awc +awc +awc +awc +awc +awc +awc +awc +anP +afu +afu +afu +afu +afu +afu +aTV +aNf +aMo +aae +aew +aew +aQC +avV +aBo +aBo +axs +aBo +aBo +aBo +amw +aCD +aGM +asl +alr +aaa aaa aaa aaa @@ -60343,106 +62213,12 @@ aaa aaa aaa aaa -adS -awO -aSv -apg -aaG -auS -apx -aLK -akM -acc -aXE -amg -aZp -aPO -aYZ -aWG -aWG -aAv -aNF -aXb -auQ -auQ -avp -aQo -aYF -anh -apG -aDQ -aiA -aJz -aHK -aHK -adD -aVV -aJu -aiA -ach -aQJ -aIl -auf -afB -aEM -avr -auF -ach -auj -aMf -aKY -auT -amP -aUc -aHT -aRr -aHT -aMv -amP -aXw -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aaJ -aBA -aMo -anP -aBA -aWb -aRf -anP -aTV -aWb -aMo -apq -aew -agc -aFR -aFR -aFR -aFR -aAs -aAs -aqv -aFR -aFR -aFR -aFR -alr -alr aaa -"} -(155,1,1) = {" aaa aaa aaa +"} +(156,1,1) = {" aaa aaa aaa @@ -60505,6 +62281,103 @@ aaa aaa aaa aaa +amQ +amQ +abe +aIV +aIV +aIV +aIV +aVx +amQ +aMO +aIO +aSK +aYC +aAI +aNg +aAn +aqT +aAn +axT +abw +adE +asO +asO +ank +aiu +aXc +asO +asO +aOf +axu +aVF +alI +alI +alI +aPx +aKk +ace +abl +aLE +aWP +awc +aui +arQ +agK +aui +awc +awc +aaa +aaa +apG +aJb +aJb +aJb +aJb +aJb +apG +aaa +aaa +apG +adJ +aTw +aTw +aTw +aTw +aTw +aTw +ags +apG +apG +apG +apG +apG +apG +apG +apG +aXb +aTF +ayi +aQC +aTN +adf +aQC +aFn +aFn +aiv +aFn +aiv +aFn +aFn +alr +alr +alr +alr +alr +aaa +aaa +aaa aaa aaa aaa @@ -60600,103 +62473,9 @@ aaa aaa aaa aaa -agL -ajv -abE -aLK -akg -ayf -agL -aLK -aAy -aMa -aXE -aKU -aWx -aHu -aYZ -aCA -acm -aVy -aNF -aJB -aET -aET -ahI -aKy -arX -aMG -apG -aka -aSE -aPY -aGW -aGW -aGW -aGW -aZM -aev -aJH -ayb -auf -aco -aED -aoi -aEM -aev -aAM -aVf -aGn -aHM -auT -aJH -aCq -aHT -aGW -aHT -aMh -amA -aXw -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aaJ -aTV -aMo -aSt -aTV -aWb -aMo -aSt -aTV -aqM -aMo -aJd -axp -aHt -aHt -aHt -aHt -aHt -aHt -aHt -aHt -aaw -amw -arE -aGM -aKT -alr aaa "} -(156,1,1) = {" +(157,1,1) = {" aaa aaa aaa @@ -60759,6 +62538,100 @@ aaa aaa aaa aaa +amQ +aRm +avl +aIV +aIV +aER +aIV +aGX +atK +agr +aAm +aNt +amQ +aDO +aAn +aAn +aAn +aAn +aAn +ain +amQ +asO +auA +aTW +aRE +aFK +anF +adG +awc +ahE +alI +aIZ +ajX +aDZ +alI +acV +awc +acU +acw +aan +aCm +aej +aJm +aJm +aed +aTR +awc +apG +apG +apG +ajR +aSf +aSf +aSf +aBK +apG +apG +apG +apG +acB +awf +awf +awf +awf +awf +awf +aOp +aRO +aRO +auZ +aWs +aUf +aWs +atH +apG +aXb +auQ +ayi +aQC +aQC +aQC +aQC +avV +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +avV +aFn aaa aaa aaa @@ -60857,103 +62730,10 @@ aaa aaa aaa aaa -adS -adS -akh -aFg -aNJ -adS -adS -aLK -aaX -aWi -aXE -atv -adS -adS -alT -aEG -aVy -ayK -aQn -aEv -arj -arj -aJB -aTr -aFA -aol -apG -aka -aSE -aPc -aGW -aQi -ayJ -aGW -aQv -aUc -aJH -aMv -afB -aFZ -agE -acq -afB -aUc -aAM -aKr -adT -ahh -auT -aJH -aUc -aJs -aGW -aJs -aMv -aKi -aXw -aIt -aIt -aIt -aIt -aIt -aJq -aIt -aIt -aIt -aIt -aaJ -aYD -aMo -aSt -aTV -aok -aMo -aSt -aRj -aqM -aMo -aJd -aTV -aNf -aWb -aWb -aWb -aWb -aWb -aNf -aWb -aMo -aoF -aGM -aGM -aEY -alr aaa "} -(157,1,1) = {" +(158,1,1) = {" +aaa aaa aaa aaa @@ -61015,8 +62795,100 @@ aaa aaa aaa aaa +amQ +aaC +aIV +aOx +aIV +aJg +aIV +aGX +atK +agr +axT +aNg +acE +axD +aAn +avt +avt +avt +aAn +aWr +aBE +auA +aUx +anN +aOB +aAb +akk +anF +aPg +aFN +alI +adA +awm +azW +alI +aVH +aLh +aPx +aVF +auq +aDB +aui +aJm +aeC +aJm +aqV +awc +apG +azG +aym +awa +aie +aQA +aqu +asS +aym +axK +apG +apG +adR +awf +awf +awf +awf +awf +ahV +avh +asb +asb +aYN +aIL +aEx +aeq +aWV +apG +aEc +auQ +ayi +apG aaa aaa +aFn +aBo +aBo +aBo +aOw +aBo +aGd +aBo +aOw +aBo +aBo +apS +aFn aaa aaa aaa @@ -61115,105 +62987,165 @@ aaa aaa aaa aaa -adS -adS -agL -adS -adS -ard -aLK -aRX -aGR -ava -atv -agL -aso -aQI -aQI -aQI -asG -aQn -aGS -abX -arj -arj -aXb -avp -ayi -apG -aka -aSE -aPY -aGW -aGW -aGW -aGW -aJX -aNz -aJH -abi -azv -aDF -aAk -aHN -akf -aNz -aAM -aKj -aLv -aHM -auT -aJH -aCq -aHT -aGW -aHT -aMh -aGO -aXw -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aaJ -aTV -aMo -aSt -aTV -aWb -aMo -aSt -aTV -aqM -aMo -aJd -aXx -aMp -aMp -aMp -aMp -aMp -aMp -aMp -aMp -aRo -amw -awq -aGM -axy -alr aaa "} -(158,1,1) = {" +(159,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa +amQ +aXC +aIV +aOx +aIV +aFv +aIV +aGX +atK +agr +aZj +aao +acE +aqT +aAn +avt +aLT +avt +aAn +aqT +aBE +ank +awH +aDR +aYF +auC +awH +aFx +aPg +afH +alX +aJM +aZZ +aGm +alX +afD +aLh +aJm +aJm +adY +aIy +aui +aJm +aLa +aJm +aRv +awc +act +awa +aRG +aRL +aca +aca +aca +aRL +aAh +asS +aKh +aZV +aRx +aRx +aRx +aIG +aTw +afY +aTw +awa +aMy +aMy +aYN +aBI +awf +akS +aWV +aHS +aXb +auQ +ayi +apG aaa aaa +aFn +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aqd +aFn aaa aaa aaa @@ -61313,6 +63245,8 @@ aaa aaa aaa aaa +"} +(160,1,1) = {" aaa aaa aaa @@ -61375,102 +63309,100 @@ aaa aaa aaa aaa -adS -ard -aLK -aLK -aIM -aYE -arq -atv -axz -arr -amW -aUI -aNN -aZH -aQn -aKN -arj -abX -arj +amQ +aaC +aIV +aOx +aIV +atI +aIV +aGX +atK +agr +axo +aOl +acE +aAz +aAn +avt +avt +avt +aAn +amk +aBE +azJ +aoZ +aCi +adO +alA +akX +anR +aPg +asM +alI +auP +aba +aVS +alI +abv +aLh +apo +afe +auq +aDB +aui +aJm +aSY +aJm +amt +awc +avh +aie +aFb +anw +aFb +aFb +aFb +anw +aJJ +alD +avh +aZV +aYT +aYT +aYT +aea +apG +apG +apG +apG +apG +apG +aYN +aBI +awf +akS +aWV +aHS aXb -auQ +aTF ayi apG -aMx -aiA -aHm -aEl -aEl -aEl -aEl -aaM -aiA -aDo -aNH -aTp -azv -afB -akf -aeG -aDb -aDo -agZ -aMf -aXY -auT -amP -aUc -aHT -aRr -aHT -aMv -amP -aXw -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aaJ -agx -aMo -anP -agx -aWb -aOh -anP -aTV -aWb -aMo -apq -aew -aqH -aQC -atU -atU -ala -atU -ala -atU -atU -alr -alr -apF -alr -alr -aaa -"} -(159,1,1) = {" -aaa aaa aaa +aFn +adc +aRy +asC +aRy +asC +aRy +asC +aRy +asC +aRy +aUZ +aFn aaa aaa aaa @@ -61570,6 +63502,8 @@ aaa aaa aaa aaa +"} +(161,1,1) = {" aaa aaa aaa @@ -61632,105 +63566,100 @@ aaa aaa aaa aaa -agL -axb -aLK -aLK -aIM -aYE -abr -atv -agL -ajQ -aKl -aWB -aWB -aNd -adS -aMm -arj -arj -arj +amQ +ahZ +ail +aIV +aIV +atI +aIV +aGX +atK +agr +aAm +aNt +amQ +aDO +aAn +aAn +aAn +aAn +aAn +aDO +amQ +asO +azJ +aTr +aRE +akO +anR +adG +awc +ahE +alI +aIZ +aHB +aDZ +alI +acV +awc +acU +acw +aan +aCm +aej +aJm +aJm +aGu +arR +awc +aOV +ahd +aca +aca +aca +aca +aca +aca +aca +apA +aAF +aZV +aYT +aYT +aYT +aea +apG +apG +aZL +afn +aOs +apG +aYN +aYK +aAd +aJV +aWV +apG aXb -auQ -ayi +avp +aCt apG -aiA -aiA -aiA -aiA -aPT -aDg -acY -aiA -aiA -aUh -aUh -aeI -abi -aQa -aNz -aDb -aUh -aUh -aHP -aQS -aYR -aBf -aSz -aCq -aHT -aHT -aHT -aMh -aSz -aXw -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aaJ -aHr -aMo -aHY -aHr -aWb -aUC -aHY -aTV -aNf -aMo -aae -aew -aFo -aQC -aGs -aGs -aGs -atU -aGs -aGs -aGs -amw -aRa -aGM -akQ -alr -aaa -"} -(160,1,1) = {" -aaa -aaa -aaa -aaa aaa aaa +aFn +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aFn aaa aaa aaa @@ -61830,6 +63759,8 @@ aaa aaa aaa aaa +"} +(162,1,1) = {" aaa aaa aaa @@ -61889,101 +63820,103 @@ aaa aaa aaa aaa -agL -aQN -aLK -aLK -aIM -aYE -arq -atv -adS -adS -aBi -aon -aFY -aet -adS -apG -apG -arj -arj -aXb -auQ -ayi -apG aaa aaa -aiA -aiA -aBk -apz -ada -awc -aiA -aiA -aUh -ans -acY -acY -acY -auU -aUh -aiA -aDg -atw -atx -aUG -amP -aEM -ayQ -aEm -ayQ -auf -amP -aXw -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aaJ -aHr -aMo -aHY -aHr -aWb -aUC -aHY -aTV -aWb -aMo -aae -aew -aUL -aQC -afO -atU -atU -atU -atU -atU -afO -amw -aaB -aGM -akP -alr aaa -"} -(161,1,1) = {" +amQ +amQ +abe +aIV +aIV +aIV +aIV +aVx +amQ +aMO +aEp +amp +aYC +aIN +aOl +aAn +aqT +aAn +axo +and +adE +asO +asO +ank +aiu +aXc +asO +asO +aeP +aUt +afe +alI +alI +alI +apo +aSW +ace +aJG +aGh +aWP +awc +aui +aYg +akq +aui +awc +awc +anc +aVp +anw +aFb +aJJ +aJJ +aFb +aFb +aFb +alD +amZ +aZV +ayE +ayE +ayE +aFa +apG +ajg +aQp +aqK +asA +apG +adZ +abx +abx +abx +aCg +apG +aXb +aTF +ayi +apG aaa aaa +aFn +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aFn aaa aaa aaa @@ -62083,6 +64016,8 @@ aaa aaa aaa aaa +"} +(163,1,1) = {" aaa aaa aaa @@ -62146,101 +64081,99 @@ aaa aaa aaa aaa -agL -aHn -aLK -aLK -aRX -ard -aqO -avG -afh -adS -amQ -amQ -amQ -amQ -amQ amQ +aKp +ail +aIV +aIV +aIV +aGX +aUN +aao +aao +akW +awC +aEP +aJR +aMg +aAn +atL +aJI +aIR +aMF +arj +arj +aJB +aET +aYX +arj +arj +aeP +acQ +aTP +aAB +aAB +aAB +aCG +aLY +ace +aIj +aJm +aJm +asH +aui +aJm +aGu +ali +awc +apG +asS +axK +aSO +aEI +aca +aca +aca +aEI +agN +azG +awa apG apG -aqw +apG +apG +apG +apG +aub +aQp +aqK +asA +apG +aiH +aAV +alp +aWj +aaP +apG aXb -aTF +auQ ayi apG -apG -aaa -awc -atz -aHU -aQq -aDU -aqi -awc -aiA -aUh -aUh -afB -aPj -afB -aUh -aUh -aiA -aiA -aiA -aiA -aiA -aiA -aiA -afB -aPj -afB -aiA -aXw -aXw -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aaJ -aBA -aMo -anP -aBA -aWb -aRf -anP -aTV -aqM -aMo -apq -aew -aIk -aQC -aGs -aGs -aGs -atU -aGs -aGs -aGs -amw -aUU -aGM -aob -alr -aaa -"} -(162,1,1) = {" aaa aaa +aFn +aBo +aBo +aBo +aOw +aBo +aBo +aBo +aOw +aBo +aBo +aBo +aFn aaa aaa aaa @@ -62340,6 +64273,8 @@ aaa aaa aaa aaa +"} +(164,1,1) = {" aaa aaa aaa @@ -62403,99 +64338,100 @@ aaa aaa aaa aaa -adS -ard -arF -agv -auE -amQ -amQ amQ amQ +ahZ +aaz +aRN +abY +aGv amQ -aOj +aJw +aIO +aSK +aYC +auy +aJn aUj amC azP -azu -amQ -amQ -apG +aAm +aoG +adE arj -aXb -avp -ayi arj -apG +aTi +aTi +aTi +arj +arj +aeP +aTG +aCh +ahc +axI +ajZ +aCh +aek +ace +abl +aLE +ajS awc +aEU +aEh +aMB awc -azq -aic -awS -afJ -aUp awc -aiA -aiA -aiA -aiA -aiA -aiA -aiA -aiA -aiA -aaa -aaa +apG +apG +asS +afY +axK +aVs +aNB +awL +azG +afY +awa +apG +apG +avg +aXk +aMQ +apG +apG +aAJ +aQp +aqK +asA +apG +apG +aoh +aqK +aqK +apI +apG +aEc +auQ +ayi +apG aaa aaa -aiA -aiA -aXw -aXw -aXw -aiA -aiA -awc -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aaJ -aYD -aMo -aSt -aTV -aWb -aMo -aSt -aTV -aqM -aMo -aJd -aew -aew -aQC -atU -atU -ala -atU -ala -atU -atU -alr -alr -apF -alr -alr +aFn +aBo +aUR +aBo +aUR +aBo +aUR +aBo +aUR +aBo +aUR +aBo +aFn aaa -"} -(163,1,1) = {" aaa aaa aaa @@ -62594,6 +64530,8 @@ aaa aaa aaa aaa +"} +(165,1,1) = {" aaa aaa aaa @@ -62666,35 +64604,35 @@ amQ amQ amQ amQ -amR -avH +aTh +avO amQ -axl -aXg +aHA +aJn ays amC azF -aAm -aFq +aAp +aAT amQ arj arj -aJB -aET -aYX +aZP +aaE +aQl arj aio awc -ara -atY -aha -aGp -aMD -aoq -aFP +amV +ayk +adq +apy +afq +aII +asj awc -aEr -alh +aBC +aTU awc awc awc @@ -62703,41 +64641,45 @@ awc awc aaa aaa +apG +apG +apG +aVl +aTw +aTw +aTw +axB +apG +apG +apG +ayq +aax +aGJ +acy +aUz +anX +aeS +aax +aqK +aAX +aiW +apG +aoh +aXP +adw +apI +apG +aXb +auQ +ayi +apG aaa aaa -aJb -aXB -aEn -aEn -aEn -aYJ -aJb -awc -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aIt -aaJ -aTV -aMo -aSt -aTV -aWb -aMo -aSt -aTV -aqM -aMo -aJd -aew -adh -aQC +aFn +aBo +aBo +aBo +aBo aBo aBo aBo @@ -62745,14 +64687,8 @@ aBo aBo aBo aBo -amw -awq -aGM -axy -alr +aFn aaa -"} -(164,1,1) = {" aaa aaa aaa @@ -62851,6 +64787,10 @@ aaa aaa aaa aaa +"} +(166,1,1) = {" +aaa +aaa aaa aaa aaa @@ -62914,126 +64854,43 @@ aaa aaa aaa aaa +aaa +awe +agl +aaH +afg +aMZ amQ +aGN amQ -aRm -aAc -aVz -aNx -aZX amQ -atL -aaf -amp -aYC -afS -aJn +amQ +ayU awE amC azN -aAm -aZY -aMF -arj -arj -auc -aZu -auc +agk +amQ +amQ +apG arj +aXb +avp +ayi arj -aOf -aKa -aCh -ahQ -auX -aEo -aCh -ate -ace -aJG -aGh -ajS +apG +awc +awc +avj +aic +alI +afJ +aUp +awc awc -aEC -aEh -aHD awc awc -aaa -aaa -aaa -aJb -azD -abQ -avw -acN -axv -aJb awc -aWg -aJk -aJk -aIJ -aIJ -aJk -aJk -aIJ -aIJ -aWg -aaJ -aXx -aRo -anP -aXx -aMp -aRo -anP -aTV -aWb -aMo -apq -aew -aew -aQC -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aoF -aGM -aGM -aEY -alr -aaa -"} -(165,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -63043,9 +64900,51 @@ aaa aaa aaa aaa +apG +apG +auc +auc +auc +apG +apG aaa +apG +ant +aGJ +aGJ +aGJ +aaA +aqK +aqK +aBj +aqK +aqK +aOA +apG +aoh +aIc +aLq +apI +apG +aXb +aTF +ayi +apG aaa aaa +aFn +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aBo +aFn aaa aaa aaa @@ -63145,6 +65044,8 @@ aaa aaa aaa aaa +"} +(167,1,1) = {" aaa aaa aaa @@ -63171,102 +65072,10 @@ aaa aaa aaa aaa -amQ -amc -avl -aIV -aIV -aIV -aGX -aUN -aao -aao -akW -awC -aEP -aJR -aKG -aAn -atL -aIX -aIR -adE -arj -arj -aZP -aaE -aQl -arj -arj -aOf -acQ -aYS -aHX -aHX -aHX -aLS -asa -ace -arg -aJm -aJm -asH -aui -aJm -aed -ahX -awc aaa aaa aaa -aJb -aJb -azD -aNj -axv -aJb -aJb -awc -awc -awc -awc -awc -awc -awc -awc -awc -awc -awc -awc -anP -afu -afu -afu -afu -afu -afu -aTV -aNf -aMo -aae -aew -aew -aQC -avV -aBo -aBo -axs -aBo -aBo -aBo -amw -aCD -aGM -asl -alr aaa -"} -(166,1,1) = {" aaa aaa aaa @@ -63303,6 +65112,38 @@ aaa aaa aaa aaa +adl +asY +aNb +aNb +aYL +aCM +aGK +alH +avP +awe +amQ +amQ +amQ +amQ +amQ +amQ +apG +apG +aqw +aXb +aTF +ayi +apG +apG +awc +awc +aBh +arf +alI +azV +aBY +awc aaa aaa aaa @@ -63315,8 +65156,52 @@ aaa aaa aaa aaa +apG +asJ +agR +aZP +aaE +aQl +agR +asJ +apG +apG +aoy +aGJ +aGJ +aGJ +aaA +aqK +aqK +aqK +aqK +aqK +agy +apG +aoh +aqK +aqK +apI +apG +aXb +avp +ayi +apG aaa aaa +aFn +avV +aBo +axs +aBo +aBo +aBo +aBo +aBo +axs +aBo +avV +aFn aaa aaa aaa @@ -63416,6 +65301,8 @@ aaa aaa aaa aaa +"} +(168,1,1) = {" aaa aaa aaa @@ -63427,103 +65314,11 @@ aaa aaa aaa aaa -amQ -amQ -abe -aIV -aIV -aIV -aIV -aVx -amQ -aMO -aIO -aSK -aYC -aAI -aNg -aAn -aqT -aAn -axT -abw -adE -asO -asO -ank -aiu -aXc -asO -asO -aOf -axu -aVF -alI -alI -alI -aPx -aKk -ace -abl -aLE -aWP -awc -aui -arQ -agK -aui -awc -awc aaa aaa -apG -aJb -aJb -aJb -aJb -aJb -apG aaa aaa -apG -adJ -aTw -aTw -aTw -aTw -aTw -aTw -ags -apG -apG -apG -apG -apG -apG -apG -apG -aXb -aTF -ayi -aQC -aTN -adf -aQC -aFn -aFn -aiv -aFn -aiv -aFn -aFn -alr -alr -alr -alr -alr aaa -"} -(167,1,1) = {" aaa aaa aaa @@ -63574,6 +65369,38 @@ aaa aaa aaa aaa +adl +aNS +aNb +aNb +aNb +ayj +aCW +azp +awe +awe +aKq +amr +amr +acR +awe +apG +apG +arj +arj +aXb +auQ +ayi +apG +apG +awc +awc +awc +aVX +azO +aRz +awc +awc aaa aaa aaa @@ -63586,6 +65413,52 @@ aaa aaa aaa aaa +apG +aix +arj +aXb +aTF +ayi +arj +aix +apG +apG +aMj +aqY +aGJ +aTJ +aUz +asP +akI +akI +akI +akI +axN +apG +apG +apG +apG +apG +apG +aXb +aTF +ayi +apG +apG +apG +apG +apG +aFn +aFn +aFn +aFn +aFn +aFn +aFn +aFn +aFn +aFn +aFn aaa aaa aaa @@ -63684,133 +65557,9 @@ aaa aaa aaa aaa -amQ -aRm -avl -aIV -aIV -aER -aIV -aGX -atK -agr -aAm -aNt -amQ -aDO -aAn -aAn -aAn -aAn -aAn -ain -amQ -asO -auA -aTW -aRE -aFK -anF -adG -awc -ahE -alI -aIZ -ajX -aDZ -alI -acV -awc -acU -acw -aan -aCm -aej -aJm -aJm -aed -aTR -awc -apG -apG -apG -ajR -aSf -aSf -aSf -aBK -apG -apG -apG -apG -acB -awf -awf -awf -awf -awf -awf -aOp -aRO -aRO -auZ -aWs -aUf -aWs -atH -apG -aXb -auQ -ayi -aQC -aQC -aQC -aQC -avV -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -avV -aFn aaa "} -(168,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +(169,1,1) = {" aaa aaa aaa @@ -63877,6 +65626,85 @@ aaa aaa aaa aaa +adl +aVr +aNb +aNb +aNb +ayj +aQm +avR +aRq +aIa +awG +akC +aUY +azH +awe +aMm +arj +arj +arj +aXb +auQ +aCt +apG +apG +awc +awc +awc +awc +awc +awc +awc +apG +apG +apG +apG +apG +apG +apG +apG +apG +apG +apG +apG +apG +apG +arj +arj +aXb +aTF +ayi +arj +arj +apG +apG +apG +aPb +aGJ +aDP +apG +apG +aBr +atC +acG +aKb +apG +apG +apG +aMm +arj +arj +arj +aXb +auQ +ayi +arj +arj +arj +aFA +apG aaa aaa aaa @@ -63941,103 +65769,9 @@ aaa aaa aaa aaa -amQ -aaC -aIV -aOx -aIV -aJg -aIV -aGX -atK -agr -axT -aNg -acE -axD -aAn -avt -avt -avt -aAn -aWr -aBE -auA -aUx -anN -aOB -aAb -akk -anF -aPg -aFN -alI -adA -awm -azW -alI -aVH -aLh -aPx -aVF -auq -aDB -aui -aJm -aeC -aJm -aqV -awc -apG -azG -aym -awa -aie -aQA -aqu -asS -aym -axK -apG -apG -adR -awf -awf -awf -awf -awf -ahV -avh -asb -asb -aYN -aIL -aEx -aeq -aWV -apG -aEc -auQ -ayi -apG aaa aaa -aFn -aBo -aBo -aBo -aOw -aBo -aGd -aBo -aOw -aBo -aBo -apS -aFn aaa -"} -(169,1,1) = {" aaa aaa aaa @@ -64081,6 +65815,8 @@ aaa aaa aaa aaa +"} +(170,1,1) = {" aaa aaa aaa @@ -64147,6 +65883,85 @@ aaa aaa aaa aaa +awe +agl +aNb +aNb +aNb +ayj +aCW +avS +azp +aqB +atk +akC +atk +azI +aWW +aEv +arj +abX +arj +aXb +auQ +ayi +avk +arj +arj +aOO +arj +arj +aOO +arj +arj +arj +aOO +arj +arj +arj +arj +arj +aOO +arj +arj +aMK +kEZ +qGX +aOO +arj +arj +aXb +aTF +ayi +arj +arj +arj +arj +asJ +apG +aam +apG +asJ +aFA +ait +aRO +aRO +alu +aFA +apG +aMl +aEv +arj +abX +arj +aXb +auQ +ayi +arj +abX +arj +arj +apG aaa aaa aaa @@ -64198,103 +66013,9 @@ aaa aaa aaa aaa -amQ -aXC -aIV -aOx -aIV -aFv -aIV -aGX -atK -agr -aZj -aao -acE -aqT -aAn -avt -aLT -avt -aAn -aqT -aBE -ank -awH -aDR -aYF -auC -awH -aFx -aPg -afH -alX -aJM -aZZ -aGm -alX -afD -aLh -aJm -aJm -adY -aIy -aui -aJm -aLa -aJm -aRv -awc -act -awa -aRG -aRL -aca -aca -aca -aRL -aAh -asS -aKh -aZV -aRx -aRx -aRx -aIG -aTw -afY -aTw -awa -aMy -aMy -aYN -aBI -awf -akS -aWV -aHS -aXb -auQ -ayi -apG aaa aaa -aFn -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aqd -aFn aaa -"} -(170,1,1) = {" aaa aaa aaa @@ -64351,6 +66072,8 @@ aaa aaa aaa aaa +"} +(171,1,1) = {" aaa aaa aaa @@ -64414,6 +66137,88 @@ aaa aaa aaa aaa +awe +awe +adl +awe +awe +agl +aNb +aYL +ayo +aNR +afF +axq +aTl +acK +ajE +acK +aHI +aWW +aGS +abX +arj +aZP +aqf +avp +aNV +aQl +bWo +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj +aMK +kEZ +pVf +arj +arj +aZP +aqf +avp +aNV +aQl +arj +arj +arj +aMK +auN +aRA +alE +asJ +azf +aJU +ari +aAj +aiG +aXz +apG +anI +aGS +abX +arj +arj +aXb +avp +ayi +arj +arj +abX +arj +apG aaa aaa aaa @@ -64455,103 +66260,9 @@ aaa aaa aaa aaa -amQ -aaC -aIV -aOx -aIV -atI -aIV -aGX -atK -agr -axo -aOl -acE -aAz -aAn -avt -avt -avt -aAn -amk -aBE -azJ -aoZ -aCi -adO -alA -akX -anR -aPg -asM -alI -auP -aba -aVS -alI -abv -aLh -apo -afe -auq -aDB -aui -aJm -aSY -aJm -amt -awc -avh -aie -aFb -anw -aFb -aFb -aFb -anw -aJJ -alD -avh -aZV -aYT -aYT -aYT -aea -apG -apG -apG -apG -apG -apG -aYN -aBI -awf -akS -aWV -aHS -aXb -aTF -ayi -apG aaa aaa -aFn -adc -aRy -asC -aRy -asC -aRy -asC -aRy -asC -aRy -aUZ -aFn aaa -"} -(171,1,1) = {" aaa aaa aaa @@ -64618,6 +66329,8 @@ aaa aaa aaa aaa +"} +(172,1,1) = {" aaa aaa aaa @@ -64680,6 +66393,89 @@ aaa aaa aaa aaa +awe +awe +afg +aUK +afg +awe +awe +aNb +aYL +auw +avS +azp +awe +awe +aaU +alZ +akN +aQs +aWW +aKN +arj +arj +aXb +aMl +aFA +aMl +ayi +tWL +aCu +aCu +aCu +aCu +aCu +aCu +aCu +aCu +aCu +aCu +aCu +aCu +aCu +aCu +aCu +aCu +aCu +ahi +kEZ +gHM +arj +arj +aXb +aMl +aFA +aMl +ayi +aOK +aOK +aOK +aZS +aXb +aTF +ayi +apG +apG +aTC +aTC +aTC +aTC +apG +apG +aMl +aKN +arj +arj +aZP +aTW +aFA +aFK +aQl +arj +arj +arj +apG aaa aaa aaa @@ -64712,103 +66508,9 @@ aaa aaa aaa aaa -amQ -ahZ -ail -aIV -aIV -atI -aIV -aGX -atK -agr -aAm -aNt -amQ -aDO -aAn -aAn -aAn -aAn -aAn -aDO -amQ -asO -azJ -aTr -aRE -akO -anR -adG -awc -ahE -alI -aIZ -aHB -aDZ -alI -acV -awc -acU -acw -aan -aCm -aej -aJm -aJm -aGu -arR -awc -aOV -ahd -aca -aca -aca -aca -aca -aca -aca -apA -aAF -aZV -aYT -aYT -aYT -aea -apG -apG -aZL -afn -aOs -apG -aYN -aYK -aAd -aJV -aWV -apG -aXb -avp -aCt -apG aaa aaa -aFn -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aFn aaa -"} -(172,1,1) = {" aaa aaa aaa @@ -64884,6 +66586,8 @@ aaa aaa aaa aaa +"} +(173,1,1) = {" aaa aaa aaa @@ -64946,6 +66650,89 @@ aaa aaa aaa aaa +adl +aCQ +aNb +aNb +aNb +aZz +adl +aNb +asR +aux +avS +avR +alH +aiM +arP +apw +agz +akN +aAr +aZP +aaE +aaE +aqf +aod +aDC +ang +aNV +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aaE +aQl +lKm +aZP +aaE +aqf +aod +aDC +ang +aNV +aaE +aaE +aaE +aaE +aqf +aTF +aNV +aaE +aaE +aaE +aaE +aaE +aaE +aQY +aQl +agG +aZP +aaE +aaE +aqf +aod +aDC +ang +aNV +aaE +aaE +aQl +apG aaa aaa aaa @@ -64969,103 +66756,9 @@ aaa aaa aaa aaa -amQ -amQ -abe -aIV -aIV -aIV -aIV -aVx -amQ -aMO -aEp -amp -aYC -aIN -aOl -aAn -aqT -aAn -axo -and -adE -asO -asO -ank -aiu -aXc -asO -asO -aeP -aUt -afe -alI -alI -alI -apo -aSW -ace -aJG -aGh -aWP -awc -aui -aYg -akq -aui -awc -awc -anc -aVp -anw -aFb -aJJ -aJJ -aFb -aFb -aFb -alD -amZ -aZV -ayE -ayE -ayE -aFa -apG -ajg -aQp -aqK -asA -apG -adZ -abx -abx -abx -aCg -apG -aXb -aTF -ayi -apG aaa aaa -aFn -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aFn aaa -"} -(173,1,1) = {" aaa aaa aaa @@ -65150,6 +66843,8 @@ aaa aaa aaa aaa +"} +(174,1,1) = {" aaa aaa aaa @@ -65212,6 +66907,89 @@ aaa aaa aaa aaa +awe +ajM +sTV +acu +aNb +aXW +aCx +aUA +aFF +aRe +avS +avS +amb +adl +arP +azk +azk +aLc +aAr +aqh +auQ +auQ +avp +aQo +aeT +anh +avp +auQ +auQ +avp +auQ +auQ +auQ +aTF +avp +aTF +auQ +auQ +auQ +aTF +avp +aTF +auQ +auQ +auQ +aTF +iJG +lKm +cGT +auQ +avp +aQo +aeT +anh +avp +auQ +auQ +aTF +avp +aTF +auQ +auQ +auQ +aTF +avp +aTF +auQ +auQ +auQ +ayi +afp +aXb +auQ +auQ +avp +aQo +aYF +anh +avp +auQ +auQ +ayi +apG aaa aaa aaa @@ -65227,102 +67005,9 @@ aaa aaa aaa aaa -amQ -aKp -ail -aIV -aIV -aIV -aGX -aUN -aao -aao -akW -awC -aEP -aJR -aMg -aAn -atL -aJI -aIR -aMF -arj -arj -aJB -aET -aYX -arj -arj -aeP -acQ -aTP -aAB -aAB -aAB -aCG -aLY -ace -aIj -aJm -aJm -asH -aui -aJm -aGu -ali -awc -apG -asS -axK -aSO -aEI -aca -aca -aca -aEI -agN -azG -awa -apG -apG -apG -apG -apG -apG -aub -aQp -aqK -asA -apG -aiH -aAV -alp -aWj -aaP -apG -aXb -auQ -ayi -apG aaa aaa -aFn -aBo -aBo -aBo -aOw -aBo -aBo -aBo -aOw -aBo -aBo -aBo -aFn aaa -"} -(174,1,1) = {" aaa aaa aaa @@ -65415,6 +67100,8 @@ aaa aaa aaa aaa +"} +(175,1,1) = {" aaa aaa aaa @@ -65477,6 +67164,89 @@ aaa aaa aaa aaa +adl +aCQ +aNb +aNb +aNb +aFV +adl +aNb +asR +aux +avS +afF +avW +aiM +arP +apw +aHW +azK +aAr +aJB +aET +aET +ahI +aKy +arX +aMG +aDj +aET +aET +aET +aET +aET +aET +aET +aET +aET +aTF +auQ +aTF +aET +aET +aET +aET +aET +aET +aET +aYX +lKm +aJB +aET +ahI +aKy +arX +aMG +aDj +aET +aET +aET +aET +aET +aET +aET +aET +aET +aET +aET +aET +aET +aET +aYX +agG +aJB +aET +aET +ahI +aKy +arX +aMG +aDj +aET +aET +aYX +apG aaa aaa aaa @@ -65484,102 +67254,9 @@ aaa aaa aaa aaa -amQ -amQ -ahZ -aaz -aRN -abY -aGv -amQ -aJw -aIO -aSK -aYC -auy -aJn -aUj -amC -azP -aAm -aoG -adE -arj -arj -aTi -aTi -aTi -arj -arj -aeP -aTG -aCh -ahc -axI -ajZ -aCh -aek -ace -abl -aLE -ajS -awc -aEU -aEh -aMB -awc -awc -apG -apG -asS -afY -axK -aVs -aNB -awL -azG -afY -awa -apG -apG -avg -aXk -aMQ -apG -apG -aAJ -aQp -aqK -asA -apG -apG -aoh -aqK -aqK -apI -apG -aEc -auQ -ayi -apG aaa aaa -aFn -aBo -aUR -aBo -aUR -aBo -aUR -aBo -aUR -aBo -aUR -aBo -aFn aaa -"} -(175,1,1) = {" aaa aaa aaa @@ -65680,6 +67357,8 @@ aaa aaa aaa aaa +"} +(176,1,1) = {" aaa aaa aaa @@ -65742,101 +67421,92 @@ aaa aaa aaa aaa -amQ -amQ -amQ -amQ -amQ -amQ -amQ -amQ -aTh -avO -amQ -aHA -aJn -ays -amC -azF -aAp -aAT -amQ +awe +awe +afE +aAO +afE +awe +awe +aNb +aYL +aWv +avS +azp +awe +awe +aIb +aqE +azK +aJA +aWW +aEv arj arj -aZP -aaE -aQl +aXb +aMl +aFA +aMl +ayi +aZB +arl +arl +arl +arl +arl +arl +arl +kTQ +aTg +abM +aml +vrG +aOg +aEy +acS +aOg +aWf +aPe +kEZ +qGX +arj arj -aio -awc -amV -ayk -adq -apy -afq -aII -asj -awc -aBC -aTU -awc -awc -awc -awc -awc -awc -aaa -aaa -apG -apG -apG -aVl -aTw -aTw -aTw -axB -apG -apG -apG -ayq -aax -aGJ -acy -aUz -anX -aeS -aax -aqK -aAX -aiW -apG -aoh -aXP -adw -apI -apG aXb -auQ +aMl +aFA +aMl ayi +arl +arl +arl +arl +arl +arl +arl +arl +arl +arl +arl +arl +arl +arl +apG +aMl +aEv +arj +arj +aJB +aTr +aFA +akO +aYX +arj +arj +arj apG aaa aaa -aFn -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aFn aaa -"} -(176,1,1) = {" aaa aaa aaa @@ -65944,6 +67614,14 @@ aaa aaa aaa aaa +"} +(177,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66002,41 +67680,87 @@ aaa aaa aaa awe +awe +adl +awe +awe agl -aaH -afg -aMZ -amQ -aGN -amQ -amQ -amQ -ayU -awE -amC -azN -agk -amQ -amQ +aNb +aYL +aeK +ahM +avR +aRq +aIa +amr +anv +amr +ahm +aWW +aGS +abX +arj +aJB +ahI +avp +aDj +aYX +bWo +arj +arj +arj +arj +arj +arj +arj +hfx +aTg +jmZ +aml +kcm +aUB +aeT +aoW +aXz +aBa +ait +kEZ +pVf +arj +arj +aJB +aET +aee +aET +aYX +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj +arj apG +anI +aGS +abX +arj arj aXb avp ayi arj +arj +abX +arj apG -awc -awc -avj -aic -alI -afJ -aUp -awc -awc -awc -awc -awc aaa aaa aaa @@ -66046,54 +67770,9 @@ aaa aaa aaa aaa -apG -apG -auc -auc -auc -apG -apG -aaa -apG -ant -aGJ -aGJ -aGJ -aaA -aqK -aqK -aBj -aqK -aqK -aOA -apG -aoh -aIc -aLq -apI -apG -aXb -aTF -ayi -apG aaa aaa -aFn -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aBo -aFn aaa -"} -(177,1,1) = {" aaa aaa aaa @@ -66192,6 +67871,8 @@ aaa aaa aaa aaa +"} +(178,1,1) = {" aaa aaa aaa @@ -66258,41 +67939,85 @@ aaa aaa aaa aaa -adl -asY +awe +agl aNb aNb -aYL -aCM -aGK -alH -avP -awe -amQ -amQ -amQ -amQ -amQ -amQ -apG -apG -aqw +aNb +ayj +aCW +avS +azp +aqB +atk +akC +atk +azI +aWW +aKN +arj +abX +arj aXb -aTF +auQ ayi +aZB +arj +arj +arj +aHi +arj +arj +arj +arj +hfx +aBt +aFH +aPa +kcm +aSJ +aUB +iQv +ayz +aFA +aja +kEZ +gHM +arj +arj +arj +aHi +arj +arj +arj +arj +arj +aHi +arj +arj +arj +aHi +arj +arj +arj +aHi +arj +arj +arj apG +aMl +aKN +arj +abX +arj +aXb +auQ +ayi +arj +abX +arj +arj apG -awc -awc -aBh -arf -alI -azV -aBY -awc -aaa -aaa -aaa aaa aaa aaa @@ -66302,55 +68027,9 @@ aaa aaa aaa aaa -apG -asJ -agR -aZP -aaE -aQl -agR -asJ -apG -apG -aoy -aGJ -aGJ -aGJ -aaA -aqK -aqK -aqK -aqK -aqK -agy -apG -aoh -aqK -aqK -apI -apG -aXb -avp -ayi -apG aaa aaa -aFn -avV -aBo -axs -aBo -aBo -aBo -aBo -aBo -axs -aBo -avV -aFn aaa -"} -(178,1,1) = {" aaa aaa aaa @@ -66449,6 +68128,8 @@ aaa aaa aaa aaa +"} +(179,1,1) = {" aaa aaa aaa @@ -66516,101 +68197,84 @@ aaa aaa aaa adl -aNS +aBu aNb aNb aNb ayj -aCW -azp -awe -awe -aKq -amr -amr -acR +aQm +afF +axq +aTl +awK +akC +aUY +azH awe -apG -apG +aMm +arj arj arj aXb auQ -ayi +aCt +acg +acg +acg +acg +acg +acg +acg +acg +acg +acg +aNO +acg +aNO +acg +acg +acg +acg +acg +acg +acg +acg +acg +acg apG apG -awc -awc -awc -aVX -azO -aRz -awc -awc -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa apG -aix -arj -aXb -aTF -ayi -arj -aix apG apG -aMj -aqY -aGJ -aTJ -aUz -asP -akI -akI -akI -akI -axN apG apG apG apG apG apG -aXb -aTF -ayi apG apG apG apG apG -aFn -aFn -aFn -aFn -aFn -aFn -aFn -aFn -aFn -aFn -aFn -aaa -"} -(179,1,1) = {" -aaa -aaa -aaa +apG +apG +apG +apG +apG +apG +aMm +arj +arj +arj +aJB +aET +aYX +arj +arj +arj +aFA +apG aaa aaa aaa @@ -66721,6 +68385,8 @@ aaa aaa aaa aaa +"} +(180,1,1) = {" aaa aaa aaa @@ -66759,6 +68425,21 @@ aaa aaa aaa aaa +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV aaa aaa aaa @@ -66773,89 +68454,50 @@ aaa aaa aaa adl -aVr +aNS aNb aNb aNb ayj -aQm -avR -aRq -aIa -awG -akC -aUY -azH +aCW +azp +awe +awe +aOJ +acK +acK +aus awe -aMm -arj -arj -arj -aXb -auQ -aCt -apG -apG -awc -awc -awc -awc -awc -awc -awc -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -arj -arj -aXb -aTF -ayi -arj -arj -apG -apG -apG -aPb -aGJ -aDP -apG -apG -aBr -atC -acG -aKb -apG apG apG -aMm -arj -arj -arj -aXb -auQ -ayi -arj arj -arj -aFA -apG -aaa -aaa -aaa -aaa -aaa +arj +aXb +auQ +ayi +acg +abM +abM +aFM +qqF +hsh +pgU +vZP +cFo +gRd +apN +azU +aTS +ike +jPc +hAZ +skB +cjY +xte +aFD +abM +abM +acg aaa aaa aaa @@ -66863,8 +68505,6 @@ aaa aaa aaa aaa -"} -(180,1,1) = {" aaa aaa aaa @@ -66879,6 +68519,19 @@ aaa aaa aaa aaa +apG +apG +apG +apG +apG +apG +apG +apG +apG +apG +apG +apG +apG aaa aaa aaa @@ -66903,21 +68556,6 @@ aaa aaa aaa aaa -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV aaa aaa aaa @@ -67004,6 +68642,8 @@ aaa aaa aaa aaa +"} +(181,1,1) = {" aaa aaa aaa @@ -67029,85 +68669,6 @@ aaa aaa aaa aaa -awe -agl -aNb -aNb -aNb -ayj -aCW -avS -azp -aqB -atk -akC -atk -azI -aWW -aEv -arj -abX -arj -aXb -auQ -ayi -avk -arj -arj -aOO -arj -arj -aOO -arj -arj -arj -aOO -arj -arj -arj -arj -arj -aOO -arj -arj -aMK -aEz -asc -aOO -arj -arj -aXb -aTF -ayi -arj -arj -arj -arj -asJ -apG -aam -apG -asJ -aFA -ait -aRO -aRO -alu -aFA -apG -aMl -aEv -arj -abX -arj -aXb -auQ -ayi -arj -abX -arj -arj -apG aaa aaa aaa @@ -67115,18 +68676,85 @@ aaa aaa aaa aaa +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV aaa aaa aaa aaa aaa -"} -(181,1,1) = {" aaa aaa aaa aaa aaa +adl +aRU +aNb +aNb +aYL +aNq +ave +avW +avP +awe +awe +awe +awe +awe +awe +apG +apG +apG +arj +aJB +aET +aYX +acg +abM +rNh +aFM +dki +hdA +hdA +hdA +hdA +uNf +aTg +aQj +aml +qne +hdA +hdA +hdA +hdA +qVW +aFD +rNh +abM +acg aaa aaa aaa @@ -67154,30 +68782,6 @@ aaa aaa aaa aaa -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV aaa aaa aaa @@ -67283,88 +68887,6 @@ aaa aaa aaa aaa -awe -awe -adl -awe -awe -agl -aNb -aYL -ayo -aNR -afF -axq -aTl -acK -ajE -acK -aHI -aWW -aGS -abX -arj -aZP -aqf -avp -aNV -aQl -aKt -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -aMK -aEz -aSl -arj -arj -aZP -aqf -avp -aNV -aQl -arj -arj -arj -aMK -auN -aRA -alE -asJ -azf -aJU -ari -aAj -aiG -aXz -apG -anI -aGS -abX -arj -arj -aXb -avp -ayi -arj -arj -abX -arj -apG aaa aaa aaa @@ -67445,6 +68967,122 @@ aaa aaa aaa aaa +awe +agl +any +afE +aMZ +awe +awe +awe +awe +awe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +apG +apG +apG +apG +apG +acg +abM +abM +aFM +dki +hdA +hdA +hdA +hdA +uNf +aTg +jmZ +aml +qne +hdA +hdA +hdA +hdA +qVW +xih +cFh +cFh +acg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67518,6 +69156,14 @@ aaa aaa aaa aaa +"} +(183,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67539,89 +69185,51 @@ aaa aaa aaa aaa +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +anV +aaa +aaa +aaa +aaa +aaa +aaa awe awe -afg -aUK -afg awe awe -aNb -aYL -auw -avS -azp awe awe -aaU -alZ -akN -aQs -aWW -aKN -arj -arj -aXb -aMl -aFA -aMl -ayi -anC -aCu -aCu -aCu -aCu -aCu -aCu -aCu -aCu -aCu -aCu -aCu -aCu -aCu -aCu -aCu -aCu -aCu -ahi -aEz -aEQ -arj -arj -aXb -aMl -aFA -aMl -ayi -aOK -aOK -aOK -aZS -aXb -aTF -ayi -apG -apG -aTC -aTC -aTC -aTC -apG -apG -aMl -aKN -arj -arj -aZP -aTW -aFA -aFK -aQl -arj -arj -arj -apG aaa aaa aaa @@ -67634,8 +69242,38 @@ aaa aaa aaa aaa -"} -(183,1,1) = {" +aaa +aaa +aaa +aaa +acg +skO +voH +voH +vtr +hdA +hdA +hdA +hdA +uNf +aTg +abM +aml +qne +hdA +hdA +hdA +hdA +ouy +voH +voH +drb +acg +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67663,39 +69301,6 @@ aaa aaa aaa aaa -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV -anV aaa aaa aaa @@ -67796,89 +69401,6 @@ aaa aaa aaa aaa -adl -aCQ -aNb -aNb -aNb -aZz -adl -aNb -asR -aux -avS -avR -alH -aiM -arP -apw -agz -akN -aAr -aZP -aaE -aaE -aqf -aod -aDC -ang -aNV -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aaE -aQl -aoo -aZP -aaE -aqf -aod -aDC -ang -aNV -aaE -aaE -aaE -aaE -aqf -aTF -aNV -aaE -aaE -aaE -aaE -aaE -aaE -aQY -aQl -agG -aZP -aaE -aaE -aqf -aod -aDC -ang -aNV -aaE -aaE -aQl -apG aaa aaa aaa @@ -67981,6 +69503,89 @@ aaa aaa aaa aaa +acg +dki +hdA +hdA +hdA +hdA +hdA +hdA +hdA +uNf +aTg +abM +aml +qne +hdA +hdA +hdA +hdA +hdA +hdA +hdA +qVW +acg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -68053,89 +69658,6 @@ aaa aaa aaa aaa -awe -ajM -aNb -acu -aNb -aXW -aCx -aUA -aFF -aRe -avS -avS -amb -adl -arP -azk -azk -aLc -aAr -aqh -auQ -auQ -avp -aQo -aeT -anh -avp -auQ -auQ -avp -auQ -auQ -auQ -aTF -avp -aTF -auQ -auQ -auQ -aTF -avp -aTF -auQ -auQ -auQ -aTF -aqq -aoo -aXV -auQ -avp -aQo -aeT -anh -avp -auQ -auQ -aTF -avp -aTF -auQ -auQ -auQ -aTF -avp -aTF -auQ -auQ -auQ -ayi -afp -aXb -auQ -auQ -avp -aQo -aYF -anh -avp -auQ -auQ -ayi -apG aaa aaa aaa @@ -68238,6 +69760,89 @@ aaa aaa aaa aaa +acg +dki +hdA +hdA +kIi +fRS +lMm +hdA +hdA +blf +aTg +jmZ +aml +xMe +hdA +hdA +kIi +fRS +lMm +hdA +hdA +rtD +acg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -68310,89 +69915,6 @@ aaa aaa aaa aaa -adl -aCQ -aNb -aNb -aNb -aFV -adl -aNb -asR -aux -avS -afF -avW -aiM -arP -apw -aHW -azK -aAr -aJB -aET -aET -ahI -aKy -arX -aMG -aDj -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aYX -aoo -aJB -aET -ahI -aKy -arX -aMG -aDj -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aET -aYX -agG -aJB -aET -aET -ahI -aKy -arX -aMG -aDj -aET -aET -aYX -apG aaa aaa aaa @@ -68495,6 +70017,89 @@ aaa aaa aaa aaa +acg +rLi +tEv +tEv +pYm +dCz +qze +hdA +hdA +tCt +aTg +aQj +aml +oNH +hdA +hdA +pYm +dCz +qze +hdA +hdA +toM +acg +acg +acg +acg +acg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -68567,89 +70172,6 @@ aaa aaa aaa aaa -awe -awe -afE -aAO -afE -awe -awe -aNb -aYL -aWv -avS -azp -awe -awe -aIb -aqE -azK -aJA -aWW -aEv -arj -arj -aXb -aMl -aFA -aMl -ayi -aZB -arl -arl -arl -arl -arl -arl -arl -acg -acg -aNO -acg -acg -aOg -aEy -acS -aOg -aWf -aPe -aEz -asc -arj -arj -aXb -aMl -aFA -aMl -ayi -arl -arl -arl -arl -arl -arl -arl -arl -arl -arl -arl -arl -arl -arl -apG -aMl -aEv -arj -arj -aJB -aTr -aFA -akO -aYX -arj -arj -arj -apG aaa aaa aaa @@ -68752,6 +70274,88 @@ aaa aaa aaa aaa +acg +veh +iCr +egY +veX +gBx +peK +hdA +hdA +wcr +aTg +jmZ +aml +yhG +hdA +hdA +veX +gBx +peK +hdA +hdA +qVW +eWh +gSn +pXo +tlQ +acg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -68825,88 +70429,6 @@ aaa aaa aaa aaa -awe -awe -adl -awe -awe -agl -aNb -aYL -aeK -ahM -avR -aRq -aIa -amr -anv -amr -ahm -aWW -aGS -abX -arj -aJB -ahI -avp -aDj -aYX -aKt -arj -arj -arj -arj -arj -arj -arj -acg -aip -azU -aFe -acg -aUB -aMN -aoW -aXz -aBa -ait -aEz -aSl -arj -arj -aJB -aET -aee -aET -aYX -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -arj -apG -anI -aGS -abX -arj -arj -aXb -avp -ayi -arj -arj -abX -arj -apG aaa aaa aaa @@ -69009,6 +70531,85 @@ aaa aaa aaa aaa +acg +bCf +saC +jhU +egY +dki +hdA +hdA +hdA +uNf +aTg +abM +aml +qne +hdA +hdA +hdA +hdA +hdA +hdA +hdA +qVW +eWh +yaU +tqd +nzM +acg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69085,85 +70686,6 @@ aaa aaa aaa aaa -awe -agl -aNb -aNb -aNb -ayj -aCW -avS -azp -aqB -atk -akC -atk -azI -aWW -aKN -arj -abX -arj -aXb -auQ -ayi -aZB -arj -arj -arj -aHi -arj -arj -arj -arj -acg -aBt -aFH -aPa -acg -aSJ -aUB -aFA -ayz -aFA -aja -aEz -aEQ -arj -arj -arj -aHi -arj -arj -arj -arj -arj -aHi -arj -arj -arj -aHi -arj -arj -arj -aHi -arj -arj -arj -apG -aMl -aKN -arj -abX -arj -aXb -auQ -ayi -arj -abX -arj -arj -apG aaa aaa aaa @@ -69266,6 +70788,85 @@ aaa aaa aaa aaa +acg +ode +mCP +wmA +xxA +ihy +tEv +tEv +tEv +ggS +aTg +abM +aml +wkZ +tEv +tEv +tEv +tEv +tEv +tEv +tEv +cOz +eWh +pXo +yaU +ldR +acg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69342,85 +70943,6 @@ aaa aaa aaa aaa -adl -aBu -aNb -aNb -aNb -ayj -aQm -afF -axq -aTl -awK -akC -aUY -azH -awe -aMm -arj -arj -arj -aXb -auQ -aCt -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -aNO -acg -aNO -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -aMm -arj -arj -arj -aJB -aET -aYX -arj -arj -arj -aFA -apG aaa aaa aaa @@ -69523,6 +71045,85 @@ aaa aaa aaa aaa +acg +ydt +gyJ +xzi +efN +egY +egY +egY +egY +hke +aTg +jmZ +aml +gjY +egY +egY +egY +egY +egY +egY +egY +egY +eWh +pXo +tvA +xdU +acg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69599,85 +71200,6 @@ aaa aaa aaa aaa -adl -aNS -aNb -aNb -aNb -ayj -aCW -azp -awe -awe -aOJ -acK -acK -aus -awe -apG -apG -arj -arj -aXb -auQ -ayi -acg -abM -abM -aFM -aQX -agY -agY -agY -agY -aMW -apN -azU -aTS -aly -agY -agY -agY -agY -aQX -aFD -abM -abM -acg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG -apG aaa aaa aaa @@ -69780,6 +71302,51 @@ aaa aaa aaa aaa +acg +mCs +gCO +uYG +efN +egY +bnc +egY +egY +hke +aTg +aQj +aml +gjY +egY +egY +bnc +egY +egY +egY +egY +egY +eWh +tzK +mkD +pXo +acg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69856,51 +71423,6 @@ aaa aaa aaa aaa -adl -aRU -aNb -aNb -aYL -aNq -ave -avW -avP -awe -awe -awe -awe -awe -awe -apG -apG -apG -arj -aJB -aET -aYX -acg -abM -aSa -aFM -agY -agY -agY -agY -agY -agY -aTg -aQj -aml -agY -agY -agY -agY -agY -agY -aFD -aSa -abM -acg aaa aaa aaa @@ -70037,6 +71559,44 @@ aaa aaa aaa aaa +acg +oEQ +uDr +gmQ +efN +egY +egY +egY +egY +hke +aTg +jmZ +aml +gjY +egY +egY +egY +egY +egY +egY +egY +egY +eWh +oyQ +yaU +fWt +acg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -70113,16 +71673,6 @@ aaa aaa aaa aaa -awe -agl -any -afE -aMZ -awe -awe -awe -awe -awe aaa aaa aaa @@ -70130,34 +71680,6 @@ aaa aaa aaa aaa -apG -apG -apG -apG -apG -acg -abM -abM -aFM -agY -agY -agY -agY -agY -aJN -aBt -aFH -aPa -aFL -agY -agY -agY -agY -agY -aFD -abM -abM -acg aaa aaa aaa @@ -70294,6 +71816,35 @@ aaa aaa aaa aaa +acg +gqw +exy +ojs +gYo +oPp +voH +voH +voH +tLg +aTg +abM +aml +mho +voH +voH +voH +voH +voH +voH +voH +oEF +eWh +yaU +pXo +yaU +acg +aaa +aaa aaa aaa aaa @@ -70370,12 +71921,6 @@ aaa aaa aaa aaa -awe -awe -awe -awe -awe -awe aaa aaa aaa @@ -70392,29 +71937,6 @@ aaa aaa aaa aaa -acg -acg -acg -acg -acg -asV -asV -asV -asV -asV -asV -asV -asV -asV -asV -asV -asV -asV -acg -acg -acg -acg -acg aaa aaa aaa @@ -70551,6 +72073,33 @@ aaa aaa aaa aaa +acg +bCf +hQH +wdp +egY +dki +hdA +hdA +hdA +uNf +aTg +abM +aml +qne +hdA +hdA +hdA +hdA +hdA +hdA +hdA +qVW +eWh +bfA +tzK +oyQ +acg aaa aaa aaa @@ -70657,33 +72206,6 @@ aaa aaa aaa aaa -auz -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaa aaa aaa @@ -70808,33 +72330,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +acg +lQf +gfj +egY +duq +fRS +gEP +hdA +hdA +sYg +aTg +jmZ +aml +vOK +hdA +hdA +kIi +fRS +lMm +hdA +hdA +qVW +eWh +pXo +pXo +tvA +acg aaa aaa aaa @@ -71065,33 +72587,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +acg +jFK +voH +voH +pYm +uSs +qze +hdA +hdA +ooz +aTg +aQj +aml +lhf +hdA +hdA +pYm +uSs +qze +hdA +hdA +toM +acg +acg +acg +acg +acg aaa aaa aaa @@ -71322,29 +72844,29 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +acg +dki +hdA +hdA +nwT +gBx +rGd +hdA +hdA +fuy +aTg +jmZ +aml +tzv +hdA +hdA +veX +gBx +peK +hdA +hdA +rtD +acg aaa aaa aaa @@ -71579,29 +73101,29 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +acg +dki +hdA +hdA +hdA +hdA +hdA +hdA +hdA +uNf +aTg +abM +aml +qne +hdA +hdA +hdA +hdA +hdA +hdA +hdA +qVW +acg aaa aaa aaa @@ -71836,29 +73358,29 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +acg +ihy +tEv +tEv +tEv +tEv +tEv +tEv +tEv +fcP +aTg +abM +aml +bYA +tEv +tEv +tEv +tEv +tEv +tEv +tEv +gMl +acg aaa aaa aaa @@ -72093,29 +73615,29 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +acg +abM +abM +aFM +apN +azU +azU +azU +azU +azU +xSB +jmZ +sOU +azU +azU +azU +azU +azU +aTS +yfp +hFy +hFy +acg aaa aaa aaa @@ -72350,29 +73872,29 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +acg +abM +rNh +aFM +aTg +jmZ +aQj +jmZ +abM +abM +jmZ +aQj +jmZ +abM +abM +jmZ +aQj +jmZ +aml +aFD +rNh +abM +acg aaa aaa aaa @@ -72607,29 +74129,29 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +acg +abM +abM +aFM +aBt +lMs +jmZ +jmZ +jmZ +jmZ +jmZ +jmZ +jmZ +jmZ +jmZ +jmZ +jmZ +cvJ +aPa +aFD +abM +abM +acg aaa aaa aaa @@ -72864,29 +74386,29 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +acg +acg +acg +acg +acg +asV +asV +asV +asV +asV +asV +asV +asV +asV +asV +asV +asV +asV +acg +acg +acg +acg +acg aaa aaa aaa @@ -73129,7 +74651,7 @@ aaa aaa aaa aaa -aaa +auz aaa aaa aaa diff --git a/_maps/map_files/tramstation/maintenance_modules/dormmedupper_attachment_a_3.dmm b/_maps/map_files/tramstation/maintenance_modules/dormmedupper_attachment_a_3.dmm index b4e024fcd23b..342a0007e032 100644 --- a/_maps/map_files/tramstation/maintenance_modules/dormmedupper_attachment_a_3.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/dormmedupper_attachment_a_3.dmm @@ -5,12 +5,12 @@ /area/station/maintenance/department/crew_quarters/dorms) "h" = ( /obj/structure/window/spawner/directional/east, -/obj/item/storage/book/bible{ +/obj/item/book/bible{ pixel_x = -4; pixel_y = -4 }, -/obj/item/storage/book/bible, -/obj/item/storage/book/bible{ +/obj/item/book/bible, +/obj/item/book/bible{ pixel_x = 4; pixel_y = 4 }, diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index b5d862c97849..98282d53382b 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -1743,6 +1743,11 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) +"afJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/central/greater) "afN" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -5353,22 +5358,6 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron, /area/station/security/checkpoint/science) -"aKP" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Treatment Center" - }, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "aKR" = ( /obj/structure/closet{ name = "janitorial supplies" @@ -6064,11 +6053,6 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/foyer) -"aQc" = ( -/obj/item/storage/book/bible, -/obj/structure/altar_of_gods, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "aQd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -7142,6 +7126,11 @@ /obj/item/radio/off, /turf/open/floor/iron/smooth, /area/station/maintenance/starboard/lesser) +"bhR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/crew_quarters/dorms) "bia" = ( /obj/machinery/light/directional/east, /obj/machinery/modular_computer/preset/engineering{ @@ -9024,6 +9013,11 @@ /obj/machinery/bluespace_beacon, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) +"bML" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "bMX" = ( /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 1 @@ -12396,13 +12390,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/security/office) -"cQN" = ( -/obj/machinery/door/airlock/corporate{ - name = "Blueshield's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "cQQ" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -12536,9 +12523,6 @@ }, /turf/open/floor/iron/smooth, /area/station/maintenance/central/lesser) -"cTK" = ( -/turf/open/floor/carpet/executive, -/area/station/command/heads_quarters/blueshield) "cTM" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -17445,6 +17429,7 @@ /area/station/science/ordnance) "evs" = ( /obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/gary/rare, /turf/open/floor/wood/parquet, /area/station/service/library) "evu" = ( @@ -18002,6 +17987,27 @@ }, /turf/open/floor/engine/air, /area/station/engineering/atmos) +"eEO" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Treatment Center" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/door/firedoor, +/obj/machinery/duct, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "eFd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/plasticflaps/opaque{ @@ -18365,6 +18371,11 @@ "eNx" = ( /turf/open/floor/iron/grimy, /area/station/service/library/lounge) +"eNy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/starboard/central) "eNH" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -19155,6 +19166,10 @@ /obj/structure/closet/cardboard, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"eZD" = ( +/obj/effect/landmark/start/gary/rare, +/turf/open/floor/iron/grimy, +/area/station/service/library/lounge) "eZS" = ( /obj/machinery/door/airlock/grunge{ name = "Entertainment Center" @@ -20179,6 +20194,11 @@ /obj/structure/industrial_lift/public, /turf/open/floor/plating/elevatorshaft, /area/station/hallway/secondary/service) +"frQ" = ( +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/grass, +/area/station/asteroid) "frT" = ( /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, /turf/closed/wall/r_wall, @@ -20865,6 +20885,18 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/wood, /area/station/commons/vacant_room/office) +"fCT" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Medical Maintenance Hatch" + }, +/obj/machinery/duct, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, +/turf/open/floor/catwalk_floor, +/area/station/maintenance/department/crew_quarters/dorms) "fDk" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -21786,6 +21818,14 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/construction/engineering) +"fRR" = ( +/obj/structure/table/wood, +/obj/machinery/firealarm/directional/north, +/obj/item/book/bible, +/turf/open/floor/iron/chapel{ + dir = 9 + }, +/area/station/service/chapel) "fRW" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 5 @@ -22398,10 +22438,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"gfj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "gfu" = ( /obj/effect/turf_decal/siding/thinplating_new{ dir = 4 @@ -22411,6 +22447,10 @@ }, /turf/open/floor/iron, /area/station/science/lower) +"gfH" = ( +/obj/effect/landmark/start/blueshield, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "gfK" = ( /turf/closed/wall/r_wall, /area/station/security/execution/education) @@ -22747,23 +22787,6 @@ /obj/machinery/power/shieldwallgen, /turf/open/floor/iron, /area/station/command/teleporter) -"gkZ" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Treatment Center" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/door/firedoor, -/obj/machinery/duct, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "glc" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, @@ -24993,6 +25016,22 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/medical/break_room) +"gWb" = ( +/obj/structure/rack, +/obj/structure/window/spawner/directional/east, +/obj/item/book/bible{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/book/bible, +/obj/item/book/bible{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/structure/window/spawner/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/crew_quarters/dorms) "gWc" = ( /mob/living/carbon/human/species/monkey, /turf/open/misc/grass/jungle, @@ -26105,6 +26144,7 @@ "hqL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/gary, /turf/open/floor/iron/smooth, /area/station/maintenance/department/medical) "hqN" = ( @@ -27845,6 +27885,11 @@ /obj/structure/cable/layer1, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/hallway) +"hVC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/port/central) "hVD" = ( /obj/machinery/computer/teleporter{ dir = 1 @@ -28777,6 +28822,23 @@ }, /turf/open/floor/iron, /area/station/security/brig) +"iku" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Treatment Center" + }, +/obj/effect/mapping_helpers/airlock/unres, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "ikL" = ( /obj/structure/table/wood, /obj/item/storage/fancy/candle_box, @@ -30994,14 +31056,14 @@ name = "Morgue" }, /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, /obj/structure/cable, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, +/obj/effect/mapping_helpers/airlock/access/any/medical/morgue, /turf/open/floor/iron/dark, /area/station/medical/morgue) "iUh" = ( @@ -37885,17 +37947,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"kZC" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Medical Maintenance Hatch" - }, -/obj/machinery/duct, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/department/crew_quarters/dorms) "kZD" = ( /obj/structure/chair/office/light, /obj/effect/turf_decal/trimline/yellow/filled/line, @@ -38269,6 +38320,7 @@ /area/station/maintenance/tram/mid) "lfe" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/landmark/start/gary, /turf/open/floor/iron/dark, /area/station/commons/vacant_room/commissary) "lfq" = ( @@ -40829,9 +40881,7 @@ }, /obj/machinery/airalarm/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/computer/records/pathology{ - dir = 2 - }, +/obj/machinery/computer/records/pathology, /turf/open/floor/iron/dark, /area/station/medical/pathology) "lXH" = ( @@ -41075,6 +41125,15 @@ /obj/machinery/door/window/right/directional/east, /turf/open/floor/iron/smooth, /area/station/maintenance/disposal) +"mbS" = ( +/obj/machinery/asteroid_magnet{ + center_x = 218; + center_y = 82; + area_size = 7 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark, +/area/station/science/explab) "mbX" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Control" @@ -41266,6 +41325,7 @@ "met" = ( /obj/structure/chair/stool/bar/directional/east, /obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, /turf/open/floor/iron/smooth, /area/station/maintenance/starboard/greater) "meu" = ( @@ -43366,6 +43426,7 @@ "mNI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/generic_maintenance_landmark, +/obj/effect/landmark/start/gary, /turf/open/floor/iron/smooth, /area/station/maintenance/department/crew_quarters/dorms) "mNN" = ( @@ -43520,9 +43581,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, -/obj/machinery/computer/records/pathology{ - dir = 2 - }, +/obj/machinery/computer/records/pathology, /turf/open/floor/iron/white, /area/station/medical/storage) "mPA" = ( @@ -44210,17 +44269,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"ncX" = ( -/obj/machinery/door/airlock/corporate{ - id_tag = "BSdoor"; - name = "Blueshield's Office" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/carpet/neon/simple/blue/nodots, -/area/station/command/heads_quarters/blueshield) "ndb" = ( /turf/open/floor/engine{ name = "Holodeck Projector Floor" @@ -44448,24 +44496,6 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"nhc" = ( -/obj/machinery/door/airlock/medical/glass{ - id_tag = "MedbayFoyer"; - name = "Medbay" - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/unres, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "nhf" = ( /obj/machinery/camera{ c_tag = "Security - Rec Room East"; @@ -45048,9 +45078,7 @@ /obj/item/ammo_box/magazine/m35, /obj/item/ammo_box/magazine/m35, /obj/item/ammo_box/magazine/m35, -/obj/item/gun/ballistic/automatic/pistol/paco/no_mag{ - pixel_y = 0 - }, +/obj/item/gun/ballistic/automatic/pistol/paco/no_mag, /obj/item/gun/ballistic/automatic/pistol/paco/no_mag{ pixel_y = 6 }, @@ -45764,22 +45792,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"nzK" = ( -/obj/structure/rack, -/obj/structure/window/spawner/directional/east, -/obj/item/storage/book/bible{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/storage/book/bible, -/obj/item/storage/book/bible{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/structure/window/spawner/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth, -/area/station/maintenance/department/crew_quarters/dorms) "nzL" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -46447,6 +46459,11 @@ /obj/structure/sign/directions/ptl/directional/west, /turf/open/floor/iron, /area/station/engineering/main) +"nMn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/central/lesser) "nMr" = ( /obj/effect/turf_decal/trimline/dark_red/warning{ dir = 10 @@ -47752,6 +47769,7 @@ }, /obj/effect/landmark/event_spawn, /obj/structure/cable, +/obj/effect/landmark/start/gary/rare, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation/entertainment) "ohw" = ( @@ -47775,12 +47793,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/cargo/storage) -"ohW" = ( -/obj/structure/table/wood, -/obj/machinery/light/dim/directional/north, -/obj/item/storage/book/bible, -/turf/open/floor/carpet, -/area/station/service/chapel/monastery) "ohY" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/effect/turf_decal/trimline/red/filled/line, @@ -48995,6 +49007,11 @@ /obj/effect/spawner/random/trash/food_packaging, /turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/central) +"oDc" = ( +/obj/item/book/bible, +/obj/structure/altar_of_gods, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "oDd" = ( /obj/effect/turf_decal/siding/white{ dir = 1 @@ -51534,6 +51551,12 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/engine/air, /area/station/engineering/atmos) +"pww" = ( +/obj/structure/table/wood, +/obj/machinery/light/dim/directional/north, +/obj/item/book/bible, +/turf/open/floor/carpet, +/area/station/service/chapel/monastery) "pwx" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -52165,6 +52188,11 @@ }, /turf/open/space/openspace, /area/space) +"pEE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/starboard/central) "pEL" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/dark/visible{ dir = 8 @@ -53121,15 +53149,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/tram/center) -"pSs" = ( -/obj/machinery/asteroid_magnet{ - center_x = 215; - center_y = 87; - area_size = 3 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/science/explab) "pSx" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -54247,6 +54266,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/brig) +"qml" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/port/aft) "qmp" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/engine/n2o, @@ -54352,6 +54376,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/robotics/mechbay) +"qoq" = ( +/obj/machinery/door/airlock/corporate{ + name = "Blueshield's Quarters" + }, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "qos" = ( /obj/machinery/exodrone_launcher, /obj/effect/decal/cleanable/dirt, @@ -54973,8 +55004,7 @@ /area/station/security/courtroom) "qyA" = ( /obj/machinery/plumbing/ooze_sucker{ - mapping_id = "6"; - dir = 2 + mapping_id = "6" }, /obj/machinery/light/floor/has_bulb, /turf/open/floor/engine, @@ -55416,6 +55446,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"qFc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/landmark/start/gary/uncommon, +/turf/open/floor/stone, +/area/station/smithing) "qFf" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -56713,25 +56750,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/science/lower) -"qZa" = ( -/obj/machinery/door/airlock/medical/glass{ - id_tag = "MedbayFoyer"; - name = "Medbay" - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/unres, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "qZk" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -57124,6 +57142,7 @@ "rfs" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/blobstart, +/obj/effect/landmark/start/gary, /turf/open/floor/iron/smooth, /area/station/maintenance/department/medical) "rfP" = ( @@ -60728,6 +60747,17 @@ }, /turf/open/floor/iron/white, /area/station/science/lower) +"sqP" = ( +/obj/machinery/door/airlock/corporate{ + id_tag = "BSdoor"; + name = "Blueshield's Office" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/admin/general, +/turf/open/floor/carpet/neon/simple/blue/nodots, +/area/station/command/heads_quarters/blueshield) "sqQ" = ( /obj/machinery/door/airlock/medical{ name = "Surgery B" @@ -65225,6 +65255,26 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/medical) +"tLe" = ( +/obj/machinery/door/airlock/medical/glass{ + id_tag = "MedbayFoyer"; + name = "Medbay" + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/unres, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "tLg" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -65771,6 +65821,11 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"tUc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "tUH" = ( /obj/structure/rack, /obj/item/clothing/under/color/blue, @@ -68959,6 +69014,11 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/maint) +"uTq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron, +/area/station/maintenance/starboard/central) "uTz" = ( /obj/structure/railing{ dir = 8 @@ -70598,14 +70658,6 @@ }, /turf/open/floor/iron, /area/station/security/prison/workout) -"vrd" = ( -/obj/structure/table/wood, -/obj/machinery/firealarm/directional/north, -/obj/item/storage/book/bible, -/turf/open/floor/iron/chapel{ - dir = 9 - }, -/area/station/service/chapel) "vre" = ( /obj/effect/turf_decal/trimline/dark_red/warning{ dir = 1 @@ -71905,6 +71957,25 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/hallway/secondary/service) +"vKR" = ( +/obj/machinery/door/airlock/medical/glass{ + id_tag = "MedbayFoyer"; + name = "Medbay" + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/unres, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "vLn" = ( /obj/machinery/computer/atmos_alert{ dir = 8 @@ -72785,6 +72856,7 @@ }, /obj/effect/spawner/random/engineering/tracking_beacon, /obj/structure/cable, +/obj/effect/landmark/start/gary/uncommon, /turf/open/floor/wood, /area/station/commons/vacant_room/office) "vZX" = ( @@ -73988,14 +74060,17 @@ /obj/machinery/door/airlock/grunge{ name = "Morgue External Access" }, -/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/obj/effect/mapping_helpers/airlock/access/all/medical/morgue, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"wtN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/gary, +/turf/open/floor/iron/smooth, +/area/station/maintenance/starboard/greater) "wtP" = ( /obj/structure/closet{ name = "Evidence Closet 2" @@ -75492,6 +75567,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/courtroom/holding) +"wQV" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Treatment Center" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/door/firedoor, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician, +/obj/effect/mapping_helpers/airlock/access/any/medical/general, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "wRg" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/emcloset, @@ -76438,10 +76531,6 @@ /obj/structure/table, /turf/open/floor/iron/smooth, /area/station/maintenance/starboard/greater) -"xkr" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space) "xks" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -76776,26 +76865,6 @@ /obj/item/wrench, /turf/open/floor/iron/smooth, /area/station/maintenance/port/central) -"xqB" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Treatment Center" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/door/firedoor, -/obj/machinery/duct, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "xqY" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -92430,7 +92499,7 @@ apC jXf yah jfs -lgu +bhR lOR yah aac @@ -93973,7 +94042,7 @@ cAY apC lgu lgu -lgu +bhR lgu apC aaa @@ -98300,7 +98369,7 @@ pZW pVD jAk jAk -jAk +hVC jAk jAk ahU @@ -98804,7 +98873,7 @@ rUR rUR rUR uzS -ncX +sqP pnp bJM lQM @@ -99571,9 +99640,9 @@ kLz kLz kLz lRF -cTK -cQN -gfj +gfH +qoq +bML lyI iUN lQM @@ -99890,7 +99959,7 @@ snM xJZ lgu lgu -lgu +bhR lgu apC aac @@ -101174,7 +101243,7 @@ jnq vqn jnq lgu -lgu +bhR gsE apC ncE @@ -105707,7 +105776,7 @@ vXM aac qLK lnY -nMu +afJ nMu jcq nMu @@ -105989,7 +106058,7 @@ hFr hFr hFr aTT -nMu +afJ nMu nMu hFr @@ -106036,7 +106105,7 @@ aaa jnq cRa juN -sAK +nMn sAK pmz dzp @@ -106489,7 +106558,7 @@ eSk jbH iXh nMu -nMu +afJ nMu hFr qxf @@ -115764,7 +115833,7 @@ quF wfU quF quF -quF +wtN quF iRL gbF @@ -117301,7 +117370,7 @@ aac siI iRB fIA -fIA +tUc fIA iRL wkE @@ -121419,7 +121488,7 @@ aaa aaa iRL quF -quF +wtN mAF cOx pWy @@ -123247,7 +123316,7 @@ ejC ePU qxm ryO -gDw +pEE gDw qxm nZX @@ -124272,7 +124341,7 @@ gBw sIW whZ bvT -bvT +qFc glO hxW qxm @@ -128902,7 +128971,7 @@ oys oys pom cwB -iBG +uTq oys iix xYf @@ -130690,7 +130759,7 @@ ecO kDR oNd kDR -jOi +eNy hiJ pAf oAw @@ -132533,7 +132602,7 @@ aaa aaa aaa aaa -vXM +aaa vXM vXM vXM @@ -132790,7 +132859,7 @@ aaa aaa vXM vXM -vXM +kfT vXM vXM vXM @@ -133033,7 +133102,7 @@ eaJ wTG ign frV -pSs +mbS xLN mrh xLN @@ -133047,7 +133116,7 @@ vXM vXM vXM vXM -vXM +kfT vXM vXM vXM @@ -133304,7 +133373,7 @@ vXM vXM vXM vXM -vXM +kfT vXM vXM vXM @@ -133552,16 +133621,16 @@ vXM vXM vXM vXM -kfT -vXM vXM vXM +qud vXM vXM vXM vXM vXM vXM +kfT vXM vXM vXM @@ -133804,21 +133873,21 @@ vXM pHM aac aac -xkr -xkr -xkr -xkr -xkr -xkr -xkr -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +qud +qud +qud +qud +qud +qud +qud +qud +qud +qud +qud +qud +qud +qud +qud vXM vXM vXM @@ -134060,6 +134129,8 @@ pHM vXM pHM aac +vXM +qud odr odr odr @@ -134067,15 +134138,13 @@ odr odr odr odr -xkr -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -134316,7 +134385,9 @@ vXM pHM pHM pHM -xkr +vXM +vXM +qud odr odr odr @@ -134324,15 +134395,13 @@ odr odr odr odr -xkr -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -134573,7 +134642,9 @@ vXM pHM vXM pHM -xkr +vXM +vXM +qud odr odr odr @@ -134581,15 +134652,13 @@ odr odr odr odr -xkr -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -134830,7 +134899,9 @@ vXM pHM vXM pHM -xkr +vXM +vXM +qud odr odr odr @@ -134838,15 +134909,13 @@ odr odr odr odr -xkr -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -135087,7 +135156,9 @@ vXM pHM vXM pHM -xkr +vXM +vXM +qud odr odr odr @@ -135095,15 +135166,13 @@ odr odr odr odr -xkr -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -135344,7 +135413,9 @@ vXM pHM pHM pHM -xkr +vXM +vXM +qud odr odr odr @@ -135352,15 +135423,13 @@ odr odr odr odr -xkr -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -135601,7 +135670,9 @@ vXM pHM vXM pHM -xkr +vXM +vXM +qud odr odr odr @@ -135609,15 +135680,13 @@ odr odr odr odr -xkr -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -135858,23 +135927,23 @@ vXM pHM vXM pHM -xkr -xkr -xkr -xkr -xkr -xkr -xkr -xkr -xkr -vXM -vXM -vXM -vXM -vXM -vXM vXM vXM +qud +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -136117,21 +136186,21 @@ vXM pHM vXM vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +qud +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -136374,21 +136443,21 @@ pHM pHM vXM vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +qud +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -136630,22 +136699,22 @@ pHM vXM pHM vXM -fjj -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM vXM +qud +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -136888,21 +136957,21 @@ vXM pHM vXM vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +qud +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -137145,21 +137214,21 @@ vXM pHM vXM vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +qud +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +odr +qud vXM vXM vXM @@ -137402,21 +137471,21 @@ pHM pHM vXM vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM -vXM +qud +qud +qud +qud +qud +qud +qud +qud +qud +qud +qud +qud +qud +qud +qud vXM vXM vXM @@ -157449,7 +157518,7 @@ tdx mQa mQa mQa -mQa +qml mQa mQa mQa @@ -159503,7 +159572,7 @@ kgd rAS iMy eNx -eNx +eZD eNx apO tdx @@ -162853,7 +162922,7 @@ gHe gHe hYh vCZ -ohW +pww skw kkg buB @@ -163620,7 +163689,7 @@ jkt jkt aPg piE -aQc +oDc aQx kUo tXn @@ -164126,7 +164195,7 @@ tDT ylF srN pUw -vrd +fRR qOi oqS mEs @@ -167473,7 +167542,7 @@ jPK bpr bcG fmS -lgu +bhR apC aaa aaa @@ -169006,7 +169075,7 @@ fsC whz whz whz -nzK +gWb lgu lgu fas @@ -171056,7 +171125,7 @@ acm abW abW abW -acm +frQ abW abS abW @@ -172098,7 +172167,7 @@ apC jPK apC lgu -lgu +bhR lgu apC xOk @@ -174922,7 +174991,7 @@ lBQ sqQ lBQ apC -kZC +fCT mBq dPS aOJ @@ -175944,7 +176013,7 @@ jtr jtr jtr xSZ -gkZ +wQV xSZ jtr jtr @@ -176706,7 +176775,7 @@ lNF wAI wAI enB -qZa +tLe bbD uck oJu @@ -177224,7 +177293,7 @@ wyd enF aHP aKq -aKP +iku aLe oIU aLB @@ -177734,7 +177803,7 @@ foh gxq gxq rjx -nhc +vKR eYP tIX vrj @@ -178514,7 +178583,7 @@ jtr jtr jtr xSZ -xqB +eEO xSZ jtr jtr diff --git a/_maps/ouroboros.json b/_maps/ouroboros.json index 69c071ccb13d..68f4554cb407 100644 --- a/_maps/ouroboros.json +++ b/_maps/ouroboros.json @@ -3,6 +3,7 @@ "map_name": "Ouroboros", "map_path": "map_files/Ouroboros", "map_file": "Ouroboros.dmm", + "space_ruin_levels": 3, "shuttles": { "emergency": "emergency_nova", "ferry": "ferry_fancy", diff --git a/_maps/shuttles/emergency_monastery.dmm b/_maps/shuttles/emergency_monastery.dmm index 3429afc533d2..60677eb6b1a2 100644 --- a/_maps/shuttles/emergency_monastery.dmm +++ b/_maps/shuttles/emergency_monastery.dmm @@ -427,6 +427,15 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/space/basic, /area/shuttle/escape) +"hu" = ( +/obj/item/paint/paint_remover{ + pixel_y = 8 + }, +/obj/structure/table/wood, +/obj/item/soap/nanotrasen, +/obj/structure/sign/poster/official/fruit_bowl/directional/north, +/turf/open/floor/iron/dark, +/area/shuttle/escape) "hC" = ( /obj/machinery/power/shuttle_engine/propulsion, /obj/structure/window/reinforced/spawner/directional/east{ @@ -462,6 +471,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/shuttle/escape) +"hT" = ( +/obj/item/storage/crayons{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/crayons, +/obj/structure/table/wood, +/obj/structure/sign/poster/official/soft_cap_pop_art/directional/north, +/turf/open/floor/iron/dark, +/area/shuttle/escape) "hV" = ( /obj/structure/window/reinforced/spawner/directional/north{ pixel_y = 1 @@ -531,16 +550,6 @@ /obj/machinery/photocopier, /turf/open/floor/iron/dark, /area/shuttle/escape) -"iE" = ( -/obj/item/storage/crayons{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/crayons, -/obj/structure/table/wood, -/obj/structure/sign/poster/official/soft_cap_pop_art/directional/north, -/turf/open/floor/iron/dark, -/area/shuttle/escape) "iI" = ( /obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1307,6 +1316,11 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, /area/shuttle/escape) +"sS" = ( +/obj/structure/table/wood/fancy, +/obj/item/book/bible, +/turf/open/floor/carpet, +/area/shuttle/escape) "sT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/red/anticorner/contrasted{ @@ -1613,14 +1627,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/shuttle/escape) -"yr" = ( -/obj/structure/closet, -/obj/machinery/light/small/directional/south, -/obj/item/storage/book/bible, -/obj/item/storage/book/bible, -/obj/item/storage/book/bible, -/turf/open/floor/carpet, -/area/shuttle/escape) "yu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 10 @@ -1808,6 +1814,12 @@ /obj/item/kitchen/fork, /turf/open/floor/iron/dark, /area/shuttle/escape) +"Aw" = ( +/obj/item/book/bible, +/obj/structure/cable, +/obj/structure/altar_of_gods, +/turf/open/floor/carpet, +/area/shuttle/escape) "Ax" = ( /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape/brig) @@ -2024,15 +2036,6 @@ }, /turf/open/floor/iron/grimy, /area/shuttle/escape) -"Dn" = ( -/obj/item/paint/paint_remover{ - pixel_y = 8 - }, -/obj/structure/table/wood, -/obj/item/soap/nanotrasen, -/obj/structure/sign/poster/official/fruit_bowl/directional/north, -/turf/open/floor/iron/dark, -/area/shuttle/escape) "Dr" = ( /obj/machinery/camera/directional/west{ c_tag = "Monastery Kitchen"; @@ -2049,12 +2052,6 @@ /obj/structure/flora/bush, /turf/open/misc/asteroid, /area/shuttle/escape) -"Dv" = ( -/obj/item/storage/book/bible, -/obj/structure/cable, -/obj/structure/altar_of_gods, -/turf/open/floor/carpet, -/area/shuttle/escape) "Dw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -3205,11 +3202,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/shuttle/escape) -"Si" = ( -/obj/structure/table/wood/fancy, -/obj/item/storage/book/bible, -/turf/open/floor/carpet, -/area/shuttle/escape) "Sj" = ( /obj/structure/extinguisher_cabinet/directional/west, /obj/machinery/light/small/directional/south, @@ -3872,6 +3864,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/shuttle/escape) +"ZV" = ( +/obj/structure/closet, +/obj/machinery/light/small/directional/south, +/obj/item/book/bible, +/obj/item/book/bible, +/obj/item/book/bible, +/turf/open/floor/carpet, +/area/shuttle/escape) "ZZ" = ( /obj/structure/cable, /turf/open/floor/carpet, @@ -4401,7 +4401,7 @@ BG eW rX eQ -yr +ZV nr yO Ab @@ -4743,7 +4743,7 @@ Pz kw oa eQ -Si +sS Ti RM Xs @@ -5790,7 +5790,7 @@ ZZ ZZ ZZ ZZ -Dv +Aw sm jx iS @@ -7111,7 +7111,7 @@ JG JG Ho yc -Dn +hu Vl oc oc @@ -7275,7 +7275,7 @@ JG JG Ho yc -iE +hT FY FY FY diff --git a/_maps/shuttles/ruin_syndicate_dropship.dmm b/_maps/shuttles/ruin_syndicate_dropship.dmm index db29494d5db0..c621d56355e3 100644 --- a/_maps/shuttles/ruin_syndicate_dropship.dmm +++ b/_maps/shuttles/ruin_syndicate_dropship.dmm @@ -15,6 +15,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/effect/mapping_helpers/airlock/access/all/syndicate/general, /obj/structure/fans/tiny, +/obj/structure/cable, /turf/open/floor/plating, /area/shuttle/ruin/caravan/syndicate3) "bt" = ( @@ -127,6 +128,7 @@ "kc" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red/half/contrasted, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/shuttle/ruin/caravan/syndicate3) "kk" = ( @@ -169,6 +171,7 @@ /obj/machinery/airalarm/directional/west, /obj/effect/mapping_helpers/airalarm/syndicate_access, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/shuttle/ruin/caravan/syndicate3) "ox" = ( @@ -188,6 +191,7 @@ req_access = list("syndicate"); specialfunctions = 4 }, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/shuttle/ruin/caravan/syndicate3) "rQ" = ( @@ -232,6 +236,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/syndicate/general, /obj/structure/fans/tiny, +/obj/structure/cable, /turf/open/floor/plating, /area/shuttle/ruin/caravan/syndicate3) "zP" = ( @@ -349,6 +354,7 @@ req_access = list("syndicate"); specialfunctions = 4 }, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/shuttle/ruin/caravan/syndicate3) "KN" = ( @@ -368,6 +374,7 @@ /area/shuttle/ruin/caravan/syndicate3) "Mc" = ( /obj/effect/turf_decal/tile/red/half/contrasted, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/shuttle/ruin/caravan/syndicate3) "Nn" = ( @@ -410,6 +417,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/syndicate/general, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/shuttle/ruin/caravan/syndicate3) "RT" = ( @@ -478,6 +486,12 @@ /area/shuttle/ruin/caravan/syndicate3) "Vp" = ( /obj/machinery/firealarm/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/shuttle/ruin/caravan/syndicate3) +"Zh" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/shuttle/ruin/caravan/syndicate3) "ZF" = ( @@ -538,7 +552,7 @@ uI uI Vh Ib -iN +Zh kc Nn uI @@ -547,7 +561,7 @@ uI uI kR mq -iN +Zh rQ JK uI @@ -565,7 +579,7 @@ UI bh oW nA -iN +Zh Vp JT wS diff --git a/_maps/templates/holodeck_chapelcourt.dmm b/_maps/templates/holodeck_chapelcourt.dmm index 96c39503c3eb..b3141fd42f50 100644 --- a/_maps/templates/holodeck_chapelcourt.dmm +++ b/_maps/templates/holodeck_chapelcourt.dmm @@ -1,52 +1,10 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/closet/secure_closet/courtroom, -/turf/open/floor/holofloor/dark, -/area/template_noop) -"ab" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/item/food/grown/harebell, -/obj/item/food/grown/harebell, -/obj/item/food/grown/harebell, -/obj/item/food/grown/harebell, -/obj/item/food/grown/harebell, -/turf/open/floor/holofloor/dark, -/area/template_noop) "ac" = ( /obj/structure/chair{ dir = 1 }, /turf/open/floor/holofloor/chapel/bottom_left, /area/template_noop) -"ad" = ( -/obj/structure/table/wood/fancy, -/obj/item/clothing/suit/chaplainsuit/nun, -/obj/item/clothing/head/chaplain/nun_hood, -/obj/item/clothing/suit/chaplainsuit/holidaypriest, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/holofloor/dark, -/area/template_noop) "ae" = ( /obj/structure/table/wood, /obj/item/folder/blue, @@ -62,21 +20,6 @@ "ag" = ( /turf/open/floor/holofloor/chapel/top_left, /area/template_noop) -"ah" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/item/food/grown/poppy, -/obj/item/food/grown/poppy, -/obj/item/food/grown/poppy, -/obj/item/food/grown/poppy, -/obj/item/food/grown/poppy, -/turf/open/floor/holofloor/dark, -/area/template_noop) "ai" = ( /turf/open/floor/holofloor/chapel/bottom_right, /area/template_noop) @@ -94,88 +37,11 @@ }, /turf/open/floor/holofloor/chapel/top_right, /area/template_noop) -"al" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/item/pen/red, -/turf/open/floor/holofloor/dark, -/area/template_noop) -"am" = ( -/obj/item/clothing/head/helmet/chaplain/witchunter_hat, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/table/wood/fancy, -/turf/open/floor/holofloor/dark, -/area/template_noop) "an" = ( /obj/structure/table/wood, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/holofloor/dark, /area/template_noop) -"ao" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/item/storage/fancy/candle_box, -/turf/open/floor/holofloor/dark, -/area/template_noop) -"ap" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/holofloor/dark, -/area/template_noop) -"aq" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/item/folder/red, -/obj/item/pen/red, -/turf/open/floor/holofloor/dark, -/area/template_noop) -"ar" = ( -/obj/item/gavelblock, -/obj/item/gavelhammer, -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/holofloor/dark, -/area/template_noop) -"as" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/holofloor/dark, -/area/template_noop) "at" = ( /obj/structure/table/wood, /obj/item/food/grown/harebell, @@ -188,21 +54,6 @@ }, /turf/open/floor/holofloor/dark, /area/template_noop) -"au" = ( -/obj/structure/table/wood/fancy, -/obj/item/storage/book/bible, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/holofloor/dark, -/area/template_noop) "av" = ( /obj/structure/table/wood, /obj/item/folder/red, @@ -212,41 +63,6 @@ }, /turf/open/floor/holofloor/dark, /area/template_noop) -"aw" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/holofloor/dark, -/area/template_noop) -"ax" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/holofloor/dark, -/area/template_noop) -"ay" = ( -/obj/item/toy/figure/chaplain, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/table/wood/fancy, -/turf/open/floor/holofloor/dark, -/area/template_noop) "az" = ( /obj/structure/closet/secure_closet/courtroom, /obj/effect/turf_decal/tile/neutral/opposingcorners{ @@ -285,22 +101,6 @@ }, /turf/open/floor/holofloor/chapel/bottom_right, /area/template_noop) -"aF" = ( -/obj/item/clothing/suit/costume/judgerobe, -/obj/item/clothing/head/costume/powdered_wig, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/table/wood/fancy, -/turf/open/floor/holofloor/dark, -/area/template_noop) "aG" = ( /obj/structure/table/wood, /obj/item/food/grown/poppy, @@ -313,30 +113,6 @@ }, /turf/open/floor/holofloor/dark, /area/template_noop) -"aH" = ( -/obj/structure/table/wood/fancy, -/obj/item/book/manual/wiki/security_space_law, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/holofloor/dark, -/area/template_noop) -"aI" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/holofloor/dark, -/area/template_noop) "aJ" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -346,45 +122,12 @@ "aK" = ( /turf/open/floor/holofloor/chapel/top_right, /area/template_noop) -"aL" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/holofloor/dark, -/area/template_noop) "aM" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners{ dir = 1 }, /turf/open/floor/holofloor/dark, /area/template_noop) -"aN" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/holofloor/dark, -/area/template_noop) -"aO" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/item/paper_bin, -/turf/open/floor/holofloor/dark, -/area/template_noop) "aP" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/holofloor/dark, @@ -397,36 +140,12 @@ /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/holofloor/dark, /area/template_noop) -"aS" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/holofloor/dark, -/area/template_noop) "aT" = ( /obj/structure/chair{ dir = 1 }, /turf/open/floor/holofloor/chapel/top_left, /area/template_noop) -"aU" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/item/hand_labeler, -/turf/open/floor/holofloor/dark, -/area/template_noop) "aV" = ( /obj/structure/chair{ dir = 1 @@ -436,31 +155,6 @@ }, /turf/open/floor/holofloor/dark, /area/template_noop) -"aW" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/holofloor/dark, -/area/template_noop) -"aX" = ( -/obj/item/clothing/suit/chaplainsuit/bishoprobe, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/table/wood/fancy, -/turf/open/floor/holofloor/dark, -/area/template_noop) "aY" = ( /obj/item/gavelblock, /obj/item/gavelhammer, @@ -495,7 +189,7 @@ /area/template_noop) "kv" = ( /obj/structure/table/wood/fancy, -/obj/item/storage/book/bible, +/obj/item/book/bible, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/holofloor/dark, /area/template_noop) diff --git a/_maps/templates/lazy_templates/ninja_den.dmm b/_maps/templates/lazy_templates/ninja_den.dmm index 2f625c3b4826..c4ad1b7f74c7 100644 --- a/_maps/templates/lazy_templates/ninja_den.dmm +++ b/_maps/templates/lazy_templates/ninja_den.dmm @@ -101,6 +101,13 @@ }, /turf/open/floor/iron/sepia, /area/centcom/central_command_areas/holding) +"cV" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/sign/poster/contraband/syndicate_recruitment/directional/west, +/turf/open/floor/carpet/black, +/area/centcom/central_command_areas/holding) "cW" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -120,11 +127,6 @@ "dg" = ( /turf/closed/wall/mineral/wood, /area/centcom/central_command_areas/holding) -"dj" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/storage/book/bible, -/turf/open/floor/wood/large, -/area/centcom/central_command_areas/holding) "dy" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/wood/tile, @@ -159,6 +161,21 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/large, /area/centcom/central_command_areas/holding) +"fb" = ( +/obj/structure/closet, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/item/reagent_containers/medigel/synthflesh, +/obj/item/reagent_containers/medigel/synthflesh, +/obj/item/reagent_containers/medigel/synthflesh, +/obj/item/organ/internal/heart/cybernetic/tier2, +/obj/item/organ/internal/heart/cybernetic/tier2, +/obj/item/defibrillator, +/obj/item/surgery_tray, +/obj/machinery/iv_drip, +/obj/item/emergency_bed, +/obj/item/storage/medkit/regular, +/turf/open/floor/iron/sepia, +/area/centcom/central_command_areas/holding) "fj" = ( /obj/machinery/light/directional/north, /turf/open/floor/bamboo/tatami/purple{ @@ -785,6 +802,22 @@ }, /turf/open/floor/stone, /area/centcom/central_command_areas/holding) +"tj" = ( +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/machinery/iv_drip, +/obj/item/storage/medkit/regular, +/obj/item/defibrillator, +/obj/structure/closet, +/obj/item/surgery_tray, +/obj/item/emergency_bed, +/obj/item/storage/medkit/regular, +/obj/item/reagent_containers/medigel/synthflesh, +/obj/item/reagent_containers/medigel/synthflesh, +/obj/item/reagent_containers/medigel/synthflesh, +/obj/item/organ/internal/heart/cybernetic/tier2, +/obj/item/organ/internal/heart/cybernetic/tier2, +/turf/open/floor/iron/sepia, +/area/centcom/central_command_areas/holding) "ts" = ( /obj/item/food/meat/slab/chicken, /obj/item/food/meat/slab/chicken, @@ -1127,13 +1160,6 @@ }, /turf/open/floor/iron/cafeteria, /area/centcom/central_command_areas/holding) -"BN" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/sign/poster/contraband/syndicate_recruitment/directional/west, -/turf/open/floor/carpet/black, -/area/centcom/central_command_areas/holding) "Ca" = ( /obj/structure/chair/comfy/black{ dir = 8 @@ -1215,22 +1241,6 @@ "DI" = ( /turf/open/floor/iron/sepia, /area/centcom/central_command_areas/holding) -"DK" = ( -/obj/item/storage/backpack/duffelbag/med/surgery, -/obj/machinery/iv_drip, -/obj/item/storage/medkit/regular, -/obj/item/defibrillator, -/obj/structure/closet, -/obj/item/surgery_tray, -/obj/item/emergency_bed, -/obj/item/storage/medkit/regular, -/obj/item/reagent_containers/medigel/synthflesh, -/obj/item/reagent_containers/medigel/synthflesh, -/obj/item/reagent_containers/medigel/synthflesh, -/obj/item/organ/internal/heart/cybernetic/tier2, -/obj/item/organ/internal/heart/cybernetic/tier2, -/turf/open/floor/iron/sepia, -/area/centcom/central_command_areas/holding) "DL" = ( /obj/structure/chair/wood{ dir = 4 @@ -1276,6 +1286,11 @@ initial_gas_mix = "o2=22;n2=82;TEMP=293.15" }, /area/centcom/central_command_areas/holding) +"EG" = ( +/obj/structure/table/wood/fancy/royalblack, +/obj/item/book/bible, +/turf/open/floor/wood/large, +/area/centcom/central_command_areas/holding) "EJ" = ( /obj/item/mop, /obj/structure/sink/kitchen/directional/west, @@ -1633,21 +1648,6 @@ }, /turf/open/floor/iron/cafeteria, /area/centcom/central_command_areas/holding) -"Mz" = ( -/obj/structure/closet, -/obj/item/storage/backpack/duffelbag/med/surgery, -/obj/item/reagent_containers/medigel/synthflesh, -/obj/item/reagent_containers/medigel/synthflesh, -/obj/item/reagent_containers/medigel/synthflesh, -/obj/item/organ/internal/heart/cybernetic/tier2, -/obj/item/organ/internal/heart/cybernetic/tier2, -/obj/item/defibrillator, -/obj/item/surgery_tray, -/obj/machinery/iv_drip, -/obj/item/emergency_bed, -/obj/item/storage/medkit/regular, -/turf/open/floor/iron/sepia, -/area/centcom/central_command_areas/holding) "ML" = ( /obj/structure/window/paperframe{ can_atmos_pass = 0 @@ -3273,7 +3273,7 @@ Lw ML mw mw -BN +cV lI lI mw @@ -3670,7 +3670,7 @@ Ed (39,1,1) = {" Ed CG -dj +EG mw mw mw @@ -3790,7 +3790,7 @@ bl xM qW dg -Mz +fb DI vH dg @@ -3802,7 +3802,7 @@ rV dg aw Wm -DK +tj dg uL hO diff --git a/_maps/tramstation.json b/_maps/tramstation.json index 4968e18e41b6..8a9468229ea0 100644 --- a/_maps/tramstation.json +++ b/_maps/tramstation.json @@ -3,6 +3,7 @@ "map_name": "Tramstation", "map_path": "map_files/tramstation", "map_file": "tramstation.dmm", + "space_ruin_levels": 3, "shuttles": { "cargo": "cargo_box", "ferry": "ferry_fancy", diff --git a/_maps/~monkestation/RandomBars/Box/bloody_bar.dmm b/_maps/~monkestation/RandomBars/Box/bloody_bar.dmm index c1f4c9f5ca60..84468fdf67f0 100644 --- a/_maps/~monkestation/RandomBars/Box/bloody_bar.dmm +++ b/_maps/~monkestation/RandomBars/Box/bloody_bar.dmm @@ -36,6 +36,11 @@ }, /turf/open/floor/cult, /area/station/commons/lounge) +"ev" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/barsign/directional/north, +/turf/open/floor/cult, +/area/station/commons/lounge) "eO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -88,7 +93,7 @@ /turf/template_noop, /area/template_noop) "lu" = ( -/obj/machinery/barsign/directional/north, +/obj/machinery/restaurant_portal/restaurant, /turf/open/floor/cult, /area/station/commons/lounge) "ng" = ( @@ -106,8 +111,7 @@ /turf/open/floor/plating, /area/station/commons/lounge) "qb" = ( -/obj/machinery/media/jukebox, -/obj/machinery/light/directional/north, +/obj/machinery/light/small/directional/north, /turf/open/floor/cult, /area/station/commons/lounge) "rV" = ( @@ -144,11 +148,6 @@ /obj/machinery/holopad, /turf/open/floor/cult, /area/station/commons/lounge) -"vj" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/computer/slot_machine, -/turf/open/floor/cult, -/area/station/commons/lounge) "wp" = ( /obj/structure/chair/wood{ dir = 8 @@ -204,12 +203,11 @@ /area/station/commons/lounge) "DC" = ( /obj/machinery/camera/autoname/directional/north, -/obj/machinery/restaurant_portal/restaurant, +/obj/machinery/media/jukebox, /turf/open/floor/cult, /area/station/commons/lounge) "DJ" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/light/small/directional/west, +/obj/machinery/light/directional/west, /turf/open/floor/cult, /area/station/commons/lounge) "DZ" = ( @@ -376,8 +374,7 @@ /turf/open/floor/wood/large, /area/station/service/theater) "WG" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/small/directional/east, +/obj/machinery/light/directional/east, /obj/item/radio/intercom/directional/east, /turf/open/floor/cult, /area/station/commons/lounge) @@ -407,9 +404,9 @@ Bl ue Bl DJ -gA wp gA +wp ae Bl wM @@ -422,7 +419,7 @@ kL "} (2,1,1) = {" Gh -lu +Bl ue ue ue @@ -441,26 +438,26 @@ kL "} (3,1,1) = {" Gh -Bl +ev eu Bl FU Ie ue -Ie +FU Ie Bl FK eO ja -vj +ja es Sg kL "} (4,1,1) = {" -jf -cT +Gh +DC Bl Bl QE @@ -478,12 +475,12 @@ em kL "} (5,1,1) = {" -Gh -DC +gf +Bl Bl Bl gA -gA +wp Iy gA wp @@ -497,8 +494,8 @@ jL wz "} (6,1,1) = {" -Gh -qb +jf +Bl Bl Bl Bl @@ -516,8 +513,8 @@ KM KM "} (7,1,1) = {" -Gh -ZK +gf +Bl Bl fk uS @@ -535,14 +532,14 @@ KM KM "} (8,1,1) = {" -jf -Bl +Gh +qb Bl sW bi -fK +ng ue -sW +fk uS fK rV @@ -574,9 +571,9 @@ fa "} (10,1,1) = {" Gh -sW -uS -ng +lu +cT +ZK Gh gf pq diff --git a/_maps/~monkestation/RandomBars/Box/clockwork_bar.dmm b/_maps/~monkestation/RandomBars/Box/clockwork_bar.dmm index ff2ac7164965..a8d1317e0e6b 100644 --- a/_maps/~monkestation/RandomBars/Box/clockwork_bar.dmm +++ b/_maps/~monkestation/RandomBars/Box/clockwork_bar.dmm @@ -68,6 +68,11 @@ }, /turf/open/floor/bronze, /area/station/commons/lounge) +"iB" = ( +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/media/jukebox, +/turf/open/floor/bronze, +/area/station/commons/lounge) "jv" = ( /obj/machinery/light/directional/east, /turf/open/floor/bronze/flat, @@ -76,11 +81,6 @@ /obj/machinery/vending/cigarette, /turf/open/floor/bronze, /area/station/commons/lounge) -"ll" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/computer/slot_machine, -/turf/open/floor/bronze, -/area/station/commons/lounge) "mm" = ( /obj/structure/chair/bronze, /obj/effect/landmark/start/hangover, @@ -149,8 +149,7 @@ /turf/open/floor/bronze, /area/station/commons/lounge) "uV" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/small/directional/east, +/obj/machinery/light/directional/east, /obj/item/radio/intercom/directional/east, /turf/open/floor/bronze, /area/station/commons/lounge) @@ -217,8 +216,7 @@ /turf/open/floor/bronze/flat, /area/station/service/theater) "Iw" = ( -/obj/machinery/media/jukebox, -/obj/machinery/light/directional/north, +/obj/machinery/restaurant_portal/restaurant, /turf/open/floor/bronze, /area/station/commons/lounge) "Jy" = ( @@ -240,8 +238,7 @@ /turf/open/floor/bronze, /area/station/commons/lounge) "LJ" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/light/small/directional/west, +/obj/machinery/light/directional/west, /turf/open/floor/bronze, /area/station/commons/lounge) "Mm" = ( @@ -267,6 +264,7 @@ /turf/open/floor/bronze, /area/station/commons/lounge) "Ov" = ( +/obj/machinery/light/small/directional/north, /obj/machinery/barsign/directional/north, /turf/open/floor/bronze, /area/station/commons/lounge) @@ -316,8 +314,7 @@ /turf/open/floor/bronze, /area/station/commons/lounge) "Tu" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/restaurant_portal/restaurant, +/obj/machinery/light/small/directional/north, /turf/open/floor/bronze, /area/station/commons/lounge) "TL" = ( @@ -385,9 +382,9 @@ TL qG TL LJ -qn LI qn +LI Mm TL PP @@ -400,7 +397,7 @@ Wj "} (2,1,1) = {" OD -Ov +TL qG qG qG @@ -419,26 +416,26 @@ Wj "} (3,1,1) = {" OD -TL +Ov dN TL ol il qG -il +ol il TL ZZ UM tZ -ll +tZ yC Ya Wj "} (4,1,1) = {" -Go -kq +OD +iB TL Ui Jy @@ -456,12 +453,12 @@ Ef Wj "} (5,1,1) = {" -OD -Tu +cr +TL TL TL qn -qn +LI fp qn LI @@ -475,8 +472,8 @@ FG Ie "} (6,1,1) = {" -OD -Iw +Go +TL TL TL TL @@ -494,8 +491,8 @@ ca ca "} (7,1,1) = {" -OD -RG +cr +TL TL mm Jy @@ -513,14 +510,14 @@ ca ca "} (8,1,1) = {" -Go -TL +OD +Tu TL si Jy -cu +JZ qG -si +mm Jy cu hB @@ -552,9 +549,9 @@ zp "} (10,1,1) = {" OD -si -Jy -JZ +Iw +kq +RG OD cr tn diff --git a/_maps/~monkestation/RandomBars/Box/default_bar.dmm b/_maps/~monkestation/RandomBars/Box/default_bar.dmm index 5e6b6eb2af33..fa3c5d969d63 100644 --- a/_maps/~monkestation/RandomBars/Box/default_bar.dmm +++ b/_maps/~monkestation/RandomBars/Box/default_bar.dmm @@ -62,6 +62,11 @@ /obj/machinery/light/floor/has_bulb, /turf/open/floor/iron, /area/station/commons/lounge) +"dQ" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/machinery/restaurant_portal/restaurant, +/turf/open/floor/iron, +/area/station/commons/lounge) "ei" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -97,6 +102,12 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/commons/lounge) +"fV" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/machinery/light/small/directional/north, +/obj/machinery/barsign/directional/north, +/turf/open/floor/iron, +/area/station/commons/lounge) "gW" = ( /obj/machinery/door/firedoor/border_only{ dir = 1 @@ -186,7 +197,10 @@ /area/station/service/theater) "uI" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/chair/stool/bar/directional/west, +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/commons/lounge) "vg" = ( @@ -206,8 +220,7 @@ /area/station/commons/lounge) "zm" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/small/directional/east, +/obj/machinery/light/directional/east, /obj/item/radio/intercom/directional/east, /turf/open/floor/iron, /area/station/commons/lounge) @@ -217,7 +230,10 @@ /area/station/commons/lounge) "zQ" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/barsign/directional/north, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/commons/lounge) "Ca" = ( @@ -294,8 +310,7 @@ /area/station/commons/lounge) "EP" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/restaurant_portal/restaurant, +/obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/commons/lounge) "FT" = ( @@ -328,12 +343,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron, /area/station/commons/lounge) -"Jm" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/computer/slot_machine, -/turf/open/floor/iron, -/area/station/commons/lounge) "JF" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, /obj/effect/spawner/random/entertainment/arcade{ @@ -349,6 +358,12 @@ /obj/machinery/holopad, /turf/open/floor/iron, /area/station/commons/lounge) +"Lc" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/media/jukebox, +/turf/open/floor/iron, +/area/station/commons/lounge) "Ly" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, /obj/structure/table/wood/poker, @@ -364,6 +379,17 @@ }, /turf/open/floor/iron, /area/station/commons/lounge) +"Mq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Bar" + }, +/turf/open/floor/iron/textured, +/area/station/commons/lounge) "Nm" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -399,8 +425,7 @@ /area/station/commons/lounge) "PD" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/light/small/directional/west, +/obj/machinery/light/directional/west, /turf/open/floor/iron, /area/station/commons/lounge) "QZ" = ( @@ -413,7 +438,6 @@ "Tq" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, /obj/structure/table/wood/poker, -/obj/item/toy/cards/deck, /obj/item/clothing/mask/cigarette/cigar, /turf/open/floor/iron, /area/station/commons/lounge) @@ -431,8 +455,8 @@ /area/station/commons/lounge) "WG" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/media/jukebox, -/obj/machinery/light/directional/north, +/obj/structure/chair/stool/bar/directional/west, +/obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/commons/lounge) "XC" = ( @@ -454,9 +478,9 @@ tH EF tH PD -uI cD -uI +WG +cD DZ tH XC @@ -469,7 +493,7 @@ sZ "} (2,1,1) = {" Ca -zQ +tH EF EF EF @@ -488,33 +512,33 @@ sZ "} (3,1,1) = {" Ca -tH +fV kE tH DV On EF -On +uI On tH Nm QZ vO -Jm +vO IP JF sZ "} (4,1,1) = {" -zF -Dt +Ca +Lc tH tH TB TB EF -Ly Tq +ZX tH tH cL @@ -525,12 +549,12 @@ Od sZ "} (5,1,1) = {" -Ca -EP +Mq +tH tH tH FT -FT +zQ dy FT CA @@ -544,8 +568,8 @@ uC ae "} (6,1,1) = {" -Ca -WG +zF +tH tH tH tH @@ -563,16 +587,16 @@ NZ NZ "} (7,1,1) = {" -Ca -eR +Mq +tH tH DR ZX -az +CQ EF fx TB -Cg +CQ tH tH mi @@ -582,16 +606,16 @@ NZ NZ "} (8,1,1) = {" -zF -tH +Ca +EP tH xm Ly -CQ +az EF xm TB -CQ +Cg tH tH mi @@ -621,9 +645,9 @@ dp "} (10,1,1) = {" Ca -fx -TB -Cg +dQ +Dt +eR Ca cH Uq diff --git a/_maps/~monkestation/RandomBars/Box/vietmoth_bar.dmm b/_maps/~monkestation/RandomBars/Box/vietmoth_bar.dmm index 317aabdb5f8a..180c7cfdb1f1 100644 --- a/_maps/~monkestation/RandomBars/Box/vietmoth_bar.dmm +++ b/_maps/~monkestation/RandomBars/Box/vietmoth_bar.dmm @@ -34,7 +34,6 @@ /turf/open/floor/grass, /area/station/commons/lounge) "ew" = ( -/obj/machinery/camera/autoname/directional/north, /obj/machinery/restaurant_portal/restaurant, /turf/open/floor/grass, /area/station/commons/lounge) @@ -52,7 +51,7 @@ dir = 1 }, /obj/structure/window/reinforced/spawner/directional/north, -/turf/open/misc/dirt/jungle, +/turf/open/misc/dirt/station, /area/station/service/theater) "gM" = ( /obj/structure/flora/bush/fullgrass/style_random, @@ -60,9 +59,8 @@ /turf/open/floor/grass, /area/station/commons/lounge) "gY" = ( -/obj/machinery/media/jukebox, -/obj/machinery/light/directional/north, -/turf/open/floor/grass, +/obj/machinery/light/small/directional/north, +/turf/open/water/jungle, /area/station/commons/lounge) "hS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -76,7 +74,7 @@ /turf/open/floor/grass, /area/station/commons/lounge) "jB" = ( -/turf/open/misc/dirt/jungle, +/turf/open/misc/dirt/station, /area/station/service/theater) "jK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -173,7 +171,8 @@ /turf/open/floor/grass, /area/station/commons/lounge) "py" = ( -/obj/machinery/barsign/directional/north, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/media/jukebox, /turf/open/floor/grass, /area/station/commons/lounge) "pP" = ( @@ -266,11 +265,6 @@ "yJ" = ( /turf/template_noop, /area/template_noop) -"zh" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/computer/slot_machine, -/turf/open/floor/grass, -/area/station/commons/lounge) "zv" = ( /obj/structure/table/wood, /obj/item/instrument/saxophone, @@ -298,6 +292,8 @@ /turf/open/floor/grass, /area/station/commons/lounge) "CX" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/barsign/directional/north, /obj/structure/flora/bush/jungle/a/style_random, /turf/open/floor/grass, /area/station/commons/lounge) @@ -324,8 +320,7 @@ /turf/open/floor/grass, /area/station/commons/lounge) "GX" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/small/directional/east, +/obj/machinery/light/directional/east, /obj/item/radio/intercom/directional/east, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -374,7 +369,7 @@ /area/station/commons/lounge) "Mu" = ( /obj/machinery/light/directional/east, -/turf/open/misc/dirt/jungle, +/turf/open/misc/dirt/station, /area/station/service/theater) "MI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -388,11 +383,11 @@ name = "service camera" }, /obj/machinery/airalarm/directional/south, -/turf/open/misc/dirt/jungle, +/turf/open/misc/dirt/station, /area/station/service/theater) "Ol" = ( /obj/item/radio/intercom/directional/south, -/turf/open/misc/dirt/jungle, +/turf/open/misc/dirt/station, /area/station/service/theater) "Oz" = ( /obj/structure/chair/wood{ @@ -410,8 +405,7 @@ /turf/open/floor/grass, /area/station/commons/lounge) "OY" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/light/small/directional/west, +/obj/machinery/light/directional/west, /obj/structure/flora/bush/fullgrass/style_random, /obj/structure/flora/bush/flowers_br/style_random, /turf/open/floor/grass, @@ -461,9 +455,9 @@ nj jK nj OY -Oz nR Oz +nR po nj YM @@ -476,7 +470,7 @@ yJ "} (2,1,1) = {" Ub -py +nj jK Bs jK @@ -503,18 +497,18 @@ nj jK QO dx -dx +vy Dg xk AS -zh +AS oa EB yJ "} (4,1,1) = {" -tT -nB +Ub +py nj nj FS @@ -532,8 +526,8 @@ vc yJ "} (5,1,1) = {" -Ub -ew +vv +nj QO nj Oz @@ -551,8 +545,8 @@ zv Im "} (6,1,1) = {" -Ub -gY +tT +nj nj lY Ke @@ -570,8 +564,8 @@ ZC ZC "} (7,1,1) = {" -Ub -BD +vv +nj mL mL mL @@ -589,8 +583,8 @@ jB jB "} (8,1,1) = {" -tT -mL +Ub +gY mL Yt FS @@ -628,9 +622,9 @@ Ol "} (10,1,1) = {" Ub -qi -FS -HA +ew +nB +BD Ub vv Hh diff --git a/_maps/~monkestation/RandomBars/Icebox/Magbar.dmm b/_maps/~monkestation/RandomBars/Icebox/Magbar.dmm index b81405dd2b06..059597c36201 100644 --- a/_maps/~monkestation/RandomBars/Icebox/Magbar.dmm +++ b/_maps/~monkestation/RandomBars/Icebox/Magbar.dmm @@ -66,18 +66,28 @@ }, /area/station/commons/lounge) "ci" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/brown, +/obj/structure/cable, /obj/structure/chair/stool/bar/directional/north{ pixel_y = 4 }, -/mob/living/carbon/human/species/monkey/punpun, -/turf/open/floor/pod, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron{ + base_icon_state = "basalt0"; + icon_state = "basalt0"; + name = "false ash tile" + }, /area/station/commons/lounge) "cG" = ( -/obj/item/gps/computer, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/structure/table/reinforced, +/obj/machinery/chem_dispenser/drinks/beer{ + pixel_y = 10 + }, +/obj/item/reagent_containers/cup/rag{ + pixel_x = 9; + pixel_y = 2 + }, /turf/open/floor/pod, /area/station/service/bar) "cR" = ( @@ -103,20 +113,6 @@ /obj/machinery/status_display/evac/directional/north, /turf/open/floor/pod, /area/station/commons/lounge) -"dX" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 4 - }, -/obj/structure/chair/stool/bar/directional/east{ - pixel_x = 1; - pixel_y = 3 - }, -/obj/effect/turf_decal/siding/brown{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/pod, -/area/station/commons/lounge) "eM" = ( /obj/structure/ore_box, /turf/open/floor/iron{ @@ -126,11 +122,16 @@ }, /area/station/commons/lounge) "eR" = ( -/obj/structure/table/reinforced/rglass, /obj/structure/cable, -/obj/item/food/pie/cream, -/turf/open/floor/pod, -/area/station/service/bar) +/obj/structure/chair/stool/bar/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron{ + base_icon_state = "basalt0"; + icon_state = "basalt0"; + name = "false ash tile" + }, +/area/station/commons/lounge) "eV" = ( /obj/structure/window/reinforced/survival_pod/spawner/directional/west, /obj/structure/window/reinforced/survival_pod/spawner/directional/south, @@ -182,10 +183,11 @@ }, /area/station/commons/lounge) "gc" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 6 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/siding/brown, +/obj/structure/table/reinforced/rglass, +/obj/effect/spawner/random/entertainment/gambling, /turf/open/floor/pod, /area/station/service/bar) "gz" = ( @@ -216,8 +218,9 @@ /obj/effect/turf_decal/siding/brown{ dir = 8 }, -/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/table/reinforced/rglass, +/obj/item/holosign_creator/robot_seat/bar, /turf/open/floor/pod, /area/station/service/bar) "hE" = ( @@ -231,15 +234,19 @@ }, /area/station/commons/lounge) "hN" = ( -/obj/structure/table/reinforced/rglass, -/obj/structure/desk_bell{ - pixel_x = 7 +/obj/structure/displaycase{ + alert = 0; + desc = "A display case containing an expensive forgery, probably."; + pixel_y = -4; + req_access = list("mining"); + start_showpiece_type = /obj/item/fakeartefact }, -/obj/structure/desk_bell{ - pixel_x = 7 +/turf/open/floor/iron{ + base_icon_state = "basalt0"; + icon_state = "basalt0"; + name = "false ash tile" }, -/turf/open/floor/pod, -/area/station/service/bar) +/area/station/commons/lounge) "hS" = ( /obj/machinery/camera/directional/south{ c_tag = "Service Theater - Backstage" @@ -265,16 +272,6 @@ name = "false ash tile" }, /area/station/commons/lounge) -"il" = ( -/obj/effect/turf_decal/siding/brown/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/brown{ - dir = 6 - }, -/obj/machinery/restaurant_portal/bar, -/turf/open/floor/pod, -/area/station/commons/lounge) "jh" = ( /obj/effect/turf_decal/siding/brown{ dir = 4 @@ -347,10 +344,6 @@ name = "false ash tile" }, /area/station/commons/lounge) -"lo" = ( -/obj/machinery/vending/boozeomat, -/turf/closed/wall/mineral/titanium/survival/pod, -/area/station/service/bar) "lq" = ( /obj/structure/disposalpipe/segment, /obj/structure/window/reinforced/survival_pod/spawner/directional/east, @@ -364,16 +357,21 @@ }, /area/station/commons/lounge) "lw" = ( -/obj/effect/turf_decal/mining, -/turf/closed/wall/mineral/titanium/survival/pod, +/obj/machinery/restaurant_portal/bar, +/turf/open/floor/iron{ + base_icon_state = "basalt0"; + icon_state = "basalt0"; + name = "false ash tile" + }, /area/station/commons/lounge) "lF" = ( /obj/effect/turf_decal/siding/brown{ dir = 10 }, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/spawner/random/entertainment/gambling, +/obj/structure/table/reinforced/rglass, /turf/open/floor/pod, /area/station/service/bar) "lW" = ( @@ -424,12 +422,17 @@ /turf/open/floor/pod, /area/station/service/bar/backroom) "nh" = ( -/obj/structure/table/reinforced/rglass, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/entertainment/gambling, -/turf/open/floor/pod, -/area/station/service/bar) +/obj/structure/chair/stool/bar/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron{ + base_icon_state = "basalt0"; + icon_state = "basalt0"; + name = "false ash tile" + }, +/area/station/commons/lounge) "nq" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -467,18 +470,16 @@ }, /area/station/commons/lounge) "qd" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 8 - }, /obj/structure/chair/stool/bar/directional/west{ pixel_x = -1; pixel_y = 3 }, -/obj/effect/turf_decal/siding/brown{ - dir = 4 - }, /obj/effect/landmark/start/hangover, -/turf/open/floor/pod, +/turf/open/floor/iron{ + base_icon_state = "basalt0"; + icon_state = "basalt0"; + name = "false ash tile" + }, /area/station/commons/lounge) "qe" = ( /obj/effect/turf_decal/siding/brown/corner{ @@ -491,29 +492,7 @@ /obj/structure/cable, /turf/open/floor/pod, /area/station/service/bar/backroom) -"qB" = ( -/obj/machinery/jukebox{ - pixel_x = -1; - pixel_y = -2 - }, -/obj/effect/turf_decal/siding/brown/end{ - dir = 1 - }, -/turf/open/floor/pod, -/area/station/commons/lounge) "qS" = ( -/obj/structure/table/reinforced, -/obj/machinery/chem_dispenser/drinks{ - dir = 8; - pixel_x = 3 - }, -/obj/item/reagent_containers/cup/glass/shaker{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/effect/turf_decal/siding/brown/end{ - dir = 8 - }, /turf/open/floor/pod, /area/station/service/bar) "qV" = ( @@ -550,29 +529,13 @@ "rR" = ( /turf/closed/wall/mineral/titanium/survival/pod, /area/station/service/bar) -"sf" = ( -/turf/closed/wall/mineral/titanium/survival, -/area/station/service/bar/backroom) "sK" = ( /obj/effect/turf_decal/siding/brown, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/food/pie/cream, +/obj/structure/table/reinforced/rglass, /turf/open/floor/pod, /area/station/service/bar) -"tl" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 4 - }, -/obj/effect/turf_decal/siding/brown{ - dir = 8 - }, -/obj/structure/chair/stool/bar/directional/east{ - pixel_x = 1; - pixel_y = 3 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod, -/area/station/commons/lounge) "tn" = ( /obj/machinery/computer/slot_machine{ pixel_x = 2 @@ -598,8 +561,13 @@ }, /area/station/commons/lounge) "us" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 6 + }, /obj/structure/table/reinforced/rglass, -/obj/effect/spawner/random/entertainment/gambling, +/obj/structure/displaycase/forsale/kitchen{ + pixel_y = 8 + }, /turf/open/floor/pod, /area/station/service/bar) "uy" = ( @@ -615,14 +583,13 @@ /turf/open/floor/pod, /area/station/commons/lounge) "vu" = ( -/obj/structure/table/reinforced/rglass, /obj/machinery/light/directional/north, -/obj/structure/sign/picture_frame/portrait/bar{ - pixel_x = -8; - pixel_y = 32 +/turf/open/floor/iron{ + base_icon_state = "basalt0"; + icon_state = "basalt0"; + name = "false ash tile" }, -/turf/open/floor/pod, -/area/station/service/bar) +/area/station/commons/lounge) "vL" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -641,9 +608,17 @@ }, /area/station/commons/lounge) "vY" = ( -/obj/structure/table/reinforced/rglass, -/turf/open/floor/pod, -/area/station/service/bar) +/obj/structure/cable, +/obj/structure/chair/stool/bar/directional/north{ + pixel_y = 4 + }, +/mob/living/carbon/human/species/monkey/punpun, +/turf/open/floor/iron{ + base_icon_state = "basalt0"; + icon_state = "basalt0"; + name = "false ash tile" + }, +/area/station/commons/lounge) "wC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -745,9 +720,7 @@ }, /area/station/commons/lounge) "Ae" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, +/obj/machinery/light/floor/has_bulb, /turf/open/floor/pod, /area/station/service/bar) "Am" = ( @@ -794,8 +767,15 @@ /turf/open/floor/pod, /area/station/commons/lounge) "Bg" = ( -/obj/machinery/smartfridge/survival_pod/preloaded, /obj/machinery/firealarm/directional/north, +/obj/structure/table/reinforced, +/obj/machinery/chem_dispenser/drinks{ + pixel_y = 10 + }, +/obj/item/reagent_containers/cup/glass/shaker{ + pixel_x = -8; + pixel_y = 4 + }, /turf/open/floor/pod, /area/station/service/bar) "Bq" = ( @@ -839,17 +819,15 @@ }, /area/station/commons/lounge) "Ci" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 8 - }, /obj/structure/chair/stool/bar/directional/west{ pixel_x = -1; pixel_y = 3 }, -/obj/effect/turf_decal/siding/brown{ - dir = 4 +/turf/open/floor/iron{ + base_icon_state = "basalt0"; + icon_state = "basalt0"; + name = "false ash tile" }, -/turf/open/floor/pod, /area/station/commons/lounge) "CQ" = ( /obj/structure/disposalpipe/segment, @@ -900,22 +878,10 @@ }, /area/station/commons/lounge) "Ea" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 4 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/cable, /turf/open/floor/pod, /area/station/service/bar) -"Ec" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/brown, -/obj/structure/chair/stool/bar/directional/north{ - pixel_y = 4 - }, -/turf/open/floor/pod, -/area/station/commons/lounge) "EC" = ( /obj/machinery/light/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -952,7 +918,7 @@ }, /area/station/commons/lounge) "ET" = ( -/turf/closed/wall/mineral/titanium/survival/pod, +/turf/closed/wall, /area/station/commons/lounge) "Fk" = ( /obj/effect/turf_decal/siding/brown{ @@ -965,25 +931,18 @@ /turf/open/floor/pod, /area/station/service/bar/backroom) "Fr" = ( -/obj/structure/table/reinforced, -/obj/machinery/chem_dispenser/drinks/beer{ - dir = 4; - pixel_x = -5; - pixel_y = 7 - }, -/obj/effect/turf_decal/siding/brown/end{ +/obj/effect/landmark/start/bartender, +/turf/open/floor/pod, +/area/station/service/bar) +"Ft" = ( +/obj/effect/turf_decal/siding/brown{ dir = 4 }, -/obj/item/reagent_containers/cup/rag{ - pixel_x = 9; - pixel_y = 6 +/obj/machinery/vending/boozeomat{ + layer = 3.1 }, -/turf/open/floor/pod, +/turf/open/space/basic, /area/station/service/bar) -"Ft" = ( -/obj/effect/turf_decal/mining/survival, -/turf/closed/wall/mineral/titanium/survival, -/area/station/service/bar/backroom) "Gt" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/all/service/bar, @@ -1035,12 +994,15 @@ }, /area/station/commons/lounge) "It" = ( -/obj/structure/table/reinforced/rglass, -/obj/structure/desk_bell{ - pixel_x = -7 +/obj/structure/chair/stool/bar/directional/north{ + pixel_y = 4 }, -/turf/open/floor/pod, -/area/station/service/bar) +/turf/open/floor/iron{ + base_icon_state = "basalt0"; + icon_state = "basalt0"; + name = "false ash tile" + }, +/area/station/commons/lounge) "Jn" = ( /obj/item/radio/intercom/directional/east, /turf/open/floor/iron{ @@ -1050,8 +1012,7 @@ }, /area/station/commons/lounge) "Kh" = ( -/obj/effect/turf_decal/mining, -/turf/closed/wall/mineral/titanium/survival, +/turf/closed/wall, /area/station/maintenance/department/crew_quarters/bar) "KA" = ( /obj/structure/chair/stool/bar/directional/west{ @@ -1065,25 +1026,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/pod, /area/station/commons/lounge) -"KQ" = ( -/obj/effect/turf_decal/mining/survival{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium/survival, -/area/station/service/bar/backroom) -"KR" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 4 - }, -/obj/effect/turf_decal/siding/brown{ - dir = 8 - }, -/obj/structure/chair/stool/bar/directional/east{ - pixel_x = 1; - pixel_y = 3 - }, -/turf/open/floor/pod, -/area/station/commons/lounge) "KT" = ( /obj/structure/window/reinforced/survival_pod/spawner/directional/south, /obj/effect/turf_decal/siding/brown, @@ -1105,22 +1047,13 @@ }, /turf/open/floor/pod, /area/station/commons/lounge) -"KX" = ( -/obj/effect/turf_decal/mining/survival{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium/survival/pod, -/area/station/commons/lounge) "Lw" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/brown, -/obj/structure/chair/stool/bar/directional/north{ - pixel_y = 4 - }, /obj/structure/cable, -/turf/open/floor/pod, +/turf/open/floor/iron{ + base_icon_state = "basalt0"; + icon_state = "basalt0"; + name = "false ash tile" + }, /area/station/commons/lounge) "LO" = ( /obj/effect/turf_decal/siding/brown{ @@ -1162,16 +1095,6 @@ name = "false ash tile" }, /area/station/commons/lounge) -"MW" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/structure/chair/stool/bar/directional/north{ - pixel_y = 4 - }, -/obj/effect/turf_decal/siding/brown, -/turf/open/floor/pod, -/area/station/commons/lounge) "ND" = ( /obj/structure/rack, /obj/structure/disposalpipe/segment{ @@ -1233,20 +1156,10 @@ /turf/open/floor/pod, /area/station/commons/lounge) "Rd" = ( -/obj/structure/fans, /obj/item/radio/intercom/directional/north, -/turf/open/floor/pod, +/obj/machinery/smartfridge/survival_pod/preloaded, +/turf/closed/wall/mineral/titanium/survival/pod, /area/station/service/bar) -"RS" = ( -/obj/effect/turf_decal/siding/brown/end{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Service Bar North"; - dir = 9 - }, -/turf/open/floor/pod, -/area/station/commons/lounge) "SB" = ( /obj/structure/window/reinforced/survival_pod/spawner/directional/west, /obj/machinery/light/directional/south, @@ -1270,13 +1183,7 @@ /turf/open/floor/pod, /area/station/service/bar/backroom) "Tg" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/brown/corner, +/obj/structure/cable, /turf/open/floor/pod, /area/station/service/bar) "Ti" = ( @@ -1289,7 +1196,7 @@ /turf/open/floor/pod, /area/station/commons/lounge) "TB" = ( -/turf/closed/wall/mineral/titanium/survival, +/turf/closed/wall, /area/station/maintenance/starboard/lesser) "Uo" = ( /obj/structure/window/reinforced/survival_pod/spawner/directional/south, @@ -1306,29 +1213,11 @@ /obj/structure/cable, /turf/open/floor/pod, /area/station/service/bar/backroom) -"Vp" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/brown, -/obj/structure/chair/stool/bar/directional/north{ - pixel_y = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/pod, -/area/station/commons/lounge) "VB" = ( -/obj/machinery/door/window{ - base_state = "right"; - dir = 4; - icon_state = "right"; - name = "Bar Interior" +/obj/machinery/door/airlock{ + name = "Bar" }, /obj/effect/mapping_helpers/airlock/access/all/service/bar, -/obj/effect/turf_decal/siding/brown/end{ - dir = 4 - }, -/obj/machinery/light/directional/north, /turf/open/floor/pod, /area/station/service/bar) "VG" = ( @@ -1350,27 +1239,16 @@ }, /area/station/commons/lounge) "WC" = ( -/obj/structure/table/reinforced, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/reagentgrinder{ - pixel_x = -6; - pixel_y = 4 - }, /obj/machinery/airalarm/directional/north, -/turf/open/floor/pod, +/turf/closed/wall/mineral/titanium/survival/pod, /area/station/service/bar) "WT" = ( /obj/effect/turf_decal/siding/brown, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/bartender, -/turf/open/floor/pod, -/area/station/service/bar) -"Xk" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 9 +/obj/structure/desk_bell{ + pixel_x = -7 }, -/obj/structure/cable, +/obj/structure/table/reinforced/rglass, /turf/open/floor/pod, /area/station/service/bar) "Xv" = ( @@ -1390,22 +1268,6 @@ name = "false ash tile" }, /area/station/commons/lounge) -"XK" = ( -/obj/effect/turf_decal/siding/brown/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/brown{ - dir = 10 - }, -/obj/structure/displaycase{ - alert = 0; - desc = "A display case containing an expensive forgery, probably."; - pixel_y = -4; - req_access = list("mining"); - start_showpiece_type = /obj/item/fakeartefact - }, -/turf/open/floor/pod, -/area/station/commons/lounge) "Yk" = ( /obj/machinery/door/window/survival_pod, /obj/effect/turf_decal/siding/brown, @@ -1424,6 +1286,7 @@ }, /area/station/commons/lounge) "YP" = ( +/obj/machinery/camera/directional/east, /turf/open/floor/iron{ base_icon_state = "basalt5"; icon_state = "basalt5"; @@ -1444,6 +1307,10 @@ /area/station/service/bar/backroom) "ZX" = ( /obj/machinery/computer/security/telescreen/entertainment/directional/north, +/obj/machinery/jukebox{ + pixel_x = -1; + pixel_y = -2 + }, /turf/open/floor/iron{ base_icon_state = "basalt0"; icon_state = "basalt0"; @@ -1499,7 +1366,7 @@ EK EK CU hS -KX +ET jN xc DX @@ -1522,12 +1389,12 @@ EK EK "} (6,1,1) = {" -lw -qB -KR -tl -dX -XK +wY +wY +wY +aH +wY +wY aH Ww OA @@ -1536,12 +1403,12 @@ EK EK "} (7,1,1) = {" -rR +wY vu -vY +It nh It -MW +wY fg Yy nq @@ -1551,7 +1418,7 @@ EK "} (8,1,1) = {" WC -Xk +VB hm lF eR @@ -1565,11 +1432,11 @@ EK "} (9,1,1) = {" Rd -Ae +qS qS WT -vY -Vp +ci +wY aH HS KA @@ -1583,7 +1450,7 @@ Ae Fr sK vY -ci +wY fs HS uy @@ -1596,8 +1463,8 @@ cG Tg Ea gc -vY -Vp +eR +wY hZ AP ND @@ -1606,12 +1473,12 @@ ak EK "} (12,1,1) = {" -lo +rR VB -vY +Ft us -hN -Ec +It +wY VG HS MM @@ -1621,11 +1488,11 @@ EK "} (13,1,1) = {" lw -RS +wY qd Ci Ci -il +wY wC EC mo @@ -1648,12 +1515,12 @@ eM EK "} (15,1,1) = {" -sf -KQ -sf -sf -KQ -sf +nF +nF +nF +nF +nF +nF tn BV OA @@ -1662,12 +1529,12 @@ rp EK "} (16,1,1) = {" -sf +nF Bq zn Xv mH -Ft +nF KU wT OA @@ -1698,7 +1565,7 @@ Db TB Gt TB -wY +hN TB TB EK diff --git a/_maps/~monkestation/RandomBars/Icebox/cultbar_icebox.dmm b/_maps/~monkestation/RandomBars/Icebox/cultbar_icebox.dmm index 7dbd2147836c..dfe06cb3c8d7 100644 --- a/_maps/~monkestation/RandomBars/Icebox/cultbar_icebox.dmm +++ b/_maps/~monkestation/RandomBars/Icebox/cultbar_icebox.dmm @@ -1,4 +1,15 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet/red, +/area/station/service/theater) "aB" = ( /obj/effect/landmark/start/bartender, /turf/open/floor/cult, @@ -22,14 +33,16 @@ }, /turf/open/floor/cult, /area/station/commons/lounge) -"bG" = ( -/obj/structure/window/reinforced/spawner/directional/north, +"cd" = ( +/obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/door/firedoor/border_only{ - dir = 1 + dir = 4 }, -/obj/machinery/computer/slot_machine, -/obj/structure/cable, -/turf/open/floor/cult, +/obj/effect/decal/cleanable/blood/innards, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/carpet/red, /area/station/service/theater) "ce" = ( /obj/structure/table/wood/fancy/red, @@ -108,6 +121,14 @@ /obj/effect/forcefield/cult/permanent, /turf/open/floor/cult, /area/station/service/bar) +"gn" = ( +/obj/effect/decal/cleanable/blood, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/carpet/red, +/area/station/service/theater) "gM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/cult, @@ -134,13 +155,11 @@ /obj/structure/cable, /turf/open/floor/cult, /area/station/service/theater) -"hS" = ( +"hL" = ( /obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/decal/cleanable/blood/gibs/core, /obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/structure/disposalpipe/segment, /turf/open/floor/carpet/red, /area/station/service/theater) "in" = ( @@ -155,6 +174,16 @@ }, /turf/open/floor/cult, /area/station/service/bar) +"ip" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/carpet/red, +/area/station/service/theater) "is" = ( /obj/machinery/vending/cigarette, /turf/open/floor/cult, @@ -176,19 +205,20 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/cult, /area/station/service/bar) -"iK" = ( -/obj/effect/decal/cleanable/blood, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) "iX" = ( /obj/effect/spawner/random/structure/musician/piano/random_piano, /obj/structure/cable, /turf/open/floor/cult, /area/station/service/theater) +"iZ" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/computer/slot_machine, +/obj/structure/cable, +/turf/open/floor/cult, +/area/station/service/theater) "ja" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/blood/footprints, @@ -224,13 +254,6 @@ /obj/item/radio/intercom/command/directional/east, /turf/open/floor/cult, /area/station/service/bar/backroom) -"lC" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) "mo" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/cult, @@ -315,23 +338,21 @@ /obj/machinery/computer/security/telescreen/entertainment/directional/north, /turf/open/floor/cult, /area/station/commons/lounge) +"rl" = ( +/obj/structure/chair/sofa/right/maroon{ + dir = 1; + name = "old bloody sofa" + }, +/obj/machinery/atm/directional/south, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/cult, +/area/station/commons/lounge) "sf" = ( /obj/effect/decal/cleanable/blood/hitsplatter{ dir = 1 }, /turf/open/floor/cult, /area/station/commons/lounge) -"sw" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/innards, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) "sz" = ( /obj/structure/chair/sofa/middle/maroon{ dir = 4; @@ -413,14 +434,6 @@ /obj/item/clothing/suit/hooded/cultrobes/berserker, /turf/open/floor/cult, /area/station/service/theater) -"wl" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/computer/slot_machine, -/turf/open/floor/cult, -/area/station/service/theater) "wz" = ( /obj/machinery/door/airlock/cult/friendly, /obj/structure/cable, @@ -483,6 +496,15 @@ /obj/item/kirbyplants/random, /turf/open/floor/cult, /area/station/commons/lounge) +"Aj" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/decal/cleanable/blood/gibs/core, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet/red, +/area/station/service/theater) "Ap" = ( /obj/structure/chair/stool/directional/north{ name = "bloody stool" @@ -515,6 +537,15 @@ /obj/structure/cable, /turf/open/floor/cult, /area/station/service/bar) +"BX" = ( +/obj/structure/table/wood/fancy/red, +/obj/item/vending_refill/cigarette, +/obj/item/book/bible/booze{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/cult, +/area/station/service/bar/backroom) "Ca" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -553,15 +584,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/cult, /area/station/service/bar) -"DR" = ( -/obj/structure/chair/sofa/right/maroon{ - dir = 1; - name = "old bloody sofa" - }, -/obj/machinery/atm/directional/south, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/cult, -/area/station/commons/lounge) "DS" = ( /turf/open/floor/cult, /area/station/service/theater) @@ -618,6 +640,14 @@ /obj/item/toy/toy_dagger, /turf/open/floor/cult, /area/station/commons/lounge) +"Hg" = ( +/obj/structure/chair/sofa/corner/maroon{ + dir = 4; + name = "old bloody sofa" + }, +/obj/machinery/atm/directional/north, +/turf/open/floor/cult, +/area/station/commons/lounge) "HO" = ( /obj/structure/table/wood/fancy/red, /obj/item/food/pie/cream{ @@ -699,16 +729,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/cult, /area/station/commons/lounge) -"Kk" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet/red, -/area/station/service/theater) "KB" = ( /obj/structure/table/wood/fancy/red, /obj/item/toy/toy_dagger, @@ -794,14 +814,6 @@ }, /turf/open/floor/cult, /area/station/commons/lounge) -"MS" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/computer/arcade/amputation, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/cult, -/area/station/service/theater) "Nw" = ( /obj/structure/table/wood/fancy/red, /obj/machinery/reagentgrinder{ @@ -809,14 +821,6 @@ }, /turf/open/floor/cult, /area/station/service/bar) -"Op" = ( -/obj/structure/chair/sofa/corner/maroon{ - dir = 4; - name = "old bloody sofa" - }, -/obj/machinery/atm/directional/north, -/turf/open/floor/cult, -/area/station/commons/lounge) "Ov" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 8 @@ -872,17 +876,6 @@ /obj/structure/sign/picture_frame/portrait/bar, /turf/closed/wall/mineral/cult, /area/station/service/bar) -"QN" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/red, -/area/station/service/theater) "QV" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -931,6 +924,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/cult, /area/station/commons/lounge) +"Tx" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/computer/arcade/amputation, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/cult, +/area/station/service/theater) "TV" = ( /obj/machinery/suit_storage_unit/open, /obj/item/clothing/suit/hooded/cultrobes/hardened, @@ -980,15 +981,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/cult, /area/station/commons/lounge) -"VW" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/vending_refill/cigarette, -/obj/item/storage/book/bible/booze{ - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/cult, -/area/station/service/bar/backroom) "VX" = ( /obj/machinery/barsign/directional/north, /obj/structure/chair/sofa/corner/maroon{ @@ -1006,6 +998,14 @@ /obj/structure/cable, /turf/open/floor/cult, /area/station/service/bar/backroom) +"WM" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/computer/slot_machine, +/turf/open/floor/cult, +/area/station/service/theater) "WV" = ( /obj/effect/decal/cleanable/blood/footprints{ dir = 8 @@ -1091,7 +1091,7 @@ Fz wk XT DS -MS +Tx Ap Cq US @@ -1105,12 +1105,12 @@ EK ce Ov DS -wl +WM EO Cq US dR -DR +rl "} (4,1,1) = {" EK @@ -1119,7 +1119,7 @@ EK iX oW hy -bG +iZ Io nv do @@ -1133,7 +1133,7 @@ fg fg KD Va -Kk +ip gM Cq Wv @@ -1155,13 +1155,13 @@ EK EK "} (7,1,1) = {" -lC -lC -lC -iK -sw -hS -QN +hL +hL +hL +gn +cd +Aj +aa Jy Zn do @@ -1169,7 +1169,7 @@ do EK "} (8,1,1) = {" -Op +Hg By sf US @@ -1299,7 +1299,7 @@ mX qy aB qR -VW +BX EJ DA RL diff --git a/_maps/~monkestation/RandomEngines/BoxStation/empty.dmm b/_maps/~monkestation/RandomEngines/BoxStation/empty.dmm index 31f0358d300b..70ab6bba77b0 100644 --- a/_maps/~monkestation/RandomEngines/BoxStation/empty.dmm +++ b/_maps/~monkestation/RandomEngines/BoxStation/empty.dmm @@ -3,7 +3,7 @@ /turf/open/floor/iron, /area/station/engineering/main) "b" = ( -/obj/machinery/light/directional/south, +/obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark, /area/station/engineering/main) "c" = ( @@ -47,7 +47,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "m" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, @@ -78,7 +78,7 @@ }, /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "A" = ( /obj/structure/lattice, /turf/open/space/basic, @@ -88,7 +88,7 @@ /area/station/engineering/main) "C" = ( /turf/closed/wall/r_wall, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "D" = ( /obj/machinery/light/directional/north, /obj/machinery/airalarm/directional/north, @@ -167,14 +167,14 @@ "Z" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) (1,1,1) = {" R B B B -B +R R f A @@ -875,7 +875,7 @@ Z l z C -C +a a a a @@ -902,7 +902,6 @@ f f f f -f C a a @@ -911,6 +910,7 @@ a a a a +a R r r @@ -930,7 +930,6 @@ f f f f -f C a a @@ -939,6 +938,7 @@ a a a a +a R f f @@ -958,17 +958,17 @@ f f f f -f C -R -R -R -R -Y -Y -Y -R -A +C +C +C +C +C +C +C +C +C +C A A A diff --git a/_maps/~monkestation/RandomEngines/BoxStation/particle_accelerator.dmm b/_maps/~monkestation/RandomEngines/BoxStation/particle_accelerator.dmm index b692448e494f..32de13887c45 100644 --- a/_maps/~monkestation/RandomEngines/BoxStation/particle_accelerator.dmm +++ b/_maps/~monkestation/RandomEngines/BoxStation/particle_accelerator.dmm @@ -20,9 +20,8 @@ /area/station/engineering/main) "cp" = ( /obj/machinery/camera/emp_proof/directional/north{ - c_tag = "Engineering - Station Particle Accelerator, Northeast"; - name = "engineering camera"; - dir = 9 + c_tag = "Engineering - Station Particle Accelerator, Northwest"; + name = "engineering camera" }, /turf/open/floor/plating/airless, /area/space/nearstation) @@ -48,8 +47,9 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "dV" = ( -/turf/open/floor/plating/airless, -/area/station/maintenance/department/engine) +/obj/structure/foamedmetal, +/turf/open/floor/plating, +/area/station/maintenance/department/engineering/central) "fX" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -145,7 +145,7 @@ "il" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "iV" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -192,6 +192,12 @@ /obj/item/stack/cable_coil, /turf/open/floor/plating, /area/station/engineering/main) +"lg" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/engineering/main) "lC" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -221,7 +227,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/light/small/directional/north, /obj/machinery/button/door/directional/north{ id = "particle_accelerator"; name = "Particle Accelerator Shutters Control"; @@ -244,7 +249,7 @@ }, /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "os" = ( /obj/machinery/power/emitter{ dir = 1 @@ -283,8 +288,10 @@ /turf/open/floor/iron, /area/station/engineering/main) "rU" = ( -/obj/machinery/light/directional/south, +/obj/machinery/light/small/directional/south, /obj/structure/cable, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/engineering/main) "sM" = ( @@ -298,6 +305,10 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/main) +"sQ" = ( +/obj/structure/chair, +/turf/open/floor/iron/dark, +/area/station/engineering/main) "tq" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -435,7 +446,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "zF" = ( /obj/machinery/door/airlock/engineering/glass{ name = "Engine SMES Room" @@ -469,6 +480,11 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) +"BY" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron, +/area/station/engineering/main) "Cp" = ( /obj/structure/table, /obj/machinery/camera/directional/north{ @@ -540,6 +556,7 @@ name = "Engine Storage Control"; req_access = list("engineering") }, +/obj/machinery/camera/autoname/directional/west, /obj/structure/tank_holder/oxygen/yellow, /turf/open/floor/plating, /area/station/engineering/main) @@ -702,7 +719,7 @@ dir = 1 }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/light/directional/north, +/obj/machinery/light/small/directional/north, /obj/structure/sign/warning/vacuum/external/directional/north, /turf/open/floor/plating, /area/station/engineering/main) @@ -716,6 +733,7 @@ /obj/effect/turf_decal/stripes/end{ dir = 4 }, +/obj/machinery/camera/autoname/directional/east, /obj/structure/tank_holder/oxygen/yellow, /turf/open/floor/plating, /area/station/engineering/main) @@ -741,6 +759,11 @@ }, /turf/open/floor/iron, /area/station/engineering/main) +"SS" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron, +/area/station/engineering/main) "TF" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -788,7 +811,7 @@ /area/space/nearstation) "Zx" = ( /turf/closed/wall/r_wall, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "ZH" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -798,8 +821,7 @@ "ZW" = ( /obj/machinery/camera/emp_proof/directional/south{ name = "engineering camera"; - c_tag = "Engineering - Station Particle Accelerator, Southeast"; - dir = 5 + c_tag = "Engineering - Station Particle Accelerator, Southwest" }, /turf/open/floor/plating/airless, /area/space/nearstation) @@ -809,7 +831,7 @@ PG oN oN oN -oN +PG PG GW GW @@ -974,7 +996,7 @@ GW "} (7,1,1) = {" PG -oN +sQ GK oN ge @@ -1002,10 +1024,10 @@ Cs "} (8,1,1) = {" PG -oN +sQ GK hq -rU +lg PG GW GW @@ -1030,7 +1052,7 @@ GW "} (9,1,1) = {" PG -oN +sQ GK oN PG @@ -1085,13 +1107,13 @@ wX El "} (11,1,1) = {" -Fz +BY mE iV bj PG PV -PG +Cq Zp Zp Zp @@ -1477,13 +1499,13 @@ wX El "} (25,1,1) = {" -Fz +SS mE TF SB PG PV -PG +Cq Zp Zp Zp @@ -1574,9 +1596,9 @@ kk kk kk kk +kk FS GW -GW wX GW wX @@ -1603,7 +1625,7 @@ GW GW GW GW -wX +GW wX wX wX diff --git a/_maps/~monkestation/RandomEngines/BoxStation/sm_teg.dmm b/_maps/~monkestation/RandomEngines/BoxStation/sm_teg.dmm new file mode 100644 index 000000000000..67298b8c7ad4 --- /dev/null +++ b/_maps/~monkestation/RandomEngines/BoxStation/sm_teg.dmm @@ -0,0 +1,3170 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aU" = ( +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"bg" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Engine Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, +/turf/open/floor/iron/dark/textured_large, +/area/station/engineering/main) +"bi" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/orange/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"bC" = ( +/obj/structure/cable, +/obj/machinery/power/terminal{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"bQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"bX" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"ce" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron, +/area/station/engineering/main) +"ci" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"cV" = ( +/obj/structure/foamedmetal, +/turf/open/floor/plating, +/area/station/maintenance/department/engineering/central) +"db" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/obj/machinery/status_display/evac/directional/north, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"dp" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"dL" = ( +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/main) +"dX" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/camera/autoname/directional/east, +/obj/structure/tank_holder/oxygen/yellow, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/main) +"eq" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"ev" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating, +/area/station/engineering/main) +"eG" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/item/folder/yellow, +/turf/open/floor/iron, +/area/station/engineering/main) +"eI" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 6 + }, +/turf/open/space/basic, +/area/space/nearstation) +"eL" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Filter to Waste"; + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"eT" = ( +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"eU" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "eng_burn"; + name = "Burn Chamber Radiation Shutters" + }, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"eZ" = ( +/obj/effect/turf_decal/stripes/end, +/obj/machinery/camera/directional/east{ + c_tag = "Engineering Supermatter Chamber"; + name = "engineering camera"; + network = list("engine") + }, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/structure/cable, +/obj/machinery/power/energy_accumulator/tesla_coil/anchored, +/turf/open/floor/plating, +/area/station/engineering/supermatter) +"fw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Filter to Waste"; + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"fy" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter) +"fX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"gf" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 10 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"gm" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Engine Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, +/turf/open/floor/iron/dark/textured_large, +/area/station/engineering/main) +"gu" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space/basic, +/area/space/nearstation) +"gK" = ( +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"gQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "emitter_room"; + name = "Emitter Room Shutters"; + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/main) +"gW" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"hD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/power/emitter/welded{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/engineering/main) +"hG" = ( +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 10 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"hQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/violet/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"hT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "eng_sm"; + name = "Radiation Chamber Shutters" + }, +/turf/open/floor/plating, +/area/station/engineering/supermatter) +"hU" = ( +/obj/structure/table, +/obj/machinery/camera/directional/north{ + c_tag = "Engineering - SMES, Engine"; + name = "engineering camera" + }, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"in" = ( +/obj/structure/cable, +/obj/machinery/power/terminal{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"io" = ( +/turf/open/floor/engine/vacuum, +/area/station/engineering/supermatter/room) +"it" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/power/energy_accumulator/grounding_rod/anchored, +/turf/open/floor/plating, +/area/station/engineering/supermatter) +"ix" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Gas Director" + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"iC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer4, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister/plasma, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"iR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/power/energy_accumulator/tesla_coil/anchored, +/turf/open/floor/plating, +/area/station/engineering/supermatter) +"iV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/pink/visible{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"ja" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/engineering/main) +"jc" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/main) +"jz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"jO" = ( +/obj/structure/cable, +/obj/machinery/power/smes/engineering, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"jQ" = ( +/obj/structure/girder/reinforced, +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"jY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"kc" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/engineering/main) +"kg" = ( +/obj/machinery/atmospherics/components/binary/circulator{ + dir = 4 + }, +/turf/open/floor/circuit/green, +/area/station/engineering/supermatter/room) +"kn" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"kv" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"ky" = ( +/obj/machinery/firealarm/directional/north{ + pixel_x = -5 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/main) +"kN" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating, +/area/station/maintenance/department/engineering/central) +"kV" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Engine SMES Room" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/main) +"lb" = ( +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/main) +"lf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/pipe_dispenser, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"li" = ( +/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airalarm/engine_access, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"ll" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"lm" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/camera/autoname/directional/west, +/obj/structure/tank_holder/oxygen/yellow, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/main) +"lq" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Waste"; + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"lE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"lJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"lQ" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/pink/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"lS" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ + dir = 10 + }, +/turf/open/space/basic, +/area/space/nearstation) +"mg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/pink/visible{ + dir = 1 + }, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"mw" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"mB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/pink/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"mF" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Engine SMES Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/main) +"mL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"mN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"mO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/item/radio/intercom/directional/west, +/obj/structure/table/reinforced, +/obj/item/clothing/glasses/meson/engine{ + pixel_x = -4; + pixel_y = 8 + }, +/obj/item/clothing/glasses/meson/engine, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"mR" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 6 + }, +/turf/open/floor/iron, +/area/station/engineering/main) +"nr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/engine/vacuum, +/area/station/engineering/supermatter/room) +"nT" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/pink/visible, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"of" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/layer_manifold/dark/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"og" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/item/radio/intercom/directional/east, +/obj/structure/table/reinforced, +/obj/item/clothing/glasses/meson/engine{ + pixel_x = 4; + pixel_y = 8 + }, +/obj/item/clothing/glasses/meson/engine, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"ot" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 6 + }, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "eng_burn"; + name = "Burn Chamber Radiation Shutters" + }, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"oA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4, +/obj/machinery/portable_atmospherics/canister/plasma, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"oB" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Engineering - Engine Room, Northwest"; + name = "engineering camera" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"oO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/obj/machinery/status_display/ai/directional/north, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"oV" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/turf/open/space/basic, +/area/space/nearstation) +"oZ" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter/room) +"pN" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Hot Loop" + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"qa" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"qm" = ( +/obj/machinery/light/directional/north, +/obj/machinery/airalarm/directional/north, +/obj/structure/table, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"rf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer4, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"rg" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/engineering/main) +"rj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/camera/directional/east{ + c_tag = "Engineering - Engine Room, East"; + name = "engineering camera" + }, +/obj/machinery/status_display/evac/directional/east, +/obj/machinery/atmospherics/pipe/layer_manifold/cyan/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"ru" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"ry" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"rB" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"rJ" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/table, +/obj/item/storage/toolbox/electrical, +/turf/open/floor/iron, +/area/station/engineering/main) +"sg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "emitter_room"; + name = "Emitter Room Shutters"; + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/main) +"sm" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ + dir = 9 + }, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "eng_burn"; + name = "Burn Chamber Radiation Shutters" + }, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"sn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/cell_10k, +/obj/structure/table/reinforced, +/obj/item/pipe_dispenser, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"sr" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"su" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"sA" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/violet/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"sC" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/light/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 + }, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/main) +"sG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"sW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"tb" = ( +/obj/structure/cable/layer1, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"tw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"tx" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 5 + }, +/turf/open/space/basic, +/area/space/nearstation) +"tK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"tU" = ( +/turf/template_noop, +/area/template_noop) +"tV" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"uh" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/structure/cable/layer1, +/turf/open/floor/plating, +/area/station/engineering/supermatter) +"uz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"uI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"uU" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/directional/south, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"uW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"vh" = ( +/obj/effect/turf_decal/delivery/red, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/supermatter/room) +"vj" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"vn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"vp" = ( +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"vD" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"vG" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"vR" = ( +/obj/effect/turf_decal/delivery/red, +/obj/machinery/atmospherics/pipe/layer_manifold/pink/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/supermatter/room) +"wC" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 9 + }, +/turf/open/space/basic, +/area/space/nearstation) +"wG" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space/basic, +/area/space/nearstation) +"wQ" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/main) +"wR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"wS" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Waste to Filter" + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"xj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/structure/closet/radiation, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"xs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/orange/visible, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"xu" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"xw" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/turf/open/space/basic, +/area/space/nearstation) +"xB" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"xD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"xQ" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/turf/open/space/basic, +/area/space/nearstation) +"xR" = ( +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter) +"ya" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/sign/delam_procedure/directional/south, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"yg" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/turf/open/space/basic, +/area/space/nearstation) +"yi" = ( +/obj/structure/cable/layer1, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"yo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/machinery/airalarm/directional/east, +/obj/effect/mapping_helpers/airalarm/unlocked, +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"yx" = ( +/obj/effect/turf_decal/delivery/red, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/supermatter/room) +"yR" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 1 + }, +/turf/open/space/basic, +/area/space/nearstation) +"zd" = ( +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"zf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/button/door/directional/north{ + id = "emitter_room"; + name = "Emitter Room Shutters Control"; + req_access = list("engineering") + }, +/obj/machinery/camera/directional/north{ + c_tag = "Engineering - Emitters Room"; + name = "engineering camera" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"zj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"zR" = ( +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"Ae" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"Aj" = ( +/obj/effect/turf_decal/stripes/red/box, +/obj/machinery/power/supermatter_crystal/engine, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"Am" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2, +/turf/open/space/basic, +/area/space/nearstation) +"As" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/main) +"AA" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/table, +/obj/item/crowbar/red, +/turf/open/floor/iron, +/area/station/engineering/main) +"AB" = ( +/obj/machinery/igniter{ + id = "teg_burn_igniter" + }, +/turf/open/floor/engine/vacuum, +/area/station/engineering/supermatter/room) +"AE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/light/directional/south, +/obj/machinery/button/delam_scram{ + pixel_y = -32 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"AH" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/engineering/main) +"AU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer4, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2, +/obj/machinery/portable_atmospherics/canister/plasma, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Bc" = ( +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"Bq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Bs" = ( +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"Bx" = ( +/obj/structure/cable/multilayer/connected, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"BA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"BE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"BJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "Engineering - Engine Room, West"; + name = "engineering camera" + }, +/obj/machinery/status_display/ai/directional/west, +/obj/machinery/atmospherics/components/trinary/mixer/flipped{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Ca" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Engine Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/iron/dark/textured_large, +/area/station/engineering/main) +"Cw" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/valve/digital/on{ + dir = 4; + name = "Plasma Release" + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Dj" = ( +/obj/machinery/atmospherics/pipe/smart/simple/violet/visible, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Dq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/unlocked, +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 6 + }, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"DL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/poddoor{ + id = "sm_vent"; + name = "Supermatter Vent" + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"DP" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"DQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/orange/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"DV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/sign/warning/fire/directional/south, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Ee" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"Ef" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"Eo" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 5 + }, +/turf/open/space/basic, +/area/space/nearstation) +"Eu" = ( +/obj/structure/cable, +/obj/machinery/power/thermoelectric_generator, +/turf/open/floor/circuit/green, +/area/station/engineering/supermatter/room) +"Ev" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Engineering Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/plating, +/area/station/maintenance/department/engineering/central) +"Ew" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"EY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/supermatter) +"Fc" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Burn to Hot Loop"; + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Fr" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/pink/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/violet/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"FF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"FJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/button/door/directional/east{ + id = "eng_burn"; + name = "Burn Chamber Radiation Shutters Control"; + req_access = list("engineering"); + pixel_y = 6 + }, +/obj/machinery/button/door/directional/east{ + id = "burn_vent"; + name = "Burn Chamber Vent Control"; + req_access = list("engineering"); + pixel_y = -6 + }, +/obj/machinery/button/ignition{ + id = "teg_burn_igniter"; + pixel_x = 36; + pixel_y = -6; + name = "Burn Chamber Ignition Switch" + }, +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"FY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/pink/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"FZ" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "SM Loop" + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Ga" = ( +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Gd" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold/orange/visible{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Gg" = ( +/obj/effect/turf_decal/delivery/red, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/supermatter) +"Gj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"Gk" = ( +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/main) +"Gm" = ( +/obj/effect/turf_decal/delivery/red, +/obj/structure/cable/multilayer/connected, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/supermatter) +"Gn" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"Go" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/pink/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Gv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/incident_display/delam/directional/south, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"GE" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/cable/layer1, +/turf/open/floor/iron, +/area/station/engineering/main) +"Hi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Hj" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"HG" = ( +/obj/effect/turf_decal/delivery/red, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/supermatter/room) +"HK" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"HL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"HM" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/station/engineering/main) +"HY" = ( +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter) +"Ic" = ( +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"Ij" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Cold Loop to Space"; + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"In" = ( +/obj/effect/turf_decal/delivery/red, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/supermatter/room) +"Io" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/purple/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Iu" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"IB" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "eng_burn"; + name = "Burn Chamber Radiation Shutters" + }, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"ID" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 5 + }, +/turf/open/space/basic, +/area/space/nearstation) +"IW" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/orange/visible, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Jc" = ( +/turf/open/floor/plating, +/area/station/engineering/main) +"Jn" = ( +/obj/machinery/atmospherics/components/binary/valve/digital/on{ + dir = 4; + name = "Oxygen Release" + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Jp" = ( +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/effect/turf_decal/delivery/red, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/supermatter) +"Jq" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron, +/area/station/engineering/main) +"Jr" = ( +/obj/structure/table, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"Ju" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Mix to TEG Hot Loop" + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Kb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/pink/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Kg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Kp" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ + dir = 9 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"KB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 9 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"KF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Gas Director" + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"KS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Ln" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/delam_scram/directional/west, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"LC" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Mk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Mt" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/sign/warning/directional/south, +/obj/machinery/button/door/directional/east{ + id = "emitter_room"; + name = "Emitter Room Shutters Control"; + req_access = list("engineering") + }, +/obj/structure/closet/radiation, +/turf/open/floor/iron, +/area/station/engineering/main) +"Mw" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"ML" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on{ + dir = 1 + }, +/turf/open/floor/engine/vacuum, +/area/station/engineering/supermatter/room) +"MM" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4, +/turf/open/space/basic, +/area/space/nearstation) +"MO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Ni" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Np" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/closet/radiation, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/main) +"NA" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space/basic, +/area/space/nearstation) +"NQ" = ( +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating, +/area/station/maintenance/department/engineering/central) +"NW" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "emitter_room"; + name = "Emitter Room Shutters" + }, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/main) +"NZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/airalarm/directional/east, +/obj/effect/mapping_helpers/airalarm/unlocked, +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 6 + }, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Oc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/power/emitter/welded{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/engineering/main) +"Og" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 10 + }, +/turf/open/space/basic, +/area/space/nearstation) +"Ol" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Engine Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/engineering/main) +"OL" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"ON" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"Pa" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter) +"Pb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"PC" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"PM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/poddoor{ + id = "burn_vent"; + name = "Burn Chamber Vent" + }, +/turf/open/floor/engine/vacuum, +/area/station/engineering/supermatter/room) +"Qy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/structure/closet/radiation, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"QM" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 9 + }, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "eng_burn"; + name = "Burn Chamber Radiation Shutters" + }, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"Rn" = ( +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"Rw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Rx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/pink/visible, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter) +"Rz" = ( +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"RD" = ( +/turf/closed/wall/r_wall, +/area/station/maintenance/department/engineering/central) +"RM" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/light/directional/south, +/obj/machinery/firealarm/directional/south{ + pixel_x = -5 + }, +/turf/open/floor/iron, +/area/station/engineering/main) +"RP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/pink/visible{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"RR" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 9 + }, +/turf/open/space/basic, +/area/space/nearstation) +"Sb" = ( +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter) +"Sr" = ( +/obj/structure/foamedmetal, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"SE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable/multilayer/connected, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"SX" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 9 + }, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Td" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/layer_manifold/dark/visible, +/turf/open/space/basic, +/area/space/nearstation) +"Tm" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/pink/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Tv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump/layer2{ + name = "Ports to Cold Loop" + }, +/obj/machinery/atmospherics/components/binary/pump/layer4{ + name = "Ports to Cold Loop" + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Tw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Hot Loop to Waste" + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"TI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"TM" = ( +/obj/machinery/atmospherics/components/binary/circulator/cold{ + dir = 8 + }, +/turf/open/floor/circuit/green, +/area/station/engineering/supermatter/room) +"TQ" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/main) +"TS" = ( +/obj/machinery/atmospherics/components/unary/heat_exchanger{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"TX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"Ud" = ( +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter) +"Uf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/orange/visible{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Uo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Ur" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/heat_exchanger{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Us" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/binary/valve/digital/on{ + name = "Waste Release"; + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Ux" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/engineering/main) +"UC" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4, +/turf/open/space/basic, +/area/space/nearstation) +"US" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"UW" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Engineering - Engine Room, Northeast"; + name = "engineering camera" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"UX" = ( +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Vf" = ( +/obj/effect/turf_decal/stripes/end, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/structure/cable, +/obj/machinery/power/energy_accumulator/tesla_coil/anchored, +/turf/open/floor/plating, +/area/station/engineering/supermatter) +"Vg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/main) +"Vr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Vu" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/space_heater, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Vv" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/engineering/main) +"Vy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ + dir = 1 + }, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"VG" = ( +/obj/structure/chair, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"VL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Space to Cold Loop"; + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"VM" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"VQ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 10 + }, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Wc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Wn" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 4 + }, +/turf/open/space/basic, +/area/space/nearstation) +"Wr" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/sign/warning/directional/south, +/obj/machinery/button/door/directional/west{ + id = "emitter_room"; + name = "Emitter Room Shutters Control"; + req_access = list("engineering") + }, +/obj/structure/closet/radiation, +/turf/open/floor/iron, +/area/station/engineering/main) +"WB" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"WR" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, +/obj/machinery/meter, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"WT" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Xb" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 4 + }, +/turf/open/space/basic, +/area/space/nearstation) +"Xf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"XF" = ( +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"XG" = ( +/obj/machinery/atmospherics/components/binary/valve/digital{ + name = "SM Loop Cooling"; + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"XM" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/closet/radiation, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/main) +"Yh" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer4{ + dir = 10 + }, +/turf/open/space/basic, +/area/space/nearstation) +"Yo" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/closet/radiation, +/turf/open/floor/iron, +/area/station/engineering/main) +"Yq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/main) +"Yr" = ( +/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Yt" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Yy" = ( +/obj/effect/turf_decal/delivery/red, +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/supermatter/room) +"YE" = ( +/obj/structure/reflector/box/anchored, +/turf/open/floor/plating, +/area/station/engineering/main) +"YR" = ( +/obj/effect/turf_decal/delivery/red, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/supermatter/room) +"YV" = ( +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"YW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer4, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Zk" = ( +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/main) +"Zl" = ( +/obj/machinery/atmospherics/pipe/bridge_pipe/violet/visible, +/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"Zo" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/directional/south, +/obj/machinery/button/door/directional/south{ + id = "sm_vent"; + name = "Supermatter Vent Control"; + req_access = list("engineering"); + pixel_x = 6 + }, +/obj/machinery/button/door/directional/south{ + id = "eng_sm"; + name = "Radiation Shutters Control"; + req_access = list("engineering"); + pixel_x = -6 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"ZK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/orange/visible{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"ZV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/simple/pink/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) +"ZX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Mix to SM Loop"; + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) + +(1,1,1) = {" +TQ +Bc +Bc +Bc +TQ +TQ +tU +tU +vj +tU +tU +tU +tU +tU +tU +tU +vj +tU +tU +tU +tU +tU +tU +ON +tU +tU +"} +(2,1,1) = {" +mF +Gj +Yq +Hj +DP +TQ +tU +tU +vj +tU +tU +tU +tU +tU +tU +tU +vj +tU +tU +tU +tU +tU +tU +ON +tU +tU +"} +(3,1,1) = {" +TQ +Ic +yi +Bc +jO +TQ +vj +vj +xw +wG +NA +wG +NA +wG +NA +wG +NA +wG +yR +Td +UC +UC +UC +ID +tU +tU +"} +(4,1,1) = {" +TQ +Jr +yi +TX +in +kc +tU +vj +yg +wG +NA +wG +NA +wG +NA +wG +NA +wG +oV +vj +tU +tU +tU +Wn +tU +tU +"} +(5,1,1) = {" +TQ +qm +yi +Rn +Bx +kc +vj +vj +ON +vj +ON +vj +ON +vj +ON +vj +ON +vj +gu +vj +vj +vj +vj +Wn +tU +tU +"} +(6,1,1) = {" +TQ +hU +BA +uI +bC +kc +tU +vj +xw +wG +NA +wG +NA +wG +NA +wG +NA +wG +xQ +vj +tU +tU +tU +Wn +tU +tU +"} +(7,1,1) = {" +TQ +VG +BA +Bc +jO +TQ +vj +vj +yg +wG +NA +wG +NA +wG +NA +wG +NA +wG +yR +Td +Am +Am +Am +Og +tx +ON +"} +(8,1,1) = {" +TQ +VG +BA +Hj +su +TQ +tU +tU +tU +tU +tU +tU +tU +tU +tU +tU +tU +tU +tU +tU +tU +Mw +tU +vj +Xb +tU +"} +(9,1,1) = {" +TQ +VG +BA +Bc +TQ +TQ +TQ +oZ +oZ +oZ +oZ +sr +sr +oZ +sr +sr +oZ +sr +sr +oZ +oZ +bX +oZ +oZ +Xb +tU +"} +(10,1,1) = {" +TQ +kc +kV +kc +TQ +lm +TQ +mO +sn +Dq +xj +tw +tw +tK +fw +Rw +BJ +Io +YW +rf +ry +Us +Vr +oZ +Xb +tU +"} +(11,1,1) = {" +ce +Ux +GE +RM +TQ +Zk +TQ +TI +xu +UX +UX +XG +XG +zj +eL +sA +hQ +tV +eq +eq +eq +SX +kn +sr +Xb +vj +"} +(12,1,1) = {" +As +As +GE +wQ +Ca +dL +Ol +tb +XF +aU +aU +iV +Kb +Tm +zd +Go +Fr +Tm +YV +YV +YV +eT +kn +sr +Xb +tU +"} +(13,1,1) = {" +As +As +AH +Vv +TQ +lb +TQ +oB +UX +wR +aU +mw +Dj +Zl +ix +sA +hQ +LC +gW +MO +MO +PC +Xf +oZ +Xb +tU +"} +(14,1,1) = {" +AA +rJ +AH +Mt +TQ +XM +TQ +Vu +US +UX +aU +mw +qa +dp +vD +Kp +wS +lq +ya +fy +fy +sW +fy +fy +Xb +vj +"} +(15,1,1) = {" +TQ +TQ +gQ +TQ +TQ +TQ +TQ +TQ +db +KS +aU +mw +Bq +vn +Iu +Kg +Uo +KB +AE +fy +ll +Bs +li +fy +Xb +tU +"} +(16,1,1) = {" +TQ +ru +Ee +HL +uW +hD +uz +ev +lJ +UX +aU +vp +LC +UX +Zo +fy +hT +hT +hT +fy +HY +mB +xR +fy +Xb +tU +"} +(17,1,1) = {" +NW +ja +lE +Jc +Jc +Jc +HM +ev +Hi +MO +Pb +FF +Ni +sG +DV +fy +EY +iR +it +Vf +Ln +xB +Gn +fy +Xb +vj +"} +(18,1,1) = {" +TQ +zf +lE +YE +Jc +YE +HM +ev +vR +YR +yx +Yy +vh +HG +In +uh +Gg +Gg +Gm +Jp +kv +Aj +zR +DL +Xb +tU +"} +(19,1,1) = {" +NW +ja +lE +Jc +Jc +Jc +HM +ev +RP +ZV +KF +FY +Tw +BE +Gv +fy +EY +iR +it +eZ +Ae +Ef +Pa +fy +Xb +vj +"} +(20,1,1) = {" +TQ +mL +jz +Oc +bQ +jY +Vg +ev +ZX +UX +aU +FZ +ZK +pN +uU +fy +hT +hT +hT +fy +Sb +Rx +Ud +fy +Xb +tU +"} +(21,1,1) = {" +TQ +TQ +sg +TQ +TQ +TQ +TQ +TQ +oO +wR +aU +mg +lQ +ci +nT +Rz +Rz +Rz +Rz +Ew +HK +sm +io +oZ +Xb +tU +"} +(22,1,1) = {" +Yo +eG +jc +Wr +TQ +Np +TQ +Wc +IW +UX +gK +TS +VQ +kg +xs +UX +UX +UX +UX +Jn +Cw +IB +AB +PM +Xb +vj +"} +(23,1,1) = {" +As +As +jc +Vv +TQ +lb +TQ +UW +Yr +KS +SE +Ur +VM +Eu +fX +UX +UX +UX +UX +gf +OL +eU +ML +oZ +Xb +tU +"} +(24,1,1) = {" +As +As +rg +mR +bg +Gk +gm +xD +DQ +UX +UX +Vy +Yt +TM +Mk +WR +WB +WB +rB +UX +kn +ot +nr +oZ +Xb +tU +"} +(25,1,1) = {" +Jq +Ux +rg +sC +TQ +ky +TQ +TI +hG +Ga +Ju +WT +vG +mN +bi +Ga +Ga +Fc +WT +Uf +Gd +QM +AB +PM +Xb +vj +"} +(26,1,1) = {" +RD +kN +Ev +NQ +RD +dX +TQ +og +lf +NZ +Qy +VL +MO +oA +AU +iC +rj +Tv +Ij +yo +FJ +IB +io +oZ +Xb +tU +"} +(27,1,1) = {" +tU +tU +tU +tU +RD +RD +RD +oZ +oZ +oZ +oZ +of +sr +oZ +sr +sr +oZ +sr +of +oZ +oZ +oZ +oZ +oZ +Xb +tU +"} +(28,1,1) = {" +tU +tU +tU +tU +tU +cV +RD +Sr +Sr +Sr +jQ +Yh +UC +UC +UC +UC +Eo +vj +lS +eI +MM +MM +MM +MM +RR +tU +"} +(29,1,1) = {" +tU +tU +tU +tU +tU +tU +tU +tU +tU +tU +tU +tU +tU +tU +tU +vj +Yh +UC +UC +wC +vj +tU +tU +tU +tU +tU +"} diff --git a/_maps/~monkestation/RandomEngines/BoxStation/supermatter.dmm b/_maps/~monkestation/RandomEngines/BoxStation/supermatter.dmm index aca151de9698..828e93827900 100644 --- a/_maps/~monkestation/RandomEngines/BoxStation/supermatter.dmm +++ b/_maps/~monkestation/RandomEngines/BoxStation/supermatter.dmm @@ -13,14 +13,18 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "aU" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Emitter Room" +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/machinery/door/firedoor, -/turf/open/floor/engine, +/obj/machinery/door/airlock/engineering/glass{ + name = "Emitter Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/iron/dark/textured, /area/station/engineering/supermatter/room) "aW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, @@ -82,7 +86,6 @@ }, /obj/machinery/airalarm/directional/west, /obj/effect/mapping_helpers/airalarm/engine_access, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/engine, /area/station/engineering/supermatter) "cs" = ( @@ -105,6 +108,12 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"cZ" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "dw" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -118,8 +127,6 @@ /obj/machinery/atmospherics/components/binary/pump{ name = "Gas to Chamber" }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, /turf/open/floor/engine, /area/station/engineering/supermatter) "dC" = ( @@ -152,14 +159,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/plating, -/area/station/maintenance/department/engine) -"eo" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) +/area/station/maintenance/department/engineering/central) "ez" = ( /obj/structure/reflector/box/anchored{ dir = 1 @@ -200,8 +200,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, /obj/machinery/camera/directional/south{ c_tag = "Engineering Supermatter Fore"; - network = list("ss13","engine"); - pixel_x = 23 + network = list("ss13","engine") + }, +/obj/machinery/button/delam_scram{ + pixel_y = -32 }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) @@ -253,7 +255,7 @@ /area/station/engineering/main) "hr" = ( /obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/supermatter/room) "hA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, @@ -284,6 +286,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/supermatter/room) +"iy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "iF" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -313,7 +322,7 @@ /turf/open/floor/engine, /area/station/engineering/supermatter) "jC" = ( -/obj/machinery/light/directional/south, +/obj/machinery/light/small/directional/south, /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) @@ -353,7 +362,6 @@ /turf/open/floor/plating, /area/station/engineering/main) "ld" = ( -/obj/machinery/meter, /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, /turf/open/floor/engine, @@ -368,6 +376,15 @@ /obj/structure/girder, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"lM" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "mb" = ( /obj/structure/cable, /turf/open/floor/engine, @@ -404,17 +421,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"mO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/structure/cable/multilayer/connected, -/turf/open/floor/plating, -/area/station/engineering/supermatter) "ny" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/junction{ dir = 8 @@ -440,15 +446,21 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) +"oi" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating, +/area/station/engineering/main) "ou" = ( -/obj/machinery/light/directional/south, +/obj/machinery/light/small/directional/south, /obj/structure/cable, +/obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/engineering/main) "oO" = ( /turf/open/floor/iron/dark, /area/station/engineering/main) "oS" = ( +/obj/effect/turf_decal/stripes/red/box, /obj/machinery/power/supermatter_crystal/engine, /turf/open/floor/engine, /area/station/engineering/supermatter) @@ -461,7 +473,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/engineering/glass/critical{ heat_proof = 1; name = "Supermatter Chamber" @@ -482,29 +493,26 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "pJ" = ( -/obj/structure/table, -/obj/item/analyzer, -/obj/item/pipe_dispenser, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) +/obj/effect/turf_decal/stripes/red/line{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/delam_scram/directional/east, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "pR" = ( /obj/structure/reflector/double/anchored{ dir = 6 }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"pU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "pW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, -/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/delivery/red, /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/supermatter/room) "qh" = ( /obj/machinery/door/airlock/engineering/glass{ @@ -519,7 +527,6 @@ /turf/open/floor/iron/dark/textured, /area/station/engineering/supermatter/room) "qm" = ( -/obj/machinery/light/directional/south, /turf/open/floor/plating, /area/station/engineering/supermatter/room) "qt" = ( @@ -532,9 +539,9 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "rr" = ( -/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/delivery/red, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/supermatter/room) "rs" = ( /obj/machinery/atmospherics/components/binary/pump{ @@ -551,7 +558,6 @@ c_tag = "Engineering Emitter Room Starboard"; network = list("ss13","engine") }, -/obj/machinery/light/small/directional/east, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "rF" = ( @@ -574,8 +580,7 @@ dir = 1; name = "External Gas to Loop" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/supermatter/room) "tU" = ( /obj/effect/turf_decal/stripes/line{ @@ -676,6 +681,9 @@ /turf/open/space/basic, /area/space/nearstation) "yF" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, @@ -688,8 +696,7 @@ "ze" = ( /obj/machinery/camera/directional/north{ c_tag = "Engineering Supermatter Chamber"; - network = list("engine"); - dir = 9 + network = list("engine") }, /turf/open/floor/engine, /area/station/engineering/supermatter) @@ -699,7 +706,7 @@ dir = 1 }, /obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/supermatter/room) "zE" = ( /obj/structure/cable, @@ -709,9 +716,10 @@ /area/station/engineering/supermatter/room) "zN" = ( /obj/effect/turf_decal/stripes/line{ - dir = 4 + dir = 1 }, -/obj/machinery/light/small/directional/east, +/obj/machinery/light/small/directional/north, +/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "zV" = ( @@ -752,21 +760,25 @@ }, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "AT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "AV" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Emitter Room" +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/machinery/door/firedoor, -/turf/open/floor/engine, +/obj/machinery/door/airlock/engineering/glass{ + name = "Emitter Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/iron/dark/textured, /area/station/engineering/supermatter/room) "Br" = ( /obj/effect/turf_decal/stripes/line{ @@ -787,16 +799,23 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "Bw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/cable/multilayer/connected, /obj/machinery/door/poddoor/shutters/radiation/preopen{ id = "engsm"; name = "Radiation Chamber Shutters" }, -/obj/structure/cable/multilayer/connected, /turf/open/floor/plating, /area/station/engineering/supermatter) +"BG" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "BJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -828,7 +847,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/light/small/directional/west, /obj/machinery/firealarm/directional/west, /turf/open/floor/engine, /area/station/engineering/supermatter/room) @@ -915,8 +933,8 @@ /area/space/nearstation) "Fu" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/light/directional/south, -/obj/structure/sign/warning/radiation/directional/south, +/obj/machinery/light/small/directional/south, +/obj/structure/sign/delam_procedure/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) @@ -939,7 +957,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/light/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/machinery/incident_display/delam/directional/north, /turf/open/floor/engine, @@ -952,6 +969,9 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "GG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -959,7 +979,6 @@ id = "engsm"; name = "Radiation Chamber Shutters" }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/engineering/supermatter) "GP" = ( @@ -974,17 +993,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"Hs" = ( +/obj/machinery/light/directional/east, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "HF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/engineering/supermatter) +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/engineering/main) "HQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -993,6 +1012,7 @@ c_tag = "Engineering Supermatter Starboard"; network = list("ss13","engine") }, +/obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "HS" = ( @@ -1009,17 +1029,9 @@ /turf/open/floor/plating, /area/station/engineering/supermatter/room) "Ik" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, -/area/station/engineering/supermatter) +/obj/structure/chair, +/turf/open/floor/iron/dark, +/area/station/engineering/main) "Iz" = ( /obj/machinery/door/airlock/engineering/glass{ name = "Engine SMES Room" @@ -1037,7 +1049,7 @@ }, /obj/structure/cable/layer1, /turf/open/floor/iron/dark/textured, -/area/station/engineering/supermatter/room) +/area/station/engineering/main) "IA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, /obj/structure/cable, @@ -1045,16 +1057,16 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "IC" = ( -/obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "IK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/floor/has_bulb, /turf/open/floor/engine, /area/station/engineering/supermatter) "IV" = ( +/obj/structure/extinguisher_cabinet/directional/west, /obj/structure/table, /turf/open/floor/engine, /area/station/engineering/supermatter/room) @@ -1076,6 +1088,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"Kk" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "Kl" = ( /obj/structure/grille, /turf/open/floor/plating/airless, @@ -1100,6 +1121,7 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "Lj" = ( +/obj/structure/extinguisher_cabinet/directional/east, /obj/structure/table, /obj/item/stack/sheet/iron/fifty{ pixel_y = 6 @@ -1119,6 +1141,15 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"Mj" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "Mu" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -1141,9 +1172,13 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/engineering/main) +"MM" = ( +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "MT" = ( /turf/closed/wall/r_wall, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "MV" = ( /turf/open/floor/engine, /area/station/engineering/supermatter/room) @@ -1179,7 +1214,7 @@ "Oj" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "Ok" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/closed/wall/r_wall, @@ -1198,20 +1233,27 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/light_switch/directional/north{ + pixel_x = -5 + }, +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 + }, /obj/structure/table/reinforced, -/obj/machinery/light_switch/directional/north, +/obj/item/clothing/gloves/color/black, /obj/item/tank/internals/emergency_oxygen/engi{ pixel_x = 5 }, -/obj/item/clothing/gloves/color/black, /obj/item/clothing/glasses/meson/engine, +/obj/item/analyzer, +/obj/item/pipe_dispenser, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "OR" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/firealarm/directional/north, +/obj/machinery/incident_display/delam/directional/north, /obj/structure/table/reinforced, /obj/item/clothing/suit/utility/radiation, /obj/item/clothing/head/utility/radiation, @@ -1265,6 +1307,7 @@ /area/space/nearstation) "QB" = ( /obj/machinery/airalarm/directional/west, +/obj/machinery/light/directional/west, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "QL" = ( @@ -1311,6 +1354,7 @@ "Sf" = ( /obj/effect/turf_decal/stripes/corner, /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/machinery/meter, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "Sh" = ( @@ -1354,7 +1398,6 @@ c_tag = "Engineering Emitter Room Port"; network = list("ss13","engine") }, -/obj/machinery/light/small/directional/west, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "TH" = ( @@ -1380,8 +1423,8 @@ /area/station/engineering/supermatter/room) "TP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/delivery/red, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/supermatter/room) "Un" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1400,6 +1443,10 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /turf/open/space/basic, /area/space/nearstation) +"UU" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) "Vb" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -1408,10 +1455,14 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "Ve" = ( -/turf/open/floor/plating, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) "Vi" = ( -/obj/machinery/light/directional/north, +/obj/machinery/light/small/directional/north, /obj/machinery/firealarm/directional/north, /turf/open/floor/engine, /area/station/engineering/supermatter/room) @@ -1451,7 +1502,7 @@ }, /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "Xo" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -1466,14 +1517,17 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "XP" = ( -/obj/machinery/meter, /obj/effect/turf_decal/stripes/line, -/obj/machinery/light/directional/south, +/obj/machinery/light/small/directional/south, +/obj/structure/sign/warning/radiation/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/item/radio/intercom/directional/south, +/obj/machinery/meter, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "XU" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 6 + }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, @@ -1503,7 +1557,7 @@ /area/station/engineering/supermatter) "YW" = ( /obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/supermatter/room) "YZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, @@ -1530,7 +1584,7 @@ GP oO oO oO -oO +GP GP xP hE @@ -1558,7 +1612,7 @@ Mu bM MB gO -ou +HF GP Kd TK @@ -1695,7 +1749,7 @@ xP "} (7,1,1) = {" GP -oO +Ik uh oO fp @@ -1723,7 +1777,7 @@ oW "} (8,1,1) = {" GP -oO +Ik uh gO ou @@ -1751,10 +1805,10 @@ xP "} (9,1,1) = {" GP -oO +Ik uh oO -oO +FD GP xP TK @@ -1778,12 +1832,12 @@ Kl xP "} (10,1,1) = {" -BL -cs +GP +oi Iz -cs -BL -BL +oi +GP +GP BL ny BL @@ -1811,7 +1865,7 @@ lr BJ Lm CF -Lm +iy pC bz gB @@ -1835,7 +1889,7 @@ Kd "} (12,1,1) = {" BL -Su +zN oc wQ wQ @@ -1908,7 +1962,7 @@ AV NA NA uQ -Ve +qm qm BL Kd @@ -1929,7 +1983,7 @@ ze EI YV HS -jQ +FP Zg Gq cs @@ -1957,7 +2011,7 @@ ak CM ak HS -FP +QX vt Ya BL @@ -1965,7 +2019,7 @@ Vi MV MV MV -MV +BG BL xP Kl @@ -1982,8 +2036,8 @@ fc co kz XU -XU -XU +Mj +Kk Tk fd BW @@ -2009,9 +2063,9 @@ Pd pv IK PZ -YV +cZ oS -YV +MM FL rr pW @@ -2037,9 +2091,9 @@ dP DX dy kz +pJ yF -yF -yF +lM Kw CW iH @@ -2077,7 +2131,7 @@ Vi MV MV MV -MV +BG BL xP Kl @@ -2121,9 +2175,9 @@ Dp tw zA HS -HF -mO -Ik +GG +Bw +GG HS jQ fI @@ -2132,7 +2186,7 @@ aU ik ik Vr -Ve +qm qm BL Kd @@ -2171,7 +2225,7 @@ xP "} (24,1,1) = {" BL -Su +zN uV rs JK @@ -2187,7 +2241,7 @@ MZ BL Lj rz -MV +Hs wE iZ BL @@ -2200,9 +2254,9 @@ xP (25,1,1) = {" BL vH -pU +gu QL -zN +gu HQ Vb TH @@ -2231,14 +2285,14 @@ Oj Au WL MT -MT +BL BL bF xv xv aW xv -pJ +xv mg mn mn @@ -2258,8 +2312,8 @@ xP xP xP xP -xP MT +UU xv aW aW @@ -2286,12 +2340,12 @@ xP xP xP xP -xP eb xv +xv OZ -eo -oh +OZ +Ve oh gF mI @@ -2314,17 +2368,17 @@ xP xP xP xP -xP MT -BL -BL -BL -BL -BL -BL -BL -BL -Kd +MT +MT +MT +MT +MT +MT +MT +MT +MT +MT Kd Kd Kd diff --git a/_maps/~monkestation/RandomEngines/BoxStation/teg.dmm b/_maps/~monkestation/RandomEngines/BoxStation/teg.dmm index b841c016e0f1..29a94d0a1a0c 100644 --- a/_maps/~monkestation/RandomEngines/BoxStation/teg.dmm +++ b/_maps/~monkestation/RandomEngines/BoxStation/teg.dmm @@ -10,7 +10,7 @@ /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "ax" = ( /obj/effect/spawner/structure/window/reinforced/plasma, @@ -25,15 +25,17 @@ /area/space/nearstation) "aD" = ( /obj/machinery/atmospherics/components/binary/pump{ + name = "Hot"; dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "bc" = ( +/obj/machinery/light/small/directional/east, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "bk" = ( /obj/structure/lattice, @@ -52,7 +54,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "bU" = ( /obj/effect/spawner/structure/window/reinforced/plasma, @@ -91,7 +93,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/cable/layer1, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "dy" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -110,20 +112,17 @@ /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "dX" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/plasma, -/turf/open/floor/iron, -/area/station/engineering/atmospherics_engine) -"eE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable/layer1, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor/has_bulb, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) +"eH" = ( +/obj/structure/chair, +/turf/open/floor/iron/dark, +/area/station/engineering/main) "eK" = ( /obj/structure/cable, /obj/machinery/power/terminal{ @@ -136,7 +135,7 @@ dir = 6 }, /obj/machinery/meter, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "ff" = ( /obj/structure/lattice, @@ -144,9 +143,9 @@ /turf/open/space/basic, /area/space/nearstation) "fq" = ( -/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "fr" = ( /obj/machinery/light/directional/east, @@ -154,12 +153,12 @@ dir = 8 }, /obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "ft" = ( /obj/structure/sign/warning/secure_area/directional/east, /obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "fS" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -186,7 +185,7 @@ /obj/machinery/atmospherics/components/unary/thermomachine/heater{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "gD" = ( /obj/effect/turf_decal/bot, @@ -194,14 +193,14 @@ /obj/machinery/light/directional/north, /obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/portable_atmospherics/canister/plasma, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "gG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /obj/machinery/meter, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "gT" = ( /obj/structure/lattice/catwalk, @@ -209,14 +208,15 @@ /turf/open/space/basic, /area/space/nearstation) "gZ" = ( -/obj/machinery/light/directional/south, +/obj/machinery/light/small/directional/south, /obj/structure/cable, +/obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/engineering/main) "hg" = ( -/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/bot, /obj/machinery/atmospherics/components/unary/portables_connector/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "hs" = ( /obj/structure/grille, @@ -228,7 +228,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "hM" = ( /obj/effect/spawner/structure/window/reinforced/plasma, @@ -239,7 +239,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "ig" = ( /obj/machinery/light/directional/north, @@ -247,7 +247,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "iy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -259,18 +259,13 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/atmospherics_engine) -"iP" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/space_heater, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "ja" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "jg" = ( /obj/effect/turf_decal/bot, @@ -283,13 +278,13 @@ }, /obj/machinery/portable_atmospherics/canister/plasma, /obj/structure/cable/layer1, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "km" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, /obj/effect/mapping_helpers/apc/cell_10k, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "ku" = ( /obj/machinery/sparker/directional/east{ @@ -302,17 +297,17 @@ /area/station/engineering/atmospherics_engine) "kV" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Burn to Hot" + name = "Burn to Hot"; + dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "lb" = ( -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "lm" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "lp" = ( /obj/effect/turf_decal/bot, @@ -322,17 +317,17 @@ /obj/machinery/portable_atmospherics/canister/plasma, /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/cable/layer1, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "lv" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "ly" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "lA" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -350,11 +345,11 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "md" = ( /turf/closed/wall/r_wall, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "mh" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 @@ -367,12 +362,12 @@ "mm" = ( /obj/machinery/camera/autoname/directional/east, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "mx" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "mG" = ( /obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ @@ -382,9 +377,10 @@ /area/station/engineering/atmospherics_engine) "mH" = ( /obj/machinery/atmospherics/components/binary/pump{ + name = "Cold"; dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "mJ" = ( /obj/effect/turf_decal/bot, @@ -392,7 +388,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "mW" = ( /obj/structure/lattice/catwalk, @@ -402,12 +398,12 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 5 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "nh" = ( /obj/item/radio/intercom/directional/south, /obj/machinery/light/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "nw" = ( /obj/structure/cable, @@ -420,13 +416,13 @@ /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "os" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 9 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "ot" = ( /obj/effect/turf_decal/stripes/line{ @@ -434,7 +430,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "oA" = ( /obj/effect/turf_decal/stripes/line{ @@ -442,14 +438,14 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "oK" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "pg" = ( /obj/effect/turf_decal/bot, @@ -458,35 +454,35 @@ /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "pt" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /obj/machinery/meter, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "qj" = ( /obj/machinery/atmospherics/pipe/smart/manifold/dark/visible{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "qJ" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 9 }, /obj/machinery/meter, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "qO" = ( /obj/structure/closet/firecloset, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "re" = ( /obj/machinery/light/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "rh" = ( /obj/structure/lattice, @@ -498,7 +494,7 @@ "ry" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "rA" = ( /obj/effect/turf_decal/delivery, @@ -506,7 +502,7 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "rK" = ( /obj/structure/cable, @@ -524,7 +520,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "sJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -532,12 +528,11 @@ /obj/item/clothing/gloves/color/black, /obj/item/clothing/glasses/meson/engine, /obj/item/tank/internals/emergency_oxygen/engi, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "sX" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/iron, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "tp" = ( /obj/effect/turf_decal/stripes/corner{ @@ -545,10 +540,10 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Mix to Engine" + name = "Mix to Engine"; + dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "tw" = ( /obj/structure/table/reinforced, @@ -557,7 +552,7 @@ pixel_x = 7; pixel_y = 3 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "tI" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ @@ -565,7 +560,7 @@ }, /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "tP" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -582,7 +577,7 @@ name = "Engine SMES Room" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/dark/textured, /area/station/engineering/main) "tU" = ( /obj/structure/cable, @@ -602,18 +597,18 @@ }, /obj/item/multitool, /obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "up" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "uv" = ( /obj/machinery/camera/autoname/directional/east, /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "ux" = ( /obj/machinery/light/directional/south, @@ -623,7 +618,7 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 9 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "vr" = ( /obj/effect/turf_decal/bot, @@ -634,19 +629,19 @@ req_access = list("engineering") }, /obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "vs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable/layer1, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "vD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable/multilayer/connected, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "vF" = ( /turf/closed/wall/r_wall, @@ -655,66 +650,74 @@ /obj/structure/cable/layer1, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "vW" = ( +/obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "vX" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "wb" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "wi" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/structure/closet/emcloset, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "wu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/cable/layer1, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "wx" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/pump, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, +/area/station/engineering/atmospherics_engine) +"wD" = ( +/obj/machinery/atmospherics/components/binary/valve/digital{ + name = "Space Loop Bypass"; + dir = 4 + }, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "wK" = ( /obj/effect/turf_decal/bot, /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/sign/poster/official/safety_eye_protection/directional/north, /obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "wL" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/directional/north, /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "wP" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 4 }, /obj/machinery/meter, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "wU" = ( /turf/open/floor/engine/vacuum, @@ -723,8 +726,15 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 10 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) +"xS" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/cable, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark, +/area/station/engineering/main) "yc" = ( /obj/structure/table, /obj/machinery/camera/directional/north{ @@ -737,16 +747,16 @@ /obj/effect/turf_decal/bot, /obj/machinery/camera/autoname/directional/north, /obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "yO" = ( /obj/machinery/camera/autoname/directional/west, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "yS" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "zy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -758,7 +768,7 @@ "zB" = ( /obj/structure/rack, /obj/item/pipe_dispenser, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "zR" = ( /obj/machinery/sparker/directional/west{ @@ -774,7 +784,7 @@ dir = 4 }, /obj/machinery/meter, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Aa" = ( /obj/machinery/light/directional/north, @@ -782,7 +792,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Ak" = ( /obj/effect/turf_decal/stripes/line{ @@ -792,7 +802,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/cable/layer1, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "AM" = ( /obj/effect/turf_decal/delivery, @@ -800,7 +810,7 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "AP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -811,16 +821,16 @@ "Bf" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "BG" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "CB" = ( /obj/effect/turf_decal/stripes/corner, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "CH" = ( /obj/effect/turf_decal/bot, @@ -828,37 +838,32 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/portable_atmospherics/canister/oxygen, /obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "CY" = ( /obj/machinery/light/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/light_switch/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Df" = ( /obj/effect/turf_decal/bot, /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/sign/poster/official/safety_eye_protection/directional/north, /obj/machinery/portable_atmospherics/canister/plasma, -/turf/open/floor/iron, -/area/station/engineering/atmospherics_engine) -"Dj" = ( -/obj/effect/turf_decal/bot, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "Dk" = ( /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Dm" = ( /obj/machinery/light/directional/east, /obj/structure/extinguisher_cabinet/directional/east, /obj/item/bot_assembly/firebot, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Dq" = ( /obj/machinery/door/poddoor{ @@ -876,7 +881,7 @@ /area/space/nearstation) "DS" = ( /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "EF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -885,7 +890,7 @@ /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "EV" = ( /obj/structure/lattice, @@ -898,11 +903,11 @@ /obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ dir = 9 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "FS" = ( /obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Gh" = ( /obj/effect/turf_decal/bot, @@ -913,7 +918,7 @@ /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/cable/layer1, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "Gk" = ( /obj/structure/table/reinforced, @@ -921,33 +926,33 @@ pixel_y = 5 }, /obj/item/storage/toolbox/mechanical, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Go" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 4 }, /obj/machinery/meter, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Gr" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "GJ" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "GY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /obj/machinery/meter, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Hk" = ( /obj/effect/turf_decal/stripes/line, @@ -968,45 +973,51 @@ /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "HO" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "Hot to Burn" }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "HY" = ( -/obj/structure/sign/warning/secure_area, -/turf/closed/wall/r_wall, -/area/station/maintenance/department/engine) +/turf/open/floor/plating, +/area/station/maintenance/department/engineering/central) "Im" = ( /obj/structure/sign/warning/secure_area, /turf/closed/wall/r_wall, /area/station/engineering/atmospherics_engine) +"IC" = ( +/obj/machinery/atmospherics/components/binary/pump{ + name = "Hot"; + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmospherics_engine) "IJ" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; name = "Burn Byproducts" }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "IL" = ( /obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Jj" = ( /obj/machinery/camera/autoname/directional/west, /obj/machinery/atmospherics/components/unary/thermomachine/heater{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Jo" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "JE" = ( /obj/effect/spawner/structure/window/reinforced/plasma, @@ -1016,14 +1027,16 @@ /turf/open/floor/plating, /area/station/engineering/atmospherics_engine) "Kd" = ( -/obj/machinery/atmospherics/components/binary/pump, -/turf/open/floor/iron, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Cold" + }, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Kk" = ( /obj/machinery/atmospherics/pipe/smart/manifold/orange/visible{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "KF" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ @@ -1044,21 +1057,21 @@ /obj/item/clothing/gloves/color/black, /obj/item/clothing/glasses/meson/engine, /obj/item/tank/internals/emergency_oxygen/engi, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Lr" = ( /obj/structure/rack, /obj/item/crowbar/large, /obj/item/flashlight, /obj/item/pipe_dispenser, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "LC" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 10 }, /obj/machinery/meter, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "LD" = ( /obj/machinery/light/directional/north, @@ -1068,7 +1081,8 @@ /area/station/engineering/main) "LQ" = ( /obj/structure/sign/warning/no_smoking/directional/east, -/turf/open/floor/iron, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "LZ" = ( /obj/structure/lattice/catwalk, @@ -1079,7 +1093,7 @@ /area/space/nearstation) "Mh" = ( /obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Mk" = ( /obj/effect/turf_decal/stripes/line{ @@ -1093,24 +1107,24 @@ }, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "Mu" = ( /obj/machinery/atmospherics/components/binary/valve/digital{ name = "Space to Cold Loop" }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "MD" = ( /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ dir = 8 }, /obj/machinery/meter, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "MH" = ( /obj/effect/turf_decal/bot, /obj/machinery/space_heater, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "MW" = ( /obj/structure/cable/layer1, @@ -1129,7 +1143,7 @@ pixel_y = -24 }, /obj/machinery/light/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "No" = ( /obj/effect/spawner/structure/window/reinforced/plasma, @@ -1139,52 +1153,56 @@ "Ot" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, -/area/station/maintenance/department/engine) +/area/station/maintenance/department/engineering/central) "OD" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "OH" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/dark/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "OO" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Pq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/status_display/evac/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Pv" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ +/obj/machinery/atmospherics/components/binary/pump{ name = "Mix to Burn" }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, +/area/station/engineering/atmospherics_engine) +"Py" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "QA" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "QE" = ( /turf/closed/wall, /area/station/engineering/atmospherics_engine) "QG" = ( /obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "QH" = ( /obj/structure/cable/multilayer/connected, @@ -1202,18 +1220,18 @@ /obj/machinery/atmospherics/components/binary/valve/digital{ name = "Cold Loop" }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Rr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/components/binary/valve/digital{ name = "Cold Loop" }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "RA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Sd" = ( /obj/effect/turf_decal/bot, @@ -1224,11 +1242,11 @@ /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/cable/layer1, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "So" = ( /obj/structure/table/reinforced, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "SB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1238,7 +1256,7 @@ /obj/item/flashlight, /obj/machinery/camera/autoname/directional/east, /obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "SM" = ( /obj/machinery/light/directional/west, @@ -1257,7 +1275,7 @@ pixel_x = 3; pixel_y = -3 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "SO" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, @@ -1276,20 +1294,20 @@ /obj/item/clothing/gloves/color/black, /obj/item/clothing/glasses/meson/engine, /obj/item/tank/internals/emergency_oxygen/engi, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "TT" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Uf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Ui" = ( /obj/effect/turf_decal/bot, @@ -1298,23 +1316,23 @@ /obj/machinery/portable_atmospherics/canister/oxygen, /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/smooth_large, /area/station/engineering/atmospherics_engine) "Up" = ( /obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Ut" = ( /obj/machinery/atmospherics/components/binary/valve/digital{ name = "Cold Loop to Space" }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Uz" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "UF" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -1327,12 +1345,12 @@ dir = 4 }, /obj/structure/closet/firecloset, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "UT" = ( /obj/structure/sign/warning/no_smoking/directional/west, /obj/structure/closet/emcloset, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Vj" = ( /obj/structure/lattice, @@ -1361,14 +1379,14 @@ name = "Engine Room" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/turf/open/floor/iron/textured, +/turf/open/floor/iron/dark/textured, /area/station/engineering/atmospherics_engine) "WP" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 6 }, /obj/machinery/meter, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Xz" = ( /obj/machinery/light/directional/south, @@ -1378,7 +1396,7 @@ /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 5 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "XD" = ( /obj/machinery/firealarm/directional/north, @@ -1390,17 +1408,17 @@ dir = 4 }, /obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Yl" = ( /obj/machinery/atmospherics/pipe/smart/manifold/orange/visible{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "YB" = ( /obj/machinery/atmospherics/pipe/smart/manifold/orange/visible, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "YM" = ( /obj/effect/spawner/structure/window/reinforced/plasma, @@ -1411,7 +1429,7 @@ /obj/structure/table/reinforced, /obj/machinery/cell_charger, /obj/item/stock_parts/cell/high/empty, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "Zc" = ( /obj/structure/lattice/catwalk, @@ -1424,7 +1442,7 @@ /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 9 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "ZT" = ( /obj/structure/cable/layer1, @@ -1439,7 +1457,7 @@ Wg cp cp cp -cp +Wg Wg ml ml @@ -1467,7 +1485,7 @@ Hk iy zy nw -gZ +xS Wg dh dh @@ -1604,7 +1622,7 @@ ml "} (7,1,1) = {" Wg -cp +eH To cp rK @@ -1632,7 +1650,7 @@ mW "} (8,1,1) = {" Wg -cp +eH To nw gZ @@ -1660,10 +1678,10 @@ ml "} (9,1,1) = {" Wg -cp +eH To cp -cp +cj Wg Bf EY @@ -1832,8 +1850,8 @@ dX lp bp dU -iP -sX +MH +QE hg YB lb @@ -1863,7 +1881,7 @@ dU lb vW lb -mH +IC CB Jo ja @@ -1918,7 +1936,7 @@ vP EF vs vs -eE +vs vD vX aa @@ -2001,7 +2019,7 @@ CH bp dU MH -Dj +QE hg DS lb @@ -2118,7 +2136,7 @@ up so lm HM -lm +Dk Ut bU Zc @@ -2146,7 +2164,7 @@ Aa wP lb lb -lb +wD lb ax dh @@ -2167,14 +2185,14 @@ ml ml ml ml -ml +HY md Gk lb xr Dk Dk -Dk +Py Mu bU KK @@ -2195,7 +2213,7 @@ ml ml ml ml -ml +HY md So IL @@ -2203,7 +2221,7 @@ LQ uv fr Uz -lb +sX Vv aC ff @@ -2223,17 +2241,17 @@ ml ml ml ml -ml -HY -Vv -Vv -Vv -Vv -Vv -Vv -Vv -Vv -ml +md +md +md +md +md +md +md +md +md +md +md ml dh ml diff --git a/_maps/~monkestation/RandomEngines/TramStation/singularity.dmm b/_maps/~monkestation/RandomEngines/TramStation/singularity.dmm index dcea9793efe6..9bc2a7980bab 100644 --- a/_maps/~monkestation/RandomEngines/TramStation/singularity.dmm +++ b/_maps/~monkestation/RandomEngines/TramStation/singularity.dmm @@ -77,7 +77,7 @@ /area/station/engineering/supermatter/room) "kr" = ( /obj/structure/lattice/catwalk, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/space/nearstation) "lq" = ( /obj/machinery/door/airlock/engineering/glass{ @@ -218,7 +218,7 @@ "wX" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/space/nearstation) "xd" = ( /obj/machinery/power/energy_accumulator/tesla_coil, @@ -368,7 +368,7 @@ /obj/structure/lattice/catwalk, /obj/structure/cable, /obj/structure/cable/layer1, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/space/nearstation) "Pp" = ( /obj/structure/cable, diff --git a/_maps/~monkestation/asteroid_maps/binary.dmm b/_maps/~monkestation/asteroid_maps/binary.dmm new file mode 100644 index 000000000000..b5bad0819c49 --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/binary.dmm @@ -0,0 +1,203 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/basic, +/area/space) +"w" = ( +/turf/closed/mineral/random/asteroid/tospace, +/area/space) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +w +w +w +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +w +w +w +w +w +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +w +w +w +w +w +w +a +a +a +a +a +a +"} +(5,1,1) = {" +a +w +w +w +w +w +w +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +w +w +w +w +w +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +w +w +w +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +w +w +a +a +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +a +w +w +w +w +"} +(10,1,1) = {" +a +a +a +a +a +a +a +a +w +w +w +w +w +"} +(11,1,1) = {" +a +a +a +a +a +a +a +a +w +w +w +w +a +"} +(12,1,1) = {" +a +a +a +a +a +a +a +a +a +a +w +w +a +"} +(13,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/~monkestation/asteroid_maps/capsule.dmm b/_maps/~monkestation/asteroid_maps/capsule.dmm new file mode 100644 index 000000000000..e5ce02617f9f --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/capsule.dmm @@ -0,0 +1,24 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/r_wall, +/area/space) +"n" = ( +/obj/effect/artifact_spawner, +/turf/open/floor/plating/reinforced, +/area/space) + +(1,1,1) = {" +a +a +a +"} +(2,1,1) = {" +a +n +a +"} +(3,1,1) = {" +a +a +a +"} diff --git a/_maps/~monkestation/asteroid_maps/cargo_artifacts.dmm b/_maps/~monkestation/asteroid_maps/cargo_artifacts.dmm new file mode 100644 index 000000000000..2a39232dccec --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/cargo_artifacts.dmm @@ -0,0 +1,95 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/r_wall, +/area/space) +"g" = ( +/obj/structure/sign/warning/directional/west, +/turf/open/space/basic, +/area/space) +"o" = ( +/obj/effect/artifact_spawner, +/turf/open/floor/iron/airless, +/area/space) +"u" = ( +/obj/machinery/door/poddoor/shutters, +/turf/open/floor/iron/airless, +/area/space) +"y" = ( +/obj/structure/sign/warning/directional/east, +/turf/open/space/basic, +/area/space) +"B" = ( +/obj/item/stock_parts/cell/artifact, +/obj/structure/table, +/turf/open/floor/iron/airless, +/area/space) +"D" = ( +/turf/open/floor/iron/airless, +/area/space) +"Z" = ( +/turf/open/space/basic, +/area/space) + +(1,1,1) = {" +Z +Z +Z +y +Z +Z +Z +"} +(2,1,1) = {" +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +o +D +o +D +o +u +"} +(4,1,1) = {" +a +B +D +D +D +D +u +"} +(5,1,1) = {" +a +o +D +o +D +o +u +"} +(6,1,1) = {" +a +a +a +a +a +a +a +"} +(7,1,1) = {" +Z +Z +Z +g +Z +Z +Z +"} diff --git a/_maps/~monkestation/asteroid_maps/cargo_crates.dmm b/_maps/~monkestation/asteroid_maps/cargo_crates.dmm new file mode 100644 index 000000000000..02dc53d9fd2f --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/cargo_crates.dmm @@ -0,0 +1,90 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/r_wall, +/area/space) +"f" = ( +/turf/open/floor/iron/airless, +/area/space) +"k" = ( +/obj/effect/spawner/random/structure/crate_abandoned, +/turf/open/floor/iron/airless, +/area/space) +"t" = ( +/turf/open/space/basic, +/area/space) +"z" = ( +/obj/effect/spawner/random/structure/crate_empty, +/turf/open/floor/iron/airless, +/area/space) +"R" = ( +/obj/effect/spawner/random/structure/crate_loot, +/turf/open/floor/iron/airless, +/area/space) +"T" = ( +/obj/machinery/door/poddoor/shutters, +/turf/open/floor/iron/airless, +/area/space) + +(1,1,1) = {" +t +t +t +t +t +t +t +"} +(2,1,1) = {" +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +R +z +R +z +R +T +"} +(4,1,1) = {" +a +f +f +f +f +f +T +"} +(5,1,1) = {" +a +R +k +R +z +R +T +"} +(6,1,1) = {" +a +a +a +a +a +a +a +"} +(7,1,1) = {" +t +t +t +t +t +t +t +"} diff --git a/_maps/~monkestation/asteroid_maps/cargo_danger.dmm b/_maps/~monkestation/asteroid_maps/cargo_danger.dmm new file mode 100644 index 000000000000..859ec2f9ab4a --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/cargo_danger.dmm @@ -0,0 +1,111 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/iron/airless, +/area/space) +"r" = ( +/obj/structure/sign/warning/biohazard/directional/east, +/turf/open/space/basic, +/area/space) +"s" = ( +/obj/structure/sign/warning/biohazard/directional/west, +/turf/open/space/basic, +/area/space) +"u" = ( +/obj/effect/mob_spawn/corpse/human/cargo_tech, +/turf/open/floor/iron/airless, +/area/space) +"D" = ( +/turf/closed/wall/r_wall, +/area/space) +"L" = ( +/obj/effect/mob_spawn/corpse/human/assistant, +/turf/open/floor/iron/airless, +/area/space) +"P" = ( +/obj/machinery/door/poddoor/shutters, +/turf/open/floor/iron/airless, +/area/space) +"Q" = ( +/turf/open/space/basic, +/area/space) +"S" = ( +/obj/structure/sign/warning/directional/east, +/turf/open/space/basic, +/area/space) +"W" = ( +/turf/open/floor/iron/airless, +/area/space) +"X" = ( +/obj/structure/sign/warning/directional/west, +/turf/open/space/basic, +/area/space) +"Z" = ( +/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/hunter, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/iron/airless, +/area/space) + +(1,1,1) = {" +Q +Q +Q +S +Q +r +Q +"} +(2,1,1) = {" +D +D +D +D +D +D +D +"} +(3,1,1) = {" +D +a +L +a +a +W +P +"} +(4,1,1) = {" +D +W +Z +W +a +L +P +"} +(5,1,1) = {" +D +u +W +a +W +a +P +"} +(6,1,1) = {" +D +D +D +D +D +D +D +"} +(7,1,1) = {" +Q +Q +Q +X +Q +s +Q +"} diff --git a/_maps/~monkestation/asteroid_maps/cargo_empty.dmm b/_maps/~monkestation/asteroid_maps/cargo_empty.dmm new file mode 100644 index 000000000000..183c17629b2e --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/cargo_empty.dmm @@ -0,0 +1,78 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/floor/iron/airless, +/area/space) +"d" = ( +/obj/machinery/door/poddoor/shutters, +/turf/open/floor/iron/airless, +/area/space) +"o" = ( +/turf/closed/wall/r_wall, +/area/space) +"D" = ( +/turf/open/space/basic, +/area/space) + +(1,1,1) = {" +D +D +D +D +D +D +D +"} +(2,1,1) = {" +o +o +o +o +o +o +o +"} +(3,1,1) = {" +o +a +a +a +a +a +d +"} +(4,1,1) = {" +o +a +a +a +a +a +d +"} +(5,1,1) = {" +o +a +a +a +a +a +d +"} +(6,1,1) = {" +o +o +o +o +o +o +o +"} +(7,1,1) = {" +D +D +D +D +D +D +D +"} diff --git a/_maps/~monkestation/asteroid_maps/geode.dmm b/_maps/~monkestation/asteroid_maps/geode.dmm new file mode 100644 index 000000000000..c3c5674db675 --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/geode.dmm @@ -0,0 +1,80 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/mineral/asteroid/tospace/gold, +/area/space) +"e" = ( +/turf/closed/mineral/asteroid/tospace/diamond, +/area/space) +"h" = ( +/turf/closed/mineral/asteroid/tospace/bscrystal, +/area/space) +"O" = ( +/turf/closed/mineral/random/asteroid, +/area/space) +"S" = ( +/turf/open/space/basic, +/area/space) + +(1,1,1) = {" +S +O +O +O +O +O +S +"} +(2,1,1) = {" +O +O +O +a +O +O +O +"} +(3,1,1) = {" +O +O +a +e +a +O +O +"} +(4,1,1) = {" +O +a +e +h +e +a +O +"} +(5,1,1) = {" +O +O +a +e +a +O +O +"} +(6,1,1) = {" +O +O +O +a +O +O +O +"} +(7,1,1) = {" +S +O +O +O +O +O +S +"} diff --git a/_maps/~monkestation/asteroid_maps/mad_rock.dmm b/_maps/~monkestation/asteroid_maps/mad_rock.dmm new file mode 100644 index 000000000000..5ca559c8b204 --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/mad_rock.dmm @@ -0,0 +1,95 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/mineral/random/asteroid, +/area/space) +"f" = ( +/obj/effect/mob_spawn/corpse/human/miner/explorer, +/obj/effect/decal/cleanable/blood, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"l" = ( +/turf/open/space/basic, +/area/space) +"q" = ( +/obj/item/reagent_containers/hypospray/medipen, +/obj/effect/decal/cleanable/blood, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"w" = ( +/obj/effect/mob_spawn/corpse/goliath, +/obj/effect/decal/cleanable/blood, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"x" = ( +/obj/item/pickaxe, +/obj/effect/decal/cleanable/blood, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"P" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/misc/asteroid/airless/tospace, +/area/space) + +(1,1,1) = {" +l +a +a +a +a +a +l +"} +(2,1,1) = {" +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +f +q +P +a +a +"} +(4,1,1) = {" +a +a +x +P +P +a +a +"} +(5,1,1) = {" +a +a +P +P +w +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +"} +(7,1,1) = {" +l +a +a +a +a +a +l +"} diff --git a/_maps/~monkestation/asteroid_maps/medium_rock.dmm b/_maps/~monkestation/asteroid_maps/medium_rock.dmm new file mode 100644 index 000000000000..cf7e011ddaf6 --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/medium_rock.dmm @@ -0,0 +1,107 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/basic, +/area/space) +"s" = ( +/turf/closed/mineral/artifact, +/area/space) + +(1,1,1) = {" +a +a +a +s +s +s +a +a +a +"} +(2,1,1) = {" +a +s +s +s +s +s +s +s +a +"} +(3,1,1) = {" +a +s +s +s +s +s +s +s +a +"} +(4,1,1) = {" +s +s +s +s +s +s +s +s +s +"} +(5,1,1) = {" +s +s +s +s +s +s +s +s +s +"} +(6,1,1) = {" +s +s +s +s +s +s +s +s +s +"} +(7,1,1) = {" +a +s +s +s +s +s +s +s +a +"} +(8,1,1) = {" +a +s +s +s +s +s +s +s +a +"} +(9,1,1) = {" +a +a +a +s +s +s +a +a +a +"} diff --git a/_maps/~monkestation/asteroid_maps/rock.dmm b/_maps/~monkestation/asteroid_maps/rock.dmm new file mode 100644 index 000000000000..bc41de908d80 --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/rock.dmm @@ -0,0 +1,263 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/mineral/random/asteroid/tospace, +/area/space) +"e" = ( +/turf/open/space/basic, +/area/space) + +(1,1,1) = {" +e +e +e +e +e +e +e +a +e +e +e +e +e +e +e +"} +(2,1,1) = {" +e +e +e +e +e +a +a +a +a +a +e +e +e +e +e +"} +(3,1,1) = {" +e +e +e +a +a +a +a +a +a +a +a +a +e +e +e +"} +(4,1,1) = {" +e +e +a +a +a +a +a +a +a +a +a +a +a +e +e +"} +(5,1,1) = {" +e +e +a +a +a +a +a +a +a +a +a +a +a +e +e +"} +(6,1,1) = {" +e +a +a +a +a +a +a +a +a +a +a +a +a +a +e +"} +(7,1,1) = {" +e +a +a +a +a +a +a +a +a +a +a +a +a +a +e +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +e +a +a +a +a +a +a +a +a +a +a +a +a +a +e +"} +(10,1,1) = {" +e +a +a +a +a +a +a +a +a +a +a +a +a +a +e +"} +(11,1,1) = {" +e +e +a +a +a +a +a +a +a +a +a +a +a +e +e +"} +(12,1,1) = {" +e +e +a +a +a +a +a +a +a +a +a +a +a +e +e +"} +(13,1,1) = {" +e +e +e +a +a +a +a +a +a +a +a +a +e +e +e +"} +(14,1,1) = {" +e +e +e +e +e +a +a +a +a +a +e +e +e +e +e +"} +(15,1,1) = {" +e +e +e +e +e +e +e +a +e +e +e +e +e +e +e +"} diff --git a/_maps/~monkestation/asteroid_maps/rockbar.dmm b/_maps/~monkestation/asteroid_maps/rockbar.dmm new file mode 100644 index 000000000000..cc0a2a4369ba --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/rockbar.dmm @@ -0,0 +1,359 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"b" = ( +/obj/item/ammo_casing/spent{ + dir = 1 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"c" = ( +/obj/structure/table/wood/shuttle_bar, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"e" = ( +/obj/machinery/chem_dispenser/drinks/beer{ + pixel_y = 7 + }, +/obj/structure/table/wood/shuttle_bar, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"g" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"j" = ( +/obj/effect/decal/cleanable/blood/footprints{ + dir = 4; + pixel_x = 24; + pixel_y = 8 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"l" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"n" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 4 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"t" = ( +/obj/item/ammo_casing/spent{ + pixel_y = 1; + pixel_x = -1 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"w" = ( +/obj/effect/decal/cleanable/blood/footprints, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"x" = ( +/turf/closed/mineral/random/asteroid/tospace, +/area/space) +"y" = ( +/obj/structure/table/wood/shuttle_bar, +/obj/structure/desk_bell{ + pixel_x = 13 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"A" = ( +/obj/structure/table/wood/shuttle_bar, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 3 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"B" = ( +/obj/item/gun/ballistic/shotgun/doublebarrel, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"D" = ( +/obj/effect/mob_spawn/corpse/human/bartender, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"E" = ( +/obj/item/vending_refill/cigarette, +/obj/structure/closet, +/obj/item/reagent_containers/cup/glass/bottle, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"F" = ( +/obj/structure/table/wood/shuttle_bar, +/obj/effect/spawner/random/food_or_drink/booze{ + pixel_y = 8 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"H" = ( +/obj/item/ammo_casing/spent{ + pixel_x = -7 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"I" = ( +/obj/structure/table/wood/shuttle_bar, +/obj/item/stack/package_wrap{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/stack/package_wrap{ + pixel_x = 4; + pixel_y = 1 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"M" = ( +/obj/structure/table/wood/shuttle_bar, +/obj/effect/spawner/random/food_or_drink/booze{ + pixel_x = 4; + pixel_y = 10 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"N" = ( +/obj/structure/chair/stool/bar{ + dir = 1 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"P" = ( +/obj/item/ammo_casing/spent{ + pixel_x = -7; + pixel_y = -5 + }, +/obj/item/ammo_casing/spent{ + pixel_x = 7; + pixel_y = 5 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"R" = ( +/obj/structure/barricade/wooden, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"U" = ( +/obj/item/ammo_casing/spent{ + pixel_x = 9; + pixel_y = -6 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"V" = ( +/obj/structure/table/wood/shuttle_bar, +/obj/item/reagent_containers/cup/glass/bottle{ + pixel_y = 12 + }, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"W" = ( +/obj/item/ammo_casing/shotgun/buckshot/spent, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"Y" = ( +/turf/open/space/basic, +/area/space) + +(1,1,1) = {" +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +"} +(2,1,1) = {" +Y +Y +Y +x +x +x +x +x +x +x +Y +Y +Y +"} +(3,1,1) = {" +Y +Y +x +x +x +x +a +a +x +x +x +Y +Y +"} +(4,1,1) = {" +Y +x +x +l +E +x +j +g +a +a +x +x +Y +"} +(5,1,1) = {" +Y +x +x +a +a +x +W +M +N +U +H +a +Y +"} +(6,1,1) = {" +Y +x +x +e +a +x +n +y +N +w +g +w +Y +"} +(7,1,1) = {" +Y +x +x +I +a +x +D +c +N +t +W +a +Y +"} +(8,1,1) = {" +Y +x +x +a +a +x +g +F +N +g +P +a +Y +"} +(9,1,1) = {" +Y +x +x +a +a +R +B +A +N +b +a +a +Y +"} +(10,1,1) = {" +Y +x +x +x +x +x +a +V +N +a +x +x +Y +"} +(11,1,1) = {" +Y +Y +x +x +x +x +a +a +x +x +x +Y +Y +"} +(12,1,1) = {" +Y +Y +Y +x +x +x +x +x +x +x +Y +Y +Y +"} +(13,1,1) = {" +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +"} diff --git a/_maps/~monkestation/asteroid_maps/sealed_danger.dmm b/_maps/~monkestation/asteroid_maps/sealed_danger.dmm new file mode 100644 index 000000000000..79aae3c8e5fb --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/sealed_danger.dmm @@ -0,0 +1,78 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/mineral/random/asteroid, +/area/space) +"e" = ( +/mob/living/basic/mining/goliath/ancient, +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"p" = ( +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"T" = ( +/turf/open/space/basic, +/area/space) + +(1,1,1) = {" +T +a +a +a +a +a +T +"} +(2,1,1) = {" +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +p +a +a +a +"} +(4,1,1) = {" +a +a +p +e +p +a +a +"} +(5,1,1) = {" +a +a +a +p +a +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +"} +(7,1,1) = {" +T +a +a +a +a +a +T +"} diff --git a/_maps/~monkestation/asteroid_maps/smol_rock.dmm b/_maps/~monkestation/asteroid_maps/smol_rock.dmm new file mode 100644 index 000000000000..03b23b822861 --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/smol_rock.dmm @@ -0,0 +1,71 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/mineral/random/asteroid/tospace, +/area/space) +"e" = ( +/turf/open/space/basic, +/area/space) + +(1,1,1) = {" +e +a +a +a +a +a +e +"} +(2,1,1) = {" +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +"} +(7,1,1) = {" +e +a +a +a +a +a +e +"} diff --git a/_maps/~monkestation/asteroid_maps/strong_rock.dmm b/_maps/~monkestation/asteroid_maps/strong_rock.dmm new file mode 100644 index 000000000000..a331a2f3d4fb --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/strong_rock.dmm @@ -0,0 +1,71 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/mineral/random/asteroid/tospace/highchance, +/area/space) +"W" = ( +/turf/open/space/basic, +/area/space) + +(1,1,1) = {" +W +a +a +a +a +a +W +"} +(2,1,1) = {" +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +"} +(7,1,1) = {" +W +a +a +a +a +a +W +"} diff --git a/_maps/~monkestation/asteroid_maps/test_rock.dmm b/_maps/~monkestation/asteroid_maps/test_rock.dmm new file mode 100644 index 000000000000..631ff40e6a9a --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/test_rock.dmm @@ -0,0 +1,266 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/mineral/random/asteroid/tospace, +/area/space) +"z" = ( +/turf/open/space/basic, +/area/space) +"H" = ( +/turf/open/misc/asteroid/airless/tospace, +/area/space) + +(1,1,1) = {" +z +z +z +z +z +z +z +a +z +z +z +z +z +z +z +"} +(2,1,1) = {" +z +z +z +z +z +a +a +a +a +a +z +z +z +z +z +"} +(3,1,1) = {" +z +z +z +a +a +a +a +a +a +a +a +a +z +z +z +"} +(4,1,1) = {" +z +z +a +a +a +a +a +a +H +a +a +a +a +z +z +"} +(5,1,1) = {" +z +z +a +a +a +a +a +a +a +H +a +a +a +z +z +"} +(6,1,1) = {" +z +a +a +a +H +a +a +a +a +a +H +a +a +a +z +"} +(7,1,1) = {" +z +a +a +a +a +a +a +a +a +a +H +a +a +a +z +"} +(8,1,1) = {" +a +a +a +a +a +a +a +H +a +a +H +a +a +a +a +"} +(9,1,1) = {" +z +a +a +a +a +a +a +a +a +a +H +a +a +a +z +"} +(10,1,1) = {" +z +a +a +a +H +a +a +a +a +a +H +a +a +a +z +"} +(11,1,1) = {" +z +z +a +a +a +a +a +a +a +H +a +a +a +z +z +"} +(12,1,1) = {" +z +z +a +a +a +a +a +a +H +a +a +a +a +z +z +"} +(13,1,1) = {" +z +z +z +a +a +a +a +a +a +a +a +a +z +z +z +"} +(14,1,1) = {" +z +z +z +z +z +a +a +a +a +a +z +z +z +z +z +"} +(15,1,1) = {" +z +z +z +z +z +z +z +a +z +z +z +z +z +z +z +"} diff --git a/_maps/~monkestation/asteroid_maps/test_rock_boogaloo.dmm b/_maps/~monkestation/asteroid_maps/test_rock_boogaloo.dmm new file mode 100644 index 000000000000..3ab03debf2e8 --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/test_rock_boogaloo.dmm @@ -0,0 +1,266 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/basic, +/area/space) +"K" = ( +/turf/open/misc/asteroid/airless/tospace, +/area/space) +"M" = ( +/turf/closed/mineral/random/asteroid/tospace, +/area/space) + +(1,1,1) = {" +a +a +a +a +a +a +a +M +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +M +M +M +M +M +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +M +M +M +M +M +M +M +M +M +a +a +a +"} +(4,1,1) = {" +a +a +M +M +M +M +M +M +M +M +M +M +M +a +a +"} +(5,1,1) = {" +a +a +M +M +M +M +M +M +M +M +M +K +M +a +a +"} +(6,1,1) = {" +a +M +M +M +K +M +M +M +M +M +K +M +M +M +a +"} +(7,1,1) = {" +a +M +M +M +M +M +M +M +M +M +K +M +M +M +a +"} +(8,1,1) = {" +M +M +M +M +M +M +M +K +M +M +K +M +M +M +M +"} +(9,1,1) = {" +a +M +M +M +M +M +M +M +M +M +K +M +M +M +a +"} +(10,1,1) = {" +a +M +M +M +K +M +M +M +M +M +K +M +M +M +a +"} +(11,1,1) = {" +a +a +M +M +M +M +M +M +M +M +M +K +M +a +a +"} +(12,1,1) = {" +a +a +M +M +M +M +M +M +M +M +M +M +M +a +a +"} +(13,1,1) = {" +a +a +a +M +M +M +M +M +M +M +M +M +a +a +a +"} +(14,1,1) = {" +a +a +a +a +a +M +M +M +M +M +a +a +a +a +a +"} +(15,1,1) = {" +a +a +a +a +a +a +a +M +a +a +a +a +a +a +a +"} diff --git a/_maps/~monkestation/asteroid_maps/weak_rock.dmm b/_maps/~monkestation/asteroid_maps/weak_rock.dmm new file mode 100644 index 000000000000..ae53394c47dc --- /dev/null +++ b/_maps/~monkestation/asteroid_maps/weak_rock.dmm @@ -0,0 +1,71 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/mineral/random/asteroid/tospace/lowchance, +/area/space) +"N" = ( +/turf/open/space/basic, +/area/space) + +(1,1,1) = {" +N +a +a +a +a +a +N +"} +(2,1,1) = {" +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +"} +(7,1,1) = {" +N +a +a +a +a +a +N +"} diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 7ce5594516ee..ed8b47ddadd7 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -66,39 +66,37 @@ #define CLONER_FRESH_CLONE "fresh" #define CLONER_MATURE_CLONE "mature" + + //species traits for mutantraces #define MUTCOLORS 1 -#define HAIR 2 -#define FACEHAIR 3 -#define EYECOLOR 4 -#define LIPS 5 -#define NOTRANSSTING 7 -#define NOZOMBIE 8 -#define NO_UNDERWEAR 9 -#define NO_DNA_COPY 10 -#define DRINKSBLOOD 11 -#define SKINTONES 12 -#define ANIME 13 -#define MUTCOLORS_SECONDARY 14 -#define SPECIES_FUR 15 +#define NOTRANSSTING 2 +#define NOZOMBIE 3 +#define NO_UNDERWEAR 4 +#define NO_DNA_COPY 5 +#define DRINKSBLOOD 6 +#define ANIME 7 +#define MUTCOLORS_SECONDARY 8 +#define SPECIES_FUR 9 +#define SKINTONES 10 /// Use this if you want to change the race's color without the player being able to pick their own color. AKA special color shifting -#define DYNCOLORS 16 -#define AGENDER 17 +#define DYNCOLORS 7 +#define AGENDER 8 /// Do not draw eyes or eyeless overlay -#define NOEYESPRITES 18 +#define NOEYESPRITES 9 ///If we have a limb-specific overlay sprite -#define HAS_MARKINGS 19 +#define HAS_MARKINGS 10 /// Do not draw blood overlay -#define NOBLOODOVERLAY 20 +#define NOBLOODOVERLAY 11 ///No augments, for monkeys in specific because they will turn into fucking freakazoids https://cdn.discordapp.com/attachments/326831214667235328/791313258912153640/102707682-fa7cad80-4294-11eb-8f13-8c689468aeb0.png -#define NOAUGMENTS 21 +#define NOAUGMENTS 12 ///will be assigned a universal vampire themed last name shared by their department. this is preferenced! -#define BLOOD_CLANS 22 +#define BLOOD_CLANS 13 -#define REVIVESBYHEALING 23 -#define NOHUSK 24 -#define NOMOUTH 25 +#define REVIVESBYHEALING 14 +#define NOHUSK 15 +#define NOMOUTH 16 //organ slots #define ORGAN_SLOT_ADAMANTINE_RESONATOR "adamantine_resonator" diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index 6938edf25ad2..6f537397aad4 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -51,6 +51,8 @@ #define ACCESS_HOS "hos" /// Access for the detective to get into their office, the medical data console, and some other detective-related stuff. #define ACCESS_DETECTIVE "detective" +/// Access for the brig physician to get basic access to medical tools, but not all encompassing access to medical under normal manning. MONKESTATION EDIT +#define ACCESS_BRIG_PHYSICIAN "brig_physician" /// MONKESTATION EDIT /// Engineering General Access, grants access to the standard parts of engineering (as well as the Supermatter and related equipment). #define ACCESS_ENGINEERING "engineering" diff --git a/code/__DEFINES/achievements.dm b/code/__DEFINES/achievements.dm index 0dd53a28315d..6c9ed2dde955 100644 --- a/code/__DEFINES/achievements.dm +++ b/code/__DEFINES/achievements.dm @@ -54,6 +54,7 @@ #define MEDAL_NARSUPREME "Narsupreme" #define MEDAL_SPRINGLOCK "The Man Inside the Modsuit" #define MEDAL_HEALTHY "Heart Healthy" +#define MEDAL_GODS_WRATH "God's Wrath" #define MEDAL_DEBT_EXTINGUISHED "Debt Extinguished" #define MEDAL_ARCHMAGE "Archmage" #define MEDAL_THEORETICAL_LIMITS "All Within Theoretical Limits" diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index d1feca12c830..65aaa36fbb9f 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -172,7 +172,6 @@ GLOBAL_LIST_INIT(hijack_employers, list( "Gone Postal", "Tiger Cooperative Fanatic", "Waffle Corporation Terrorist", - "The Ashen Forge Member", )) ///employers who hire agents to do a task and escape... or martyrdom. whatever @@ -186,7 +185,6 @@ GLOBAL_LIST_INIT(normal_employers, list( "Legal Trouble", "MI13", "Waffle Corporation", - "The Ashen Forge Member", )) ///employers for malfunctioning ais. they do not have sides, unlike traitors. @@ -333,11 +331,15 @@ GLOBAL_LIST_INIT(human_invader_antagonists, list( #define ANTAG_GROUP_SYNDICATE "Syndicate" #define ANTAG_GROUP_WIZARDS "Wizard Federation" #define ANTAG_GROUP_XENOS "Xenomorph Infestation" - -#define HUNTER_PACK_COPS "cop_hunters" -#define HUNTER_PACK_RUSSIAN "russian_hunters" -#define HUNTER_PACK_BOUNTY "bounty_hunters" -#define HUNTER_PACK_PSYKER "psyker_hunters" +#define ANTAG_GROUP_FUGITIVES "Escaped Fugitives" +#define ANTAG_GROUP_HUNTERS "Bounty Hunters" +#define ANTAG_GROUP_PARADOX "Spacetime Aberrations" +#define ANTAG_GROUP_CREW "Deviant Crew" + +#define HUNTER_PACK_COPS "Spacepol Officers" +#define HUNTER_PACK_RUSSIAN "Russian Smugglers" +#define HUNTER_PACK_BOUNTY "Bounty Hunters" +#define HUNTER_PACK_PSYKER "Psyker Shikaris" // This flag disables certain checks that presume antagonist datums mean 'baddie'. #define FLAG_FAKE_ANTAG (1 << 0) diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index a229dd3e3c42..f370a3bf63e8 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -53,6 +53,8 @@ #define PERMIT_HUD "25" // for implants to let you see sensor field #define SENSOR_HUD "26" +// for mood change +#define MOOD_HUD "27" //monkestation edit end //by default everything in the hud_list of an atom is an image @@ -73,6 +75,7 @@ #define DATA_HUD_FAN 10 #define DATA_HUD_PERMIT 11 //monkestation edit #define DATA_HUD_SENSORS 12 //monkestation edit +#define DATA_HUD_MOOD 13 //monkestation edit // Notification action types #define NOTIFY_JUMP "jump" diff --git a/code/__DEFINES/bloodsuckers.dm b/code/__DEFINES/bloodsuckers.dm index 6b49772d5b39..9d01d248ae78 100644 --- a/code/__DEFINES/bloodsuckers.dm +++ b/code/__DEFINES/bloodsuckers.dm @@ -1,9 +1,6 @@ ///Uncomment this to enable testing of Bloodsucker features (such as vassalizing people with a mind instead of a client). //#define BLOODSUCKER_TESTING -/// You have special interactions with bloodsuckers and the occult -#define TRAIT_OCCULTIST "occultists" - /** * Blood-level defines */ @@ -18,6 +15,9 @@ /// Once blood is this high, will exit Frenzyshak #define FRENZY_THRESHOLD_EXIT 250 +/// Minimum blood required for bloodsucker oozelings to auto-revive +#define OOZELING_MIN_REVIVE_BLOOD_THRESHOLD (FRENZY_THRESHOLD_ENTER * 10) + /** * Vassal defines */ @@ -70,6 +70,8 @@ #define BP_CANT_USE_WHILE_INCAPACITATED (1<<3) /// This Power can't be used while unconscious #define BP_CANT_USE_WHILE_UNCONSCIOUS (1<<4) +/// This Power can't be used during Sol +#define BP_CANT_USE_DURING_SOL (1<<5) /// This Power can be purchased by Bloodsuckers #define BLOODSUCKER_CAN_BUY (1<<0) @@ -152,32 +154,6 @@ #define ROLE_MONSTERHUNTER "Monster Hunter" #define ROLE_INFILTRATOR "Infiltrator" -/** - * Traits - */ -/// Falsifies Health analyzer blood levels -#define TRAIT_MASQUERADE "masquerade" -/// Your body is literal room temperature. Does not make you immune to the temp -#define TRAIT_COLDBLOODED "coldblooded" - -/** - * Sources - */ -/// Source trait for Bloodsuckers-related traits -#define BLOODSUCKER_TRAIT "bloodsucker_trait" -/// Source trait for bloodsuckers in torpor. -#define TORPOR_TRAIT "torpor_trait" -/// Source trait for bloodsuckers using fortitude. -#define FORTITUDE_TRAIT "fortitude_trait" -/// Source trait for bloodsucker mesmerization. -#define MESMERIZED_TRAIT "mesmerized_trait" -/// Source trait for Monster Hunter-related traits -#define HUNTER_TRAIT "monsterhunter_trait" -/// Source trait while Feeding -#define FEED_TRAIT "feed_trait" -/// Source trait during a Frenzy -#define FRENZY_TRAIT "frenzy_trait" - /** * Macros */ diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index 14715f7a7a90..6d73b04a78e6 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -33,6 +33,13 @@ #define COLOR_HALF_TRANSPARENT_BLACK "#0000007A" #define COLOR_RED "#FF0000" +#define COLOR_CHRISTMAS_RED "#D6001C" +#define COLOR_OLD_GLORY_RED "#B22234" +#define COLOR_FRENCH_RED "#EF4135" +#define COLOR_ETHIOPIA_RED "#DA121A" +#define COLOR_UNION_JACK_RED "#C8102E" +#define COLOR_MEDIUM_DARK_RED "#CC0000" +#define COLOR_PINK_RED "EF3340" #define COLOR_SYNDIE_RED "#F10303" #define COLOR_SYNDIE_RED_HEAD "#760500" #define COLOR_MOSTLY_PURE_RED "#FF3300" @@ -50,7 +57,10 @@ #define COLOR_YELLOW "#FFFF00" #define COLOR_VIVID_YELLOW "#FBFF23" +#define COLOR_TANGERINE_YELLOW "#FFCC00" #define COLOR_VERY_SOFT_YELLOW "#FAE48E" +#define COLOR_GOLD "#FFD700" +#define COLOR_ETHIOPIA_YELLOW "#FCDD09" #define COLOR_OLIVE "#808000" #define COLOR_ASSISTANT_OLIVE "#828163" @@ -63,6 +73,9 @@ #define COLOR_VERY_PALE_LIME_GREEN "#DDFFD3" #define COLOR_VERY_DARK_LIME_GREEN "#003300" #define COLOR_GREEN "#008000" +#define COLOR_CHRISTMAS_GREEN "#00873E" +#define COLOR_IRISH_GREEN "#169B62" +#define COLOR_ETHIOPIA_GREEN "#078930" #define COLOR_DARK_MODERATE_LIME_GREEN "#44964A" #define COLOR_PAI_GREEN "#00FF88" #define COLOR_PALE_GREEN "#20e28e" @@ -72,6 +85,10 @@ #define COLOR_DARK_CYAN "#00A2FF" #define COLOR_TEAL "#008080" #define COLOR_BLUE "#0000FF" +#define COLOR_OLD_GLORY_BLUE "#3C3B6E" +#define COLOR_FRENCH_BLUE "#0055A4" +#define COLOR_UNION_JACK_BLUE "#012169" +#define COLOR_TRUE_BLUE "#0066CC" #define COLOR_STRONG_BLUE "#1919c8" #define COLOR_CENTCOM_BLUE "#134975" #define COLOR_BRIGHT_BLUE "#2CB2E8" @@ -99,6 +116,7 @@ #define COLOR_DARK_PURPLE "#551A8B" #define COLOR_ORANGE "#FF9900" +#define COLOR_IRISH_ORANGE "#FF883E" #define COLOR_ENGINEERING_ORANGE "#FFA62B" #define COLOR_MOSTLY_PURE_ORANGE "#ff8000" #define COLOR_TAN_ORANGE "#FF7B00" @@ -248,12 +266,13 @@ #define CIRCUIT_COLOR_ENGINEERING "#F8D700" #define CIRCUIT_COLOR_SUPPLY "#C47749" -/// Highly Saturated Colors -#define COLOR_BRIGHT_RED "#FF6666" -#define COLOR_BRIGHT_YELLOW "#EAFF51" -#define COLOR_BRIGHT_GREEN "#41FC66" -#define COLOR_BRIGHT_TEAL "#42FFF2" -#define COLOR_BRIGHT_PURPLE "#5D5DFC" +/// Colors for pride week +#define COLOR_PRIDE_RED "#FF6666" +#define COLOR_PRIDE_ORANGE "#FC9F3C" +#define COLOR_PRIDE_YELLOW "#EAFF51" +#define COLOR_PRIDE_GREEN "#41FC66" +#define COLOR_PRIDE_BLUE "#42FFF2" +#define COLOR_PRIDE_PURPLE "#5D5DFC" /// The default color for admin say, used as a fallback when the preference is not enabled #define DEFAULT_ASAY_COLOR COLOR_MOSTLY_PURE_RED diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.dm index 09ac2c73e2cb..9ff14135e717 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.dm @@ -28,3 +28,5 @@ #define COMSIG_MOUSEDROPPED_ONTO "mousedropped_onto" ///from base of mob/MouseWheelOn(): (/atom, delta_x, delta_y, params) #define COMSIG_MOUSE_SCROLL_ON "mousescroll_on" +/// From /atom/movable/screen/click(): (atom/target, atom/location, control, params, mob/user) +#define COMSIG_SCREEN_ELEMENT_CLICK "screen_element_click" diff --git a/code/__DEFINES/dcs/signals/signals_storage.dm b/code/__DEFINES/dcs/signals/signals_storage.dm index b30039dc12f2..45b6ec6bfe3f 100644 --- a/code/__DEFINES/dcs/signals/signals_storage.dm +++ b/code/__DEFINES/dcs/signals/signals_storage.dm @@ -5,3 +5,5 @@ /// Sent after dumping into some other storage object: (atom/dest_object, mob/user) #define COMSIG_STORAGE_DUMP_POST_TRANSFER "storage_dump_into_storage" +/// Sent to the STORAGE when an ITEM is STORED INSIDE. +#define COMSIG_STORAGE_STORED_ITEM "storage_storing_item" diff --git a/code/__DEFINES/economy.dm b/code/__DEFINES/economy.dm index 84a2af566cb1..32c88cee80cc 100644 --- a/code/__DEFINES/economy.dm +++ b/code/__DEFINES/economy.dm @@ -1,7 +1,7 @@ /// Number of paychecks jobs start with at the creation of a new bank account for a player (So at shift-start or game join, but not a blank new account.) #define STARTING_PAYCHECKS 5 /// How much mail the Economy SS will create per minute, regardless of firing time. -#define MAX_MAIL_PER_MINUTE 3 +#define MAX_MAIL_PER_MINUTE 8 /// Probability of using letters of envelope sprites on all letters. #define FULL_CRATE_LETTER_ODDS 70 diff --git a/code/__DEFINES/explosions.dm b/code/__DEFINES/explosions.dm index a1645b659d1c..79b9baff89c0 100644 --- a/code/__DEFINES/explosions.dm +++ b/code/__DEFINES/explosions.dm @@ -52,6 +52,7 @@ #define EXARG_KEY_SILENT STRINGIFY(silent) /// Whether or not the explosion should produce smoke if it is large enough to warrant it. #define EXARG_KEY_SMOKE STRINGIFY(smoke) +#define EXARG_KEY_AREA_LOCK STRINGIFY(area_lock) // Explodable component deletion values /// Makes the explodable component queue to reset its exploding status when it detonates. diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm index e959bc077111..74d5699a45a0 100644 --- a/code/__DEFINES/food.dm +++ b/code/__DEFINES/food.dm @@ -188,3 +188,6 @@ DEFINE_BITFIELD(food_flags, list( // Venues for the barbots. #define VENUE_RESTAURANT "Restaurant Venue" #define VENUE_BAR "Bar Venue" + +/// How much milk is needed to make butter on a reagent grinder +#define MILK_TO_BUTTER_COEFF 25 diff --git a/code/__DEFINES/holiday.dm b/code/__DEFINES/holiday.dm new file mode 100644 index 000000000000..1c35940e7188 --- /dev/null +++ b/code/__DEFINES/holiday.dm @@ -0,0 +1 @@ +#define HOLIDAY_HAT_CHANCE 20 diff --git a/code/__DEFINES/interaction_flags.dm b/code/__DEFINES/interaction_flags.dm index 30381f5ebb6d..6ce2928b741b 100644 --- a/code/__DEFINES/interaction_flags.dm +++ b/code/__DEFINES/interaction_flags.dm @@ -18,6 +18,16 @@ #define INTERACT_ATOM_NO_FINGERPRINT_INTERACT (1<<8) /// allows this atom to skip the adjacency check #define INTERACT_ATOM_ALLOW_USER_LOCATION (1<<9) +/// ignores mobility check +#define INTERACT_ATOM_IGNORE_MOBILITY (1<<10) +// Bypass all adjacency checks for mouse drop +#define INTERACT_ATOM_MOUSEDROP_IGNORE_ADJACENT (1<<11) +/// Bypass all can_perform_action checks for mouse drop +#define INTERACT_ATOM_MOUSEDROP_IGNORE_USABILITY (1<<12) +/// Bypass all adjacency and other checks for mouse drop +#define INTERACT_ATOM_MOUSEDROP_IGNORE_CHECKS (INTERACT_ATOM_MOUSEDROP_IGNORE_ADJACENT | INTERACT_ATOM_MOUSEDROP_IGNORE_USABILITY) +/// calls try_interact() on attack_paw() and returns that. +#define INTERACT_ATOM_ATTACK_PAW (1<<13) /// attempt pickup on attack_hand for items #define INTERACT_ITEM_ATTACK_HAND_PICKUP (1<<0) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 7ec216cad530..db9e10b6ae17 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -286,7 +286,7 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( GLOBAL_LIST_INIT(book_types, typecacheof(list( /obj/item/book, /obj/item/spellbook, - /obj/item/storage/book))) + /obj/item/infuser_book))) // Jobs #define is_job(job_type) (istype(job_type, /datum/job)) diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 8ba1bd9d5788..65b0d3c49837 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -185,6 +185,9 @@ #define DEPARTMENT_BITFLAG_SPOOKTOBER (1<<10) #define DEPARTMENT_SPOOKTOBER "Spooktober" +#define DEPARTMENT_BITFLAG_CENTRAL_COMMAND (1<<11) +#define DEPARTMENT_CENTRAL_COMMAND "Central Command" + /* Job datum job_flags */ /// Whether the mob is announced on arrival. #define JOB_ANNOUNCE_ARRIVAL (1<<0) @@ -204,8 +207,11 @@ #define JOB_ASSIGN_QUIRKS (1<<7) /// Whether this job can be an intern. #define JOB_CAN_BE_INTERN (1<<8) -/// Whether this job is enabled/disabled by the spooktober config -#define JOB_SPOOKTOBER (1<<9) +/// This job cannot have more slots opened by the Head of Personnel (but admins or other random events can still do this). +#define JOB_CANNOT_OPEN_SLOTS (1<<9) + +/// Combination flag for jobs which are considered regular crew members of the station. +#define STATION_JOB_FLAGS (JOB_ANNOUNCE_ARRIVAL|JOB_CREW_MANIFEST|JOB_EQUIP_RANK|JOB_CREW_MEMBER|JOB_NEW_PLAYER_JOINABLE|JOB_REOPEN_ON_ROUNDSTART_LOSS|JOB_ASSIGN_QUIRKS|JOB_CAN_BE_INTERN) #define FACTION_NONE "None" #define FACTION_STATION "Station" diff --git a/code/__DEFINES/liquids.dm b/code/__DEFINES/liquids.dm index 362543279aec..220f0b569be4 100644 --- a/code/__DEFINES/liquids.dm +++ b/code/__DEFINES/liquids.dm @@ -82,5 +82,6 @@ GLOBAL_LIST_INIT(liquid_blacklist, list( /datum/reagent/sorium, - /datum/reagent/liquid_dark_matter + /datum/reagent/liquid_dark_matter, + /datum/reagent/hydrogen_peroxide, // no instahusk pools please )) diff --git a/code/__DEFINES/materials.dm b/code/__DEFINES/materials.dm index 6ffcc733928a..100435408602 100644 --- a/code/__DEFINES/materials.dm +++ b/code/__DEFINES/materials.dm @@ -68,3 +68,15 @@ #define MATERIAL_SLOWDOWN_PLASTEEL (0.05) /// The slowdown value of one [SHEET_MATERIAL_AMOUNT] of alien alloy. #define MATERIAL_SLOWDOWN_ALIEN_ALLOY (0.1) + +// The number of ore vents that will spawn boulders with this material. +/// Is this material going to spawn often in ore vents? (80% of vents on lavaland) +#define MATERIAL_RARITY_COMMON 12 +/// Is this material going to spawn often in ore vents? (53% of vents on lavaland) +#define MATERIAL_RARITY_SEMIPRECIOUS 8 +/// Is this material going to spawn uncommonly in ore vents? (33% of vents on lavaland) +#define MATERIAL_RARITY_PRECIOUS 5 +/// Is this material going to spawn rarely in ore vents? (20% of vents on lavaland) +#define MATERIAL_RARITY_RARE 3 +/// Is this material only going to spawn once in ore vents? (6% of vents on lavaland) +#define MATERIAL_RARITY_UNDISCOVERED 1 diff --git a/code/__DEFINES/maths.dm b/code/__DEFINES/maths.dm index d2eb3e9d9439..765f86c380da 100644 --- a/code/__DEFINES/maths.dm +++ b/code/__DEFINES/maths.dm @@ -157,7 +157,7 @@ //A logarithm that converts an integer to a number scaled between 0 and 1. //Currently, this is used for hydroponics-produce sprite transforming, but could be useful for other transform functions. -#define TRANSFORM_USING_VARIABLE(input, max) ( sin((90*(input))/(max))**2 ) +#define TRANSFORM_USING_VARIABLE(input, max) ( sin((90*min(input,max))/(max))**2 ) //converts a uniform distributed random number into a normal distributed one //since this method produces two random numbers, one is saved for subsequent calls diff --git a/code/__DEFINES/mining.dm b/code/__DEFINES/mining.dm new file mode 100644 index 000000000000..11d150a453db --- /dev/null +++ b/code/__DEFINES/mining.dm @@ -0,0 +1,49 @@ +// Defines related to the mining rework circa June 2023 +/// Durability of a large size boulder from a large size vent. +#define BOULDER_SIZE_LARGE 15 +/// Durability of a medium size boulder from a medium size vent. +#define BOULDER_SIZE_MEDIUM 10 +/// Durability of a small size boulder from a small size vent. +#define BOULDER_SIZE_SMALL 5 +/// How many boulders can a single ore vent have on it's tile before it stops producing more? +#define MAX_BOULDERS_PER_VENT 10 +/// Time multiplier +#define INATE_BOULDER_SPEED_MULTIPLIER 3 +// Vent type +/// Large vents, giving large boulders. +#define LARGE_VENT_TYPE "large" +/// Medium vents, giving medium boulders. +#define MEDIUM_VENT_TYPE "medium" +/// Small vents, giving small boulders. +#define SMALL_VENT_TYPE "small" + +/// Proximity to a vent that a wall ore needs to be for 5 ore to be mined. +#define VENT_PROX_VERY_HIGH 3 +/// Proximity to a vent that a wall ore needs to be for 4 ore to be mined. +#define VENT_PROX_HIGH 6 +/// Proximity to a vent that a wall ore needs to be for 3 ore to be mined. +#define VENT_PROX_MEDIUM 15 +/// Proximity to a vent that a wall ore needs to be for 2 ore to be mined. +#define VENT_PROX_LOW 32 +/// Proximity to a vent that a wall ore needs to be for 1 ore to be mined. +#define VENT_PROX_FAR 64 + +/// The chance of ore spawning in a wall that is VENT_PROX_VERY_HIGH tiles to a vent. +#define VENT_CHANCE_VERY_HIGH 75 +/// The chance of ore spawning in a wall that is VENT_PROX_HIGH tiles to a vent. +#define VENT_CHANCE_HIGH 18 +/// The chance of ore spawning in a wall that is VENT_PROX_MEDIUM tiles to a vent. +#define VENT_CHANCE_MEDIUM 9 +/// The chance of ore spawning in a wall that is VENT_PROX_LOW tiles to a vent. +#define VENT_CHANCE_LOW 5 +/// The chance of ore spawning in a wall that is VENT_PROX_FAR tiles to a vent. +#define VENT_CHANCE_FAR 1 + +/// The number of points a miner gets for discovering a vent, multiplied by BOULDER_SIZE when completing a wave defense minus the discovery bonus. +#define MINER_POINT_MULTIPLIER 100 +/// The multiplier that gets applied for automatically generated mining points. +#define MINING_POINT_MACHINE_MULTIPLIER 0.8 + +//String defines to use with CaveGenerator presets for what ore breakdown to use. +#define OREGEN_PRESET_LAVALAND "lavaland" +#define OREGEN_PRESET_TRIPLE_Z "triple_z" diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index fb0c39de245c..714d416b75b8 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -590,14 +590,15 @@ ///Squash flags. For squashable element -///Whether or not the squashing requires the squashed mob to be lying down +/// Squashing will not occur if the mob is not lying down (bodyposition is LYING_DOWN) #define SQUASHED_SHOULD_BE_DOWN (1<<0) -///Whether or not to gib when the squashed mob is moved over +/// If present, outright gibs the squashed mob instead of just dealing damage #define SQUASHED_SHOULD_BE_GIBBED (1<<1) - - +/// If squashing always passes if the mob is dead +#define SQUASHED_ALWAYS_IF_DEAD (1<<2) /// Don't squash our mob if its not located in a turf #define SQUASHED_DONT_SQUASH_IN_CONTENTS (1<<3) + /* * Defines for "AI emotions", allowing the AI to expression emotions * with status displays via emotes. diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index e0947d2d420a..24e14b06fa7c 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -60,6 +60,7 @@ // Playtime tracking system, see jobs_exp.dm #define EXP_TYPE_LIVING "Living" #define EXP_TYPE_CREW "Crew" +#define EXP_TYPE_CENTRAL_COMMAND "Central Command" #define EXP_TYPE_COMMAND "Command" #define EXP_TYPE_ENGINEERING "Engineering" #define EXP_TYPE_MEDICAL "Medical" diff --git a/code/__DEFINES/rust_g.dm b/code/__DEFINES/rust_g.dm index db6114a05fb1..810991dafa49 100644 --- a/code/__DEFINES/rust_g.dm +++ b/code/__DEFINES/rust_g.dm @@ -124,6 +124,13 @@ #define rustg_dmi_strip_metadata(fname) RUSTG_CALL(RUST_G, "dmi_strip_metadata")(fname) #define rustg_dmi_create_png(path, width, height, data) RUSTG_CALL(RUST_G, "dmi_create_png")(path, width, height, data) #define rustg_dmi_resize_png(path, width, height, resizetype) RUSTG_CALL(RUST_G, "dmi_resize_png")(path, width, height, resizetype) + +#define RUSTG_RESIZE_NEAREST "nearest" +#define RUSTG_RESIZE_CATMULL "catmull" +#define RUSTG_RESIZE_GAUSSIAN "gaussian" +#define RUSTG_RESIZE_LANCZOS3 "lanczos3" +#define RUSTG_RESIZE_TRIANGLE "triangle" + /** * input: must be a path, not an /icon; you have to do your own handling if it is one, as icon objects can't be directly passed to rustg. * diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 7363c7f4db20..c1e4c9da7b95 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -73,6 +73,7 @@ #define SPAN_TAPE_RECORDER "tape_recorder" #define SPAN_HELIUM "small" #define SPAN_SOAPBOX "soapbox" +#define SPAN_BOLD "bold" // monkestation addition //bitflag #defines for return value of the radio() proc. #define ITALICS (1<<0) diff --git a/code/__DEFINES/screentips.dm b/code/__DEFINES/screentips.dm index 9d56e8cf36e5..f99443752a69 100644 --- a/code/__DEFINES/screentips.dm +++ b/code/__DEFINES/screentips.dm @@ -30,3 +30,5 @@ /// Screentips are only enabled when they have context #define SCREENTIP_PREFERENCE_CONTEXT_ONLY "Only with tips" + +#define SCREENTIP_CONTEXT_MISC "Misc" diff --git a/code/__DEFINES/skills.dm b/code/__DEFINES/skills.dm index 26e66eee1f54..722293b1a431 100644 --- a/code/__DEFINES/skills.dm +++ b/code/__DEFINES/skills.dm @@ -42,6 +42,9 @@ ///The multiplier of the extra experience given by the fishing minigame based on difficulty. At the default difficulty of 15, the bonus will be of 21%. #define FISHING_SKILL_DIFFIULTY_EXP_MULT 0.015 ///How much exp one would gain per spent playing the fishing minigame at minimum difficulty. -#define FISHING_SKILL_EXP_PER_SECOND (SKILL_EXP_LEGENDARY / (22 MINUTES)) +#define FISHING_SKILL_EXP_PER_SECOND (SKILL_EXP_LEGENDARY / (15 MINUTES * 0.1)) ///The maximum amount of experience one can get per fishing minigame. I appreciate the effort though. #define FISHING_SKILL_EXP_CAP_PER_GAME (SKILL_EXP_LEGENDARY / 5) + +///The base modifier a boulder's size grants to the mining skill. +#define MINING_SKILL_BOULDER_SIZE_XP 10 diff --git a/code/__DEFINES/sprite_accessories.dm b/code/__DEFINES/sprite_accessories.dm new file mode 100644 index 000000000000..9c9471130e6f --- /dev/null +++ b/code/__DEFINES/sprite_accessories.dm @@ -0,0 +1,9 @@ +// ~color source defines for sprite accessories +/// Color of the sprite accessory will match the owner's mutant color, which is granted by certain species +#define MUTANT_COLOR "mutant_color" +/// Color of the sprite accessory will match the owner's hair color +#define HAIR_COLOR "hair_color" +/// Color of the sprite accessory will match the owner's facial hair color +#define FACIAL_HAIR_COLOR "facial_hair_color" +/// Color of the sprite accessory will match the owner's (left) eye color +#define EYE_COLOR "eye_color" diff --git a/code/__DEFINES/stamina.dm b/code/__DEFINES/stamina.dm index cb4cde1574ba..9f76596de24f 100644 --- a/code/__DEFINES/stamina.dm +++ b/code/__DEFINES/stamina.dm @@ -80,7 +80,3 @@ /// Chance to resist out of chokeholds grabs. #define STAMINA_GRAB_CHOKE_RESIST_CHANCE 45 -//// -/// TRAITS -//// -#define TRAIT_CANT_STAMCRIT "cant_stamcrit" diff --git a/code/__DEFINES/surgery.dm b/code/__DEFINES/surgery.dm index de9fc14fab59..2c037f3728b2 100644 --- a/code/__DEFINES/surgery.dm +++ b/code/__DEFINES/surgery.dm @@ -30,6 +30,24 @@ ///Bodypart does not get replaced during set_species() #define BP_BLOCK_CHANGE_SPECIES (1<<0) +// Flags for the head_flags var on /obj/item/bodypart/head +/// Head can have hair +#define HEAD_HAIR (1<<0) +/// Head can have facial hair +#define HEAD_FACIAL_HAIR (1<<1) +/// Head can have lips +#define HEAD_LIPS (1<<2) +/// Head can have eye sprites +#define HEAD_EYESPRITES (1<<3) +/// Head will have colored eye sprites +#define HEAD_EYECOLOR (1<<4) +/// Head can have eyeholes when missing eyes +#define HEAD_EYEHOLES (1<<5) +/// Head can have debrain overlay +#define HEAD_DEBRAIN (1<<6) +/// All head flags, default for most heads +#define HEAD_ALL_FEATURES (HEAD_HAIR|HEAD_FACIAL_HAIR|HEAD_LIPS|HEAD_EYESPRITES|HEAD_EYECOLOR|HEAD_EYEHOLES|HEAD_DEBRAIN) + /// When the surgery step fails :( #define SURGERY_STEP_FAIL -1 diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index a4fb6d40be73..42f2d5fc31fe 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,18 +1,19 @@ // tgstation-server DMAPI +// The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF RFC 2119. -#define TGS_DMAPI_VERSION "7.1.1" +#define TGS_DMAPI_VERSION "7.3.0" // All functions and datums outside this document are subject to change with any version and should not be relied on. // CONFIGURATION -/// Create this define if you want to do TGS configuration outside of this file. +/// Consumers SHOULD create this define if you want to do TGS configuration outside of this file. #ifndef TGS_EXTERNAL_CONFIGURATION -// Comment this out once you've filled in the below. +// Consumers MUST comment this out once you've filled in the below and are not using [TGS_EXTERNAL_CONFIGURATION]. #error TGS API unconfigured -// Uncomment this if you wish to allow the game to interact with TGS 3.. +// Consumers MUST uncomment this if you wish to allow the game to interact with TGS version 3. // This will raise the minimum required security level of your game to TGS_SECURITY_TRUSTED due to it utilizing call()(). //#define TGS_V3_API @@ -52,7 +53,7 @@ #ifndef TGS_FILE2TEXT_NATIVE #ifdef file2text -#error Your codebase is re-defining the BYOND proc file2text. The DMAPI requires the native version to read the result of world.Export(). You can fix this by adding "#define TGS_FILE2TEXT_NATIVE file2text" before your override of file2text to allow the DMAPI to use the native version. This will only be used for world.Export(), not regular file accesses +#error Your codebase is re-defining the BYOND proc file2text. The DMAPI requires the native version to read the result of world.Export(). You SHOULD fix this by adding "#define TGS_FILE2TEXT_NATIVE file2text" before your override of file2text to allow the DMAPI to use the native version. This will only be used for world.Export(), not regular file accesses #endif #define TGS_FILE2TEXT_NATIVE file2text #endif @@ -152,16 +153,17 @@ //REQUIRED HOOKS /** - * Call this somewhere in [/world/proc/New] that is always run. This function may sleep! + * Consumers MUST call this somewhere in [/world/proc/New] that is always run. This function may sleep! * * * event_handler - Optional user defined [/datum/tgs_event_handler]. * * minimum_required_security_level: The minimum required security level to run the game in which the DMAPI is integrated. Can be one of [TGS_SECURITY_ULTRASAFE], [TGS_SECURITY_SAFE], or [TGS_SECURITY_TRUSTED]. + * * http_handler - Optional user defined [/datum/tgs_http_handler]. */ -/world/proc/TgsNew(datum/tgs_event_handler/event_handler, minimum_required_security_level = TGS_SECURITY_ULTRASAFE) +/world/proc/TgsNew(datum/tgs_event_handler/event_handler, minimum_required_security_level = TGS_SECURITY_ULTRASAFE, datum/tgs_http_handler/http_handler) return /** - * Call this when your initializations are complete and your game is ready to play before any player interactions happen. + * Consumers MUST call this when world initializations are complete and the game is ready to play before any player interactions happen. * * This may use [/world/var/sleep_offline] to make this happen so ensure no changes are made to it while this call is running. * Afterwards, consider explicitly setting it to what you want to avoid this BYOND bug: http://www.byond.com/forum/post/2575184 @@ -170,12 +172,10 @@ /world/proc/TgsInitializationComplete() return -/// Put this at the start of [/world/proc/Topic]. +/// Consumers MUST run this macro at the start of [/world/proc/Topic]. #define TGS_TOPIC var/tgs_topic_return = TgsTopic(args[1]); if(tgs_topic_return) return tgs_topic_return -/** - * Call this as late as possible in [world/proc/Reboot] (BEFORE ..()). - */ +/// Consumers MUST call this as late as possible in [world/proc/Reboot] (BEFORE ..()). /world/proc/TgsReboot() return @@ -269,7 +269,7 @@ /// The [/datum/tgs_chat_channel] the user was from. var/datum/tgs_chat_channel/channel -/// User definable handler for TGS events. +/// User definable handler for TGS events This abstract version SHOULD be overridden to be used. /datum/tgs_event_handler /// If the handler receieves [TGS_EVENT_HEALTH_CHECK] events. var/receive_health_checks = FALSE @@ -283,7 +283,41 @@ set waitfor = FALSE return -/// User definable chat command. +/// User definable handler for HTTP calls. This abstract version MUST be overridden to be used. +/datum/tgs_http_handler + +/** + * User definable callback for executing HTTP GET requests. + * MUST perform BYOND sleeps while the request is in flight. + * MUST return a [/datum/tgs_http_result]. + * SHOULD log its own errors + * + * url - The full URL to execute the GET request for including query parameters. + */ +/datum/tgs_http_handler/proc/PerformGet(url) + CRASH("[type]/PerformGet not implemented!") + +/// Result of a [/datum/tgs_http_handler] call. MUST NOT be overridden. +/datum/tgs_http_result + /// HTTP response as text + var/response_text + /// Boolean request success flag. Set for any 2XX response code. + var/success + +/** + * Create a [/datum/tgs_http_result]. + * + * * response_text - HTTP response as text. Must be provided in New(). + * * success - Boolean request success flag. Set for any 2XX response code. Must be provided in New(). + */ +/datum/tgs_http_result/New(response_text, success) + if(response_text && !istext(response_text)) + CRASH("response_text was not text!") + + src.response_text = response_text + src.success = success + +/// User definable chat command. This abstract version MUST be overridden to be used. /datum/tgs_chat_command /// The string to trigger this command on a chat bot. e.g `@bot name ...` or `!tgs name ...`. var/name = "" @@ -296,29 +330,36 @@ /** * Process command activation. Should return a [/datum/tgs_message_content] to respond to the issuer with. + * MUST be implemented * - * sender - The [/datum/tgs_chat_user] who issued the command. - * params - The trimmed string following the command `/datum/tgs_chat_command/var/name]. + * * sender - The [/datum/tgs_chat_user] who issued the command. + * * params - The trimmed string following the command `/datum/tgs_chat_command/var/name]. */ /datum/tgs_chat_command/proc/Run(datum/tgs_chat_user/sender, params) CRASH("[type] has no implementation for Run()") -/// User definable chat message. +/// User definable chat message. MUST NOT be overridden. /datum/tgs_message_content - /// The tring content of the message. Must be provided in New(). + /// The string content of the message. Must be provided in New(). var/text /// The [/datum/tgs_chat_embed] to embed in the message. Not supported on all chat providers. var/datum/tgs_chat_embed/structure/embed +/** + * Create a [/datum/tgs_message_content]. + * + * * text - The string content of the message. + */ /datum/tgs_message_content/New(text) + ..() if(!istext(text)) TGS_ERROR_LOG("[/datum/tgs_message_content] created with no text!") text = null src.text = text -/// User definable chat embed. Currently mirrors Discord chat embeds. See https://discord.com/developers/docs/resources/channel#embed-object-embed-structure for details. +/// User definable chat embed. Currently mirrors Discord chat embeds. See https://discord.com/developers/docs/resources/message#embed-object for details. /datum/tgs_chat_embed/structure var/title var/description @@ -330,13 +371,13 @@ /// Colour must be #AARRGGBB or #RRGGBB hex string. var/colour - /// See https://discord.com/developers/docs/resources/channel#embed-object-embed-image-structure for details. + /// See https://discord.com/developers/docs/resources/message#embed-object-embed-image-structure for details. var/datum/tgs_chat_embed/media/image - /// See https://discord.com/developers/docs/resources/channel#embed-object-embed-thumbnail-structure for details. + /// See https://discord.com/developers/docs/resources/message#embed-object-embed-thumbnail-structure for details. var/datum/tgs_chat_embed/media/thumbnail - /// See https://discord.com/developers/docs/resources/channel#embed-object-embed-image-structure for details. + /// See https://discord.com/developers/docs/resources/message#embed-object-embed-video-structure for details. var/datum/tgs_chat_embed/media/video var/datum/tgs_chat_embed/footer/footer @@ -345,7 +386,7 @@ var/list/datum/tgs_chat_embed/field/fields -/// Common datum for similar discord embed medias. +/// Common datum for similar Discord embed medias. /datum/tgs_chat_embed/media /// Must be set in New(). var/url @@ -353,48 +394,58 @@ var/height var/proxy_url +/// Create a [/datum/tgs_chat_embed]. /datum/tgs_chat_embed/media/New(url) + ..() if(!istext(url)) CRASH("[/datum/tgs_chat_embed/media] created with no url!") src.url = url -/// See https://discord.com/developers/docs/resources/channel#embed-object-embed-footer-structure for details. +/// See https://discord.com/developers/docs/resources/message#embed-object-embed-footer-structure for details. /datum/tgs_chat_embed/footer /// Must be set in New(). var/text var/icon_url var/proxy_icon_url +/// Create a [/datum/tgs_chat_embed/footer]. /datum/tgs_chat_embed/footer/New(text) + ..() if(!istext(text)) CRASH("[/datum/tgs_chat_embed/footer] created with no text!") src.text = text -/// See https://discord.com/developers/docs/resources/channel#embed-object-embed-provider-structure for details. +/// See https://discord.com/developers/docs/resources/message#embed-object-embed-provider-structure for details. /datum/tgs_chat_embed/provider var/name var/url -/// See https://discord.com/developers/docs/resources/channel#embed-object-embed-author-structure for details. Must have name set in New(). +/// See https://discord.com/developers/docs/resources/message#embed-object-embed-author-structure for details. Must have name set in New(). /datum/tgs_chat_embed/provider/author var/icon_url var/proxy_icon_url +/// Create a [/datum/tgs_chat_embed/footer]. /datum/tgs_chat_embed/provider/author/New(name) + ..() if(!istext(name)) CRASH("[/datum/tgs_chat_embed/provider/author] created with no name!") src.name = name -/// See https://discord.com/developers/docs/resources/channel#embed-object-embed-field-structure for details. Must have name and value set in New(). +/// See https://discord.com/developers/docs/resources/message#embed-object-embed-field-structure for details. /datum/tgs_chat_embed/field + /// Must be set in New(). var/name + /// Must be set in New(). var/value var/is_inline +/// Create a [/datum/tgs_chat_embed/field]. /datum/tgs_chat_embed/field/New(name, value) + ..() if(!istext(name)) CRASH("[/datum/tgs_chat_embed/field] created with no name!") @@ -510,7 +561,7 @@ /* The MIT License -Copyright (c) 2017-2023 Jordan Brown +Copyright (c) 2017-2024 Jordan Brown Permission is hereby granted, free of charge, to any person obtaining a copy of this software and diff --git a/code/__DEFINES/time.dm b/code/__DEFINES/time.dm index 94fc0d5359ac..8348f1d0fe3e 100644 --- a/code/__DEFINES/time.dm +++ b/code/__DEFINES/time.dm @@ -36,7 +36,9 @@ #define FESTIVE_SEASON "Festive Season" #define GARBAGEDAY "Garbage Day" #define MONKEYDAY "Monkey Day" +#define PRIDE_WEEK "Pride Week" #define MOTH_WEEK "Moth Week" +#define IAN_HOLIDAY "Ian's Birthday" /* Days of the week to make it easier to reference them. diff --git a/code/__DEFINES/traits/_traits.dm b/code/__DEFINES/traits/_traits.dm new file mode 100644 index 000000000000..46fef90160aa --- /dev/null +++ b/code/__DEFINES/traits/_traits.dm @@ -0,0 +1,122 @@ +#define SIGNAL_ADDTRAIT(trait_ref) "addtrait [trait_ref]" +#define SIGNAL_REMOVETRAIT(trait_ref) "removetrait [trait_ref]" + +// trait accessor defines +#define ADD_TRAIT(target, trait, source) \ + do { \ + var/list/_L; \ + if (!target._status_traits) { \ + target._status_traits = list(); \ + _L = target._status_traits; \ + _L[trait] = list(source); \ + SEND_SIGNAL(target, SIGNAL_ADDTRAIT(trait), trait); \ + } else { \ + _L = target._status_traits; \ + if (_L[trait]) { \ + _L[trait] |= list(source); \ + } else { \ + _L[trait] = list(source); \ + SEND_SIGNAL(target, SIGNAL_ADDTRAIT(trait), trait); \ + } \ + } \ + } while (0) +#define REMOVE_TRAIT(target, trait, sources) \ + do { \ + var/list/_L = target._status_traits; \ + var/list/_S; \ + if (sources && !islist(sources)) { \ + _S = list(sources); \ + } else { \ + _S = sources\ + }; \ + if (_L?[trait]) { \ + for (var/_T in _L[trait]) { \ + if ((!_S && (_T != ROUNDSTART_TRAIT)) || (_T in _S)) { \ + _L[trait] -= _T \ + } \ + };\ + if (!length(_L[trait])) { \ + _L -= trait; \ + SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(trait), trait); \ + }; \ + if (!length(_L)) { \ + target._status_traits = null \ + }; \ + } \ + } while (0) +#define REMOVE_TRAIT_NOT_FROM(target, trait, sources) \ + do { \ + var/list/_traits_list = target._status_traits; \ + var/list/_sources_list; \ + if (sources && !islist(sources)) { \ + _sources_list = list(sources); \ + } else { \ + _sources_list = sources\ + }; \ + if (_traits_list?[trait]) { \ + for (var/_trait_source in _traits_list[trait]) { \ + if (!(_trait_source in _sources_list)) { \ + _traits_list[trait] -= _trait_source \ + } \ + };\ + if (!length(_traits_list[trait])) { \ + _traits_list -= trait; \ + SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(trait), trait); \ + }; \ + if (!length(_traits_list)) { \ + target._status_traits = null \ + }; \ + } \ + } while (0) +#define REMOVE_TRAITS_NOT_IN(target, sources) \ + do { \ + var/list/_L = target._status_traits; \ + var/list/_S = sources; \ + if (_L) { \ + for (var/_T in _L) { \ + _L[_T] &= _S;\ + if (!length(_L[_T])) { \ + _L -= _T; \ + SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(_T), _T); \ + }; \ + };\ + if (!length(_L)) { \ + target._status_traits = null\ + };\ + }\ + } while (0) + +#define REMOVE_TRAITS_IN(target, sources) \ + do { \ + var/list/_L = target._status_traits; \ + var/list/_S = sources; \ + if (sources && !islist(sources)) { \ + _S = list(sources); \ + } else { \ + _S = sources\ + }; \ + if (_L) { \ + for (var/_T in _L) { \ + _L[_T] -= _S;\ + if (!length(_L[_T])) { \ + _L -= _T; \ + SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(_T)); \ + }; \ + };\ + if (!length(_L)) { \ + target._status_traits = null\ + };\ + }\ + } while (0) + +#define HAS_TRAIT(target, trait) (target._status_traits?[trait] ? TRUE : FALSE) +#define HAS_TRAIT_FROM(target, trait, source) (HAS_TRAIT(target, trait) && (source in target._status_traits[trait])) +#define HAS_TRAIT_FROM_ONLY(target, trait, source) (HAS_TRAIT(target, trait) && (source in target._status_traits[trait]) && (length(target._status_traits[trait]) == 1)) +#define HAS_TRAIT_NOT_FROM(target, trait, source) (HAS_TRAIT(target, trait) && (length(target._status_traits[trait] - source) > 0)) +/// Returns a list of trait sources for this trait. Only useful for wacko cases and internal futzing +/// You should not be using this +#define GET_TRAIT_SOURCES(target, trait) (target._status_traits?[trait] || list()) +/// Returns the amount of sources for a trait. useful if you don't want to have a "thing counter" stuck around all the time +#define COUNT_TRAIT_SOURCES(target, trait) length(GET_TRAIT_SOURCES(target, trait)) +/// A simple helper for checking traits in a mob's mind +#define HAS_MIND_TRAIT(target, trait) (HAS_TRAIT(target, trait) || (target.mind ? HAS_TRAIT(target.mind, trait) : FALSE)) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits/declarations.dm similarity index 67% rename from code/__DEFINES/traits.dm rename to code/__DEFINES/traits/declarations.dm index 7ee56e1c372d..281c2ba5f246 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -1,125 +1,7 @@ -#define SIGNAL_ADDTRAIT(trait_ref) "addtrait [trait_ref]" -#define SIGNAL_REMOVETRAIT(trait_ref) "removetrait [trait_ref]" - -// trait accessor defines -#define ADD_TRAIT(target, trait, source) \ - do { \ - var/list/_L; \ - if (!target._status_traits) { \ - target._status_traits = list(); \ - _L = target._status_traits; \ - _L[trait] = list(source); \ - SEND_SIGNAL(target, SIGNAL_ADDTRAIT(trait), trait); \ - } else { \ - _L = target._status_traits; \ - if (_L[trait]) { \ - _L[trait] |= list(source); \ - } else { \ - _L[trait] = list(source); \ - SEND_SIGNAL(target, SIGNAL_ADDTRAIT(trait), trait); \ - } \ - } \ - } while (0) -#define REMOVE_TRAIT(target, trait, sources) \ - do { \ - var/list/_L = target._status_traits; \ - var/list/_S; \ - if (sources && !islist(sources)) { \ - _S = list(sources); \ - } else { \ - _S = sources\ - }; \ - if (_L?[trait]) { \ - for (var/_T in _L[trait]) { \ - if ((!_S && (_T != ROUNDSTART_TRAIT)) || (_T in _S)) { \ - _L[trait] -= _T \ - } \ - };\ - if (!length(_L[trait])) { \ - _L -= trait; \ - SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(trait), trait); \ - }; \ - if (!length(_L)) { \ - target._status_traits = null \ - }; \ - } \ - } while (0) -#define REMOVE_TRAIT_NOT_FROM(target, trait, sources) \ - do { \ - var/list/_traits_list = target._status_traits; \ - var/list/_sources_list; \ - if (sources && !islist(sources)) { \ - _sources_list = list(sources); \ - } else { \ - _sources_list = sources\ - }; \ - if (_traits_list?[trait]) { \ - for (var/_trait_source in _traits_list[trait]) { \ - if (!(_trait_source in _sources_list)) { \ - _traits_list[trait] -= _trait_source \ - } \ - };\ - if (!length(_traits_list[trait])) { \ - _traits_list -= trait; \ - SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(trait), trait); \ - }; \ - if (!length(_traits_list)) { \ - target._status_traits = null \ - }; \ - } \ - } while (0) -#define REMOVE_TRAITS_NOT_IN(target, sources) \ - do { \ - var/list/_L = target._status_traits; \ - var/list/_S = sources; \ - if (_L) { \ - for (var/_T in _L) { \ - _L[_T] &= _S;\ - if (!length(_L[_T])) { \ - _L -= _T; \ - SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(_T), _T); \ - }; \ - };\ - if (!length(_L)) { \ - target._status_traits = null\ - };\ - }\ - } while (0) - -#define REMOVE_TRAITS_IN(target, sources) \ - do { \ - var/list/_L = target._status_traits; \ - var/list/_S = sources; \ - if (sources && !islist(sources)) { \ - _S = list(sources); \ - } else { \ - _S = sources\ - }; \ - if (_L) { \ - for (var/_T in _L) { \ - _L[_T] -= _S;\ - if (!length(_L[_T])) { \ - _L -= _T; \ - SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(_T)); \ - }; \ - };\ - if (!length(_L)) { \ - target._status_traits = null\ - };\ - }\ - } while (0) - -#define HAS_TRAIT(target, trait) (target?._status_traits?[trait] ? TRUE : FALSE) -#define HAS_TRAIT_FROM(target, trait, source) (HAS_TRAIT(target, trait) && (source in target?._status_traits[trait])) -#define HAS_TRAIT_FROM_ONLY(target, trait, source) (HAS_TRAIT(target, trait) && (source in target._status_traits[trait]) && (length(target._status_traits[trait]) == 1)) -#define HAS_TRAIT_NOT_FROM(target, trait, source) (HAS_TRAIT(target, trait) && (length(target._status_traits[trait] - source) > 0)) -/// Returns a list of trait sources for this trait. Only useful for wacko cases and internal futzing -/// You should not be using this -#define GET_TRAIT_SOURCES(target, trait) target?._status_traits?[trait] || list() -/// Returns the amount of sources for a trait. useful if you don't want to have a "thing counter" stuck around all the time -#define COUNT_TRAIT_SOURCES(target, trait) length(GET_TRAIT_SOURCES(target, trait)) -/// A simple helper for checking traits in a mob's mind -#define HAS_MIND_TRAIT(target, trait) (HAS_TRAIT(target, trait) || HAS_TRAIT(target?.mind, trait)) +// This file contains all of the "static" define strings that tie to a trait. +// WARNING: The sections here actually matter in this file as it's tested by CI. Please do not toy with the sections." + +// BEGIN TRAIT DEFINES /* Remember to update _globalvars/traits.dm if you're adding/removing/renaming traits. @@ -132,8 +14,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_IMMOBILIZED "immobilized" /// Prevents voluntary standing or staying up on its own. #define TRAIT_FLOORED "floored" -///Slows the user, with additional effects based on the source. -#define TRAIT_DISORIENTED "disoriented" /// Forces user to stay standing #define TRAIT_FORCED_STANDING "forcedstanding" /// Prevents usage of manipulation appendages (picking, holding or using items, manipulating storage). @@ -150,13 +30,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_EXPANDED_FOV "expanded_fov" /// Doesn't miss attacks #define TRAIT_PERFECT_ATTACKER "perfect_attacker" +///Recolored by item/greentext +/* #define TRAIT_GREENTEXT_CURSED "greentext_curse" */ #define TRAIT_INCAPACITATED "incapacitated" -///User's stamina is over the STAMINA_EXHAUSTION_THRESHOLD -#define TRAIT_EXHAUSTED "exhausted" -///User is sprinting, full speed ahead -#define TRAIT_SPRINTING "sprinting" -///User cannot sprint -#define TRAIT_NO_SPRINT "no_sprint" /// In some kind of critical condition. Is able to succumb. #define TRAIT_CRITICAL_CONDITION "critical-condition" /// Whitelist for mobs that can read or write @@ -185,13 +61,19 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// means that you can't use weapons with normal trigger guards. #define TRAIT_CHUNKYFINGERS "chunkyfingers" #define TRAIT_CHUNKYFINGERS_IGNORE_BATON "chunkyfingers_ignore_baton" +/// Allows you to mine with your bare hands +/* #define TRAIT_FIST_MINING "fist_mining" */ #define TRAIT_DUMB "dumb" /// Whether a mob is dexterous enough to use machines and certain items or not. #define TRAIT_ADVANCEDTOOLUSER "advancedtooluser" // Antagonizes the above. #define TRAIT_DISCOORDINATED_TOOL_USER "discoordinated_tool_user" #define TRAIT_PACIFISM "pacifism" +// Trait added to the user of a hippocratic oath status effect +/* #define TRAIT_HIPPOCRATIC_OATH "hippocratic_oath" */ +/// Makes it so the mob ignores all slowdown. #define TRAIT_IGNORESLOWDOWN "ignoreslow" +/// Makes it so the mob ignores slowdown from damage. #define TRAIT_IGNOREDAMAGESLOWDOWN "ignoredamageslowdown" /// Makes it so the mob can use guns regardless of tool user status #define TRAIT_GUN_NATURAL "gunnatural" @@ -215,9 +97,11 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_STUNIMMUNE "stun_immunity" #define TRAIT_BATON_RESISTANCE "baton_resistance" /// Anti Dual-baton cooldown bypass exploit. -#define TRAIT_IWASBATONED "iwasbatoned" +/* #define TRAIT_IWASBATONED "iwasbatoned" */ #define TRAIT_SLEEPIMMUNE "sleep_immunity" #define TRAIT_PUSHIMMUNE "push_immunity" +/// can't be kicked to the side +/* #define TRAIT_NO_SIDE_KICK "no_side_kick" */ /// Are we immune to shocks? #define TRAIT_SHOCKIMMUNE "shock_immunity" /// Are we immune to specifically tesla / SM shocks? @@ -240,30 +124,62 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_RESISTLOWPRESSURE "resist_low_pressure" /// This human is immune to the effects of being exploded. (ex_act) #define TRAIT_BOMBIMMUNE "bomb_immunity" -#define TRAIT_RADIMMUNE "rad_immunity" -#define TRAIT_GENELESS "geneless" +/// This mob won't get gibbed by nukes going off +#define TRAIT_NUKEIMMUNE "nuke_immunity" +/// Can't be given viruses #define TRAIT_VIRUSIMMUNE "virus_immunity" +/// Won't become a husk under any circumstances +/* #define TRAIT_UNHUSKABLE "trait_unhuskable" */ +/// Reduces the chance viruses will spread to this mob, and if the mob has a virus, slows its advancement +#define TRAIT_VIRUS_RESISTANCE "virus_resistance" +#define TRAIT_GENELESS "geneless" #define TRAIT_PIERCEIMMUNE "pierce_immunity" #define TRAIT_NODISMEMBER "dismember_immunity" +/// This carbon doesn't show an overlay when they have no brain +#define TRAIT_NO_DEBRAIN_OVERLAY "no_debrain_overlay" #define TRAIT_NOFIRE "nonflammable" #define TRAIT_NOFIRE_SPREAD "no_fire_spreading" /// Prevents plasmamen from self-igniting if only their helmet is missing #define TRAIT_NOSELFIGNITION_HEAD_ONLY "no_selfignition_head_only" #define TRAIT_NOGUNS "no_guns" -///This carbon doesn't get hungry +///Can toss a guns like a badass, causing additional damage/effect to their enemies +/* #define TRAIT_TOSS_GUN_HARD "toss_gun_hard" */ +/// Species with this trait are genderless +#define TRAIT_AGENDER "agender" +/// Species with this trait have a blood clan mechanic +/* #define TRAIT_BLOOD_CLANS "blood_clans" */ +/// Species with this trait use skin tones for coloration +#define TRAIT_USES_SKINTONES "uses_skintones" +/// Species with this trait use mutant colors for coloration +#define TRAIT_MUTANT_COLORS "mutcolors" +/// Species with this trait have mutant colors that cannot be chosen by the player, nor altered ingame by external means +#define TRAIT_FIXED_MUTANT_COLORS "fixed_mutcolors" +/// Humans with this trait won't get bloody hands, nor bloody feet +/* #define TRAIT_NO_BLOOD_OVERLAY "no_blood_overlay" */ +/// Humans with this trait cannot have underwear +#define TRAIT_NO_UNDERWEAR "no_underwear" +/// This carbon doesn't show an overlay when they have no brain +/* #define TRAIT_NO_DEBRAIN_OVERLAY "no_debrain_overlay" */ +/// Humans with this trait cannot get augmentation surgery +#define TRAIT_NO_AUGMENTS "no_augments" +/// This carbon doesn't get hungry #define TRAIT_NOHUNGER "no_hunger" -///This carbon doesn't bleed -#define TRAIT_NOBLOOD "noblood" +/// This carbon doesn't metabolize reagents. #define TRAIT_NOMETABOLISM "no_metabolism" -// Use when you want a mob to be able to metabolize plasma temporarily (e.g. plasma fixation disease symptom) +/// This carbon doesn't bleed +#define TRAIT_NOBLOOD "noblood" /// This just means that the carbon will always have functional liverless metabolism #define TRAIT_LIVERLESS_METABOLISM "liverless_metabolism" +/// This carbon can't be overdosed by chems +/* #define TRAIT_OVERDOSEIMMUNE "overdose_immune" */ /// Humans with this trait cannot be turned into zombies #define TRAIT_NO_ZOMBIFY "no_zombify" /// Carbons with this trait can't have their DNA copied by diseases nor changelings #define TRAIT_NO_DNA_COPY "no_dna_copy" +/// Carbons with this trait cant have their dna scrambled by genetics or a disease retrovirus. +/* #define TRAIT_NO_DNA_SCRAMBLE "no_dna_scramble" */ /// Carbons with this trait can eat blood to regenerate their own blood volume, instead of injecting it -#define TRAIT_DRINKS_BLOOD "drinks_blood" +/* #define TRAIT_DRINKS_BLOOD "drinks_blood" */ /// Mob is immune to clone (cellular) damage #define TRAIT_NOCLONELOSS "no_cloneloss" /// Mob is immune to toxin damage @@ -280,17 +196,21 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_EASILY_WOUNDED "easy_limb_wound" #define TRAIT_HARDLY_WOUNDED "hard_limb_wound" #define TRAIT_NEVER_WOUNDED "never_wounded" +/// Species with this trait have 50% extra chance of bleeding from piercing and slashing wounds +/* #define TRAIT_EASYBLEED "easybleed" */ #define TRAIT_TOXINLOVER "toxinlover" /// Doesn't get overlays from being in critical. #define TRAIT_NOCRITOVERLAY "no_crit_overlay" -/// Gets a mood boost from being in the hideout. -#define TRAIT_VAL_CORRIN_MEMBER "val_corrin_member" /// reduces the use time of syringes, pills, patches and medigels but only when using on someone #define TRAIT_FASTMED "fast_med_use" -#define TRAIT_ANTIMAGIC "anti_magic" +/// The mob is holy and resistance to cult magic #define TRAIT_HOLY "holy" +/// This mob is antimagic, and immune to spells / cannot cast spells +#define TRAIT_ANTIMAGIC "anti_magic" /// This allows a person who has antimagic to cast spells without getting blocked #define TRAIT_ANTIMAGIC_NO_SELFBLOCK "anti_magic_no_selfblock" +/// This mob recently blocked magic with some form of antimagic +/* #define TRAIT_RECENTLY_BLOCKED_MAGIC "recently_blocked_magic" */ /// The user can do things like use magic staffs without penalty #define TRAIT_MAGICALLY_GIFTED "magically_gifted" /// This object innately spawns with fantasy variables already applied (the magical component is given to it on initialize), and thus we never want to give it the component again. @@ -299,8 +219,38 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_BLOOD_DEFICIENCY "blood_deficiency" #define TRAIT_JOLLY "jolly" #define TRAIT_NOCRITDAMAGE "no_crit" +/// Prevents shovies and some strong blows such as unarmed punches and (unreliably) tackles the owner down +/* #define TRAIT_BRAWLING_KNOCKDOWN_BLOCKED "brawling_knockdown_blocked" */ +/// Applies tackling defense bonus to any mob that has it +/* #define TRAIT_OFF_BALANCE_TACKLER "off_balance_tackler" */ +/// Prevents some severe head injuries being sustained from heavy collisions or blunt force injuries. +/* #define TRAIT_HEAD_INJURY_BLOCKED "head_injury_blocked" */ +/// Prevents staggering. +/* #define TRAIT_NO_STAGGER "no_stagger" */ +/// Getting hit by thrown movables won't push you away +/* #define TRAIT_NO_THROW_HITPUSH "no_throw_hitpush" */ ///Added to mob or mind, changes the icons of the fish shown in the minigame UI depending on the possible reward. #define TRAIT_REVEAL_FISH "reveal_fish" +///This trait gets you a list of fishes that can be caught when examining a fishing spot. +/* #define TRAIT_EXAMINE_FISHING_SPOT "examine_fishing_spot" */ +///lobstrosities and carps will prioritize/flee from those that have this trait (given by the skill-locked hat) +/* #define TRAIT_SCARY_FISHERMAN "scary_fisherman" */ +///Trait given to turfs or objects that can be fished from +/* #define TRAIT_FISHING_SPOT "fishing_spot" */ +///Trait given to mobs that can fish without a rod +/* #define TRAIT_PROFOUND_FISHER "profound_fisher" */ +/// This trait lets you evaluate someone's fitness level against your own +/* #define TRAIT_EXAMINE_FITNESS "reveal_power_level" */ +/// These mobs have particularly hygienic tongues +/* #define TRAIT_WOUND_LICKER "wound_licker" */ +/// Mobs with this trait are allowed to use silicon emotes +/* #define TRAIT_SILICON_EMOTES_ALLOWED "silicon_emotes_allowed" */ + +/// This trait designate that the mob was originally a monkey +/* #define TRAIT_BORN_MONKEY "born_as_a_monkey" */ + +/// Added to a mob, allows that mob to experience flavour-based moodlets when examining food +/* #define TRAIT_REMOTE_TASTING "remote_tasting" */ /// Stops the mob from slipping on water, or banana peels, or pretty much anything that doesn't have [GALOSHES_DONT_HELP] set #define TRAIT_NO_SLIP_WATER "noslip_water" @@ -315,11 +265,18 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Unlinks gliding from movement speed, meaning that there will be a delay between movements rather than a single move movement between tiles #define TRAIT_NO_GLIDE "no_glide" +/// Applied into wounds when they're scanned with the wound analyzer, halves time to treat them manually. +#define TRAIT_WOUND_SCANNED "wound_scanned" + #define TRAIT_NODEATH "nodeath" #define TRAIT_NOHARDCRIT "nohardcrit" #define TRAIT_NOSOFTCRIT "nosoftcrit" +/// Makes someone show up as mindshielded on sechuds. Does NOT actually make them unconvertable - See TRAIT_UNCONVERTABLE for that #define TRAIT_MINDSHIELD "mindshield" +/// Makes it impossible for someone to be converted by cult/revs/etc. +#define TRAIT_UNCONVERTABLE "unconvertable" #define TRAIT_DISSECTED "dissected" +/* #define TRAIT_SURGICALLY_ANALYZED "surgically_analyzed" */ /// Lets the user succumb even if they got NODEATH #define TRAIT_SUCCUMB_OVERRIDE "succumb_override" /// Can hear observers @@ -350,10 +307,15 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NEGATES_GRAVITY "negates_gravity" /// We are ignoring gravity #define TRAIT_IGNORING_GRAVITY "ignores_gravity" -/// Sources for TRAIT_IGNORING_GRAVITY -#define IGNORING_GRAVITY_NEGATION "ignoring_gravity_negation" /// We have some form of forced gravity acting on us #define TRAIT_FORCED_GRAVITY "forced_gravity" +/// Makes whispers clearly heard from seven tiles away, the full hearing range +/* #define TRAIT_GOOD_HEARING "good_hearing" */ +/// Allows you to hear speech through walls +/* #define TRAIT_XRAY_HEARING "xray_hearing" */ + +/// This mob can not enter or move on a shuttle +/* #define TRAIT_BLOCK_SHUTTLE_MOVEMENT "block_shuttle_movement" */ /// Lets us scan reagents #define TRAIT_REAGENT_SCANNER "reagent_scanner" @@ -367,11 +329,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SPINNING_WEB_TURF "spinning_web_turf" #define TRAIT_ABDUCTOR_TRAINING "abductor-training" #define TRAIT_ABDUCTOR_SCIENTIST_TRAINING "abductor-scientist-training" -//#define TRAIT_SURGEON "surgeon" // monke edit: replace with TRAIT_ALL_SURGERIES and TRAIT_PERFECT_SURGEON +/* #define TRAIT_SURGEON "surgeon" */ #define TRAIT_STRONG_GRABBER "strong_grabber" #define TRAIT_SOOTHED_THROAT "soothed-throat" #define TRAIT_BOOZE_SLIDER "booze-slider" -#define TRAIT_MONKEYFRIEND "monkeyfriend" /// We place people into a fireman carry quicker than standard #define TRAIT_QUICK_CARRY "quick-carry" /// We place people into a fireman carry especially quickly compared to quick_carry @@ -388,9 +349,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SECURITY_HUD "sec_hud" /// for something granting you a diagnostic hud #define TRAIT_DIAGNOSTIC_HUD "diag_hud" +/* #define TRAIT_BOT_PATH_HUD "bot_path_hud" */ /// Is a medbot healing you -#define TRAIT_MEDIBOTCOMINGTHROUGH "medbot" +/* #define TRAIT_MEDIBOTCOMINGTHROUGH "medbot" */ #define TRAIT_PASSTABLE "passtable" +/// Lets you fly through windows +/* #define TRAIT_PASSWINDOW "passwindow" */ /// Makes you immune to flashes #define TRAIT_NOFLASH "noflash" /// prevents xeno huggies implanting skeletons @@ -404,6 +368,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_GUNFLIP "gunflip" /// Increases chance of getting special traumas, makes them harder to cure #define TRAIT_SPECIAL_TRAUMA_BOOST "special_trauma_boost" +/// Doubles the duration and cooldown of a flip +/* #define TRAIT_SLOW_FLIP "slow_flip" */ #define TRAIT_SPACEWALK "spacewalk" /// Sanity trait to keep track of when we're in hyperspace and add the appropriate element if we werent #define TRAIT_HYPERSPACED "hyperspaced" @@ -415,10 +381,14 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_DEL_ON_SPACE_DUMP "del_on_hyperspace_leave" /// We can walk up or around cliffs, or at least we don't fall off of it #define TRAIT_CLIFF_WALKER "cliff_walker" +/// This means the user is currently holding/wearing a "tactical camouflage" item (like a potted plant). +/* #define TRAIT_TACTICALLY_CAMOUFLAGED "tactically_camouflaged" */ /// Gets double arcade prizes #define TRAIT_GAMERGOD "gamer-god" #define TRAIT_GIANT "giant" #define TRAIT_DWARF "dwarf" +/// Makes you way too tall. Like just too much, dude, it's kind of creepy. Humanoid only. +/* #define TRAIT_TOO_TALL "too_tall" */ /// makes your footsteps completely silent #define TRAIT_SILENT_FOOTSTEPS "silent_footsteps" /// hnnnnnnnggggg..... you're pretty good.... @@ -431,8 +401,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NO_EXTINGUISH "no_extinguish" /// Indicates if the mob is currently speaking with sign language #define TRAIT_SIGN_LANG "sign_language" -/// The mob's nanites are sending a monitoring signal visible on diag HUD -#define TRAIT_NANITE_MONITORING "nanite_monitoring" +/// Trait given to mobs to indicate that they can catch papers thrown at them midair without trying, +/// and make syndicate airplanes when folding paper up. +/* #define TRAIT_PAPER_MASTER "paper_master" */ /// This mob is able to use sign language over the radio. #define TRAIT_CAN_SIGN_ON_COMMS "can_sign_on_comms" /// nobody can use martial arts on this mob @@ -453,10 +424,14 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_COAGULATING "coagulating" /// From anti-convulsant medication against seizures. #define TRAIT_ANTICONVULSANT "anticonvulsant" +/// From stimulant reagents, this affects whether the all-nighter lack of sleep penalty should be countered +/* #define TRAIT_STIMULATED "stimulated" */ /// The holder of this trait has antennae or whatever that hurt a ton when noogied #define TRAIT_ANTENNAE "antennae" /// Blowing kisses actually does damage to the victim #define TRAIT_KISS_OF_DEATH "kiss_of_death" +/// Syndie kisses can apply burn damage +/* #define TRAIT_SYNDIE_KISS "syndie_kiss" */ /// Used to activate french kissing #define TRAIT_GARLIC_BREATH "kiss_of_garlic_death" /// Addictions don't tick down, basically they're permanently addicted @@ -499,6 +474,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai // Being close enough to the supermatter makes it heal at higher temperatures // and emit less heat. Present on /mob or /datum/mind #define TRAIT_SUPERMATTER_SOOTHER "supermatter_soother" +/// Mob has fov applied to it +/* #define TRAIT_FOV_APPLIED "fov_applied" */ +/// Mob is using the scope component +/* #define TRAIT_USER_SCOPED "user_scoped" */ +/// Mob is unable to feel pain +#define TRAIT_ANALGESIA "analgesia" /// Trait added when a revenant is visible. #define TRAIT_REVENANT_REVEALED "revenant_revealed" @@ -509,9 +490,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NOFAT "cant_get_fat" /// Trait which allows you to eat rocks -#define TRAIT_ROCK_EATER "rock_eater" +/* #define TRAIT_ROCK_EATER "rock_eater" */ /// Trait which allows you to gain bonuses from consuming rocks -#define TRAIT_ROCK_METAMORPHIC "rock_metamorphic" +/* #define TRAIT_ROCK_METAMORPHIC "rock_metamorphic" */ /// `do_teleport` will not allow this atom to teleport #define TRAIT_NO_TELEPORT "no-teleport" @@ -522,6 +503,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Trait used by fugu glands to avoid double buffing #define TRAIT_FUGU_GLANDED "fugu_glanded" +/// Trait that tracks if something has been renamed. Typically holds a REF() to the object itself (AKA src) for wide addition/removal. +/* #define TRAIT_WAS_RENAMED "was_renamed" */ + /// When someone with this trait fires a ranged weapon, their fire delays and click cooldowns are halved #define TRAIT_DOUBLE_TAP "double_tap" @@ -549,15 +533,65 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// If applied to a mob, nearby dogs will have a small chance to nonharmfully harass said mob #define TRAIT_HATED_BY_DOGS "hated_by_dogs" +/// Mobs with this trait will not be immobilized when held up +/* #define TRAIT_NOFEAR_HOLDUPS "no_fear_holdup" */ +/// Mob has gotten an armor buff from adamantine extract +/* #define TRAIT_ADAMANTINE_EXTRACT_ARMOR "adamantine_extract_armor" */ +/// Mobs with this trait won't be able to dual wield guns. +/* #define TRAIT_NO_GUN_AKIMBO "no_gun_akimbo" */ +/// Mobs with this trait cannot be hit by projectiles, meaning the projectiles will just go through. +/* #define TRAIT_UNHITTABLE_BY_PROJECTILES "unhittable_by_projectiles" */ -/// Mob is unable to feel pain -#define TRAIT_ANALGESIA "analgesia" +/// Projectile with this trait will always hit the defined zone of a struck living mob. +/* #define TRAIT_ALWAYS_HIT_ZONE "always_hit_zone" */ + +/// Mobs with this trait do care about a few grisly things, such as digging up graves. They also really do not like bringing people back to life or tending wounds, but love autopsies and amputations. +#define TRAIT_MORBID "morbid" + +/// Whether or not the user is in a MODlink call, prevents making more calls +/* #define TRAIT_IN_CALL "in_call" */ /// Is the mob standing on an elevated surface? This prevents them from dropping down if not elevated first. #define TRAIT_ON_ELEVATED_SURFACE "on_elevated_surface" -/// Does the mob ignore elevation? (e.g. xeno larvas & cortical borers on hiding) +/// Does the mob ignore elevation? (e.g. xeno larvas on hiding) #define TRAIT_IGNORE_ELEVATION "ignore_elevation" +/// Prevents you from twohanding weapons. +/* #define TRAIT_NO_TWOHANDING "no_twohanding" */ + +/// Improves boxing damage against boxers and athletics experience gain +/* #define TRAIT_STRENGTH "strength" */ + +/// Increases the duration of having exercised +/* #define TRAIT_STIMMED "stimmed" */ + +/// Indicates that the target is able to be boxed at a boxer's full power. +/* #define TRAIT_BOXING_READY "boxing_ready" */ + +/// Halves the time of tying a tie. +/* #define TRAIT_FAST_TYING "fast_tying" */ + +/// Sells for more money on the pirate bounty pad. +/* #define TRAIT_HIGH_VALUE_RANSOM "high_value_ransom" */ + +/// Makes the user handcuff others faster +/* #define TRAIT_FAST_CUFFING "fast_cuffing" */ + +///Given by /obj/item/virgin_mary, mobs that used this can no longer use it again ever +/* #define TRAIT_MAFIAINITIATE "mafiainitiate" */ + +/// Our mob has the mind reading genetic mutation. +/* #define TRAIT_MIND_READER "mind reader" */ + +///Makes the player appear as their respective job in Binary Talk rather than being a 'Default Cyborg'. +/* #define TRAIT_DISPLAY_JOB_IN_BINARY "display job in binary" */ + +/// Trait that determines vulnerability to being stunned from a shove +/* #define TRAIT_STUN_ON_NEXT_SHOVE "stun on next shove" */ + +/// Trait that determines whether our mob gains more strength from drinking during a fist fight +/* #define TRAIT_DRUNKEN_BRAWLER "drunken brawler" */ + // METABOLISMS // Various jobs on the station have historically had better reactions // to various drinks and foodstuffs. Security liking donuts is a classic @@ -573,6 +607,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_ROYAL_METABOLISM "royal_metabolism" #define TRAIT_PRETENDER_ROYAL_METABOLISM "pretender_royal_metabolism" #define TRAIT_BALLMER_SCIENTIST "ballmer_scientist" +#define TRAIT_MAINTENANCE_METABOLISM "maintenance_metabolism" +/* #define TRAIT_CORONER_METABOLISM "coroner_metabolism" */ +/* #define TRAIT_HUMAN_AI_METABOLISM "human_ai_metabolism" */ //LUNG TRAITS /// Lungs always breathe normally when in vacuum/space. @@ -599,7 +636,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_WINE_TASTER "wine_taster" #define TRAIT_BONSAI "bonsai" #define TRAIT_LIGHTBULB_REMOVER "lightbulb_remover" -#define TRAIT_KNOW_CYBORG_WIRES "know_cyborg_wires" +#define TRAIT_KNOW_ROBO_WIRES "know_cyborg_wires" #define TRAIT_KNOW_ENGI_WIRES "know_engi_wires" #define TRAIT_ENTRAILS_READER "entrails_reader" #define TRAIT_SABRAGE_PRO "sabrage_pro" @@ -607,16 +644,24 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_BRAINWASHING "brainwashing" /// Allows chef's to chefs kiss their food, to make them with love #define TRAIT_CHEF_KISS "chefs_kiss" +/// Allows clowns to bend balloons into animals +/* #define TRAIT_BALLOON_SUTRA "balloon_sutra" */ +/// Allows detectives to identify chemicals by taste +/* #define TRAIT_DETECTIVES_TASTE "detectives_taste" */ ///Movement type traits for movables. See elements/movetype_handler.dm -#define TRAIT_MOVE_GROUND "move_ground" +/* #define TRAIT_MOVE_GROUND "move_ground" */ #define TRAIT_MOVE_FLYING "move_flying" #define TRAIT_MOVE_VENTCRAWLING "move_ventcrawling" #define TRAIT_MOVE_FLOATING "move_floating" -#define TRAIT_MOVE_PHASING "move_phasing" +/* #define TRAIT_MOVE_PHASING "move_phasing" */ +/*#define TRAIT_MOVE_UPSIDE_DOWN "move_upside_down*/ /// Disables the floating animation. See above. #define TRAIT_NO_FLOATING_ANIM "no-floating-animation" +/// Cannot be turned into a funny skeleton by the plasma river +/* #define TRAIT_NO_PLASMA_TRANSFORM "no_plasma_transform" */ + /// Weather immunities, also protect mobs inside them. #define TRAIT_LAVA_IMMUNE "lava_immune" //Used by lava turfs and The Floor Is Lava. #define TRAIT_ASHSTORM_IMMUNE "ashstorm_immune" @@ -640,12 +685,20 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// This movable atom has the explosive block element #define TRAIT_BLOCKING_EXPLOSIVES "blocking_explosives" +/// This turf contains something using split visiblity +/* #define TRAIT_CONTAINS_SPLITVIS "contains_splitvis" */ + ///Lava will be safe to cross while it has this trait. #define TRAIT_LAVA_STOPPED "lava_stopped" ///Chasms will be safe to cross while they've this trait. #define TRAIT_CHASM_STOPPED "chasm_stopped" +///Chasms will be safe to cross if there is something with this trait on it +/* #define TRAIT_CHASM_STOPPER "chasm_stopper" */ +///The effects of the immerse element will be halted while this trait is present. +/* #define TRAIT_IMMERSE_STOPPED "immerse_stopped" */ /// The effects of hyperspace drift are blocked when the tile has this trait #define TRAIT_HYPERSPACE_STOPPED "hyperspace_stopped" + ///Turf slowdown will be ignored when this trait is added to a turf. #define TRAIT_TURF_IGNORE_SLOWDOWN "turf_ignore_slowdown" ///Mobs won't slip on a wet turf while it has this trait @@ -670,6 +723,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Used by the honkspam element to avoid spamming the sound. Amusing considering its name. #define TRAIT_HONKSPAMMING "trait_honkspamming" +/// Required by the waddling element since there are multiple sources of it. +/* #define TRAIT_WADDLING "trait_waddling" */ +/// Required by the on_hit_effect element, which is in turn added by other elements. +/* #define TRAIT_ON_HIT_EFFECT "trait_on_hit_effect" */ ///Used for managing KEEP_TOGETHER in [/atom/var/appearance_flags] #define TRAIT_KEEP_TOGETHER "keep-together" @@ -680,8 +737,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai // cargo traits ///If the item will block the cargo shuttle from flying to centcom #define TRAIT_BANNED_FROM_CARGO_SHUTTLE "banned_from_cargo_shuttle" -///If the item's contents are immune to the missing item manifest error +///If the crate's contents are immune to the missing item manifest error #define TRAIT_NO_MISSING_ITEM_ERROR "no_missing_item_error" +///If the crate is immune to the wrong content in manifest error +/* #define TRAIT_NO_MANIFEST_CONTENTS_ERROR "no_manifest_contents_error" */ ///SSeconomy trait, if the market is crashing and people can't withdraw credits from ID cards. #define TRAIT_MARKET_CRASHING "market_crashing" @@ -715,7 +774,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_GOOD_QUALITY_BAIT "good_quality_bait" #define TRAIT_GREAT_QUALITY_BAIT "great_quality_bait" /// Baits with this trait will ignore bait preferences and related fish traits. -#define OMNI_BAIT_TRAIT "omni_bait" +#define TRAIT_OMNI_BAIT "omni_bait" +/// The bait won't be consumed when used +/* #define TRAIT_BAIT_UNCONSUMABLE "bait_unconsumabe" */ /// Plants that were mutated as a result of passive instability, not a mutation threshold. #define TRAIT_PLANT_WILDMUTATE "wildmutation" /// If you hit an APC with exposed internals with this item it will try to shock you @@ -742,9 +803,13 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_DANGEROUS_OBJECT "dangerous_object" /// determines whether or not objects are haunted and teleport/attack randomly #define TRAIT_HAUNTED "haunted" +/// An item that, if it has contents, will ignore its contents when scanning for contraband. +/* #define TRAIT_CONTRABAND_BLOCKER "contraband_blocker" */ //quirk traits #define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance" +/* #define TRAIT_ANOSMIA "anosmia" */ +/* #define TRAIT_HEAVY_DRINKER "heavy_drinker" */ #define TRAIT_AGEUSIA "ageusia" #define TRAIT_HEAVY_SLEEPER "heavy_sleeper" #define TRAIT_NIGHT_VISION "night_vision" @@ -753,7 +818,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_CLOWN_ENJOYER "clown_enjoyer" #define TRAIT_MIME_FAN "mime_fan" #define TRAIT_VORACIOUS "voracious" -#define TRAIT_GOURMAND "gourmand" #define TRAIT_SELF_AWARE "self_aware" #define TRAIT_FREERUNNING "freerunning" #define TRAIT_SKITTISH "skittish" @@ -776,21 +840,18 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SMOKER "smoker" #define TRAIT_POSTERBOY "poster_boy" #define TRAIT_THROWINGARM "throwing_arm" +#define TRAIT_SETTLER "settler" +/* #define TRAIT_STRONG_STOMACH "strong_stomach" */ + +/// This mob always lands on their feet when they fall, for better or for worse. +/* #define TRAIT_CATLIKE_GRACE "catlike_grace" */ ///if the atom has a sticker attached to it #define TRAIT_STICKERED "stickered" -#define TRAIT_JAILBIRD "jailbird" -#define TRAIT_STOWAWAY "stowaway" -#define TRAIT_LOUD_ASS "loud_ass" -#define TRAIT_UNSTABLE_ASS "unstable_ass" -#define TRAIT_STABLE_ASS "stable_ass" -#define TRAIT_KLEPTOMANIAC "kleptomaniac" -#define TRAIT_ANIME "anime" -#define TRAIT_CAT "cat" -#define TRAIT_HIDDEN_IMAGE "generic-hidden-image" -#define TRAIT_HIDDEN_CLOWN "clown_disbelief" -#define TRAIT_MINING_CALLOUTS "miner_callouts" +// Debug traits +/// This object has light debugging tools attached to it +/* #define TRAIT_LIGHTING_DEBUGGED "lighting_debugged" */ /// Gives you the Shifty Eyes quirk, rarely making people who examine you think you examined them back even when you didn't #define TRAIT_SHIFTY_EYES "shifty_eyes" @@ -798,9 +859,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai ///Trait for the gamer quirk. #define TRAIT_GAMER "gamer" -/// Trait for the Extra-Sensory Paranoia quirk -#define TRAIT_PARANOIA "paranoia" - ///Trait for dryable items #define TRAIT_DRYABLE "trait_dryable" ///Trait for dried items @@ -839,16 +897,24 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Trait applied when the MMI component is added to an [/obj/item/integrated_circuit] #define TRAIT_COMPONENT_MMI "component_mmi" +/// Trait applied when the turf is being masked by the [/datum/component/vis_block] component +/// Without cutting out ALL of the center, requiring extra trickery to make seeing both sides reveal the inside +/* #define TRAIT_INNER_DARKNESS "inner_darkness" */ + /// Trait applied when an integrated circuit/module becomes undupable #define TRAIT_CIRCUIT_UNDUPABLE "circuit_undupable" -/// Hearing trait that is from the hearing component -#define CIRCUIT_HEAR_TRAIT "circuit_hear" +/// Trait applied when an integrated circuit opens a UI on a player (see list pick component) +/* #define TRAIT_CIRCUIT_UI_OPEN "circuit_ui_open" */ -/// PDA Traits. This one makes PDAs explode if the user opens the messages menu +/// PDA/ModPC Traits. This one makes PDAs explode if the user opens the messages menu #define TRAIT_PDA_MESSAGE_MENU_RIGGED "pda_message_menu_rigged" /// This one denotes a PDA has received a rigged message and will explode when the user tries to reply to a rigged PDA message #define TRAIT_PDA_CAN_EXPLODE "pda_can_explode" +///The download speeds of programs from the dowloader is halved. +/* #define TRAIT_MODPC_HALVED_DOWNLOAD_SPEED "modpc_halved_download_speed" */ +///Dictates whether a user (source) is interacting with the frame of a stationary modular computer or the pc inside it. Needed for circuits I guess. +/* #define TRAIT_MODPC_INTERACTING_WITH_FRAME "modpc_interacting_with_frame" */ /// If present on a [/mob/living/carbon], will make them appear to have a medium level disease on health HUDs. #define TRAIT_DISEASELIKE_SEVERITY_MEDIUM "diseaselike_severity_medium" @@ -886,8 +952,14 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Similar trait given to temporary bodies inhabited by players #define TRAIT_TEMPORARY_BODY "temporary_body" +/// Trait given to objects with the wallmounted component +#define TRAIT_WALLMOUNTED "wallmounted" + /// Trait given to mechs that can have orebox functionality on movement -#define TRAIT_OREBOX_FUNCTIONAL "orebox_functional" +/* #define TRAIT_OREBOX_FUNCTIONAL "orebox_functional" */ + +///A trait for mechs that were created through the normal construction process, and not spawned by map or other effects. +/* #define TRAIT_MECHA_CREATED_NORMALLY "trait_mecha_created_normally" */ ///fish traits #define TRAIT_RESIST_EMULSIFY "resist_emulsify" @@ -900,104 +972,24 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai ///Trait needed for the lubefish evolution #define TRAIT_FISH_FED_LUBE "fish_fed_lube" #define TRAIT_FISH_NO_HUNGER "fish_no_hunger" +///It comes from a fish case. Relevant for bounties so far. +/* #define TRAIT_FISH_FROM_CASE "fish_from_case" */ +///Fish will also occasionally fire weak tesla zaps +/* #define TRAIT_FISH_ELECTROGENESIS "fish_electrogenesis" */ /// Trait given to angelic constructs to let them purge cult runes #define TRAIT_ANGELIC "angelic" -// common trait sources -#define TRAIT_GENERIC "generic" -#define UNCONSCIOUS_TRAIT "unconscious" -#define EYE_DAMAGE "eye_damage" -#define EAR_DAMAGE "ear_damage" -#define GENETIC_MUTATION "genetic" -#define OBESITY "obesity" -#define MAGIC_TRAIT "magic" -#define TRAUMA_TRAIT "trauma" -#define FLIGHTPOTION_TRAIT "flightpotion" -/// Trait inherited by experimental surgeries -#define EXPERIMENTAL_SURGERY_TRAIT "experimental_surgery" -#define DISEASE_TRAIT "disease" -#define SPECIES_TRAIT "species" -#define ORGAN_TRAIT "organ" -/// Trait given by organ gained via abductor surgery -#define ABDUCTOR_GLAND_TRAIT "abductor_gland" -/// cannot be removed without admin intervention -#define ROUNDSTART_TRAIT "roundstart" -#define JOB_TRAIT "job" -#define CYBORG_ITEM_TRAIT "cyborg-item" -/// Any traits granted by quirks. -#define QUIRK_TRAIT "quirk_trait" -/// (B)admins only. -#define ADMIN_TRAIT "admin" -/// Any traits given through a smite. -#define SMITE_TRAIT "smite" -#define CHANGELING_TRAIT "changeling" -#define CULT_TRAIT "cult" -#define LICH_TRAIT "lich" - -/// From [/datum/element/elevation] for purpose of registering/removing signals and detaching the elevation_core when the trait is absent. -#define TRAIT_TURF_HAS_ELEVATED_OBJ(z) "turf_has_elevated_obj_[z]" -/// The item is magically cursed -#define CURSED_ITEM_TRAIT(item_type) "cursed_item_[item_type]" -#define ABSTRACT_ITEM_TRAIT "abstract-item" -/// A trait given by any status effect -#define STATUS_EFFECT_TRAIT "status-effect" -/// A trait given by a specific status effect (not sure why we need both but whatever!) -#define TRAIT_STATUS_EFFECT(effect_id) "[effect_id]-trait" - -#define CLOTHING_TRAIT "clothing" -#define HELMET_TRAIT "helmet" -/// inherited from the mask -#define MASK_TRAIT "mask" -/// inherited from your sweet kicks -#define SHOES_TRAIT "shoes" -/// Trait inherited by implants -#define IMPLANT_TRAIT "implant" -#define GLASSES_TRAIT "glasses" -/// inherited from riding vehicles -#define VEHICLE_TRAIT "vehicle" -#define INNATE_TRAIT "innate" -#define CRIT_HEALTH_TRAIT "crit_health" -#define OXYLOSS_TRAIT "oxyloss" -/// Trait sorce for "was recently shocked by something" -#define WAS_SHOCKED "was_shocked" -#define TURF_TRAIT "turf" -/// trait associated to being buckled -#define BUCKLED_TRAIT "buckled" -/// trait associated to being held in a chokehold -#define CHOKEHOLD_TRAIT "chokehold" -/// trait associated to resting -#define RESTING_TRAIT "resting" -/// trait associated to a stat value or range of -#define STAT_TRAIT "stat" -#define STATION_TRAIT "station-trait" -/// obtained from mapping helper -#define MAPPING_HELPER_TRAIT "mapping-helper" -/// Trait associated to wearing a suit -#define SUIT_TRAIT "suit" -/// Trait associated to lying down (having a [lying_angle] of a different value than zero). -#define LYING_DOWN_TRAIT "lying-down" -/// A trait gained by leaning against a wall -#define LEANING_TRAIT "leaning" -/// Trait associated to lacking electrical power. -#define POWER_LACK_TRAIT "power-lack" -/// Trait associated to lacking motor movement -#define MOTOR_LACK_TRAIT "motor-lack" -/// Trait associated with mafia -#define MAFIA_TRAIT "mafia" -/// Trait associated with ctf -#define CTF_TRAIT "ctf" -/// Trait associated with highlander -#define HIGHLANDER_TRAIT "highlander" -/// Trait given from playing pretend with baguettes -#define SWORDPLAY_TRAIT "swordplay" -/// Trait given by being recruited as a nuclear operative -#define NUKE_OP_MINION_TRAIT "nuke-op-minion" +/// Trait given to a dreaming carbon when they are currently doing dreaming stuff +/* #define TRAIT_DREAMING "currently_dreaming" */ + +/// Whether bots will salute this mob. +/* #define TRAIT_COMMISSIONED "commissioned" */ ///generic atom traits /// Trait from [/datum/element/rust]. Its rusty and should be applying a special overlay to denote this. #define TRAIT_RUSTY "rust_trait" -///stops someone from splashing their reagent_container on an object with this trait +/// Stops someone from splashing their reagent_container on an object with this trait #define TRAIT_DO_NOT_SPLASH "do_not_splash" /// Marks an atom when the cleaning of it is first started, so that the cleaning overlay doesn't get removed prematurely #define TRAIT_CURRENTLY_CLEANING "currently_cleaning" @@ -1005,183 +997,75 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_CHASM_DESTROYED "chasm_destroyed" /// Trait from being under the floor in some manner #define TRAIT_UNDERFLOOR "underfloor" -/// From [/datum/element/elevation_core] for purpose of checking if the turf has the trait from an instance of the element -#define TRAIT_ELEVATED_TURF "elevated_turf" /// If the movable shouldn't be reflected by mirrors. #define TRAIT_NO_MIRROR_REFLECTION "no_mirror_reflection" +/// If this movable is currently treading in a turf with the immerse element. +/* #define TRAIT_IMMERSED "immersed" */ +/// From [/datum/element/elevation_core] for purpose of checking if the turf has the trait from an instance of the element +#define TRAIT_ELEVATED_TURF "elevated_turf" +/** + * With this, the immerse overlay will give the atom its own submersion visual overlay + * instead of one that's also shared with other movables, thus making editing its appearance possible. + */ +/* #define TRAIT_UNIQUE_IMMERSE "unique_immerse" */ + +/// Don't render a drop shadow +/* #define TRAIT_SHADOWLESS "shadowless" */ + +/// This item is currently under the control of telekinesis +/* #define TRAIT_TELEKINESIS_CONTROLLED "telekinesis_controlled" */ -// unique trait sources, still defines -#define CLONING_POD_TRAIT "cloning-pod" -#define STATUE_MUTE "statue" -#define CHANGELING_DRAIN "drain" /// changelings with this trait can no longer talk over the hivemind -#define CHANGELING_HIVEMIND_MUTE "ling_mute" +#define TRAIT_CHANGELING_HIVEMIND_MUTE "ling_mute" +/// This guy is a hulk! (Bulky and green, lacks tact) #define TRAIT_HULK "hulk" -#define STASIS_MUTE "stasis" -#define GENETICS_SPELL "genetics_spell" -#define EYES_COVERED "eyes_covered" -#define NO_EYES "no_eyes" -#define HYPNOCHAIR_TRAIT "hypnochair" -#define NANITES_TRAIT "nanites" -#define FLASHLIGHT_EYES "flashlight_eyes" -#define IMPURE_OCULINE "impure_oculine" -#define HAUNTIUM_REAGENT_TRAIT "hauntium_reagent_trait" -#define TRAIT_SANTA "santa" -#define SCRYING_ORB "scrying-orb" -#define ABDUCTOR_ANTAGONIST "abductor-antagonist" -#define JUNGLE_FEVER_TRAIT "jungle_fever" -#define MEGAFAUNA_TRAIT "megafauna" -#define CLOWN_NUKE_TRAIT "clown-nuke" -#define STICKY_MOUSTACHE_TRAIT "sticky-moustache" -#define CHAINSAW_FRENZY_TRAIT "chainsaw-frenzy" -#define CHRONO_GUN_TRAIT "chrono-gun" -#define REVERSE_BEAR_TRAP_TRAIT "reverse-bear-trap" -#define CURSED_MASK_TRAIT "cursed-mask" -#define HIS_GRACE_TRAIT "his-grace" -#define HAND_REPLACEMENT_TRAIT "magic-hand" -#define HOT_POTATO_TRAIT "hot-potato" -#define SABRE_SUICIDE_TRAIT "sabre-suicide" -#define ABDUCTOR_VEST_TRAIT "abductor-vest" -#define CAPTURE_THE_FLAG_TRAIT "capture-the-flag" -#define BASKETBALL_MINIGAME_TRAIT "basketball-minigame" -#define EYE_OF_GOD_TRAIT "eye-of-god" -#define SHAMEBRERO_TRAIT "shamebrero" -#define CHRONOSUIT_TRAIT "chronosuit" -#define LOCKED_HELMET_TRAIT "locked-helmet" -#define NINJA_SUIT_TRAIT "ninja-suit" -#define SLEEPING_CARP_TRAIT "sleeping_carp" -#define MADE_UNCLONEABLE "made-uncloneable" -#define TIMESTOP_TRAIT "timestop" -#define LIFECANDLE_TRAIT "lifecandle" -#define VENTCRAWLING_TRAIT "ventcrawling" -#define SPECIES_FLIGHT_TRAIT "species-flight" -#define FROSTMINER_ENRAGE_TRAIT "frostminer-enrage" -#define NO_GRAVITY_TRAIT "no-gravity" -/// A trait gained from a mob's leap action, like the leaper -#define LEAPING_TRAIT "leaping" -/// A trait gained from a mob's vanish action, like the herophant -#define VANISHING_TRAIT "vanishing" -/// A trait gained from a mob's swoop action, like the ash drake -#define SWOOPING_TRAIT "swooping" -/// A trait gained from a mob's mimic ability, like the mimic -#define MIMIC_TRAIT "mimic" -#define SHRUNKEN_TRAIT "shrunken" -#define LEAPER_BUBBLE_TRAIT "leaper-bubble" -#define DNA_VAULT_TRAIT "dna_vault" -/// sticky nodrop sounds like a bad soundcloud rapper's name -#define STICKY_NODROP "sticky-nodrop" -#define SKILLCHIP_TRAIT "skillchip" -#define SKILL_TRAIT "skill" -#define BUSY_FLOORBOT_TRAIT "busy-floorbot" -#define PULLED_WHILE_SOFTCRIT_TRAIT "pulled-while-softcrit" -#define LOCKED_BORG_TRAIT "locked-borg" -#define TRAIT_VAULTING "vaulting" //simian trait -/// trait associated to not having locomotion appendages nor the ability to fly or float -#define LACKING_LOCOMOTION_APPENDAGES_TRAIT "lacking-locomotion-appengades" -#define CRYO_TRAIT "cryo" -/// trait associated to not having fine manipulation appendages such as hands -#define LACKING_MANIPULATION_APPENDAGES_TRAIT "lacking-manipulation-appengades" -#define HANDCUFFED_TRAIT "handcuffed" -/// Trait granted by [/obj/item/warp_whistle] -#define WARPWHISTLE_TRAIT "warpwhistle" -///Turf trait for when a turf is transparent -#define TURF_Z_TRANSPARENT_TRAIT "turf_z_transparent" -/// Trait applied by [/datum/component/soulstoned] -#define SOULSTONE_TRAIT "soulstone" -/// Trait applied to slimes by low temperature -#define SLIME_COLD "slime-cold" -/// Trait applied to mobs by being tipped over -#define TIPPED_OVER "tipped-over" -/// Trait applied to PAIs by being folded -#define PAI_FOLDED "pai-folded" -/// Trait applied to brain mobs when they lack external aid for locomotion, such as being inside a mech. -#define BRAIN_UNAIDED "brain-unaided" -/// Trait applied to a mob when it gets a required "operational datum" (components/elements). Sends out the source as the type of the element. -#define TRAIT_SUBTREE_REQUIRED_OPERATIONAL_DATUM "element-required" -/// Trait applied by MODsuits. -#define MOD_TRAIT "mod" -/// Trait applied by element -#define ELEMENT_TRAIT(source) "element_trait_[source]" -/// Trait granted by the berserker hood. -#define BERSERK_TRAIT "berserk_trait" -/// Trait granted by [/obj/item/rod_of_asclepius] -#define HIPPOCRATIC_OATH_TRAIT "hippocratic_oath" -/// Trait granted by [/datum/status_effect/blooddrunk] -#define BLOODDRUNK_TRAIT "blooddrunk" -/// Trait granted by lipstick -#define LIPSTICK_TRAIT "lipstick_trait" -/// Self-explainatory. -#define BEAUTY_ELEMENT_TRAIT "beauty_element" -#define MOOD_DATUM_TRAIT "mood_datum" -#define DRONE_SHY_TRAIT "drone_shy" -/// Pacifism trait given by stabilized light pink extracts. -#define STABILIZED_LIGHT_PINK_TRAIT "stabilized_light_pink" -/// Given by the multiple_lives component to the previous body of the mob upon death. -#define EXPIRED_LIFE_TRAIT "expired_life" -/// Trait given to an atom/movable when they orbit something. -#define ORBITING_TRAIT "orbiting" -/// From the item_scaling element -#define ITEM_SCALING_TRAIT "item_scaling" -#define MECH_TRAIT "mech_trait" -/// Trait given by choking -#define CHOKING_TRAIT "choking_trait" -/// Trait given by hallucinations -#define HALLUCINATION_TRAIT "hallucination_trait" -/// Trait given by simple/basic mob death -#define BASIC_MOB_DEATH_TRAIT "basic_mob_death" -/// Trait given by your current speed -#define SPEED_TRAIT "speed_trait" -/// Trait given to mobs that have been autopsied -#define AUTOPSY_TRAIT "autopsy_trait" -/// Trait given by [/datum/status_effect/blessing_of_insanity] -#define MAD_WIZARD_TRAIT "mad_wizard_trait" /// Isn't attacked harmfully by blob structures #define TRAIT_BLOB_ALLY "blob_ally" - -/** -* Trait granted by [/mob/living/carbon/Initialize] and -* granted/removed by [/obj/item/organ/internal/tongue] -* Used for ensuring that carbons without tongues cannot taste anything -* so it is added in Initialize, and then removed when a tongue is inserted -* and readded when a tongue is removed. -*/ -#define NO_TONGUE_TRAIT "no_tongue_trait" - -/// Trait granted by [/mob/living/silicon/robot] -/// Traits applied to a silicon mob by their model. -#define MODEL_TRAIT "model_trait" - -/// Trait granted by [mob/living/silicon/ai] -/// Applied when the ai anchors itself -#define AI_ANCHOR_TRAIT "ai_anchor" -/// Trait from [/datum/antagonist/nukeop/clownop] -#define CLOWNOP_TRAIT "clownop" +/// Has the chuuni component +#define TRAIT_CHUUNIBYOU "chuunibyou" +/// Has splattercasting +#define TRAIT_SPLATTERCASTER "splattercaster" ///Traits given by station traits +/* #define STATION_TRAIT_ASSISTANT_GIMMICKS "station_trait_assistant_gimmicks" */ #define STATION_TRAIT_BANANIUM_SHIPMENTS "station_trait_bananium_shipments" -#define STATION_TRAIT_UNNATURAL_ATMOSPHERE "station_trait_unnatural_atmosphere" -#define STATION_TRAIT_UNIQUE_AI "station_trait_unique_ai" +#define STATION_TRAIT_BIGGER_PODS "station_trait_bigger_pods" +#define STATION_TRAIT_BIRTHDAY "station_trait_birthday" +#define STATION_TRAIT_BOTS_GLITCHED "station_trait_bot_glitch" +/* #define STATION_TRAIT_MACHINES_GLITCHED "station_trait_machine_glitch" */ +/* #define STATION_TRAIT_BRIGHT_DAY "station_trait_bright_day" */ #define STATION_TRAIT_CARP_INFESTATION "station_trait_carp_infestation" -#define STATION_TRAIT_PREMIUM_INTERNALS "station_trait_premium_internals" -#define STATION_TRAIT_LATE_ARRIVALS "station_trait_late_arrivals" -#define STATION_TRAIT_RANDOM_ARRIVALS "station_trait_random_arrivals" -#define STATION_TRAIT_HANGOVER "station_trait_hangover" -#define STATION_TRAIT_FILLED_MAINT "station_trait_filled_maint" +#define STATION_TRAIT_CYBERNETIC_REVOLUTION "station_trait_cybernetic_revolution" #define STATION_TRAIT_EMPTY_MAINT "station_trait_empty_maint" +#define STATION_TRAIT_FILLED_MAINT "station_trait_filled_maint" +/* #define STATION_TRAIT_FORESTED "station_trait_forested" */ +#define STATION_TRAIT_HANGOVER "station_trait_hangover" +/* #define STATION_TRAIT_HUMAN_AI "station_trait_human_ai" */ +#define STATION_TRAIT_LATE_ARRIVALS "station_trait_late_arrivals" +#define STATION_TRAIT_LOANER_SHUTTLE "station_trait_loaner_shuttle" +#define STATION_TRAIT_MEDBOT_MANIA "station_trait_medbot_mania" #define STATION_TRAIT_PDA_GLITCHED "station_trait_pda_glitched" -#define STATION_TRAIT_BOTS_GLITCHED "station_trait_bot_glitch" -#define STATION_TRAIT_CYBERNETIC_REVOLUTION "station_trait_cybernetic_revolution" -#define STATION_TRAIT_BIGGER_PODS "station_trait_bigger_pods" -#define STATION_TRAIT_SMALLER_PODS "station_trait_smaller_pods" -#define STATION_TRAIT_BIRTHDAY "station_trait_birthday" -#define STATION_TRAIT_SPIDER_INFESTATION "station_trait_spider_infestation" +#define STATION_TRAIT_PREMIUM_INTERNALS "station_trait_premium_internals" +/* #define STATION_TRAIT_RADIOACTIVE_NEBULA "station_trait_radioactive_nebula" */ +#define STATION_TRAIT_RANDOM_ARRIVALS "station_trait_random_arrivals" #define STATION_TRAIT_REVOLUTIONARY_TRASHING "station_trait_revolutionary_trashing" -#define STATION_TRAIT_MEDBOT_MANIA "station_trait_medbot_mania" -#define STATION_TRAIT_LOANER_SHUTTLE "station_trait_loaner_shuttle" #define STATION_TRAIT_SHUTTLE_SALE "station_trait_shuttle_sale" +#define STATION_TRAIT_SMALLER_PODS "station_trait_smaller_pods" +#define STATION_TRAIT_SPIDER_INFESTATION "station_trait_spider_infestation" +#define STATION_TRAIT_UNIQUE_AI "station_trait_unique_ai" +#define STATION_TRAIT_UNNATURAL_ATMOSPHERE "station_trait_unnatural_atmosphere" +/* #define STATION_TRAIT_VENDING_SHORTAGE "station_trait_vending_shortage" */ + +///Deathmatch traits +/* #define TRAIT_DEATHMATCH_EXPLOSIVE_IMPLANTS "deathmath_explosive_implants" */ + +/// This atom is currently spinning. +#define TRAIT_SPINNING "spinning" -///From the market_crash event -#define MARKET_CRASH_EVENT_TRAIT "crashed_market_event" +/// This limb can't be torn open anymore +/* #define TRAIT_IMMUNE_TO_CRANIAL_FISSURE "immune_to_cranial_fissure" */ +/// Trait given if the mob has a cranial fissure. +/* #define TRAIT_HAS_CRANIAL_FISSURE "has_cranial_fissure" */ /// Denotes that this id card was given via the job outfit, aka the first ID this player got. #define TRAIT_JOB_FIRST_ID_CARD "job_first_id_card" @@ -1189,23 +1073,23 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_MAGNETIC_ID_CARD "magnetic_id_card" /// ID cards with this trait have special appraisal text. #define TRAIT_TASTEFULLY_THICK_ID_CARD "impressive_very_nice" -/// things with this trait are treated as having no access in /obj/proc/check_access(obj/item) +/// things with this trait are treated as having no access in /atom/movable/proc/check_access(obj/item) #define TRAIT_ALWAYS_NO_ACCESS "alwaysnoaccess" -/// Traits granted to items due to their chameleon properties. -#define CHAMELEON_ITEM_TRAIT "chameleon_item_trait" - /// This human wants to see the color of their glasses, for some reason #define TRAIT_SEE_GLASS_COLORS "see_glass_colors" -/// this mob is under the effects of the power chord -#define TRAIT_POWER_CHORD "power_chord" +///Used by wearable_client_colour to determine whether the mob wants to have the colours of the screen affected by worn items (some still do regardless). +/* #define TRAIT_SEE_WORN_COLOURS "see_worn_colour" */ // Radiation defines /// Marks that this object is irradiated #define TRAIT_IRRADIATED "iraddiated" +/// Immune to being irradiated +#define TRAIT_RADIMMUNE "rad_immunity" + /// Harmful radiation effects, the toxin damage and the burns, will not occur while this trait is active #define TRAIT_HALT_RADIATION_EFFECTS "halt_radiation_effects" @@ -1220,6 +1104,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Simple trait that just holds if we came into growth from a specific mob type. Should hold a REF(src) to the type of mob that caused the growth, not anything else. #define TRAIT_WAS_EVOLVED "was_evolved_from_the_mob_we_hold_a_textref_to" + // Traits to heal for /// This mob heals from carp rifts. @@ -1240,84 +1125,50 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Currently fishing #define TRAIT_GONE_FISHING "fishing" -/// Makes a species be better/worse at tackling depending on their wing's status +/// Makes a character be better/worse at tackling depending on their wing's status #define TRAIT_TACKLING_WINGED_ATTACKER "tacking_winged_attacker" -/// Makes a species be frail and more likely to roll bad results if they hit a wall +/// Makes a character be frail and more likely to roll bad results if they hit a wall #define TRAIT_TACKLING_FRAIL_ATTACKER "tackling_frail_attacker" -/// Makes a species be better/worse at defending against tackling depending on their tail's status +/// Makes a character be better/worse at defending against tackling depending on their tail's status #define TRAIT_TACKLING_TAILED_DEFENDER "tackling_tailed_defender" /// Is runechat for this atom/movable currently disabled, regardless of prefs or anything? -#define TRAIT_RUNECHAT_HIDDEN "runechat_hudden" +#define TRAIT_RUNECHAT_HIDDEN "runechat_hidden" -///coming from a fish trait datum. -#define FISH_TRAIT_DATUM "fish_trait_datum" -///coming from a fish evolution datum -#define FISH_EVOLUTION "fish_evolution" +/// the object has a label applied +/* #define TRAIT_HAS_LABEL "labeled" */ -/// some trait sorces dirived from bodyparts BODYPART_TRAIT is generic. -#define BODYPART_TRAIT "bodypart" -#define HEAD_TRAIT "head" -#define CHEST_TRAIT "chest" -#define RIGHT_ARM_TRAIT "right_arm" -#define LEFT_ARM_TRAIT "left_arm" -#define RIGHT_LEG_TRAIT "right_leg" -#define LEFT_LEG_TRAIT "left_leg" - -/// Trait given by echolocation component. -#define ECHOLOCATION_TRAIT "echolocation" +/// Trait given to a mob that is currently thinking (giving off the "thinking" icon), used in an IC context +/* #define TRAIT_THINKING_IN_CHARACTER "currently_thinking_IC" */ ///without a human having this trait, they speak as if they have no tongue. #define TRAIT_SPEAKS_CLEARLY "speaks_clearly" // specific sources for TRAIT_SPEAKS_CLEARLY -///trait source that tongues should use -#define SPEAKING_FROM_TONGUE "tongue" -///trait source that sign language should use -#define SPEAKING_FROM_HANDS "hands" -/// this object cannot have its export value be shown by export scanner (shows as unknown) -#define TRAIT_HIDDEN_EXPORT_VALUE "hiddenexportvalue" - -///FOOD TRAITS -///Trait for Fire Burps -#define TRAIT_FOOD_FIRE_BURPS "food_buff_fire_burps" -///Traut for fast sliding -#define FOOD_SLIDE "food_slide_buff" -///Trait for hand picked crops to be of a higher stats (ignores cap) -#define FOOD_JOB_BOTANIST "food_job_botanist" -///Trait for rocks to randomly drop ore -#define FOOD_JOB_MINER "food_job_miner" -#define GLUED_ITEM_TRAIT "glued-item" -#define TRAIT_BELT_SATCHEL "belt_satchel" - -/// Trait given to mobs that we do not want to mindswap -#define TRAIT_NO_MINDSWAP "no_mindswap" - -//monkestation edit start -/// One can breath under water, you get me? -#define TRAIT_WATER_BREATHING "water_breathing" - -/// Does not take damage from bloodloss(or any blood shenanigans) -#define TRAIT_NO_BLOODLOSS_DAMAGE "no_bloodloss_damage" - -/// Do IPC's dream of doomsday? The answer is yes -#define TRAIT_ROBOT_CAN_BLEED "robots_can_bleed" +///Trait given by /datum/component/germ_sensitive +/* #define TRAIT_GERM_SENSITIVE "germ_sensitive" */ -/// tough feets for the satyrs -#define TRAIT_HARD_SOLES "hard_soles" //Taken from Skyrat -//monkestation edit end /// This atom can have spells cast from it if a mob is within it /// This means the "caster" of the spell is changed to the mob's loc /// Note this doesn't mean all spells are guaranteed to work or the mob is guaranteed to cast #define TRAIT_CASTABLE_LOC "castable_loc" +/// Needs above trait to work. +/// This trait makes it so that any cast spells will attempt to transfer to the location's location. +/// For example, a heretic inside the haunted blade's spells would emanate from the mob wielding the sword. +/* #define TRAIT_SPELLS_TRANSFER_TO_LOC "spells_transfer_to_loc" */ + ///Trait given by /datum/element/relay_attacker #define TRAIT_RELAYING_ATTACKER "relaying_attacker" -// unique trait sources, still defines -#define EMP_TRAIT "emp_trait" + +///Trait given to limb by /mob/living/basic/living_limb_flesh +/* #define TRAIT_IGNORED_BY_LIVING_FLESH "livingflesh_ignored" */ + +///Trait given to organs that have been inside a living being previously +/* #define TRAIT_USED_ORGAN "used_organ" */ /// Trait given while using /datum/action/cooldown/mob_cooldown/wing_buffet #define TRAIT_WING_BUFFET "wing_buffet" @@ -1326,8 +1177,19 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Trait given to a dragon who fails to defend their rifts #define TRAIT_RIFT_FAILURE "fail_dragon_loser" +///this trait hides most visible fluff and interactions of happiness, likely temporarily. +/* #define TRAIT_MOB_HIDE_HAPPINESS "mob_hide_happiness" */ ///trait determines if this mob can breed given by /datum/component/breeding #define TRAIT_MOB_BREEDER "mob_breeder" +///trait given to mobs that are hatched +/* #define TRAIT_MOB_HATCHED "mob_hatched" */ +/// Trait given to mobs that we do not want to mindswap +#define TRAIT_NO_MINDSWAP "no_mindswap" +///trait given to food that can be baked by /datum/component/bakeable +/* #define TRAIT_BAKEABLE "bakeable" */ + +/// Trait given to foam darts that have an insert in them +/* #define TRAIT_DART_HAS_INSERT "dart_has_insert" */ /// Trait determines if this mob has examined an eldritch painting #define TRAIT_ELDRITCH_PAINTING_EXAMINE "eldritch_painting_examine" @@ -1335,19 +1197,80 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Trait used by the /datum/brain_trauma/severe/flesh_desire trauma to change their preferences of what they eat #define TRAIT_FLESH_DESIRE "flesh_desire" -///trait given to food that can be baked by /datum/component/bakeable -#define TRAIT_BAKEABLE "bakeable" - -/// Trait given to foam darts that have an insert in them -#define TRAIT_DART_HAS_INSERT "dart_has_insert" - ///Trait granted by janitor skillchip, allows communication with cleanbots #define TRAIT_CLEANBOT_WHISPERER "cleanbot_whisperer" +///Trait granted by the miner skillchip, allows communication with minebots +/* #define TRAIT_ROCK_STONER "rock_stoner" */ + +///Trait given by the regenerative shield component +/* #define TRAIT_REGEN_SHIELD "regen_shield" */ + /// Trait given when a mob is currently in invisimin mode -#define TRAIT_INVISIMIN "invisimin" +/* #define TRAIT_INVISIMIN "invisimin" */ ///Trait given when a mob has been tipped -#define TRAIT_MOB_TIPPED "mob_tipped" +/* #define TRAIT_MOB_TIPPED "mob_tipped" */ + +/// Trait which self-identifies as an enemy of the law +/* #define TRAIT_ALWAYS_WANTED "always_wanted" */ + +/// Trait given to mobs that have the basic eating element +/* #define TRAIT_MOB_EATER "mob_eater" */ +/// Trait which means whatever has this is dancing by a dance machine +/* #define TRAIT_DISCO_DANCER "disco_dancer" */ + +/// Trait given to anything linked to, not necessarily allied to, the mansus +/* #define TRAIT_MANSUS_TOUCHED "mansus_touched" */ + +/// Appiled when wizard buy (/datum/spellbook_entry/perks/spalls_lottery) perk. +/// Give 50/25% chance not spend a spellbook charge on 1/2 cost spell. +/// Appiled it wizard can't refund any spells. +/* #define TRAIT_SPELLS_LOTTERY "spell_for_sale" */ + +/// Trait given to mobs wearing the clown mask +/* #define TRAIT_PERCEIVED_AS_CLOWN "perceived_as_clown" */ +/// Does this item bypass ranged armor checks? +/* #define TRAIT_BYPASS_RANGED_ARMOR "bypass_ranged_armor" */ + +/// Trait which means that this item is considered illegal contraband, and valid for the contraband bounty or when scanned by an nspect scanner. +/* #define TRAIT_CONTRABAND "illegal_contraband" */ + +/// Traits given by settler, each with their own specific effects for cases where someone would have that trait, but not the other settler effects + +/* #define TRAIT_EXPERT_FISHER "expert_fisher" */ // fishing is easier +/* #define TRAIT_ROUGHRIDER "roughrider" */ // you can improve speed on mounted animals with a good mood +/* #define TRAIT_STUBBY_BODY "stubby_body" */ // you have a stubby body that lessens your agility +/* #define TRAIT_BEAST_EMPATHY "beast_empathy" */ // you're good with animals, such as with taming them +/* #define TRAIT_STURDY_FRAME "sturdy_frame" */ // you suffer much lesser effects from equipment that slows you down + +/// This item cannot be selected for or used by a theft objective (Spies, Traitors, etc.) +/* #define TRAIT_ITEM_OBJECTIVE_BLOCKED "item_objective_blocked" */ +/// This trait lets you attach limbs to any player without surgery. +/* #define TRAIT_EASY_ATTACH "easy_attach" */ + +///Attached to objects currently on window frames, tables and such, allowing them to walk on other objects without the climbing delay +/* #define TRAIT_ON_CLIMBABLE "on_climbable" */ + +///Trait given to the birthday boy +/* #define TRAIT_BIRTHDAY_BOY "birthday_boy" */ + +///Trait given to a turf that should not be allowed to be terraformed, such as turfs holding ore vents. +/* #define TRAIT_NO_TERRAFORM "no_terraform" */ + +///Mobs with these trait do not get italicized/quiet speech when speaking in low pressure +/* #define TRAIT_SPEECH_BOOSTER "speech_booster" */ + +/// Given to a mob that can throw to make them not able to throw +/* #define TRAIT_NO_THROWING "no_throwing" */ + +///Trait which allows mobs to parry mining mob projectiles +/* #define TRAIT_MINING_PARRYING "mining_parrying" */ + +/// That which allows mobs to instantly break down boulders. +#define TRAIT_INSTANTLY_PROCESSES_BOULDERS "instantly_processes_boulders" + +/// Trait applied to objects and mobs that can attack a boulder and break it down. (See /obj/item/boulder/manual_process()) +#define TRAIT_BOULDER_BREAKER "boulder_breaker" // END TRAIT DEFINES diff --git a/code/__DEFINES/traits/macros.dm b/code/__DEFINES/traits/macros.dm new file mode 100644 index 000000000000..731f9fec2605 --- /dev/null +++ b/code/__DEFINES/traits/macros.dm @@ -0,0 +1,16 @@ +// This file contains all of the "dynamic" traits and trait sources that can be used +// in a number of versatile and everchanging ways. +// If it uses psuedo-variables like the examples below, it's a macro-trait. + + +/// From [/datum/element/elevation] for purpose of registering/removing signals and detaching the elevation_core when the trait is absent. +#define TRAIT_TURF_HAS_ELEVATED_OBJ(z) "turf_has_elevated_obj_[z]" + +/// The item is magically cursed +#define CURSED_ITEM_TRAIT(item_type) "cursed_item_[item_type]" +/// A trait given by a specific status effect (not sure why we need both but whatever!) +#define TRAIT_STATUS_EFFECT(effect_id) "[effect_id]-trait" +/// Trait given by mech equipment +#define TRAIT_MECH_EQUIPMENT(equipment_type) "mech_equipment_[equipment_type]" +/// Trait applied by element +#define ELEMENT_TRAIT(source) "element_trait_[source]" diff --git a/code/__DEFINES/traits/monkestation/declarations.dm b/code/__DEFINES/traits/monkestation/declarations.dm new file mode 100644 index 000000000000..2ab31d15b457 --- /dev/null +++ b/code/__DEFINES/traits/monkestation/declarations.dm @@ -0,0 +1,132 @@ +// BEGIN TRAIT DEFINES + +// /mob/living +/// Monkeys are friendly/neutral to this mob by defaulot. +#define TRAIT_MONKEYFRIEND "monkeyfriend" +/// User's stamina is over the STAMINA_EXHAUSTION_THRESHOLD. +#define TRAIT_EXHAUSTED "exhausted" +/// User is sprinting, full speed ahead. +#define TRAIT_SPRINTING "sprinting" +///Slows the user, with additional effects based on the source. +#define TRAIT_DISORIENTED "disoriented" +/// User cannot sprint. +#define TRAIT_NO_SPRINT "no_sprint" +/// One can breath under water, you get me? +#define TRAIT_WATER_BREATHING "water_breathing" +/// Does not take damage from bloodloss (or any blood shenanigans) +#define TRAIT_NO_BLOODLOSS_DAMAGE "no_bloodloss_damage" +/// Do IPC's dream of doomsday? The answer is yes +#define TRAIT_ROBOT_CAN_BLEED "robots_can_bleed" +/// Tough feets for the satyrs. +#define TRAIT_HARD_SOLES "hard_soles" //Taken from Skyrat +/// The mob's nanites are sending a monitoring signal visible on diag HUD. +#define TRAIT_NANITE_MONITORING "nanite_monitoring" +/// This mob can vault over climable structures. +#define TRAIT_VAULTING "vaulting" //simian trait +/// Ethereals with this trait will not suffer negative effects from overcharge. +#define TRAIT_ETHEREAL_NO_OVERCHARGE "ethereal_no_overcharge" +/// Oozelings with this trait will not lose limbs from low blood/nutrition. +#define TRAIT_OOZELING_NO_CANNIBALIZE "oozeling_no_cannibalize" +/// Indicates that they've inhaled helium. +#define TRAIT_HELIUM "helium" +/// Allows the user to start any surgery, anywhere. Mostly used by abductor scientists. +#define TRAIT_ALL_SURGERIES "all_surgeries" +/// Prevents the user from ever (unintentionally) failing a surgery step, and ensures they always have the maximum surgery speed. +#define TRAIT_PERFECT_SURGEON "perfect_surgeon" +/// Reduces the complexity of any cyberlink hacking minigames for the user. +#define TRAIT_BETTER_CYBERCONNECTOR "better_cyberconnector_hacking" +/// Allows the user to climb tables and such faster. +#define TRAIT_FAST_CLIMBER "fast_climber" +/// The user is more resistant to being shoved. +#define TRAIT_SHOVE_RESIST "shove_resist" +/// Allows the user to instantly reload. +#define TRAIT_INSTANT_RELOAD "instant_reload" +/// If an oozeling is currently protecting themselves from water. +#define TRAIT_SLIME_HYDROPHOBIA "slime_hydrophobia" +/// Falsifies Health analyzer blood levels +#define TRAIT_MASQUERADE "masquerade" +/// Your body is literal room temperature. Does not make you immune to the temp +#define TRAIT_COLDBLOODED "coldblooded" +/// Prevents the user from entering stamina crit. +#define TRAIT_CANT_STAMCRIT "cant_stamcrit" +/// This mob will automatically revive when healed enough. +#define TRAIT_REVIVES_BY_HEALING "trait_revives_by_healing" +/// This mob is a ghost critter. +#define TRAIT_GHOST_CRITTER "ghost_critter" + +// /datum/mind + /mob/living +/// Prevents the user from casting spells using sign language. Works on both /datum/mind and /mob/living. +#define TRAIT_CANT_SIGN_SPELLS "cant_sign_spells" +/// You have special interactions with bloodsuckers and the occult. +#define TRAIT_OCCULTIST "occultist" + +// /datum/mind +/// Indicates that the user has been removed from the crew manifest. Used to track if multiple antags have removed the same person. +#define TRAIT_REMOVED_FROM_MANIFEST "removed_from_manifest" + +// Traits related to food +/// Trait for Fire Burps +#define TRAIT_FOOD_FIRE_BURPS "food_buff_fire_burps" +/// Trait for fast sliding +#define TRAIT_FOOD_SLIDE "food_slide_buff" +/// Trait for hand picked crops to be of a higher stats (ignores cap) +#define TRAIT_FOOD_JOB_BOTANIST "food_job_botanist" +/// Trait for rocks to randomly drop ore. +#define TRAIT_FOOD_JOB_MINER "food_job_miner" + +// Traits given by quirks +#define TRAIT_ANIME "anime" +#define TRAIT_CAT "cat" +#define TRAIT_GOURMAND "gourmand" +#define TRAIT_HIDDEN_CLOWN "clown_disbelief" +#define TRAIT_HIDDEN_IMAGE "generic-hidden-image" +#define TRAIT_JAILBIRD "jailbird" +#define TRAIT_KLEPTOMANIAC "kleptomaniac" +#define TRAIT_LOUD_ASS "loud_ass" +#define TRAIT_MINING_CALLOUTS "miner_callouts" +#define TRAIT_PARANOIA "paranoia" +#define TRAIT_STABLE_ASS "stable_ass" +#define TRAIT_STOWAWAY "stowaway" +#define TRAIT_UNSTABLE_ASS "unstable_ass" + + +// Traits given by station traits +/// Station trait for when the clown has bridge access *shudders* +#define STATION_TRAIT_CLOWN_BRIDGE "clown_bridge" + +// /turf/open +/// Liquids cannot spread over this turf. +#define TRAIT_BLOCK_LIQUID_SPREAD "block_liquid_spread" +/// If a trait is considered as having "coverage" by a meteor shield. +#define TRAIT_COVERED_BY_METEOR_SHIELD "covered_by_meteor_shield" +/// Replacement for GLOB.typecache_elevated_structures +#define TRAIT_TURF_HAS_ELEVATED_STRUCTURE "turf_has_elevated_structure" + + +// /obj +/// added to structures we want the mobs to be able to target. +#define TRAIT_MOB_DESTROYABLE "mob_destroyable" +/// This object cannot have its export value be shown by export scanner (shows as unknown) +#define TRAIT_HIDDEN_EXPORT_VALUE "hiddenexportvalue" + +// /obj/item +/// Applied to a satchel that is being worn on the belt. +#define TRAIT_BELT_SATCHEL "belt_satchel" +/// Whether a storage item can be compressed by the bluespace compression kit, without the usual storage limitation. +#define TRAIT_BYPASS_COMPRESS_CHECK "can_compress_anyways" +/// This item is considered "trash" (and will be eaten by cleaner slimes) +#define TRAIT_TRASH_ITEM "trash_item" + +// /atom/movable +/// Things with this trait can pass through wooden barricades. +#define TRAIT_GOES_THROUGH_WOODEN_BARRICADES "goes_through_wooden_barricades" + +// Traits related directly to Clockwork Cult +/// Given to Clockwork Golems, gives them a reduction on invoke time for certain scriptures. +#define TRAIT_FASTER_SLAB_INVOKE "faster_slab_invoke" +/// Prevents the invocation of clockwork scriptures. +#define TRAIT_NO_SLAB_INVOKE "no_slab_invoke" +/// Has an item been enchanted by a clock cult Stargazer? +#define TRAIT_STARGAZED "stargazed" + +// END TRAIT DEFINES diff --git a/code/__DEFINES/traits/monkestation/sources.dm b/code/__DEFINES/traits/monkestation/sources.dm new file mode 100644 index 000000000000..057086421db2 --- /dev/null +++ b/code/__DEFINES/traits/monkestation/sources.dm @@ -0,0 +1,34 @@ +/// Traits given by mechs. +#define MECH_TRAIT "mech_trait" +/// Traits given by nanites. +#define NANITES_TRAIT "nanites" +/// Trait given to a mob made uncloneable. +#define UNCLONEABLE_TRAIT "made-uncloneable" +/// Traits given by cloning pods. +#define CLONING_POD_TRAIT "cloning-pod" +/// Traits given to abductor victims with the ventcrawling gland, while ventcrawling. +#define ABDUCTOR_GLAND_VENTCRAWLING_TRAIT "abductor_gland_ventcrawling" +/// Traits given by an anti-drop implant. +#define ANTI_DROP_IMPLANT_TRAIT "antidrop_implant" +/// Traits given to glued items. +#define GLUED_ITEM_TRAIT "glued-item" +/// Trait source for the stargazer. +#define STARGAZER_TRAIT "stargazer" +/// Trait source for the vanguard scripture +#define VANGUARD_TRAIT "vanguard" +/// Source trait for Bloodsuckers-related traits +#define BLOODSUCKER_TRAIT "bloodsucker_trait" +/// Source trait for bloodsuckers in torpor. +#define TORPOR_TRAIT "torpor_trait" +/// Source trait for bloodsuckers using fortitude. +#define FORTITUDE_TRAIT "fortitude_trait" +/// Source trait for bloodsucker mesmerization. +#define MESMERIZED_TRAIT "mesmerized_trait" +/// Source trait for Monster Hunter-related traits +#define HUNTER_TRAIT "monsterhunter_trait" +/// Source trait while Feeding +#define FEED_TRAIT "feed_trait" +/// Source trait during a Frenzy +#define FRENZY_TRAIT "frenzy_trait" +/// Source trait for slashers. +#define TRAIT_SLASHER "slasher_trait" diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm new file mode 100644 index 000000000000..f11cc50dbbd5 --- /dev/null +++ b/code/__DEFINES/traits/sources.dm @@ -0,0 +1,297 @@ +// This file contains all of the trait sources, or all of the things that grant traits. +// Several things such as `type` or `REF(src)` may be used in the ADD_TRAIT() macro as the "source", but this file contains all of the defines for immutable static strings. + +// common trait sources +#define TRAIT_GENERIC "generic" +#define UNCONSCIOUS_TRAIT "unconscious" +#define EYE_DAMAGE "eye_damage" +#define EAR_DAMAGE "ear_damage" +#define GENETIC_MUTATION "genetic" +#define OBESITY "obesity" +#define MAGIC_TRAIT "magic" +#define TRAUMA_TRAIT "trauma" +#define FLIGHTPOTION_TRAIT "flightpotion" +/// Trait inherited by experimental surgeries +#define EXPERIMENTAL_SURGERY_TRAIT "experimental_surgery" +#define DISEASE_TRAIT "disease" +#define SPECIES_TRAIT "species" +#define ORGAN_TRAIT "organ" +/// Trait given by augmented limbs +#define AUGMENTATION_TRAIT "augments" +/// Trait given by organ gained via abductor surgery +#define ABDUCTOR_GLAND_TRAIT "abductor_gland" +/// cannot be removed without admin intervention +#define ROUNDSTART_TRAIT "roundstart" +#define JOB_TRAIT "job" +#define CYBORG_ITEM_TRAIT "cyborg-item" +/// Any traits granted by quirks. +#define QUIRK_TRAIT "quirk_trait" +/// (B)admins only. +#define ADMIN_TRAIT "admin" +/// Any traits given through a smite. +#define SMITE_TRAIT "smite" +#define CHANGELING_TRAIT "changeling" +#define CULT_TRAIT "cult" +#define LICH_TRAIT "lich" + +#define VENDING_MACHINE_TRAIT "vending_machine" + +#define ABSTRACT_ITEM_TRAIT "abstract-item" +/// A trait given by any status effect +#define STATUS_EFFECT_TRAIT "status-effect" + +/// Trait from light debugging +#define LIGHT_DEBUG_TRAIT "light-debug" + +/// Trait given by an Action datum +#define ACTION_TRAIT "action" + +#define CLOTHING_TRAIT "clothing" +#define HELMET_TRAIT "helmet" +/// inherited from the mask +#define MASK_TRAIT "mask" +/// inherited from your sweet kicks +#define SHOES_TRAIT "shoes" +/// Trait inherited by implants +#define IMPLANT_TRAIT "implant" +#define GLASSES_TRAIT "glasses" +/// inherited from riding vehicles +#define VEHICLE_TRAIT "vehicle" +#define INNATE_TRAIT "innate" +#define CRIT_HEALTH_TRAIT "crit_health" +#define OXYLOSS_TRAIT "oxyloss" +/// Trait sorce for "was recently shocked by something" +#define WAS_SHOCKED "was_shocked" +#define TURF_TRAIT "turf" +/// trait associated to being buckled +#define BUCKLED_TRAIT "buckled" +/// trait associated to being held in a chokehold +#define CHOKEHOLD_TRAIT "chokehold" +/// trait associated to resting +#define RESTING_TRAIT "resting" +/// trait associated to a stat value or range of +#define STAT_TRAIT "stat" +#define STATION_TRAIT "station-trait" +/// obtained from mapping helper +#define MAPPING_HELPER_TRAIT "mapping-helper" +/// Trait associated to wearing a suit +#define SUIT_TRAIT "suit" +/// Trait associated to lying down (having a [lying_angle] of a different value than zero). +#define LYING_DOWN_TRAIT "lying-down" +/// A trait gained by leaning against a wall +#define LEANING_TRAIT "leaning" +/// Trait associated to lacking electrical power. +#define POWER_LACK_TRAIT "power-lack" +/// Trait associated to lacking motor movement +#define MOTOR_LACK_TRAIT "motor-lack" +/// Trait associated with mafia +#define MAFIA_TRAIT "mafia" +/// Trait associated with ctf +#define CTF_TRAIT "ctf" +/// Trait associated with deathmatch +#define DEATHMATCH_TRAIT "deathmatch" +/// Trait associated with highlander +#define HIGHLANDER_TRAIT "highlander" +/// Trait given from playing pretend with baguettes +#define SWORDPLAY_TRAIT "swordplay" +/// Trait given by being recruited as a nuclear operative +#define NUKE_OP_MINION_TRAIT "nuke-op-minion" + +/// Trait given to you by shapeshifting +#define SHAPESHIFT_TRAIT "shapeshift_trait" + +// unique trait sources, still defines +#define EMP_TRAIT "emp_trait" +#define STATUE_MUTE "statue" +#define CHANGELING_DRAIN "drain" + +#define STASIS_MUTE "stasis" +#define GENETICS_SPELL "genetics_spell" +#define EYES_COVERED "eyes_covered" +#define NO_EYES "no_eyes" +#define HYPNOCHAIR_TRAIT "hypnochair" +#define FLASHLIGHT_EYES "flashlight_eyes" +#define IMPURE_OCULINE "impure_oculine" +#define HAUNTIUM_REAGENT_TRAIT "hauntium_reagent_trait" +#define TRAIT_SANTA "santa" +#define SCRYING_ORB "scrying-orb" +#define ABDUCTOR_ANTAGONIST "abductor-antagonist" +#define JUNGLE_FEVER_TRAIT "jungle_fever" +#define MEGAFAUNA_TRAIT "megafauna" +#define CLOWN_NUKE_TRAIT "clown-nuke" +#define STICKY_MOUSTACHE_TRAIT "sticky-moustache" +#define CHAINSAW_FRENZY_TRAIT "chainsaw-frenzy" +#define CHRONO_GUN_TRAIT "chrono-gun" +#define REVERSE_BEAR_TRAP_TRAIT "reverse-bear-trap" +#define CURSED_MASK_TRAIT "cursed-mask" +#define HIS_GRACE_TRAIT "his-grace" +#define HAND_REPLACEMENT_TRAIT "magic-hand" +#define HOT_POTATO_TRAIT "hot-potato" +#define SABRE_SUICIDE_TRAIT "sabre-suicide" +#define ABDUCTOR_VEST_TRAIT "abductor-vest" +#define CAPTURE_THE_FLAG_TRAIT "capture-the-flag" +#define BASKETBALL_MINIGAME_TRAIT "basketball-minigame" +#define EYE_OF_GOD_TRAIT "eye-of-god" +#define SHAMEBRERO_TRAIT "shamebrero" +#define CHRONOSUIT_TRAIT "chronosuit" +#define LOCKED_HELMET_TRAIT "locked-helmet" +#define NINJA_SUIT_TRAIT "ninja-suit" +#define SLEEPING_CARP_TRAIT "sleeping_carp" +#define BOXING_TRAIT "boxing" +#define TIMESTOP_TRAIT "timestop" +#define LIFECANDLE_TRAIT "lifecandle" +#define VENTCRAWLING_TRAIT "ventcrawling" +#define SPECIES_FLIGHT_TRAIT "species-flight" +#define FROSTMINER_ENRAGE_TRAIT "frostminer-enrage" +#define NO_GRAVITY_TRAIT "no-gravity" +#define NEGATIVE_GRAVITY_TRAIT "negative-gravity" + +/// A trait gained from a mob's leap action, like the leaper +#define LEAPING_TRAIT "leaping" +/// A trait gained from a mob's vanish action, like the herophant +#define VANISHING_TRAIT "vanishing" +/// A trait gained from a mob's swoop action, like the ash drake +#define SWOOPING_TRAIT "swooping" +/// A trait gained from a mob's mimic ability, like the mimic +#define MIMIC_TRAIT "mimic" +#define SHRUNKEN_TRAIT "shrunken" +#define LEAPER_BUBBLE_TRAIT "leaper-bubble" +#define DNA_VAULT_TRAIT "dna_vault" +/// sticky nodrop sounds like a bad soundcloud rapper's name +#define STICKY_NODROP "sticky-nodrop" +#define SKILLCHIP_TRAIT "skillchip" +#define SKILL_TRAIT "skill" +#define BUSY_FLOORBOT_TRAIT "busy-floorbot" +#define PULLED_WHILE_SOFTCRIT_TRAIT "pulled-while-softcrit" +#define LOCKED_BORG_TRAIT "locked-borg" +/// trait associated to not having locomotion appendages nor the ability to fly or float +#define LACKING_LOCOMOTION_APPENDAGES_TRAIT "lacking-locomotion-appengades" +#define CRYO_TRAIT "cryo" +/// trait associated to not having fine manipulation appendages such as hands +#define LACKING_MANIPULATION_APPENDAGES_TRAIT "lacking-manipulation-appengades" +#define HANDCUFFED_TRAIT "handcuffed" +/// Trait granted by [/obj/item/warp_whistle] +#define WARPWHISTLE_TRAIT "warpwhistle" +///Turf trait for when a turf is transparent +#define TURF_Z_TRANSPARENT_TRAIT "turf_z_transparent" +/// Trait applied by [/datum/component/soulstoned] +#define SOULSTONE_TRAIT "soulstone" +/// Trait applied to slimes by low temperature +#define SLIME_COLD "slime-cold" +/// Trait applied to mobs by being tipped over +#define TIPPED_OVER "tipped-over" +/// Trait applied to PAIs by being folded +#define PAI_FOLDED "pai-folded" +/// Trait applied to brain mobs when they lack external aid for locomotion, such as being inside a mech. +#define BRAIN_UNAIDED "brain-unaided" +/// Trait applied to a mob when it gets a required "operational datum" (components/elements). Sends out the source as the type of the element. +#define TRAIT_SUBTREE_REQUIRED_OPERATIONAL_DATUM "element-required" +/// Trait applied by MODsuits. +#define MOD_TRAIT "mod" +/// Trait applied to tram passengers +#define TRAM_PASSENGER_TRAIT "tram-passenger" +/// Trait given by a fulton extraction pack +#define FULTON_PACK_TRAIT "fulton-pack" + +/// Trait granted by the berserker hood. +#define BERSERK_TRAIT "berserk_trait" +/// Trait granted by [/obj/item/rod_of_asclepius] +#define HIPPOCRATIC_OATH_TRAIT "hippocratic_oath" +/// Trait granted by [/datum/status_effect/blooddrunk] +#define BLOODDRUNK_TRAIT "blooddrunk" +/// Trait granted by lipstick +#define LIPSTICK_TRAIT "lipstick_trait" +/// Self-explainatory. +#define BEAUTY_ELEMENT_TRAIT "beauty_element" +#define MOOD_DATUM_TRAIT "mood_datum" +#define DRONE_SHY_TRAIT "drone_shy" +/// Trait given by stabilized light pink extracts +#define STABILIZED_LIGHT_PINK_EXTRACT_TRAIT "stabilized_light_pink" +/// Trait given by adamantine extracts +#define ADAMANTINE_EXTRACT_TRAIT "adamantine_extract" +/// Given by the multiple_lives component to the previous body of the mob upon death. +#define EXPIRED_LIFE_TRAIT "expired_life" +/// Trait given to an atom/movable when they orbit something. +#define ORBITING_TRAIT "orbiting" +/// From the item_scaling element +#define ITEM_SCALING_TRAIT "item_scaling" +/// Trait given by choking +#define CHOKING_TRAIT "choking_trait" +/// Trait given by hallucinations +#define HALLUCINATION_TRAIT "hallucination_trait" +/// Trait given by simple/basic mob death +#define BASIC_MOB_DEATH_TRAIT "basic_mob_death" +/// Trait given by your current speed +#define SPEED_TRAIT "speed_trait" +/// Trait given to mobs that have been autopsied +#define AUTOPSY_TRAIT "autopsy_trait" + +///From the market_crash event +#define MARKET_CRASH_EVENT_TRAIT "crashed_market_event" + +/// Traits granted to items due to their chameleon properties. +#define CHAMELEON_ITEM_TRAIT "chameleon_item_trait" + +// some trait sources dirived from bodyparts - BODYPART_TRAIT is generic. +#define BODYPART_TRAIT "bodypart" +#define HEAD_TRAIT "head" +#define CHEST_TRAIT "chest" +#define RIGHT_ARM_TRAIT "right_arm" +#define LEFT_ARM_TRAIT "left_arm" +#define RIGHT_LEG_TRAIT "right_leg" +#define LEFT_LEG_TRAIT "left_leg" + +///coming from a fish trait datum. +#define FISH_TRAIT_DATUM "fish_trait_datum" +///coming from a fish evolution datum +#define FISH_EVOLUTION "fish_evolution" + +/// Trait given by echolocation component. +#define ECHOLOCATION_TRAIT "echolocation" + +///trait source that tongues should use +#define SPEAKING_FROM_TONGUE "tongue" +///trait source that sign language should use +#define SPEAKING_FROM_HANDS "hands" + +/// Sources for TRAIT_IGNORING_GRAVITY +#define IGNORING_GRAVITY_NEGATION "ignoring_gravity_negation" + +/// Hearing trait that is from the hearing component +#define CIRCUIT_HEAR_TRAIT "circuit_hear" + +/// This trait comes from when a mob is currently typing. +#define CURRENTLY_TYPING_TRAIT "currently_typing" + +/** +* Trait granted by [/mob/living/carbon/Initialize] and +* granted/removed by [/obj/item/organ/internal/tongue] +* Used for ensuring that carbons without tongues cannot taste anything +* so it is added in Initialize, and then removed when a tongue is inserted +* and readded when a tongue is removed. +*/ +#define NO_TONGUE_TRAIT "no_tongue_trait" + +/// Trait granted by [/mob/living/silicon/robot] +/// Traits applied to a silicon mob by their model. +#define MODEL_TRAIT "model_trait" + +/// Trait granted by [mob/living/silicon/ai] +/// Applied when the ai anchors itself +#define AI_ANCHOR_TRAIT "ai_anchor" + +/// Trait from [/datum/antagonist/nukeop/clownop] +#define CLOWNOP_TRAIT "clownop" + +#define ANALYZER_TRAIT "analyzer_trait" + +/// Trait from an organ being inside a bodypart +#define ORGAN_INSIDE_BODY_TRAIT "organ_inside_body" +/// Trait when something was labelled by the /datum/element/tool_renaming element. +#define RENAMING_TOOL_LABEL_TRAIT "renaming_tool_label" + +/// Trait when a drink was renamed by a shaker +#define SHAKER_LABEL_TRAIT "shaker_trait" + +/// Trait added by style component +#define STYLE_TRAIT "style" diff --git a/code/__DEFINES/turfs.dm b/code/__DEFINES/turfs.dm index 48844e079c16..492248acae60 100644 --- a/code/__DEFINES/turfs.dm +++ b/code/__DEFINES/turfs.dm @@ -96,3 +96,14 @@ #define TURF_PATHING_PASS_PROC 1 /// Turf is never passable #define TURF_PATHING_PASS_NO 2 + +/// Define the alpha for holiday/colored tile decals +#define DECAL_ALPHA 60 +/// Generate horizontal striped color turf decals +#define PATTERN_DEFAULT "default" +/// Generate vertical striped color turf decals +#define PATTERN_VERTICAL_STRIPE "vertical" +/// Generate random color turf decals +#define PATTERN_RANDOM "random" +/// Generate rainbow color turf decals +#define PATTERN_RAINBOW "rainbow" diff --git a/code/__DEFINES/~monkestation/_patreon.dm b/code/__DEFINES/~monkestation/_patreon.dm index 3517dc8c4612..6e8bec50c4ae 100644 --- a/code/__DEFINES/~monkestation/_patreon.dm +++ b/code/__DEFINES/~monkestation/_patreon.dm @@ -6,6 +6,7 @@ #define TRAITOR_RANK "9641531" //muh defines #define NUKIE_RANK "10901851" #define OLD_NUKIE_RANK "9641543" +#define REALLY_ANOTHER_FUCKING_NUKIE_RANK "23202435" #define ACCESS_THANKS_RANK 1 #define ACCESS_ASSISTANT_RANK 2 diff --git a/code/__DEFINES/~monkestation/actionspeed_modification.dm b/code/__DEFINES/~monkestation/actionspeed_modification.dm index 1d7c683c7e6d..11af7802a1cb 100644 --- a/code/__DEFINES/~monkestation/actionspeed_modification.dm +++ b/code/__DEFINES/~monkestation/actionspeed_modification.dm @@ -1 +1,2 @@ -#define ACTIONSPEED_ID_BORER "borer" +#define ACTIONSPEED_ID_BORER "borer" +#define ACTIONSPEED_ID_BLOODSUCKER_SOL "bloodsucker_sol" diff --git a/code/__DEFINES/~monkestation/artifact.dm b/code/__DEFINES/~monkestation/artifact.dm index e4fcd4ff9c4f..8c5ed4744bfa 100644 --- a/code/__DEFINES/~monkestation/artifact.dm +++ b/code/__DEFINES/~monkestation/artifact.dm @@ -15,15 +15,19 @@ #define ARTIFACT_UNCOMMON 400 #define ARTIFACT_VERYUNCOMMON 300 #define ARTIFACT_RARE 250 -#define ARTIFACT_VERYRARE 140 +#define ARTIFACT_VERYRARE 125 -//cuts down on boiler plate code -#define ARTIFACT_SETUP(X,subsystem) ##X/Initialize(mapload, var/forced_origin = null){\ +//cuts down on boiler plate code, last 3 args can be null. +#define ARTIFACT_SETUP(X,subsystem,forced_origin,forced_effect,forced_size) ##X/Initialize(mapload){\ . = ..();\ START_PROCESSING(subsystem, src);\ if(assoc_comp) {\ - assoc_comp = AddComponent(assoc_comp, forced_origin);\ + assoc_comp = AddComponent(assoc_comp, forced_origin, forced_effect, forced_size);\ RegisterSignal(src, COMSIG_QDELETING, PROC_REF(on_delete));\ + if(isitem(src)) {\ + RegisterSignal(src,COMSIG_ITEM_POST_EQUIPPED,PROC_REF(on_artifact_touched));\ + RegisterSignal(src,COMSIG_MOB_ITEM_ATTACK,PROC_REF(on_artifact_attack));\ + }\ }\ } \ ##X/proc/on_delete(atom/source){\ @@ -33,17 +37,39 @@ ##X/process(){\ assoc_comp?.stimulate_from_turf_heat(get_turf(src));\ if(assoc_comp?.active) {\ - assoc_comp.effect_process();\ + for(var/datum/artifact_effect/eff in assoc_comp.artifact_effects) {\ + eff.effect_process();\ + }\ + }\ +} \ +##X/proc/on_artifact_touched(obj/item/the_item,mob/toucher,slot){ \ + SIGNAL_HANDLER; \ + if(assoc_comp) { \ + for(var/datum/artifact_effect/eff in assoc_comp.artifact_effects) {\ + eff.effect_touched(toucher);\ + }\ + }\ +}\ +##X/proc/on_artifact_attack(mob/target, mob/user, params){ \ + SIGNAL_HANDLER; \ + if(assoc_comp) { \ + for(var/datum/artifact_effect/eff in assoc_comp.artifact_effects) {\ + eff.effect_touched(target);\ + if(prob(10)){ \ + eff.effect_touched(user);\ + } \ + }\ }\ } \ ##X/rad_act(intensity){\ assoc_comp?.stimulate_from_rad_act(intensity)\ } -#define STIMULUS_CARBON_TOUCH (1<<0) -#define STIMULUS_SILICON_TOUCH (1<<1) -#define STIMULUS_FORCE (1<<2) -#define STIMULUS_HEAT (1<<3) -#define STIMULUS_SHOCK (1<<4) -#define STIMULUS_RADIATION (1<<5) -#define STIMULUS_DATA (1<<6) + +#define STIMULUS_CARBON_TOUCH (1<<1) +#define STIMULUS_SILICON_TOUCH (1<<2) +#define STIMULUS_FORCE (1<<3) +#define STIMULUS_HEAT (1<<4) +#define STIMULUS_SHOCK (1<<5) +#define STIMULUS_RADIATION (1<<6) +#define STIMULUS_DATA (1<<7) diff --git a/code/__DEFINES/~monkestation/blueshift.dm b/code/__DEFINES/~monkestation/blueshift.dm index ac51f27ea7b6..a52313a85ad5 100644 --- a/code/__DEFINES/~monkestation/blueshift.dm +++ b/code/__DEFINES/~monkestation/blueshift.dm @@ -83,9 +83,6 @@ GLOBAL_LIST_INIT(colonist_suit_allowed, list( /obj/item/analyzer, )) -/// Trait given to objects with the wallmounted component -#define TRAIT_WALLMOUNTED "wallmounted" - /// BYOND's string procs don't support being used on datum references (as in it doesn't look for a name for stringification) /// We just use this macro to ensure that we will only pass strings to this BYOND-level function without developers needing to really worry about it. #define LOWER_TEXT(thing) lowertext(UNLINT("[thing]")) @@ -273,14 +270,6 @@ See the examinemore module for information. #define BOOT_UNSEAL_MESSAGE "relax their grip on your legs" #define BOOT_SEAL_MESSAGE "seal around your feet" -/// Colors for pride week -#define COLOR_PRIDE_RED "#FF6666" -#define COLOR_PRIDE_ORANGE "#FC9F3C" -#define COLOR_PRIDE_YELLOW "#EAFF51" -#define COLOR_PRIDE_GREEN "#41FC66" -#define COLOR_PRIDE_BLUE "#42FFF2" -#define COLOR_PRIDE_PURPLE "#5D5DFC" - /// Trait that changes the ending effects of twitch leaving your system #define TRAIT_TWITCH_ADAPTED "twitch_adapted" @@ -332,4 +321,4 @@ GLOBAL_LIST_INIT(antag_opt_in_colors, list( #define OPT_IN_DEFAULT_LEVEL OPT_IN_YES_KILL /// If the player has any non-ghost role antags enabled, they are forced to use a minimum of this. -#define OPT_IN_ANTAG_ENABLED_LEVEL OPT_IN_YES_TEMP +#define OPT_IN_ANTAG_ENABLED_LEVEL OPT_IN_YES_KILL diff --git a/code/__DEFINES/~monkestation/cargo.dm b/code/__DEFINES/~monkestation/cargo.dm new file mode 100644 index 000000000000..0747a6ea33e1 --- /dev/null +++ b/code/__DEFINES/~monkestation/cargo.dm @@ -0,0 +1 @@ +#define COMSIG_FILTER_CHECK "filter_check" diff --git a/code/__DEFINES/~monkestation/chewin.dm b/code/__DEFINES/~monkestation/chewin.dm new file mode 100644 index 000000000000..980bcb76b964 --- /dev/null +++ b/code/__DEFINES/~monkestation/chewin.dm @@ -0,0 +1,120 @@ + +#define sequential_id(key) GLOB.uniqueness_repository.Generate(/datum/uniqueness_generator/id_sequential, key) +#define random_id(key,min_id,max_id) GLOB.uniqueness_repository.Generate(/datum/uniqueness_generator/id_random, key, min_id, max_id) + +//#define CHEWIN_DEBUG 1 + +//Step classifications, for easy reference later. +//If something falls outside these classifications, why would it? +#define CHEWIN_START 1 //Default step to construct the list. +#define CHEWIN_ADD_ITEM 2 //Adding an item to a recipe (Ex- adding a slice of bread) +#define CHEWIN_ADD_REAGENT 3 //Adding a reagent to a recipe (Ex- Adding salt) +#define CHEWIN_USE_ITEM 4 //Using an item in a recipe (Ex- cutting bread with a knife) +#define CHEWIN_USE_TOOL 5 +#define CHEWIN_ADD_PRODUCE 6 //Adding Produce to a recipe +#define CHEWIN_USE_STOVE 7 //Using a stove in a recipe +#define CHEWIN_USE_GRILL 8 //Using a stove in a recipe +#define CHEWIN_USE_OVEN 9 //Using a stove in a recipe +#define CHEWIN_USE_FRYER 10 +#define CHEWIN_ADD_REAGENT_CHOICE 11 +#define CHEWIN_ADD_PRODUCE_CHOICE 12 +#define CHEWIN_USE_OTHER 13 //Custom Command flag, will take in argument lists. + +//Optional flags +#define CHEWIN_ADD_ITEM_OPTIONAL 200 +#define CHEWIN_ADD_REAGENT_OPTIONAL 300 +#define CHEWIN_USE_ITEM_OPTIONAL 400 +#define CHEWIN_USE_TOOL_OPTIONAL 500 +#define CHEWIN_ADD_PRODUCE_OPTIONAL 600 +#define CHEWIN_USE_STOVE_OPTIONAL 700 +#define CHEWIN_USE_GRILL_OPTIONAL 800 +#define CHEWIN_USE_OVEN_OPTIONAL 900 +#define CHEWIN_ADD_REAGENT_CHOICE_OPTIONAL 1000 +#define CHEWIN_ADD_PRODUCE_CHOICE_OPTIONAL 1100 +#define CHEWIN_OTHER_OPTIONAL 1200 + + +#define CHEWIN_BEGIN_EXCLUSIVE_OPTIONS 10000 //Beginning an exclusive option list +#define CHEWIN_END_EXCLUSIVE_OPTIONS 20000 //Ending an exclusive option list +#define CHEWIN_BEGIN_OPTION_CHAIN 30000 //Beginning an option chain +#define CHEWIN_END_OPTION_CHAIN 40000 //Ending an option chain + +//Recipe state flags +#define CHEWIN_IS_LAST_STEP 1 //If the step in the recipe is marked as the last step +#define CHEWIN_IS_OPTIONAL 2 //If the step in the recipe is marked as 'Optional' +#define CHEWIN_IS_OPTION_CHAIN 4 //If the step in the recipe is marked to be part of an option chain. +#define CHEWIN_IS_EXCLUSIVE 8 //If the step in the recipe is marked to exclude other options when followed. +#define CHEWIN_BASE_QUALITY_ENABLED 16 +#define CHEWIN_MAX_QUALITY_ENABLED 32 + +//Check item use flags +#define CHEWIN_NO_STEPS 1 //The used object has no valid recipe uses +#define CHEWIN_CHOICE_CANCEL 2 //The user opted to cancel when given a choice +#define CHEWIN_SUCCESS 3 //The user decided to use the item and the step was followed +#define CHEWIN_PARTIAL_SUCCESS 4 //The user decided to use the item but the qualifications for the step was not fulfilled +#define CHEWIN_COMPLETE 5 //The meal has been completed! +#define CHEWIN_LOCKOUT 6 //Someone tried starting the function while a prompt was running. Jerk. +#define CHEWIN_BURNT 7 //The meal was ruined by burning the food somehow. + +#define CHEWIN_CHECK_INVALID 0 +#define CHEWIN_CHECK_VALID 1 +#define CHEWIN_CHECK_FULL 2 //For reagents, nothing can be added to + +//Cooking container types +#define PLATE "plate" +#define CUTTING_BOARD "cutting board" +#define PAN "pan" +#define POT "pot" +#define BOWL "bowl" +#define DF_BASKET "deep fryer basket" +#define AF_BASKET "air fryer basket" +#define OVEN "oven" +#define GRILL "grill" + +//Stove temp settings. +#define J_LO "Low" +#define J_MED "Medium" +#define J_HI "High" + +//Just a catalog for the cooking catalog +#define CATALOG_COOKING "cooking" + +//Burn times for cooking things on a stove. +//Anything put on a stove for this long becomes a burned mess. +#define CHEWIN_BURN_TIME_LOW 15 MINUTES +#define CHEWIN_BURN_TIME_MEDIUM 10 MINUTES +#define CHEWIN_BURN_TIME_HIGH 5 MINUTES + +//Ignite times for reagents interacting with a stove. +//The stove will catch fire if left on too long with flammable reagents in any of its holders. +#define CHEWIN_IGNITE_TIME_LOW 1 HOUR +#define CHEWIN_IGNITE_TIME_MEDIUM 30 MINUTES +#define CHEWIN_IGNITE_TIME_HIGH 15 MINUTES + +//Determines how much quality is taken from a food each tick when a 'no recipe' response is made. +#define CHEWIN_BASE_QUAL_REDUCTION 5 + +//A dictionary of unique step ids that point to other step IDs that should be EXCLUDED if it is present in a recipe_pointer's list of possible steps. +GLOBAL_LIST_EMPTY(chewin_optional_step_exclusion_dictionary) + +//A dictionary of all recipes by the basic ingredient +//Format: {base_ingedient_type:{unique_id:recipe}} +GLOBAL_LIST_EMPTY(chewin_recipe_dictionary) + +//A dictionary of all recipes full_stop. Used later for assembling the HTML list. +//Format: {recipe_type:{unique_id:recipe}} +GLOBAL_LIST_EMPTY(chewin_recipe_list) + +//A dictionary of all steps held within all recipes +//Format: {unique_id:step} +GLOBAL_LIST_EMPTY(chewin_step_dictionary) + +//An organized heap of recipes by class and grouping. +//Format: {class_of_step:{step_group_identifier:{unique_id:step}}} +GLOBAL_LIST_EMPTY(chewin_step_dictionary_ordered) + +#define COMSIG_STOVE_PROCESS "comsig_stove_process" + +#define CAT_BULK "Bulk Recipes" +#define CAT_STOVETOP "Stovetop Recipes" +#define CAT_OVEN "Oven Recipes" diff --git a/code/__DEFINES/~monkestation/dcs/signals/signals_food.dm b/code/__DEFINES/~monkestation/dcs/signals/signals_food.dm new file mode 100644 index 000000000000..9aa0a4bee70f --- /dev/null +++ b/code/__DEFINES/~monkestation/dcs/signals/signals_food.dm @@ -0,0 +1,3 @@ +#define COMPONENT_MICROWAVE_DONTEJECT (1<<2) +#define COMPONENT_MICROWAVE_DONTDIRTY (1<<3) +#define COMPONENT_MICROWAVE_DONTOPEN (1<<4) diff --git a/code/__DEFINES/~monkestation/dcs/signals/signals_item.dm b/code/__DEFINES/~monkestation/dcs/signals/signals_item.dm index 798e7a94443b..b913dd94bfe1 100644 --- a/code/__DEFINES/~monkestation/dcs/signals/signals_item.dm +++ b/code/__DEFINES/~monkestation/dcs/signals/signals_item.dm @@ -1,3 +1,9 @@ +/// Sent when an item is stashed in Gary's hideout. +#define COMSIG_ITEM_GARY_STASHED "gary_stashed" + +/// Sent when an item is taken/looted from Gary's hideout. +#define COMSIG_ITEM_GARY_LOOTED "gary_looted" + /// Called before an item is compressed by a bluespace compression kit: (mob/user, obj/item/compression_kit/kit) #define COMSIG_ITEM_PRE_COMPRESS "item_pre_compress" #define COMPONENT_STOP_COMPRESSION (1 << 0) @@ -10,3 +16,5 @@ /// the comsig for clockwork items checking turf #define COMSIG_CHECK_TURF_CLOCKWORK "check_turf_clockwork" + +#define COMSIG_ITEM_DAMAGE_MULTIPLIER "damage_multi_item" diff --git a/code/__DEFINES/~monkestation/dcs/signals/signals_mob/signals_mob_main.dm b/code/__DEFINES/~monkestation/dcs/signals/signals_mob/signals_mob_main.dm index 780dcf78e57e..bfc0f361e4f4 100644 --- a/code/__DEFINES/~monkestation/dcs/signals/signals_mob/signals_mob_main.dm +++ b/code/__DEFINES/~monkestation/dcs/signals/signals_mob/signals_mob_main.dm @@ -28,3 +28,8 @@ #define COMSIG_MOB_PICKED_UP "mob_picked_up" #define COMSIG_MOB_DROPPED "mob_dropped" + +#define COMSIG_DRANK_REAGENT "drank_reagent" + +#define COMSIG_LIVING_TRACKER_REMOVED "tracker_removed" +#define COMSIG_CLEAR_SEE "clear_see" diff --git a/code/__DEFINES/~monkestation/dcs/signals/signals_object.dm b/code/__DEFINES/~monkestation/dcs/signals/signals_object.dm new file mode 100644 index 000000000000..7e3bfcc3e769 --- /dev/null +++ b/code/__DEFINES/~monkestation/dcs/signals/signals_object.dm @@ -0,0 +1,2 @@ +//flag to block the qdel that normally happens when a projectile is blocked +#define PROJECTILE_INTERRUPT_BLOCK_QDEL (4<<0) diff --git a/code/__DEFINES/~monkestation/elevation.dm b/code/__DEFINES/~monkestation/elevation.dm new file mode 100644 index 000000000000..9040e92de158 --- /dev/null +++ b/code/__DEFINES/~monkestation/elevation.dm @@ -0,0 +1,5 @@ +#define GIVE_TURF_ELEVATED_TRAIT(X) ##X/Initialize(mapload){\ + . = ..();\ + var/static/list/give_turf_traits = list(TRAIT_TURF_HAS_ELEVATED_STRUCTURE);\ + AddElement(/datum/element/give_turf_traits, give_turf_traits);\ +} diff --git a/code/__DEFINES/~monkestation/ipcs.dm b/code/__DEFINES/~monkestation/ipcs.dm index 99b674fdcfae..8108530f8640 100644 --- a/code/__DEFINES/~monkestation/ipcs.dm +++ b/code/__DEFINES/~monkestation/ipcs.dm @@ -21,8 +21,6 @@ #define SYNTH_BRAIN_DAMAGE_MESSAGE_INTERVAL 20 SECONDS #define SYNTH_DEAF_STACKS 30 -#define TRAIT_REVIVES_BY_HEALING "trait_revives_by_healing" - /// If a synth is revived via defib, they will get a brain trauma of this severity. #define SYNTH_DEFIBBED_TRAUMA_SEVERITY BRAIN_TRAUMA_SEVERE #define SYNTH_DEFIBBED_TRAUMA_DURATION 90 SECONDS diff --git a/code/__DEFINES/~monkestation/is_helpers.dm b/code/__DEFINES/~monkestation/is_helpers.dm new file mode 100644 index 000000000000..3050cb783dba --- /dev/null +++ b/code/__DEFINES/~monkestation/is_helpers.dm @@ -0,0 +1 @@ +#define isgary(A) (istype(A, /mob/living/basic/chicken/gary)) diff --git a/code/__DEFINES/~monkestation/jobs.dm b/code/__DEFINES/~monkestation/jobs.dm index 2a2c5ae5e3a4..1902ca9ced9b 100644 --- a/code/__DEFINES/~monkestation/jobs.dm +++ b/code/__DEFINES/~monkestation/jobs.dm @@ -1 +1,3 @@ #define JOB_SECURITY_ASSISTANT "Security Assistant" +/// Whether this job is enabled/disabled by the spooktober config +#define JOB_SPOOKTOBER (1<<16) diff --git a/code/__DEFINES/~monkestation/keybinding.dm b/code/__DEFINES/~monkestation/keybinding.dm index b074c433ef49..c30dbdebb821 100644 --- a/code/__DEFINES/~monkestation/keybinding.dm +++ b/code/__DEFINES/~monkestation/keybinding.dm @@ -1 +1,7 @@ #define COMSIG_KB_CLIENT_LOOC_DOWN "keybinding_client_looc_down" + +#define COMSIG_KB_LIVING_ITEM_PIXEL_SHIFT_DOWN "keybinding_living_item_pixelshift_down" +#define COMSIG_KB_LIVING_ITEM_PIXEL_SHIFT_UP "keybinding_living_item_pixelshift_up" +#define COMSIG_KB_LIVING_PIXELSHIFT "keybinding_living_pixelshift" +#define COMSIG_KB_LIVING_PIXEL_SHIFT_DOWN "keybinding_living_pixelshift_down" +#define COMSIG_KB_LIVING_PIXEL_SHIFT_UP "keybinding_living_pixelshift_up" diff --git a/code/__DEFINES/~monkestation/living.dm b/code/__DEFINES/~monkestation/living.dm new file mode 100644 index 000000000000..06134c4aaffa --- /dev/null +++ b/code/__DEFINES/~monkestation/living.dm @@ -0,0 +1,8 @@ +///from base of living/set_pull_offset(): (mob/living/pull_target, grab_state) +#define COMSIG_LIVING_SET_PULL_OFFSET "living_set_pull_offset" +///from base of living/reset_pull_offsets(): (mob/living/pull_target, override) +#define COMSIG_LIVING_RESET_PULL_OFFSETS "living_reset_pull_offsets" +///from base of living/CanAllowThrough(): (atom/movable/mover, border_dir) +#define COMSIG_LIVING_CAN_ALLOW_THROUGH "living_can_allow_through" + /// Allow to movable atoms to pass through this living mob + #define COMPONENT_LIVING_PASSABLE (1<<0) diff --git a/code/__DEFINES/~monkestation/oozeling.dm b/code/__DEFINES/~monkestation/oozeling.dm index df2effb5b53b..e28a43280c08 100644 --- a/code/__DEFINES/~monkestation/oozeling.dm +++ b/code/__DEFINES/~monkestation/oozeling.dm @@ -1,4 +1 @@ -/// If a slimeperson is currently protecting themselves from water -#define TRAIT_SLIME_HYDROPHOBIA "slime_hydrophobia" -#define ACTION_TRAIT "action_trait" #define SLIME_ACTIONS_ICON_FILE 'monkestation/code/modules/smithing/icons/actions_slime.dmi' diff --git a/code/__DEFINES/~monkestation/optfor.dm b/code/__DEFINES/~monkestation/optfor.dm index db0ec80970cf..cb2ed6e1fb66 100644 --- a/code/__DEFINES/~monkestation/optfor.dm +++ b/code/__DEFINES/~monkestation/optfor.dm @@ -26,11 +26,11 @@ #define OPFOR_REQUEST_UPDATE_COOLDOWN (5 MINUTES) #define OPFOR_PING_COOLDOWN (1 MINUTES) -#define OPFOR_TEXT_LIMIT_TITLE 40 +#define OPFOR_TEXT_LIMIT_TITLE 64 #define OPFOR_TEXT_LIMIT_BACKSTORY 2000 #define OPFOR_TEXT_LIMIT_DESCRIPTION 1000 #define OPFOR_TEXT_LIMIT_JUSTIFICATION 1000 -#define OPFOR_TEXT_LIMIT_MESSAGE 300 +#define OPFOR_TEXT_LIMIT_MESSAGE MAX_MESSAGE_LEN #define OPFOR_EQUIPMENT_LIMIT 10 #define OPFOR_EQUIPMENT_COUNT_LIMIT 5 diff --git a/code/__DEFINES/~monkestation/pain.dm b/code/__DEFINES/~monkestation/pain.dm new file mode 100644 index 000000000000..d28ed424b326 --- /dev/null +++ b/code/__DEFINES/~monkestation/pain.dm @@ -0,0 +1,51 @@ +/// If the mob enters shock, they will have +1 cure condition (helps cure it faster) +#define TRAIT_ABATES_SHOCK "shock_abated" +/// Pain effects, such as stuttering or feedback messages ("Everything hurts") are disabled. +#define TRAIT_NO_PAIN_EFFECTS "no_pain_effects" +/// Shock buildup does not increase, only decrease. No effect if already in shock (unlike abates_shock) +#define TRAIT_NO_SHOCK_BUILDUP "no_shock_buildup" +/// Don't get slowed down by aggro grabbing (or above) +#define TRAIT_NO_GRAB_SPEED_PENALTY "no_grab_speed_penalty" +/// Doesn't let a mob shift this atom around with move_pulled +#define TRAIT_NO_MOVE_PULL "no_move_pull" + +/// Sent when a carbon gains pain. (source = mob/living/carbon/human, obj/item/bodypart/affected_bodypart, amount, type) +#define COMSIG_CARBON_PAIN_GAINED "pain_gain" +/// Sent when a carbon loses pain. (source = mob/living/carbon/human, obj/item/bodypart/affected_bodypart, amount, type) +#define COMSIG_CARBON_PAIN_LOST "pain_loss" +/// Sent when a temperature pack runs out of juice. (source = obj/item/temperature_pack) +#define COMSIG_TEMPERATURE_PACK_EXPIRED "temp_pack_expired" + +/// Various lists of body zones affected by pain. +#define BODY_ZONES_ALL list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) +#define BODY_ZONES_MINUS_HEAD list(BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) +#define BODY_ZONES_LIMBS list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) +#define BODY_ZONES_MINUS_CHEST list(BODY_ZONE_HEAD, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + +/// List of some emotes that convey pain. +#define PAIN_EMOTES list("wince", "gasp", "grimace", "shiver", "sway", "twitch_s", "whimper", "inhale_s", "exhale_s", "groan") + +/// Amount of pain gained (to chest) from dismembered limb +#define PAIN_LIMB_DISMEMBERED 90 +/// Amount of pain gained (to chest) from surgically removed limb +#define PAIN_LIMB_REMOVED 30 + +/// Soft max pains for bodyparts, adds up to 500 +#define PAIN_LIMB_MAX 70 +#define PAIN_CHEST_MAX 120 +#define PAIN_HEAD_MAX 100 + +// Keys for pain modifiers +#define PAIN_MOD_CHEMS "chems" +#define PAIN_MOD_LYING "lying" +#define PAIN_MOD_NEAR_DEATH "near-death" +#define PAIN_MOD_KOD "ko-d" +#define PAIN_MOD_RECENT_SHOCK "recently-shocked" +#define PAIN_MOD_QUIRK "quirk" +#define PAIN_MOD_SPECIES "species" +#define PAIN_MOD_OFF_STATION "off-station-pain-resistance" + +// ID for traits and modifiers gained by pain +#define PAIN_LIMB_PARALYSIS "pain_paralysis" +#define MOVESPEED_ID_PAIN "pain_movespeed" +#define ACTIONSPEED_ID_PAIN "pain_actionspeed" diff --git a/code/__DEFINES/~monkestation/power.dm b/code/__DEFINES/~monkestation/power.dm index 3a3795a69263..c60b05db34eb 100644 --- a/code/__DEFINES/~monkestation/power.dm +++ b/code/__DEFINES/~monkestation/power.dm @@ -2,13 +2,13 @@ // Primarily used by monkestation/code/modules/power/power_transmission_laser // energy amount defines -#define KW *1000 -#define MW KW * 1000 -#define GW MW * 1000 -#define TW GW * 1000 -#define PW TW * 1000 -#define EW PW * 1000 -#define ZW EW * 1000 -#define YW ZW * 1000 -#define RW YW * 1000 -#define QW RW * 1000 +#define KW * 1000 // 1+3e +#define MW KW * 1000 // 1+6e +#define GW MW * 1000 // 1+9e +#define TW GW * 1000 // 1+12e +#define PW TW * 1000 // 1+15e +#define EW PW * 1000 // 1+18e +#define ZW EW * 1000 // 1+21e +#define YW ZW * 1000 // 1+24e +#define RW YW * 1000 // 1+27e +#define QW RW * 1000 // 1+30e diff --git a/code/__DEFINES/~monkestation/sounds.dm b/code/__DEFINES/~monkestation/sounds.dm new file mode 100644 index 000000000000..2338aae0d67a --- /dev/null +++ b/code/__DEFINES/~monkestation/sounds.dm @@ -0,0 +1,3 @@ +#define SFX_BUTTON_CLICK "button_click" +#define SFX_BUTTON_FAIL "button_fail" +#define SFX_LIGHTSWITCH "lightswitch" diff --git a/code/__DEFINES/~monkestation/traits.dm b/code/__DEFINES/~monkestation/traits.dm deleted file mode 100644 index 85e79ada7278..000000000000 --- a/code/__DEFINES/~monkestation/traits.dm +++ /dev/null @@ -1,55 +0,0 @@ -/// Given to Clockwork Golems, gives them a reduction on invoke time for certain scriptures -#define TRAIT_FASTER_SLAB_INVOKE "faster_slab_invoke" -/// Trait source for the vanguard scripture -#define VANGUARD_TRAIT "vanguard" -/// Has an item been enchanted by a clock cult Stargazer -#define TRAIT_STARGAZED "stargazed" -/// Trait source for the stargazer -#define STARGAZER_TRAIT "stargazer" -/// Prevents the invocation of clockwork scriptures -#define TRAIT_NO_SLAB_INVOKE "no_slab_invoke" -/// Indicates that they've inhaled helium. -#define TRAIT_HELIUM "helium" -/// Allows the user to start any surgery, anywhere. Mostly used by abductor scientists. -#define TRAIT_ALL_SURGERIES "all_surgeries" -/// Prevents the user from ever (unintentionally) failing a surgery step, and ensures they always have the maximum surgery speed. -#define TRAIT_PERFECT_SURGEON "perfect_surgeon" -/// Prevents the user from casting spells using sign language. Works on both /datum/mind and /mob/living. -#define TRAIT_CANT_SIGN_SPELLS "cant_sign_spells" -/// Ethereals with this trait will not suffer negative effects from overcharge. -#define TRAIT_ETHEREAL_NO_OVERCHARGE "ethereal_no_overcharge" -/// Indicates that the user has been removed from the crew manifest. Used to track if multiple antags have removed the same person. -#define TRAIT_REMOVED_FROM_MANIFEST "removed_from_manifest" -/// Station trait for when the clown has bridge access *shudders* -#define STATION_TRAIT_CLOWN_BRIDGE "clown_bridge" - -// /datum/mind -/// Prevents any sort of antagonist/brainwashing conversion. -#define TRAIT_UNCONVERTABLE "unconvertable" - - -#define TRAIT_SENSOR_HUD "sensor_hud" -#define TRAIT_SHOVE_RESIST "shove_resist" //Used by implants -#define TRAIT_FAST_CLIMBER "fast_climber" //Used by implants -#define ANTI_DROP_IMPLANT_TRAIT "antidrop_implant" -// /obj/item -/// Whether a storage item can be compressed by the bluespace compression kit, without the usual storage limitation. -#define TRAIT_BYPASS_COMPRESS_CHECK "can_compress_anyways" -/// This item is considered "trash" (and will be eaten by cleaner slimes) -#define TRAIT_TRASH_ITEM "trash_item" - -#define ABDUCTOR_GLAND_VENTCRAWLING_TRAIT "abductor_gland_ventcrawling" -#define TRAIT_BETTER_CYBERCONNECTOR "better_cyberconnector_hacking" - -/// Allows the user to instantly reload. -#define TRAIT_INSTANT_RELOAD "instant_reload" - - -// /turf/open -/// If a trait is considered as having "coverage" by a meteor shield. -#define TRAIT_COVERED_BY_METEOR_SHIELD "covered_by_meteor_shield" -/// Liquids cannot spread over this turf. -#define TRAIT_BLOCK_LIQUID_SPREAD "block_liquid_spread" - -///added to structures we want the mobs to be able to target. -#define TRAIT_MOB_DESTROYABLE "mob_destroyable" diff --git a/code/__DEFINES/~monkestation/virology.dm b/code/__DEFINES/~monkestation/virology.dm index 7b63db744b22..8b3008d78218 100644 --- a/code/__DEFINES/~monkestation/virology.dm +++ b/code/__DEFINES/~monkestation/virology.dm @@ -47,6 +47,7 @@ #define DISEASE_TRAUMA "trauma" #define DISEASE_DECLONING "decloning" #define DISEASE_ANXIETY "anxiety" +#define DISEASE_SHOCK "shock" #define DISEASE_DORMANT (1 << 3) #define DISEASE_COPYSTAGE (1<<4) diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index b53b27f59e97..16c6c5ae2364 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -17,6 +17,37 @@ ///Remove an untyped item to a list, taking care to handle list items by wrapping them in a list to remove the footgun #define UNTYPED_LIST_REMOVE(list, item) (list -= LIST_VALUE_WRAP_LISTS(item)) +/* + * ## Lazylists + * + * * What is a lazylist? + * + * True to its name a lazylist is a lazy instantiated list. + * It is a list that is only created when necessary (when it has elements) and is null when empty. + * + * * Why use a lazylist? + * + * Lazylists save memory - an empty list that is never used takes up more memory than just `null`. + * + * * When to use a lazylist? + * + * Lazylists are best used on hot types when making lists that are not always used. + * + * For example, if you were adding a list to all atoms that tracks the names of people who touched it, + * you would want to use a lazylist because most atoms will never be touched by anyone. + * + * * How do I use a lazylist? + * + * A lazylist is just a list you defined as `null` rather than `list()`. + * Then, you use the LAZY* macros to interact with it, which are essentially null-safe ways to interact with a list. + * + * Note that you probably should not be using these macros if your list is not a lazylist. + * This will obfuscate the code and make it a bit harder to read and debug. + * + * Generally speaking you shouldn't be checking if your lazylist is `null` yourself, the macros will do that for you. + * Remember that LAZYLEN (and by extension, length) will return 0 if the list is null. + */ + ///Initialize the lazylist #define LAZYINITLIST(L) if (!L) { L = list(); } ///If the provided list is empty, set it to null @@ -53,21 +84,38 @@ #define LAZYACCESSASSOC(L, I, K) L ? L[I] ? L[I][K] ? L[I][K] : null : null : null ///Qdel every item in the list before setting the list to null #define QDEL_LAZYLIST(L) for(var/I in L) qdel(I); L = null; +///Qdel every value in an assoc list list before setting the list to null +#define QDEL_LAZYASSOCLIST(L) for(var/I in L) qdel(L[I]); L = null; //These methods don't null the list ///Use LAZYLISTDUPLICATE instead if you want it to null with no entries #define LAZYCOPY(L) (L ? L.Copy() : list() ) /// Consider LAZYNULL instead #define LAZYCLEARLIST(L) if(L) L.Cut() +/// Clears any nulls out of a list, and also turns the list itself null if its empty afterwards. +#define LAZYCLEARNULLS(L) if(L) { list_clear_nulls(L); if(!length(L)) L = null }; ///Returns the list if it's actually a valid list, otherwise will initialize it #define SANITIZE_LIST(L) ( islist(L) ? L : list() ) -#define reverseList(L) reverse_range(L.Copy()) - /// Performs an insertion on the given lazy list with the given key and value. If the value already exists, a new one will not be made. #define LAZYORASSOCLIST(lazy_list, key, value) \ LAZYINITLIST(lazy_list); \ LAZYINITLIST(lazy_list[key]); \ lazy_list[key] |= value; +///Ensures the length of a list is at least I, prefilling it with V if needed. if V is a proc call, it is repeated for each new index so that list() can just make a new list for each item. +#define LISTASSERTLEN(L, I, V...) \ + if (length(L) < I) { \ + var/_OLD_LENGTH = length(L); \ + L.len = I; \ + /* Convert the optional argument to a if check */ \ + for (var/_USELESS_VAR in list(V)) { \ + for (var/_INDEX_TO_ASSIGN_TO in _OLD_LENGTH+1 to I) { \ + L[_INDEX_TO_ASSIGN_TO] = V; \ + } \ + } \ + } + +#define reverseList(L) reverse_range(L.Copy()) + /// Passed into BINARY_INSERT to compare keys #define COMPARE_KEY __BIN_LIST[__BIN_MID] /// Passed into BINARY_INSERT to compare values @@ -585,8 +633,8 @@ return inserted_list = inserted_list.Copy() - for(var/i in 1 to inserted_list.len - 1) - inserted_list.Swap(i, rand(i, inserted_list.len)) + for(var/i in 1 to length(inserted_list) - 1) + inserted_list.Swap(i, rand(i, length(inserted_list))) return inserted_list @@ -595,8 +643,8 @@ if(!inserted_list) return - for(var/i in 1 to inserted_list.len - 1) - inserted_list.Swap(i, rand(i, inserted_list.len)) + for(var/i in 1 to length(inserted_list) - 1) + inserted_list.Swap(i, rand(i, length(inserted_list))) ///Return a list with no duplicate entries /proc/unique_list(list/inserted_list) diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index bb688b4655fb..066b0d212ac4 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -273,13 +273,11 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(list( // Now their turfs var/list/turfs = list() for(var/area/pull_from as anything in areas_to_pull) - var/list/our_turfs = pull_from.get_contained_turfs() - if(target_z == 0) - turfs += our_turfs + if (target_z == 0) + for (var/list/zlevel_turfs as anything in pull_from.get_zlevel_turf_lists()) + turfs += zlevel_turfs else - for(var/turf/turf_in_area as anything in our_turfs) - if(target_z == turf_in_area.z) - turfs += turf_in_area + turfs += pull_from.get_turfs_by_zlevel(target_z) return turfs diff --git a/code/__HELPERS/heap.dm b/code/__HELPERS/heap.dm index c860b2013ca7..584872a6056c 100644 --- a/code/__HELPERS/heap.dm +++ b/code/__HELPERS/heap.dm @@ -10,7 +10,7 @@ L = new() cmp = compare -/datum/heap/Destroy(force, ...) +/datum/heap/Destroy(force) for(var/i in L) // because this is before the list helpers are loaded qdel(i) L = null diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 0a743ee3a43d..54892b25294b 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -730,6 +730,10 @@ world } \ current_layer = base_layer + appearance.layer + current_layer / 1000; \ } \ + /* If we are using topdown rendering, chop that part off so things layer together as expected */ \ + if((current_layer >= TOPDOWN_LAYER && current_layer < EFFECTS_LAYER) || current_layer > TOPDOWN_LAYER + EFFECTS_LAYER) { \ + current_layer -= TOPDOWN_LAYER; \ + } \ for (var/index_to_compare_to in 1 to layers.len) { \ var/compare_to = layers[index_to_compare_to]; \ if (current_layer < layers[compare_to]) { \ @@ -741,9 +745,10 @@ world } var/static/icon/flat_template = icon('icons/blanks/32x32.dmi', "nothing") + var/icon/flat = icon(flat_template) if(!appearance || appearance.alpha <= 0) - return icon(flat_template) + return flat if(start) if(!defdir) @@ -771,15 +776,20 @@ world var/base_icon_dir //We'll use this to get the icon state to display if not null BUT NOT pass it to overlays as the dir we have - //Try to remove/optimize this section ASAP, CPU hog. - //Determines if there's directionals. - if(render_icon && curdir != SOUTH) - if ( - !length(icon_states(icon(curicon, curstate, NORTH))) \ - && !length(icon_states(icon(curicon, curstate, EAST))) \ - && !length(icon_states(icon(curicon, curstate, WEST))) \ - ) - base_icon_dir = SOUTH + if(render_icon) + //Try to remove/optimize this section if you can, it's a CPU hog. + //Determines if there're directionals. + if (curdir != SOUTH) + // icon states either have 1, 4 or 8 dirs. We only have to check + // one of NORTH, EAST or WEST to know that this isn't a 1-dir icon_state since they just have SOUTH. + if(!length(icon_states(icon(curicon, curstate, NORTH)))) + base_icon_dir = SOUTH + + var/list/icon_dimensions = get_icon_dimensions(curicon) + var/icon_width = icon_dimensions["width"] + var/icon_height = icon_dimensions["height"] + if(icon_width != 32 || icon_height != 32) + flat.Scale(icon_width, icon_height) if(!base_icon_dir) base_icon_dir = curdir @@ -787,7 +797,6 @@ world var/curblend = appearance.blend_mode || defblend if(appearance.overlays.len || appearance.underlays.len) - var/icon/flat = icon(flat_template) // Layers will be a sorted list of icons/overlays, based on the order in which they are displayed var/list/layers = list() var/image/copy diff --git a/code/__HELPERS/lighting.dm b/code/__HELPERS/lighting.dm index 674dc1d71134..98ed7e7d66c3 100644 --- a/code/__HELPERS/lighting.dm +++ b/code/__HELPERS/lighting.dm @@ -59,13 +59,13 @@ // First, we cut away a constant amount var/cut_away = (alpha_to_leave - 1) / 255 - var/atom/movable/render_step/color/alpha_threshold_down = new(null, make_blocker, list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0,0,0,-cut_away)) + var/atom/movable/render_step/color/alpha_threshold_down = new(make_blocker, make_blocker.render_target, list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0,0,0,-cut_away)) alpha_threshold_down.render_target = "*emissive_block_alpha_down_[uid]" // Then we multiply what remains by the amount we took away - var/atom/movable/render_step/color/alpha_threshold_up = new(null, alpha_threshold_down, list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,alpha_to_leave, 0,0,0,0)) + var/atom/movable/render_step/color/alpha_threshold_up = new(make_blocker, alpha_threshold_down.render_target, list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,alpha_to_leave, 0,0,0,0)) alpha_threshold_up.render_target = "*emissive_block_alpha_up_[uid]" // Now we just feed that into an emissive blocker - var/atom/movable/render_step/emissive_blocker/em_block = new(null, alpha_threshold_up) + var/atom/movable/render_step/emissive_blocker/em_block = new(make_blocker, alpha_threshold_up.render_target) var/list/hand_back = list() hand_back += alpha_threshold_down hand_back += alpha_threshold_up diff --git a/code/__HELPERS/matrices.dm b/code/__HELPERS/matrices.dm index 6b7e5543d579..9fe3db3ada11 100644 --- a/code/__HELPERS/matrices.dm +++ b/code/__HELPERS/matrices.dm @@ -68,6 +68,20 @@ //doesn't have an object argument because this is "Stacking" with the animate call above //3 billion% intentional +/// Similar to shake but more spasm-y and jerk-y +/atom/proc/spasm_animation(loops = -1) + var/list/transforms = list( + matrix(transform).Translate(-1, 0), + matrix(transform).Translate(0, 1), + matrix(transform).Translate(1, 0), + matrix(transform).Translate(0, -1), + ) + + animate(src, transform = transforms[1], time = 0.2, loop = loops) + animate(transform = transforms[2], time = 0.1) + animate(transform = transforms[3], time = 0.2) + animate(transform = transforms[4], time = 0.3) + /** * Shear the transform on either or both axes. * * x - X axis shearing diff --git a/code/__HELPERS/paths/jps.dm b/code/__HELPERS/paths/jps.dm index 79a4d0204f51..ef64a8d169cc 100644 --- a/code/__HELPERS/paths/jps.dm +++ b/code/__HELPERS/paths/jps.dm @@ -38,7 +38,7 @@ f_value = number_tiles + heuristic // otherwise, no parent node means this is from a subscan lateral scan, so we just need the tile for now until we call [datum/jps/proc/update_parent] on it -/datum/jps_node/Destroy(force, ...) +/datum/jps_node/Destroy(force) previous_node = null return ..() @@ -56,7 +56,7 @@ /datum/pathfind/jps /// The movable we are pathing - var/atom/movable/caller + var/atom/movable/requester /// The turf we're trying to path to (note that this won't track a moving target) var/turf/end /// The open list/stack we pop nodes out from (TODO: make this a normal list and macro-ize the heap operations to reduce proc overhead) @@ -73,9 +73,9 @@ ///Defines how we handle diagonal moves. See __DEFINES/path.dm var/diagonal_handling = DIAGONAL_REMOVE_CLUNKY -/datum/pathfind/jps/proc/setup(atom/movable/caller, list/access, max_distance, simulated_only, avoid, list/datum/callback/on_finish, atom/goal, mintargetdist, skip_first, diagonal_handling) - src.caller = caller - src.pass_info = new(caller, access) +/datum/pathfind/jps/proc/setup(atom/movable/requester, list/access, max_distance, simulated_only, avoid, list/datum/callback/on_finish, atom/goal, mintargetdist, skip_first, diagonal_handling) + src.requester = requester + src.pass_info = new(requester, access) src.max_distance = max_distance src.simulated_only = simulated_only src.avoid = avoid @@ -89,12 +89,12 @@ /datum/pathfind/jps/Destroy(force) . = ..() - caller = null + requester = null end = null open = null /datum/pathfind/jps/start() - start = start || get_turf(caller) + start = start || get_turf(requester) . = ..() if(!.) return . @@ -116,7 +116,7 @@ . = ..() if(!.) return . - if(QDELETED(caller)) + if(QDELETED(requester)) return FALSE while(!open.is_empty() && !path) diff --git a/code/__HELPERS/paths/path.dm b/code/__HELPERS/paths/path.dm index 3b674fdc7afb..01db1ee108e7 100644 --- a/code/__HELPERS/paths/path.dm +++ b/code/__HELPERS/paths/path.dm @@ -4,7 +4,7 @@ * It will yield until a path is returned, using magic * * Arguments: - * * caller: The movable atom that's trying to find the path + * * requester: The movable atom that's trying to find the path * * end: What we're trying to path to. It doesn't matter if this is a turf or some other atom, we're gonna just path to the turf it's on anyway * * max_distance: The maximum number of steps we can take in a given path to search (default: 30, 0 = infinite) * * mintargetdistance: Minimum distance to the target before path returns, could be used to get near a target, but not right to it - for an AI mob with a gun, for example. @@ -14,16 +14,16 @@ * * skip_first: Whether or not to delete the first item in the path. This would be done because the first item is the starting tile, which can break movement for some creatures. * * diagonal_handling: defines how we handle diagonal moves. see __DEFINES/path.dm */ -/proc/get_path_to(atom/movable/caller, atom/end, max_distance = 30, mintargetdist, access=list(), simulated_only = TRUE, turf/exclude, skip_first=TRUE, diagonal_handling=DIAGONAL_REMOVE_CLUNKY) +/proc/get_path_to(atom/movable/requester, atom/end, max_distance = 30, mintargetdist, access=list(), simulated_only = TRUE, turf/exclude, skip_first=TRUE, diagonal_handling=DIAGONAL_REMOVE_CLUNKY) var/list/hand_around = list() // We're guarenteed that list will be the first list in pathfinding_finished's argset because of how callback handles the arguments list var/datum/callback/await = list(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pathfinding_finished), hand_around)) - if(!SSpathfinder.pathfind(caller, end, max_distance, mintargetdist, access, simulated_only, exclude, skip_first, diagonal_handling, await)) + if(!SSpathfinder.pathfind(requester, end, max_distance, mintargetdist, access, simulated_only, exclude, skip_first, diagonal_handling, await)) return list() UNTIL(length(hand_around)) var/list/return_val = hand_around[1] - if(!islist(return_val) || (QDELETED(caller) || QDELETED(end))) // It's trash, just hand back empty to make it easy + if(!islist(return_val) || (QDELETED(requester) || QDELETED(end))) // It's trash, just hand back empty to make it easy return list() return return_val @@ -37,7 +37,7 @@ * It will yield until a path is returned, using magic * * Arguments: - * * caller: The movable atom that's trying to find the path + * * requester: The movable atom that's trying to find the path * * end: What we're trying to path to. It doesn't matter if this is a turf or some other atom, we're gonna just path to the turf it's on anyway * * max_distance: The maximum number of steps we can take in a given path to search (default: 30, 0 = infinite) * * mintargetdistance: Minimum distance to the target before path returns, could be used to get near a target, but not right to it - for an AI mob with a gun, for example. @@ -47,29 +47,29 @@ * * exclude: If we want to avoid a specific turf, like if we're a mulebot who already got blocked by some turf * * skip_first: Whether or not to delete the first item in the path. This would be done because the first item is the starting tile, which can break movement for some creatures. */ -/proc/get_swarm_path_to(atom/movable/caller, atom/end, max_distance = 30, mintargetdist, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first=TRUE) +/proc/get_swarm_path_to(atom/movable/requester, atom/end, max_distance = 30, mintargetdist, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first=TRUE) var/list/hand_around = list() // We're guarenteed that list will be the first list in pathfinding_finished's argset because of how callback handles the arguments list var/datum/callback/await = list(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pathfinding_finished), hand_around)) - if(!SSpathfinder.swarmed_pathfind(caller, end, max_distance, mintargetdist, age, access, simulated_only, exclude, skip_first, await)) + if(!SSpathfinder.swarmed_pathfind(requester, end, max_distance, mintargetdist, age, access, simulated_only, exclude, skip_first, await)) return list() UNTIL(length(hand_around)) var/list/return_val = hand_around[1] - if(!islist(return_val) || (QDELETED(caller) || QDELETED(end))) // It's trash, just hand back empty to make it easy + if(!islist(return_val) || (QDELETED(requester) || QDELETED(end))) // It's trash, just hand back empty to make it easy return list() return return_val -/proc/get_sssp(atom/movable/caller, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude) +/proc/get_sssp(atom/movable/requester, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude) var/list/hand_around = list() // We're guarenteed that list will be the first list in pathfinding_finished's argset because of how callback handles the arguments list var/datum/callback/await = list(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pathfinding_finished), hand_around)) - if(!SSpathfinder.build_map(caller, get_turf(caller), max_distance, access, simulated_only, exclude, await)) + if(!SSpathfinder.build_map(requester, get_turf(requester), max_distance, access, simulated_only, exclude, await)) return null UNTIL(length(hand_around)) var/datum/path_map/return_val = hand_around[1] - if(!istype(return_val, /datum/path_map) || (QDELETED(caller))) // It's trash, just hand back null to make it easy + if(!istype(return_val, /datum/path_map) || (QDELETED(requester))) // It's trash, just hand back null to make it easy return null return return_val @@ -97,7 +97,7 @@ /// Datum that holds the canpass info of this pathing attempt. This is what CanAstarPass sees var/datum/can_pass_info/pass_info -/datum/pathfind/Destroy(force, ...) +/datum/pathfind/Destroy(force) . = ..() SSpathfinder.active_pathing -= src SSpathfinder.currentrun -= src @@ -202,7 +202,7 @@ return modified_path /** - * For seeing if we can actually move between 2 given turfs while accounting for our access and the caller's pass_flags + * For seeing if we can actually move between 2 given turfs while accounting for our access and the requester's pass_flags * * Assumes destinantion turf is non-dense - check and shortcircuit in code invoking this proc to avoid overhead. * Makes some other assumptions, such as assuming that unless declared, non dense objects will not block movement. @@ -297,8 +297,10 @@ var/incapacitated = FALSE /// Is our mob incorporeal var/incorporeal_move = FALSE - /// is our mob a xenofauna or slime + /// monkestation addition: is our mob a xenofauna or slime var/xenofauna_or_slime = FALSE + /// monkestation addition: do we have TRAIT_GOES_THROUGH_WOODEN_BARRICADES + var/goes_thru_barricades = FALSE /// If our mob has a rider, what does it look like var/datum/can_pass_info/rider_info = null /// If our mob is buckled to something, what's it like @@ -313,7 +315,7 @@ /// Let's avoid this var/camera_type - /// Weakref to the caller used to generate this info + /// Weakref to the requester used to generate this info /// Should not use this almost ever, it's for context and to allow for proc chains that /// Require a movable var/datum/weakref/caller_ref = null @@ -355,6 +357,11 @@ src.camera_type = construct_from.type src.is_bot = isbot(construct_from) + // monkestation start: add TRAIT_GOES_THROUGH_WOODEN_BARRICADES + if(HAS_TRAIT(construct_from, TRAIT_GOES_THROUGH_WOODEN_BARRICADES)) + goes_thru_barricades = TRUE + // monkestation end + if(construct_from.pulling) src.pulling_info = new(construct_from.pulling, access, no_id, call_depth + 1) diff --git a/code/__HELPERS/paths/sssp.dm b/code/__HELPERS/paths/sssp.dm index f735c6646948..78b1c62dde58 100644 --- a/code/__HELPERS/paths/sssp.dm +++ b/code/__HELPERS/paths/sssp.dm @@ -201,8 +201,8 @@ /// Our current position in the working queue var/working_index -/datum/pathfind/sssp/proc/setup(atom/movable/caller, list/access, turf/center, max_distance, simulated_only, turf/avoid, list/datum/callback/on_finish) - src.pass_info = new(caller, access) +/datum/pathfind/sssp/proc/setup(atom/movable/requester, list/access, turf/center, max_distance, simulated_only, turf/avoid, list/datum/callback/on_finish) + src.pass_info = new(requester, access) src.start = center src.max_distance = max_distance src.simulated_only = simulated_only diff --git a/code/__HELPERS/pronouns.dm b/code/__HELPERS/pronouns.dm index d0b6b5d90629..67087c65fa9a 100644 --- a/code/__HELPERS/pronouns.dm +++ b/code/__HELPERS/pronouns.dm @@ -402,3 +402,48 @@ temp_gender = gender if(temp_gender != PLURAL) . = "es" + +//MONKESTATION EDIT START +// Genders for plushies +/obj/item/toy/plush/p_they(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "it" + switch(temp_gender) + if(FEMALE) + . = "she" + if(MALE) + . = "he" + if(PLURAL) + . = "they" + if(capitalized) + . = capitalize(.) + +/obj/item/toy/plush/p_have(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "has" + if(temp_gender == PLURAL) + . = "have" + +/obj/item/toy/plush/p_their(capitalized, temp_gender) + if(!temp_gender) + temp_gender = gender + . = "its" + switch(temp_gender) + if(FEMALE) + . = "her" + if(MALE) + . = "his" + if(PLURAL) + . = "their" + if(capitalized) + . = capitalize(.) + +/obj/item/toy/plush/p_are(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "is" + if(temp_gender == PLURAL) + . = "are" +//MONKESTATION EDIT END diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 6af9cc1a5460..2b82cbc7383d 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -281,6 +281,7 @@ GLOBAL_LIST_INIT(round_end_images, world.file2list("data/image_urls.txt")) // MO //stop collecting feedback during grifftime SSblackbox.Seal() + save_datums() // we care about this for now // monkestation start: token backups, monkecoin rewards, challenges, and roundend webhook save_tokens() @@ -295,10 +296,10 @@ GLOBAL_LIST_INIT(round_end_images, world.file2list("data/image_urls.txt")) // MO /datum/controller/subsystem/ticker/proc/format_roundend_embed(message) var/datum/discord_embed/embed = new() embed.title = "Round End" - embed.description = @"[Join Server!](http://play.monkestation.com:7420)" + embed.description = CONFIG_GET(string/roundend_webhook_description) embed.author = "Round Controller" - embed.content = "<@&999008528595419278>" - if(GLOB.round_end_images.len) + embed.content = CONFIG_GET(string/roundend_webhook_content) + if(length(GLOB.round_end_images)) embed.image = pick(GLOB.round_end_images) var/round_state = "Round has ended" @@ -331,7 +332,7 @@ GLOBAL_LIST_INIT(round_end_images, world.file2list("data/image_urls.txt")) // MO webhook_info["username"] = CONFIG_GET(string/roundend_webhook_name) if(CONFIG_GET(string/mentorhelp_webhook_pfp)) webhook_info["avatar_url"] = CONFIG_GET(string/roundend_webhook_pfp) - webhook_info["flags"] = DISCORD_SUPPRESS_NOTIFICATIONS // monke edit: @silent roundend pings + webhook_info["flags"] = DISCORD_SUPPRESS_NOTIFICATIONS // Uncomment when servers are moved to TGS4 // send2chat(new /datum/tgs_message_conent("[initiator_ckey] | [message_content]"), "ahelp", TRUE) var/list/headers = list() diff --git a/code/__HELPERS/view.dm b/code/__HELPERS/view.dm index c8d46e31bd67..2bc7f1078c8b 100644 --- a/code/__HELPERS/view.dm +++ b/code/__HELPERS/view.dm @@ -20,8 +20,16 @@ view_info[2] *= world.icon_size return view_info -/proc/in_view_range(mob/user, atom/A) - var/list/view_range = getviewsize(user.client.view) +// monkestation edit: make this proc actually work as seemingly intended +/proc/in_view_range(mob/user, atom/A, require_same_z = FALSE) + var/list/view_range = getviewsize(user.client?.view || world.view) var/turf/source = get_turf(user) var/turf/target = get_turf(A) - return ISINRANGE(target.x, source.x - view_range[1], source.x + view_range[1]) && ISINRANGE(target.y, source.y - view_range[1], source.y + view_range[1]) + if(QDELETED(source) || QDELETED(target)) + return FALSE + var/x_range = ceil(view_range[1] * 0.5) + var/y_range = ceil(view_range[2] * 0.5) + if(require_same_z && source.z != target.z) + return FALSE + return ISINRANGE(target.x, source.x - x_range, source.x + x_range) && ISINRANGE(target.y, source.y - y_range, source.y + y_range) +// monkestation end diff --git a/code/__HELPERS/~monkestation-helpers/icons.dm b/code/__HELPERS/~monkestation-helpers/icons.dm new file mode 100644 index 000000000000..73b6900edc93 --- /dev/null +++ b/code/__HELPERS/~monkestation-helpers/icons.dm @@ -0,0 +1,21 @@ +#define TMP_UPSCALE_PATH "tmp/resize_icon.png" + +/// Upscales an icon using rust-g. +/// You really shouldn't use this TOO often, as it has to copy the icon to a temporary png file, +/// resize it, fcopy_rsc the resized png, and then create a new /icon from said png. +/// Cache the output where possible. +/proc/resize_icon(icon/icon, width, height, resize_type = RUSTG_RESIZE_NEAREST) as /icon + RETURN_TYPE(/icon) + SHOULD_BE_PURE(TRUE) + + if(!istype(icon)) + CRASH("Attempted to upscale non-icon") + if(!IS_SAFE_NUM(width) || !IS_SAFE_NUM(height)) + CRASH("Attempted to upscale icon to non-number width/height") + if(!fcopy(icon, TMP_UPSCALE_PATH)) + CRASH("Failed to create temporary png file to upscale") + UNLINT(rustg_dmi_resize_png(TMP_UPSCALE_PATH, "[width]", "[height]", resize_type)) // technically impure but in practice its not + . = icon(fcopy_rsc(TMP_UPSCALE_PATH)) + fdel(TMP_UPSCALE_PATH) + +#undef TMP_UPSCALE_PATH diff --git a/code/__HELPERS/~monkestation-helpers/mapping.dm b/code/__HELPERS/~monkestation-helpers/mapping.dm index a4d0a68fca7e..8d674953cdcc 100644 --- a/code/__HELPERS/~monkestation-helpers/mapping.dm +++ b/code/__HELPERS/~monkestation-helpers/mapping.dm @@ -11,6 +11,6 @@ CRASH("Passed non-typepath [typepath] to trim_directional_helper_suffix") var/static/regex/directional_helper_regex if(!directional_helper_regex) - directional_helper_regex = new(@"\/directional\/(north|south|east|west)$") + directional_helper_regex = new(@"\/(directional\/(north|south|east|west)|uncommon|rare)$") var/replaced = replacetext("[typepath]", directional_helper_regex, "") return text2path(replaced) || typepath diff --git a/code/__HELPERS/~monkestation-helpers/mobs.dm b/code/__HELPERS/~monkestation-helpers/mobs.dm new file mode 100644 index 000000000000..7a13f5fbfcd9 --- /dev/null +++ b/code/__HELPERS/~monkestation-helpers/mobs.dm @@ -0,0 +1,31 @@ +/** + * Gets the mind from a variable, whether it be a mob, or a mind itself. + * Also works on brains - it will try to fetch the brainmob's mind. + * If [include_last] is true, then it will also return last_mind for carbons if there isn't a current mind. + */ +/proc/get_mind(target, include_last = FALSE) as /datum/mind + RETURN_TYPE(/datum/mind) + if(istype(target, /datum/mind)) + return target + else if(ismob(target)) + var/mob/mob_target = target + if(!QDELETED(mob_target.mind)) + return mob_target.mind + if(include_last && iscarbon(mob_target)) + var/mob/living/carbon/carbon_target = mob_target + if(!QDELETED(carbon_target.last_mind)) + return carbon_target.last_mind + else if(istype(target, /obj/item/organ/internal/brain)) + var/obj/item/organ/internal/brain/brain = target + if(!QDELETED(brain.brainmob?.mind)) + return brain.brainmob.mind + +/proc/is_late_arrival(mob/living/player) + var/static/cached_result + if(!isnull(cached_result)) + return cached_result + if(!HAS_TRAIT(SSstation, STATION_TRAIT_LATE_ARRIVALS) || (STATION_TIME_PASSED() > 1 MINUTES)) + return cached_result = FALSE + if(QDELETED(player) || !istype(get_area(player), /area/shuttle/arrival)) + return FALSE + return TRUE diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 69519a66b735..04d1eba9ecbd 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -65,7 +65,8 @@ // If this is uncommented, we do a single run though of the game setup and tear down process with unit tests in between // #define UNIT_TESTS -// If this is uncommented, will attempt to load and initialize prof.dll/libprof.so. +// If this is uncommented, will attempt to load and initialize prof.dll/libprof.so by default. +// Even if it's not defined, you can pass "tracy" via -params in order to try to load it. // We do not ship byond-tracy. Build it yourself here: https://github.com/mafemergency/byond-tracy/ // #define USE_BYOND_TRACY diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index a7e22f76f480..fb117fadab69 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -160,6 +160,7 @@ DEFINE_BITFIELD(interaction_flags_atom, list( "INTERACT_ATOM_REQUIRES_DEXTERITY" = INTERACT_ATOM_REQUIRES_DEXTERITY, "INTERACT_ATOM_UI_INTERACT" = INTERACT_ATOM_UI_INTERACT, "INTERACT_ATOM_ALLOW_USER_LOCATION" = INTERACT_ATOM_ALLOW_USER_LOCATION, + "INTERACT_ATOM_IGNORE_MOBILITY" = INTERACT_ATOM_IGNORE_MOBILITY, )) DEFINE_BITFIELD(interaction_flags_machine, list( @@ -401,6 +402,16 @@ DEFINE_BITFIELD(change_exempt_flags, list( "BP_BLOCK_CHANGE_SPECIES" = BP_BLOCK_CHANGE_SPECIES, )) +DEFINE_BITFIELD(head_flags, list( + "HEAD_HAIR" = HEAD_HAIR, + "HEAD_FACIAL_HAIR" = HEAD_FACIAL_HAIR, + "HEAD_LIPS" = HEAD_LIPS, + "HEAD_EYESPRITES" = HEAD_EYESPRITES, + "HEAD_EYECOLOR" = HEAD_EYECOLOR, + "HEAD_EYEHOLES" = HEAD_EYEHOLES, + "HEAD_DEBRAIN" = HEAD_DEBRAIN, +)) + DEFINE_BITFIELD(supports_variations_flags, list( "CLOTHING_NO_VARIATION" = CLOTHING_NO_VARIATION, "CLOTHING_DIGITIGRADE_VARIATION" = CLOTHING_DIGITIGRADE_VARIATION, diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index d19a62c5b13f..bcb83d5d97e5 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -197,9 +197,12 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/pen/screwdriver = 1, ) = 8, +//monkestation edit start list(//artifacts /obj/effect/artifact_spawner = 4, + /obj/item/a_gift/anything/wiz_name = 2, ) = 8, +//monkestation edit end list(//construction and crafting /obj/item/beacon = 1, @@ -286,6 +289,10 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/instrument/violin/golden = 2, ) = 2, + list(//MONKESTATION ADDITION: misc + /obj/item/vending_refill/plushvendor = 1, + ) = 2, + list(//fakeout items, keep this list at low relative weight /obj/item/clothing/shoes/jackboots = 1, /obj/item/dice/d20 = 1, //To balance out the stealth die of fates in oddities @@ -345,14 +352,15 @@ GLOBAL_LIST_INIT(rarity_loot, list(//rare: really good items ) = 1, list(//misc - /obj/item/book/granter/crafting_recipe/maint_gun/pipegun_prime = 1, + /obj/item/book/granter/crafting_recipe/maint_gun/pipegun_prime = 1, //monkestation edit: added maint_gun /obj/item/book/granter/crafting_recipe/trash_cannon = 1, - /obj/item/book/granter/crafting_recipe/maint_gun/laser_musket_prime = 1, + /obj/item/book/granter/crafting_recipe/maint_gun/laser_musket_prime = 1, //monkestation edit /obj/item/book/granter/sign_language = 1, /obj/item/disk/nuclear/fake = 1, /obj/item/skillchip/brainwashing = 1, /obj/item/tattoo_kit = 1, /obj/item/folder/ancient_paperwork = 1, + /obj/item/seeds/tree/money = 1, //monkestation edit ) = 1, )) diff --git a/code/_globalvars/lists/ores_spawned.dm b/code/_globalvars/lists/ores_spawned.dm new file mode 100644 index 000000000000..227e06061ad7 --- /dev/null +++ b/code/_globalvars/lists/ores_spawned.dm @@ -0,0 +1,35 @@ +/** + * Sets of global lists breaking down the base spawning distributions for various maps and stations. + * + * Currently used for ore vents on roundstart when the map is generated. (See ore_vent.dm, seedRuins() and ore_generation.dm) + * Ore vent lists here are copied to ore_vent_minerals on ruin seeding, + * in order to dynamically adjust the spawn rates as materials are picked and set a global ore distribution from vents. + * + * By default vents pull 4 unique materials each, but this can vary with subtypes. + */ + +GLOBAL_LIST_INIT(ore_vent_minerals_lavaland, list( + /datum/material/iron = 13, + /datum/material/glass = 12, + /datum/material/plasma = 9, + /datum/material/titanium = 6, + /datum/material/silver = 5, + /datum/material/gold = 5, + /datum/material/diamond = 3, + /datum/material/uranium = 3, + /datum/material/bluespace = 3, + /datum/material/plastic = 1, + )) + +GLOBAL_LIST_INIT(ore_vent_minerals_triple_z, list( + /datum/material/iron = 24, + /datum/material/glass = 23, + /datum/material/plasma = 16, + /datum/material/titanium = 10, + /datum/material/silver = 8, + /datum/material/gold = 7, + /datum/material/diamond = 4, + /datum/material/uranium = 4, + /datum/material/bluespace = 3, + /datum/material/plastic = 1, + )) diff --git a/code/_globalvars/lists/typecache.dm b/code/_globalvars/lists/typecache.dm index 0436b4d3b086..d5ec5822d178 100644 --- a/code/_globalvars/lists/typecache.dm +++ b/code/_globalvars/lists/typecache.dm @@ -14,6 +14,7 @@ GLOBAL_LIST_INIT(typecache_machine_or_structure, typecacheof(list( /obj/structure, ))) +/* monkestation removal: use TRAIT_TURF_HAS_ELEVATED_STRUCTURE instead /// A typecache listing structures that are considered to have surfaces that you can place items on that are higher than the floor. This, of course, should be restricted to /atom/movables. This is primarily used for food decomposition code. GLOBAL_LIST_INIT(typecache_elevated_structures, typecacheof(list( /obj/machinery/conveyor, @@ -24,6 +25,7 @@ GLOBAL_LIST_INIT(typecache_elevated_structures, typecacheof(list( /obj/machinery/smartfridge, /obj/machinery/smartfridge/drying_rack, // Redundant, given above, but this is for the sake of explicitness. ))) +monkestation end */ /// A typecache of objects that player controlled, easily accessible, hostile mobs should not be able to attack GLOBAL_LIST_INIT(typecache_general_bad_hostile_attack_targets, typecacheof(list( diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm deleted file mode 100644 index 35b4fb233a4a..000000000000 --- a/code/_globalvars/traits.dm +++ /dev/null @@ -1,314 +0,0 @@ -/* - FUN ZONE OF ADMIN LISTINGS - Try to keep this in sync with __DEFINES/traits.dm - quirks have it's own panel so we don't need them here. -*/ -GLOBAL_LIST_INIT(traits_by_type, list( - /mob = list( - "TRAIT_KNOCKEDOUT" = TRAIT_KNOCKEDOUT, - "TRAIT_IMMOBILIZED" = TRAIT_IMMOBILIZED, - "TRAIT_FLOORED" = TRAIT_FLOORED, - "TRAIT_FORCED_STANDING" = TRAIT_FORCED_STANDING, - "TRAIT_HANDS_BLOCKED" = TRAIT_HANDS_BLOCKED, - "TRAIT_UI_BLOCKED" = TRAIT_UI_BLOCKED, - "TRAIT_PULL_BLOCKED" = TRAIT_PULL_BLOCKED, - "TRAIT_RESTRAINED" = TRAIT_RESTRAINED, - "TRAIT_PERFECT_ATTACKER" = TRAIT_PERFECT_ATTACKER, - "TRAIT_INCAPACITATED" = TRAIT_INCAPACITATED, - "TRAIT_CRITICAL_CONDITION" = TRAIT_CRITICAL_CONDITION, - "TRAIT_LITERATE" = TRAIT_LITERATE, - "TRAIT_ILLITERATE" = TRAIT_ILLITERATE, - "TRAIT_MUTE" = TRAIT_MUTE, - "TRAIT_ELDRITCH_PAINTING_EXAMINE" = TRAIT_ELDRITCH_PAINTING_EXAMINE, - "TRAIT_FLESH_DESIRE" = TRAIT_FLESH_DESIRE, - "TRAIT_EMOTEMUTE " = TRAIT_EMOTEMUTE, - "TRAIT_DEAF" = TRAIT_DEAF, - "TRAIT_FAT" = TRAIT_FAT, - "TRAIT_HUSK" = TRAIT_HUSK, - "TRAIT_DEFIB_BLACKLISTED" = TRAIT_DEFIB_BLACKLISTED, - "TRAIT_BADDNA" = TRAIT_BADDNA, - "TRAIT_CLUMSY" = TRAIT_CLUMSY, - "TRAIT_CHUNKYFINGERS" = TRAIT_CHUNKYFINGERS, - "TRAIT_CHUNKYFINGERS_IGNORE_BATON" = TRAIT_CHUNKYFINGERS_IGNORE_BATON, - "TRAIT_DUMB" = TRAIT_DUMB, - "TRAIT_ADVANCEDTOOLUSER" = TRAIT_ADVANCEDTOOLUSER, - "TRAIT_DISCOORDINATED_TOOL_USER" = TRAIT_DISCOORDINATED_TOOL_USER, - "TRAIT_PACIFISM" = TRAIT_PACIFISM, - "TRAIT_IGNORESLOWDOWN" = TRAIT_IGNORESLOWDOWN, - "TRAIT_IGNOREDAMAGESLOWDOWN" = TRAIT_IGNOREDAMAGESLOWDOWN, - "TRAIT_DEATHCOMA" = TRAIT_DEATHCOMA, - "TRAIT_FAKEDEATH" = TRAIT_FAKEDEATH, - "TRAIT_DISFIGURED" = TRAIT_DISFIGURED, - "TRAIT_XENO_HOST" = TRAIT_XENO_HOST, - "TRAIT_STUNIMMUNE" = TRAIT_STUNIMMUNE, - "TRAIT_BATON_RESISTANCE" = TRAIT_BATON_RESISTANCE, - "TRAIT_IWASBATONED" = TRAIT_IWASBATONED, - "TRAIT_SLEEPIMMUNE" = TRAIT_SLEEPIMMUNE, - "TRAIT_PUSHIMMUNE" = TRAIT_PUSHIMMUNE, - "TRAIT_SHOCKIMMUNE" = TRAIT_SHOCKIMMUNE, - "TRAIT_TESLA_SHOCKIMMUNE" = TRAIT_TESLA_SHOCKIMMUNE, - "TRAIT_STABLEHEART" = TRAIT_STABLEHEART, - "TRAIT_STABLELIVER" = TRAIT_STABLELIVER, - "TRAIT_RESISTHEAT" = TRAIT_RESISTHEAT, - "TRAIT_USED_DNA_VAULT" = TRAIT_USED_DNA_VAULT, - "TRAIT_RESISTHEATHANDS" = TRAIT_RESISTHEATHANDS, - "TRAIT_RESISTCOLD" = TRAIT_RESISTCOLD, - "TRAIT_RESISTHIGHPRESSURE" = TRAIT_RESISTHIGHPRESSURE, - "TRAIT_RESISTLOWPRESSURE" = TRAIT_RESISTLOWPRESSURE, - "TRAIT_BOMBIMMUNE" = TRAIT_BOMBIMMUNE, - "TRAIT_RADIMMUNE" = TRAIT_RADIMMUNE, - "TRAIT_GENELESS" = TRAIT_GENELESS, - "TRAIT_VIRUSIMMUNE" = TRAIT_VIRUSIMMUNE, - "TRAIT_PIERCEIMMUNE" = TRAIT_PIERCEIMMUNE, - "TRAIT_NODISMEMBER" = TRAIT_NODISMEMBER, - "TRAIT_NOFIRE" = TRAIT_NOFIRE, - "TRAIT_NOGUNS" = TRAIT_NOGUNS, - "TRAIT_NOHUNGER" = TRAIT_NOHUNGER, - "TRAIT_NOMETABOLISM" = TRAIT_NOMETABOLISM, - "TRAIT_PLASMA_LOVER_METABOLISM" = TRAIT_PLASMA_LOVER_METABOLISM, - "TRAIT_NOCLONELOSS" = TRAIT_NOCLONELOSS, - "TRAIT_TOXIMMUNE" = TRAIT_TOXIMMUNE, - "TRAIT_EASYDISMEMBER" = TRAIT_EASYDISMEMBER, - "TRAIT_LIMBATTACHMENT" = TRAIT_LIMBATTACHMENT, - "TRAIT_NOLIMBDISABLE" = TRAIT_NOLIMBDISABLE, - "TRAIT_EASILY_WOUNDED" = TRAIT_EASILY_WOUNDED, - "TRAIT_HARDLY_WOUNDED" = TRAIT_HARDLY_WOUNDED, - "TRAIT_NEVER_WOUNDED" = TRAIT_NEVER_WOUNDED, - "TRAIT_TOXINLOVER" = TRAIT_TOXINLOVER, - "TRAIT_NOCRITOVERLAY" = TRAIT_NOCRITOVERLAY, - "TRAIT_NOBREATH" = TRAIT_NOBREATH, - "TRAIT_ANTIMAGIC" = TRAIT_ANTIMAGIC, - "TRAIT_HOLY" = TRAIT_HOLY, - "TRAIT_DEPRESSION" = TRAIT_DEPRESSION, - "TRAIT_BLOOD_DEFICIENCY" = TRAIT_BLOOD_DEFICIENCY, - "TRAIT_JOLLY" = TRAIT_JOLLY, - "TRAIT_NO_GLIDE" = TRAIT_NO_GLIDE, - "TRAIT_NO_FLOATING_ANIM" = TRAIT_NO_FLOATING_ANIM, - "TRAIT_NOCRITDAMAGE" = TRAIT_NOCRITDAMAGE, - "TRAIT_NO_SLIP_WATER" = TRAIT_NO_SLIP_WATER, - "TRAIT_NO_SLIP_ICE" = TRAIT_NO_SLIP_ICE, - "TRAIT_NO_SLIP_SLIDE" = TRAIT_NO_SLIP_SLIDE, - "TRAIT_NO_SLIP_ALL" = TRAIT_NO_SLIP_ALL, - "TRAIT_NODEATH" = TRAIT_NODEATH, - "TRAIT_NOHARDCRIT" = TRAIT_NOHARDCRIT, - "TRAIT_NOSOFTCRIT" = TRAIT_NOSOFTCRIT, - "TRAIT_MINDSHIELD" = TRAIT_MINDSHIELD, - "TRAIT_DISSECTED" = TRAIT_DISSECTED, - "TRAIT_SIXTHSENSE" = TRAIT_SIXTHSENSE, - "TRAIT_FEARLESS" = TRAIT_FEARLESS, - "TRAIT_PARALYSIS_L_ARM" = TRAIT_PARALYSIS_L_ARM, - "TRAIT_PARALYSIS_R_ARM" = TRAIT_PARALYSIS_R_ARM, - "TRAIT_PARALYSIS_L_LEG" = TRAIT_PARALYSIS_L_LEG, - "TRAIT_PARALYSIS_R_LEG" = TRAIT_PARALYSIS_R_LEG, - "TRAIT_PARROT_PERCHED" = TRAIT_PARROT_PERCHED, - "TRAIT_CANNOT_OPEN_PRESENTS" = TRAIT_CANNOT_OPEN_PRESENTS, - "TRAIT_PRESENT_VISION" = TRAIT_PRESENT_VISION, - "TRAIT_DISK_VERIFIER" = TRAIT_DISK_VERIFIER, - "TRAIT_BYPASS_MEASURES" = TRAIT_BYPASS_MEASURES, - "TRAIT_NOMOBSWAP" = TRAIT_NOMOBSWAP, - "TRAIT_XRAY_VISION" = TRAIT_XRAY_VISION, - "TRAIT_WEB_WEAVER" = TRAIT_WEB_WEAVER, - "TRAIT_WEB_SURFER" = TRAIT_WEB_SURFER, - "TRAIT_THERMAL_VISION" = TRAIT_THERMAL_VISION, - "TRAIT_ABDUCTOR_TRAINING" = TRAIT_ABDUCTOR_TRAINING, - "TRAIT_ABDUCTOR_SCIENTIST_TRAINING" = TRAIT_ABDUCTOR_SCIENTIST_TRAINING, - "TRAIT_ALL_SURGERIES" = TRAIT_ALL_SURGERIES, // monke edit: TRAIT_ALL_SURGERIES - "TRAIT_PERFECT_SURGEON" = TRAIT_PERFECT_SURGEON, // monke edit: TRAIT_PERFECT_SURGEON - "TRAIT_STRONG_GRABBER" = TRAIT_STRONG_GRABBER, - "TRAIT_SOOTHED_THROAT" = TRAIT_SOOTHED_THROAT, - "TRAIT_BOOZE_SLIDER" = TRAIT_BOOZE_SLIDER, - "TRAIT_QUICK_CARRY" = TRAIT_QUICK_CARRY, - "TRAIT_QUICKER_CARRY" = TRAIT_QUICKER_CARRY, - "TRAIT_PLANT_SAFE" = TRAIT_PLANT_SAFE, - "TRAIT_UNINTELLIGIBLE_SPEECH" = TRAIT_UNINTELLIGIBLE_SPEECH, - "TRAIT_UNSTABLE" = TRAIT_UNSTABLE, - "TRAIT_OIL_FRIED" = TRAIT_OIL_FRIED, - "TRAIT_MONKEYFRIEND" = TRAIT_MONKEYFRIEND, - "TRAIT_MEDICAL_HUD" = TRAIT_MEDICAL_HUD, - "TRAIT_SECURITY_HUD" = TRAIT_SECURITY_HUD, - "TRAIT_DIAGNOSTIC_HUD" = TRAIT_DIAGNOSTIC_HUD, - "TRAIT_TRAIT_MEDIBOTCOMINGTHROUGH" = TRAIT_MEDIBOTCOMINGTHROUGH, - "TRAIT_PASSTABLE" = TRAIT_PASSTABLE, - "TRAIT_NOFLASH" = TRAIT_NOFLASH, - "TRAIT_XENO_IMMUNE" = TRAIT_XENO_IMMUNE, - "TRAIT_NAIVE" = TRAIT_NAIVE, - "TRAIT_PRIMITIVE" = TRAIT_PRIMITIVE, //unable to use mechs. Given to Ash Walkers - "TRAIT_GUNFLIP" = TRAIT_GUNFLIP, - "TRAIT_SPECIAL_TRAUMA_BOOST" = TRAIT_SPECIAL_TRAUMA_BOOST, - "TRAIT_SPACEWALK" = TRAIT_SPACEWALK, - "TRAIT_GAMERGOD" = TRAIT_GAMERGOD, - "TRAIT_GIANT" = TRAIT_GIANT, - "TRAIT_DWARF" = TRAIT_DWARF, - "TRAIT_SILENT_FOOTSTEPS" = TRAIT_SILENT_FOOTSTEPS, - "TRAIT_NICE_SHOT" = TRAIT_NICE_SHOT, - "TRAIT_TUMOR_SUPPRESSION" = TRAIT_TUMOR_SUPPRESSED, - "TRAIT_NO_EXTINGUISH" = TRAIT_NO_EXTINGUISH, - "TRAIT_SIGN_LANG" = TRAIT_SIGN_LANG, - "TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE" = TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE, - "TRAIT_WINE_TASTER" = TRAIT_WINE_TASTER, - "TRAIT_BONSAI" = TRAIT_BONSAI, - "TRAIT_LIGHTBULB_REMOVER" = TRAIT_LIGHTBULB_REMOVER, - "TRAIT_KNOW_CYBORG_WIRES" = TRAIT_KNOW_CYBORG_WIRES, - "TRAIT_KNOW_ENGI_WIRES" = TRAIT_KNOW_ENGI_WIRES, - "TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE, - "TRAIT_AGEUSIA" = TRAIT_AGEUSIA, - "TRAIT_HEAVY_SLEEPER" = TRAIT_HEAVY_SLEEPER, - "TRAIT_NIGHT_VISION" = TRAIT_NIGHT_VISION, - "TRAIT_LIGHT_STEP" = TRAIT_LIGHT_STEP, - "TRAIT_SPIRITUAL" = TRAIT_SPIRITUAL, - "TRAIT_CLOWN_ENJOYER" = TRAIT_CLOWN_ENJOYER, - "TRAIT_MIME_FAN" = TRAIT_MIME_FAN, - "TRAIT_VORACIOUS" = TRAIT_VORACIOUS, - "TRAIT_SELF_AWARE" = TRAIT_SELF_AWARE, - "TRAIT_FREERUNNING" = TRAIT_FREERUNNING, - "TRAIT_SKITTISH" = TRAIT_SKITTISH, - "TRAIT_POOR_AIM" = TRAIT_POOR_AIM, - "TRAIT_PROSOPAGNOSIA" = TRAIT_PROSOPAGNOSIA, - "TRAIT_TAGGER" = TRAIT_TAGGER, - "TRAIT_PHOTOGRAPHER" = TRAIT_PHOTOGRAPHER, - "TRAIT_MUSICIAN" = TRAIT_MUSICIAN, - "TRAIT_LIGHT_DRINKER" = TRAIT_LIGHT_DRINKER, - "TRAIT_LOUD_ASS" = TRAIT_LOUD_ASS, - "TRAIT_UNSTABLE_ASS" = TRAIT_UNSTABLE_ASS, - "TRAIT_STABLE_ASS" = TRAIT_STABLE_ASS, - "TRAIT_ANIME" = TRAIT_ANIME, - "TRAIT_HIDDEN_IMAGE" = TRAIT_HIDDEN_IMAGE, - "TRAIT_HIDDEN_CLOWN" = TRAIT_HIDDEN_CLOWN, - "TRAIT_SMOKER" = TRAIT_SMOKER, - "TRAIT_EMPATH" = TRAIT_EMPATH, - "TRAIT_FRIENDLY" = TRAIT_FRIENDLY, - "TRAIT_GRABWEAKNESS" = TRAIT_GRABWEAKNESS, - "TRAIT_SNOB" = TRAIT_SNOB, - "TRAIT_BALD" = TRAIT_BALD, - "TRAIT_BADTOUCH" = TRAIT_BADTOUCH, - "TRAIT_NOBLOOD" = TRAIT_NOBLOOD, - "TRAIT_KISS_OF_DEATH" = TRAIT_KISS_OF_DEATH, - "TRAIT_ANXIOUS" = TRAIT_ANXIOUS, - "TRAIT_WEAK_SOUL" = TRAIT_WEAK_SOUL, - "TRAIT_NO_SOUL" = TRAIT_NO_SOUL, - "TRAIT_INVISIBLE_MAN" = TRAIT_INVISIBLE_MAN, - "TRAIT_HIDE_EXTERNAL_ORGANS" = TRAIT_HIDE_EXTERNAL_ORGANS, - "TRAIT_CULT_HALO" = TRAIT_CULT_HALO, - "TRAIT_UNNATURAL_RED_GLOWY_EYES" = TRAIT_UNNATURAL_RED_GLOWY_EYES, - "TRAIT_BLOODSHOT_EYES" = TRAIT_BLOODSHOT_EYES, - "TRAIT_SHIFTY_EYES" = TRAIT_SHIFTY_EYES, - "TRAIT_CANNOT_BE_UNBUCKLED" = TRAIT_CANNOT_BE_UNBUCKLED, - "TRAIT_GAMER" = TRAIT_GAMER, - "TRAIT_UNKNOWN" = TRAIT_UNKNOWN, - "TRAIT_MIMING" = TRAIT_MIMING, - "TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION" = TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION, - "TRAIT_UNOBSERVANT" = TRAIT_UNOBSERVANT, - "TRAIT_TENTACLE_IMMUNE" = TRAIT_TENTACLE_IMMUNE, - "TRAIT_OVERWATCH_IMMUNE" = TRAIT_OVERWATCH_IMMUNE, - "TRAIT_UNDENSE" = TRAIT_UNDENSE, - "TRAIT_EXPANDED_FOV" = TRAIT_EXPANDED_FOV, - "TRAIT_ANALGESIA" = TRAIT_ANALGESIA, - "TRAIT_FAST_CLIMBER" = TRAIT_FAST_CLIMBER, - "TRAIT_ON_ELEVATED_SURFACE" = TRAIT_ON_ELEVATED_SURFACE, - "TRAIT_IGNORE_ELEVATION" = TRAIT_IGNORE_ELEVATION, - // monkestation start - "TRAIT_NO_BLOODLOSS_DAMAGE" = TRAIT_NO_BLOODLOSS_DAMAGE, - "TRAIT_CANT_SIGN_SPELLS" = TRAIT_CANT_SIGN_SPELLS, - "TRAIT_ETHEREAL_NO_OVERCHARGE" = TRAIT_ETHEREAL_NO_OVERCHARGE, - // monkestation end - ), - /obj/item/bodypart = list( - "TRAIT_PARALYSIS" = TRAIT_PARALYSIS, - ), - /obj/item/organ/internal/lungs = list( - "TRAIT_SPACEBREATHING" = TRAIT_SPACEBREATHING, - ), - /obj/item/organ/internal/liver = list( - "TRAIT_LAW_ENFORCEMENT_METABOLISM" = TRAIT_LAW_ENFORCEMENT_METABOLISM, - "TRAIT_CULINARY_METABOLISM" = TRAIT_CULINARY_METABOLISM, - "TRAIT_COMEDY_METABOLISM" = TRAIT_COMEDY_METABOLISM, - "TRAIT_MEDICAL_METABOLISM" = TRAIT_MEDICAL_METABOLISM, - "TRAIT_ENGINEER_METABOLISM" = TRAIT_ENGINEER_METABOLISM, - "TRAIT_ROYAL_METABOLISM" = TRAIT_ROYAL_METABOLISM, - "TRAIT_PRETENDER_ROYAL_METABOLISM" = TRAIT_PRETENDER_ROYAL_METABOLISM, - "TRAIT_BALLMER_SCIENTIST" = TRAIT_BALLMER_SCIENTIST, - ), - /obj/item = list( - "TRAIT_NODROP" = TRAIT_NODROP, - "TRAIT_NO_STORAGE_INSERT" = TRAIT_NO_STORAGE_INSERT, - "TRAIT_T_RAY_VISIBLE" = TRAIT_T_RAY_VISIBLE, - "TRAIT_NO_TELEPORT" = TRAIT_NO_TELEPORT, - "TRAIT_APC_SHOCKING" = TRAIT_APC_SHOCKING, - "TRAIT_UNCATCHABLE" = TRAIT_UNCATCHABLE, - "TRAIT_DANGEROUS_OBJECT" = TRAIT_DANGEROUS_OBJECT, - "TRAIT_HAUNTED" = TRAIT_HAUNTED, - ), - /atom = list( - "TRAIT_KEEP_TOGETHER" = TRAIT_KEEP_TOGETHER, - ), - /atom/movable = list( - "TRAIT_MOVE_GROUND" = TRAIT_MOVE_GROUND, - "TRAIT_MOVE_FLYING" = TRAIT_MOVE_FLYING, - "TRAIT_MOVE_VENTCRAWLING" = TRAIT_MOVE_VENTCRAWLING, - "TRAIT_MOVE_FLOATING" = TRAIT_MOVE_FLOATING, - "TRAIT_MOVE_PHASING" = TRAIT_MOVE_PHASING, - "TRAIT_LAVA_IMMUNE" = TRAIT_LAVA_IMMUNE, - "TRAIT_ASHSTORM_IMMUNE" = TRAIT_ASHSTORM_IMMUNE, - "TRAIT_SNOWSTORM_IMMUNE" = TRAIT_SNOWSTORM_IMMUNE, - "TRAIT_VOIDSTORM_IMMUNE" = TRAIT_VOIDSTORM_IMMUNE, - "TRAIT_WEATHER_IMMUNE" = TRAIT_WEATHER_IMMUNE, - "TRAIT_RUNECHAT_HIDDEN" = TRAIT_RUNECHAT_HIDDEN, - ), - /obj/item/card/id = list( - "TRAIT_MAGNETIC_ID_CARD" = TRAIT_MAGNETIC_ID_CARD, - ), - /obj/item/fish = list( - "TRAIT_RESIST_EMULSIFY" = TRAIT_RESIST_EMULSIFY, - "TRAIT_FISH_SELF_REPRODUCE" = TRAIT_FISH_SELF_REPRODUCE, - "TRAIT_FISH_NO_MATING" = TRAIT_FISH_NO_MATING, - "TRAIT_YUCKY_FISH" = TRAIT_YUCKY_FISH, - "TRAIT_FISH_TOXIN_IMMUNE" = TRAIT_FISH_TOXIN_IMMUNE, - "TRAIT_FISH_CROSSBREEDER" = TRAIT_FISH_CROSSBREEDER, - "TRAIT_FISH_FED_LUBE" = TRAIT_FISH_FED_LUBE, - "TRAIT_FISH_NO_HUNGER" = TRAIT_FISH_NO_HUNGER, - ), - /turf = list( - "TRAIT_ELEVATED_TURF" = TRAIT_ELEVATED_TURF, - ), - // monkestation edit: add /datum/mind, because it's not here for some reason - /datum/mind = list( - "TRAIT_CANT_SIGN_SPELLS" = TRAIT_CANT_SIGN_SPELLS, - "TRAIT_CHUNKYFINGERS_IGNORE_BATON" = TRAIT_CHUNKYFINGERS_IGNORE_BATON, - "TRAIT_MAGICALLY_GIFTED" = TRAIT_MAGICALLY_GIFTED, - "TRAIT_NAIVE" = TRAIT_NAIVE, - "TRAIT_REVEAL_FISH" = TRAIT_REVEAL_FISH, - "TRAIT_UNCONVERTABLE" = TRAIT_UNCONVERTABLE, - ) - // monkestation end -)) - -/// value -> trait name, generated on use from trait_by_type global -GLOBAL_LIST(trait_name_map) - -/proc/generate_trait_name_map() - . = list() - for(var/key in GLOB.traits_by_type) - for(var/tname in GLOB.traits_by_type[key]) - var/val = GLOB.traits_by_type[key][tname] - .[val] = tname - -GLOBAL_LIST_INIT(movement_type_trait_to_flag, list( - TRAIT_MOVE_GROUND = GROUND, - TRAIT_MOVE_FLYING = FLYING, - TRAIT_MOVE_VENTCRAWLING = VENTCRAWLING, - TRAIT_MOVE_FLOATING = FLOATING, - TRAIT_MOVE_PHASING = PHASING - )) - -GLOBAL_LIST_INIT(movement_type_addtrait_signals, set_movement_type_addtrait_signals()) -GLOBAL_LIST_INIT(movement_type_removetrait_signals, set_movement_type_removetrait_signals()) - -/proc/set_movement_type_addtrait_signals(signal_prefix) - . = list() - for(var/trait in GLOB.movement_type_trait_to_flag) - . += SIGNAL_ADDTRAIT(trait) - -/proc/set_movement_type_removetrait_signals(signal_prefix) - . = list() - for(var/trait in GLOB.movement_type_trait_to_flag) - . += SIGNAL_REMOVETRAIT(trait) diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm new file mode 100644 index 000000000000..c11a1b6a1cf5 --- /dev/null +++ b/code/_globalvars/traits/_traits.dm @@ -0,0 +1,785 @@ +// This file should contain every single global trait in the game in a type-based list, as well as any additional trait-related information that's useful to have on a global basis. +// This file is used in linting, so make sure to add everything alphabetically and what-not. +// Do consider adding your trait entry to the similar list in `admin_tooling.dm` if you want it to be accessible to admins (which is probably the case for 75% of traits). + +// Please do note that there is absolutely no bearing on what traits are added to what subtype of `/datum`, this is just an easily referenceable list sorted by type. +// The only thing that truly matters about traits is the code that is built to handle the traits, and where that code is located. Nothing else. + +GLOBAL_LIST_INIT(traits_by_type, list( + /atom = list( + "TRAIT_AI_PAUSED" = TRAIT_AI_PAUSED, + "TRAIT_BANNED_FROM_CARGO_SHUTTLE" = TRAIT_BANNED_FROM_CARGO_SHUTTLE, + "TRAIT_BEING_SHOCKED" = TRAIT_BEING_SHOCKED, + "TRAIT_CLIMBABLE" = TRAIT_CLIMBABLE, + "TRAIT_CURRENTLY_CLEANING" = TRAIT_CURRENTLY_CLEANING, + "TRAIT_CUSTOMIZABLE_REAGENT_HOLDER" = TRAIT_CUSTOMIZABLE_REAGENT_HOLDER, + "TRAIT_DO_NOT_SPLASH" = TRAIT_DO_NOT_SPLASH, + "TRAIT_DRIED" = TRAIT_DRIED, + "TRAIT_DRYABLE" = TRAIT_DRYABLE, + "TRAIT_FOOD_CHEF_MADE" = TRAIT_FOOD_CHEF_MADE, + "TRAIT_FOOD_FRIED" = TRAIT_FOOD_FRIED, + "TRAIT_FOOD_SILVER" = TRAIT_FOOD_SILVER, + "TRAIT_KEEP_TOGETHER" = TRAIT_KEEP_TOGETHER, + "TRAIT_RECENTLY_COINED" = TRAIT_RECENTLY_COINED, + "TRAIT_RUSTY" = TRAIT_RUSTY, + "TRAIT_SPINNING" = TRAIT_SPINNING, + "TRAIT_STICKERED" = TRAIT_STICKERED, + /* "TRAIT_COMMISSIONED" = TRAIT_COMMISSIONED, */ + /* "TRAIT_LIGHTING_DEBUGGED" = TRAIT_LIGHTING_DEBUGGED, */ + /* "TRAIT_UNHITTABLE_BY_PROJECTILES" = TRAIT_UNHITTABLE_BY_PROJECTILES, */ + ), + /atom/movable = list( + "TRAIT_ACTIVE_STORAGE" = TRAIT_ACTIVE_STORAGE, + "TRAIT_AREA_SENSITIVE" = TRAIT_AREA_SENSITIVE, + "TRAIT_ASHSTORM_IMMUNE" = TRAIT_ASHSTORM_IMMUNE, + "TRAIT_BLOCKING_EXPLOSIVES" = TRAIT_BLOCKING_EXPLOSIVES, + "TRAIT_CASTABLE_LOC" = TRAIT_CASTABLE_LOC, + "TRAIT_DEL_ON_SPACE_DUMP" = TRAIT_DEL_ON_SPACE_DUMP, + "TRAIT_FISH_CASE_COMPATIBILE" = TRAIT_FISH_CASE_COMPATIBILE, + "TRAIT_FISH_SAFE_STORAGE" = TRAIT_FISH_SAFE_STORAGE, + "TRAIT_FROZEN" = TRAIT_FROZEN, + "TRAIT_GOES_THROUGH_WOODEN_BARRICADES" = TRAIT_GOES_THROUGH_WOODEN_BARRICADES, + "TRAIT_HEARING_SENSITIVE" = TRAIT_HEARING_SENSITIVE, + "TRAIT_HYPERSPACED" = TRAIT_HYPERSPACED, + "TRAIT_IRRADIATED" = TRAIT_IRRADIATED, + "TRAIT_LAVA_IMMUNE" = TRAIT_LAVA_IMMUNE, + "TRAIT_MOVE_FLOATING" = TRAIT_MOVE_FLOATING, + "TRAIT_MOVE_FLYING" = TRAIT_MOVE_FLYING, + "TRAIT_MOVE_VENTCRAWLING" = TRAIT_MOVE_VENTCRAWLING, + "TRAIT_NOT_ENGRAVABLE" = TRAIT_NOT_ENGRAVABLE, + "TRAIT_NO_FLOATING_ANIM" = TRAIT_NO_FLOATING_ANIM, + "TRAIT_NO_MISSING_ITEM_ERROR" = TRAIT_NO_MISSING_ITEM_ERROR, + "TRAIT_ODD_CUSTOMIZABLE_FOOD_INGREDIENT" = TRAIT_ODD_CUSTOMIZABLE_FOOD_INGREDIENT, + "TRAIT_RUNECHAT_HIDDEN" = TRAIT_RUNECHAT_HIDDEN, + "TRAIT_SECLUDED_LOCATION" = TRAIT_SECLUDED_LOCATION, + "TRAIT_SNOWSTORM_IMMUNE" = TRAIT_SNOWSTORM_IMMUNE, + "TRAIT_UNDERFLOOR" = TRAIT_UNDERFLOOR, + "TRAIT_VOIDSTORM_IMMUNE" = TRAIT_VOIDSTORM_IMMUNE, + "TRAIT_WEATHER_IMMUNE" = TRAIT_WEATHER_IMMUNE, + /* "TRAIT_BOULDER_BREAKER" = TRAIT_BOULDER_BREAKER, */ + /* "TRAIT_CHASM_STOPPER" = TRAIT_CHASM_STOPPER, */ + /* "TRAIT_HAS_LABEL" = TRAIT_HAS_LABEL, */ + /* "TRAIT_IMMERSED" = TRAIT_IMMERSED, */ + /* "TRAIT_INNER_DARKNESS" = TRAIT_INNER_DARKNESS, */ + /* "TRAIT_MOVE_GROUND" = TRAIT_MOVE_GROUND, */ + /* "TRAIT_MOVE_PHASING" = TRAIT_MOVE_PHASING, */ + /* "TRAIT_NO_MANIFEST_CONTENTS_ERROR" = TRAIT_NO_MANIFEST_CONTENTS_ERROR, */ + /* "TRAIT_NO_THROW_HITPUSH" = TRAIT_NO_THROW_HITPUSH, */ + /* "TRAIT_ON_CLIMBABLE" = TRAIT_ON_CLIMBABLE, */ + /* "TRAIT_ON_HIT_EFFECT" = TRAIT_ON_HIT_EFFECT, */ + /* "TRAIT_SCARY_FISHERMAN" = TRAIT_SCARY_FISHERMAN, */ + /* "TRAIT_SHADOWLESS" = TRAIT_SHADOWLESS, */ + /* "TRAIT_SPELLS_TRANSFER_TO_LOC" = TRAIT_SPELLS_TRANSFER_TO_LOC, */ + /* "TRAIT_TELEKINESIS_CONTROLLED" = TRAIT_TELEKINESIS_CONTROLLED, */ + /* "TRAIT_UNIQUE_IMMERSE" = TRAIT_UNIQUE_IMMERSE, */ + /* "TRAIT_WADDLING" = TRAIT_WADDLING, */ + /* "TRAIT_WAS_RENAMED" = TRAIT_WAS_RENAMED, */ + /*"TRAIT_MOVE_UPSIDE_DOWN" = TRAIT_MOVE_UPSIDE_DOWN,*/ + ), + /datum/controller/subsystem/economy = list( + "TRAIT_MARKET_CRASHING" = TRAIT_MARKET_CRASHING, + ), + // AKA SSstation + /datum/controller/subsystem/processing/station = list( + "STATION_TRAIT_BANANIUM_SHIPMENTS" = STATION_TRAIT_BANANIUM_SHIPMENTS, + "STATION_TRAIT_BIGGER_PODS" = STATION_TRAIT_BIGGER_PODS, + "STATION_TRAIT_BIRTHDAY" = STATION_TRAIT_BIRTHDAY, + "STATION_TRAIT_BOTS_GLITCHED" = STATION_TRAIT_BOTS_GLITCHED, + "STATION_TRAIT_CARP_INFESTATION" = STATION_TRAIT_CARP_INFESTATION, + "STATION_TRAIT_CLOWN_BRIDGE" = STATION_TRAIT_CLOWN_BRIDGE, + "STATION_TRAIT_CYBERNETIC_REVOLUTION" = STATION_TRAIT_CYBERNETIC_REVOLUTION, + "STATION_TRAIT_EMPTY_MAINT" = STATION_TRAIT_EMPTY_MAINT, + "STATION_TRAIT_FILLED_MAINT" = STATION_TRAIT_FILLED_MAINT, + "STATION_TRAIT_HANGOVER" = STATION_TRAIT_HANGOVER, + "STATION_TRAIT_LATE_ARRIVALS" = STATION_TRAIT_LATE_ARRIVALS, + "STATION_TRAIT_LOANER_SHUTTLE" = STATION_TRAIT_LOANER_SHUTTLE, + "STATION_TRAIT_MEDBOT_MANIA" = STATION_TRAIT_MEDBOT_MANIA, + "STATION_TRAIT_PDA_GLITCHED" = STATION_TRAIT_PDA_GLITCHED, + "STATION_TRAIT_PREMIUM_INTERNALS" = STATION_TRAIT_PREMIUM_INTERNALS, + "STATION_TRAIT_RANDOM_ARRIVALS" = STATION_TRAIT_RANDOM_ARRIVALS, + "STATION_TRAIT_REVOLUTIONARY_TRASHING" = STATION_TRAIT_REVOLUTIONARY_TRASHING, + "STATION_TRAIT_SHUTTLE_SALE" = STATION_TRAIT_SHUTTLE_SALE, + "STATION_TRAIT_SMALLER_PODS" = STATION_TRAIT_SMALLER_PODS, + "STATION_TRAIT_SPIDER_INFESTATION" = STATION_TRAIT_SPIDER_INFESTATION, + "STATION_TRAIT_UNIQUE_AI" = STATION_TRAIT_UNIQUE_AI, + "STATION_TRAIT_UNNATURAL_ATMOSPHERE" = STATION_TRAIT_UNNATURAL_ATMOSPHERE, + /* "STATION_TRAIT_ASSISTANT_GIMMICKS" = STATION_TRAIT_ASSISTANT_GIMMICKS, */ + /* "STATION_TRAIT_BRIGHT_DAY" = STATION_TRAIT_BRIGHT_DAY, */ + /* "STATION_TRAIT_FORESTED" = STATION_TRAIT_FORESTED, */ + /* "STATION_TRAIT_HUMAN_AI" = STATION_TRAIT_HUMAN_AI, */ + /* "STATION_TRAIT_MACHINES_GLITCHED" = STATION_TRAIT_MACHINES_GLITCHED, */ + /* "STATION_TRAIT_RADIOACTIVE_NEBULA" = STATION_TRAIT_RADIOACTIVE_NEBULA, */ + /* "STATION_TRAIT_VENDING_SHORTAGE" = STATION_TRAIT_VENDING_SHORTAGE, */ + ), +/* + /datum/deathmatch_lobby = list( + /* "TRAIT_DEATHMATCH_EXPLOSIVE_IMPLANTS" = TRAIT_DEATHMATCH_EXPLOSIVE_IMPLANTS, */ + ), +*/ + /datum/wound = list( + "TRAIT_WOUND_SCANNED" = TRAIT_WOUND_SCANNED, + ), + /obj = list( + "TRAIT_HIDDEN_EXPORT_VALUE" = TRAIT_HIDDEN_EXPORT_VALUE, + "TRAIT_MOB_DESTROYABLE" = TRAIT_MOB_DESTROYABLE, + "TRAIT_WALLMOUNTED" = TRAIT_WALLMOUNTED, + /* "TRAIT_CONTRABAND" = TRAIT_CONTRABAND, */ + ), + /mob = list( + "TRAIT_ABDUCTOR_SCIENTIST_TRAINING" = TRAIT_ABDUCTOR_SCIENTIST_TRAINING, + "TRAIT_ABDUCTOR_TRAINING" = TRAIT_ABDUCTOR_TRAINING, + "TRAIT_ADVANCEDTOOLUSER" = TRAIT_ADVANCEDTOOLUSER, + "TRAIT_AGENDER" = TRAIT_AGENDER, + "TRAIT_AGEUSIA" = TRAIT_AGEUSIA, + "TRAIT_AIRLOCK_SHOCKIMMUNE" = TRAIT_AIRLOCK_SHOCKIMMUNE, + "TRAIT_AI_BAGATTACK" = TRAIT_AI_BAGATTACK, + "TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE, + "TRAIT_ALLOWED_HONORBOUND_ATTACK" = TRAIT_ALLOWED_HONORBOUND_ATTACK, + "TRAIT_ALLOW_HERETIC_CASTING" = TRAIT_ALLOW_HERETIC_CASTING, + "TRAIT_ALL_SURGERIES" = TRAIT_ALL_SURGERIES, + "TRAIT_ALWAYS_NO_ACCESS" = TRAIT_ALWAYS_NO_ACCESS, + "TRAIT_ANALGESIA" = TRAIT_ANALGESIA, + "TRAIT_ANGELIC" = TRAIT_ANGELIC, + "TRAIT_ANIME" = TRAIT_ANIME, + "TRAIT_ANTENNAE" = TRAIT_ANTENNAE, + "TRAIT_ANTICONVULSANT" = TRAIT_ANTICONVULSANT, + "TRAIT_ANTIMAGIC" = TRAIT_ANTIMAGIC, + "TRAIT_ANTIMAGIC_NO_SELFBLOCK" = TRAIT_ANTIMAGIC_NO_SELFBLOCK, + "TRAIT_ANXIOUS" = TRAIT_ANXIOUS, + "TRAIT_BADDNA" = TRAIT_BADDNA, + "TRAIT_BADTOUCH" = TRAIT_BADTOUCH, + "TRAIT_BALD" = TRAIT_BALD, + "TRAIT_BATON_RESISTANCE" = TRAIT_BATON_RESISTANCE, + "TRAIT_BEING_BLADE_SHIELDED" = TRAIT_BEING_BLADE_SHIELDED, + "TRAIT_BETTER_CYBERCONNECTOR" = TRAIT_BETTER_CYBERCONNECTOR, + "TRAIT_BLOB_ALLY" = TRAIT_BLOB_ALLY, + "TRAIT_BLOODSHOT_EYES" = TRAIT_BLOODSHOT_EYES, + "TRAIT_BLOODY_MESS" = TRAIT_BLOODY_MESS, + "TRAIT_BLOOD_DEFICIENCY" = TRAIT_BLOOD_DEFICIENCY, + "TRAIT_BOMBIMMUNE" = TRAIT_BOMBIMMUNE, + "TRAIT_BONSAI" = TRAIT_BONSAI, + "TRAIT_BOOZE_SLIDER" = TRAIT_BOOZE_SLIDER, + "TRAIT_BRAINWASHING" = TRAIT_BRAINWASHING, + "TRAIT_BYPASS_EARLY_IRRADIATED_CHECK" = TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, + "TRAIT_BYPASS_MEASURES" = TRAIT_BYPASS_MEASURES, + "TRAIT_CANNOT_BE_UNBUCKLED" = TRAIT_CANNOT_BE_UNBUCKLED, + "TRAIT_CANNOT_CRYSTALIZE" = TRAIT_CANNOT_CRYSTALIZE, + "TRAIT_CANNOT_OPEN_PRESENTS" = TRAIT_CANNOT_OPEN_PRESENTS, + "TRAIT_CANT_RIDE" = TRAIT_CANT_RIDE, + "TRAIT_CANT_SIGN_SPELLS" = TRAIT_CANT_SIGN_SPELLS, + "TRAIT_CANT_STAMCRIT" = TRAIT_CANT_STAMCRIT, + "TRAIT_CAN_HOLD_ITEMS" = TRAIT_CAN_HOLD_ITEMS, + "TRAIT_CAN_SIGN_ON_COMMS" = TRAIT_CAN_SIGN_ON_COMMS, + "TRAIT_CAN_STRIP" = TRAIT_CAN_STRIP, + "TRAIT_CAN_USE_FLIGHT_POTION" = TRAIT_CAN_USE_FLIGHT_POTION, + "TRAIT_CAN_USE_NUKE" = TRAIT_CAN_USE_NUKE, + "TRAIT_CAT" = TRAIT_CAT, + "TRAIT_CHANGELING_HIVEMIND_MUTE" = TRAIT_CHANGELING_HIVEMIND_MUTE, + "TRAIT_CHASM_DESTROYED" = TRAIT_CHASM_DESTROYED, + "TRAIT_CHEF_KISS" = TRAIT_CHEF_KISS, + "TRAIT_CHUNKYFINGERS" = TRAIT_CHUNKYFINGERS, + "TRAIT_CHUNKYFINGERS_IGNORE_BATON" = TRAIT_CHUNKYFINGERS_IGNORE_BATON, + "TRAIT_CHUUNIBYOU" = TRAIT_CHUUNIBYOU, + "TRAIT_CLEANBOT_WHISPERER" = TRAIT_CLEANBOT_WHISPERER, + "TRAIT_CLIFF_WALKER" = TRAIT_CLIFF_WALKER, + "TRAIT_CLOWN_ENJOYER" = TRAIT_CLOWN_ENJOYER, + "TRAIT_CLUMSY" = TRAIT_CLUMSY, + "TRAIT_COAGULATING" = TRAIT_COAGULATING, + "TRAIT_COLDBLOODED" = TRAIT_COLDBLOODED, + "TRAIT_CORPSELOCKED" = TRAIT_CORPSELOCKED, + "TRAIT_CRITICAL_CONDITION" = TRAIT_CRITICAL_CONDITION, + "TRAIT_CULT_HALO" = TRAIT_CULT_HALO, + "TRAIT_CURSED" = TRAIT_CURSED, + "TRAIT_DEAF" = TRAIT_DEAF, + "TRAIT_DEATHCOMA" = TRAIT_DEATHCOMA, + "TRAIT_DEFIB_BLACKLISTED" = TRAIT_DEFIB_BLACKLISTED, + "TRAIT_DEPRESSION" = TRAIT_DEPRESSION, + "TRAIT_DETECT_STORM" = TRAIT_DETECT_STORM, + "TRAIT_DIAGNOSTIC_HUD" = TRAIT_DIAGNOSTIC_HUD, + "TRAIT_DISCOORDINATED_TOOL_USER" = TRAIT_DISCOORDINATED_TOOL_USER, + "TRAIT_DISEASELIKE_SEVERITY_MEDIUM" = TRAIT_DISEASELIKE_SEVERITY_MEDIUM, + "TRAIT_DISFIGURED" = TRAIT_DISFIGURED, + "TRAIT_DISGUISED" = TRAIT_DISGUISED, + "TRAIT_DISK_VERIFIER" = TRAIT_DISK_VERIFIER, + "TRAIT_DISORIENTED" = TRAIT_DISORIENTED, + "TRAIT_DISSECTED" = TRAIT_DISSECTED, + "TRAIT_DONT_WRITE_MEMORY" = TRAIT_DONT_WRITE_MEMORY, + "TRAIT_DOUBLE_TAP" = TRAIT_DOUBLE_TAP, + "TRAIT_DUMB" = TRAIT_DUMB, + "TRAIT_DWARF" = TRAIT_DWARF, + "TRAIT_EASILY_WOUNDED" = TRAIT_EASILY_WOUNDED, + "TRAIT_EASYDISMEMBER" = TRAIT_EASYDISMEMBER, + "TRAIT_ECHOLOCATION_EXTRA_RANGE" = TRAIT_ECHOLOCATION_EXTRA_RANGE, + "TRAIT_ECHOLOCATION_RECEIVER" = TRAIT_ECHOLOCATION_RECEIVER, + "TRAIT_ELDRITCH_PAINTING_EXAMINE" = TRAIT_ELDRITCH_PAINTING_EXAMINE, + "TRAIT_ELITE_CHALLENGER" = TRAIT_ELITE_CHALLENGER, + "TRAIT_EMOTEMUTE" = TRAIT_EMOTEMUTE, + "TRAIT_EMPATH" = TRAIT_EMPATH, + "TRAIT_ENTRAILS_READER" = TRAIT_ENTRAILS_READER, + "TRAIT_ETHEREAL_NO_OVERCHARGE" = TRAIT_ETHEREAL_NO_OVERCHARGE, + "TRAIT_EXHAUSTED" = TRAIT_EXHAUSTED, + "TRAIT_EXPANDED_FOV" = TRAIT_EXPANDED_FOV, + "TRAIT_EXTROVERT" = TRAIT_EXTROVERT, + "TRAIT_FAKEDEATH" = TRAIT_FAKEDEATH, + "TRAIT_FASTER_SLAB_INVOKE" = TRAIT_FASTER_SLAB_INVOKE, + "TRAIT_FASTMED" = TRAIT_FASTMED, + "TRAIT_FAST_CLIMBER" = TRAIT_FAST_CLIMBER, + "TRAIT_FAT" = TRAIT_FAT, + "TRAIT_FEARLESS" = TRAIT_FEARLESS, + "TRAIT_FENCE_CLIMBER" = TRAIT_FENCE_CLIMBER, + "TRAIT_FINGERPRINT_PASSTHROUGH" = TRAIT_FINGERPRINT_PASSTHROUGH, + "TRAIT_FIXED_MUTANT_COLORS" = TRAIT_FIXED_MUTANT_COLORS, + "TRAIT_FLESH_DESIRE" = TRAIT_FLESH_DESIRE, + "TRAIT_FLOORED" = TRAIT_FLOORED, + "TRAIT_FOOD_FIRE_BURPS" = TRAIT_FOOD_FIRE_BURPS, + "TRAIT_FOOD_JOB_BOTANIST" = TRAIT_FOOD_JOB_BOTANIST, + "TRAIT_FOOD_JOB_MINER" = TRAIT_FOOD_JOB_MINER, + "TRAIT_FOOD_SLIDE" = TRAIT_FOOD_SLIDE, + "TRAIT_FORBID_MINING_SHUTTLE_CONSOLE_OUTSIDE_STATION" = TRAIT_FORBID_MINING_SHUTTLE_CONSOLE_OUTSIDE_STATION, + "TRAIT_FORCED_GRAVITY" = TRAIT_FORCED_GRAVITY, + "TRAIT_FORCED_STANDING" = TRAIT_FORCED_STANDING, + "TRAIT_FREERUNNING" = TRAIT_FREERUNNING, + "TRAIT_FREE_FLOAT_MOVEMENT" = TRAIT_FREE_FLOAT_MOVEMENT, + "TRAIT_FREE_HYPERSPACE_MOVEMENT" = TRAIT_FREE_HYPERSPACE_MOVEMENT, + "TRAIT_FREE_HYPERSPACE_SOFTCORDON_MOVEMENT" = TRAIT_FREE_HYPERSPACE_SOFTCORDON_MOVEMENT, + "TRAIT_FRIENDLY" = TRAIT_FRIENDLY, + "TRAIT_FUGU_GLANDED" = TRAIT_FUGU_GLANDED, + "TRAIT_GAMER" = TRAIT_GAMER, + "TRAIT_GAMERGOD" = TRAIT_GAMERGOD, + "TRAIT_GARLIC_BREATH" = TRAIT_GARLIC_BREATH, + "TRAIT_GENELESS" = TRAIT_GENELESS, + "TRAIT_GHOST_CRITTER" = TRAIT_GHOST_CRITTER, + "TRAIT_GIANT" = TRAIT_GIANT, + "TRAIT_GONE_FISHING" = TRAIT_GONE_FISHING, + "TRAIT_GOURMAND" = TRAIT_GOURMAND, + "TRAIT_GRABWEAKNESS" = TRAIT_GRABWEAKNESS, + "TRAIT_GUNFLIP" = TRAIT_GUNFLIP, + "TRAIT_GUN_NATURAL" = TRAIT_GUN_NATURAL, + "TRAIT_HALT_RADIATION_EFFECTS" = TRAIT_HALT_RADIATION_EFFECTS, + "TRAIT_HANDS_BLOCKED" = TRAIT_HANDS_BLOCKED, + "TRAIT_HARDLY_WOUNDED" = TRAIT_HARDLY_WOUNDED, + "TRAIT_HARD_SOLES" = TRAIT_HARD_SOLES, + "TRAIT_HAS_BEEN_KIDNAPPED" = TRAIT_HAS_BEEN_KIDNAPPED, + "TRAIT_HATED_BY_DOGS" = TRAIT_HATED_BY_DOGS, + "TRAIT_HEALS_FROM_CARP_RIFTS" = TRAIT_HEALS_FROM_CARP_RIFTS, + "TRAIT_HEALS_FROM_CULT_PYLONS" = TRAIT_HEALS_FROM_CULT_PYLONS, + "TRAIT_HEAR_THROUGH_DARKNESS" = TRAIT_HEAR_THROUGH_DARKNESS, + "TRAIT_HEAVY_SLEEPER" = TRAIT_HEAVY_SLEEPER, + "TRAIT_HELIUM" = TRAIT_HELIUM, + "TRAIT_HIDDEN_CLOWN" = TRAIT_HIDDEN_CLOWN, + "TRAIT_HIDDEN_IMAGE" = TRAIT_HIDDEN_IMAGE, + "TRAIT_HIDE_EXTERNAL_ORGANS" = TRAIT_HIDE_EXTERNAL_ORGANS, + "TRAIT_HOLY" = TRAIT_HOLY, + "TRAIT_HOPELESSLY_ADDICTED" = TRAIT_HOPELESSLY_ADDICTED, + "TRAIT_HOT_SPRING_CURSED" = TRAIT_HOT_SPRING_CURSED, + "TRAIT_HULK" = TRAIT_HULK, + "TRAIT_HUSK" = TRAIT_HUSK, + "TRAIT_ID_APPRAISER" = TRAIT_ID_APPRAISER, + "TRAIT_IGNOREDAMAGESLOWDOWN" = TRAIT_IGNOREDAMAGESLOWDOWN, + "TRAIT_IGNORESLOWDOWN" = TRAIT_IGNORESLOWDOWN, + "TRAIT_IGNORE_ELEVATION" = TRAIT_IGNORE_ELEVATION, + "TRAIT_IGNORING_GRAVITY" = TRAIT_IGNORING_GRAVITY, + "TRAIT_ILLITERATE" = TRAIT_ILLITERATE, + "TRAIT_IMMOBILIZED" = TRAIT_IMMOBILIZED, + "TRAIT_INCAPACITATED" = TRAIT_INCAPACITATED, + "TRAIT_INSTANT_RELOAD" = TRAIT_INSTANT_RELOAD, + "TRAIT_INTROVERT" = TRAIT_INTROVERT, + "TRAIT_INVISIBLE_MAN" = TRAIT_INVISIBLE_MAN, + "TRAIT_JAILBIRD" = TRAIT_JAILBIRD, + "TRAIT_JOLLY" = TRAIT_JOLLY, + "TRAIT_KISS_OF_DEATH" = TRAIT_KISS_OF_DEATH, + "TRAIT_KLEPTOMANIAC" = TRAIT_KLEPTOMANIAC, + "TRAIT_KNOCKEDOUT" = TRAIT_KNOCKEDOUT, + "TRAIT_KNOW_ENGI_WIRES" = TRAIT_KNOW_ENGI_WIRES, + "TRAIT_KNOW_ROBO_WIRES" = TRAIT_KNOW_ROBO_WIRES, + "TRAIT_LIGHTBULB_REMOVER" = TRAIT_LIGHTBULB_REMOVER, + "TRAIT_LIGHT_DRINKER" = TRAIT_LIGHT_DRINKER, + "TRAIT_LIGHT_STEP" = TRAIT_LIGHT_STEP, + "TRAIT_LIMBATTACHMENT" = TRAIT_LIMBATTACHMENT, + "TRAIT_LITERATE" = TRAIT_LITERATE, + "TRAIT_LIVERLESS_METABOLISM" = TRAIT_LIVERLESS_METABOLISM, + "TRAIT_LOUD_ASS" = TRAIT_LOUD_ASS, + "TRAIT_MADNESS_IMMUNE" = TRAIT_MADNESS_IMMUNE, + "TRAIT_MAGICALLY_GIFTED" = TRAIT_MAGICALLY_GIFTED, + "TRAIT_MAGICALLY_PHASED" = TRAIT_MAGICALLY_PHASED, + "TRAIT_MARTIAL_ARTS_IMMUNE" = TRAIT_MARTIAL_ARTS_IMMUNE, + "TRAIT_MASQUERADE" = TRAIT_MASQUERADE, + "TRAIT_MEDICAL_HUD" = TRAIT_MEDICAL_HUD, + "TRAIT_MESON_VISION" = TRAIT_MESON_VISION, + "TRAIT_MIME_FAN" = TRAIT_MIME_FAN, + "TRAIT_MIMING" = TRAIT_MIMING, + "TRAIT_MINDSHIELD" = TRAIT_MINDSHIELD, + "TRAIT_MIND_TEMPORARILY_GONE" = TRAIT_MIND_TEMPORARILY_GONE, + "TRAIT_MINING_CALLOUTS" = TRAIT_MINING_CALLOUTS, + "TRAIT_MOB_BREEDER" = TRAIT_MOB_BREEDER, + "TRAIT_MONKEYFRIEND" = TRAIT_MONKEYFRIEND, + "TRAIT_MORBID" = TRAIT_MORBID, + "TRAIT_MULTIZ_SUIT_SENSORS" = TRAIT_MULTIZ_SUIT_SENSORS, + "TRAIT_MUSICIAN" = TRAIT_MUSICIAN, + "TRAIT_MUTANT_COLORS" = TRAIT_MUTANT_COLORS, + "TRAIT_MUTE" = TRAIT_MUTE, + "TRAIT_NAIVE" = TRAIT_NAIVE, + "TRAIT_NANITE_MONITORING" = TRAIT_NANITE_MONITORING, + "TRAIT_NEARSIGHTED_CORRECTED" = TRAIT_NEARSIGHTED_CORRECTED, + "TRAIT_NEGATES_GRAVITY" = TRAIT_NEGATES_GRAVITY, + "TRAIT_NEVER_WOUNDED" = TRAIT_NEVER_WOUNDED, + "TRAIT_NICE_SHOT" = TRAIT_NICE_SHOT, + "TRAIT_NIGHT_VISION" = TRAIT_NIGHT_VISION, + "TRAIT_NOBLOOD" = TRAIT_NOBLOOD, + "TRAIT_NOBREATH" = TRAIT_NOBREATH, + "TRAIT_NOCLONELOSS" = TRAIT_NOCLONELOSS, + "TRAIT_NOCRITDAMAGE" = TRAIT_NOCRITDAMAGE, + "TRAIT_NOCRITOVERLAY" = TRAIT_NOCRITOVERLAY, + "TRAIT_NODEATH" = TRAIT_NODEATH, + "TRAIT_NODISMEMBER" = TRAIT_NODISMEMBER, + "TRAIT_NOFAT" = TRAIT_NOFAT, + "TRAIT_NOFIRE" = TRAIT_NOFIRE, + "TRAIT_NOFIRE_SPREAD" = TRAIT_NOFIRE_SPREAD, + "TRAIT_NOFLASH" = TRAIT_NOFLASH, + "TRAIT_NOGUNS" = TRAIT_NOGUNS, + "TRAIT_NOHARDCRIT" = TRAIT_NOHARDCRIT, + "TRAIT_NOHUNGER" = TRAIT_NOHUNGER, + "TRAIT_NOLIMBDISABLE" = TRAIT_NOLIMBDISABLE, + "TRAIT_NOMETABOLISM" = TRAIT_NOMETABOLISM, + "TRAIT_NOMOBSWAP" = TRAIT_NOMOBSWAP, + "TRAIT_NOSELFIGNITION_HEAD_ONLY" = TRAIT_NOSELFIGNITION_HEAD_ONLY, + "TRAIT_NOSOFTCRIT" = TRAIT_NOSOFTCRIT, + "TRAIT_NO_AUGMENTS" = TRAIT_NO_AUGMENTS, + "TRAIT_NO_BLOODLOSS_DAMAGE" = TRAIT_NO_BLOODLOSS_DAMAGE, + "TRAIT_NO_DEBRAIN_OVERLAY" = TRAIT_NO_DEBRAIN_OVERLAY, + "TRAIT_NO_DNA_COPY" = TRAIT_NO_DNA_COPY, + "TRAIT_NO_EXTINGUISH" = TRAIT_NO_EXTINGUISH, + "TRAIT_NO_FLOATING_ANIM" = TRAIT_NO_FLOATING_ANIM, + "TRAIT_NO_GLIDE" = TRAIT_NO_GLIDE, + "TRAIT_NO_IMMOBILIZE" = TRAIT_NO_IMMOBILIZE, + "TRAIT_NO_JUMPSUIT" = TRAIT_NO_JUMPSUIT, + "TRAIT_NO_MINDSWAP" = TRAIT_NO_MINDSWAP, + "TRAIT_NO_MIRROR_REFLECTION" = TRAIT_NO_MIRROR_REFLECTION, + "TRAIT_NO_SLAB_INVOKE" = TRAIT_NO_SLAB_INVOKE, + "TRAIT_NO_SLIP_ALL" = TRAIT_NO_SLIP_ALL, + "TRAIT_NO_SLIP_ICE" = TRAIT_NO_SLIP_ICE, + "TRAIT_NO_SLIP_SLIDE" = TRAIT_NO_SLIP_SLIDE, + "TRAIT_NO_SLIP_WATER" = TRAIT_NO_SLIP_WATER, + "TRAIT_NO_SOUL" = TRAIT_NO_SOUL, + "TRAIT_NO_SPRINT" = TRAIT_NO_SPRINT, + "TRAIT_NO_STRIP" = TRAIT_NO_STRIP, + "TRAIT_NO_TRANSFORM" = TRAIT_NO_TRANSFORM, + "TRAIT_NO_UNDERWEAR" = TRAIT_NO_UNDERWEAR, + "TRAIT_NO_ZOMBIFY" = TRAIT_NO_ZOMBIFY, + "TRAIT_NUKEIMMUNE" = TRAIT_NUKEIMMUNE, + "TRAIT_OCCULTIST" = TRAIT_OCCULTIST, + "TRAIT_OIL_FRIED" = TRAIT_OIL_FRIED, + "TRAIT_ON_ELEVATED_SURFACE" = TRAIT_ON_ELEVATED_SURFACE, + "TRAIT_OOZELING_NO_CANNIBALIZE" = TRAIT_OOZELING_NO_CANNIBALIZE, + "TRAIT_ORBITING_FORBIDDEN" = TRAIT_ORBITING_FORBIDDEN, + "TRAIT_OVERWATCHED" = TRAIT_OVERWATCHED, + "TRAIT_OVERWATCH_IMMUNE" = TRAIT_OVERWATCH_IMMUNE, + "TRAIT_PACIFISM" = TRAIT_PACIFISM, + "TRAIT_PARALYSIS_L_ARM" = TRAIT_PARALYSIS_L_ARM, + "TRAIT_PARALYSIS_L_LEG" = TRAIT_PARALYSIS_L_LEG, + "TRAIT_PARALYSIS_R_ARM" = TRAIT_PARALYSIS_R_ARM, + "TRAIT_PARALYSIS_R_LEG" = TRAIT_PARALYSIS_R_LEG, + "TRAIT_PARANOIA" = TRAIT_PARANOIA, + "TRAIT_PARROT_PERCHED" = TRAIT_PARROT_PERCHED, + "TRAIT_PASSTABLE" = TRAIT_PASSTABLE, + "TRAIT_PERFECT_ATTACKER" = TRAIT_PERFECT_ATTACKER, + "TRAIT_PERFECT_SURGEON" = TRAIT_PERFECT_SURGEON, + "TRAIT_PERMANENTLY_MORTAL" = TRAIT_PERMANENTLY_MORTAL, + "TRAIT_PHOTOGRAPHER" = TRAIT_PHOTOGRAPHER, + "TRAIT_PIERCEIMMUNE" = TRAIT_PIERCEIMMUNE, + "TRAIT_PLANT_SAFE" = TRAIT_PLANT_SAFE, + "TRAIT_PLASMA_LOVER_METABOLISM" = TRAIT_PLASMA_LOVER_METABOLISM, + "TRAIT_POOR_AIM" = TRAIT_POOR_AIM, + "TRAIT_POSTERBOY" = TRAIT_POSTERBOY, + "TRAIT_PRESENT_VISION" = TRAIT_PRESENT_VISION, + "TRAIT_PRESERVE_UI_WITHOUT_CLIENT" = TRAIT_PRESERVE_UI_WITHOUT_CLIENT, + "TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION" = TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION, + "TRAIT_PRIMITIVE" = TRAIT_PRIMITIVE, //unable to use mechs. Given to Ash Walkers + "TRAIT_PROSOPAGNOSIA" = TRAIT_PROSOPAGNOSIA, + "TRAIT_PULL_BLOCKED" = TRAIT_PULL_BLOCKED, + "TRAIT_PUSHIMMUNE" = TRAIT_PUSHIMMUNE, + "TRAIT_QUICKER_CARRY" = TRAIT_QUICKER_CARRY, + "TRAIT_QUICK_BUILD" = TRAIT_QUICK_BUILD, + "TRAIT_QUICK_CARRY" = TRAIT_QUICK_CARRY, + "TRAIT_RADIMMUNE" = TRAIT_RADIMMUNE, + "TRAIT_RDS_SUPPRESSED" = TRAIT_RDS_SUPPRESSED, + "TRAIT_REAGENT_SCANNER" = TRAIT_REAGENT_SCANNER, + "TRAIT_RELAYING_ATTACKER" = TRAIT_RELAYING_ATTACKER, + "TRAIT_RESEARCH_SCANNER" = TRAIT_RESEARCH_SCANNER, + "TRAIT_RESISTCOLD" = TRAIT_RESISTCOLD, + "TRAIT_RESISTHEAT" = TRAIT_RESISTHEAT, + "TRAIT_RESISTHEATHANDS" = TRAIT_RESISTHEATHANDS, + "TRAIT_RESISTHIGHPRESSURE" = TRAIT_RESISTHIGHPRESSURE, + "TRAIT_RESISTLOWPRESSURE" = TRAIT_RESISTLOWPRESSURE, + "TRAIT_RESTRAINED" = TRAIT_RESTRAINED, + "TRAIT_REVEAL_FISH" = TRAIT_REVEAL_FISH, + "TRAIT_REVENANT_INHIBITED" = TRAIT_REVENANT_INHIBITED, + "TRAIT_REVENANT_REVEALED" = TRAIT_REVENANT_REVEALED, + "TRAIT_REVIVES_BY_HEALING" = TRAIT_REVIVES_BY_HEALING, + "TRAIT_RIFT_FAILURE" = TRAIT_RIFT_FAILURE, + "TRAIT_ROBOT_CAN_BLEED" = TRAIT_ROBOT_CAN_BLEED, + "TRAIT_ROD_SUPLEX" = TRAIT_ROD_SUPLEX, + "TRAIT_SABRAGE_PRO" = TRAIT_SABRAGE_PRO, + "TRAIT_SECURITY_HUD" = TRAIT_SECURITY_HUD, + "TRAIT_SEE_GLASS_COLORS" = TRAIT_SEE_GLASS_COLORS, + "TRAIT_SELF_AWARE" = TRAIT_SELF_AWARE, + "TRAIT_SETTLER" = TRAIT_SETTLER, + "TRAIT_SHAVED" = TRAIT_SHAVED, + "TRAIT_SHIFTY_EYES" = TRAIT_SHIFTY_EYES, + "TRAIT_SHOCKIMMUNE" = TRAIT_SHOCKIMMUNE, + "TRAIT_SHOVE_RESIST" = TRAIT_SHOVE_RESIST, + "TRAIT_SIGN_LANG" = TRAIT_SIGN_LANG, + "TRAIT_SILENT_FOOTSTEPS" = TRAIT_SILENT_FOOTSTEPS, + "TRAIT_SIXTHSENSE" = TRAIT_SIXTHSENSE, + "TRAIT_SKITTISH" = TRAIT_SKITTISH, + "TRAIT_SLEEPIMMUNE" = TRAIT_SLEEPIMMUNE, + "TRAIT_SLIME_HYDROPHOBIA" = TRAIT_SLIME_HYDROPHOBIA, + "TRAIT_SMOKER" = TRAIT_SMOKER, + "TRAIT_SNEAK" = TRAIT_SNEAK, + "TRAIT_SNOB" = TRAIT_SNOB, + "TRAIT_SOFTSPOKEN" = TRAIT_SOFTSPOKEN, + "TRAIT_SOOTHED_THROAT" = TRAIT_SOOTHED_THROAT, + "TRAIT_SPACEWALK" = TRAIT_SPACEWALK, + "TRAIT_SPARRING" = TRAIT_SPARRING, + "TRAIT_SPEAKS_CLEARLY" = TRAIT_SPEAKS_CLEARLY, + "TRAIT_SPECIAL_TRAUMA_BOOST" = TRAIT_SPECIAL_TRAUMA_BOOST, + "TRAIT_SPIDER_CONSUMED" = TRAIT_SPIDER_CONSUMED, + "TRAIT_SPIRITUAL" = TRAIT_SPIRITUAL, + "TRAIT_SPLATTERCASTER" = TRAIT_SPLATTERCASTER, + "TRAIT_SPRAY_PAINTABLE" = TRAIT_SPRAY_PAINTABLE, + "TRAIT_SPRINTING" = TRAIT_SPRINTING, + "TRAIT_STABLEHEART" = TRAIT_STABLEHEART, + "TRAIT_STABLELIVER" = TRAIT_STABLELIVER, + "TRAIT_STABLE_ASS" = TRAIT_STABLE_ASS, + "TRAIT_STASIS" = TRAIT_STASIS, + "TRAIT_STOWAWAY" = TRAIT_STOWAWAY, + "TRAIT_STRONG_GRABBER" = TRAIT_STRONG_GRABBER, + "TRAIT_STUNIMMUNE" = TRAIT_STUNIMMUNE, + "TRAIT_SUCCUMB_OVERRIDE" = TRAIT_SUCCUMB_OVERRIDE, + "TRAIT_SUICIDED" = TRAIT_SUICIDED, + "TRAIT_SUPERMATTER_SOOTHER" = TRAIT_SUPERMATTER_SOOTHER, + "TRAIT_TACKLING_FRAIL_ATTACKER" = TRAIT_TACKLING_FRAIL_ATTACKER, + "TRAIT_TACKLING_TAILED_DEFENDER" = TRAIT_TACKLING_TAILED_DEFENDER, + "TRAIT_TACKLING_WINGED_ATTACKER" = TRAIT_TACKLING_WINGED_ATTACKER, + "TRAIT_TAGGER" = TRAIT_TAGGER, + "TRAIT_TEMPORARY_BODY" = TRAIT_TEMPORARY_BODY, + "TRAIT_TENACIOUS" = TRAIT_TENACIOUS, + "TRAIT_TENTACLE_IMMUNE" = TRAIT_TENTACLE_IMMUNE, + "TRAIT_TESLA_SHOCKIMMUNE" = TRAIT_TESLA_SHOCKIMMUNE, + "TRAIT_THERMAL_VISION" = TRAIT_THERMAL_VISION, + "TRAIT_THROWINGARM" = TRAIT_THROWINGARM, + "TRAIT_TIME_STOP_IMMUNE" = TRAIT_TIME_STOP_IMMUNE, + "TRAIT_TOWER_OF_BABEL" = TRAIT_TOWER_OF_BABEL, + "TRAIT_TOXIMMUNE" = TRAIT_TOXIMMUNE, + "TRAIT_TOXINLOVER" = TRAIT_TOXINLOVER, + "TRAIT_TRUE_NIGHT_VISION" = TRAIT_TRUE_NIGHT_VISION, + "TRAIT_TUMOR_SUPPRESSED" = TRAIT_TUMOR_SUPPRESSED, + "TRAIT_TUMOR_SUPPRESSION" = TRAIT_TUMOR_SUPPRESSED, + "TRAIT_UI_BLOCKED" = TRAIT_UI_BLOCKED, + "TRAIT_UNBREAKABLE" = TRAIT_UNBREAKABLE, + "TRAIT_UNCONVERTABLE" = TRAIT_UNCONVERTABLE, + "TRAIT_UNCONVERTABLE" = TRAIT_UNCONVERTABLE, + "TRAIT_UNDENSE" = TRAIT_UNDENSE, + "TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE" = TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE, + "TRAIT_UNINTELLIGIBLE_SPEECH" = TRAIT_UNINTELLIGIBLE_SPEECH, + "TRAIT_UNKNOWN" = TRAIT_UNKNOWN, + "TRAIT_UNNATURAL_RED_GLOWY_EYES" = TRAIT_UNNATURAL_RED_GLOWY_EYES, + "TRAIT_UNOBSERVANT" = TRAIT_UNOBSERVANT, + "TRAIT_UNSTABLE" = TRAIT_UNSTABLE, + "TRAIT_UNSTABLE_ASS" = TRAIT_UNSTABLE_ASS, + "TRAIT_USED_DNA_VAULT" = TRAIT_USED_DNA_VAULT, + "TRAIT_USES_SKINTONES" = TRAIT_USES_SKINTONES, + "TRAIT_VATGROWN" = TRAIT_VATGROWN, + "TRAIT_VAULTING" = TRAIT_VAULTING, + "TRAIT_VENTCRAWLER_ALWAYS" = TRAIT_VENTCRAWLER_ALWAYS, + "TRAIT_VENTCRAWLER_NUDE" = TRAIT_VENTCRAWLER_NUDE, + "TRAIT_VIRUSIMMUNE" = TRAIT_VIRUSIMMUNE, + "TRAIT_VIRUS_RESISTANCE" = TRAIT_VIRUS_RESISTANCE, + "TRAIT_VORACIOUS" = TRAIT_VORACIOUS, + "TRAIT_WAS_EVOLVED" = TRAIT_WAS_EVOLVED, + "TRAIT_WATER_BREATHING" = TRAIT_WATER_BREATHING, + "TRAIT_WEAK_SOUL" = TRAIT_WEAK_SOUL, + "TRAIT_WEB_SURFER" = TRAIT_WEB_SURFER, + "TRAIT_WEB_WEAVER" = TRAIT_WEB_WEAVER, + "TRAIT_WINE_TASTER" = TRAIT_WINE_TASTER, + "TRAIT_WING_BUFFET" = TRAIT_WING_BUFFET, + "TRAIT_WING_BUFFET_TIRED" = TRAIT_WING_BUFFET_TIRED, + "TRAIT_XENO_HOST" = TRAIT_XENO_HOST, + "TRAIT_XENO_IMMUNE" = TRAIT_XENO_IMMUNE, + "TRAIT_XRAY_VISION" = TRAIT_XRAY_VISION, + /* "TRAIT_ADAMANTINE_EXTRACT_ARMOR" = TRAIT_ADAMANTINE_EXTRACT_ARMOR, */ + /* "TRAIT_ALWAYS_WANTED" = TRAIT_ALWAYS_WANTED, */ + /* "TRAIT_ANOSMIA" = TRAIT_ANOSMIA, */ + /* "TRAIT_BALLOON_SUTRA" = TRAIT_BALLOON_SUTRA, */ + /* "TRAIT_BEAST_EMPATHY" = TRAIT_BEAST_EMPATHY, */ + /* "TRAIT_BIRTHDAY_BOY" = TRAIT_BIRTHDAY_BOY, */ + /* "TRAIT_BLOCK_SHUTTLE_MOVEMENT" = TRAIT_BLOCK_SHUTTLE_MOVEMENT, */ + /* "TRAIT_BLOOD_CLANS" = TRAIT_BLOOD_CLANS, */ + /* "TRAIT_BORN_MONKEY" = TRAIT_BORN_MONKEY, */ + /* "TRAIT_BOT_PATH_HUD" = TRAIT_BOT_PATH_HUD, */ + /* "TRAIT_BOXING_READY" = TRAIT_BOXING_READY, */ + /* "TRAIT_BRAWLING_KNOCKDOWN_BLOCKED" = TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, */ + /* "TRAIT_CATLIKE_GRACE" = TRAIT_CATLIKE_GRACE, */ + /* "TRAIT_DETECTIVES_TASTE" = TRAIT_DETECTIVES_TASTE, */ + /* "TRAIT_DISCO_DANCER" = TRAIT_DISCO_DANCER, */ + /* "TRAIT_DISPLAY_JOB_IN_BINARY" = TRAIT_DISPLAY_JOB_IN_BINARY, */ + /* "TRAIT_DREAMING" = TRAIT_DREAMING, */ + /* "TRAIT_DRINKS_BLOOD" = TRAIT_DRINKS_BLOOD, */ + /* "TRAIT_DRUNKEN_BRAWLER" = TRAIT_DRUNKEN_BRAWLER, */ + /* "TRAIT_EASYBLEED" = TRAIT_EASYBLEED, */ + /* "TRAIT_EXAMINE_FISHING_SPOT" = TRAIT_EXAMINE_FISHING_SPOT, */ + /* "TRAIT_EXAMINE_FITNESS" = TRAIT_EXAMINE_FITNESS, */ + /* "TRAIT_EXPERT_FISHER" = TRAIT_EXPERT_FISHER, */ + /* "TRAIT_FAST_CUFFING" = TRAIT_FAST_CUFFING, */ + /* "TRAIT_FAST_TYING" = TRAIT_FAST_TYING, */ + /* "TRAIT_FIST_MINING" = TRAIT_FIST_MINING, */ + /* "TRAIT_FOV_APPLIED" = TRAIT_FOV_APPLIED, */ + /* "TRAIT_GOOD_HEARING" = TRAIT_GOOD_HEARING, */ + /* "TRAIT_GREENTEXT_CURSED" = TRAIT_GREENTEXT_CURSED, */ + /* "TRAIT_HAS_CRANIAL_FISSURE" = TRAIT_HAS_CRANIAL_FISSURE, */ + /* "TRAIT_HEAD_INJURY_BLOCKED" = TRAIT_HEAD_INJURY_BLOCKED, */ + /* "TRAIT_HEAVY_DRINKER" = TRAIT_HEAVY_DRINKER, */ + /* "TRAIT_HIGH_VALUE_RANSOM" = TRAIT_HIGH_VALUE_RANSOM, */ + /* "TRAIT_HIPPOCRATIC_OATH" = TRAIT_HIPPOCRATIC_OATH, */ + /* "TRAIT_INVISIMIN" = TRAIT_INVISIMIN, */ + /* "TRAIT_IN_CALL" = TRAIT_IN_CALL, */ + /* "TRAIT_IWASBATONED" = TRAIT_IWASBATONED, */ + /* "TRAIT_MAFIAINITIATE" = TRAIT_MAFIAINITIATE, */ + /* "TRAIT_MANSUS_TOUCHED" = TRAIT_MANSUS_TOUCHED, */ + /* "TRAIT_MEDIBOTCOMINGTHROUGH" = TRAIT_MEDIBOTCOMINGTHROUGH, */ + /* "TRAIT_MIND_READER" = TRAIT_MIND_READER, */ + /* "TRAIT_MINING_PARRYING" = TRAIT_MINING_PARRYING, */ + /* "TRAIT_MOB_EATER" = TRAIT_MOB_EATER, */ + /* "TRAIT_MOB_HATCHED" = TRAIT_MOB_HATCHED, */ + /* "TRAIT_MOB_HIDE_HAPPINESS" = TRAIT_MOB_HIDE_HAPPINESS, */ + /* "TRAIT_MOB_TIPPED" = TRAIT_MOB_TIPPED, */ + /* "TRAIT_NOFEAR_HOLDUPS" = TRAIT_NOFEAR_HOLDUPS, */ + /* "TRAIT_NO_BLOOD_OVERLAY" = TRAIT_NO_BLOOD_OVERLAY, */ + /* "TRAIT_NO_DEBRAIN_OVERLAY" = TRAIT_NO_DEBRAIN_OVERLAY, */ + /* "TRAIT_NO_DNA_SCRAMBLE" = TRAIT_NO_DNA_SCRAMBLE, */ + /* "TRAIT_NO_GUN_AKIMBO" = TRAIT_NO_GUN_AKIMBO, */ + /* "TRAIT_NO_PLASMA_TRANSFORM" = TRAIT_NO_PLASMA_TRANSFORM, */ + /* "TRAIT_NO_STAGGER" = TRAIT_NO_STAGGER, */ + /* "TRAIT_NO_THROWING" = TRAIT_NO_THROWING, */ + /* "TRAIT_NO_TWOHANDING" = TRAIT_NO_TWOHANDING, */ + /* "TRAIT_OFF_BALANCE_TACKLER" = TRAIT_OFF_BALANCE_TACKLER, */ + /* "TRAIT_OVERDOSEIMMUNE" = TRAIT_OVERDOSEIMMUNE, */ + /* "TRAIT_PAPER_MASTER" = TRAIT_PAPER_MASTER, */ + /* "TRAIT_PASSWINDOW" = TRAIT_PASSWINDOW, */ + /* "TRAIT_PERCEIVED_AS_CLOWN" = TRAIT_PERCEIVED_AS_CLOWN, */ + /* "TRAIT_PROFOUND_FISHER" = TRAIT_PROFOUND_FISHER, */ + /* "TRAIT_RECENTLY_BLOCKED_MAGIC" = TRAIT_RECENTLY_BLOCKED_MAGIC, */ + /* "TRAIT_REGEN_SHIELD" = TRAIT_REGEN_SHIELD, */ + /* "TRAIT_REMOTE_TASTING" = TRAIT_REMOTE_TASTING, */ + /* "TRAIT_ROCK_EATER" = TRAIT_ROCK_EATER, */ + /* "TRAIT_ROCK_METAMORPHIC" = TRAIT_ROCK_METAMORPHIC, */ + /* "TRAIT_ROCK_STONER" = TRAIT_ROCK_STONER, */ + /* "TRAIT_ROUGHRIDER" = TRAIT_ROUGHRIDER, */ + /* "TRAIT_SEE_WORN_COLOURS" = TRAIT_SEE_WORN_COLOURS, */ + /* "TRAIT_SILICON_EMOTES_ALLOWED" = TRAIT_SILICON_EMOTES_ALLOWED, */ + /* "TRAIT_SLOW_FLIP" = TRAIT_SLOW_FLIP, */ + /* "TRAIT_SPEECH_BOOSTER" = TRAIT_SPEECH_BOOSTER, */ + /* "TRAIT_SPELLS_LOTTERY" = TRAIT_SPELLS_LOTTERY, */ + /* "TRAIT_STIMMED" = TRAIT_STIMMED, */ + /* "TRAIT_STIMULATED" = TRAIT_STIMULATED, */ + /* "TRAIT_STRENGTH" = TRAIT_STRENGTH, */ + /* "TRAIT_STRONG_STOMACH" = TRAIT_STRONG_STOMACH, */ + /* "TRAIT_STUBBY_BODY" = TRAIT_STUBBY_BODY, */ + /* "TRAIT_STUN_ON_NEXT_SHOVE" = TRAIT_STUN_ON_NEXT_SHOVE, */ + /* "TRAIT_STURDY_FRAME" = TRAIT_STURDY_FRAME, */ + /* "TRAIT_SURGEON" = TRAIT_SURGEON, */ + /* "TRAIT_SURGICALLY_ANALYZED" = TRAIT_SURGICALLY_ANALYZED, */ + /* "TRAIT_SYNDIE_KISS" = TRAIT_SYNDIE_KISS, */ + /* "TRAIT_TACTICALLY_CAMOUFLAGED" = TRAIT_TACTICALLY_CAMOUFLAGED, */ + /* "TRAIT_THINKING_IN_CHARACTER" = TRAIT_THINKING_IN_CHARACTER, */ + /* "TRAIT_TOO_TALL" = TRAIT_TOO_TALL, */ + /* "TRAIT_TOSS_GUN_HARD" = TRAIT_TOSS_GUN_HARD, */ + /* "TRAIT_UNHUSKABLE" = TRAIT_UNHUSKABLE, */ + /* "TRAIT_USER_SCOPED" = TRAIT_USER_SCOPED, */ + /* "TRAIT_WOUND_LICKER" = TRAIT_WOUND_LICKER, */ + /* "TRAIT_XRAY_HEARING" = TRAIT_XRAY_HEARING, */ + ), + /obj/item = list( + "TRAIT_APC_SHOCKING" = TRAIT_APC_SHOCKING, + "TRAIT_BASIC_QUALITY_BAIT" = TRAIT_BASIC_QUALITY_BAIT, + "TRAIT_BELT_SATCHEL" = TRAIT_BELT_SATCHEL, + "TRAIT_BLIND_TOOL" = TRAIT_BLIND_TOOL, + "TRAIT_BYPASS_COMPRESS_CHECK" = TRAIT_BYPASS_COMPRESS_CHECK, + "TRAIT_CUSTOM_TAP_SOUND" = TRAIT_CUSTOM_TAP_SOUND, + "TRAIT_DANGEROUS_OBJECT" = TRAIT_DANGEROUS_OBJECT, + "TRAIT_FISHING_BAIT" = TRAIT_FISHING_BAIT, + "TRAIT_FOOD_GRILLED" = TRAIT_FOOD_GRILLED, + "TRAIT_GOOD_QUALITY_BAIT" = TRAIT_GOOD_QUALITY_BAIT, + "TRAIT_GREAT_QUALITY_BAIT" = TRAIT_GREAT_QUALITY_BAIT, + "TRAIT_HAUNTED" = TRAIT_HAUNTED, + "TRAIT_HONKSPAMMING" = TRAIT_HONKSPAMMING, + "TRAIT_INNATELY_FANTASTICAL_ITEM" = TRAIT_INNATELY_FANTASTICAL_ITEM, + "TRAIT_MAT_TRANSMUTED" = TRAIT_MAT_TRANSMUTED, + "TRAIT_MAY_CONTAIN_BLENDED_DUST" = TRAIT_MAY_CONTAIN_BLENDED_DUST, + "TRAIT_NEEDS_TWO_HANDS" = TRAIT_NEEDS_TWO_HANDS, + "TRAIT_NODROP" = TRAIT_NODROP, + "TRAIT_NO_BARCODES" = TRAIT_NO_BARCODES, + "TRAIT_NO_STORAGE_INSERT" = TRAIT_NO_STORAGE_INSERT, + "TRAIT_NO_TELEPORT" = TRAIT_NO_TELEPORT, + "TRAIT_OMNI_BAIT" = TRAIT_OMNI_BAIT, + "TRAIT_PLANT_WILDMUTATE" = TRAIT_PLANT_WILDMUTATE, + "TRAIT_STARGAZED" = TRAIT_STARGAZED, + "TRAIT_TRANSFORM_ACTIVE" = TRAIT_TRANSFORM_ACTIVE, + "TRAIT_TRASH_ITEM" = TRAIT_TRASH_ITEM, + "TRAIT_T_RAY_VISIBLE" = TRAIT_T_RAY_VISIBLE, + "TRAIT_UNCATCHABLE" = TRAIT_UNCATCHABLE, + "TRAIT_WIELDED" = TRAIT_WIELDED, + /* "TRAIT_BAIT_UNCONSUMABLE" = TRAIT_BAIT_UNCONSUMABLE, */ + /* "TRAIT_BAKEABLE" = TRAIT_BAKEABLE, */ + /* "TRAIT_BYPASS_RANGED_ARMOR" = TRAIT_BYPASS_RANGED_ARMOR, */ + /* "TRAIT_CONTRABAND_BLOCKER" = TRAIT_CONTRABAND_BLOCKER, */ + /* "TRAIT_GERM_SENSITIVE" = TRAIT_GERM_SENSITIVE, */ + "TRAIT_INSTANTLY_PROCESSES_BOULDERS" = TRAIT_INSTANTLY_PROCESSES_BOULDERS, + /* "TRAIT_ITEM_OBJECTIVE_BLOCKED" = TRAIT_ITEM_OBJECTIVE_BLOCKED, */ + /* "TRAIT_NO_SIDE_KICK" = TRAIT_NO_SIDE_KICK, */ + ), + /obj/item/ammo_casing = list( + /* "TRAIT_DART_HAS_INSERT" = TRAIT_DART_HAS_INSERT, */ + ), + /obj/item/bodypart = list( + "TRAIT_DISABLED_BY_WOUND" = TRAIT_DISABLED_BY_WOUND, + /* "TRAIT_IGNORED_BY_LIVING_FLESH" = TRAIT_IGNORED_BY_LIVING_FLESH, */ + /* "TRAIT_IMMUNE_TO_CRANIAL_FISSURE" = TRAIT_IMMUNE_TO_CRANIAL_FISSURE, */ + ), + /obj/item/bodypart = list( + "TRAIT_PARALYSIS" = TRAIT_PARALYSIS, + ), + /obj/item/bodypart = list( + /* "TRAIT_EASY_ATTACH" = TRAIT_EASY_ATTACH, */ + ), + /obj/item/card/id = list( + "TRAIT_JOB_FIRST_ID_CARD" = TRAIT_JOB_FIRST_ID_CARD, + "TRAIT_MAGNETIC_ID_CARD" = TRAIT_MAGNETIC_ID_CARD, + "TRAIT_TASTEFULLY_THICK_ID_CARD" = TRAIT_TASTEFULLY_THICK_ID_CARD, + ), + /obj/item/clothing = list( + "TRAIT_RADIATION_PROTECTED_CLOTHING" = TRAIT_RADIATION_PROTECTED_CLOTHING, + ), + /obj/item/fish = list( + "TRAIT_FISH_AMPHIBIOUS" = TRAIT_FISH_AMPHIBIOUS, + "TRAIT_FISH_CROSSBREEDER" = TRAIT_FISH_CROSSBREEDER, + "TRAIT_FISH_FED_LUBE" = TRAIT_FISH_FED_LUBE, + "TRAIT_FISH_NO_HUNGER" = TRAIT_FISH_NO_HUNGER, + "TRAIT_FISH_NO_MATING" = TRAIT_FISH_NO_MATING, + "TRAIT_FISH_SELF_REPRODUCE" = TRAIT_FISH_SELF_REPRODUCE, + "TRAIT_FISH_TOXIN_IMMUNE" = TRAIT_FISH_TOXIN_IMMUNE, + "TRAIT_RESIST_EMULSIFY" = TRAIT_RESIST_EMULSIFY, + "TRAIT_YUCKY_FISH" = TRAIT_YUCKY_FISH, + /* "TRAIT_FISH_ELECTROGENESIS" = TRAIT_FISH_ELECTROGENESIS, */ + /* "TRAIT_FISH_FROM_CASE" = TRAIT_FISH_FROM_CASE, */ + ), + /obj/item/integrated_circuit = list( + "TRAIT_CIRCUIT_UNDUPABLE" = TRAIT_CIRCUIT_UNDUPABLE, + "TRAIT_COMPONENT_MMI" = TRAIT_COMPONENT_MMI, + /* "TRAIT_CIRCUIT_UI_OPEN" = TRAIT_CIRCUIT_UI_OPEN, */ + ), + /obj/item/modular_computer = list( + "TRAIT_PDA_CAN_EXPLODE" = TRAIT_PDA_CAN_EXPLODE, + "TRAIT_PDA_MESSAGE_MENU_RIGGED" = TRAIT_PDA_MESSAGE_MENU_RIGGED, + /* "TRAIT_MODPC_HALVED_DOWNLOAD_SPEED" = TRAIT_MODPC_HALVED_DOWNLOAD_SPEED, */ + ), + /obj/item/organ = list( + "TRAIT_LIVING_HEART" = TRAIT_LIVING_HEART, + /* "TRAIT_USED_ORGAN" = TRAIT_USED_ORGAN, */ + ), + /obj/item/organ/internal/liver = list( + "TRAIT_BALLMER_SCIENTIST" = TRAIT_BALLMER_SCIENTIST, + "TRAIT_COMEDY_METABOLISM" = TRAIT_COMEDY_METABOLISM, + "TRAIT_CULINARY_METABOLISM" = TRAIT_CULINARY_METABOLISM, + "TRAIT_ENGINEER_METABOLISM" = TRAIT_ENGINEER_METABOLISM, + "TRAIT_LAW_ENFORCEMENT_METABOLISM" = TRAIT_LAW_ENFORCEMENT_METABOLISM, + "TRAIT_MAINTENANCE_METABOLISM" = TRAIT_MAINTENANCE_METABOLISM, + "TRAIT_MEDICAL_METABOLISM" = TRAIT_MEDICAL_METABOLISM, + "TRAIT_PRETENDER_ROYAL_METABOLISM" = TRAIT_PRETENDER_ROYAL_METABOLISM, + "TRAIT_ROYAL_METABOLISM" = TRAIT_ROYAL_METABOLISM, + /* "TRAIT_CORONER_METABOLISM" = TRAIT_CORONER_METABOLISM, */ + /* "TRAIT_HUMAN_AI_METABOLISM" = TRAIT_HUMAN_AI_METABOLISM, */ + ), + /obj/item/organ/internal/lungs = list( + "TRAIT_SPACEBREATHING" = TRAIT_SPACEBREATHING, + ), + /obj/machinery/modular_computer = list( + /* "TRAIT_MODPC_INTERACTING_WITH_FRAME" = TRAIT_MODPC_INTERACTING_WITH_FRAME, */ + ), + /obj/projectile = list( + /* "TRAIT_ALWAYS_HIT_ZONE" = TRAIT_ALWAYS_HIT_ZONE, */ + ), + /obj/structure = list( + "TRAIT_RADSTORM_IMMUNE" = TRAIT_RADSTORM_IMMUNE, + ), + /obj/vehicle = list( + /* "TRAIT_OREBOX_FUNCTIONAL" = TRAIT_OREBOX_FUNCTIONAL, */ + ), + /obj/vehicle/sealed/mecha = list( + /* "TRAIT_MECHA_CREATED_NORMALLY" = TRAIT_MECHA_CREATED_NORMALLY */ + ), + /turf = list( + "TRAIT_CHASM_STOPPED" = TRAIT_CHASM_STOPPED, + "TRAIT_CONTAINMENT_FIELD" = TRAIT_CONTAINMENT_FIELD, + "TRAIT_ELEVATED_TURF" = TRAIT_ELEVATED_TURF, + "TRAIT_FIREDOOR_STOP" = TRAIT_FIREDOOR_STOP, + "TRAIT_HYPERSPACE_STOPPED" = TRAIT_HYPERSPACE_STOPPED, + "TRAIT_LAVA_STOPPED" = TRAIT_LAVA_STOPPED, + "TRAIT_SPINNING_WEB_TURF" = TRAIT_SPINNING_WEB_TURF, + "TRAIT_TURF_IGNORE_SLIPPERY" = TRAIT_TURF_IGNORE_SLIPPERY, + "TRAIT_TURF_IGNORE_SLOWDOWN" = TRAIT_TURF_IGNORE_SLOWDOWN, + /* "TRAIT_CONTAINS_SPLITVIS" = TRAIT_CONTAINS_SPLITVIS, */ + /* "TRAIT_FISHING_SPOT" = TRAIT_FISHING_SPOT, */ + /* "TRAIT_IMMERSE_STOPPED" = TRAIT_IMMERSE_STOPPED, */ + /* "TRAIT_NO_TERRAFORM" = TRAIT_NO_TERRAFORM, */ + ), + /turf/open = list( + "TRAIT_BLOCK_LIQUID_SPREAD" = TRAIT_BLOCK_LIQUID_SPREAD, + "TRAIT_COVERED_BY_METEOR_SHIELD" = TRAIT_COVERED_BY_METEOR_SHIELD, + "TRAIT_TURF_HAS_ELEVATED_STRUCTURE" = TRAIT_TURF_HAS_ELEVATED_STRUCTURE, + ), + /datum/mind = list( + "TRAIT_CANT_SIGN_SPELLS" = TRAIT_CANT_SIGN_SPELLS, + "TRAIT_OCCULTIST" = TRAIT_OCCULTIST, + "TRAIT_REMOVED_FROM_MANIFEST" = TRAIT_REMOVED_FROM_MANIFEST, + "TRAIT_UNCONVERTABLE" = TRAIT_UNCONVERTABLE, + ) +)) + +/// value -> trait name, list of ALL traits that exist in the game, used for any type of accessing. +GLOBAL_LIST(global_trait_name_map) + +/proc/generate_global_trait_name_map() + . = list() + for(var/key in GLOB.traits_by_type) + for(var/tname in GLOB.traits_by_type[key]) + var/val = GLOB.traits_by_type[key][tname] + .[val] = tname + + return . + +GLOBAL_LIST_INIT(movement_type_trait_to_flag, list( + TRAIT_MOVE_GROUND = GROUND, + TRAIT_MOVE_FLYING = FLYING, + TRAIT_MOVE_VENTCRAWLING = VENTCRAWLING, + TRAIT_MOVE_FLOATING = FLOATING, + TRAIT_MOVE_PHASING = PHASING, + /*TRAIT_MOVE_UPSIDE_DOWN = UPSIDE_DOWN,*/ +)) + +GLOBAL_LIST_INIT(movement_type_addtrait_signals, set_movement_type_addtrait_signals()) +GLOBAL_LIST_INIT(movement_type_removetrait_signals, set_movement_type_removetrait_signals()) + +/proc/set_movement_type_addtrait_signals(signal_prefix) + . = list() + for(var/trait in GLOB.movement_type_trait_to_flag) + . += SIGNAL_ADDTRAIT(trait) + + return . + +/proc/set_movement_type_removetrait_signals(signal_prefix) + . = list() + for(var/trait in GLOB.movement_type_trait_to_flag) + . += SIGNAL_REMOVETRAIT(trait) + + return . diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 3980bffac060..f5b2a314a961 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -185,7 +185,7 @@ else if(ismob(A)) changeNext_move(CLICK_CD_MELEE) - UnarmedAttack(A,1) + UnarmedAttack(A,1, modifiers) else if(W) if((istate & ISTATE_SECONDARY)) @@ -311,7 +311,7 @@ * used for figuring out different properties of the click, mostly right vs left and such. */ -/mob/proc/UnarmedAttack(atom/A, proximity_flag) +/mob/proc/UnarmedAttack(atom/A, proximity_flag, list/params) if(ismob(A)) changeNext_move(CLICK_CD_MELEE) return diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index c9837099e6d1..302cd10c28f0 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -883,11 +883,11 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." if(!. || isnull(poll)) return var/list/modifiers = params2list(params) - if(LAZYACCESS(modifiers, ALT_CLICK) && poll.ignoring_category) + if(LAZYACCESS(modifiers, ALT_CLICK)) set_never_round() return - if(LAZYACCESS(modifiers, CTRL_CLICK) && poll.jump_to_me) - jump_to_pic_source() + if(LAZYACCESS(modifiers, CTRL_CLICK)) + jump_to_jump_target() return handle_sign_up() @@ -899,6 +899,8 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." update_signed_up_overlay() /atom/movable/screen/alert/poll_alert/proc/set_never_round() + if(!poll?.ignoring_category) + return if(!(owner.ckey in GLOB.poll_ignore[poll.ignoring_category])) poll.do_never_for_this_round(owner) color = "red" @@ -907,7 +909,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." poll.undo_never_for_this_round(owner) color = initial(color) -/atom/movable/screen/alert/poll_alert/proc/jump_to_pic_source() +/atom/movable/screen/alert/poll_alert/proc/jump_to_jump_target() if(!poll?.jump_to_me || !isobserver(owner)) return var/turf/target_turf = get_turf(poll.jump_to_me) @@ -921,7 +923,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." if(href_list["signup"]) handle_sign_up() if(href_list["jump"]) - jump_to_pic_source() + jump_to_jump_target() return /atom/movable/screen/alert/poll_alert/proc/update_signed_up_overlay() @@ -932,7 +934,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." /atom/movable/screen/alert/poll_alert/proc/update_candidates_number_overlay() cut_overlay(candidates_num_overlay) - if(!length(poll.signed_up)) + if(!length(poll.signed_up) || !poll.show_candidate_amount) return candidates_num_overlay = new candidates_num_overlay.maptext = MAPTEXT("[length(poll.signed_up)]") @@ -1057,6 +1059,9 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." return 1 /atom/movable/screen/alert/Click(location, control, params) + SHOULD_CALL_PARENT(TRUE) + + ..() if(!usr || !usr.client) return FALSE if(usr != owner) diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 4a312e7fb442..1ee09a05f3fb 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -220,10 +220,13 @@ GLOBAL_LIST_INIT(available_ui_styles, list( QDEL_LIST(static_inventory) QDEL_LIST(team_finder_arrows) + // all already deleted by static inventory clear inv_slots.Cut() action_intent = null zone_select = null pull_icon = null + rest_icon = null + hand_slots.Cut() QDEL_LIST(toggleable_inventory) QDEL_LIST(hotkeybuttons) diff --git a/code/_onclick/hud/new_player.dm b/code/_onclick/hud/new_player.dm index 44a20e485c3e..a6e139dad084 100644 --- a/code/_onclick/hud/new_player.dm +++ b/code/_onclick/hud/new_player.dm @@ -190,6 +190,11 @@ to_chat(hud.mymob, span_boldwarning("The round is either not ready, or has already finished...")) return + if(hud.mymob.client?.check_overwatch()) + to_chat(hud.mymob, span_warning("Kindly wait until your connection has been authenticated before joining")) + message_admins("[hud.mymob.key] tried to use the Join button but failed the overwatch check.") + return + //Determines Relevent Population Cap var/relevant_cap var/hard_popcap = CONFIG_GET(number/hard_popcap) diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index 6fa9aa4ce059..a6c470f29673 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -407,7 +407,7 @@ GLOBAL_LIST_EMPTY(radial_menus) /// If provided, will display an info button that will put this text in your chat var/info -/datum/radial_menu_choice/Destroy(force, ...) +/datum/radial_menu_choice/Destroy(force) . = ..() QDEL_NULL(image) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 87fee0d97f30..13c02c7f9533 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -35,12 +35,24 @@ /// If FALSE, this will not be cleared when calling /client/clear_screen() var/clear_with_screen = TRUE + /// If TRUE, clicking the screen element will fall through and perform a default "Click" call + /// Obviously this requires your Click override, if any, to call parent on their own. + /// This is set to FALSE to default to dissade you from doing this. + /// Generally we don't want default Click stuff, which results in bugs like using Telekinesis on a screen element + /// or trying to point your gun at your screen. + var/default_click = FALSE /atom/movable/screen/Destroy() master = null hud = null return ..() +/atom/movable/screen/Click(location, control, params) + if(flags_1 & INITIALIZED_1) + SEND_SIGNAL(src, COMSIG_SCREEN_ELEMENT_CLICK, location, control, params, usr) + if(default_click) + return ..() + /atom/movable/screen/examine(mob/user) return list() @@ -646,9 +658,6 @@ icon_state = "mood5" screen_loc = ui_mood -/atom/movable/screen/mood/attack_tk() - return - /atom/movable/screen/splash icon = 'icons/blanks/blank_title.png' icon_state = "" diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 4bf89bac58cd..539dcb585ab2 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -10,13 +10,13 @@ /obj/item/proc/melee_attack_chain(mob/user, atom/target, params) var/is_right_clicking = (user.istate & ISTATE_SECONDARY) - //Monkestation edit: REPLAYS + // monkestation start: REPLAYS SSdemo.mark_dirty(src) if(isturf(target)) SSdemo.mark_turf(target) else SSdemo.mark_dirty(target) - //Monkestation edit: REPLAYS + // monkestation end: REPLAYS if(tool_behaviour && (target.tool_act(user, src, tool_behaviour, is_right_clicking) & TOOL_ACT_MELEE_CHAIN_BLOCKING)) return TRUE diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 76e19620194b..5a124d14493c 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -19,7 +19,7 @@ Otherwise pretty standard. */ -/mob/living/carbon/human/UnarmedAttack(atom/A, proximity_flag) +/mob/living/carbon/human/UnarmedAttack(atom/A, proximity_flag, list/params) if(HAS_TRAIT(src, TRAIT_HANDS_BLOCKED) && stat < SOFT_CRIT) if(src == A) check_self_for_injuries() @@ -40,7 +40,7 @@ if(!right_click_attack_chain(A) && !dna?.species?.spec_unarmedattack(src, A)) //Because species like monkeys dont use attack hand //monkestation edit - . = A.attack_hand(src) + . = A.attack_hand(src, params) if(.) animate_interact(A, INTERACT_GENERIC) //monkestation edit end @@ -49,7 +49,7 @@ return target.attack_hand_secondary(src, modifiers) /// Return TRUE to cancel other attack hand effects that respect it. Modifiers is the assoc list for click info such as if it was a right click. -/atom/proc/attack_hand(mob/user) +/atom/proc/attack_hand(mob/user, list/params) . = FALSE if(!(interaction_flags_atom & INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND)) add_fingerprint(user) @@ -90,7 +90,7 @@ return FALSE return TRUE -/atom/ui_status(mob/user) +/atom/ui_status(mob/user, datum/ui_state/state) . = ..() //Check if both user and atom are at the same location if(!can_interact(user)) @@ -194,7 +194,8 @@ /atom/proc/attack_paw(mob/user, list/modifiers) if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_PAW, user, modifiers) & COMPONENT_CANCEL_ATTACK_CHAIN) return TRUE - return FALSE + if(interaction_flags_atom & INTERACT_ATOM_ATTACK_PAW) + . = _try_interact(user) /* diff --git a/code/controllers/configuration/entries/monkestation.dm b/code/controllers/configuration/entries/monkestation.dm index e27449639b57..6c838e4fff6e 100644 --- a/code/controllers/configuration/entries/monkestation.dm +++ b/code/controllers/configuration/entries/monkestation.dm @@ -17,6 +17,14 @@ /datum/config_entry/string/roundend_webhook_name +/datum/config_entry/string/roundend_webhook_description + default = @"[Join Server!](http://play.monkestation.com:7420)" + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/string/roundend_webhook_content + default = "<@&999008528595419278>" + protection = CONFIG_ENTRY_LOCKED + /datum/config_entry/string/bot_dump_url //API key for Github Issues. @@ -30,3 +38,9 @@ /datum/config_entry/flag/looc_enabled /datum/config_entry/flag/log_storyteller + +/datum/config_entry/flag/disable_sunlight_visuals + +/datum/config_entry/flag/disable_particle_weather + +/datum/config_entry/flag/disable_storyteller diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 511f7b9d7450..5634f11b172c 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -234,6 +234,13 @@ GLOBAL_REAL(Master, /datum/controller/master) // Initialize subsystems. for (var/datum/controller/subsystem/subsystem in stage_sorted_subsystems[current_init_stage]) init_subsystem(subsystem) + if(world.system_type == MS_WINDOWS) + var/ss_name = "[subsystem.name]" + var/memory_summary = call_ext("memorystats", "get_memory_stats")() + var/file = file("data/mem_stat/[GLOB.round_id]-memstat.txt") + + var/string = "[ss_name] [memory_summary]" + WRITE_FILE(file, string) CHECK_TICK current_initializing_subsystem = null @@ -250,6 +257,9 @@ GLOBAL_REAL(Master, /datum/controller/master) var/msg = "Initializations complete within [time] second[time == 1 ? "" : "s"]!" + + initialize_cooking_recipes() + to_chat(world, span_boldannounce("[msg]")) log_world(msg) diff --git a/code/controllers/subsystem/area_contents.dm b/code/controllers/subsystem/area_contents.dm index 904714f0ba0b..054de9d8efcf 100644 --- a/code/controllers/subsystem/area_contents.dm +++ b/code/controllers/subsystem/area_contents.dm @@ -1,4 +1,4 @@ -#define ALLOWED_LOOSE_TURFS 500 +#define ALLOWED_LOOSE_TURFS 100 /** * Responsible for managing the sizes of area.contained_turfs and area.turfs_to_uncontain * These lists do not check for duplicates, which is fine, but it also means they can balloon in size over time @@ -17,8 +17,11 @@ SUBSYSTEM_DEF(area_contents) var/total_clearing_from = 0 var/total_to_clear = 0 for(var/area/to_clear as anything in marked_for_clearing) - total_to_clear += length(to_clear.turfs_to_uncontain) - total_clearing_from += length(to_clear.contained_turfs) + for (var/area_zlevel in 1 to length(to_clear.turfs_to_uncontain_by_zlevel)) + if (length(to_clear.turfs_to_uncontain_by_zlevel[area_zlevel])) + total_to_clear += length(to_clear.turfs_to_uncontain_by_zlevel[area_zlevel]) + if (length(to_clear.turfs_by_zlevel) >= area_zlevel) //this should always be true, but stat_entry is no place for runtimes. fire() can handle that + total_clearing_from += length(to_clear.turfs_by_zlevel[area_zlevel]) msg = "A:[length(currentrun)] MR:[length(marked_for_clearing)] TC:[total_to_clear] CF:[total_clearing_from]" return ..() @@ -29,8 +32,10 @@ SUBSYSTEM_DEF(area_contents) while(length(currentrun)) var/area/test = currentrun[length(currentrun)] - if(length(test.turfs_to_uncontain) > ALLOWED_LOOSE_TURFS) - marked_for_clearing |= test + for (var/area_zlevel in 1 to length(test.turfs_to_uncontain_by_zlevel)) + if(length(test.turfs_to_uncontain_by_zlevel[area_zlevel]) > ALLOWED_LOOSE_TURFS) + marked_for_clearing |= test + break currentrun.len-- if(MC_TICK_CHECK) return @@ -39,19 +44,27 @@ SUBSYSTEM_DEF(area_contents) while(length(marked_for_clearing)) var/area/clear = marked_for_clearing[length(marked_for_clearing)] - // The operation of cutting large lists can be expensive - // It scales almost directly with the size of the list we're cutting with - // Because of this, we're gonna stick to cutting 1 entry at a time - // There's no reason to batch it I promise, this is faster. No overtime too - var/amount_cut = 0 - var/list/cut_from = clear.turfs_to_uncontain - for(amount_cut in 1 to length(cut_from)) - clear.contained_turfs -= cut_from[amount_cut] - if(MC_TICK_CHECK) - cut_from.Cut(1, amount_cut + 1) - return - - clear.turfs_to_uncontain = list() + for (var/area_zlevel in 1 to length(clear.turfs_to_uncontain_by_zlevel)) + if (!length(clear.turfs_to_uncontain_by_zlevel[area_zlevel])) + continue + if (length(clear.turfs_by_zlevel) < area_zlevel) + stack_trace("[clear]([clear.type])'s turfs_by_zlevel is length [length(clear.turfs_by_zlevel)] but we are being asked to remove turfs from zlevel [area_zlevel] from it.") + clear.turfs_to_uncontain_by_zlevel[area_zlevel] = list() + continue + + // The operation of cutting large lists can be expensive + // It scales almost directly with the size of the list we're cutting with + // Because of this, we're gonna stick to cutting 1 entry at a time + // There's no reason to batch it I promise, this is faster. No overtime too + var/amount_cut = 0 + var/list/cut_from = clear.turfs_to_uncontain_by_zlevel[area_zlevel] + for(amount_cut in 1 to length(cut_from)) + clear.turfs_by_zlevel[area_zlevel] -= cut_from[amount_cut] + if(MC_TICK_CHECK) + cut_from.Cut(1, amount_cut + 1) + return + + clear.turfs_to_uncontain_by_zlevel = list() marked_for_clearing.len-- #undef ALLOWED_LOOSE_TURFS diff --git a/code/controllers/subsystem/atoms.dm b/code/controllers/subsystem/atoms.dm index db565d2c15cc..5bc5d756c691 100644 --- a/code/controllers/subsystem/atoms.dm +++ b/code/controllers/subsystem/atoms.dm @@ -103,16 +103,19 @@ SUBSYSTEM_DEF(atoms) PROFILE_INIT_ATOM_BEGIN() InitAtom(A, TRUE, mapload_arg) PROFILE_INIT_ATOM_END(A) + SSdemo.mark_multiple_new(atoms) // monkestation edit: replays else #ifdef TESTING count = 0 #endif + var/list/atoms_to_mark = list() // monkestation edit: replays for(var/atom/A as anything in world) if(!(A.flags_1 & INITIALIZED_1)) PROFILE_INIT_ATOM_BEGIN() InitAtom(A, FALSE, mapload_arg) PROFILE_INIT_ATOM_END(A) + atoms_to_mark += A // monkestation edit: replays #ifdef TESTING ++count #endif @@ -121,6 +124,7 @@ SUBSYSTEM_DEF(atoms) stoplag() if(mapload_source) set_tracked_initalized(INITIALIZATION_INNEW_MAPLOAD, mapload_source) + SSdemo.mark_multiple_new(atoms_to_mark) // monkestation edit: replays testing("Initialized [count] atoms") diff --git a/code/controllers/subsystem/economy.dm b/code/controllers/subsystem/economy.dm index f0628eba1d98..ea498a40034f 100644 --- a/code/controllers/subsystem/economy.dm +++ b/code/controllers/subsystem/economy.dm @@ -113,8 +113,8 @@ SUBSYSTEM_DEF(economy) station_target = max(round(temporary_total / max(bank_accounts_by_id.len * 2, 1)) + station_target_buffer, 1) - var/effective_mailcount = round(living_player_count()/(inflation_value - 0.5)) //More mail at low inflation, and vis versa. - mail_waiting += clamp(effective_mailcount, 1, MAX_MAIL_PER_MINUTE * seconds_per_tick) + var/effective_mailcount = round(living_player_count()) ///(inflation_value - 0.5)) //More mail at low inflation, and vis versa. | MONKESTATION EDIT + mail_waiting += clamp(effective_mailcount, 4, MAX_MAIL_PER_MINUTE * seconds_per_tick) /** * Handy proc for obtaining a department's bank account, given the department ID, AKA the define assigned for what department they're under. diff --git a/code/controllers/subsystem/explosions.dm b/code/controllers/subsystem/explosions.dm index ace4e3177f49..46cced9ef7bb 100644 --- a/code/controllers/subsystem/explosions.dm +++ b/code/controllers/subsystem/explosions.dm @@ -224,7 +224,7 @@ SUBSYSTEM_DEF(explosions) * - smoke: Whether to generate a smoke cloud provided the explosion is powerful enough to warrant it. * - explosion_cause: [Optional] The atom that caused the explosion, when different to the origin. Used for logging. */ -/datum/controller/subsystem/explosions/proc/explode(atom/origin, devastation_range = 0, heavy_impact_range = 0, light_impact_range = 0, flame_range = 0, flash_range = 0, adminlog = TRUE, ignorecap = FALSE, silent = FALSE, smoke = FALSE, atom/explosion_cause = null) +/datum/controller/subsystem/explosions/proc/explode(atom/origin, devastation_range = 0, heavy_impact_range = 0, light_impact_range = 0, flame_range = 0, flash_range = 0, adminlog = TRUE, ignorecap = FALSE, silent = FALSE, smoke = FALSE, atom/explosion_cause = null, area/area_lock) var/list/arguments = list( EXARG_KEY_ORIGIN = origin, EXARG_KEY_DEV_RANGE = devastation_range, @@ -237,6 +237,7 @@ SUBSYSTEM_DEF(explosions) EXARG_KEY_SILENT = silent, EXARG_KEY_SMOKE = smoke, EXARG_KEY_EXPLOSION_CAUSE = explosion_cause ? explosion_cause : origin, + EXARG_KEY_AREA_LOCK = area_lock, ) var/atom/location = isturf(origin) ? origin : origin.loc if(SEND_SIGNAL(origin, COMSIG_ATOM_EXPLODE, arguments) & COMSIG_CANCEL_EXPLOSION) @@ -282,7 +283,7 @@ SUBSYSTEM_DEF(explosions) * - smoke: Whether to generate a smoke cloud provided the explosion is powerful enough to warrant it. * - explosion_cause: The atom that caused the explosion. Used for logging. */ -/datum/controller/subsystem/explosions/proc/propagate_blastwave(atom/epicenter, devastation_range, heavy_impact_range, light_impact_range, flame_range, flash_range, adminlog, ignorecap, silent, smoke, atom/explosion_cause) +/datum/controller/subsystem/explosions/proc/propagate_blastwave(atom/epicenter, devastation_range, heavy_impact_range, light_impact_range, flame_range, flash_range, adminlog, ignorecap, silent, smoke, atom/explosion_cause, area/area_lock) epicenter = get_turf(epicenter) var/area/checking = get_area(epicenter) @@ -352,9 +353,8 @@ SUBSYSTEM_DEF(explosions) if(adminlog) message_admins("Explosion with size (Devast: [devastation_range], Heavy: [heavy_impact_range], Light: [light_impact_range], Flame: [flame_range]) in [ADMIN_VERBOSEJMP(epicenter)]. Possible cause: [explosion_cause]. Last fingerprints: [who_did_it].") log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [loc_name(epicenter)]. Possible cause: [explosion_cause]. Last fingerprints: [who_did_it_game_log].") - //monkestation edit start - deadchat_broadcast("Explosion with size: Devast: [devastation_range], Heavy: [heavy_impact_range], Light: [light_impact_range], Flame: [flame_range].", \ + deadchat_broadcast("Explosion with size: Devast: [devastation_range], Heavy: [heavy_impact_range], Light: [light_impact_range], Flame: [flame_range].", \ turf_target = epicenter, message_type = DEADCHAT_ANNOUNCEMENT) //monkestation edit end @@ -400,6 +400,9 @@ SUBSYSTEM_DEF(explosions) //lists are guaranteed to contain at least 1 turf at this point //we presuppose that we'll be iterating away from the epicenter for(var/turf/explode as anything in affected_turfs) + if(area_lock && !(explode in area_lock)) + continue + var/our_x = explode.x var/our_y = explode.y var/dist = CHEAP_HYPOTENUSE(our_x, our_y, x0, y0) diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index a6d0a1f438a7..8e259e8c684f 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -56,10 +56,6 @@ SUBSYSTEM_DEF(garbage) #endif #endif - /// Toggle for enabling/disabling hard deletes. Objects that don't explicitly request hard deletion with this disabled will leak. - var/enable_hard_deletes = FALSE - - var/list/failed_hard_deletes = list() /datum/controller/subsystem/garbage/PreInit() InitQueues() @@ -86,32 +82,38 @@ SUBSYSTEM_DEF(garbage) /datum/controller/subsystem/garbage/Shutdown() //Adds the del() log to the qdel log file - var/list/dellog = list() + var/list/del_log = list() //sort by how long it's wasted hard deleting sortTim(items, cmp=/proc/cmp_qdel_item_time, associative = TRUE) for(var/path in items) var/datum/qdel_item/I = items[path] - dellog += "Path: [path]" + var/list/entry = list() + del_log[path] = entry + if (I.qdel_flags & QDEL_ITEM_SUSPENDED_FOR_LAG) - dellog += "\tSUSPENDED FOR LAG" + entry["SUSPENDED FOR LAG"] = TRUE if (I.failures) - dellog += "\tFailures: [I.failures]" - dellog += "\tqdel() Count: [I.qdels]" - dellog += "\tDestroy() Cost: [I.destroy_time]ms" + entry["Failures"] = I.failures + entry["qdel() Count"] = I.qdels + entry["Destroy() Cost (ms)"] = I.destroy_time + if (I.hard_deletes) - dellog += "\tTotal Hard Deletes: [I.hard_deletes]" - dellog += "\tTime Spent Hard Deleting: [I.hard_delete_time]ms" - dellog += "\tHighest Time Spent Hard Deleting: [I.hard_delete_max]ms" + entry["Total Hard Deletes"] = I.hard_deletes + entry["Time Spend Hard Deleting (ms)"] = I.hard_delete_time + entry["Highest Time Spend Hard Deleting (ms)"] = I.hard_delete_max if (I.hard_deletes_over_threshold) - dellog += "\tHard Deletes Over Threshold: [I.hard_deletes_over_threshold]" + entry["Hard Deletes Over Threshold"] = I.hard_deletes_over_threshold if (I.slept_destroy) - dellog += "\tSleeps: [I.slept_destroy]" + entry["Total Sleeps"] = I.slept_destroy if (I.no_respect_force) - dellog += "\tIgnored force: [I.no_respect_force] times" + entry["Total Ignored Force"] = I.no_respect_force if (I.no_hint) - dellog += "\tNo hint: [I.no_hint] times" - log_qdel(dellog.Join("\n")) + entry["Total No Hint"] = I.no_hint + if(LAZYLEN(I.extra_details)) + entry["Deleted Metadata"] = I.extra_details + + log_qdel("", del_log) /datum/controller/subsystem/garbage/fire() //the fact that this resets its processing each fire (rather then resume where it left off) is intentional. @@ -143,6 +145,7 @@ SUBSYSTEM_DEF(garbage) pass_counts[i] = 0 fail_counts[i] = 0 + /datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_FILTER) if (level == GC_QUEUE_FILTER) delslasttick = 0 @@ -218,11 +221,13 @@ SUBSYSTEM_DEF(garbage) var/datum/qdel_item/I = items[type] var/message = "## TESTING: GC: -- [text_ref(D)] | [type] was unable to be GC'd --" - message = "[message] (ref count of [refcount(D)])" - log_world(message) + var/detail = D.dump_harddel_info() + if(detail) + LAZYADD(I.extra_details, detail) + #ifdef TESTING for(var/c in GLOB.admins) //Using testing() here would fill the logs with ADMIN_VV garbage var/client/admin = c @@ -239,8 +244,7 @@ SUBSYSTEM_DEF(garbage) #endif continue if (GC_QUEUE_HARDDELETE) - if(!HardDelete(D)) - D = null + HardDelete(D) if (MC_TICK_CHECK) return continue @@ -275,61 +279,42 @@ SUBSYSTEM_DEF(garbage) queue[++queue.len] = list(queue_time, D, D.gc_destroyed) // not += for byond reasons //this is mainly to separate things profile wise. -/datum/controller/subsystem/garbage/proc/HardDelete(datum/D, non_datum = FALSE, override = FALSE) - if(!D) - return - - if (!override && !enable_hard_deletes) - failed_hard_deletes |= D - return - +/datum/controller/subsystem/garbage/proc/HardDelete(datum/D) ++delslasttick ++totaldels - var/type - if (!non_datum) - type = D.type - else if (islist(D)) - type = "/list" - else if (istext(D)) - type = "string" - else if (isnum(D)) - type = "number" - else if (isfile(D)) - type = "file" - else - type = "unknown" - + var/type = D.type var/refID = text_ref(D) + var/datum/qdel_item/type_info = items[type] + var/detail = D.dump_harddel_info() + if(detail) + LAZYADD(type_info.extra_details, detail) var/tick_usage = TICK_USAGE del(D) tick_usage = TICK_USAGE_TO_MS(tick_usage) - var/datum/qdel_item/I = items[type] - if(I) - I.hard_deletes++ - I.hard_delete_time += tick_usage - if (tick_usage > I.hard_delete_max) - I.hard_delete_max = tick_usage - if (tick_usage > highest_del_ms) - highest_del_ms = tick_usage - highest_del_type_string = "[type]" - - var/time = MS2DS(tick_usage) - - if (time > 0.1 SECONDS) - postpone(time) - var/threshold = CONFIG_GET(number/hard_deletes_overrun_threshold) - if (threshold && (time > threshold SECONDS)) - if (!(I.qdel_flags & QDEL_ITEM_ADMINS_WARNED)) - log_game("Error: [type]([refID]) took longer than [threshold] seconds to delete (took [round(time/10, 0.1)] seconds to delete)") - message_admins("Error: [type]([refID]) took longer than [threshold] seconds to delete (took [round(time/10, 0.1)] seconds to delete).") - I.qdel_flags |= QDEL_ITEM_ADMINS_WARNED - I.hard_deletes_over_threshold++ - var/overrun_limit = CONFIG_GET(number/hard_deletes_overrun_limit) - if (overrun_limit && I.hard_deletes_over_threshold >= overrun_limit) - I.qdel_flags |= QDEL_ITEM_SUSPENDED_FOR_LAG - return TRUE + type_info.hard_deletes++ + type_info.hard_delete_time += tick_usage + if (tick_usage > type_info.hard_delete_max) + type_info.hard_delete_max = tick_usage + if (tick_usage > highest_del_ms) + highest_del_ms = tick_usage + highest_del_type_string = "[type]" + + var/time = MS2DS(tick_usage) + + if (time > 0.1 SECONDS) + postpone(time) + var/threshold = CONFIG_GET(number/hard_deletes_overrun_threshold) + if (threshold && (time > threshold SECONDS)) + if (!(type_info.qdel_flags & QDEL_ITEM_ADMINS_WARNED)) + log_game("Error: [type]([refID]) took longer than [threshold] seconds to delete (took [round(time/10, 0.1)] seconds to delete)") + message_admins("Error: [type]([refID]) took longer than [threshold] seconds to delete (took [round(time/10, 0.1)] seconds to delete).") + type_info.qdel_flags |= QDEL_ITEM_ADMINS_WARNED + type_info.hard_deletes_over_threshold++ + var/overrun_limit = CONFIG_GET(number/hard_deletes_overrun_limit) + if (overrun_limit && type_info.hard_deletes_over_threshold >= overrun_limit) + type_info.qdel_flags |= QDEL_ITEM_SUSPENDED_FOR_LAG /datum/controller/subsystem/garbage/Recover() InitQueues() //We first need to create the queues before recovering data @@ -351,86 +336,93 @@ SUBSYSTEM_DEF(garbage) var/no_hint = 0 //!Number of times it's not even bother to give a qdel hint var/slept_destroy = 0 //!Number of times it's slept in its destroy var/qdel_flags = 0 //!Flags related to this type's trip thru qdel. + var/list/extra_details //!Lazylist of string metadata about the deleted objects /datum/qdel_item/New(mytype) name = "[mytype]" - /// Should be treated as a replacement for the 'del' keyword. /// /// Datums passed to this will be given a chance to clean up references to allow the GC to collect them. -/proc/qdel(datum/D, force=FALSE, ...) - if(!istype(D)) - SSgarbage.HardDelete(D, TRUE, TRUE) +/proc/qdel(datum/to_delete, force = FALSE) + if(!istype(to_delete)) + //DREAMLUAU_CLEAR_REF_USERDATA(to_delete) + del(to_delete) return - var/datum/qdel_item/I = SSgarbage.items[D.type] - if (!I) - I = SSgarbage.items[D.type] = new /datum/qdel_item(D.type) - I.qdels++ + var/datum/qdel_item/trash = SSgarbage.items[to_delete.type] + if (isnull(trash)) + trash = SSgarbage.items[to_delete.type] = new /datum/qdel_item(to_delete.type) + trash.qdels++ - if(isnull(D.gc_destroyed)) - if (SEND_SIGNAL(D, COMSIG_PREQDELETED, force)) // Give the components a chance to prevent their parent from being deleted - return - D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED - var/start_time = world.time - var/start_tick = world.tick_usage - SEND_SIGNAL(D, COMSIG_QDELETING, force) // Let the (remaining) components know about the result of Destroy - var/hint = D.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up. - if(world.time != start_time) - I.slept_destroy++ - else - I.destroy_time += TICK_USAGE_TO_MS(start_tick) - if(!D) + if(!isnull(to_delete.gc_destroyed)) + if(to_delete.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) + CRASH("[to_delete.type] destroy proc was called multiple times, likely due to a qdel loop in the Destroy logic") + return + + if (SEND_SIGNAL(to_delete, COMSIG_PREQDELETED, force)) // Give the components a chance to prevent their parent from being deleted + return + + to_delete.gc_destroyed = GC_CURRENTLY_BEING_QDELETED + var/start_time = world.time + var/start_tick = world.tick_usage + SEND_SIGNAL(to_delete, COMSIG_QDELETING, force) // Let the (remaining) components know about the result of Destroy + var/hint = to_delete.Destroy(force) // Let our friend know they're about to get fucked up. + + if(world.time != start_time) + trash.slept_destroy++ + else + trash.destroy_time += TICK_USAGE_TO_MS(start_tick) + + if(isnull(to_delete)) + return + + switch(hint) + if (QDEL_HINT_QUEUE) //qdel should queue the object for deletion. + SSgarbage.Queue(to_delete) + if (QDEL_HINT_IWILLGC) + to_delete.gc_destroyed = world.time + SSdemo.mark_destroyed(to_delete) // monkestation edit: replays return - switch(hint) - if (QDEL_HINT_QUEUE) //qdel should queue the object for deletion. - SSgarbage.Queue(D) - if (QDEL_HINT_IWILLGC) - D.gc_destroyed = world.time - SSdemo.mark_destroyed(D) //Monkestation Edit: REPLAYS + if (QDEL_HINT_LETMELIVE) //qdel should let the object live after calling destory. + if(!force) + to_delete.gc_destroyed = null //clear the gc variable (important!) return - if (QDEL_HINT_LETMELIVE) //qdel should let the object live after calling destory. - if(!force) - D.gc_destroyed = null //clear the gc variable (important!) - return - // Returning LETMELIVE after being told to force destroy - // indicates the objects Destroy() does not respect force - #ifdef TESTING - if(!I.no_respect_force) - testing("WARNING: [D.type] has been force deleted, but is \ - returning an immortal QDEL_HINT, indicating it does \ - not respect the force flag for qdel(). It has been \ - placed in the queue, further instances of this type \ - will also be queued.") - #endif - I.no_respect_force++ - - SSgarbage.Queue(D) - if (QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete - SSdemo.mark_destroyed(D) //Monkestation Edit: REPLAYS - SSgarbage.Queue(D, GC_QUEUE_HARDDELETE) - if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste. - SSdemo.mark_destroyed(D) //Monkestation Edit: REPLAYS - SSgarbage.HardDelete(D, override = TRUE) - #ifdef REFERENCE_TRACKING - if (QDEL_HINT_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled, display all references to this object, then queue the object for deletion. - SSgarbage.HardDelete(D, override = TRUE) // Need to override enable_hard_deletes, stuff like /client uses this - D.find_references() //This breaks ci. Consider it insurance against somehow pring reftracking on accident - if (QDEL_HINT_IFFAIL_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled and the object fails to collect, display all references to this object. - SSgarbage.Queue(D) - SSgarbage.reference_find_on_fail[text_ref(D)] = TRUE + // Returning LETMELIVE after being told to force destroy + // indicates the objects Destroy() does not respect force + #ifdef TESTING + if(!trash.no_respect_force) + testing("WARNING: [to_delete.type] has been force deleted, but is \ + returning an immortal QDEL_HINT, indicating it does \ + not respect the force flag for qdel(). It has been \ + placed in the queue, further instances of this type \ + will also be queued.") #endif - else - #ifdef TESTING - if(!I.no_hint) - testing("WARNING: [D.type] is not returning a qdel hint. It is being placed in the queue. Further instances of this type will also be queued.") - #endif - I.no_hint++ - SSgarbage.Queue(D) - //Monkestation Edit: REPLAYS - if(D) - SSdemo?.mark_destroyed(D) - //Monkestation Edit: REPLAYS - else if(D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) - CRASH("[D.type] destroy proc was called multiple times, likely due to a qdel loop in the Destroy logic") + trash.no_respect_force++ + + SSgarbage.Queue(to_delete) + if (QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete + SSdemo.mark_destroyed(to_delete) // monkestation edit: replays + SSgarbage.Queue(to_delete, GC_QUEUE_HARDDELETE) + if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste. + SSdemo.mark_destroyed(to_delete) // monkestation edit: replays + SSgarbage.HardDelete(to_delete) + #ifdef REFERENCE_TRACKING + if (QDEL_HINT_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled, display all references to this object, then queue the object for deletion. + SSgarbage.Queue(to_delete) + INVOKE_ASYNC(to_delete, TYPE_PROC_REF(/datum, find_references)) + if (QDEL_HINT_IFFAIL_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled and the object fails to collect, display all references to this object. + SSgarbage.Queue(to_delete) + SSgarbage.reference_find_on_fail[text_ref(to_delete)] = TRUE + #endif + else + #ifdef TESTING + if(!trash.no_hint) + testing("WARNING: [to_delete.type] is not returning a qdel hint. It is being placed in the queue. Further instances of this type will also be queued.") + #endif + trash.no_hint++ + SSgarbage.Queue(to_delete) + // monkestation start: replays + if(to_delete) + SSdemo?.mark_destroyed(to_delete) + // monkestation end: replays diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 50d7ea4e1fdf..7a9915fdd229 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -100,6 +100,7 @@ SUBSYSTEM_DEF(job) new_overflow.allow_bureaucratic_error = FALSE new_overflow.spawn_positions = cap new_overflow.total_positions = cap + new_overflow.job_flags |= JOB_CANNOT_OPEN_SLOTS if(new_overflow.type == overflow_role) return @@ -107,6 +108,8 @@ SUBSYSTEM_DEF(job) old_overflow.allow_bureaucratic_error = initial(old_overflow.allow_bureaucratic_error) old_overflow.spawn_positions = initial(old_overflow.spawn_positions) old_overflow.total_positions = initial(old_overflow.total_positions) + if(!(initial(old_overflow.job_flags) & JOB_CANNOT_OPEN_SLOTS)) + old_overflow.job_flags &= ~JOB_CANNOT_OPEN_SLOTS overflow_role = new_overflow.type JobDebug("Overflow role set to : [new_overflow.type]") @@ -964,35 +967,24 @@ SUBSYSTEM_DEF(job) /datum/controller/subsystem/job/proc/get_last_resort_spawn_points() - //bad mojo var/area/shuttle/arrival/arrivals_area = GLOB.areas_by_type[/area/shuttle/arrival] - if(arrivals_area) - //first check if we can find a chair - var/obj/structure/chair/shuttle_chair = locate() in arrivals_area - if(shuttle_chair) - return shuttle_chair - - //last hurrah + if(!isnull(arrivals_area)) var/list/turf/available_turfs = list() - for(var/turf/arrivals_turf in arrivals_area) - if(!arrivals_turf.is_blocked_turf(TRUE)) + for (var/list/zlevel_turfs as anything in arrivals_area.get_zlevel_turf_lists()) + for (var/turf/arrivals_turf as anything in zlevel_turfs) + var/obj/structure/chair/shuttle_chair = locate() in arrivals_turf + if(!isnull(shuttle_chair)) + return shuttle_chair + if(arrivals_turf.is_blocked_turf(TRUE)) + continue available_turfs += arrivals_turf + if(length(available_turfs)) return pick(available_turfs) - //pick an open spot on arrivals and dump em - var/list/arrivals_turfs = shuffle(get_area_turfs(/area/shuttle/arrival)) - if(length(arrivals_turfs)) - for(var/turf/arrivals_turf in arrivals_turfs) - if(!arrivals_turf.is_blocked_turf(TRUE)) - return arrivals_turf - //last chance, pick ANY spot on arrivals and dump em - return pick(arrivals_turfs) - stack_trace("Unable to find last resort spawn point.") return GET_ERROR_ROOM - ///Lands specified mob at a random spot in the hallways /datum/controller/subsystem/job/proc/DropLandAtRandomHallwayPoint(mob/living/living_mob) var/turf/spawn_turf = get_safe_random_station_turf(typesof(/area/station/hallway)) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 0ab3a068233e..133d28e3033f 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -181,7 +181,7 @@ SUBSYSTEM_DEF(mapping) // Cache for sonic speed var/list/unused_turfs = src.unused_turfs var/list/world_contents = GLOB.areas_by_type[world.area].contents - var/list/world_turf_contents = GLOB.areas_by_type[world.area].contained_turfs + var/list/world_turf_contents_by_z = GLOB.areas_by_type[world.area].turfs_by_zlevel var/list/lists_to_reserve = src.lists_to_reserve var/index = 0 while(index < length(lists_to_reserve)) @@ -197,10 +197,12 @@ SUBSYSTEM_DEF(mapping) LAZYINITLIST(unused_turfs["[T.z]"]) unused_turfs["[T.z]"] |= T var/area/old_area = T.loc - old_area.turfs_to_uncontain += T + LISTASSERTLEN(old_area.turfs_to_uncontain_by_zlevel, T.z, list()) + old_area.turfs_to_uncontain_by_zlevel[T.z] += T T.turf_flags = UNUSED_RESERVATION_TURF world_contents += T - world_turf_contents += T + LISTASSERTLEN(world_turf_contents_by_z, T.z, list()) + world_turf_contents_by_z[T.z] += T packet.len-- packetlen = length(packet) @@ -258,16 +260,16 @@ SUBSYSTEM_DEF(mapping) var/list/ice_ruins = levels_by_trait(ZTRAIT_ICE_RUINS) if (ice_ruins.len) // needs to be whitelisted for underground too so place_below ruins work - seedRuins(ice_ruins, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/surface/outdoors/unexplored), themed_ruins[ZTRAIT_ICE_RUINS], clear_below = TRUE) + seedRuins(ice_ruins, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/surface/outdoors/unexplored, /area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS], clear_below = TRUE) var/list/ice_ruins_underground = levels_by_trait(ZTRAIT_ICE_RUINS_UNDERGROUND) if (ice_ruins_underground.len) - seedRuins(ice_ruins_underground, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS_UNDERGROUND], clear_below = TRUE) + seedRuins(ice_ruins_underground, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS_UNDERGROUND], clear_below = TRUE, mineral_budget = 21) // Generate deep space ruins var/list/space_ruins = levels_by_trait(ZTRAIT_SPACE_RUINS) if (space_ruins.len) - seedRuins(space_ruins, CONFIG_GET(number/space_budget), list(/area/space), themed_ruins[ZTRAIT_SPACE_RUINS]) + seedRuins(space_ruins, CONFIG_GET(number/space_budget), list(/area/space), themed_ruins[ZTRAIT_SPACE_RUINS], mineral_budget = 0) /// Sets up rivers, and things that behave like rivers. So lava/plasma rivers, and chasms /// It is important that this happens AFTER generating mineral walls and such, since we rely on them for river logic @@ -341,9 +343,9 @@ Used by the AI doomsday and the self-destruct nuke. /datum/controller/subsystem/mapping/proc/determine_fake_sale() if(length(SSmapping.levels_by_all_traits(list(ZTRAIT_STATION, ZTRAIT_NOPARALLAX)))) - GLOB.arcade_prize_pool += /obj/item/stack/tile/fakeice/loaded + GLOB.arcade_prize_pool[/obj/item/stack/tile/fakeice/loaded] = 1 // monkestation edit: fix null weight else - GLOB.arcade_prize_pool += /obj/item/stack/tile/fakespace/loaded + GLOB.arcade_prize_pool[/obj/item/stack/tile/fakespace/loaded] = 1 // monkestation edit: fix null weight /datum/controller/subsystem/mapping/Recover() @@ -981,12 +983,14 @@ GLOBAL_LIST_EMPTY(the_station_areas) // Faster if(space_guaranteed) var/area/global_area = GLOB.areas_by_type[world.area] - global_area.contained_turfs += Z_TURFS(z_level) + LISTASSERTLEN(global_area.turfs_by_zlevel, z_level, list()) + global_area.turfs_by_zlevel[z_level] = Z_TURFS(z_level) return for(var/turf/to_contain as anything in Z_TURFS(z_level)) var/area/our_area = to_contain.loc - our_area.contained_turfs += to_contain + LISTASSERTLEN(our_area.turfs_by_zlevel, z_level, list()) + our_area.turfs_by_zlevel[z_level] += to_contain /datum/controller/subsystem/mapping/proc/update_plane_tracking(datum/space_level/update_with) // We're essentially going to walk down the stack of connected z levels, and set their plane offset as we go diff --git a/code/controllers/subsystem/materials.dm b/code/controllers/subsystem/materials.dm index 51d595c98674..259545b93e31 100644 --- a/code/controllers/subsystem/materials.dm +++ b/code/controllers/subsystem/materials.dm @@ -167,7 +167,8 @@ SUBSYSTEM_DEF(materials) combo[GET_MATERIAL_REF(mat)] = materials_declaration[mat] * multiplier material_combos[combo_index] = combo return combo - +///MONKESTATION REMOVAL, we dont use this boi, not removing the proc because LAYZ /datum/controller/subsystem/materials/proc/InitializeTemplates() - for(var/datum/mining_template/template as anything in typesof(/datum/mining_template)) - LAZYADD(template_paths_by_rarity["[initial(template.rarity)]"], template) +// for(var/datum/mining_template/template as anything in typesof(/datum/mining_template)) +// LAZYADD(template_paths_by_rarity["[initial(template.rarity)]"], template) +// diff --git a/code/controllers/subsystem/pathfinder.dm b/code/controllers/subsystem/pathfinder.dm index fa1a7af5c859..e7d8b7b14469 100644 --- a/code/controllers/subsystem/pathfinder.dm +++ b/code/controllers/subsystem/pathfinder.dm @@ -61,9 +61,9 @@ SUBSYSTEM_DEF(pathfinder) currentmaps.len-- /// Initiates a pathfind. Returns true if we're good, FALSE if something's failed -/datum/controller/subsystem/pathfinder/proc/pathfind(atom/movable/caller, atom/end, max_distance = 30, mintargetdist, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, diagonal_handling = DIAGONAL_REMOVE_CLUNKY, list/datum/callback/on_finish) +/datum/controller/subsystem/pathfinder/proc/pathfind(atom/movable/requester, atom/end, max_distance = 30, mintargetdist, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, diagonal_handling = DIAGONAL_REMOVE_CLUNKY, list/datum/callback/on_finish) var/datum/pathfind/jps/path = new() - path.setup(caller, access, max_distance, simulated_only, exclude, on_finish, end, mintargetdist, skip_first, diagonal_handling) + path.setup(requester, access, max_distance, simulated_only, exclude, on_finish, end, mintargetdist, skip_first, diagonal_handling) if(path.start()) active_pathing += path return TRUE @@ -71,21 +71,21 @@ SUBSYSTEM_DEF(pathfinder) /// Initiates a swarmed pathfind. Returns TRUE if we're good, FALSE if something's failed /// If a valid pathmap exists for the TARGET turf we'll use that, otherwise we have to build a new one -/datum/controller/subsystem/pathfinder/proc/swarmed_pathfind(atom/movable/caller, atom/end, max_distance = 30, mintargetdist = 0, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, list/datum/callback/on_finish) +/datum/controller/subsystem/pathfinder/proc/swarmed_pathfind(atom/movable/requester, atom/end, max_distance = 30, mintargetdist = 0, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, list/datum/callback/on_finish) var/turf/target = get_turf(end) - var/datum/can_pass_info/pass_info = new(caller, access) + var/datum/can_pass_info/pass_info = new(requester, access) // If there's a map we can use already, use it var/datum/path_map/valid_map = get_valid_map(pass_info, target, simulated_only, exclude, age, include_building = TRUE) if(valid_map && valid_map.expand(max_distance)) - path_map_passalong(on_finish, get_turf(caller), mintargetdist, skip_first, valid_map) + path_map_passalong(on_finish, get_turf(requester), mintargetdist, skip_first, valid_map) return TRUE // Otherwise we're gonna make a new one, and turn it into a path for the callbacks passed into us var/list/datum/callback/pass_in = list() - pass_in += CALLBACK(GLOBAL_PROC, /proc/path_map_passalong, on_finish, get_turf(caller), mintargetdist, skip_first) + pass_in += CALLBACK(GLOBAL_PROC, /proc/path_map_passalong, on_finish, get_turf(requester), mintargetdist, skip_first) // And to allow subsequent calls to reuse the same map, we'll put a placeholder in the cache, and fill it up when the pathing finishes var/datum/path_map/empty = new() - empty.pass_info = new(caller, access) + empty.pass_info = new(requester, access) empty.start = target empty.pass_space = simulated_only empty.avoid = exclude @@ -133,9 +133,9 @@ SUBSYSTEM_DEF(pathfinder) source_to_maps[target] -= same_target /// Initiates a SSSP run. Returns true if we're good, FALSE if something's failed -/datum/controller/subsystem/pathfinder/proc/build_map(atom/movable/caller, turf/source, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude, list/datum/callback/on_finish) +/datum/controller/subsystem/pathfinder/proc/build_map(atom/movable/requester, turf/source, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude, list/datum/callback/on_finish) var/datum/pathfind/sssp/path = new() - path.setup(caller, access, source, max_distance, simulated_only, exclude, on_finish) + path.setup(requester, access, source, max_distance, simulated_only, exclude, on_finish) if(path.start()) active_pathing += path return TRUE @@ -160,7 +160,7 @@ SUBSYSTEM_DEF(pathfinder) /// Optionally takes a max age to accept (defaults to 0 seconds) and a minimum acceptable range /// If include_building is true and we can only find a building path, ew'll use that instead. tho we will wait for it to finish first /datum/controller/subsystem/pathfinder/proc/get_valid_map(datum/can_pass_info/pass_info, turf/target, simulated_only = TRUE, turf/exclude, age = MAP_REUSE_INSTANT, min_range = -INFINITY, include_building = FALSE) - // Walk all the maps that match our caller's turf OR our target's + // Walk all the maps that match our requester's turf OR our target's // Then hold onto em. If their cache time is short we can reuse/expand them, if not we'll have to make a new one var/oldest_time = world.time - age /// Backup return value used if no finished pathmaps are found @@ -189,7 +189,7 @@ SUBSYSTEM_DEF(pathfinder) /// Takes a set of pathfind info, returns all valid pathmaps that would work /// Takes an optional minimum range arg /datum/controller/subsystem/pathfinder/proc/get_valid_maps(datum/can_pass_info/pass_info, turf/target, simulated_only = TRUE, turf/exclude, age = MAP_REUSE_INSTANT, min_range = -INFINITY, include_building = FALSE) - // Walk all the maps that match our caller's turf OR our target's + // Walk all the maps that match our requester's turf OR our target's // Then hold onto em. If their cache time is short we can reuse/expand them, if not we'll have to make a new one var/list/valid_maps = list() var/oldest_time = world.time - age diff --git a/code/controllers/subsystem/polling.dm b/code/controllers/subsystem/polling.dm index 4aaca93f6ccf..394a05d87e05 100644 --- a/code/controllers/subsystem/polling.dm +++ b/code/controllers/subsystem/polling.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(polling) name = "Polling" flags = SS_BACKGROUND | SS_NO_INIT wait = 1 SECONDS - runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + runlevels = RUNLEVEL_GAME /// List of polls currently ongoing, to be checked on next fire() var/list/datum/candidate_poll/currently_polling /// Number of polls performed since the start @@ -27,10 +27,14 @@ SUBSYSTEM_DEF(polling) * * ignore_category: Optional, A poll category. If a candidate has this category in their ignore list, they won't be polled. * * flash_window: If TRUE, the candidate's window will flash when they're polled. * * list/group: A list of candidates to poll. - * * pic_source: Optional, An /atom or an /image to display on the poll alert. + * * alert_pic: Optional, An /atom or an /image to display on the poll alert. + * * jump_target: An /atom to teleport/jump to, if alert_pic is an /atom defaults to that. * * role_name_text: Optional, A string to display in logging / the (default) question. If null, the role name will be used. * * list/custom_response_messages: Optional, A list of strings to use as responses to the poll. If null, the default responses will be used. see __DEFINES/polls.dm for valid keys to use. * * start_signed_up: If TRUE, all candidates will start signed up for the poll, making it opt-out rather than opt-in. + * * amount_to_pick: Lets you pick candidates and return a single mob or list of mobs that were chosen. + * * chat_text_border_icon: Object or path to make an icon of to decorate the chat announcement. + * * announce_chosen: Whether we should announce the chosen candidates in chat. This is ignored unless amount_to_pick is greater than 0. * * Returns a list of all mobs who signed up for the poll. */ @@ -42,18 +46,22 @@ SUBSYSTEM_DEF(polling) ignore_category = null, flash_window = TRUE, list/group = null, - pic_source, + alert_pic, + jump_target, role_name_text, list/custom_response_messages, - start_signed_up = FALSE + start_signed_up = FALSE, + amount_to_pick = 0, + chat_text_border_icon, + announce_chosen = TRUE, + show_candidate_amount = TRUE, ) - RETURN_TYPE(/list/mob) - if(group.len == 0) - return list() + if(length(group) == 0) + return if(role && !role_name_text) role_name_text = role if(role_name_text && !question) - question = "Do you want to play as [full_capitalize(role_name_text)]?" + question = "Do you want to play as [span_notice(role_name_text)]?" if(!question) question = "Do you want to play as a special role?" log_game("Polling candidates [role_name_text ? "for [role_name_text]" : "\"[question]\""] for [DisplayTimeText(poll_time)] seconds") @@ -61,23 +69,40 @@ SUBSYSTEM_DEF(polling) // Start firing total_polls++ - var/jumpable = isatom(pic_source) ? pic_source : null + if(isnull(jump_target) && isatom(alert_pic)) + jump_target = alert_pic - var/datum/candidate_poll/new_poll = new(role_name_text, question, poll_time, ignore_category, jumpable, custom_response_messages) + var/datum/candidate_poll/new_poll = new(role_name_text, question, poll_time, ignore_category, jump_target, custom_response_messages) + new_poll.show_candidate_amount = show_candidate_amount LAZYADD(currently_polling, new_poll) var/category = "[new_poll.poll_key]_poll_alert" + var/image/surrounding_image + if(isnull(chat_text_border_icon) && !isnull(alert_pic)) + chat_text_border_icon = alert_pic + if(chat_text_border_icon) + if(isatom(chat_text_border_icon)) + surrounding_image = getFlatIcon(chat_text_border_icon, SOUTH, no_anim = TRUE) + else if(!ispath(chat_text_border_icon)) + var/mutable_appearance/border_image = chat_text_border_icon + surrounding_image = border_image + else if(ispath(chat_text_border_icon, /datum/antagonist)) + var/datum/antagonist/antagonist = new chat_text_border_icon + surrounding_image = antagonist.render_poll_preview() + QDEL_NULL(antagonist) + else + surrounding_image = image(chat_text_border_icon) + for(var/mob/candidate_mob as anything in group) if(!candidate_mob.client) continue - // Universal opt-out for all players if it's for a role. + // Universal opt-out for all players. if(!candidate_mob.client.prefs.read_preference(/datum/preference/toggle/ghost_roles)) continue // Opt-out for admins whom are currently adminned. - if(!candidate_mob.client.prefs.read_preference(/datum/preference/toggle/ghost_roles_as_admin) && candidate_mob.client.holder) + if((!candidate_mob.client.prefs.read_preference(/datum/preference/toggle/ghost_roles_as_admin)) && candidate_mob.client.holder) continue - // Eligibility check (checks jobbans, prefs, and ignore categories) if(!is_eligible(candidate_mob, role, check_jobban, ignore_category)) continue @@ -121,96 +146,145 @@ SUBSYSTEM_DEF(polling) if((candidate_mob in other_poll.signed_up) && new_poll.sign_up(candidate_mob, TRUE)) break + // Image to display var/image/poll_image - if(pic_source) - if(isatom(pic_source)) - var/atom/the_pic_source = pic_source - var/old_layer = the_pic_source.layer - var/old_plane = the_pic_source.plane - the_pic_source.plane = poll_alert_button.plane - the_pic_source.layer = FLOAT_LAYER - poll_alert_button.add_overlay(the_pic_source) - the_pic_source.layer = old_layer - the_pic_source.plane = old_plane - else if(ispath(pic_source, /datum/antagonist)) - var/datum/antagonist/antagonist = new pic_source - poll_image = antagonist.render_poll_preview() || image('icons/effects/effects.dmi', icon_state = "static", layer = FLOAT_LAYER) - qdel(antagonist) - else - poll_image = image(pic_source, layer = FLOAT_LAYER) + if(ispath(alert_pic, /atom) || isatom(alert_pic)) + poll_image = new /mutable_appearance(alert_pic) + poll_image.pixel_z = 0 + else if(ispath(alert_pic, /datum/antagonist)) + var/datum/antagonist/antagonist = new alert_pic + poll_image = antagonist.render_poll_preview() || image('icons/effects/effects.dmi', icon_state = "static", layer = FLOAT_LAYER) + QDEL_NULL(antagonist) + else if(isicon(alert_pic)) + poll_image = image(alert_pic) else - // Just use a generic image - poll_image = image('icons/effects/effects.dmi', icon_state = "static", layer = FLOAT_LAYER) + poll_image = image('icons/effects/effects.dmi', icon_state = "static") if(poll_image) + poll_image.layer = FLOAT_LAYER poll_image.plane = poll_alert_button.plane poll_alert_button.add_overlay(poll_image) // Chat message var/act_jump = "" - if(isatom(pic_source) && isobserver(candidate_mob)) - act_jump = "\[Teleport\]" - var/act_signup = "\[[start_signed_up ? "Opt out" : "Sign Up"]\]" + var/custom_link_style_start = "" + var/custom_link_style_end = "style='color:DodgerBlue;font-weight:bold;-dm-text-outline: 1px black'" + if(isatom(alert_pic) && isobserver(candidate_mob)) + act_jump = "[custom_link_style_start]\[Teleport\]" + var/act_signup = "[custom_link_style_start]\[[start_signed_up ? "Opt out" : "Sign Up"]\]" var/act_never = "" if(ignore_category) - act_never = "\[Never For This Round\]" + act_never = "[custom_link_style_start]\[Never For This Round\]" - if(!duplicate_message_check(alert_poll) && candidate_mob.client) //Only notify people once. They'll notice if there are multiple and we don't want to spam people. - SEND_SOUND(candidate_mob.client, sound('monkestation/sound/effects/prompt.ogg', volume = candidate_mob.client.prefs.channel_volume["[CHANNEL_SOUND_EFFECTS]"])) // monkestation edit: prompt sound - to_chat(candidate_mob, span_boldnotice(examine_block("Now looking for candidates [role_name_text ? "to play as \an [role_name_text]." : "\"[question]\""] [act_jump] [act_signup] [act_never]"))) + if(!duplicate_message_check(alert_poll)) //Only notify people once. They'll notice if there are multiple and we don't want to spam people. + SEND_SOUND(candidate_mob, sound('monkestation/sound/effects/prompt.ogg', volume = candidate_mob.client?.prefs?.channel_volume["[CHANNEL_SOUND_EFFECTS]"])) // monkestation edit: prompt sound + var/surrounding_icon + if(surrounding_image) + surrounding_icon = icon2html(surrounding_image, candidate_mob, extra_classes = "bigicon") + var/final_message = examine_block("[surrounding_icon] [span_ooc(question)] [surrounding_icon]\n[act_jump] [act_signup] [act_never]") + to_chat(candidate_mob, final_message) // Start processing it so it updates visually the timer START_PROCESSING(SSprocessing, poll_alert_button) // Sleep until the time is up UNTIL(new_poll.finished) - return new_poll.signed_up - -/datum/controller/subsystem/polling/proc/poll_ghost_candidates(question, role, check_jobban, poll_time = 30 SECONDS, ignore_category = null, flashwindow = TRUE, pic_source, role_name_text) + if(!(amount_to_pick > 0)) + return new_poll.signed_up + for(var/pick in 1 to amount_to_pick) + new_poll.chosen_candidates += pick_n_take(new_poll.signed_up) + if(announce_chosen) + new_poll.announce_chosen(group) + if(new_poll.chosen_candidates.len == 1) + var/chosen_one = pick(new_poll.chosen_candidates) + return chosen_one + return new_poll.chosen_candidates + +/datum/controller/subsystem/polling/proc/poll_ghost_candidates( + question, + role, + check_jobban, + poll_time = 30 SECONDS, + ignore_category = null, + flashwindow = TRUE, + alert_pic, + jump_target, + role_name_text, + list/custom_response_messages, + start_signed_up = FALSE, + amount_to_pick = 0, + chat_text_border_icon, + announce_chosen = TRUE, + show_candidate_amount = TRUE, +) as /list + RETURN_TYPE(/list) var/list/candidates = list() if(!(GLOB.ghost_role_flags & GHOSTROLE_STATION_SENTIENCE)) - return candidates - + return for(var/mob/dead/observer/ghost_player in GLOB.player_list) candidates += ghost_player - return poll_candidates(question, role, check_jobban, poll_time, ignore_category, flashwindow, candidates, pic_source, role_name_text) - -/datum/controller/subsystem/polling/proc/poll_ghost_candidates_for_mob(question, role, check_jobban, poll_time = 30 SECONDS, mob/target_mob, ignore_category = null, flashwindow = TRUE, pic_source, role_name_text) - var/static/list/mob/currently_polling_mobs = list() - - if(!isnull(target_mob) && !ismob(target_mob)) - stack_trace("attempted to use a non-mob as the target mob ([target_mob] | [target_mob.type])") +#ifdef TESTING + for(var/mob/dude in GLOB.player_list) + candidates |= dude +#endif - if(currently_polling_mobs.Find(target_mob)) - return list() - - if(!pic_source && target_mob) - pic_source = target_mob - - currently_polling_mobs += target_mob + return poll_candidates(question, role, check_jobban, poll_time, ignore_category, flashwindow, candidates, alert_pic, jump_target, role_name_text, custom_response_messages, start_signed_up, amount_to_pick, chat_text_border_icon, announce_chosen, show_candidate_amount) - var/list/possible_candidates = poll_ghost_candidates(question, role, check_jobban, poll_time, ignore_category, flashwindow, pic_source, role_name_text) - - currently_polling_mobs -= target_mob - if(!target_mob || QDELETED(target_mob) || !target_mob.loc) - return list() - - return possible_candidates - -/datum/controller/subsystem/polling/proc/poll_ghost_candidates_for_mobs(question, role, check_jobban, poll_time = 30 SECONDS, list/mobs, ignore_category = null, flashwindow = TRUE, pic_source, role_name_text) - var/list/candidate_list = poll_ghost_candidates(question, role, check_jobban, poll_time, ignore_category, flashwindow, pic_source, role_name_text) - - for(var/mob/potential_mob as anything in mobs) - if(QDELETED(potential_mob) || !potential_mob.loc) - mobs -= potential_mob - - if(!length(mobs)) +/datum/controller/subsystem/polling/proc/poll_ghosts_for_target( + question, + role, + check_jobban, + poll_time = 30 SECONDS, + atom/movable/checked_target, + ignore_category = null, + flashwindow = TRUE, + alert_pic, + jump_target, + role_name_text, + list/custom_response_messages, + start_signed_up = FALSE, + chat_text_border_icon, + announce_chosen = TRUE, + show_candidate_amount = TRUE, +) as /mob/dead/observer + RETURN_TYPE(/mob/dead/observer) + var/static/list/atom/movable/currently_polling_targets = list() + if(currently_polling_targets.Find(checked_target)) + return + currently_polling_targets += checked_target + var/mob/chosen_one = poll_ghost_candidates(question, role, check_jobban, poll_time, ignore_category, flashwindow, alert_pic, jump_target, role_name_text, custom_response_messages, start_signed_up, amount_to_pick = 1, chat_text_border_icon = chat_text_border_icon, announce_chosen = announce_chosen, show_candidate_amount = show_candidate_amount) + currently_polling_targets -= checked_target + if(!checked_target || QDELETED(checked_target) || !checked_target.loc) + return null + return chosen_one + +/datum/controller/subsystem/polling/proc/poll_ghosts_for_targets( + question, + role, + check_jobban, + poll_time = 30 SECONDS, + list/checked_targets, + ignore_category = null, + flashwindow = TRUE, + alert_pic, + jump_target, + role_name_text, + list/custom_response_messages, + start_signed_up = FALSE, + chat_text_border_icon, + show_candidate_amount = TRUE, +) as /list + RETURN_TYPE(/list) + var/list/candidate_list = poll_ghost_candidates(question, role, check_jobban, poll_time, ignore_category, flashwindow, alert_pic, jump_target, role_name_text, custom_response_messages, start_signed_up, chat_text_border_icon = chat_text_border_icon, show_candidate_amount = show_candidate_amount) + for(var/atom/movable/potential_target as anything in checked_targets) + if(QDELETED(potential_target) || !potential_target.loc) + checked_targets -= potential_target + if(!length(checked_targets)) return list() - return candidate_list -/datum/controller/subsystem/polling/proc/is_eligible(mob/potential_candidate, role, check_jobban, the_ignore_category) +/datum/controller/subsystem/polling/proc/is_eligible(mob/potential_candidate, role, check_jobban, the_ignore_category) as num if(isnull(potential_candidate.key) || isnull(potential_candidate.client)) return FALSE if(the_ignore_category) @@ -223,8 +297,6 @@ SUBSYSTEM_DEF(polling) if(potential_candidate.client && potential_candidate.client.get_remaining_days(required_time) > 0) return FALSE - if(isnull(check_jobban) || !isnull(role)) - check_jobban = role if(check_jobban) if(is_banned_from(potential_candidate.ckey, list(check_jobban, ROLE_SYNDICATE))) return FALSE @@ -258,13 +330,14 @@ SUBSYSTEM_DEF(polling) return ..() ///Is there a multiple of the given event type running right now? -/datum/controller/subsystem/polling/proc/duplicate_message_check(datum/candidate_poll/poll_to_check) +/datum/controller/subsystem/polling/proc/duplicate_message_check(datum/candidate_poll/poll_to_check) as num for(var/datum/candidate_poll/running_poll as anything in currently_polling) if((running_poll.poll_key == poll_to_check.poll_key && running_poll != poll_to_check) && running_poll.time_left() > 0) return TRUE return FALSE -/datum/controller/subsystem/polling/proc/get_next_poll_to_finish() +/datum/controller/subsystem/polling/proc/get_next_poll_to_finish() as /datum/candidate_poll + RETURN_TYPE(/datum/candidate_poll) var/lowest_time_left = INFINITY var/next_poll_to_finish for(var/datum/candidate_poll/poll as anything in currently_polling) diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index e22b3af77efe..e11de9b0d63a 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -35,7 +35,9 @@ PROCESSING_SUBSYSTEM_DEF(quirks) list("Stormtrooper Aim", "Big Hands"), list("Bilingual", "Foreigner"), //might be fun to change this in the future. you can be a body purist but be forced to use implants regardless for medical reasons - list("Body Purist", "Hosed", "Neuralinked") + list("Body Purist", "Hosed"), + list("Body Purist", "Neuralinked"), + list("Body Purist", "Bright Eyes") ) /datum/controller/subsystem/processing/quirks/Initialize() diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 753546b411e9..260fb5433814 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -632,7 +632,7 @@ SUBSYSTEM_DEF(shuttle) var/datum/turf_reservation/proposal = SSmapping.request_turf_block_reservation( transit_width, transit_height, - 1, + z_size = 1, //if this is changed the turf uncontain code below has to be updated to support multiple zs reservation_type = /datum/turf_reservation/transit, turf_type_override = transit_path, ) @@ -666,17 +666,22 @@ SUBSYSTEM_DEF(shuttle) if(!midpoint) qdel(proposal) return FALSE + var/area/old_area = midpoint.loc - old_area.turfs_to_uncontain += proposal.reserved_turfs - var/area/shuttle/transit/A = new() - A.parallax_movedir = travel_dir - A.contents = proposal.reserved_turfs - A.contained_turfs = proposal.reserved_turfs + LISTASSERTLEN(old_area.turfs_to_uncontain_by_zlevel, bottomleft.z, list()) + old_area.turfs_to_uncontain_by_zlevel[bottomleft.z] += proposal.reserved_turfs + + var/area/shuttle/transit/new_area = new() + new_area.parallax_movedir = travel_dir + new_area.contents = proposal.reserved_turfs + LISTASSERTLEN(new_area.turfs_by_zlevel, bottomleft.z, list()) + new_area.turfs_by_zlevel[bottomleft.z] = proposal.reserved_turfs + var/obj/docking_port/stationary/transit/new_transit_dock = new(midpoint) new_transit_dock.reserved_area = proposal new_transit_dock.name = "Transit for [M.shuttle_id]/[M.name]" new_transit_dock.owner = M - new_transit_dock.assigned_area = A + new_transit_dock.assigned_area = new_area // Add 180, because ports point inwards, rather than outwards new_transit_dock.setDir(angle2dir(dock_angle)) diff --git a/code/controllers/subsystem/spatial_gridmap.dm b/code/controllers/subsystem/spatial_gridmap.dm index 1b097994a956..ef0495f0b43d 100644 --- a/code/controllers/subsystem/spatial_gridmap.dm +++ b/code/controllers/subsystem/spatial_gridmap.dm @@ -44,7 +44,7 @@ client_contents = dummy_list atmos_contents = dummy_list -/datum/spatial_grid_cell/Destroy(force, ...) +/datum/spatial_grid_cell/Destroy(force) if(force)//the response to someone trying to qdel this is a right proper fuck you stack_trace("dont try to destroy spatial grid cells without a good reason. if you need to do it use force") return diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm index ee0e2c10422f..2d3a452fdec5 100644 --- a/code/controllers/subsystem/statpanel.dm +++ b/code/controllers/subsystem/statpanel.dm @@ -328,7 +328,7 @@ SUBSYSTEM_DEF(statpanels) . = ..() src.parent = parent -/datum/object_window_info/Destroy(force, ...) +/datum/object_window_info/Destroy(force) atoms_to_show = null atoms_to_images = null atoms_to_imagify = null diff --git a/code/datums/achievements/misc_achievements.dm b/code/datums/achievements/misc_achievements.dm index f07a7530b665..1dd537bc4bb0 100644 --- a/code/datums/achievements/misc_achievements.dm +++ b/code/datums/achievements/misc_achievements.dm @@ -213,3 +213,8 @@ database_id = MEDAL_DEBT_EXTINGUISHED icon = "outdebted" +/datum/award/achievement/misc/gods_wrath + name = "God's Wrath" + desc = "Did you think you could get away with defiling the word of God?" + database_id = MEDAL_GODS_WRATH + icon = "godswrath" diff --git a/code/datums/actions/action.dm b/code/datums/actions/action.dm index 3aa40284811d..1bb6d1fa8961 100644 --- a/code/datums/actions/action.dm +++ b/code/datums/actions/action.dm @@ -171,7 +171,7 @@ if (feedback) owner.balloon_alert(owner, "hands blocked!") return FALSE - if((check_flags & AB_CHECK_IMMOBILE) && HAS_TRAIT(owner, TRAIT_IMMOBILIZED)) + if((check_flags & AB_CHECK_IMMOBILE) && HAS_TRAIT_NOT_FROM(owner, TRAIT_IMMOBILIZED, BUCKLED_TRAIT)) // monkestation edit: don't count buckled as immobile if (feedback) owner.balloon_alert(owner, "can't move!") return FALSE @@ -312,11 +312,13 @@ * force - whether an update is forced regardless of existing status */ /datum/action/proc/update_button_status(atom/movable/screen/movable/action_button/current_button, force = FALSE) + if(QDELETED(current_button)) + return current_button.update_keybind_maptext(full_key) if(IsAvailable()) - current_button?.color = rgb(255,255,255,255) + current_button.color = rgb(255,255,255,255) else - current_button?.color = transparent_when_unavailable ? rgb(128,0,0,128) : rgb(128,0,0) + current_button.color = transparent_when_unavailable ? rgb(128,0,0,128) : rgb(128,0,0) /// Gives our action to the passed viewer. /// Puts our action in their actions list and shows them the button. diff --git a/code/datums/actions/cooldown_action.dm b/code/datums/actions/cooldown_action.dm index ed4309c36e1c..62794c8dfee2 100644 --- a/code/datums/actions/cooldown_action.dm +++ b/code/datums/actions/cooldown_action.dm @@ -222,7 +222,7 @@ return PreActivate(user) /// Intercepts client owner clicks to activate the ability -/datum/action/cooldown/proc/InterceptClickOn(mob/living/caller, params, atom/target) +/datum/action/cooldown/proc/InterceptClickOn(mob/living/user, params, atom/target) if(!IsAvailable(feedback = TRUE)) return FALSE if(!target) @@ -233,8 +233,8 @@ // And if we reach here, the action was complete successfully if(unset_after_click) - unset_click_ability(caller, refund_cooldown = FALSE) - caller.next_click = world.time + click_cd_override + unset_click_ability(user, refund_cooldown = FALSE) + user.next_click = world.time + click_cd_override return TRUE diff --git a/code/datums/actions/innate_action.dm b/code/datums/actions/innate_action.dm index c5271033bc6b..09d90736729a 100644 --- a/code/datums/actions/innate_action.dm +++ b/code/datums/actions/innate_action.dm @@ -76,17 +76,17 @@ on_who.click_intercept = null /// Handles whenever a mob clicks on something -/datum/action/innate/proc/InterceptClickOn(mob/living/caller, params, atom/clicked_on) +/datum/action/innate/proc/InterceptClickOn(mob/living/user, params, atom/clicked_on) if(!IsAvailable(feedback = TRUE)) - unset_ranged_ability(caller) + unset_ranged_ability(user) return FALSE if(!clicked_on) return FALSE - return do_ability(caller, clicked_on) + return do_ability(user, clicked_on) /// Actually goes through and does the click ability -/datum/action/innate/proc/do_ability(mob/living/caller, atom/clicked_on) +/datum/action/innate/proc/do_ability(mob/living/user, atom/clicked_on) return FALSE /datum/action/innate/Remove(mob/removed_from) diff --git a/code/datums/actions/items/toggles.dm b/code/datums/actions/items/toggles.dm index 7d2507b5917b..4414334725e7 100644 --- a/code/datums/actions/items/toggles.dm +++ b/code/datums/actions/items/toggles.dm @@ -112,3 +112,4 @@ /datum/action/item_action/flip name = "Flip" + diff --git a/code/datums/actions/mobs/personality_commune.dm b/code/datums/actions/mobs/personality_commune.dm new file mode 100644 index 000000000000..26cf48344920 --- /dev/null +++ b/code/datums/actions/mobs/personality_commune.dm @@ -0,0 +1,56 @@ +// This can probably be changed to use mind linker at some point +/datum/action/personality_commune + name = "Personality Commune" + desc = "Sends thoughts to your alternate consciousness." + background_icon_state = "bg_spell" + button_icon = 'icons/mob/actions/actions_spells.dmi' + button_icon_state = "telepathy" + overlay_icon_state = "bg_spell_border" + + /// Fluff text shown when a message is sent to the pair + var/fluff_text = span_boldnotice("You hear an echoing voice in the back of your head...") + +/datum/action/personality_commune/New(Target) + . = ..() + if(!istype(target, /datum/brain_trauma/severe/split_personality)) + stack_trace("[type] was created on a target that isn't a /datum/brain_trauma/severe/split_personality, this doesn't work.") + qdel(src) + +/datum/action/personality_commune/Grant(mob/grant_to) + if(!istype(grant_to, /mob/living/split_personality)) + return + + return ..() + +/datum/action/personality_commune/Trigger(trigger_flags) + . = ..() + if(!.) + return FALSE + + var/datum/brain_trauma/severe/split_personality/trauma = target + var/mob/living/split_personality/non_controller = usr + var/client/non_controller_client = non_controller.client + + var/to_send = tgui_input_text(non_controller, "What would you like to tell your other self?", "Commune") + if(QDELETED(src) || QDELETED(trauma) || !to_send) + return FALSE + + var/mob/living/carbon/human/personality_body = trauma.owner + if(personality_body.client == non_controller_client) // We took control + return FALSE + + var/user_message = span_boldnotice("You concentrate and send thoughts to your other self:") + var/user_message_body = span_notice("[to_send]") + + to_chat(non_controller, "[user_message] [user_message_body]") + + personality_body.balloon_alert(personality_body, "you hear a voice") + to_chat(personality_body, "[fluff_text] [user_message_body]") + + log_directed_talk(non_controller, personality_body, to_send, LOG_SAY, "[name]") + for(var/dead_mob in GLOB.dead_mob_list) + if(!isobserver(dead_mob)) + continue + to_chat(dead_mob, "[FOLLOW_LINK(dead_mob, non_controller)] [span_boldnotice("[non_controller] [name]:")] [span_notice("\"[to_send]\" to")] [span_name("[trauma]")]") + + return TRUE diff --git a/code/datums/ai_laws/ai_laws.dm b/code/datums/ai_laws/ai_laws.dm index c3ea9fcfadfa..cd6787d40635 100644 --- a/code/datums/ai_laws/ai_laws.dm +++ b/code/datums/ai_laws/ai_laws.dm @@ -139,7 +139,7 @@ GLOBAL_VAR(round_default_lawset) /// These laws will go away when an AI is reset var/list/hacked = list() -/datum/ai_laws/Destroy(force = FALSE, ...) +/datum/ai_laws/Destroy(force = FALSE) if(!QDELETED(owner)) //Stopgap to help with laws randomly being lost. This stack_trace will hopefully help find the real issues. if(force) //Unless we're forced... stack_trace("AI law datum for [owner] has been forcefully destroyed incorrectly; the owner variable should be cleared first!") diff --git a/code/datums/armor/_armor.dm b/code/datums/armor/_armor.dm index c6dbf1d5fdd6..cf27fd000b54 100644 --- a/code/datums/armor/_armor.dm +++ b/code/datums/armor/_armor.dm @@ -1,7 +1,8 @@ /// Assosciative list of type -> armor. Used to ensure we always hold a reference to default armor datums GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) -/proc/generate_armor_type_cache() +/proc/generate_armor_type_cache() as /list + RETURN_TYPE(/list) var/list/armor_cache = list() for(var/datum/armor/armor_type as anything in subtypesof(/datum/armor)) armor_type = new armor_type @@ -12,7 +13,8 @@ GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) /** * Gets an armor type datum using the given type by formatting it into the expected datum tag */ -/proc/get_armor_by_type(armor_type) +/proc/get_armor_by_type(armor_type) as /datum/armor + RETURN_TYPE(/datum/armor) var/armor = locate(replacetext("[armor_type]", "/", "-")) if(armor) return armor @@ -42,7 +44,7 @@ GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) /// A version of armor that cannot be modified and will always return itself when attempted to be modified /datum/armor/immune -/datum/armor/Destroy(force, ...) +/datum/armor/Destroy(force) if(!force && tag) return QDEL_HINT_LETMELIVE @@ -68,7 +70,8 @@ GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) return FALSE /// Generate a brand new armor datum with the modifiers given, if ARMOR_ALL is specified only that modifier is used -/datum/armor/proc/generate_new_with_modifiers(list/modifiers) +/datum/armor/proc/generate_new_with_modifiers(list/modifiers) as /datum/armor + RETURN_TYPE(/datum/armor) var/datum/armor/new_armor = new var/all_keys = ARMOR_LIST_ALL() @@ -88,10 +91,12 @@ GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) return new_armor /datum/armor/immune/generate_new_with_modifiers(list/modifiers) + RETURN_TYPE(/datum/armor) return src /// Generate a brand new armor datum with the multiplier given, if ARMOR_ALL is specified only that modifer is used -/datum/armor/proc/generate_new_with_multipliers(list/multipliers) +/datum/armor/proc/generate_new_with_multipliers(list/multipliers) as /datum/armor + RETURN_TYPE(/datum/armor) var/datum/armor/new_armor = new var/all_keys = ARMOR_LIST_ALL() @@ -111,10 +116,12 @@ GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) return new_armor /datum/armor/immune/generate_new_with_multipliers(list/multipliers) + RETURN_TYPE(/datum/armor) return src /// Generate a brand new armor datum with the values given, if a value is not present it carries over -/datum/armor/proc/generate_new_with_specific(list/values) +/datum/armor/proc/generate_new_with_specific(list/values) as /datum/armor + RETURN_TYPE(/datum/armor) var/datum/armor/new_armor = new var/all_keys = ARMOR_LIST_ALL() @@ -134,10 +141,11 @@ GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) return new_armor /datum/armor/immune/generate_new_with_specific(list/values) + RETURN_TYPE(/datum/armor) return src /// Gets the rating of armor for the specified rating -/datum/armor/proc/get_rating(rating) +/datum/armor/proc/get_rating(rating) as num // its not that I dont trust coders, its just that I don't trust coders if(!(rating in ARMOR_LIST_ALL())) CRASH("Attempted to get a rating '[rating]' that doesnt exist") @@ -157,27 +165,32 @@ GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) return ratings /datum/armor/immune/get_rating_list(inverse) + RETURN_TYPE(/list) var/ratings = ..() // get all ratings for(var/rating in ratings) ratings[rating] = 100 // and set them to 100 return ratings /// Returns a new armor datum with the given armor added onto this one -/datum/armor/proc/add_other_armor(datum/armor/other) +/datum/armor/proc/add_other_armor(datum/armor/other) as /datum/armor + RETURN_TYPE(/datum/armor) if(ispath(other)) other = get_armor_by_type(other) return generate_new_with_modifiers(other.get_rating_list()) /datum/armor/immune/add_other_armor(datum/armor/other) + RETURN_TYPE(/datum/armor) return src /// Returns a new armor datum with the given armor removed from this one -/datum/armor/proc/subtract_other_armor(datum/armor/other) +/datum/armor/proc/subtract_other_armor(datum/armor/other) as /datum/armor + RETURN_TYPE(/datum/armor) if(ispath(other)) other = get_armor_by_type(other) return generate_new_with_modifiers(other.get_rating_list(inverse = TRUE)) /datum/armor/immune/subtract_other_armor(datum/armor/other) + RETURN_TYPE(/datum/armor) return src /// Checks if any of the armor values are non-zero, so this technically also counts negative armor! diff --git a/code/datums/armor/_atom_armor.dm b/code/datums/armor/_atom_armor.dm index 804e0156b86d..1f0f16844d47 100644 --- a/code/datums/armor/_atom_armor.dm +++ b/code/datums/armor/_atom_armor.dm @@ -1,5 +1,5 @@ /// Get the atom's armor reference -/atom/proc/get_armor() +/atom/proc/get_armor() as /datum/armor RETURN_TYPE(/datum/armor) return (armor ||= get_armor_by_type(armor_type)) diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm index 697f5d0749d5..f283d2cd781d 100644 --- a/code/datums/brain_damage/imaginary_friend.dm +++ b/code/datums/brain_damage/imaginary_friend.dm @@ -52,7 +52,7 @@ check_jobban = ROLE_PAI, poll_time = 10 SECONDS, ignore_category = POLL_IGNORE_IMAGINARYFRIEND, - pic_source = owner, + alert_pic = owner, role_name_text = "imaginary friend" ) if(LAZYLEN(candidates)) diff --git a/code/datums/brain_damage/magic.dm b/code/datums/brain_damage/magic.dm index ac27ca655550..051ce4cbe588 100644 --- a/code/datums/brain_damage/magic.dm +++ b/code/datums/brain_damage/magic.dm @@ -124,3 +124,9 @@ desc = "It's coming closer..." image_icon = 'icons/mob/simple/lavaland/lavaland_monsters.dmi' image_state = "curseblob" + var/datum/brain_trauma/magic/stalker_multiple/host + +/obj/effect/client_image_holder/stalker_phantom/Destroy(force) + . = ..() + host.stalkers -= src + host = null diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index 882f5ead2140..46d51b126fec 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -11,6 +11,8 @@ var/initialized = FALSE //to prevent personalities deleting themselves while we wait for ghosts var/mob/living/split_personality/stranger_backseat //there's two so they can swap without overwriting var/mob/living/split_personality/owner_backseat + ///The role to display when polling ghost + var/poll_role = "split personality" /datum/brain_trauma/severe/split_personality/on_gain() var/mob/living/M = owner @@ -23,31 +25,35 @@ /datum/brain_trauma/severe/split_personality/proc/make_backseats() stranger_backseat = new(owner, src) - var/datum/action/cooldown/spell/personality_commune/stranger_spell = new(src) + var/datum/action/personality_commune/stranger_spell = new(src) stranger_spell.Grant(stranger_backseat) owner_backseat = new(owner, src) - var/datum/action/cooldown/spell/personality_commune/owner_spell = new(src) + var/datum/action/personality_commune/owner_spell = new(src) owner_spell.Grant(owner_backseat) - +/// Attempts to get a ghost to play the personality /datum/brain_trauma/severe/split_personality/proc/get_ghost() - set waitfor = FALSE - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates( - question = "Do you want to play as [owner.real_name]'s split personality?", + var/mob/chosen_one = SSpolling.poll_ghosts_for_target( + question = "Do you want to play as [span_danger("[owner.real_name]'s")] [span_notice(poll_role)]?", check_jobban = ROLE_PAI, - poll_time = 7.5 SECONDS, + poll_time = 20 SECONDS, + checked_target = owner, ignore_category = POLL_IGNORE_SPLITPERSONALITY, - pic_source = owner, - role_name_text = "split personality" + alert_pic = owner, + role_name_text = poll_role, ) - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) - stranger_backseat.key = C.key - stranger_backseat.log_message("became [key_name(owner)]'s split personality.", LOG_GAME) - message_admins("[ADMIN_LOOKUPFLW(stranger_backseat)] became [ADMIN_LOOKUPFLW(owner)]'s split personality.") - else + schism(chosen_one) + +/// Ghost poll has concluded +/datum/brain_trauma/severe/split_personality/proc/schism(mob/dead/observer/ghost) + if(isnull(ghost)) qdel(src) + return + + stranger_backseat.key = ghost.key + stranger_backseat.log_message("became [key_name(owner)]'s split personality.", LOG_GAME) + message_admins("[ADMIN_LOOKUPFLW(stranger_backseat)] became [ADMIN_LOOKUPFLW(owner)]'s split personality.") /datum/brain_trauma/severe/split_personality/on_life(seconds_per_tick, times_fired) if(owner.stat == DEAD) @@ -207,10 +213,9 @@ /datum/brain_trauma/severe/split_personality/brainwashing/get_ghost() set waitfor = FALSE - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob("Do you want to play as [owner.real_name]'s brainwashed mind?", poll_time = 7.5 SECONDS, target_mob = stranger_backseat, pic_source = owner, role_name_text = "brainwashed mind") - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) - stranger_backseat.key = C.key + var/mob/chosen_one = SSpolling.poll_ghosts_for_target("Do you want to play as [span_danger("[owner.real_name]'s")] brainwashed mind?", poll_time = 7.5 SECONDS, checked_target = stranger_backseat, alert_pic = owner, role_name_text = "brainwashed mind") + if(chosen_one) + stranger_backseat.key = chosen_one.key else qdel(src) diff --git a/code/datums/callback.dm b/code/datums/callback.dm index cf90582115dd..2b48a85be395 100644 --- a/code/datums/callback.dm +++ b/code/datums/callback.dm @@ -76,7 +76,7 @@ * * force set to true to force the deletion to be allowed. * * ... an optional list of extra arguments to pass to the proc */ -/datum/callback/Destroy(force=FALSE, ...) +/datum/callback/Destroy(force = FALSE) SHOULD_CALL_PARENT(FALSE) if (force) return ..() diff --git a/code/datums/candidate_poll.dm b/code/datums/candidate_poll.dm index 5181b4474853..d3ad109e34a1 100644 --- a/code/datums/candidate_poll.dm +++ b/code/datums/candidate_poll.dm @@ -28,6 +28,10 @@ POLL_RESPONSE_TOO_LATE_TO_UNREGISTER = "It's too late to unregister yourself, selection has already begun!", POLL_RESPONSE_UNREGISTERED = "You have been unregistered as a candidate for %ROLE%. You can sign up again before the poll ends.", ) + /// Chosen candidates. + var/list/chosen_candidates = list() + /// Whether to show trhe amount who've signed up or not. + var/show_candidate_amount = TRUE /datum/candidate_poll/New( polled_role, @@ -113,11 +117,12 @@ /datum/candidate_poll/proc/do_never_for_this_round(mob/candidate) LAZYADDASSOCLIST(GLOB.poll_ignore, ignoring_category, candidate.ckey) + GLOB.poll_ignore[ignoring_category] += candidate.ckey to_chat(candidate, span_danger("Choice registered: Never for this round.")) remove_candidate(candidate, silent = TRUE) /datum/candidate_poll/proc/undo_never_for_this_round(mob/candidate) - LAZYREMOVEASSOC(GLOB.poll_ignore, ignoring_category, candidate.ckey) + GLOB.poll_ignore[ignoring_category] -= candidate.ckey to_chat(candidate, span_notice("Choice registered: Eligible for this round")) /datum/candidate_poll/proc/trim_candidates() @@ -128,3 +133,13 @@ /datum/candidate_poll/proc/time_left() return duration - (world.time - time_started) + + +/// Print to chat which candidate was selected +/datum/candidate_poll/proc/announce_chosen(list/poll_recipients) + if(!length(chosen_candidates)) + return + for(var/mob/chosen in chosen_candidates) + var/client/chosen_client = chosen.client + for(var/mob/poll_recipient as anything in poll_recipients) + to_chat(poll_recipient, span_ooc("[isobserver(poll_recipient) ? FOLLOW_LINK(poll_recipient, chosen_client.mob) : null][span_warning(" [full_capitalize(role)] Poll: ")][key_name(chosen_client, include_name = FALSE)] was selected.")) diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm index ded80e707e66..ffea769213c6 100644 --- a/code/datums/chatmessage.dm +++ b/code/datums/chatmessage.dm @@ -68,15 +68,17 @@ . = ..() if (!istype(target)) CRASH("Invalid target given for chatmessage") - if(QDELETED(owner) || !istype(owner) || !owner.client) + if(!istype(owner)) stack_trace("/datum/chatmessage created with [isnull(owner) ? "null" : "invalid"] mob owner") qdel(src) + else if(QDELING(owner) || QDELETED(owner.client)) // honestly they prolly just disconnected at a funny time or something + qdel(src) return INVOKE_ASYNC(src, PROC_REF(generate_image), text, target, owner, language, extra_classes, lifespan) /datum/chatmessage/Destroy() remove_from_queue() - if (!QDELING(owned_by)) + if (!QDELETED(owned_by)) if(REALTIMEOFDAY < animate_start + animate_lifespan) stack_trace("Del'd before we finished fading, with [(animate_start + animate_lifespan) - REALTIMEOFDAY] time left") diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 13e938d34c06..407f7338c202 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -74,13 +74,12 @@ * * force - makes it not check for and remove the component from the parent * * silent - deletes the component without sending a [COMSIG_COMPONENT_REMOVING] signal */ -/datum/component/Destroy(force=FALSE, silent=FALSE) +/datum/component/Destroy(force = FALSE) if(!parent) return ..() if(!force) _RemoveFromParent() - if(!silent) - SEND_SIGNAL(parent, COMSIG_COMPONENT_REMOVING, src) + SEND_SIGNAL(parent, COMSIG_COMPONENT_REMOVING, src) parent = null return ..() @@ -237,12 +236,12 @@ */ /datum/component/proc/_GetInverseTypeList(our_type = type) //we can do this one simple trick + . = list(our_type) var/current_type = parent_type - . = list(our_type, current_type) //and since most components are root level + 1, this won't even have to run while (current_type != /datum/component) + . += current_type current_type = type2parent(current_type) - . += current_type // The type arg is casted so initial works, you shouldn't be passing a real instance into this /** @@ -478,15 +477,16 @@ var/list/dc = _datum_components if(!dc) return - var/comps = dc[/datum/component] - if(islist(comps)) - for(var/datum/component/I in comps) - if(I.can_transfer) - target.TakeComponent(I) - else - var/datum/component/C = comps - if(C.can_transfer) - target.TakeComponent(comps) + for(var/component_key in dc) + var/component_or_list = dc[component_key] + if(islist(component_or_list)) + for(var/datum/component/I in component_or_list) + if(I.can_transfer) + target.TakeComponent(I) + else + var/datum/component/C = component_or_list + if(C.can_transfer) + target.TakeComponent(C) /** * Return the object that is the host of any UI's that this component has diff --git a/code/datums/components/acid.dm b/code/datums/components/acid.dm index 881c46eeeca4..0c2605ae95f6 100644 --- a/code/datums/components/acid.dm +++ b/code/datums/components/acid.dm @@ -64,7 +64,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e sizzle = new(parent, TRUE) START_PROCESSING(SSacid, src) -/datum/component/acid/Destroy(force, silent) +/datum/component/acid/Destroy(force) STOP_PROCESSING(SSacid, src) if(sizzle) QDEL_NULL(sizzle) diff --git a/code/datums/components/action_item_overlay.dm b/code/datums/components/action_item_overlay.dm index e7e567cde367..80478aa9ca42 100644 --- a/code/datums/components/action_item_overlay.dm +++ b/code/datums/components/action_item_overlay.dm @@ -24,7 +24,7 @@ src.item_ref = WEAKREF(item) src.item_callback = item_callback -/datum/component/action_item_overlay/Destroy(force, silent) +/datum/component/action_item_overlay/Destroy(force) item_ref = null item_callback = null item_appearance = null diff --git a/code/datums/components/admin_popup.dm b/code/datums/components/admin_popup.dm index 1c821808a40d..63d1e5475db9 100644 --- a/code/datums/components/admin_popup.dm +++ b/code/datums/components/admin_popup.dm @@ -26,7 +26,7 @@ PROC_REF(delete_self), ) -/datum/component/admin_popup/Destroy(force, silent) +/datum/component/admin_popup/Destroy(force) var/client/parent_client = parent parent_client?.screen -= admin_popup diff --git a/code/datums/components/ai_has_target_timer.dm b/code/datums/components/ai_has_target_timer.dm index bcd748ce6382..5fdc07417f4d 100644 --- a/code/datums/components/ai_has_target_timer.dm +++ b/code/datums/components/ai_has_target_timer.dm @@ -33,7 +33,7 @@ REMOVE_TRAIT(parent, TRAIT_SUBTREE_REQUIRED_OPERATIONAL_DATUM, type) return ..() -/datum/component/ai_target_timer/Destroy(force, silent) +/datum/component/ai_target_timer/Destroy(force) finalise_losing_target() return ..() diff --git a/code/datums/components/ai_retaliate_advanced.dm b/code/datums/components/ai_retaliate_advanced.dm index ca477a0db27d..d734fa92b3cb 100644 --- a/code/datums/components/ai_retaliate_advanced.dm +++ b/code/datums/components/ai_retaliate_advanced.dm @@ -16,7 +16,7 @@ ADD_TRAIT(parent, TRAIT_SUBTREE_REQUIRED_OPERATIONAL_DATUM, type) -/datum/component/ai_retaliate_advanced/Destroy(force, silent) +/datum/component/ai_retaliate_advanced/Destroy(force) post_retaliate_callback = null return ..() diff --git a/code/datums/components/anti_magic.dm b/code/datums/components/anti_magic.dm index ecbfa019594b..23c37190e88b 100644 --- a/code/datums/components/anti_magic.dm +++ b/code/datums/components/anti_magic.dm @@ -57,7 +57,7 @@ src.drain_antimagic = drain_antimagic src.expiration = expiration -/datum/component/anti_magic/Destroy(force, silent) +/datum/component/anti_magic/Destroy(force) drain_antimagic = null expiration = null return ..() diff --git a/code/datums/components/aquarium_content.dm b/code/datums/components/aquarium_content.dm index 589b831aa725..3e7e704638f2 100644 --- a/code/datums/components/aquarium_content.dm +++ b/code/datums/components/aquarium_content.dm @@ -138,7 +138,7 @@ . = ..() REMOVE_TRAIT(parent, TRAIT_FISH_CASE_COMPATIBILE, REF(src)) -/datum/component/aquarium_content/Destroy(force, silent) +/datum/component/aquarium_content/Destroy(force) if(current_aquarium) remove_from_aquarium() QDEL_NULL(vc_obj) diff --git a/code/datums/components/area_sound_manager.dm b/code/datums/components/area_sound_manager.dm index bea20222699e..65faf7ab3d6d 100644 --- a/code/datums/components/area_sound_manager.dm +++ b/code/datums/components/area_sound_manager.dm @@ -29,7 +29,7 @@ else if(!isnull(remove_on)) RegisterSignal(parent, remove_on, PROC_REF(handle_removal)) -/datum/component/area_sound_manager/Destroy(force, silent) +/datum/component/area_sound_manager/Destroy(force) QDEL_NULL(our_loop) . = ..() diff --git a/code/datums/components/areabound.dm b/code/datums/components/areabound.dm index f952d5db2e18..872fab2d8e7c 100644 --- a/code/datums/components/areabound.dm +++ b/code/datums/components/areabound.dm @@ -26,6 +26,6 @@ AM.forceMove(reset_turf) moving = FALSE -/datum/component/areabound/Destroy(force, silent) +/datum/component/areabound/Destroy(force) QDEL_NULL(move_tracker) . = ..() diff --git a/code/datums/components/aura_healing.dm b/code/datums/components/aura_healing.dm index 6a431d4ded24..47490807b59c 100644 --- a/code/datums/components/aura_healing.dm +++ b/code/datums/components/aura_healing.dm @@ -83,7 +83,7 @@ src.limit_to_trait = limit_to_trait src.healing_color = healing_color -/datum/component/aura_healing/Destroy(force, silent) +/datum/component/aura_healing/Destroy(force) STOP_PROCESSING(SSaura_healing, src) var/alert_category = "aura_healing_[REF(src)]" diff --git a/code/datums/components/basic_mob_attack_telegraph.dm b/code/datums/components/basic_mob_attack_telegraph.dm index 5473dbd0fa00..2ccf2f5022b5 100644 --- a/code/datums/components/basic_mob_attack_telegraph.dm +++ b/code/datums/components/basic_mob_attack_telegraph.dm @@ -25,7 +25,7 @@ src.telegraph_duration = telegraph_duration src.on_began_forecast = on_began_forecast -/datum/component/basic_mob_attack_telegraph/Destroy(force, silent) +/datum/component/basic_mob_attack_telegraph/Destroy(force) if(current_target) forget_target(current_target) target_overlay = null diff --git a/code/datums/components/basic_ranged_ready_overlay.dm b/code/datums/components/basic_ranged_ready_overlay.dm index 434a64dd6ffd..4bcbd580ca79 100644 --- a/code/datums/components/basic_ranged_ready_overlay.dm +++ b/code/datums/components/basic_ranged_ready_overlay.dm @@ -29,7 +29,7 @@ UnregisterSignal(parent, list(COMSIG_BASICMOB_POST_ATTACK_RANGED, COMSIG_LIVING_REVIVE)) return ..() -/datum/component/basic_ranged_ready_overlay/Destroy(force, silent) +/datum/component/basic_ranged_ready_overlay/Destroy(force) deltimer(waiting_timer) return ..() diff --git a/code/datums/components/bloody_spreader.dm b/code/datums/components/bloody_spreader.dm new file mode 100644 index 000000000000..2a90a1e27c80 --- /dev/null +++ b/code/datums/components/bloody_spreader.dm @@ -0,0 +1,46 @@ +/datum/component/bloody_spreader + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + // How many bloodening instances are left. Deleted on zero. + var/blood_left + // We will spread this blood DNA to targets! + var/list/blood_dna + // Blood splashed around everywhere will carry these diseases. Oh no... + var/list/diseases + +/datum/component/bloody_spreader/Initialize(blood_left, list/blood_dna, list/diseases) + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + var/list/signals_to_add = list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_ATOM_ATTACKBY) + if(ismovable(parent)) + signals_to_add += list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT) + if(isitem(parent)) + //monkestation temp edit: replaced COMSIG_ITEM_ATTACK_ATOM with COMSIG_ITEM_ATTACK_OBJ + signals_to_add += list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT, COMSIG_ITEM_ATTACK_SELF, COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED) + var/atom/atom_parent = parent + if(atom_parent.atom_storage) + signals_to_add += list(COMSIG_STORAGE_STORED_ITEM) + else if(isstructure(parent)) + signals_to_add += list(COMSIG_ATOM_ATTACK_HAND) + + RegisterSignals(parent, signals_to_add, PROC_REF(spread_yucky_blood)) + + if(isclothing(parent)) + parent.AddComponent(/datum/component/bloodysoles) + + src.blood_left = blood_left + src.blood_dna = blood_dna + src.diseases = diseases + +/datum/component/bloody_spreader/proc/spread_yucky_blood(atom/parent, atom/bloody_fool) + SIGNAL_HANDLER + bloody_fool.add_blood_DNA(blood_dna, diseases) + +/datum/component/bloody_spreader/InheritComponent(/datum/component/new_comp, i_am_original, blood_left = 0) + + if(!i_am_original) + return + + if(src.blood_left >= INFINITY) + return + + src.blood_left += blood_left diff --git a/code/datums/components/bloodysoles.dm b/code/datums/components/bloodysoles.dm index f125544f14d5..0d950031f229 100644 --- a/code/datums/components/bloodysoles.dm +++ b/code/datums/components/bloodysoles.dm @@ -84,9 +84,6 @@ * Run to equally share the blood between us and a decal */ /datum/component/bloodysoles/proc/share_blood(obj/effect/decal/cleanable/pool) - if(HAS_TRAIT(parent_atom, TRAIT_LIGHT_STEP)) //the character is agile enough to don't mess their clothing and hands just from one blood splatter at floor - return TRUE - // Share the blood between our boots and the blood pool var/total_bloodiness = pool.bloodiness + bloody_shoes[pool.blood_state] @@ -96,6 +93,9 @@ set_bloody_shoes(pool.blood_state, new_our_bloodiness) pool.bloodiness = total_bloodiness - new_our_bloodiness // Give the pool the remaining blood incase we were limited + if(HAS_TRAIT(wielder, TRAIT_LIGHT_STEP)) //the character is agile enough to don't mess their clothing and hands just from one blood splatter at floor + return TRUE + parent_atom.add_blood_DNA(GET_ATOM_BLOOD_DNA(pool)) update_icon() diff --git a/code/datums/components/bullet_intercepting.dm b/code/datums/components/bullet_intercepting.dm index d8de06806656..c176de54b94c 100644 --- a/code/datums/components/bullet_intercepting.dm +++ b/code/datums/components/bullet_intercepting.dm @@ -25,7 +25,7 @@ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_parent_equipped)) RegisterSignal(parent, COMSIG_ITEM_PRE_UNEQUIP, PROC_REF(on_unequipped)) -/datum/component/bullet_intercepting/Destroy(force, silent) +/datum/component/bullet_intercepting/Destroy(force) wearer = null on_intercepted = null return ..() diff --git a/code/datums/components/burning.dm b/code/datums/components/burning.dm index 347340e3e2c4..20d91688c380 100644 --- a/code/datums/components/burning.dm +++ b/code/datums/components/burning.dm @@ -28,7 +28,7 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e particle_effect = new(atom_parent, fire_particles, isitem(atom_parent) ? NONE : PARTICLE_ATTACH_MOB) START_PROCESSING(SSburning, src) -/datum/component/burning/Destroy(force, silent) +/datum/component/burning/Destroy(force) STOP_PROCESSING(SSburning, src) if(particle_effect) QDEL_NULL(particle_effect) diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index d8df3027179d..55e14ac851d3 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -34,7 +34,7 @@ if(isitem(parent)) RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(onItemAttack)) -/datum/component/butchering/Destroy(force, silent) +/datum/component/butchering/Destroy(force) butcher_callback = null return ..() diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index 52c897ede1b6..7520175f37ad 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -160,6 +160,10 @@ // send to oblivion dropped_thing.visible_message(span_boldwarning("[dropped_thing] falls into [parent]!"), span_userdanger("[oblivion_message]")) + if(iscyborg(dropped_thing)) // If they are a robot with out this then they glitch out and get stuck in a Chasm Purgatory. Patch job to fix it, probably can be implemented better, but this'll work for now - Amy + dropped_thing.visible_message(span_userdanger("Your internal anti-suffering measures kick in, intiating an internal shutdown.")) + var/mob/living/silicon/robot/S = dropped_thing + QDEL_NULL(S.mmi) if (isliving(dropped_thing)) var/mob/living/falling_mob = dropped_thing ADD_TRAIT(falling_mob, TRAIT_NO_TRANSFORM, REF(src)) diff --git a/code/datums/components/chuunibyou.dm b/code/datums/components/chuunibyou.dm index 00396a289b83..54e65a1400cc 100644 --- a/code/datums/components/chuunibyou.dm +++ b/code/datums/components/chuunibyou.dm @@ -47,6 +47,7 @@ RegisterSignal(parent, COMSIG_MOB_PRE_INVOCATION, PROC_REF(on_pre_invocation)) RegisterSignal(parent, COMSIG_LIVING_TRY_SPEECH, PROC_REF(on_try_speech)) RegisterSignal(parent, COMSIG_MOB_AFTER_SPELL_CAST, PROC_REF(on_after_spell_cast)) + ADD_TRAIT(parent, TRAIT_CHUUNIBYOU, REF(src)) /datum/component/chuunibyou/UnregisterFromParent() . = ..() @@ -56,6 +57,7 @@ COMSIG_LIVING_TRY_SPEECH, COMSIG_MOB_AFTER_SPELL_CAST, )) + REMOVE_TRAIT(parent, TRAIT_CHUUNIBYOU, REF(src)) /// signal sent when the parent tries to speak. we let speech pass if we are casting a spell so mimes still chuuni their spellcasts /// (this may end in the mime dying) diff --git a/code/datums/components/cleaner.dm b/code/datums/components/cleaner.dm index 63885eb73119..874af94cc50e 100644 --- a/code/datums/components/cleaner.dm +++ b/code/datums/components/cleaner.dm @@ -29,7 +29,7 @@ src.pre_clean_callback = pre_clean_callback src.on_cleaned_callback = on_cleaned_callback -/datum/component/cleaner/Destroy(force, silent) +/datum/component/cleaner/Destroy(force) pre_clean_callback = null on_cleaned_callback = null return ..() diff --git a/code/datums/components/combo_attacks.dm b/code/datums/components/combo_attacks.dm index 33989e26682c..a8dbe423780e 100644 --- a/code/datums/components/combo_attacks.dm +++ b/code/datums/components/combo_attacks.dm @@ -32,7 +32,7 @@ src.leniency_time = leniency_time src.can_attack_callback = can_attack_callback -/datum/component/combo_attacks/Destroy(force, silent) +/datum/component/combo_attacks/Destroy(force) can_attack_callback = null return ..() diff --git a/code/datums/components/cracked.dm b/code/datums/components/cracked.dm index 60264090b312..4d67a9190ea1 100644 --- a/code/datums/components/cracked.dm +++ b/code/datums/components/cracked.dm @@ -12,7 +12,7 @@ src.crack_appearances = crack_appearances src.crack_integrity = crack_integrity -/datum/component/cracked/Destroy(force, silent) +/datum/component/cracked/Destroy(force) RemoveCracks(parent, length(applied_cracks)) return ..() diff --git a/code/datums/components/crafting/_recipes.dm b/code/datums/components/crafting/_recipes.dm index 56f8ed239705..77e0ed72c3cf 100644 --- a/code/datums/components/crafting/_recipes.dm +++ b/code/datums/components/crafting/_recipes.dm @@ -43,6 +43,10 @@ var/delete_contents = TRUE /datum/crafting_recipe/New() + if(!name && result) + var/atom/atom_result = result + name = initial(atom_result.name) + if(!(result in reqs)) blacklist += result if(tool_behaviors) diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index c7f773d82701..55c5cb598cc7 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -10,7 +10,7 @@ C.icon = H.ui_style H.static_inventory += C CL.screen += C - RegisterSignal(C, COMSIG_CLICK, PROC_REF(component_ui_interact)) + RegisterSignal(C, COMSIG_SCREEN_ELEMENT_CLICK, PROC_REF(component_ui_interact)) #define COOKING TRUE #define CRAFTING FALSE @@ -461,9 +461,9 @@ if(!istext(result)) //We made an item and didn't get a fail message if(ismob(user) && isitem(result)) //In case the user is actually possessing a non mob like a machine user.put_in_hands(result) - else + else if(!istype(result, /obj/effect/spawner)) result.forceMove(user.drop_location()) - to_chat(user, span_notice("[crafting_recipe.name] constructed.")) + to_chat(user, span_notice("Constructed [crafting_recipe.name].")) user.investigate_log("crafted [crafting_recipe]", INVESTIGATE_CRAFTING) crafting_recipe.on_craft_completion(user, result) else @@ -503,7 +503,7 @@ data["category"] = recipe.category // Name, Description - data["name"] = recipe.name || initial(atom.name) + data["name"] = recipe.name if(ispath(recipe.result, /datum/reagent)) var/datum/reagent/reagent = recipe.result diff --git a/code/datums/components/crafting/tailoring.dm b/code/datums/components/crafting/tailoring.dm index 7adc8e99dfa6..77b056e82354 100644 --- a/code/datums/components/crafting/tailoring.dm +++ b/code/datums/components/crafting/tailoring.dm @@ -268,7 +268,7 @@ time = 1 SECONDS tool_paths = list( /obj/item/clothing/suit/hooded/chaplain_hoodie, - /obj/item/storage/book/bible, + /obj/item/book/bible, ) reqs = list(/obj/item/stack/sheet/cloth = 4) category = CAT_CLOTHING diff --git a/code/datums/components/crate_carrier.dm b/code/datums/components/crate_carrier.dm index 20ee889cb0f5..f01205f2bec9 100644 --- a/code/datums/components/crate_carrier.dm +++ b/code/datums/components/crate_carrier.dm @@ -23,7 +23,7 @@ var/static/default_cache = typecacheof(list(/obj/structure/closet/crate)) src.carriable_cache = default_cache -/datum/component/crate_carrier/Destroy(force, silent) +/datum/component/crate_carrier/Destroy(force) LAZYCLEARLIST(crates_in_hand) return ..() diff --git a/code/datums/components/creamed.dm b/code/datums/components/creamed.dm index 1201890b61ac..1070125042af 100644 --- a/code/datums/components/creamed.dm +++ b/code/datums/components/creamed.dm @@ -40,7 +40,7 @@ GLOBAL_LIST_INIT(creamable, typecacheof(list( var/atom/A = parent A.add_overlay(creamface) -/datum/component/creamed/Destroy(force, silent) +/datum/component/creamed/Destroy(force) var/atom/A = parent A.cut_overlay(creamface) qdel(creamface) diff --git a/code/datums/components/cult_ritual_item.dm b/code/datums/components/cult_ritual_item.dm index 24b9f058f4a0..584d9c0f5267 100644 --- a/code/datums/components/cult_ritual_item.dm +++ b/code/datums/components/cult_ritual_item.dm @@ -39,7 +39,7 @@ var/datum/action/added_action = item_parent.add_item_action(action) linked_action_ref = WEAKREF(added_action) -/datum/component/cult_ritual_item/Destroy(force, silent) +/datum/component/cult_ritual_item/Destroy(force) cleanup_shields() QDEL_NULL(linked_action_ref) return ..() diff --git a/code/datums/components/customizable_reagent_holder.dm b/code/datums/components/customizable_reagent_holder.dm index 4d7d54787f38..fd9c13e4d83b 100644 --- a/code/datums/components/customizable_reagent_holder.dm +++ b/code/datums/components/customizable_reagent_holder.dm @@ -62,7 +62,7 @@ handle_fill(ingredient) -/datum/component/customizable_reagent_holder/Destroy(force, silent) +/datum/component/customizable_reagent_holder/Destroy(force) QDEL_NULL(top_overlay) return ..() diff --git a/code/datums/components/damage_aura.dm b/code/datums/components/damage_aura.dm index 5f5de70c0e55..0053cf2c8656 100644 --- a/code/datums/components/damage_aura.dm +++ b/code/datums/components/damage_aura.dm @@ -79,7 +79,7 @@ src.immune_factions = immune_factions src.current_owner = WEAKREF(current_owner) -/datum/component/damage_aura/Destroy(force, silent) +/datum/component/damage_aura/Destroy(force) STOP_PROCESSING(SSobj, src) return ..() diff --git a/code/datums/components/damage_chain.dm b/code/datums/components/damage_chain.dm index be61ec68a33c..9b24a4c2baee 100644 --- a/code/datums/components/damage_chain.dm +++ b/code/datums/components/damage_chain.dm @@ -61,7 +61,7 @@ /datum/component/damage_chain/UnregisterFromParent() UnregisterSignal(parent, COMSIG_LIVING_DEATH) -/datum/component/damage_chain/Destroy(force, silent) +/datum/component/damage_chain/Destroy(force) if (!QDELETED(chain)) UnregisterSignal(chain, COMSIG_QDELETING) QDEL_NULL(chain) diff --git a/code/datums/components/deadchat_control.dm b/code/datums/components/deadchat_control.dm index f1395a6eec2a..4f863618cfb1 100644 --- a/code/datums/components/deadchat_control.dm +++ b/code/datums/components/deadchat_control.dm @@ -49,7 +49,7 @@ SSpoints_of_interest.make_point_of_interest(parent) generated_point_of_interest = TRUE -/datum/component/deadchat_control/Destroy(force, silent) +/datum/component/deadchat_control/Destroy(force) on_removal?.Invoke() inputs = null orbiters = null diff --git a/code/datums/components/direct_explosive_trap.dm b/code/datums/components/direct_explosive_trap.dm index 0d204f21a1ee..e3a125eb928e 100644 --- a/code/datums/components/direct_explosive_trap.dm +++ b/code/datums/components/direct_explosive_trap.dm @@ -46,7 +46,7 @@ if (!isnull(saboteur)) UnregisterSignal(saboteur, COMSIG_QDELETING) -/datum/component/direct_explosive_trap/Destroy(force, silent) +/datum/component/direct_explosive_trap/Destroy(force) if (isnull(saboteur)) return ..() UnregisterSignal(saboteur, COMSIG_QDELETING) diff --git a/code/datums/components/echolocation.dm b/code/datums/components/echolocation.dm index 9d32744359d4..3909e82fd568 100644 --- a/code/datums/components/echolocation.dm +++ b/code/datums/components/echolocation.dm @@ -65,7 +65,7 @@ echolocator.overlay_fullscreen("echo", /atom/movable/screen/fullscreen/echo, echo_icon) START_PROCESSING(SSfastprocess, src) -/datum/component/echolocation/Destroy(force, silent) +/datum/component/echolocation/Destroy(force) STOP_PROCESSING(SSfastprocess, src) var/mob/living/echolocator = parent QDEL_NULL(client_color) diff --git a/code/datums/components/effect_remover.dm b/code/datums/components/effect_remover.dm index 7f1f437eddfc..a02be73f5684 100644 --- a/code/datums/components/effect_remover.dm +++ b/code/datums/components/effect_remover.dm @@ -41,7 +41,7 @@ src.effects_we_clear = typecacheof(effects_we_clear) src.time_to_remove = time_to_remove -/datum/component/effect_remover/Destroy(force, silent) +/datum/component/effect_remover/Destroy(force) on_clear_callback = null return ..() diff --git a/code/datums/components/egg_layer.dm b/code/datums/components/egg_layer.dm index a1e137de6d32..3092829fd131 100644 --- a/code/datums/components/egg_layer.dm +++ b/code/datums/components/egg_layer.dm @@ -47,7 +47,7 @@ . = ..() UnregisterSignal(parent, COMSIG_ATOM_ATTACKBY) -/datum/component/egg_layer/Destroy(force, silent) +/datum/component/egg_layer/Destroy(force) . = ..() STOP_PROCESSING(SSobj, src) egg_laid_callback = null diff --git a/code/datums/components/engraved.dm b/code/datums/components/engraved.dm index 016e3082a8d9..60bfa5f61772 100644 --- a/code/datums/components/engraved.dm +++ b/code/datums/components/engraved.dm @@ -52,7 +52,7 @@ RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(on_update_overlays)) engraved_wall.update_appearance() -/datum/component/engraved/Destroy(force, silent) +/datum/component/engraved/Destroy(force) if(!parent) return ..() parent.RemoveElement(/datum/element/art) diff --git a/code/datums/components/evolutionary_leap.dm b/code/datums/components/evolutionary_leap.dm index 5ff7f31beaa8..3a47dbbdcf06 100644 --- a/code/datums/components/evolutionary_leap.dm +++ b/code/datums/components/evolutionary_leap.dm @@ -30,7 +30,7 @@ setup_timer() -/datum/component/evolutionary_leap/Destroy(force, silent) +/datum/component/evolutionary_leap/Destroy(force) . = ..() deltimer(timer_id) diff --git a/code/datums/components/focused_attacker.dm b/code/datums/components/focused_attacker.dm index eda6bd179791..a74fb98b5637 100644 --- a/code/datums/components/focused_attacker.dm +++ b/code/datums/components/focused_attacker.dm @@ -17,7 +17,7 @@ src.maximum_gain = maximum_gain src.gain_per_attack = gain_per_attack -/datum/component/focused_attacker/Destroy(force, silent) +/datum/component/focused_attacker/Destroy(force) if (!isnull(last_target)) UnregisterSignal(last_target, COMSIG_QDELETING) return ..() diff --git a/code/datums/components/food/decomposition.dm b/code/datums/components/food/decomposition.dm index ee5c8e22f1bc..69338f811b05 100644 --- a/code/datums/components/food/decomposition.dm +++ b/code/datums/components/food/decomposition.dm @@ -22,11 +22,18 @@ var/decomp_result /// Does our food attract ants? var/produce_ants = FALSE + /// Typecache of turfs that support decomposition + var/static/list/decomp_turf_typecache // monkestation edit: attempt at micro-optimizing /datum/component/decomposition/Initialize(mapload, decomp_req_handle, decomp_flags = NONE, decomp_result, ant_attracting = FALSE, custom_time = 0) if(!isobj(parent)) return COMPONENT_INCOMPATIBLE + // monkestation start: attempt at micro-optimizing + if(!decomp_turf_typecache) + decomp_turf_typecache = typecacheof(/turf/open) - (typecacheof(/turf/open/lava) + typecacheof(/turf/open/misc/asteroid)) + // monkestation end + src.decomp_flags = decomp_flags src.decomp_result = decomp_result if(mapload || decomp_req_handle) @@ -36,11 +43,13 @@ RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(handle_movement)) RegisterSignals(parent, list( COMSIG_ITEM_PICKUP, //person picks up an item - COMSIG_ATOM_ENTERED), //Object enters a storage object (boxes, etc.) + COMSIG_ATOM_ENTERED, //Object enters a storage object (boxes, etc.) + COMSIG_ITEM_GARY_STASHED), // monkestation edit: gary PROC_REF(picked_up)) RegisterSignals(parent, list( COMSIG_ITEM_DROPPED, //Object is dropped anywhere - COMSIG_ATOM_EXITED), //Object exits a storage object (boxes, etc) + COMSIG_ATOM_EXITED, //Object exits a storage object (boxes, etc) + COMSIG_ITEM_GARY_LOOTED), // monkestation edit: gary PROC_REF(dropped)) RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(examine)) @@ -63,7 +72,9 @@ COMSIG_MOVABLE_MOVED, COMSIG_ITEM_DROPPED, COMSIG_ATOM_EXITED, - COMSIG_ATOM_EXAMINE)) + COMSIG_ATOM_EXAMINE, + COMSIG_ITEM_GARY_LOOTED, // monkestation edit: gary + )) /datum/component/decomposition/proc/handle_movement() SIGNAL_HANDLER @@ -73,14 +84,20 @@ var/turf/open/open_turf = food.loc - if(!istype(open_turf) || islava(open_turf) || isasteroidturf(open_turf)) //Are we actually in a valid open turf? + // monkestation start: heavily optimize this stupid proc + if(!is_type_in_typecache(open_turf, decomp_turf_typecache)) //Are we actually in a valid open turf? remove_timer() return - for(var/atom/movable/content as anything in open_turf.contents) + if(HAS_TRAIT(open_turf, TRAIT_ELEVATED_TURF) || HAS_TRAIT(open_turf, TRAIT_TURF_HAS_ELEVATED_STRUCTURE)) + remove_timer() + return + /* for(var/atom/movable/content as anything in open_turf.contents) if(GLOB.typecache_elevated_structures[content.type]) remove_timer() return + CHECK_TICK */ + // monkestation end // If all other checks fail, then begin decomposition. timerid = addtimer(CALLBACK(src, PROC_REF(decompose)), time_remaining, TIMER_STOPPABLE | TIMER_UNIQUE) diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm index c4c4ecf154ac..33de3942ec3a 100644 --- a/code/datums/components/food/edible.dm +++ b/code/datums/components/food/edible.dm @@ -203,7 +203,7 @@ Behavior that's still missing from this component that original food items had t // add newly passed in reagents setup_initial_reagents(initial_reagents) -/datum/component/edible/Destroy(force, silent) +/datum/component/edible/Destroy(force) after_eat = null on_consume = null check_liked = null diff --git a/code/datums/components/food_storage.dm b/code/datums/components/food_storage.dm index 19bb8cfbbcdc..b81be1cccab0 100644 --- a/code/datums/components/food_storage.dm +++ b/code/datums/components/food_storage.dm @@ -29,7 +29,7 @@ bad_chance_of_discovery = _bad_chance good_chance_of_discovery = _good_chance -/datum/component/food_storage/Destroy(force, silent) +/datum/component/food_storage/Destroy(force) if(stored_item) stored_item.forceMove(stored_item.drop_location()) stored_item.dropped() diff --git a/code/datums/components/fullauto.dm b/code/datums/components/fullauto.dm index 044619d594aa..e52ac35e186b 100644 --- a/code/datums/components/fullauto.dm +++ b/code/datums/components/fullauto.dm @@ -279,8 +279,9 @@ return FALSE var/obj/item/bodypart/other_hand = shooter.has_hand_for_held_index(shooter.get_inactive_hand_index()) if(weapon_weight == WEAPON_HEAVY && (shooter.get_inactive_held_item() || !other_hand)) - balloon_alert(shooter, "use both hands!") - return FALSE + if(!istype(shooter.get_inactive_held_item(), /obj/item/offhand)) + balloon_alert(shooter, "use both hands!") + return FALSE return TRUE diff --git a/code/datums/components/gas_leaker.dm b/code/datums/components/gas_leaker.dm index d386b73ff004..eeceb73f5fa2 100644 --- a/code/datums/components/gas_leaker.dm +++ b/code/datums/components/gas_leaker.dm @@ -30,7 +30,7 @@ src.integrity_leak_percent = integrity_leak_percent src.leak_rate = leak_rate -/datum/component/gas_leaker/Destroy(force, silent) +/datum/component/gas_leaker/Destroy(force) SSair.stop_processing_machine(src) return ..() diff --git a/code/datums/components/geiger_sound.dm b/code/datums/components/geiger_sound.dm index 76ac0c625079..fcd12658484a 100644 --- a/code/datums/components/geiger_sound.dm +++ b/code/datums/components/geiger_sound.dm @@ -8,7 +8,7 @@ if (!isatom(parent)) return COMPONENT_INCOMPATIBLE -/datum/component/geiger_sound/Destroy(force, silent) +/datum/component/geiger_sound/Destroy(force) QDEL_NULL(sound) if (!isnull(last_parent)) diff --git a/code/datums/components/ghost_direct_control.dm b/code/datums/components/ghost_direct_control.dm index 5763b5db7e95..fb3a2c06e836 100644 --- a/code/datums/components/ghost_direct_control.dm +++ b/code/datums/components/ghost_direct_control.dm @@ -16,8 +16,11 @@ /datum/component/ghost_direct_control/Initialize( ban_type = ROLE_SENTIENCE, role_name = null, + poll_question = null, poll_candidates = TRUE, + poll_announce_chosen = TRUE, poll_length = 10 SECONDS, + poll_chat_border_icon = null, poll_ignore_key = POLL_IGNORE_SENTIENCE_POTION, assumed_control_message = null, datum/callback/extra_control_checks, @@ -30,24 +33,25 @@ src.ban_type = ban_type src.assumed_control_message = assumed_control_message || "You are [parent]!" src.extra_control_checks = extra_control_checks - src.after_assumed_control= after_assumed_control + src.after_assumed_control = after_assumed_control var/mob/mob_parent = parent LAZYADD(GLOB.joinable_mobs[format_text("[initial(mob_parent.name)]")], mob_parent) if (poll_candidates) - INVOKE_ASYNC(src, PROC_REF(request_ghost_control), role_name || "[parent]", poll_length, poll_ignore_key) + INVOKE_ASYNC(src, PROC_REF(request_ghost_control), poll_question, role_name || "[parent]", poll_length, poll_ignore_key, poll_announce_chosen, poll_chat_border_icon) /datum/component/ghost_direct_control/RegisterWithParent() . = ..() RegisterSignal(parent, COMSIG_ATOM_ATTACK_GHOST, PROC_REF(on_ghost_clicked)) RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examined)) + RegisterSignal(parent, COMSIG_MOB_LOGIN, PROC_REF(on_login)) /datum/component/ghost_direct_control/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_ATOM_ATTACK_GHOST, COMSIG_ATOM_EXAMINE)) + UnregisterSignal(parent, list(COMSIG_ATOM_ATTACK_GHOST, COMSIG_ATOM_EXAMINE, COMSIG_MOB_LOGIN)) return ..() -/datum/component/ghost_direct_control/Destroy(force, silent) +/datum/component/ghost_direct_control/Destroy(force) extra_control_checks = null after_assumed_control = null @@ -69,23 +73,26 @@ examine_text += span_boldnotice("You could take control of this mob by clicking on it.") /// Send out a request for a brain -/datum/component/ghost_direct_control/proc/request_ghost_control(role_name, poll_length, poll_ignore_key) - if (!(GLOB.ghost_role_flags & GHOSTROLE_SPAWNER)) +/datum/component/ghost_direct_control/proc/request_ghost_control(poll_question, role_name, poll_length, poll_ignore_key, poll_announce_chosen, poll_chat_border_icon) + if(!(GLOB.ghost_role_flags & GHOSTROLE_SPAWNER)) return awaiting_ghosts = TRUE - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates( - question = "Do you want to play as [role_name]?", + var/mob/chosen_one = SSpolling.poll_ghosts_for_target( + question = poll_question, check_jobban = ban_type, role = ban_type, poll_time = poll_length, + checked_target = parent, ignore_category = poll_ignore_key, - pic_source = parent, + alert_pic = parent, role_name_text = role_name, + chat_text_border_icon = poll_chat_border_icon, + announce_chosen = poll_announce_chosen, ) awaiting_ghosts = FALSE - if (!LAZYLEN(candidates)) + if(isnull(chosen_one)) return - assume_direct_control(pick(candidates)) + assume_direct_control(chosen_one) /// A ghost clicked on us, they want to get in this body /datum/component/ghost_direct_control/proc/on_ghost_clicked(mob/our_mob, mob/dead/observer/hopeful_ghost) @@ -135,8 +142,20 @@ return if (extra_control_checks && !extra_control_checks.Invoke(harbinger)) return + harbinger.log_message("took control of [new_body].", LOG_GAME) + // doesn't transfer mind because that transfers antag datum as well new_body.key = harbinger.key - to_chat(new_body, span_boldnotice(assumed_control_message)) + + // Already qdels due to below proc but just in case + qdel(src) + +/// When someone assumes control, get rid of our component +/datum/component/ghost_direct_control/proc/on_login(mob/harbinger) + SIGNAL_HANDLER + // This proc is called the very moment .key is set, so we need to force mind to initialize here if we want the invoke to affect the mind of the mob + if(isnull(harbinger.mind)) + harbinger.mind_initialize() + to_chat(harbinger, span_boldnotice(assumed_control_message)) after_assumed_control?.Invoke(harbinger) qdel(src) diff --git a/code/datums/components/ground_sinking.dm b/code/datums/components/ground_sinking.dm index 0fb5fb9eac62..ee638cbce76a 100644 --- a/code/datums/components/ground_sinking.dm +++ b/code/datums/components/ground_sinking.dm @@ -59,7 +59,7 @@ deltimer(ground_sinking_start_timer) UnregisterSignal(parent, COMSIG_MOVABLE_MOVED) -/datum/component/ground_sinking/Destroy(force, silent) +/datum/component/ground_sinking/Destroy(force) if(sinked || is_sinking) unsink() . = ..() diff --git a/code/datums/components/growth_and_differentiation.dm b/code/datums/components/growth_and_differentiation.dm index 2d328bebeb4f..80dfe8969778 100644 --- a/code/datums/components/growth_and_differentiation.dm +++ b/code/datums/components/growth_and_differentiation.dm @@ -65,7 +65,7 @@ return setup_growth_tracking() -/datum/component/growth_and_differentiation/Destroy(force, silent) +/datum/component/growth_and_differentiation/Destroy(force) STOP_PROCESSING(SSdcs, src) deltimer(timer_id) optional_checks = null diff --git a/code/datums/components/gunpoint.dm b/code/datums/components/gunpoint.dm index 90ba318bb582..8ff5382e9830 100644 --- a/code/datums/components/gunpoint.dm +++ b/code/datums/components/gunpoint.dm @@ -53,7 +53,7 @@ addtimer(CALLBACK(src, PROC_REF(update_stage), 2), GUNPOINT_DELAY_STAGE_2) -/datum/component/gunpoint/Destroy(force, silent) +/datum/component/gunpoint/Destroy(force) var/mob/living/shooter = parent shooter.remove_status_effect(/datum/status_effect/holdup) target.remove_status_effect(/datum/status_effect/grouped/heldup, REF(shooter)) diff --git a/code/datums/components/hazard_area.dm b/code/datums/components/hazard_area.dm index 82559de51633..a9243960878b 100644 --- a/code/datums/components/hazard_area.dm +++ b/code/datums/components/hazard_area.dm @@ -39,7 +39,7 @@ UnregisterSignal(SSdcs, COMSIG_AREA_CREATED) parent_mob.lose_area_sensitivity(type) -/datum/component/hazard_area/Destroy(force, silent) +/datum/component/hazard_area/Destroy(force) . = ..() area_created = null diff --git a/code/datums/components/healing_touch.dm b/code/datums/components/healing_touch.dm index 00e36e45a71a..23989bbdd9fd 100644 --- a/code/datums/components/healing_touch.dm +++ b/code/datums/components/healing_touch.dm @@ -103,7 +103,7 @@ UnregisterSignal(parent, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET)) return ..() -/datum/component/healing_touch/Destroy(force, silent) +/datum/component/healing_touch/Destroy(force) extra_checks = null return ..() diff --git a/code/datums/components/health_scaling_effects.dm b/code/datums/components/health_scaling_effects.dm index 140a60ea9624..e3754ae2061b 100644 --- a/code/datums/components/health_scaling_effects.dm +++ b/code/datums/components/health_scaling_effects.dm @@ -53,7 +53,7 @@ UnregisterSignal(parent, COMSIG_LIVING_HEALTH_UPDATE) return ..() -/datum/component/health_scaling_effects/Destroy(force, silent) +/datum/component/health_scaling_effects/Destroy(force) additional_status_callback = null return ..() diff --git a/code/datums/components/heirloom.dm b/code/datums/components/heirloom.dm index 064c33ff7d73..fe3aa73bcd35 100644 --- a/code/datums/components/heirloom.dm +++ b/code/datums/components/heirloom.dm @@ -14,7 +14,7 @@ RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) -/datum/component/heirloom/Destroy(force, silent) +/datum/component/heirloom/Destroy(force) owner = null return ..() diff --git a/code/datums/components/interaction_booby_trap.dm b/code/datums/components/interaction_booby_trap.dm index 6f57e4f6b75c..454b0a7bba22 100644 --- a/code/datums/components/interaction_booby_trap.dm +++ b/code/datums/components/interaction_booby_trap.dm @@ -56,7 +56,7 @@ if (length(additional_triggers)) RegisterSignals(parent, additional_triggers, PROC_REF(trigger_explosive)) -/datum/component/interaction_booby_trap/Destroy(force, silent) +/datum/component/interaction_booby_trap/Destroy(force) UnregisterSignal(parent, list(COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_TOOL_ACT(defuse_tool), COMSIG_ATOM_EXAMINE_MORE) + additional_triggers) QDEL_NULL(active_sound_loop) on_triggered_callback = null diff --git a/code/datums/components/irradiated.dm b/code/datums/components/irradiated.dm index bffd56459bfb..805288fe4867 100644 --- a/code/datums/components/irradiated.dm +++ b/code/datums/components/irradiated.dm @@ -58,7 +58,7 @@ COMSIG_GEIGER_COUNTER_SCAN, )) -/datum/component/irradiated/Destroy(force, silent) +/datum/component/irradiated/Destroy(force) var/atom/movable/parent_movable = parent if (istype(parent_movable)) parent_movable.remove_filter("rad_glow") diff --git a/code/datums/components/itembound.dm b/code/datums/components/itembound.dm index ae29949961b8..5daa07969b5d 100644 --- a/code/datums/components/itembound.dm +++ b/code/datums/components/itembound.dm @@ -23,7 +23,7 @@ REMOVE_TRAIT(parent, TRAIT_INCAPACITATED, SMITE_TRAIT) qdel(src) -/datum/component/itembound/Destroy(force, silent) +/datum/component/itembound/Destroy(force) containerref = null QDEL_NULL(move_tracker) return ..() diff --git a/code/datums/components/keep_me_secure.dm b/code/datums/components/keep_me_secure.dm index 9bce3ab5e862..84e295db1786 100644 --- a/code/datums/components/keep_me_secure.dm +++ b/code/datums/components/keep_me_secure.dm @@ -22,7 +22,7 @@ src.secured_callback = secured_callback src.unsecured_callback = unsecured_callback -/datum/component/keep_me_secure/Destroy(force, silent) +/datum/component/keep_me_secure/Destroy(force) secured_callback = null unsecured_callback = null return ..() diff --git a/code/datums/components/light_eater.dm b/code/datums/components/light_eater.dm index 0501af5e0cbb..11344d5f37c6 100644 --- a/code/datums/components/light_eater.dm +++ b/code/datums/components/light_eater.dm @@ -22,7 +22,7 @@ LAZYSET(cached_eaten_lights, morsel, TRUE) RegisterSignal(morsel, COMSIG_QDELETING, PROC_REF(deref_eaten_light)) -/datum/component/light_eater/Destroy(force, silent) +/datum/component/light_eater/Destroy(force) for(var/light in eaten_lights) var/atom/eaten_light = light eaten_light.RemoveElement(/datum/element/light_eaten) diff --git a/code/datums/components/listen_and_repeat.dm b/code/datums/components/listen_and_repeat.dm index 9ebba7416737..93d2dde93f00 100644 --- a/code/datums/components/listen_and_repeat.dm +++ b/code/datums/components/listen_and_repeat.dm @@ -33,7 +33,7 @@ ADD_TRAIT(parent, TRAIT_SUBTREE_REQUIRED_OPERATIONAL_DATUM, type) -/datum/component/listen_and_repeat/Destroy(force, silent) +/datum/component/listen_and_repeat/Destroy(force) REMOVE_TRAIT(parent, TRAIT_SUBTREE_REQUIRED_OPERATIONAL_DATUM, type) return ..() diff --git a/code/datums/components/lock_on_cursor.dm b/code/datums/components/lock_on_cursor.dm index a6caae4953f9..7174256d8529 100644 --- a/code/datums/components/lock_on_cursor.dm +++ b/code/datums/components/lock_on_cursor.dm @@ -43,6 +43,7 @@ datum/callback/on_click_callback, datum/callback/on_lock, datum/callback/can_target_callback, + catcher_default_click = TRUE, //monkestation edit ) if(!ismob(parent)) return COMPONENT_INCOMPATIBLE @@ -68,7 +69,7 @@ RegisterSignal(mouse_tracker, COMSIG_CLICK, PROC_REF(on_catcher_click)) START_PROCESSING(SSfastprocess, src) -/datum/component/lock_on_cursor/Destroy(force, silent) +/datum/component/lock_on_cursor/Destroy(force) clear_visuals() STOP_PROCESSING(SSfastprocess, src) if(on_click_callback) diff --git a/code/datums/components/magnet.dm b/code/datums/components/magnet.dm index 5c78b8665ce8..2d1d8932dfa6 100644 --- a/code/datums/components/magnet.dm +++ b/code/datums/components/magnet.dm @@ -40,7 +40,7 @@ STOP_PROCESSING(SSdcs, src) UnregisterSignal(parent, COMSIG_MOB_STATCHANGE) -/datum/component/magnet/Destroy(force, silent) +/datum/component/magnet/Destroy(force) STOP_PROCESSING(SSdcs, src) on_pulled = null on_contact = null diff --git a/code/datums/components/manual_blinking.dm b/code/datums/components/manual_blinking.dm index 40ec88529b19..4696741a6e4e 100644 --- a/code/datums/components/manual_blinking.dm +++ b/code/datums/components/manual_blinking.dm @@ -22,7 +22,7 @@ last_blink = world.time to_chat(C, span_notice("You suddenly realize you're blinking manually.")) -/datum/component/manual_blinking/Destroy(force, silent) +/datum/component/manual_blinking/Destroy(force) E = null STOP_PROCESSING(SSdcs, src) to_chat(parent, span_notice("You revert back to automatic blinking.")) diff --git a/code/datums/components/manual_breathing.dm b/code/datums/components/manual_breathing.dm index 0488cce6aa34..d8d4fea07d9e 100644 --- a/code/datums/components/manual_breathing.dm +++ b/code/datums/components/manual_breathing.dm @@ -22,7 +22,7 @@ last_breath = world.time to_chat(C, span_notice("You suddenly realize you're breathing manually.")) -/datum/component/manual_breathing/Destroy(force, silent) +/datum/component/manual_breathing/Destroy(force) L = null STOP_PROCESSING(SSdcs, src) to_chat(parent, span_notice("You revert back to automatic breathing.")) diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index c21b01d3f0c5..caf3ecabdb03 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -70,7 +70,7 @@ RegisterSignal(atom_target, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item)) -/datum/component/material_container/Destroy(force, silent) +/datum/component/material_container/Destroy(force) materials = null allowed_materials = null insertion_check = null diff --git a/code/datums/components/mind_linker.dm b/code/datums/components/mind_linker.dm index 4d40853477e2..545ccce91c7d 100644 --- a/code/datums/components/mind_linker.dm +++ b/code/datums/components/mind_linker.dm @@ -10,10 +10,6 @@ var/network_name = "Mind Link" /// The color of the network when talking in chat var/chat_color - /// The message sent to someone when linked up. - var/link_message - /// The message sent to someone when unlinked. - var/unlink_message /// A list of all signals that will call qdel() on our component if triggered. Optional. var/list/signals_which_destroy_us /// A callback invoked after an unlink is done. Optional. @@ -24,25 +20,25 @@ var/speech_action_icon_state = "link_speech" /// The icon background for the speech action handed out. var/speech_action_background_icon_state = "bg_alien" - /// The master's linking action, which allows them to link people to the network. - var/datum/action/linker_action + /// The border icon state for the speech action handed out. + var/speech_action_overlay_state = "bg_alien_border" /// The master's speech action. The owner of the link shouldn't lose this as long as the link remains. - var/datum/action/innate/linked_speech/master_speech + VAR_FINAL/datum/action/innate/linked_speech/master_speech /// An assoc list of [mob/living]s to [datum/action/innate/linked_speech]s. All the mobs that are linked to our network. - var/list/mob/living/linked_mobs = list() + VAR_FINAL/list/mob/living/linked_mobs = list() /datum/component/mind_linker/Initialize( + // Customization related settings network_name = "Mind Link", chat_color = "#008CA2", - linker_action_path, - link_message, - unlink_message, - signals_which_destroy_us, - datum/callback/post_unlink_callback, speech_action_icon = 'icons/mob/actions/actions_slime.dmi', speech_action_icon_state = "link_speech", speech_action_background_icon_state = "bg_alien", - ) + speech_action_overlay_state = "bg_alien_border", + // Optional + signals_which_destroy_us, + datum/callback/post_unlink_callback, +) if(!isliving(parent)) return COMPONENT_INCOMPATIBLE @@ -51,8 +47,9 @@ src.network_name = network_name src.chat_color = chat_color - src.link_message = link_message || "You are now connected to [owner.real_name]'s [network_name]." - src.unlink_message = unlink_message || "You are no longer connected to [owner.real_name]'s [network_name]." + src.speech_action_icon = speech_action_icon + src.speech_action_icon_state = speech_action_icon_state + src.speech_action_background_icon_state = speech_action_background_icon_state if(islist(signals_which_destroy_us)) src.signals_which_destroy_us = signals_which_destroy_us @@ -81,11 +78,10 @@ to_chat(owner, span_boldnotice("You establish a [network_name], allowing you to link minds to communicate telepathically.")) -/datum/component/mind_linker/Destroy(force, silent) +/datum/component/mind_linker/Destroy(force) for(var/mob/living/remaining_mob as anything in linked_mobs) unlink_mob(remaining_mob) linked_mobs.Cut() - QDEL_NULL(linker_action) QDEL_NULL(master_speech) post_unlink_callback = null return ..() @@ -127,20 +123,19 @@ if(to_link == owner) return FALSE - to_chat(to_link, span_notice(link_message)) - to_chat(owner, span_notice("You connect [to_link]'s mind to your [network_name].")) - - for(var/mob/living/other_link as anything in linked_mobs) - to_chat(other_link, span_notice("You feel a new presence within [owner.real_name]'s [network_name].")) - var/datum/action/innate/linked_speech/new_link = new(src) new_link.Grant(to_link) linked_mobs[to_link] = new_link - RegisterSignals(to_link, list(COMSIG_LIVING_DEATH, COMSIG_QDELETING, COMSIG_MINDSHIELD_IMPLANTED), PROC_REF(unlink_mob)) + RegisterSignals(to_link, list(COMSIG_LIVING_DEATH, COMSIG_QDELETING), PROC_REF(sig_unlink_mob)) return TRUE +/datum/component/mind_linker/proc/sig_unlink_mob(mob/living/to_unlink) + SIGNAL_HANDLER + + unlink_mob(to_unlink) + /** * Unlinks [to_unlink] from our network, deleting their speech action * and cleaning up anything involved. @@ -148,25 +143,17 @@ * Also invokes post_unlink_callback, if supplied. */ /datum/component/mind_linker/proc/unlink_mob(mob/living/to_unlink) - SIGNAL_HANDLER - if(!linked_mobs[to_unlink]) - return + return FALSE - to_chat(to_unlink, span_warning(unlink_message)) post_unlink_callback?.Invoke(to_unlink) - UnregisterSignal(to_unlink, list(COMSIG_LIVING_DEATH, COMSIG_QDELETING, COMSIG_MINDSHIELD_IMPLANTED)) + UnregisterSignal(to_unlink, list(COMSIG_LIVING_DEATH, COMSIG_QDELETING)) var/datum/action/innate/linked_speech/old_link = linked_mobs[to_unlink] linked_mobs -= to_unlink qdel(old_link) - - var/mob/living/owner = parent - - to_chat(owner, span_warning("You feel someone disconnect from your [network_name].")) - for(var/mob/living/other_link as anything in linked_mobs) - to_chat(other_link, span_warning("You feel a pressence disappear from [owner.real_name]'s [network_name].")) + return TRUE /** * Signal proc sent from any signals given to us initialize. @@ -181,6 +168,84 @@ qdel(src) +/// Subtype of mind linker (I know) which is more active rather than passive, +/// which involves the master linking people manually rather than people being added automatically. +/datum/component/mind_linker/active_linking + /// The message sent to someone when linked up. + var/link_message + /// The message sent to someone when unlinked. + var/unlink_message + /// The master's linking action, which allows them to link people to the network. + VAR_FINAL/datum/action/linker_action + +/datum/component/mind_linker/active_linking/Initialize( + // Customization related settings + network_name = "Mind Link", + chat_color = "#008CA2", + speech_action_icon = 'icons/mob/actions/actions_slime.dmi', + speech_action_icon_state = "link_speech", + speech_action_background_icon_state = "bg_alien", + speech_action_overlay_state = "bg_alien_border", + // Optional + signals_which_destroy_us, + datum/callback/post_unlink_callback, + // Optional for this subtype + link_message, + unlink_message, + // Required for this subtype + linker_action_path, +) + + . = ..() + if(. == COMPONENT_INCOMPATIBLE) + return + + var/mob/living/owner = parent + src.link_message = link_message || "You are now connected to [owner.real_name]'s [network_name]." + src.unlink_message = unlink_message || "You are no longer connected to [owner.real_name]'s [network_name]." + + if(ispath(linker_action_path)) + linker_action = new linker_action_path(src) + linker_action.Grant(owner) + else + stack_trace("[type] was created without a valid linker_action_path. No one will be able to link to it.") + + to_chat(owner, span_boldnotice("You establish a [network_name], allowing you to link minds to communicate telepathically.")) + +/datum/component/mind_linker/active_linking/Destroy() + QDEL_NULL(linker_action) + return ..() + +/datum/component/mind_linker/active_linking/link_mob(mob/living/to_link) + if(HAS_TRAIT(to_link, TRAIT_MINDSHIELD)) // Mindshield implant - no dice + return FALSE + if(to_link.can_block_magic(MAGIC_RESISTANCE_MIND, charge_cost = 0)) + return FALSE + + . = ..() + if(!.) + return + + RegisterSignal(to_link, COMSIG_MINDSHIELD_IMPLANTED, PROC_REF(sig_unlink_mob)) + var/mob/living/owner = parent + to_chat(to_link, span_notice(link_message)) + to_chat(owner, span_notice("You connect [to_link]'s mind to your [network_name].")) + for(var/mob/living/other_link as anything in linked_mobs) + to_chat(other_link, span_notice("You feel a new presence within [owner.real_name]'s [network_name].")) + +/datum/component/mind_linker/active_linking/unlink_mob(mob/living/to_unlink) + . = ..() + if(!.) + return + + UnregisterSignal(to_unlink, COMSIG_MINDSHIELD_IMPLANTED) + var/mob/living/owner = parent + to_chat(to_unlink, span_warning(unlink_message)) + to_chat(owner, span_warning("You feel someone disconnect from your [network_name].")) + for(var/mob/living/other_link as anything in linked_mobs) + to_chat(other_link, span_warning("You feel a pressence disappear from [owner.real_name]'s [network_name].")) + +// Used in mind linker to talk to everyone in the network. /datum/action/innate/linked_speech name = "Mind Link Speech" desc = "Send a psychic message to everyone connected to your Link." diff --git a/code/datums/components/mob_chain.dm b/code/datums/components/mob_chain.dm index 57c176407f1a..b36f064e9af4 100644 --- a/code/datums/components/mob_chain.dm +++ b/code/datums/components/mob_chain.dm @@ -28,7 +28,7 @@ var/mob/living/living_parent = parent living_parent.set_glide_size(front.glide_size) -/datum/component/mob_chain/Destroy(force, silent) +/datum/component/mob_chain/Destroy(force) if (!isnull(front)) SEND_SIGNAL(front, COMSIG_MOB_LOST_CHAIN_TAIL, parent) front = null diff --git a/code/datums/components/mob_harvest.dm b/code/datums/components/mob_harvest.dm index 8342ee411fe8..b9f9f86350be 100644 --- a/code/datums/components/mob_harvest.dm +++ b/code/datums/components/mob_harvest.dm @@ -42,7 +42,7 @@ item_generation_time = item_generation_wait START_PROCESSING(SSobj, src) -/datum/component/mob_harvest/Destroy(force, silent) +/datum/component/mob_harvest/Destroy(force) STOP_PROCESSING(SSobj, src) return ..() diff --git a/code/datums/components/nuclear_bomb_operator.dm b/code/datums/components/nuclear_bomb_operator.dm index da6e8b0cab12..6ab9330e5ca7 100644 --- a/code/datums/components/nuclear_bomb_operator.dm +++ b/code/datums/components/nuclear_bomb_operator.dm @@ -48,7 +48,7 @@ )) parent.remove_traits(list(TRAIT_DISK_VERIFIER, TRAIT_CAN_STRIP, TRAIT_CAN_USE_NUKE), NUKE_OP_MINION_TRAIT) -/datum/component/nuclear_bomb_operator/Destroy(force, silent) +/datum/component/nuclear_bomb_operator/Destroy(force) QDEL_NULL(disky) on_disk_collected = null add_disk_overlays = null diff --git a/code/datums/components/omen.dm b/code/datums/components/omen.dm index d218729aea07..d7ea8b18c6f2 100644 --- a/code/datums/components/omen.dm +++ b/code/datums/components/omen.dm @@ -17,11 +17,18 @@ /// Base damage from negative events. Cursed take 25% less damage. var/damage_mod = 1 -/datum/component/omen/Initialize(vessel) +/datum/component/omen/Initialize(obj/vessel, permanent, luck_mod, damage_mod) if(!isliving(parent)) return COMPONENT_INCOMPATIBLE - src.vessel = vessel + if(istype(vessel)) + src.vessel = vessel + RegisterSignal(vessel, COMSIG_QDELETING, PROC_REF(vessel_qdeleting)) + src.permanent = permanent + if(!isnull(luck_mod)) + src.luck_mod = luck_mod + if(!isnull(damage_mod)) + src.damage_mod = damage_mod /datum/component/omen/Destroy(force) var/mob/living/person = parent @@ -29,6 +36,8 @@ if(vessel) vessel.visible_message(span_warning("[vessel] burns up in a sinister flash, taking an evil energy with it...")) + UnregisterSignal(vessel, COMSIG_QDELETING) + vessel.burn() vessel = null return ..() @@ -53,8 +62,8 @@ if(!isliving(our_guy)) return - var/mob/living/living_guy = our_guy + var/mob/living/living_guy = our_guy if(!prob(15 * luck_mod)) return @@ -124,7 +133,10 @@ /datum/component/omen/proc/check_bless(mob/living/our_guy, category) SIGNAL_HANDLER - if (!("blessing" in our_guy.mob_mood.mood_events)) + if(permanent) + return + + if(!("blessing" in our_guy.mob_mood.mood_events)) return qdel(src) @@ -133,6 +145,9 @@ /datum/component/omen/proc/check_death(mob/living/our_guy) SIGNAL_HANDLER + if(permanent) + return + qdel(src) /// Creates a localized explosion that shakes the camera @@ -142,21 +157,18 @@ for(var/mob/witness in view(2, our_guy)) shake_camera(witness, 1 SECONDS, 2) +/// Vessel got deleted, set it to null +/datum/component/omen/proc/vessel_qdeleting(atom/source) + SIGNAL_HANDLER + + UnregisterSignal(vessel, COMSIG_QDELETING) + vessel = null + /** * The smite omen. Permanent. */ /datum/component/omen/smite -/datum/component/omen/smite/Initialize(vessel, permanent) - . = ..() - src.permanent = permanent - -/datum/component/omen/smite/check_bless(mob/living/our_guy, category) - if(!permanent) - return ..() - - return - /datum/component/omen/smite/check_death(mob/living/our_guy) if(!permanent) return ..() @@ -198,3 +210,22 @@ player.spawn_gibs() return + +/** + * The bible omen. + * While it lasts, parent gets a cursed aura filter. + */ +/datum/component/omen/bible + +/datum/component/omen/bible/RegisterWithParent() + . = ..() + var/mob/living/living_parent = parent + living_parent.add_filter("omen", 2, list("type" = "drop_shadow", "color" = COLOR_DARK_RED, "alpha" = 0, "size" = 2)) + var/filter = living_parent.get_filter("omen") + animate(filter, alpha = 255, time = 2 SECONDS, loop = -1) + animate(alpha = 0, time = 2 SECONDS) + +/datum/component/omen/bible/UnregisterFromParent() + . = ..() + var/mob/living/living_parent = parent + living_parent.remove_filter("omen") diff --git a/code/datums/components/overlay_lighting.dm b/code/datums/components/overlay_lighting.dm index 95115d98629e..f6948f92d5e8 100644 --- a/code/datums/components/overlay_lighting.dm +++ b/code/datums/components/overlay_lighting.dm @@ -170,7 +170,7 @@ /datum/component/overlay_lighting/proc/clean_old_turfs() for(var/turf/lit_turf as anything in affected_turfs) lit_turf.dynamic_lumcount -= lum_power - SSdemo.mark_turf(lit_turf) //Monkestation Edit: REPLAYS + SSdemo.mark_multiple_turfs(affected_turfs) // monkestation edit: REPLAYS affected_turfs = null @@ -181,9 +181,9 @@ . = list() for(var/turf/lit_turf in view(lumcount_range, get_turf(current_holder))) lit_turf.dynamic_lumcount += lum_power - SSdemo.mark_turf(lit_turf) //Monkestation Edit: REPLAYS . += lit_turf if(length(.)) + SSdemo.mark_multiple_turfs(.) // monkestation edit: REPLAYS affected_turfs = . diff --git a/code/datums/components/pellet_cloud.dm b/code/datums/components/pellet_cloud.dm index bed2827a4c25..e5dca7d41caf 100644 --- a/code/datums/components/pellet_cloud.dm +++ b/code/datums/components/pellet_cloud.dm @@ -69,7 +69,7 @@ else if(isgrenade(parent) || islandmine(parent) || issupplypod(parent)) radius = magnitude -/datum/component/pellet_cloud/Destroy(force, silent) +/datum/component/pellet_cloud/Destroy(force) purple_hearts = null pellets = null targets_hit = null diff --git a/code/datums/components/pet_commands/obeys_commands.dm b/code/datums/components/pet_commands/obeys_commands.dm index f3201bc63db7..ee11002abf56 100644 --- a/code/datums/components/pet_commands/obeys_commands.dm +++ b/code/datums/components/pet_commands/obeys_commands.dm @@ -22,7 +22,7 @@ var/datum/pet_command/new_command = new command_path(parent) available_commands[new_command.command_name] = new_command -/datum/component/obeys_commands/Destroy(force, silent) +/datum/component/obeys_commands/Destroy(force) . = ..() QDEL_NULL(available_commands) diff --git a/code/datums/components/pinata.dm b/code/datums/components/pinata.dm index 1056200e3e27..064bc2de26b2 100644 --- a/code/datums/components/pinata.dm +++ b/code/datums/components/pinata.dm @@ -52,7 +52,7 @@ new dropped_item(get_turf(parent)) qdel(src) -/datum/component/pinata/Destroy(force, silent) +/datum/component/pinata/Destroy(force) UnregisterSignal(parent, list( COMSIG_MOB_APPLY_DAMAGE, COMSIG_LIVING_DEATH, diff --git a/code/datums/components/plumbing/_plumbing.dm b/code/datums/components/plumbing/_plumbing.dm index d51f233f0ec8..ed3991a70e5f 100644 --- a/code/datums/components/plumbing/_plumbing.dm +++ b/code/datums/components/plumbing/_plumbing.dm @@ -334,7 +334,7 @@ tile_covered = should_hide parent_obj.update_appearance() -/datum/component/plumbing/proc/change_ducting_layer(obj/caller, obj/changer, new_layer = DUCT_LAYER_DEFAULT) +/datum/component/plumbing/proc/change_ducting_layer(obj/user, obj/changer, new_layer = DUCT_LAYER_DEFAULT) SIGNAL_HANDLER ducting_layer = new_layer @@ -393,7 +393,7 @@ demand_connects = NORTH supply_connects = SOUTH -/datum/component/plumbing/manifold/change_ducting_layer(obj/caller, obj/changer, new_layer) +/datum/component/plumbing/manifold/change_ducting_layer(obj/user, obj/changer, new_layer) return #define READY 2 diff --git a/code/datums/components/plumbing/chemical_acclimator.dm b/code/datums/components/plumbing/chemical_acclimator.dm index 777a2804a780..f84252c51de7 100644 --- a/code/datums/components/plumbing/chemical_acclimator.dm +++ b/code/datums/components/plumbing/chemical_acclimator.dm @@ -9,7 +9,7 @@ return COMPONENT_INCOMPATIBLE myacclimator = parent -/datum/component/plumbing/acclimator/Destroy(force, silent) +/datum/component/plumbing/acclimator/Destroy(force) myacclimator = null return ..() diff --git a/code/datums/components/puzzgrid.dm b/code/datums/components/puzzgrid.dm index 8a7620b06e32..611df16ccaa3 100644 --- a/code/datums/components/puzzgrid.dm +++ b/code/datums/components/puzzgrid.dm @@ -55,7 +55,7 @@ addtimer(CALLBACK(src, PROC_REF(out_of_time)), timer) time_to_finish = world.time + timer -/datum/component/puzzgrid/Destroy(force, silent) +/datum/component/puzzgrid/Destroy(force) puzzgrid = null on_victory_callback = null on_fail_callback = null diff --git a/code/datums/components/radioactive_emitter.dm b/code/datums/components/radioactive_emitter.dm index 6a95f36079c7..26e33855a115 100644 --- a/code/datums/components/radioactive_emitter.dm +++ b/code/datums/components/radioactive_emitter.dm @@ -41,7 +41,7 @@ // Easier to handle edits to the cooldown duration, prevents timer spam for short cooldown emitters START_PROCESSING(SSfastprocess, src) -/datum/component/radioactive_emitter/Destroy(force, silent) +/datum/component/radioactive_emitter/Destroy(force) STOP_PROCESSING(SSfastprocess, src) return ..() diff --git a/code/datums/components/reagent_refiller.dm b/code/datums/components/reagent_refiller.dm index 4e2da58c79bc..a56ebce79ff4 100644 --- a/code/datums/components/reagent_refiller.dm +++ b/code/datums/components/reagent_refiller.dm @@ -28,7 +28,7 @@ return ..() -/datum/component/reagent_refiller/Destroy(force, silent) +/datum/component/reagent_refiller/Destroy(force) power_draw_callback = null return ..() diff --git a/code/datums/components/redirect_attack_hand_from_turf.dm b/code/datums/components/redirect_attack_hand_from_turf.dm index 5af01334f07f..cf49b5b8545e 100644 --- a/code/datums/components/redirect_attack_hand_from_turf.dm +++ b/code/datums/components/redirect_attack_hand_from_turf.dm @@ -31,7 +31,7 @@ RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) connect_to_new_turf() -/datum/component/redirect_attack_hand_from_turf/Destroy(force, silent) +/datum/component/redirect_attack_hand_from_turf/Destroy(force) disconnect_from_old_turf() return ..() @@ -102,7 +102,7 @@ var/atom/movable/movable_parent = parent if (!movable_parent.can_interact(user)) return NONE - + if (!isnull(interact_check) && !interact_check.Invoke(user)) return NONE @@ -124,7 +124,7 @@ if (!isnull(held_item)) return NONE - + if (!isnull(interact_check) && !interact_check.Invoke(user)) return NONE diff --git a/code/datums/components/reflection.dm b/code/datums/components/reflection.dm index 80532ca2a610..d85960951aa5 100644 --- a/code/datums/components/reflection.dm +++ b/code/datums/components/reflection.dm @@ -55,7 +55,7 @@ var/list/reflect_update_signals = list(COMSIG_MOVABLE_MOVED) + update_signals RegisterSignals(parent, reflect_update_signals, PROC_REF(get_reflection_targets)) -/datum/component/reflection/Destroy(force, silent) +/datum/component/reflection/Destroy(force) QDEL_LIST_ASSOC_VAL(reflected_movables) QDEL_NULL(reflection_holder) can_reflect = null diff --git a/code/datums/components/regenerator.dm b/code/datums/components/regenerator.dm index b33e68abcbc5..bfc1ad399c43 100644 --- a/code/datums/components/regenerator.dm +++ b/code/datums/components/regenerator.dm @@ -38,7 +38,7 @@ UnregisterSignal(parent, COMSIG_MOB_APPLY_DAMAGE) stop_regenerating() -/datum/component/regenerator/Destroy(force, silent) +/datum/component/regenerator/Destroy(force) stop_regenerating() . = ..() if(regeneration_start_timer) diff --git a/code/datums/components/religious_tool.dm b/code/datums/components/religious_tool.dm index 7e327d19865e..3297cc73da83 100644 --- a/code/datums/components/religious_tool.dm +++ b/code/datums/components/religious_tool.dm @@ -14,7 +14,7 @@ /// The rite currently being invoked var/datum/religion_rites/performing_rite ///Sets the type for catalyst - var/catalyst_type = /obj/item/storage/book/bible + var/catalyst_type = /obj/item/book/bible ///Enables overide of COMPONENT_NO_AFTERATTACK, not recommended as it means you can potentially cause damage to the item using the catalyst. var/force_catalyst_afterattack = FALSE var/datum/callback/after_sect_select_cb @@ -28,7 +28,7 @@ if(override_catalyst_type) catalyst_type = override_catalyst_type -/datum/component/religious_tool/Destroy(force, silent) +/datum/component/religious_tool/Destroy(force) easy_access_sect = null performing_rite = null catalyst_type = null diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm index 9cfbb79d859f..603d966862d4 100644 --- a/code/datums/components/riding/riding_mob.dm +++ b/code/datums/components/riding/riding_mob.dm @@ -25,7 +25,7 @@ var/mob/living/simple_animal/simple_parent = parent simple_parent.stop_automated_movement = TRUE -/datum/component/riding/creature/Destroy(force, silent) +/datum/component/riding/creature/Destroy(force) unequip_buckle_inhands(parent) if(isanimal(parent)) var/mob/living/simple_animal/simple_parent = parent @@ -316,8 +316,10 @@ for(var/mob/living/rider in robot_parent.buckled_mobs) rider.setDir(dir) if(istype(robot_parent.model)) - rider.pixel_x = robot_parent.model.ride_offset_x[dir2text(dir)] - rider.pixel_y = robot_parent.model.ride_offset_y[dir2text(dir)] + if(dir2text(dir) in robot_parent.model.ride_offset_x) + rider.pixel_x = robot_parent.model.ride_offset_x[dir2text(dir)] + if(dir2text(dir) in robot_parent.model.ride_offset_y) + rider.pixel_y = robot_parent.model.ride_offset_y[dir2text(dir)] //now onto every other ridable mob// @@ -401,7 +403,7 @@ var/mob/living/basic/mining/goliath/goliath = parent goliath.add_movespeed_modifier(/datum/movespeed_modifier/goliath_mount) -/datum/component/riding/creature/goliath/Destroy(force, silent) +/datum/component/riding/creature/goliath/Destroy(force) var/mob/living/basic/mining/goliath/goliath = parent goliath.remove_movespeed_modifier(/datum/movespeed_modifier/goliath_mount) return ..() diff --git a/code/datums/components/scope.dm b/code/datums/components/scope.dm index 09bb40e5023a..2e10f7663a73 100644 --- a/code/datums/components/scope.dm +++ b/code/datums/components/scope.dm @@ -9,7 +9,7 @@ return COMPONENT_INCOMPATIBLE src.range_modifier = range_modifier -/datum/component/scope/Destroy(force, silent) +/datum/component/scope/Destroy(force) if(tracker) stop_zooming(tracker.owner) return ..() @@ -152,8 +152,16 @@ /atom/movable/screen/fullscreen/cursor_catcher/scope/calculate_params() var/list/modifiers = params2list(mouse_params) - var/icon_x = text2num(LAZYACCESS(modifiers, VIS_X)) || view_list[1]*world.icon_size/2 - var/icon_y = text2num(LAZYACCESS(modifiers, VIS_Y)) || view_list[2]*world.icon_size/2 + var/icon_x = text2num(LAZYACCESS(modifiers, VIS_X)) + if(isnull(icon_x)) + icon_x = text2num(LAZYACCESS(modifiers, ICON_X)) + if(isnull(icon_x)) + icon_x = view_list[1]*world.icon_size/2 + var/icon_y = text2num(LAZYACCESS(modifiers, VIS_Y)) + if(isnull(icon_y)) + icon_y = text2num(LAZYACCESS(modifiers, ICON_Y)) + if(isnull(icon_y)) + icon_y = view_list[2]*world.icon_size/2 given_x = round(range_modifier * (icon_x - view_list[1]*world.icon_size/2)) given_y = round(range_modifier * (icon_y - view_list[2]*world.icon_size/2)) given_turf = locate(owner.x+round(given_x/world.icon_size, 1),owner.y+round(given_y/world.icon_size, 1),owner.z) diff --git a/code/datums/components/seclight_attachable.dm b/code/datums/components/seclight_attachable.dm index 56761cfd1bfb..69f2d733eadc 100644 --- a/code/datums/components/seclight_attachable.dm +++ b/code/datums/components/seclight_attachable.dm @@ -50,7 +50,7 @@ if(istype(starting_light)) add_light(starting_light) -/datum/component/seclite_attachable/Destroy(force, silent) +/datum/component/seclite_attachable/Destroy(force) if(light) remove_light() return ..() diff --git a/code/datums/components/seethrough_mob.dm b/code/datums/components/seethrough_mob.dm index 4359c454f1a1..bae87faf6158 100644 --- a/code/datums/components/seethrough_mob.dm +++ b/code/datums/components/seethrough_mob.dm @@ -42,7 +42,7 @@ var/datum/action/cooldown/toggle_seethrough/action = new(src) action.Grant(parent) -/datum/component/seethrough_mob/Destroy(force, silent) +/datum/component/seethrough_mob/Destroy(force) QDEL_NULL(render_source_atom) return ..() diff --git a/code/datums/components/shell.dm b/code/datums/components/shell.dm index 88747bd2f60f..6f9aba2c84c9 100644 --- a/code/datums/components/shell.dm +++ b/code/datums/components/shell.dm @@ -101,7 +101,7 @@ QDEL_NULL(attached_circuit) -/datum/component/shell/Destroy(force, silent) +/datum/component/shell/Destroy(force) QDEL_LIST(unremovable_circuit_components) return ..() diff --git a/code/datums/components/shielded.dm b/code/datums/components/shielded.dm index 2e51a3e74127..26198b0f33f1 100644 --- a/code/datums/components/shielded.dm +++ b/code/datums/components/shielded.dm @@ -56,7 +56,7 @@ if(recharge_start_delay) START_PROCESSING(SSdcs, src) -/datum/component/shielded/Destroy(force, silent) +/datum/component/shielded/Destroy(force) if(wearer) shield_icon = "broken" UnregisterSignal(wearer, COMSIG_ATOM_UPDATE_OVERLAYS) @@ -186,5 +186,5 @@ . = COMPONENT_NO_AFTERATTACK adjust_charge(charge_recovery) - to_chat(user, span_notice("You charge \the [parent]. It can now absorb [current_charges] hits.")) + to_chat(user, span_notice("You charge \the [parent]. It can now absorb [current_charges] [lose_multiple_charges ? "damage" : "hits"].")) //monke edit: adds the multiple charges check qdel(recharge_rune) diff --git a/code/datums/components/shovel_hands.dm b/code/datums/components/shovel_hands.dm index e4ee2d644d37..422902249a6b 100644 --- a/code/datums/components/shovel_hands.dm +++ b/code/datums/components/shovel_hands.dm @@ -20,7 +20,7 @@ UnregisterSignal(parent, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET)) return ..() -/datum/component/shovel_hands/Destroy(force, silent) +/datum/component/shovel_hands/Destroy(force) if (internal_shovel) UnregisterSignal(internal_shovel, COMSIG_QDELETING) QDEL_NULL(internal_shovel) diff --git a/code/datums/components/shrink.dm b/code/datums/components/shrink.dm index 67cd3d39e23c..5b017e4cca63 100644 --- a/code/datums/components/shrink.dm +++ b/code/datums/components/shrink.dm @@ -1,6 +1,8 @@ /datum/component/shrink var/olddens var/oldopac + /// Tracks the squashable component we apply when we make the small mob squashable + var/datum/component/squashable/newsquash dupe_mode = COMPONENT_DUPE_HIGHLANDER /datum/component/shrink/Initialize(shrink_time) @@ -24,13 +26,23 @@ if(ishuman(C)) var/mob/living/carbon/human/H = C H.physiology.damage_resistance -= 100//carbons take double damage while shrunk + if(!L.GetComponent(/datum/component/squashable)) + newsquash = L.AddComponent( \ + /datum/component/squashable, \ + squash_chance = 75, \ + squash_damage = 10, \ + squash_flags = SQUASHED_ALWAYS_IF_DEAD|SQUASHED_DONT_SQUASH_IN_CONTENTS, \ + ) else parent_atom.set_density(FALSE) // this is handled by the UNDENSE trait on mobs parent_atom.visible_message(span_warning("[parent_atom] shrinks down to a tiny size!"), span_userdanger("Everything grows bigger!")) - QDEL_IN(src, shrink_time) + if(shrink_time >= 0) // negative shrink time is permanent + QDEL_IN(src, shrink_time) /datum/component/shrink/Destroy() + if(newsquash) + qdel(newsquash) var/atom/parent_atom = parent parent_atom.transform = parent_atom.transform.Scale(2,2) parent_atom.set_opacity(oldopac) diff --git a/code/datums/components/shuttle_cling.dm b/code/datums/components/shuttle_cling.dm index f686d7103bc8..4663f4dff786 100644 --- a/code/datums/components/shuttle_cling.dm +++ b/code/datums/components/shuttle_cling.dm @@ -177,7 +177,7 @@ qdel(src) -/datum/component/shuttle_cling/Destroy(force, silent) +/datum/component/shuttle_cling/Destroy(force) REMOVE_TRAIT(parent, TRAIT_HYPERSPACED, src) QDEL_NULL(hyperloop) diff --git a/code/datums/components/sign_language.dm b/code/datums/components/sign_language.dm index 3cda4b27e391..df152da2d1d8 100644 --- a/code/datums/components/sign_language.dm +++ b/code/datums/components/sign_language.dm @@ -174,7 +174,7 @@ // I'm just saving myself a variable cast by using as anything for(var/obj/item/held_item as anything in carbon_parent.held_items) // items like slappers/zombie claws/etc. should be ignored - if(isnull(held_item) || held_item.item_flags & HAND_ITEM) + if(QDELETED(held_item) || (held_item.item_flags & HAND_ITEM)) continue busy_hands++ diff --git a/code/datums/components/singularity.dm b/code/datums/components/singularity.dm index 4b35437bcec9..b956e6345d50 100644 --- a/code/datums/components/singularity.dm +++ b/code/datums/components/singularity.dm @@ -108,7 +108,7 @@ GLOB.singularities |= src -/datum/component/singularity/Destroy(force, silent) +/datum/component/singularity/Destroy(force) GLOB.singularities -= src consume_callback = null target = null @@ -286,7 +286,7 @@ if (STAGE_ONE) steps = 1 if (STAGE_TWO) - steps = 3//Yes this is right + steps = 2//Now THIS is right if (STAGE_THREE) steps = 3 if (STAGE_FOUR) diff --git a/code/datums/components/sitcomlaughter.dm b/code/datums/components/sitcomlaughter.dm index 8ca335eb8b51..62e9276b1d75 100644 --- a/code/datums/components/sitcomlaughter.dm +++ b/code/datums/components/sitcomlaughter.dm @@ -22,7 +22,7 @@ if(laugh_delay) src.laugh_delay = laugh_delay -/datum/component/wearertargeting/sitcomlaughter/Destroy(force, silent) +/datum/component/wearertargeting/sitcomlaughter/Destroy(force) post_comedy_callback = null return ..() diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm index 271a07d9fd2d..a9c9e063541d 100644 --- a/code/datums/components/slippery.dm +++ b/code/datums/components/slippery.dm @@ -47,7 +47,7 @@ else RegisterSignal(parent, COMSIG_ATOM_ENTERED, PROC_REF(Slip)) -/datum/component/slippery/Destroy(force, silent) +/datum/component/slippery/Destroy(force) callback = null holder = null return ..() diff --git a/code/datums/components/smooth_tunes.dm b/code/datums/components/smooth_tunes.dm index c3025dbb54c7..5c380a897130 100644 --- a/code/datums/components/smooth_tunes.dm +++ b/code/datums/components/smooth_tunes.dm @@ -27,7 +27,7 @@ src.particles_path = particles_path src.glow_color = glow_color -/datum/component/smooth_tunes/Destroy(force, silent) +/datum/component/smooth_tunes/Destroy(force) if(particle_holder) QDEL_NULL(particle_holder) qdel(linked_songtuner_rite) diff --git a/code/datums/components/soapbox.dm b/code/datums/components/soapbox.dm index 61132bf68faa..42d0b9a41bcf 100644 --- a/code/datums/components/soapbox.dm +++ b/code/datums/components/soapbox.dm @@ -4,7 +4,7 @@ /// Gives atoms moving over us the soapbox speech and takes it away when they leave var/static/list/loc_connections = list( COMSIG_ATOM_ENTERED = PROC_REF(on_loc_entered), - COMSIG_ATOM_EXITED = PROC_REF(on_loc_exited) + COMSIG_ATOM_EXITED = PROC_REF(on_loc_exited), ) /datum/component/soapbox/Initialize(...) @@ -16,6 +16,8 @@ ///Applies loud speech to our movable when entering the turf our parent is on /datum/component/soapbox/proc/on_loc_entered(datum/source, atom/movable/soapbox_arrive) SIGNAL_HANDLER + if(QDELETED(soapbox_arrive) || (soapbox_arrive in soapboxers)) + return RegisterSignal(soapbox_arrive, COMSIG_MOB_SAY, PROC_REF(soapbox_speech)) soapboxers += soapbox_arrive @@ -31,7 +33,7 @@ SIGNAL_HANDLER for(var/atom/movable/loud as anything in soapboxers) UnregisterSignal(loud, COMSIG_MOB_SAY) - soapboxers = list() + soapboxers.Cut() ///Gives a mob a unique say span /datum/component/soapbox/proc/soapbox_speech(datum/source, list/speech_args) diff --git a/code/datums/components/spin2win.dm b/code/datums/components/spin2win.dm index 19eebfed5097..ab7f38a50d73 100644 --- a/code/datums/components/spin2win.dm +++ b/code/datums/components/spin2win.dm @@ -36,7 +36,7 @@ src.start_spin_message = start_spin_message src.end_spin_message = end_spin_message -/datum/component/spin2win/Destroy(force, silent) +/datum/component/spin2win/Destroy(force) on_spin_callback = null on_unspin_callback = null return ..() diff --git a/code/datums/components/spinny.dm b/code/datums/components/spinny.dm index bec04b345601..d3cf52e29e07 100644 --- a/code/datums/components/spinny.dm +++ b/code/datums/components/spinny.dm @@ -18,7 +18,7 @@ turn_degrees = (reverse ? -90 : 90) START_PROCESSING(SSfastprocess, src) -/datum/component/spinny/Destroy(force, silent) +/datum/component/spinny/Destroy(force) STOP_PROCESSING(SSfastprocess, src) return ..() diff --git a/code/datums/components/spirit_holding.dm b/code/datums/components/spirit_holding.dm index 824916d6fbf3..c61f76751bee 100644 --- a/code/datums/components/spirit_holding.dm +++ b/code/datums/components/spirit_holding.dm @@ -13,7 +13,7 @@ if(!ismovable(parent)) //you may apply this to mobs, i take no responsibility for how that works out return COMPONENT_INCOMPATIBLE -/datum/component/spirit_holding/Destroy(force, silent) +/datum/component/spirit_holding/Destroy(force) . = ..() if(bound_spirit) QDEL_NULL(bound_spirit) @@ -62,7 +62,7 @@ check_jobban = ROLE_PAI, poll_time = 10 SECONDS, ignore_category = POLL_IGNORE_POSSESSED_BLADE, - pic_source = parent, + alert_pic = parent, role_name_text = "possessed blade", ) if(!LAZYLEN(candidates)) diff --git a/code/datums/components/splattercasting.dm b/code/datums/components/splattercasting.dm index 1721c8fbf53c..2a0eb0dc2c36 100644 --- a/code/datums/components/splattercasting.dm +++ b/code/datums/components/splattercasting.dm @@ -21,10 +21,12 @@ RegisterSignal(parent, COMSIG_MOB_SPELL_PROJECTILE, PROC_REF(on_spell_projectile)) RegisterSignal(parent, COMSIG_MOB_BEFORE_SPELL_CAST, PROC_REF(on_before_spell_cast)) RegisterSignal(parent, COMSIG_MOB_AFTER_SPELL_CAST, PROC_REF(on_after_spell_cast)) + ADD_TRAIT(parent, TRAIT_SPLATTERCASTER, REF(src)) /datum/component/splattercasting/UnregisterFromParent() . = ..() UnregisterSignal(parent, list(COMSIG_SPECIES_LOSS, COMSIG_MOB_SPELL_PROJECTILE, COMSIG_MOB_BEFORE_SPELL_CAST, COMSIG_MOB_AFTER_SPELL_CAST)) + REMOVE_TRAIT(parent, TRAIT_SPLATTERCASTER, REF(src)) ///signal sent when a spell casts a projectile /datum/component/splattercasting/proc/on_species_change(mob/living/carbon/source, datum/species/lost_species) diff --git a/code/datums/components/squashable.dm b/code/datums/components/squashable.dm index 8e970db023a3..d4fbbcba61f7 100644 --- a/code/datums/components/squashable.dm +++ b/code/datums/components/squashable.dm @@ -29,7 +29,7 @@ AddComponent(/datum/component/connect_loc_behalf, parent, loc_connections) -/datum/component/squashable/Destroy(force, silent) +/datum/component/squashable/Destroy(force) on_squash_callback = null return ..() @@ -44,10 +44,10 @@ if((squash_flags & SQUASHED_DONT_SQUASH_IN_CONTENTS) && !isturf(parent_as_living.loc)) return - if(squash_flags & SQUASHED_SHOULD_BE_DOWN && parent_as_living.body_position != LYING_DOWN) + if((squash_flags & SQUASHED_SHOULD_BE_DOWN) && parent_as_living.body_position != LYING_DOWN) return - var/should_squash = prob(squash_chance) + var/should_squash = ((squash_flags & SQUASHED_ALWAYS_IF_DEAD) && parent_as_living.stat == DEAD) || prob(squash_chance) if(should_squash && on_squash_callback) if(on_squash_callback.Invoke(parent_as_living, crossing_movable)) diff --git a/code/datums/components/strong_pull.dm b/code/datums/components/strong_pull.dm index bfcfb34c163a..afb46b7252d5 100644 --- a/code/datums/components/strong_pull.dm +++ b/code/datums/components/strong_pull.dm @@ -10,7 +10,7 @@ Basically, the items they pull cannot be pulled (except by the puller) if(!isliving(parent)) return COMPONENT_INCOMPATIBLE -/datum/component/strong_pull/Destroy(force, silent) +/datum/component/strong_pull/Destroy(force) if(strongpulling) lose_strong_grip() return ..() diff --git a/code/datums/components/style/style.dm b/code/datums/components/style/style.dm index c527653d8a6c..b067772a406c 100644 --- a/code/datums/components/style/style.dm +++ b/code/datums/components/style/style.dm @@ -143,7 +143,7 @@ qdel(projectile_parry.resolve()) -/datum/component/style/Destroy(force, silent) +/datum/component/style/Destroy(force) STOP_PROCESSING(SSdcs, src) var/mob/mob_parent = parent if(mob_parent.hud_used) diff --git a/code/datums/components/subtype_picker.dm b/code/datums/components/subtype_picker.dm index 2bc429f9b707..78401c9e0229 100644 --- a/code/datums/components/subtype_picker.dm +++ b/code/datums/components/subtype_picker.dm @@ -22,7 +22,7 @@ src.on_picked_callback = on_picked_callback build_radial_list() -/datum/component/subtype_picker/Destroy(force, silent) +/datum/component/subtype_picker/Destroy(force) on_picked_callback = null return ..() diff --git a/code/datums/components/supermatter_crystal.dm b/code/datums/components/supermatter_crystal.dm index aa10255670ac..9077b361f7b8 100644 --- a/code/datums/components/supermatter_crystal.dm +++ b/code/datums/components/supermatter_crystal.dm @@ -21,7 +21,7 @@ src.tool_act_callback = tool_act_callback src.consume_callback = consume_callback -/datum/component/supermatter_crystal/Destroy(force, silent) +/datum/component/supermatter_crystal/Destroy(force) tool_act_callback = null consume_callback = null return ..() diff --git a/code/datums/components/surgery_initiator.dm b/code/datums/components/surgery_initiator.dm index 2f7fb3c3f7c9..45a394265fb8 100644 --- a/code/datums/components/surgery_initiator.dm +++ b/code/datums/components/surgery_initiator.dm @@ -14,7 +14,7 @@ var/obj/item/surgery_tool = parent surgery_tool.item_flags |= ITEM_HAS_CONTEXTUAL_SCREENTIPS -/datum/component/surgery_initiator/Destroy(force, silent) +/datum/component/surgery_initiator/Destroy(force) last_user_ref = null surgery_target_ref = null diff --git a/code/datums/components/swabbing.dm b/code/datums/components/swabbing.dm index fa649a5e0184..12d851afe39f 100644 --- a/code/datums/components/swabbing.dm +++ b/code/datums/components/swabbing.dm @@ -32,7 +32,7 @@ This component is used in vat growing to swab for microbiological samples which src.update_icons = update_icons src.update_overlays = update_overlays -/datum/component/swabbing/Destroy(force, silent) +/datum/component/swabbing/Destroy(force) for(var/swabbed in swabbed_items) qdel(swabbed) update_icons = null diff --git a/code/datums/components/takes_reagent_appearance.dm b/code/datums/components/takes_reagent_appearance.dm index 6505290b4cbb..ccd898a37aef 100644 --- a/code/datums/components/takes_reagent_appearance.dm +++ b/code/datums/components/takes_reagent_appearance.dm @@ -43,7 +43,7 @@ src.base_container_type = base_container_type || parent.type -/datum/component/takes_reagent_appearance/Destroy(force, silent) +/datum/component/takes_reagent_appearance/Destroy(force) on_icon_changed = null on_icon_reset = null return ..() diff --git a/code/datums/components/tameable.dm b/code/datums/components/tameable.dm index 303bdbfafb2c..4fa4c414fbc8 100644 --- a/code/datums/components/tameable.dm +++ b/code/datums/components/tameable.dm @@ -32,7 +32,7 @@ RegisterSignal(parent, COMSIG_SIMPLEMOB_SENTIENCEPOTION, PROC_REF(on_tame)) //Instantly succeeds RegisterSignal(parent, COMSIG_SIMPLEMOB_TRANSFERPOTION, PROC_REF(on_tame)) //Instantly succeeds -/datum/component/tameable/Destroy(force, silent) +/datum/component/tameable/Destroy(force) after_tame = null return ..() @@ -68,7 +68,7 @@ /datum/component/tameable/proc/on_tame(datum/source, mob/living/tamer, atom/food) SIGNAL_HANDLER after_tame?.Invoke(tamer, food)//Run custom behavior if needed - + if(isliving(source)) var/mob/living/potentially_dead_horse = source potentially_dead_horse.faction += FACTION_TAMED diff --git a/code/datums/components/tattoo.dm b/code/datums/components/tattoo.dm index 7289c301520f..fe51a53781b0 100644 --- a/code/datums/components/tattoo.dm +++ b/code/datums/components/tattoo.dm @@ -25,7 +25,7 @@ if(tatted_limb.owner) setup_tatted_owner(tatted_limb.owner) -/datum/component/tattoo/Destroy(force, silent) +/datum/component/tattoo/Destroy(force) if(!parent) return ..() var/obj/item/bodypart/tatted_limb = parent diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm index 3b015c953839..4362835ad070 100644 --- a/code/datums/components/twohanded.dm +++ b/code/datums/components/twohanded.dm @@ -56,7 +56,7 @@ if(require_twohands) ADD_TRAIT(parent, TRAIT_NEEDS_TWO_HANDS, ABSTRACT_ITEM_TRAIT) -/datum/component/two_handed/Destroy(force, silent) +/datum/component/two_handed/Destroy(force) offhand_item = null wield_callback = null unwield_callback = null @@ -94,6 +94,7 @@ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(on_attack_self)) + RegisterSignal(parent, COMSIG_CLICK_CTRL, PROC_REF(on_attack_self)) RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(on_attack)) RegisterSignal(parent, COMSIG_ATOM_UPDATE_ICON, PROC_REF(on_update_icon)) RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) diff --git a/code/datums/components/unbreakable.dm b/code/datums/components/unbreakable.dm index 423fad138bb5..594b8dc7b8f0 100644 --- a/code/datums/components/unbreakable.dm +++ b/code/datums/components/unbreakable.dm @@ -6,7 +6,7 @@ return COMPONENT_INCOMPATIBLE ADD_TRAIT(parent, TRAIT_UNBREAKABLE, INNATE_TRAIT) -/datum/component/unbreakable/Destroy(force, silent) +/datum/component/unbreakable/Destroy(force) REMOVE_TRAIT(parent, TRAIT_UNBREAKABLE, INNATE_TRAIT) return ..() diff --git a/code/datums/components/unusual_effect.dm b/code/datums/components/unusual_effect.dm index eb67b9537997..7fe5b281825b 100644 --- a/code/datums/components/unusual_effect.dm +++ b/code/datums/components/unusual_effect.dm @@ -39,7 +39,7 @@ special_effects = new(parent_movable, /particles/unusual_effect) START_PROCESSING(SSobj, src) -/datum/component/unusual_effect/Destroy(force, silent) +/datum/component/unusual_effect/Destroy(force) var/atom/movable/parent_movable = parent if (istype(parent_movable)) parent_movable.remove_filter("unusual_effect") diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 72c945ef29f6..68b894b1e6a9 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -60,6 +60,7 @@ var/list/filter_data #ifdef REFERENCE_TRACKING + var/running_find_references /// When was this datum last touched by a reftracker? /// If this value doesn't match with the start of the search /// We know this datum has never been seen before, and we should check it @@ -72,6 +73,10 @@ #endif #endif + // If we have called dump_harddel_info already. Used to avoid duped calls (since we call it immediately in some cases on failure to process) + // Create and destroy is weird and I wanna cover my bases + var/harddel_deets_dumped = FALSE + #ifdef DATUMVAR_DEBUGGING_MODE var/list/cached_vars #endif @@ -101,7 +106,7 @@ * * Returns [QDEL_HINT_QUEUE] */ -/datum/proc/Destroy(force=FALSE, ...) +/datum/proc/Destroy(force = FALSE) SHOULD_CALL_PARENT(TRUE) SHOULD_NOT_SLEEP(TRUE) tag = null @@ -125,13 +130,14 @@ //BEGIN: ECS SHIT var/list/dc = _datum_components if(dc) - var/all_components = dc[/datum/component] - if(length(all_components)) - for(var/datum/component/component as anything in all_components) - qdel(component, FALSE, TRUE) - else - var/datum/component/C = all_components - qdel(C, FALSE, TRUE) + for(var/component_key in dc) + var/component_or_list = dc[component_key] + if(islist(component_or_list)) + for(var/datum/component/component as anything in component_or_list) + qdel(component, FALSE) + else + var/datum/component/C = component_or_list + qdel(C, FALSE) dc.Cut() _clear_signal_refs() @@ -399,3 +405,9 @@ var/atom/atom_cast = src // filters only work with images or atoms. filter_data = null atom_cast.filters = null + +/// Return text from this proc to provide extra context to hard deletes that happen to it +/// Optional, you should use this for cases where replication is difficult and extra context is required +/// Can be called more then once per object, use harddel_deets_dumped to avoid duplicate calls (I am so sorry) +/datum/proc/dump_harddel_info() + return diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 666711762c19..ce0e6169a73d 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -64,7 +64,7 @@ if(ishuman(src)) var/mob/living/carbon/human/infecting_human = src - if(infecting_human.reagents.has_reagent(/datum/reagent/medicine/antipathogenic/spaceacillin) && prob(75)) + if(HAS_TRAIT(infecting_human, TRAIT_VIRUS_RESISTANCE) && prob(75)) return switch(target_zone) @@ -95,10 +95,8 @@ disease.try_infect(src) /mob/living/proc/AirborneContractDisease(datum/disease/disease, force_spread) - if(ishuman(src)) - var/mob/living/carbon/human/infecting_human = src - if(infecting_human.reagents.has_reagent(/datum/reagent/medicine/antipathogenic/spaceacillin) && prob(75)) - return + if(HAS_TRAIT(src, TRAIT_VIRUS_RESISTANCE) && prob(75)) + return if(((disease.spread_flags & DISEASE_SPREAD_AIRBORNE) || force_spread) && prob((50*disease.spreading_modifier) - 1)) ForceContractDisease(disease) diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 4bf7af82207c..129e9b9b5fb5 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -69,7 +69,7 @@ GLOBAL_LIST_INIT(inspectable_diseases, list()) ///Proc to process the disease and decide on whether to advance, cure or make the sympthoms appear. Returns a boolean on whether to continue acting on the symptoms or not. /datum/disease/proc/stage_act(seconds_per_tick, times_fired) - var/slowdown = affected_mob.reagents.has_reagent(/datum/reagent/medicine/antipathogenic/spaceacillin) ? 0.5 : 1 // spaceacillin slows stage speed by 50% + var/slowdown = HAS_TRAIT(affected_mob, TRAIT_VIRUS_RESISTANCE) ? 0.5 : 1 // spaceacillin slows stage speed by 50% if(has_cure()) if(SPT_PROB(cure_chance, seconds_per_tick)) @@ -106,7 +106,7 @@ GLOBAL_LIST_INIT(inspectable_diseases, list()) if(!(spread_flags & DISEASE_SPREAD_AIRBORNE) && !force_spread) return - if(affected_mob.reagents.has_reagent(/datum/reagent/medicine/antipathogenic/spaceacillin) || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10))) + if(HAS_TRAIT(affected_mob, TRAIT_VIRUS_RESISTANCE) || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10))) return affected_mob.spread_airborne_diseases() diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 3440839745a4..a40c0097eb10 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -512,6 +512,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) return /mob/living/carbon/has_dna() + RETURN_TYPE(/datum/dna) return dna /// Returns TRUE if the mob is allowed to mutate via its DNA, or FALSE if otherwise. diff --git a/code/datums/elements/ai_held_item.dm b/code/datums/elements/ai_held_item.dm index 865be1a1d72f..3eda1975e250 100644 --- a/code/datums/elements/ai_held_item.dm +++ b/code/datums/elements/ai_held_item.dm @@ -20,7 +20,7 @@ /// Returns the item held in a mob's blackboard, if it has one /datum/element/ai_held_item/proc/get_held_item(mob/living/source) - return source.ai_controller.blackboard[BB_SIMPLE_CARRY_ITEM] + return source.ai_controller?.blackboard[BB_SIMPLE_CARRY_ITEM] /// Someone's interacting with us by hand, if we have an item and like them we'll hand it over /datum/element/ai_held_item/proc/on_click(mob/living/source, mob/living/user) @@ -29,7 +29,7 @@ if ((user.istate & ISTATE_HARM)) return - if (!(user in source.ai_controller.blackboard[BB_FRIENDS_LIST])) + if (!(user in source.ai_controller?.blackboard[BB_FRIENDS_LIST])) return // We don't care about this bozo var/obj/item/carried_item = get_held_item(source) if (!carried_item) @@ -37,7 +37,7 @@ source.visible_message(span_danger("[source] drops [carried_item] at [user]'s feet!")) carried_item.forceMove(get_turf(user)) - source.ai_controller.clear_blackboard_key(BB_SIMPLE_CARRY_ITEM) + source.ai_controller?.clear_blackboard_key(BB_SIMPLE_CARRY_ITEM) /// If our held item is removed from our atom then take it off the blackboard /datum/element/ai_held_item/proc/atom_exited(mob/living/source, atom/movable/gone) @@ -45,7 +45,7 @@ var/obj/item/carried_item = get_held_item(source) if (carried_item == gone) - source.ai_controller.clear_blackboard_key(BB_SIMPLE_CARRY_ITEM) + source.ai_controller?.clear_blackboard_key(BB_SIMPLE_CARRY_ITEM) /// Report that we're holding an item. /datum/element/ai_held_item/proc/on_examined(mob/living/source, mob/user, list/examine_text) @@ -66,4 +66,4 @@ ol_yeller.visible_message(span_danger("[ol_yeller] drops [carried_item] as [ol_yeller.p_they()] die[ol_yeller.p_s()].")) carried_item.forceMove(ol_yeller.drop_location()) - ol_yeller.ai_controller.clear_blackboard_key(BB_SIMPLE_CARRY_ITEM) + ol_yeller.ai_controller?.clear_blackboard_key(BB_SIMPLE_CARRY_ITEM) diff --git a/code/datums/elements/bugkiller_reagent.dm b/code/datums/elements/bugkiller_reagent.dm new file mode 100644 index 000000000000..57f2ae65d920 --- /dev/null +++ b/code/datums/elements/bugkiller_reagent.dm @@ -0,0 +1,88 @@ +/// Simple element to be applied to reagents +/// When those reagents are exposed to mobs with the bug biotype, causes toxins damage +/// If this delivers the killing blow on a non-humanoid mob, it applies a special status effect that does a funny animation +/datum/element/bugkiller_reagent + +/datum/element/bugkiller_reagent/Attach(datum/target) + . = ..() + if(!istype(target, /datum/reagent)) + return + + RegisterSignal(target, COMSIG_REAGENT_EXPOSE_MOB, PROC_REF(on_expose)) + +/datum/element/bugkiller_reagent/Detach(datum/source, ...) + . = ..() + UnregisterSignal(source, COMSIG_REAGENT_EXPOSE_MOB) + +/datum/element/bugkiller_reagent/proc/on_expose( + datum/reagent/source, + mob/living/exposed_mob, + methods = TOUCH, + reac_volume, + show_message = TRUE, + touch_protection = 0, +) + SIGNAL_HANDLER + + if(exposed_mob.stat == DEAD) + return + if(!(exposed_mob.mob_biotypes & MOB_BUG)) + return + + // capping damage so splashing a beaker on a moth is not an instant crit + var/damage = min(round(0.4 * reac_volume * (1 - touch_protection), 0.1), 12) + if(damage < 1) + return + + if(!(exposed_mob.mob_biotypes & MOB_HUMANOID) && exposed_mob.health <= damage) + // no-ops if they are already in the process of dying + exposed_mob.apply_status_effect(/datum/status_effect/bugkiller_death) + return + + if(exposed_mob.apply_damage(damage, TOX) && damage >= 6) + // yes i know it's not burn damage. the burning is on the inside. + to_chat(exposed_mob, span_danger("You feel a burning sensation.")) + +/// If bugkiller delivers a lethal dosage, applies this effect which does a funny animation THEN kills 'em +/// Also makes it so simplemobs / basicmobs no longer delete when they die (if they do) +/datum/status_effect/bugkiller_death + id = "bugkiller_death" + alert_type = /atom/movable/screen/alert/status_effect/bugkiller_death + /// How many times the spasm loops + var/spasm_loops = 0 + +/datum/status_effect/bugkiller_death/on_creation(mob/living/new_other, duration = 4 SECONDS) + src.duration = duration + src.spasm_loops = ROUND_UP(duration / 0.8) // one spasm ~= 0.8 deciseconds (yes deciseconds) + return ..() + +/datum/status_effect/bugkiller_death/on_apply() + if(owner.stat == DEAD) + return FALSE + playsound(owner, 'sound/voice/human/malescream_1.ogg', 25, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, frequency = 5) + to_chat(owner, span_userdanger("The world begins to go dark...")) + owner.spasm_animation(spasm_loops) + owner.adjust_eye_blur(duration) + return TRUE + +/datum/status_effect/bugkiller_death/on_remove() + if(owner.stat == DEAD || QDELETED(owner)) + return + + if(isbasicmob(owner)) + var/mob/living/basic/basic_owner = owner + basic_owner.basic_mob_flags &= ~DEL_ON_DEATH + basic_owner.basic_mob_flags |= FLIP_ON_DEATH + + if(isanimal(owner)) + var/mob/living/simple_animal/simple_owner = owner + simple_owner.del_on_death = FALSE + simple_owner.flip_on_death = TRUE + + owner.investigate_log("died to being sprayed with bugkiller.", INVESTIGATE_DEATHS) + owner.death() + +/atom/movable/screen/alert/status_effect/bugkiller_death + name = "Overwhelming Toxicity" + desc = "Don't go into the light!" + icon_state = "paralysis" diff --git a/code/datums/elements/deliver_first.dm b/code/datums/elements/deliver_first.dm index 7587c437b769..7e525e61849c 100644 --- a/code/datums/elements/deliver_first.dm +++ b/code/datums/elements/deliver_first.dm @@ -28,6 +28,7 @@ RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) RegisterSignal(target, COMSIG_ATOM_EMAG_ACT, PROC_REF(on_emag)) RegisterSignal(target, COMSIG_CLOSET_POST_OPEN, PROC_REF(on_post_open)) + RegisterSignal(target, COMSIG_FILTER_CHECK, PROC_REF(on_filter_check)) ADD_TRAIT(target, TRAIT_BANNED_FROM_CARGO_SHUTTLE, REF(src)) //registers pre_open when appropriate area_check(target) @@ -102,4 +103,9 @@ playsound(src, SFX_SPARKS, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) target.RemoveElement(/datum/element/deliver_first, goal_area_type, payment) +/datum/element/deliver_first/proc/on_filter_check(obj/structure/closet/target, list/filter_locations) + var/name = departmental_destination_to_tag(goal_area_type) + if(name in filter_locations) + return TRUE + return FALSE #undef DENY_SOUND_COOLDOWN diff --git a/code/datums/elements/elevation.dm b/code/datums/elements/elevation.dm index f17198d84ec0..2f8bd87d6b3f 100644 --- a/code/datums/elements/elevation.dm +++ b/code/datums/elements/elevation.dm @@ -151,8 +151,8 @@ /datum/element/elevation_core/proc/on_initialized_on(turf/source, atom/movable/spawned) SIGNAL_HANDLER - if(isliving(spawned)) - elevate_mob(spawned) + if(isliving(spawned) && !HAS_TRAIT(spawned, TRAIT_ON_ELEVATED_SURFACE)) + on_entered(entered = spawned) /datum/element/elevation_core/proc/on_exited(turf/source, atom/movable/gone) SIGNAL_HANDLER diff --git a/code/datums/elements/loomable.dm b/code/datums/elements/loomable.dm index 070bc47f5ca7..6886cfc6cec5 100644 --- a/code/datums/elements/loomable.dm +++ b/code/datums/elements/loomable.dm @@ -7,7 +7,7 @@ /// How much of item do we need to loom, will be ignored if item isnt a stack var/required_amount /// What thing we look for triggering the loom process (usually a loom) - var/obj/target_type + var/atom/loom_type /// What verb best fits the action of processing whatever the item is, for example "spun [thing]" var/process_completion_verb /// If the target needs to be anchored @@ -19,7 +19,7 @@ obj/item/target, resulting_atom = /obj/item/stack/sheet/cloth, required_amount = 4, - target_type = /obj/structure/loom, + loom_type = /obj/structure/loom, process_completion_verb = "spun", target_needs_anchoring = TRUE, loom_time = 1 SECONDS @@ -30,7 +30,7 @@ return ELEMENT_INCOMPATIBLE src.resulting_atom = resulting_atom src.required_amount = required_amount - src.target_type = target_type + src.loom_type = loom_type src.process_completion_verb = process_completion_verb src.target_needs_anchoring = target_needs_anchoring src.loom_time = loom_time @@ -45,13 +45,13 @@ /datum/element/loomable/proc/on_examine(obj/item/source, mob/examiner, list/examine_list) SIGNAL_HANDLER - examine_list += span_notice("You could probably process [source] at a [initial(target_type.name)].") + examine_list += span_notice("You could probably process [source] at \a [initial(loom_type.name)].") /// Checks if the thing we clicked on can be used as a loom, and if we can actually loom the source at present (an example being does the stack have enough in it (if its a stack)) /datum/element/loomable/proc/try_and_loom_me(obj/item/source, atom/target, mob/living/user) SIGNAL_HANDLER - if(!istype(target, target_type)) + if(!istype(target, loom_type)) return if(ismovable(target)) @@ -71,13 +71,33 @@ /// If a do_after of the specified loom_time passes, will create a new one of resulting_atom and either delete the item, or .use the required amount if its a stack /datum/element/loomable/proc/loom_me(obj/item/source, mob/living/user, atom/target) - if(!do_after(user, loom_time, target)) - return - - var/new_thing = new resulting_atom(target.drop_location()) - user.balloon_alert_to_viewers("[process_completion_verb] [new_thing]") + //this allows us to count the amount of times it has successfully used the stack's required amount + var/spawning_amount = 0 if(isstack(source)) var/obj/item/stack/stack_we_use = source - stack_we_use.use(required_amount) + while(stack_we_use.amount >= required_amount) + if(!do_after(user, loom_time, target)) + break + + if(!stack_we_use.use(required_amount)) + user.balloon_alert(user, "need [required_amount] of [source]!") + break + + spawning_amount++ + else + if(!do_after(user, loom_time, target)) + user.balloon_alert(user, "interrupted!") + return + qdel(source) + spawning_amount++ + + if(spawning_amount == 0) + return + + var/new_thing + for(var/repeated in 1 to spawning_amount) + new_thing = new resulting_atom(target.drop_location()) + + user.balloon_alert_to_viewers("[process_completion_verb] [new_thing]") diff --git a/code/datums/greyscale/_greyscale_config.dm b/code/datums/greyscale/_greyscale_config.dm index ff4d029e7766..4f64f8e1f2ae 100644 --- a/code/datums/greyscale/_greyscale_config.dm +++ b/code/datums/greyscale/_greyscale_config.dm @@ -63,7 +63,7 @@ if(!name) stack_trace("Greyscale config object [DebugName()] is missing a name, make sure `name` has been assigned a value.") -/datum/greyscale_config/Destroy(force, ...) +/datum/greyscale_config/Destroy(force) if(!force) return QDEL_HINT_LETMELIVE return ..() diff --git a/code/datums/greyscale/config_types/greyscale_configs.dm b/code/datums/greyscale/config_types/greyscale_configs.dm index 29c5d1eb0ff7..5feff2c8bd24 100644 --- a/code/datums/greyscale/config_types/greyscale_configs.dm +++ b/code/datums/greyscale/config_types/greyscale_configs.dm @@ -698,6 +698,18 @@ icon_file = 'icons/mob/clothing/under/dress.dmi' json_config = 'code/datums/greyscale/json_configs/sundress_worn.json' +//MONKESTATION ADDITION START +/datum/greyscale_config/ballgown + name = "Ballgown" + icon_file = 'icons/obj/clothing/under/dress.dmi' + json_config = 'code/datums/greyscale/json_configs/ballgown.json' + +/datum/greyscale_config/ballgown_worn + name = "Worn Ballgown" + icon_file = 'icons/mob/clothing/under/dress.dmi' + json_config = 'code/datums/greyscale/json_configs/ballgown_worn.json' +//MONKESTATION ADDITION END + /datum/greyscale_config/beanie name = "Beanie" icon_file = 'icons/obj/clothing/head/beanie.dmi' @@ -1277,3 +1289,13 @@ name = "Worn Playbunny Ears" icon_file = 'monkestation/icons/mob/clothing/head_32x48.dmi' json_config = 'code/datums/greyscale/json_configs/playbunny_ears_worn.json' + +/datum/greyscale_config/big_manipulator + name = "Big Manipulator" + icon_file = 'monkestation/code/modules/factory_type_beat/icons/big_manipulator_core.dmi' + json_config = 'code/datums/greyscale/json_configs/big_manipulator.json' + +/datum/greyscale_config/manipulator_hand + name = "Manipulator Hand" + icon_file = 'monkestation/code/modules/factory_type_beat/icons/big_manipulator_hand.dmi' + json_config = 'code/datums/greyscale/json_configs/manipulator_hand.json' diff --git a/code/datums/greyscale/json_configs/ballgown.json b/code/datums/greyscale/json_configs/ballgown.json new file mode 100644 index 000000000000..975e138473b2 --- /dev/null +++ b/code/datums/greyscale/json_configs/ballgown.json @@ -0,0 +1,24 @@ +{ + "ballgown": [ + { + "type": "icon_state", + "icon_state": "ballgown_skirt1", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "ballgown_skirt2", + "blend_mode": "overlay", + "color_ids": [ 2 ] + }, + { + "type": "icon_state", + "icon_state": "ballgown_skirt3", + "blend_mode": "overlay", + "color_ids": [ 3 ] + } + + ] + +} diff --git a/code/datums/greyscale/json_configs/ballgown_worn.json b/code/datums/greyscale/json_configs/ballgown_worn.json new file mode 100644 index 000000000000..975e138473b2 --- /dev/null +++ b/code/datums/greyscale/json_configs/ballgown_worn.json @@ -0,0 +1,24 @@ +{ + "ballgown": [ + { + "type": "icon_state", + "icon_state": "ballgown_skirt1", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "ballgown_skirt2", + "blend_mode": "overlay", + "color_ids": [ 2 ] + }, + { + "type": "icon_state", + "icon_state": "ballgown_skirt3", + "blend_mode": "overlay", + "color_ids": [ 3 ] + } + + ] + +} diff --git a/code/datums/greyscale/json_configs/big_manipulator.json b/code/datums/greyscale/json_configs/big_manipulator.json new file mode 100644 index 000000000000..c7f96bac2aba --- /dev/null +++ b/code/datums/greyscale/json_configs/big_manipulator.json @@ -0,0 +1,15 @@ +{ + "core": [ + { + "type": "icon_state", + "icon_state": "core", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "core_colour", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/greyscale/json_configs/manipulator_hand.json b/code/datums/greyscale/json_configs/manipulator_hand.json new file mode 100644 index 000000000000..be7c96df62b6 --- /dev/null +++ b/code/datums/greyscale/json_configs/manipulator_hand.json @@ -0,0 +1,15 @@ +{ + "hand": [ + { + "type": "icon_state", + "icon_state": "hand", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "hand_colour", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/greyscale/json_configs/mutant_organs.json b/code/datums/greyscale/json_configs/mutant_organs.json index 93dd66c9e64c..2e4aa1da8842 100644 --- a/code/datums/greyscale/json_configs/mutant_organs.json +++ b/code/datums/greyscale/json_configs/mutant_organs.json @@ -1,4 +1,18 @@ { + "appendix": [ + { + "type": "icon_state", + "icon_state": "appendix", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "appendix_insides", + "blend_mode": "overlay", + "color_ids": [ 2 ] + } + ], "brain": [ { "type": "icon_state", diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 6ea1a8121f09..bee48a2bb493 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -65,8 +65,9 @@ return FALSE if(!forced) - if(!check_teleport_valid(teleatom, destination, channel)) - teleatom.balloon_alert(teleatom, "something holds you back!") + if(!check_teleport_valid(teleatom, destturf, channel, original_destination = destination)) + if(ismob(teleatom)) + teleatom.balloon_alert(teleatom, "something holds you back!") return FALSE if(isobserver(teleatom)) @@ -184,7 +185,7 @@ return pick(turfs) /// Validates that the teleport being attempted is valid or not -/proc/check_teleport_valid(atom/teleported_atom, atom/destination, channel) +/proc/check_teleport_valid(atom/teleported_atom, atom/destination, channel, atom/original_destination = null) var/area/origin_area = get_area(teleported_atom) var/turf/origin_turf = get_turf(teleported_atom) @@ -194,6 +195,11 @@ if(HAS_TRAIT(teleported_atom, TRAIT_NO_TELEPORT)) return FALSE + // prevent unprecise teleports from landing you outside of the destination's reserved area + if(is_reserved_level(destination_turf.z) && istype(original_destination) \ + && SSmapping.get_reservation_from_turf(destination_turf) != SSmapping.get_reservation_from_turf(get_turf(original_destination))) + return FALSE + if((origin_area.area_flags & NOTELEPORT) || (destination_area.area_flags & NOTELEPORT)) return FALSE diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index 78ec5f133066..2a93ac55ed05 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -34,10 +34,10 @@ ///calls from a head of staff autoconnect, if the receiving pad is not secure. var/head_call = FALSE -//creates a holocall made by `caller` from `calling_pad` to `callees` -/datum/holocall/New(mob/living/caller, obj/machinery/holopad/calling_pad, list/callees, elevated_access = FALSE) +//creates a holocall made by `caller_user` from `calling_pad` to `callees` +/datum/holocall/New(mob/living/caller_user, obj/machinery/holopad/calling_pad, list/callees, elevated_access = FALSE) call_start_time = world.time - user = caller + user = caller_user calling_pad.outgoing_call = src calling_holopad = calling_pad head_call = elevated_access diff --git a/code/datums/hud.dm b/code/datums/hud.dm index b7d71cc1760a..6bf2d5fc20ad 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -20,6 +20,7 @@ GLOBAL_LIST_INIT(huds, list( DATA_HUD_FAN = new/datum/atom_hud/data/human/fan_hud(), DATA_HUD_PERMIT = new/datum/atom_hud/data/human/permit(), //monkestation edit DATA_HUD_SENSORS = new/datum/atom_hud/data/human/medical/basic/sensors(), //monkestation edit - CYBERNETICS + DATA_HUD_MOOD = new/datum/atom_hud/mood(), //monkestation edit )) /datum/atom_hud diff --git a/code/datums/id_trim/jobs.dm b/code/datums/id_trim/jobs.dm index cb3be26cc835..358a0c5540e6 100644 --- a/code/datums/id_trim/jobs.dm +++ b/code/datums/id_trim/jobs.dm @@ -179,32 +179,6 @@ ) job = /datum/job/bitrunner -/datum/id_trim/job/blueshield - assignment = "Blueshield" - trim_state = "trim_blueshield" - department_color = COLOR_COMMAND_BLUE - subdepartment_color = COLOR_SECURITY_RED - sechud_icon_state = SECHUD_BLUESHIELD - minimal_access = list( - ACCESS_MEDICAL, - ACCESS_SCIENCE, - ACCESS_SERVICE, - ACCESS_CONSTRUCTION, - ACCESS_SECURITY, - ACCESS_BRIG_ENTRANCE, - ACCESS_COMMAND, - ACCESS_MAINT_TUNNELS, - ACCESS_MINERAL_STOREROOM, - ACCESS_WEAPONS, - ) - extra_access = list( - ) - template_access = list( - ACCESS_CAPTAIN, - ACCESS_CHANGE_IDS - ) - job = /datum/job/blueshield - /datum/id_trim/job/botanist assignment = "Botanist" trim_state = "trim_botanist" diff --git a/code/datums/interactions/interaction_mode.dm b/code/datums/interactions/interaction_mode.dm index d5d902e0f39e..0bcbc4b21520 100644 --- a/code/datums/interactions/interaction_mode.dm +++ b/code/datums/interactions/interaction_mode.dm @@ -26,7 +26,7 @@ GLOBAL_REAL_VAR(list/available_interaction_modes = list( if (owner?.mob?.hud_used?.has_interaction_ui) owner.mob.hud_used.static_inventory += procure_hud(owner.mob, owner.mob.hud_used) -/datum/interaction_mode/Destroy(force, ...) +/datum/interaction_mode/Destroy(force) owner = null if (!QDELETED(UI)) UI.hud?.static_inventory -= UI diff --git a/code/datums/lazy_template.dm b/code/datums/lazy_template.dm index ede97eb7b8a9..142cb1e04f1b 100644 --- a/code/datums/lazy_template.dm +++ b/code/datums/lazy_template.dm @@ -18,7 +18,7 @@ reservations = list() ..() -/datum/lazy_template/Destroy(force, ...) +/datum/lazy_template/Destroy(force) if(!force) stack_trace("Something is trying to delete [type]") return QDEL_HINT_LETMELIVE diff --git a/code/datums/mapgen/CaveGenerator.dm b/code/datums/mapgen/CaveGenerator.dm index ad27001ff7a9..4005427637ec 100644 --- a/code/datums/mapgen/CaveGenerator.dm +++ b/code/datums/mapgen/CaveGenerator.dm @@ -95,6 +95,7 @@ if(!weighted_feature_spawn_list) weighted_feature_spawn_list = list( /obj/structure/geyser/random = 1, + /obj/structure/ore_vent/random = 1, ) feature_spawn_list = expand_weights(weighted_feature_spawn_list) open_turf_types = expand_weights(weighted_open_turf_types) @@ -217,6 +218,7 @@ var/megas_allowed = (generate_in.area_flags & MEGAFAUNA_SPAWN_ALLOWED) && length(megafauna_spawn_list) var/start_time = REALTIMEOFDAY + SSore_generation.ore_vent_minerals = (SSore_generation.ore_vent_minerals_default).Copy() for(var/turf/target_turf as anything in turfs) if(!(target_turf.type in open_turf_types)) //only put stuff on open turfs we generated, so closed walls and rivers and stuff are skipped diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index ec6920edf310..df8369a707e1 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -8,6 +8,7 @@ allow_temp_override = FALSE help_verb = /mob/living/proc/sleeping_carp_help display_combos = TRUE + COOLDOWN_DECLARE(block_cooldown) var/list/scarp_traits = list(TRAIT_NOGUNS, TRAIT_HARDLY_WOUNDED, TRAIT_NODISMEMBER, TRAIT_HEAVY_SLEEPER) /datum/martial_art/the_sleeping_carp/teach(mob/living/target, make_temporary = FALSE) @@ -160,6 +161,9 @@ return ..() /datum/martial_art/the_sleeping_carp/proc/can_deflect(mob/living/carp_user) + if(!COOLDOWN_FINISHED(src, block_cooldown)) + if(prob(70)) + return FALSE if(!can_use(carp_user)) return FALSE if(!(carp_user.istate & ISTATE_HARM)) // monke edit: istates/intents @@ -185,7 +189,9 @@ span_danger("[carp_user] effortlessly swats [hitting_projectile] aside! [carp_user.p_They()] can block bullets with [carp_user.p_their()] bare hands!"), span_userdanger("You deflect [hitting_projectile]!"), ) + COOLDOWN_START(src, block_cooldown, 3 SECONDS) playsound(carp_user, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), vol = 75, vary = TRUE) + carp_user.stamina?.adjust(-50) hitting_projectile.firer = carp_user hitting_projectile.set_angle(rand(0, 360))//SHING return COMPONENT_BULLET_PIERCED diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm index b062651b8936..aea7332fb184 100644 --- a/code/datums/materials/_material.dm +++ b/code/datums/materials/_material.dm @@ -29,6 +29,8 @@ Simple datum which is instanced once per type and is used for every object of sa var/list/categories = list() ///The type of sheet this material creates. This should be replaced as soon as possible by greyscale sheets var/sheet_type + /// What type of ore is this material associated with? Used for mining, and not every material has one. + var/obj/item/ore_type ///This is a modifier for force, and resembles the strength of the material var/strength_modifier = 1 ///This is a modifier for integrity, and resembles the strength of the material @@ -51,6 +53,10 @@ Simple datum which is instanced once per type and is used for every object of sa var/obj/item/shard_type ///What type of debris the tile will leave behind when shattered. var/obj/effect/decal/debris_type + /// How likely this mineral is to be found in a boulder during mining. + var/mineral_rarity = MATERIAL_RARITY_COMMON + /// How many points per units of ore does this grant? + var/points_per_unit = 1 / SHEET_MATERIAL_AMOUNT /** Handles initializing the material. * diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm index 0760d493ed19..a0139337015a 100644 --- a/code/datums/materials/basemats.dm +++ b/code/datums/materials/basemats.dm @@ -7,6 +7,9 @@ categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE) sheet_type = /obj/item/stack/sheet/iron value_per_unit = 0.0025 + ore_type = /obj/item/stack/ore/iron + mineral_rarity = MATERIAL_RARITY_COMMON + points_per_unit = 1 / SHEET_MATERIAL_AMOUNT /datum/material/iron/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5) @@ -28,6 +31,9 @@ value_per_unit = 0.0025 beauty_modifier = 0.05 armor_modifiers = list(MELEE = 0.2, BULLET = 0.2, ENERGY = 1, BIO = 0.2, FIRE = 1, ACID = 0.2) + ore_type = /obj/item/stack/ore/glass + mineral_rarity = MATERIAL_RARITY_COMMON + points_per_unit = 1 / SHEET_MATERIAL_AMOUNT /datum/material/glass/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5, sharpness = TRUE) //cronch @@ -48,6 +54,9 @@ Unless you know what you're doing, only use the first three numbers. They're in sheet_type = /obj/item/stack/sheet/mineral/silver value_per_unit = 0.025 beauty_modifier = 0.075 + ore_type = /obj/item/stack/ore/silver + mineral_rarity = MATERIAL_RARITY_SEMIPRECIOUS + points_per_unit = 16 / SHEET_MATERIAL_AMOUNT /datum/material/silver/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5) @@ -65,6 +74,9 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.0625 beauty_modifier = 0.15 armor_modifiers = list(MELEE = 1.1, BULLET = 1.1, LASER = 1.15, ENERGY = 1.15, BOMB = 1, BIO = 1, FIRE = 0.7, ACID = 1.1) + ore_type = /obj/item/stack/ore/gold + mineral_rarity = MATERIAL_RARITY_PRECIOUS + points_per_unit = 18 / SHEET_MATERIAL_AMOUNT /datum/material/gold/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5) @@ -83,6 +95,9 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.25 beauty_modifier = 0.3 armor_modifiers = list(MELEE = 1.3, BULLET = 1.3, LASER = 0.6, ENERGY = 1, BOMB = 1.2, BIO = 1, FIRE = 1, ACID = 1) + ore_type = /obj/item/stack/ore/diamond + mineral_rarity = MATERIAL_RARITY_RARE + points_per_unit = 50 / SHEET_MATERIAL_AMOUNT /datum/material/diamond/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(15, BRUTE, BODY_ZONE_HEAD, wound_bonus = 7) @@ -99,6 +114,9 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.05 beauty_modifier = 0.3 //It shines so beautiful armor_modifiers = list(MELEE = 1.5, BULLET = 1.4, LASER = 0.5, ENERGY = 0.5, FIRE = 1, ACID = 1) + ore_type = /obj/item/stack/ore/uranium + mineral_rarity = MATERIAL_RARITY_SEMIPRECIOUS + points_per_unit = 30 / SHEET_MATERIAL_AMOUNT /datum/material/uranium/on_applied(atom/source, amount, material_flags) . = ..() @@ -134,6 +152,9 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.1 beauty_modifier = 0.15 armor_modifiers = list(MELEE = 1.4, BULLET = 0.7, ENERGY = 1.2, BIO = 1.2, ACID = 0.5) + ore_type = /obj/item/stack/ore/plasma + mineral_rarity = MATERIAL_RARITY_PRECIOUS + points_per_unit = 15 / SHEET_MATERIAL_AMOUNT /datum/material/plasma/on_applied(atom/source, amount, material_flags) . = ..() @@ -166,6 +187,9 @@ Unless you know what you're doing, only use the first three numbers. They're in beauty_modifier = 0.5 sheet_type = /obj/item/stack/sheet/bluespace_crystal value_per_unit = 0.15 + ore_type = /obj/item/stack/ore/bluespace_crystal + mineral_rarity = MATERIAL_RARITY_RARE + points_per_unit = 50 / SHEET_MATERIAL_AMOUNT /datum/material/bluespace/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.reagents.add_reagent(/datum/reagent/bluespace, rand(5, 8)) @@ -183,6 +207,9 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.5 beauty_modifier = 0.5 armor_modifiers = list(BOMB = 100, FIRE = 10) //Clowns cant be blown away. + ore_type = /obj/item/stack/ore/bananium + mineral_rarity = MATERIAL_RARITY_UNDISCOVERED + points_per_unit = 60 / SHEET_MATERIAL_AMOUNT /datum/material/bananium/on_applied(atom/source, amount, material_flags) . = ..() @@ -211,6 +238,8 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.0625 beauty_modifier = 0.05 armor_modifiers = list(MELEE = 1.35, BULLET = 1.3, LASER = 1.3, ENERGY = 1.25, BOMB = 1.25, BIO = 1, FIRE = 0.7, ACID = 1) + ore_type = /obj/item/stack/ore/titanium + mineral_rarity = MATERIAL_RARITY_SEMIPRECIOUS /datum/material/titanium/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(15, BRUTE, BODY_ZONE_HEAD, wound_bonus = 7) @@ -227,6 +256,8 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.3 beauty_modifier = 0.5 armor_modifiers = list(MELEE = 1.35, BULLET = 2, LASER = 0.5, ENERGY = 1.25, BOMB = 1.25, BIO = 1, FIRE = 1.4, ACID = 1) //rune is weak against magic lasers but strong against bullets. This is the combat triangle. + mineral_rarity = MATERIAL_RARITY_UNDISCOVERED + points_per_unit = 100 / SHEET_MATERIAL_AMOUNT /datum/material/runite/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(20, BRUTE, BODY_ZONE_HEAD, wound_bonus = 10) @@ -244,6 +275,9 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.0125 beauty_modifier = -0.01 armor_modifiers = list(MELEE = 1.5, BULLET = 1.1, LASER = 0.3, ENERGY = 0.5, BOMB = 1, BIO = 1, FIRE = 1.1, ACID = 1) + ore_type = /obj/item/stack/ore/slag + mineral_rarity = MATERIAL_RARITY_UNDISCOVERED //Nobody's found oil on lavaland yet. + points_per_unit = 4 / SHEET_MATERIAL_AMOUNT /datum/material/plastic/on_accidental_mat_consumption(mob/living/carbon/eater, obj/item/food) eater.reagents.add_reagent(/datum/reagent/plastic_polymers, rand(6, 8)) @@ -303,6 +337,8 @@ Unless you know what you're doing, only use the first three numbers. They're in value_per_unit = 0.25 beauty_modifier = 0.4 armor_modifiers = list(MELEE = 1.5, BULLET = 1.5, LASER = 1.3, ENERGY = 1.3, BOMB = 1, BIO = 1, FIRE = 2.5, ACID = 1) + mineral_rarity = MATERIAL_RARITY_UNDISCOVERED //Doesn't naturally spawn on lavaland. + points_per_unit = 100 / SHEET_MATERIAL_AMOUNT /datum/material/adamantine/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item) victim.apply_damage(20, BRUTE, BODY_ZONE_HEAD, wound_bonus = 10) @@ -320,6 +356,8 @@ Unless you know what you're doing, only use the first three numbers. They're in strength_modifier = 1.2 armor_modifiers = list(MELEE = 1.5, BULLET = 1.5, LASER = 1.5, ENERGY = 1.5, BOMB = 1.5, BIO = 1.5, FIRE = 1.5, ACID = 1.5) beauty_modifier = 0.5 + mineral_rarity = MATERIAL_RARITY_UNDISCOVERED //Doesn't naturally spawn on lavaland. + points_per_unit = 100 / SHEET_MATERIAL_AMOUNT /* monkestation edit: this is given anyways by [/datum/material_trait/magical] /datum/material/mythril/on_applied_obj(atom/source, amount, material_flags) diff --git a/code/datums/materials/meat.dm b/code/datums/materials/meat.dm index 162f0f2643e8..b9000dfd173c 100644 --- a/code/datums/materials/meat.dm +++ b/code/datums/materials/meat.dm @@ -18,25 +18,45 @@ /datum/material/meat/on_removed(atom/source, amount, material_flags) . = ..() qdel(source.GetComponent(/datum/component/edible)) + qdel(source.GetComponent(/datum/component/blood_walk)) + qdel(source.GetComponent(/datum/component/bloody_spreader)) /datum/material/meat/on_applied_obj(obj/O, amount, material_flags) . = ..() - make_edible(O, amount, material_flags) + make_meaty(O, amount, material_flags) /datum/material/meat/on_applied_turf(turf/T, amount, material_flags) . = ..() - make_edible(T, amount, material_flags) + make_meaty(T, amount, material_flags) -/datum/material/meat/proc/make_edible(atom/source, amount, material_flags) +/datum/material/meat/proc/make_meaty(atom/source, amount, material_flags) var/nutriment_count = 3 * (amount / SHEET_MATERIAL_AMOUNT) var/oil_count = 2 * (amount / SHEET_MATERIAL_AMOUNT) source.AddComponent(/datum/component/edible, \ initial_reagents = list(/datum/reagent/consumable/nutriment = nutriment_count, /datum/reagent/consumable/cooking_oil = oil_count), \ foodtypes = RAW | MEAT | GROSS, \ eat_time = 3 SECONDS, \ - tastes = list("Fleshy")) + tastes = list("Meaty")) + source.AddComponent( + /datum/component/bloody_spreader,\ + blood_left = (nutriment_count + oil_count) * 0.3,\ + blood_dna = list("meaty DNA" = "MT-"),\ + diseases = null,\ + ) + + // Turfs can't handle the meaty goodness of blood walk. + if(!ismovable(source)) + return + + source.AddComponent( + /datum/component/blood_walk,\ + blood_type = /obj/effect/decal/cleanable/blood,\ + blood_spawn_chance = 35,\ + max_blood = (nutriment_count + oil_count) * 0.3,\ + ) + /datum/material/meat/mob_meat init_flags = MATERIAL_INIT_BESPOKE var/subjectname = "" diff --git a/code/datums/mclink.dm b/code/datums/mclink.dm index 3ea7bd98f4ef..e70fc691fb87 100644 --- a/code/datums/mclink.dm +++ b/code/datums/mclink.dm @@ -6,7 +6,7 @@ RegisterSignal(target, COMSIG_QDELETING, PROC_REF(target_del)) RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(unlink)) -/datum/component/mclinker/Destroy(force, silent) +/datum/component/mclinker/Destroy(force) target = null return ..() diff --git a/code/datums/memory/_memory.dm b/code/datums/memory/_memory.dm index 3fbfdd8a7e69..1a61258a877d 100644 --- a/code/datums/memory/_memory.dm +++ b/code/datums/memory/_memory.dm @@ -71,7 +71,7 @@ // This happens after everything's all set, remember this for New overrides generate_memory_name() -/datum/memory/Destroy(force, ...) +/datum/memory/Destroy(force) memorizer_mind = null return ..() diff --git a/code/datums/memory/general_memories.dm b/code/datums/memory/general_memories.dm index 1085625545da..c71014b63b46 100644 --- a/code/datums/memory/general_memories.dm +++ b/code/datums/memory/general_memories.dm @@ -926,3 +926,49 @@ "[antagonist_name] acts just a bit too friendly with [protagonist_name], moments away from converting them into a blood brother.", "[protagonist_name] is brought into [antagonist_name]'s life of crime and espionage.", ) + +/// Saw someone play Russian Roulette. +/datum/memory/witnessed_gods_wrath + memory_flags = MEMORY_CHECK_BLINDNESS|MEMORY_SKIP_UNCONSCIOUS + story_value = STORY_VALUE_AMAZING + +/datum/memory/witnessed_gods_wrath/New( + datum/mind/memorizer_mind, + atom/protagonist, + atom/deuteragonist, + atom/antagonist, +) + +/datum/memory/witnessed_gods_wrath/get_names() + return list("[protagonist_name] suffering the wrath of [antagonist_name].") + +/datum/memory/witnessed_gods_wrath/get_starts() + return list( + "[protagonist_name] burns [deuteragonist_name], and [antagonist_name] turns [protagonist_name] into a fine red mist.", + "[antagonist_name] explodes [protagonist_name] into a million pieces for defiling [deuteragonist_name].", + "[protagonist_name] angers [antagonist_name] by defiling [deuteragonist_name], and gets obliterated.", + ) + +/datum/memory/witnessed_gods_wrath/get_moods() + return list("[protagonist_name] [mood_verb] as they get annihilated by [antagonist_name].") + +/datum/memory/witnessed_gods_wrath/get_happy_moods() + return list( + "cackles hysterically", + "laughs maniacally", + "grins widely", + ) + +/datum/memory/witnessed_gods_wrath/get_neutral_moods() + return list( + "appears concerned", + "reconsiders their life decisions", + "has a blank expression", + ) + +/datum/memory/witnessed_gods_wrath/get_sad_moods() + return list( + "appears dejected", + "is filled with regret", + "winces in despair" + ) diff --git a/code/datums/mergers/_merger.dm b/code/datums/mergers/_merger.dm index 3390eea0d106..9a4b56a86738 100644 --- a/code/datums/mergers/_merger.dm +++ b/code/datums/mergers/_merger.dm @@ -28,7 +28,7 @@ src.attempt_merge_proc = attempt_merge_proc Refresh() -/datum/merger/Destroy(force, ...) +/datum/merger/Destroy(force) for(var/atom/thing as anything in members) RemoveMember(thing) return ..() diff --git a/code/datums/mocking/client.dm b/code/datums/mocking/client.dm index ee17e46581ab..d3a3ff461632 100644 --- a/code/datums/mocking/client.dm +++ b/code/datums/mocking/client.dm @@ -43,3 +43,6 @@ /datum/client_interface/proc/set_right_click_menu_mode() return + +/datum/client_interface/proc/is_afk(duration) + return FALSE diff --git a/code/datums/mood.dm b/code/datums/mood.dm index 79fb8486db9e..9cce6e98a8f3 100644 --- a/code/datums/mood.dm +++ b/code/datums/mood.dm @@ -58,6 +58,11 @@ var/datum/hud/hud = mob_to_make_moody.hud_used hud.show_hud(hud.hud_version) +//MONKESTATION ADDITION START + var/datum/atom_hud/mood/hud = GLOB.huds[DATA_HUD_MOOD] + hud.add_atom_to_hud(mob_to_make_moody) +//MONKESTATION ADDITION END + /datum/mood/proc/clear_parent_ref() SIGNAL_HANDLER @@ -65,9 +70,14 @@ mob_parent.lose_area_sensitivity(MOOD_DATUM_TRAIT) UnregisterSignal(mob_parent, list(COMSIG_MOB_HUD_CREATED, COMSIG_ENTER_AREA, COMSIG_LIVING_REVIVE, COMSIG_MOB_STATCHANGE, COMSIG_QDELETING)) +//MONKESTATION ADDITION START + var/datum/atom_hud/mood/hud = GLOB.huds[DATA_HUD_MOOD] + hud.remove_atom_from_hud(mob_parent) +//MONKESTATION ADDITION END + mob_parent = null -/datum/mood/Destroy(force, ...) +/datum/mood/Destroy(force) STOP_PROCESSING(SSmood, src) QDEL_LIST_ASSOC_VAL(mood_events) return ..() @@ -164,6 +174,7 @@ mood_events[category] = the_event the_event.category = category + update_mood_hud(type) //monkestation addition update_mood() if (the_event.timeout) @@ -281,7 +292,7 @@ mood_screen_object.color = "#4b96c4" hud.infodisplay += mood_screen_object RegisterSignal(hud, COMSIG_QDELETING, PROC_REF(unmodify_hud)) - RegisterSignal(mood_screen_object, COMSIG_CLICK, PROC_REF(hud_click)) + RegisterSignal(mood_screen_object, COMSIG_SCREEN_ELEMENT_CLICK, PROC_REF(hud_click)) /// Removes the mood HUD object /datum/mood/proc/unmodify_hud(datum/source) @@ -492,6 +503,26 @@ return TRUE return FALSE +//MONKESTATION ADDITION START +/// Update the mood change indicator based on the mood_change of the mood_event +/datum/mood/proc/update_mood_hud(datum/mood_event/type) + if (!ispath(type)) + CRASH("A non path ([type]), was used to change a mood hud. This shouldn't be happening.") + if(QDELETED(mob_parent) || !istype(mob_parent.hud_list)) + return + if(initial(type.hidden) || !initial(type.mood_change)) + return + var/image/holder = mob_parent.hud_list[MOOD_HUD] + var/icon/I = icon(mob_parent.icon, mob_parent.icon_state, mob_parent.dir) + holder.pixel_y = I.Height() - world.icon_size + 12 + holder.layer = LOW_MOB_LAYER + holder.icon_state = null + if(initial(type.mood_change) > 0) + flick("hud_good_mood", holder) + else + flick("hud_bad_mood", holder) +//MONKESTATION ADDITION END + #undef MINOR_INSANITY_PEN #undef MAJOR_INSANITY_PEN #undef MOOD_CATEGORY_NUTRITION diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index fd54e5c01f7b..1b2c137c6b29 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -502,6 +502,7 @@ . = ..() if(.)//cant add return TRUE + var/obj/item/organ/internal/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN) if(brain) brain.zone = BODY_ZONE_CHEST @@ -510,11 +511,10 @@ if(head) owner.visible_message(span_warning("[owner]'s head splatters with a sickening crunch!"), ignored_mobs = list(owner)) new /obj/effect/gibspawner/generic(get_turf(owner), owner) - head.dismember(BRUTE) + head.dismember(dam_type = BRUTE, silent = TRUE) head.drop_organs() qdel(head) - owner.regenerate_icons() - RegisterSignal(owner, COMSIG_ATTEMPT_CARBON_ATTACH_LIMB, PROC_REF(abortattachment)) + RegisterSignal(owner, COMSIG_ATTEMPT_CARBON_ATTACH_LIMB, PROC_REF(abort_attachment)) /datum/mutation/human/headless/on_losing() . = ..() @@ -522,7 +522,7 @@ return TRUE var/obj/item/organ/internal/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN) if(brain) //so this doesn't instantly kill you. we could delete the brain, but it lets people cure brain issues they /really/ shouldn't be - brain.zone = BODY_ZONE_HEAD + brain.zone = initial(brain.zone) UnregisterSignal(owner, COMSIG_ATTEMPT_CARBON_ATTACH_LIMB) var/successful = owner.regenerate_limb(BODY_ZONE_HEAD) if(!successful) @@ -534,7 +534,7 @@ new /obj/effect/gibspawner/generic(get_turf(owner), owner) -/datum/mutation/human/headless/proc/abortattachment(datum/source, obj/item/bodypart/new_limb, special) //you aren't getting your head back +/datum/mutation/human/headless/proc/abort_attachment(datum/source, obj/item/bodypart/new_limb, special) //you aren't getting your head back SIGNAL_HANDLER if(istype(new_limb, /obj/item/bodypart/head)) diff --git a/code/datums/mutations/cold.dm b/code/datums/mutations/cold.dm index f999eed421d5..57c4f854fc7a 100644 --- a/code/datums/mutations/cold.dm +++ b/code/datums/mutations/cold.dm @@ -18,6 +18,7 @@ item_type = /obj/item/stack/sheet/mineral/snow delete_old = FALSE + delete_on_failure = FALSE /datum/mutation/human/cryokinesis name = "Cryokinesis" diff --git a/code/datums/proximity_monitor/fields/gravity.dm b/code/datums/proximity_monitor/fields/gravity.dm index ac9b143c2083..f970b0d53b6f 100644 --- a/code/datums/proximity_monitor/fields/gravity.dm +++ b/code/datums/proximity_monitor/fields/gravity.dm @@ -1,3 +1,4 @@ +// Proximity monitor applies forced gravity to all turfs in range. /datum/proximity_monitor/advanced/gravity edge_is_a_field = TRUE var/gravity_value = 0 @@ -10,7 +11,9 @@ /datum/proximity_monitor/advanced/gravity/setup_field_turf(turf/target) . = ..() - if (isnull(modified_turfs[target])) + if(!isnull(modified_turfs[target])) + return + if(HAS_TRAIT(target, TRAIT_FORCED_GRAVITY)) return target.AddElement(/datum/element/forced_gravity, gravity_value, can_override = TRUE) modified_turfs[target] = gravity_value @@ -19,7 +22,8 @@ . = ..() if(isnull(modified_turfs[target])) return - target.RemoveElement(/datum/element/forced_gravity, modified_turfs[target]) + var/grav_value = modified_turfs[target] || 0 + target.RemoveElement(/datum/element/forced_gravity, grav_value) modified_turfs -= target // Subtype which pops up a balloon alert when a mob enters the field diff --git a/code/datums/quirks/negative_quirks.dm b/code/datums/quirks/negative_quirks.dm index 08393519a5dc..a2528c8c9d92 100644 --- a/code/datums/quirks/negative_quirks.dm +++ b/code/datums/quirks/negative_quirks.dm @@ -592,7 +592,7 @@ if(BODY_ZONE_R_LEG) prosthetic = new /obj/item/bodypart/leg/right/robot/surplus slot_string = "right leg" - human_holder.del_and_replace_bodypart(prosthetic) + human_holder.del_and_replace_bodypart(prosthetic, TRUE) /datum/quirk/prosthetic_limb/post_add() to_chat(quirk_holder, span_boldannounce("Your [slot_string] has been replaced with a surplus prosthetic. It is fragile and will easily come apart under duress. Additionally, \ @@ -609,10 +609,10 @@ /datum/quirk/quadruple_amputee/add_unique(client/client_source) var/mob/living/carbon/human/human_holder = quirk_holder - human_holder.del_and_replace_bodypart(new /obj/item/bodypart/arm/left/robot/surplus) - human_holder.del_and_replace_bodypart(new /obj/item/bodypart/arm/right/robot/surplus) - human_holder.del_and_replace_bodypart(new /obj/item/bodypart/leg/left/robot/surplus) - human_holder.del_and_replace_bodypart(new /obj/item/bodypart/leg/right/robot/surplus) + human_holder.del_and_replace_bodypart(new /obj/item/bodypart/arm/left/robot/surplus, TRUE) + human_holder.del_and_replace_bodypart(new /obj/item/bodypart/arm/right/robot/surplus, TRUE) + human_holder.del_and_replace_bodypart(new /obj/item/bodypart/leg/left/robot/surplus, TRUE) + human_holder.del_and_replace_bodypart(new /obj/item/bodypart/leg/right/robot/surplus, TRUE) /datum/quirk/quadruple_amputee/post_add() to_chat(quirk_holder, span_boldannounce("All your limbs have been replaced with surplus prosthetics. They are fragile and will easily come apart under duress. Additionally, \ @@ -799,7 +799,7 @@ hardcore_value = 4 quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_PROCESSES mail_goodies = list(/obj/effect/spawner/random/contraband/narcotics) - var/drug_list = list(/datum/reagent/drug/blastoff, /datum/reagent/drug/krokodil, /datum/reagent/medicine/morphine, /datum/reagent/drug/happiness, /datum/reagent/drug/methamphetamine) //List of possible IDs + var/drug_list = list(/datum/reagent/drug/blastoff, /datum/reagent/drug/krokodil, /datum/reagent/medicine/painkiller/morphine, /datum/reagent/drug/happiness, /datum/reagent/drug/methamphetamine) //List of possible IDs var/datum/reagent/reagent_type //!If this is defined, reagent_id will be unused and the defined reagent type will be instead. var/datum/reagent/reagent_instance //! actual instanced version of the reagent var/where_drug //! Where the drug spawned diff --git a/code/datums/quirks/positive_quirks.dm b/code/datums/quirks/positive_quirks.dm index 31b7bf47ae6a..6f3db54bac8a 100644 --- a/code/datums/quirks/positive_quirks.dm +++ b/code/datums/quirks/positive_quirks.dm @@ -292,7 +292,7 @@ lose_text = span_danger("You lose faith!") medical_record_text = "Patient reports a belief in a higher power." mail_goodies = list( - /obj/item/storage/book/bible/booze, + /obj/item/book/bible/booze, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/bedsheet/chaplain, /obj/item/toy/cards/deck/tarot, diff --git a/code/datums/ruins.dm b/code/datums/ruins.dm index 2a7b73d1f7e8..703991f596e9 100644 --- a/code/datums/ruins.dm +++ b/code/datums/ruins.dm @@ -6,17 +6,27 @@ How is there a wooden container filled with 18th century coinage in the middle of a lavawracked hellscape? \ It is clearly a mystery." - var/unpickable = FALSE //If TRUE these won't be placed automatically (can still be forced or loaded with another ruin) - var/always_place = FALSE //Will skip the whole weighting process and just plop this down, ideally you want the ruins of this kind to have no cost. - var/placement_weight = 1 //How often should this ruin appear - var/cost = 0 //Cost in ruin budget placement system + ///If TRUE these won't be placed automatically (can still be forced or loaded with another ruin) + var/unpickable = FALSE + ///Will skip the whole weighting process and just plop this down, ideally you want the ruins of this kind to have no cost. + var/always_place = FALSE + ///How often should this ruin appear + var/placement_weight = 1 + ///Cost in ruin budget placement system + var/cost = 0 + /// Cost in the ruin budget placement system associated with mineral spawning. We use a different budget for mineral sources like ore vents. For practical use see seedRuins + var/mineral_cost = 0 + /// If TRUE, this ruin can be placed multiple times in the same map var/allow_duplicates = TRUE - var/list/always_spawn_with = null //These ruin types will be spawned along with it (where dependent on the flag) eg list(/datum/map_template/ruin/space/teleporter_space = SPACERUIN_Z) - var/list/never_spawn_with = null //If this ruin is spawned these will not eg list(/datum/map_template/ruin/base_alternate) - + ///These ruin types will be spawned along with it (where dependent on the flag) eg list(/datum/map_template/ruin/space/teleporter_space = SPACERUIN_Z) + var/list/always_spawn_with = null + ///If this ruin is spawned these will not eg list(/datum/map_template/ruin/base_alternate) + var/list/never_spawn_with = null + ///Static part of the ruin path eg "_maps\RandomRuins\LavaRuins\" var/prefix = null + ///The dynamic part of the ruin path eg "lavaland_surface_ruinfile.dmm" var/suffix = null - + ///What flavor or ruin is this? eg ZTRAIT_SPACE_RUINS var/ruin_type = null /datum/map_template/ruin/New() diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm index 60d3bd594e2d..2000c2790ecc 100644 --- a/code/datums/saymode.dm +++ b/code/datums/saymode.dm @@ -23,7 +23,7 @@ var/datum/antagonist/changeling/ling_sender = user.mind.has_antag_datum(/datum/antagonist/changeling) if(!ling_sender) return FALSE - if(HAS_TRAIT(user, CHANGELING_HIVEMIND_MUTE)) + if(HAS_TRAIT(user, TRAIT_CHANGELING_HIVEMIND_MUTE)) to_chat(user, span_warning("The poison in the air hinders our ability to interact with the hivemind.")) return FALSE @@ -39,7 +39,7 @@ if(!isliving(ling_mob) || issilicon(ling_mob) || isbrain(ling_mob)) continue // can't recieve messages on the hivemind right now - if(HAS_TRAIT(ling_mob, CHANGELING_HIVEMIND_MUTE)) + if(HAS_TRAIT(ling_mob, TRAIT_CHANGELING_HIVEMIND_MUTE)) continue to_chat(ling_mob, msg) diff --git a/code/datums/station_traits/_station_trait.dm b/code/datums/station_traits/_station_trait.dm index 44aaffb24910..b979aaf5330e 100644 --- a/code/datums/station_traits/_station_trait.dm +++ b/code/datums/station_traits/_station_trait.dm @@ -55,3 +55,15 @@ REMOVE_TRAIT(SSstation, trait_to_give, STATION_TRAIT) qdel(src) + +///Called by decals if they can be colored, to see if we got some cool colors for them. Only takes the first station trait +/proc/request_station_colors(atom/thing_to_color, pattern) + for(var/datum/station_trait/trait in SSstation.station_traits) + var/decal_color = trait.get_decal_color(thing_to_color, pattern || PATTERN_DEFAULT) + if(decal_color) + return decal_color + return null + +///Return a color for the decals, if any +/datum/station_trait/proc/get_decal_color(thing_to_color, pattern) + return diff --git a/code/datums/station_traits/negative_traits.dm b/code/datums/station_traits/negative_traits.dm index 8179282e88e6..99105c2e8a13 100644 --- a/code/datums/station_traits/negative_traits.dm +++ b/code/datums/station_traits/negative_traits.dm @@ -340,7 +340,7 @@ /datum/station_trait/revolutionary_trashing/proc/trash_this_place() for(var/area/station/command/area_to_trash in GLOB.areas) - for(var/turf/current_turf as anything in area_to_trash.get_contained_turfs()) + for(var/turf/current_turf as anything in area_to_trash.get_turfs_from_all_zlevels()) if(isclosedturf(current_turf)) continue if(prob(25)) diff --git a/code/datums/station_traits/neutral_traits.dm b/code/datums/station_traits/neutral_traits.dm index 1600bdc6c19a..78955436f5a4 100644 --- a/code/datums/station_traits/neutral_traits.dm +++ b/code/datums/station_traits/neutral_traits.dm @@ -308,12 +308,12 @@ flags_inv = 0 armor_type = /datum/armor/none var/static/list/hat_colors = list( - COLOR_BRIGHT_RED, - COLOR_BRIGHT_ORANGE, - COLOR_BRIGHT_YELLOW, - COLOR_BRIGHT_GREEN, - COLOR_BRIGHT_TEAL, - COLOR_BRIGHT_PURPLE, + COLOR_PRIDE_RED, + COLOR_PRIDE_ORANGE, + COLOR_PRIDE_YELLOW, + COLOR_PRIDE_GREEN, + COLOR_PRIDE_BLUE, + COLOR_PRIDE_PURPLE, ) /obj/item/clothing/head/costume/party/Initialize(mapload) diff --git a/code/datums/station_traits/positive_traits.dm b/code/datums/station_traits/positive_traits.dm index b425b28cd762..08aa46dd2833 100644 --- a/code/datums/station_traits/positive_traits.dm +++ b/code/datums/station_traits/positive_traits.dm @@ -211,6 +211,7 @@ /datum/job/atmospheric_technician = /obj/item/organ/internal/cyberimp/arm/item_set/atmospherics, // monkestation edit: cybernetics overhaul (useful job stuff) /datum/job/bartender = /obj/item/organ/internal/liver/cybernetic/tier3, /datum/job/bitrunner = /obj/item/organ/internal/eyes/robotic/thermals, + /datum/job/blueshield = /obj/item/organ/internal/cyberimp/arm/ammo_counter, // monkestation edit: cybernetics for recently added job /datum/job/botanist = /obj/item/organ/internal/cyberimp/arm/item_set/botany, // monkestation edit: cybernetics overhaul (useful job stuff) /datum/job/captain = /obj/item/organ/internal/heart/cybernetic/tier3, /datum/job/cargo_technician = /obj/item/organ/internal/stomach/cybernetic/tier2, @@ -236,6 +237,7 @@ /datum/job/research_director = /obj/item/organ/internal/cyberimp/bci, /datum/job/roboticist = /obj/item/organ/internal/cyberimp/arm/item_set/connector, // monkestation edit: cybernetics overhaul (useful job stuff) /datum/job/scientist = /obj/item/organ/internal/ears/cybernetic, + /datum/job/security_assistant = /obj/item/organ/internal/cyberimp/leg/accelerator, // monkestation edit: cybernetics for recently added job /datum/job/security_officer = /obj/item/organ/internal/cyberimp/arm/item_set/flash, /datum/job/shaft_miner = /obj/item/organ/internal/cyberimp/arm/item_set/mining_drill/diamond, // monkestation edit: cybernetics overhaul (useful job stuff) /datum/job/station_engineer = /obj/item/organ/internal/cyberimp/arm/item_set/toolset, diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index f6ede0903a00..2e9714fb2959 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -517,7 +517,7 @@ owner.AddElement(/datum/element/forced_gravity, 0) owner.AddElement(/datum/element/simple_flying) owner.add_stun_absorption(source = id, priority = 4) - add_traits(list(TRAIT_IGNOREDAMAGESLOWDOWN, TRAIT_FREE_HYPERSPACE_MOVEMENT), MAD_WIZARD_TRAIT) + add_traits(list(TRAIT_IGNOREDAMAGESLOWDOWN, TRAIT_FREE_HYPERSPACE_MOVEMENT), id) owner.playsound_local(get_turf(owner), 'sound/chemistry/ahaha.ogg', vol = 100, vary = TRUE, use_reverb = TRUE) return TRUE @@ -535,4 +535,4 @@ owner.RemoveElement(/datum/element/forced_gravity, 0) owner.RemoveElement(/datum/element/simple_flying) owner.remove_stun_absorption(id) - remove_traits(list(TRAIT_IGNOREDAMAGESLOWDOWN, TRAIT_FREE_HYPERSPACE_MOVEMENT), MAD_WIZARD_TRAIT) + owner.remove_traits(list(TRAIT_IGNOREDAMAGESLOWDOWN, TRAIT_FREE_HYPERSPACE_MOVEMENT), id) diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm index b754a7854d31..4fe68d281eae 100644 --- a/code/datums/status_effects/debuffs/debuffs.dm +++ b/code/datums/status_effects/debuffs/debuffs.dm @@ -717,6 +717,13 @@ alert_type = null var/msg_stage = 0//so you dont get the most intense messages immediately +/datum/status_effect/fake_virus/on_apply() + if(HAS_TRAIT(owner, TRAIT_VIRUSIMMUNE)) + return FALSE + if(owner.stat != CONSCIOUS) + return FALSE + return TRUE + /datum/status_effect/fake_virus/tick() var/fake_msg = "" var/fake_emote = "" @@ -845,6 +852,9 @@ icon_state = "antalert" /atom/movable/screen/alert/status_effect/ants/Click() + . = ..() + if(!.) + return var/mob/living/living = owner if(!istype(living) || !living.can_resist() || living != owner) return diff --git a/code/datums/status_effects/debuffs/genetic_damage.dm b/code/datums/status_effects/debuffs/genetic_damage.dm index c052fa7b5243..438bcc7c6905 100644 --- a/code/datums/status_effects/debuffs/genetic_damage.dm +++ b/code/datums/status_effects/debuffs/genetic_damage.dm @@ -33,9 +33,9 @@ /datum/status_effect/genetic_damage/tick(seconds_per_tick, times_fired) if(ismonkey(owner) && total_damage >= GORILLA_MUTATION_MINIMUM_DAMAGE && SPT_PROB(GORILLA_MUTATION_CHANCE_PER_SECOND, seconds_per_tick)) - qdel(src) var/mob/living/carbon/carbon_owner = owner carbon_owner.gorillize() + qdel(src) return if(total_damage >= minimum_before_tox_damage) diff --git a/code/datums/status_effects/wound_effects.dm b/code/datums/status_effects/wound_effects.dm index ed0b7b555e46..8965d22ad197 100644 --- a/code/datums/status_effects/wound_effects.dm +++ b/code/datums/status_effects/wound_effects.dm @@ -29,6 +29,7 @@ id = "limp" status_type = STATUS_EFFECT_REPLACE tick_interval = 0 + on_remove_on_mob_delete = TRUE alert_type = /atom/movable/screen/alert/status_effect/limp var/msg_stage = 0//so you dont get the most intense messages immediately /// The left leg of the limping person @@ -138,9 +139,9 @@ /datum/status_effect/wound id = "wound" status_type = STATUS_EFFECT_MULTIPLE + on_remove_on_mob_delete = TRUE var/obj/item/bodypart/linked_limb var/datum/wound/linked_wound - alert_type = NONE /datum/status_effect/wound/on_creation(mob/living/new_owner, incoming_wound) linked_wound = incoming_wound diff --git a/code/datums/storage/storage.dm b/code/datums/storage/storage.dm index 01a37b4c80c6..5fffb2f0adb5 100644 --- a/code/datums/storage/storage.dm +++ b/code/datums/storage/storage.dm @@ -404,6 +404,8 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) if(!can_insert(to_insert, user, force = force)) return FALSE + SEND_SIGNAL(resolve_location, COMSIG_STORAGE_STORED_ITEM, to_insert, user, force) + to_insert.item_flags |= IN_STORAGE to_insert.forceMove(resolve_location) item_insertion_feedback(user, to_insert, override) diff --git a/code/datums/wires/robot.dm b/code/datums/wires/robot.dm index dee0112f3754..8e3870acb47c 100644 --- a/code/datums/wires/robot.dm +++ b/code/datums/wires/robot.dm @@ -105,7 +105,7 @@ log_silicon("[key_name(usr)] reset [key_name(R)]'s module via wire") /datum/wires/robot/can_reveal_wires(mob/user) - if(HAS_TRAIT(user, TRAIT_KNOW_CYBORG_WIRES)) + if(HAS_TRAIT(user, TRAIT_KNOW_ROBO_WIRES)) return TRUE return ..() diff --git a/code/datums/wounds/_wound_static_data.dm b/code/datums/wounds/_wound_static_data.dm index 7a59ea57413a..f996bb258c79 100644 --- a/code/datums/wounds/_wound_static_data.dm +++ b/code/datums/wounds/_wound_static_data.dm @@ -185,7 +185,7 @@ return new wound_path_to_generate -/datum/wound_pregen_data/Destroy(force, ...) +/datum/wound_pregen_data/Destroy(force) var/error_message = "[src], a singleton wound pregen data instance, was destroyed! This should not happen!" if (force) error_message += " NOTE: This Destroy() was called with force == TRUE. This instance will be deleted and replaced with a new one." diff --git a/code/datums/wounds/_wounds.dm b/code/datums/wounds/_wounds.dm index c6729edf7f3f..e6fd7aabd20c 100644 --- a/code/datums/wounds/_wounds.dm +++ b/code/datums/wounds/_wounds.dm @@ -16,11 +16,6 @@ #define WOUND_CRITICAL_BLUNT_DISMEMBER_BONUS 15 -// Applied into wounds when they're scanned with the wound analyzer, halves time to treat them manually. -#define TRAIT_WOUND_SCANNED "wound_scanned" -// I dunno lol -#define ANALYZER_TRAIT "analyzer_trait" - /datum/wound /// What it's named var/name = "Wound" diff --git a/code/datums/wounds/bones.dm b/code/datums/wounds/bones.dm index fade934c438c..1b63e5a4a2a4 100644 --- a/code/datums/wounds/bones.dm +++ b/code/datums/wounds/bones.dm @@ -152,11 +152,13 @@ victim.visible_message("Blood spews out of [victim]'s mouth from the blow to [victim.p_their()] chest!", span_danger("You spit out a string of blood from the blow to your chest!"), vision_distance=COMBAT_MESSAGE_RANGE) new /obj/effect/temp_visual/dir_setting/bloodsplatter(victim.loc, victim.dir, COLOR_DARK_RED) victim.bleed(blood_bled) + victim.blood_particles(amount = 1) if(20 to INFINITY) victim.visible_message(span_danger("Blood spurts out of [victim]'s mouth from the blow to [victim.p_their()] chest!"), span_danger("You choke up on a spray of blood from the blow to your chest!"), vision_distance=COMBAT_MESSAGE_RANGE) victim.bleed(blood_bled) new /obj/effect/temp_visual/dir_setting/bloodsplatter(victim.loc, victim.dir, COLOR_DARK_RED) victim.add_splatter_floor(get_step(victim.loc, victim.dir)) + victim.blood_particles(amount = 3) /datum/wound/blunt/bone/modify_desc_before_span(desc) . = ..() diff --git a/code/datums/wounds/loss.dm b/code/datums/wounds/loss.dm index 479656a8a429..bcad804eba68 100644 --- a/code/datums/wounds/loss.dm +++ b/code/datums/wounds/loss.dm @@ -50,6 +50,7 @@ log_wound(victim, src) if(dismembered_part.can_bleed() && wounding_type != WOUND_BURN && victim.blood_volume) victim.spray_blood(attack_direction, severity) + victim.blood_particles(amount = rand(3, 6), angle = 0, min_deviation = 0, max_deviation = 360) dismembered_part.dismember(wounding_type == WOUND_BURN ? BURN : BRUTE, wounding_type = wounding_type) qdel(src) return TRUE diff --git a/code/datums/wounds/pierce.dm b/code/datums/wounds/pierce.dm index 238e28001738..4deb88361768 100644 --- a/code/datums/wounds/pierce.dm +++ b/code/datums/wounds/pierce.dm @@ -30,6 +30,7 @@ set_blood_flow(initial_flow) if(limb.can_bleed() && attack_direction && victim.blood_volume > BLOOD_VOLUME_OKAY) victim.spray_blood(attack_direction, severity) + victim.blood_particles(amount = rand(3, 6), angle = 0, min_deviation = 0, max_deviation = 360) return ..() diff --git a/code/datums/wounds/scars/_scars.dm b/code/datums/wounds/scars/_scars.dm index 2e85533438ab..0df9b1b4f1c8 100644 --- a/code/datums/wounds/scars/_scars.dm +++ b/code/datums/wounds/scars/_scars.dm @@ -30,7 +30,7 @@ /// If false, we will only check to see if a limb has ALL our biostates, instead of just any. var/check_any_biostates -/datum/scar/Destroy(force, ...) +/datum/scar/Destroy(force) if(limb) LAZYREMOVE(limb.scars, src) if(victim) diff --git a/code/datums/wounds/slash.dm b/code/datums/wounds/slash.dm index e297849e61a3..b0edc7f25074 100644 --- a/code/datums/wounds/slash.dm +++ b/code/datums/wounds/slash.dm @@ -57,6 +57,7 @@ set_blood_flow(initial_flow) if(limb.can_bleed() && attack_direction && victim.blood_volume > BLOOD_VOLUME_OKAY) victim.spray_blood(attack_direction, severity) + victim.blood_particles(amount = rand(3, 6), angle = 0, min_deviation = 0, max_deviation = 360) if(!highest_scar) var/datum/scar/new_scar = new diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 66323f0ef603..04a1776cf07c 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -13,14 +13,16 @@ mouse_opacity = MOUSE_OPACITY_TRANSPARENT invisibility = INVISIBILITY_LIGHTING - /// List of all turfs currently inside this area. Acts as a filtered bersion of area.contents - /// For faster lookup (area.contents is actually a filtered loop over world) + /// List of all turfs currently inside this area as nested lists indexed by zlevel. + /// Acts as a filtered version of area.contents For faster lookup + /// (area.contents is actually a filtered loop over world) /// Semi fragile, but it prevents stupid so I think it's worth it - var/list/turf/contained_turfs = list() - /// Contained turfs is a MASSIVE list, so rather then adding/removing from it each time we have a problem turf + var/list/list/turf/turfs_by_zlevel = list() + /// turfs_by_z_level can hold MASSIVE lists, so rather then adding/removing from it each time we have a problem turf /// We should instead store a list of turfs to REMOVE from it, then hook into a getter for it /// There is a risk of this and contained_turfs leaking, so a subsystem will run it down to 0 incrementally if it gets too large - var/list/turf/turfs_to_uncontain = list() + /// This uses the same nested list format as turfs_by_zlevel + var/list/list/turf/turfs_to_uncontain_by_zlevel = list() var/area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED @@ -231,24 +233,94 @@ GLOBAL_LIST_EMPTY(teleportlocs) turfs += T map_generator.generate_terrain(turfs, src) -/area/proc/get_contained_turfs() - if(length(turfs_to_uncontain)) +/// Returns the highest zlevel that this area contains turfs for +/area/proc/get_highest_zlevel() + for (var/area_zlevel in length(turfs_by_zlevel) to 1 step -1) + if (length(turfs_to_uncontain_by_zlevel) >= area_zlevel) + if (length(turfs_by_zlevel[area_zlevel]) - length(turfs_to_uncontain_by_zlevel[area_zlevel]) > 0) + return area_zlevel + else + if (length(turfs_by_zlevel[area_zlevel])) + return area_zlevel + return 0 + +/// Returns a nested list of lists with all turfs split by zlevel. +/// only zlevels with turfs are returned. The order of the list is not guaranteed. +/area/proc/get_zlevel_turf_lists() + if(length(turfs_to_uncontain_by_zlevel)) cannonize_contained_turfs() - return contained_turfs + + var/list/zlevel_turf_lists = list() + + for (var/list/zlevel_turfs as anything in turfs_by_zlevel) + if (length(zlevel_turfs)) + zlevel_turf_lists += list(zlevel_turfs) + + return zlevel_turf_lists + +/// Returns a list with all turfs in this zlevel. +/area/proc/get_turfs_by_zlevel(zlevel) + if (length(turfs_to_uncontain_by_zlevel) >= zlevel && length(turfs_to_uncontain_by_zlevel[zlevel])) + cannonize_contained_turfs_by_zlevel(zlevel) + + if (length(turfs_by_zlevel) < zlevel) + return list() + + return turfs_by_zlevel[zlevel] + + +/// Merges a list containing all of the turfs zlevel lists from get_zlevel_turf_lists inside one list. Use get_zlevel_turf_lists() or get_turfs_by_zlevel() unless you need all the turfs in one list to avoid generating large lists +/area/proc/get_turfs_from_all_zlevels() + . = list() + for (var/list/zlevel_turfs as anything in get_zlevel_turf_lists()) + . += zlevel_turfs /// Ensures that the contained_turfs list properly represents the turfs actually inside us -/area/proc/cannonize_contained_turfs() +/area/proc/cannonize_contained_turfs_by_zlevel(zlevel_to_clean, _autoclean = TRUE) // This is massively suboptimal for LARGE removal lists // Try and keep the mass removal as low as you can. We'll do this by ensuring // We only actually add to contained turfs after large changes (Also the management subsystem) // Do your damndest to keep turfs out of /area/space as a stepping stone - // That sucker gets HUGE and will make this take actual tens of seconds if you stuff turfs_to_uncontain - contained_turfs -= turfs_to_uncontain - turfs_to_uncontain = list() + // That sucker gets HUGE and will make this take actual seconds + if (zlevel_to_clean <= length(turfs_by_zlevel) && zlevel_to_clean <= length(turfs_to_uncontain_by_zlevel)) + turfs_by_zlevel[zlevel_to_clean] -= turfs_to_uncontain_by_zlevel[zlevel_to_clean] + + if (!_autoclean) // Removes empty lists from the end of this list + turfs_to_uncontain_by_zlevel[zlevel_to_clean] = list() + return + + var/new_length = length(turfs_to_uncontain_by_zlevel) + // Walk backwards thru the list + for (var/i in length(turfs_to_uncontain_by_zlevel) to 0 step -1) + if (i && length(turfs_to_uncontain_by_zlevel[i])) + break // Stop the moment we find a useful list + new_length = i + + if (new_length < length(turfs_to_uncontain_by_zlevel)) + turfs_to_uncontain_by_zlevel.len = new_length + + if (new_length >= zlevel_to_clean) + turfs_to_uncontain_by_zlevel[zlevel_to_clean] = list() + + +/// Ensures that the contained_turfs list properly represents the turfs actually inside us +/area/proc/cannonize_contained_turfs() + for (var/area_zlevel in 1 to length(turfs_to_uncontain_by_zlevel)) + cannonize_contained_turfs_by_zlevel(area_zlevel, _autoclean = FALSE) + + turfs_to_uncontain_by_zlevel = list() + /// Returns TRUE if we have contained turfs, FALSE otherwise /area/proc/has_contained_turfs() - return length(contained_turfs) - length(turfs_to_uncontain) > 0 + for (var/area_zlevel in 1 to length(turfs_by_zlevel)) + if (length(turfs_to_uncontain_by_zlevel) >= area_zlevel) + if (length(turfs_by_zlevel[area_zlevel]) - length(turfs_to_uncontain_by_zlevel[area_zlevel]) > 0) + return TRUE + else + if (length(turfs_by_zlevel[area_zlevel])) + return TRUE + return FALSE /** * Register this area as belonging to a z level @@ -293,8 +365,8 @@ GLOBAL_LIST_EMPTY(teleportlocs) air_vents = null air_scrubbers = null //turf cleanup - contained_turfs = null - turfs_to_uncontain = null + turfs_by_zlevel = null + turfs_to_uncontain_by_zlevel = null //parent cleanup return ..() @@ -474,13 +546,6 @@ GLOBAL_LIST_EMPTY(teleportlocs) if(ambient_buzz != old_area.ambient_buzz) L.refresh_looping_ambience() - if(isliving(arrived)) - if(SSparticle_weather.running_eclipse_weather || SSparticle_weather.running_weather) - if(SSparticle_weather.running_eclipse_weather && SSmapping.level_has_all_traits(arrived.z, list(ZTRAIT_ECLIPSE))) - SSparticle_weather.running_eclipse_weather.weather_sound_effect(arrived) - if(SSparticle_weather.running_weather && SSmapping.level_has_all_traits(arrived.z, list(ZTRAIT_STATION))) - SSparticle_weather.running_weather.weather_sound_effect(arrived) - ///Tries to play looping ambience to the mobs. /mob/proc/refresh_looping_ambience() SIGNAL_HANDLER @@ -541,8 +606,9 @@ GLOBAL_LIST_EMPTY(teleportlocs) if(outdoors) return FALSE areasize = 0 - for(var/turf/open/T in get_contained_turfs()) - areasize++ + for(var/list/zlevel_turfs as anything in get_zlevel_turf_lists()) + for(var/turf/open/thisvarisunused in zlevel_turfs) + areasize++ /** * Causes a runtime error diff --git a/code/game/area/areas/ruins/space.dm b/code/game/area/areas/ruins/space.dm index ca0b4729de4a..eacc820b1851 100644 --- a/code/game/area/areas/ruins/space.dm +++ b/code/game/area/areas/ruins/space.dm @@ -546,10 +546,7 @@ name = "\improper Abandoned Ship" -//SYNDICATE LISTENING POST STATION - -/area/ruin/space/has_grav/listeningstation - name = "\improper Listening Post" +//some sorta ancient shuttle idk /area/ruin/space/has_grav/powered/ancient_shuttle name = "\improper Ancient Shuttle" @@ -560,7 +557,7 @@ /area/ruin/space/has_grav/hellfactoryoffice name = "\improper Hell Factory Office" - area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA | NOTELEPORT + area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA | NOTELEPORT //who decided blobs should be allowed, i don't know, but it's funny //Ruin of Spinward Smoothies diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 4c1dfd909545..95ba030e198a 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -203,7 +203,7 @@ if(SSatoms.InitAtom(src, FALSE, args)) //we were deleted return - SSdemo.mark_new(src) //Monkestation edit: Replays + SSdemo.mark_new(src) //Monkestation edit: Replays /** * The primary method that objects are setup in SS13 with @@ -492,7 +492,7 @@ if(mobile_docking_port.launch_status != check_for_launch_status) continue for(var/area/shuttle/shuttle_area as anything in mobile_docking_port.shuttle_areas) - if(current_turf in shuttle_area.get_contained_turfs()) + if(shuttle_area == current_turf.loc) return TRUE return FALSE @@ -561,7 +561,8 @@ return null ///Return the current air environment in this atom -/atom/proc/return_air() +/atom/proc/return_air() as /datum/gas_mixture + RETURN_TYPE(/datum/gas_mixture) if(loc) return loc.return_air() else @@ -2114,6 +2115,7 @@ var/shift_lmb_ctrl_shift_lmb_line = "" var/extra_lines = 0 var/extra_context = "" + var/misc_context = "" if(isliving(user) || isovermind(user) || isaicamera(user) || (ghost_screentips && isobserver(user))) var/obj/item/held_item = user.get_active_held_item() @@ -2175,8 +2177,17 @@ if (shift_lmb_ctrl_shift_lmb_line != "") extra_lines++ + if(SCREENTIP_CONTEXT_MISC in context) + misc_context += context[SCREENTIP_CONTEXT_MISC] + + if (misc_context != "") + extra_lines++ + if(extra_lines) - extra_context = "
[lmb_rmb_line][ctrl_lmb_ctrl_rmb_line][alt_lmb_alt_rmb_line][shift_lmb_ctrl_shift_lmb_line]" + if(misc_context != "") + extra_context = "
[misc_context]\n[lmb_rmb_line][ctrl_lmb_ctrl_rmb_line][alt_lmb_alt_rmb_line][shift_lmb_ctrl_shift_lmb_line]" + else + extra_context = "
[lmb_rmb_line][ctrl_lmb_ctrl_rmb_line][alt_lmb_alt_rmb_line][shift_lmb_ctrl_shift_lmb_line]" //first extra line pushes atom name line up 11px, subsequent lines push it up 9px, this offsets that and keeps the first line in the same place active_hud.screentip_text.maptext_y = -1 + (extra_lines - 1) * -9 diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 47a9f019df31..dd6f53c6442d 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -138,7 +138,7 @@ if (blocks_emissive) if (blocks_emissive == EMISSIVE_BLOCK_UNIQUE) render_target = ref(src) - em_block = new(null, src) + em_block = new(src, render_target) overlays += em_block if(managed_overlays) if(islist(managed_overlays)) @@ -211,7 +211,7 @@ move_packet = null if(spatial_grid_key) - SSspatial_grid.force_remove_from_grid(src) + SSspatial_grid.force_remove_from_cell(src) LAZYCLEARLIST(client_mobs_in_contents) @@ -243,11 +243,9 @@ // This saves several hundred milliseconds of init time. if (blocks_emissive) if (blocks_emissive == EMISSIVE_BLOCK_UNIQUE) - if(em_block) - SET_PLANE(em_block, EMISSIVE_PLANE, src) - else if(!QDELETED(src)) + if(!em_block && !QDELETED(src)) render_target = ref(src) - em_block = new(null, src) + em_block = new(src, render_target) return em_block // Implied else if (blocks_emissive == EMISSIVE_BLOCK_NONE) -> return // EMISSIVE_BLOCK_GENERIC == 0 @@ -263,7 +261,7 @@ SET_PLANE(underlay_appearance, PLANE_SPACE, generate_for) if(!generate_for.render_target) generate_for.render_target = ref(generate_for) - var/atom/movable/render_step/emissive_blocker/em_block = new(null, generate_for) + var/atom/movable/render_step/emissive_blocker/em_block = new(null, generate_for.render_target) underlay_appearance.overlays += em_block // We used it because it's convienient and easy, but it's gotta go now or it'll hang refs QDEL_NULL(em_block) @@ -1473,10 +1471,6 @@ /// Gets or creates the relevant language holder. For mindless atoms, gets the local one. For atom with mind, gets the mind one. /atom/movable/proc/get_language_holder(get_minds = TRUE) - if(QDELING(src)) - CRASH("get_language_holder() called on a QDELing atom, \ - this will try to re-instantiate the language holder that's about to be deleted, which is bad.") - if(!language_holder) language_holder = new initial_language_holder(src) return language_holder diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 48ddf2749558..fcc7e8faf850 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -90,6 +90,10 @@ for(var/mob/camera/ai_eye/eye as anything in GLOB.aiEyes) eye.update_ai_detect_hud() +//MONKESTATION ADDITION +/datum/atom_hud/mood + hud_icons = list(MOOD_HUD) + /* MED/SEC/DIAG HUD HOOKS */ /* diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 80d75a0d636b..c254c3ea9537 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -334,7 +334,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if(ruleset.weight <= 0 || ruleset.cost <= 0) continue min_threat = min(ruleset.cost, min_threat) - var/greenshift = GLOB.dynamic_forced_extended || (threat_level < min_threat && shown_threat < min_threat) //if both shown and real threat are below any ruleset, its extended time + var/greenshift = SSgamemode.storyteller.disable_distribution //|| (threat_level < min_threat && shown_threat < min_threat) //if both shown and real threat are below any ruleset, its extended time //monkestation edit: Makes it so greenshift is based on the storyteller generate_station_goals(greenshift) . += generate_station_goal_report() diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index d28a853135cd..b9c8cdad258d 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -125,7 +125,7 @@ return mode.log_dynamic_and_announce("Polling [possible_volunteers.len] players to apply for the [name] ruleset.") - candidates = SSpolling.poll_ghost_candidates("Looking for volunteers to become [antag_flag] for [name]", check_jobban = antag_flag_override, role = antag_flag || antag_flag_override, poll_time = 30 SECONDS, pic_source = /obj/structure/sign/poster/contraband/syndicate_recruitment, role_name_text = antag_flag) + candidates = SSpolling.poll_ghost_candidates("Looking for volunteers to become [antag_flag] for [name]", check_jobban = antag_flag_override, role = antag_flag || antag_flag_override, poll_time = 30 SECONDS, alert_pic = /obj/structure/sign/poster/contraband/syndicate_recruitment, role_name_text = antag_flag) if(!candidates || candidates.len <= 0) mode.log_dynamic_and_announce("The ruleset [name] received no applications.") @@ -372,7 +372,7 @@ ) required_enemies = list(3,3,3,3,3,2,1,1,0,0) required_candidates = 5 - weight = 5 + weight = 0 cost = 7 minimum_round_time = 70 MINUTES requirements = REQUIREMENTS_VERY_HIGH_THREAT_NEEDED @@ -585,8 +585,6 @@ var/mob/living/basic/space_dragon/S = new (pick(spawn_locs)) player_mind.transfer_to(S) - player_mind.set_assigned_role(SSjob.GetJobType(/datum/job/space_dragon)) - player_mind.special_role = ROLE_SPACE_DRAGON player_mind.add_antag_datum(/datum/antagonist/space_dragon) playsound(S, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 169d1ca95319..58570722ec68 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -246,8 +246,14 @@ GLOBAL_LIST(admin_objective_list) //Prefilled admin assignable objective list /datum/objective/mutiny/check_completion() - if(!target || !considered_alive(target) || considered_afk(target) || considered_exiled(target)) + // monkestation start: fix bugs with revs ending early due to late arrivals + if(QDELETED(target)) return TRUE + if(is_late_arrival(target.current)) + return FALSE + if(!considered_alive(target) || considered_afk(target) || considered_exiled(target)) + return TRUE + // monkestation end var/turf/T = get_turf(target.current) return !T || !is_station_level(T.z) diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index a8f502efe013..728df8ba25cc 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -821,12 +821,23 @@ spawn_frame(disassembled) for(var/part in component_parts) + var/area/shipbreak/A = get_area(src) if(istype(part, /datum/stock_part)) var/datum/stock_part/datum_part = part - new datum_part.physical_object_type(loc) + var/obj/item/item = new datum_part.physical_object_type(loc) + if(istype(A) && item.get_shipbreaking_reward()) //shipbreaking + var/obj/item/reward = item.get_shipbreaking_reward() + if(reward) + new reward(loc) + qdel(item) else var/obj/item/obj_part = part obj_part.forceMove(loc) + if(istype(A) && obj_part.get_shipbreaking_reward()) //shipbreaking + var/obj/item/reward = obj_part.get_shipbreaking_reward() + if(reward) + new reward(loc) + qdel(obj_part) if(istype(obj_part, /obj/item/circuitboard/machine)) var/obj/item/circuitboard/machine/board = obj_part for(var/component in board.req_components) //loop through all stack components and spawn them diff --git a/code/game/machinery/botlaunchpad.dm b/code/game/machinery/botlaunchpad.dm index a4ad07e70bc2..60de1657ce8a 100644 --- a/code/game/machinery/botlaunchpad.dm +++ b/code/game/machinery/botlaunchpad.dm @@ -1,11 +1,11 @@ /obj/machinery/botpad - name = "Bot pad" + name = "orbital bot pad" desc = "A lighter version of the orbital mech pad modified to launch bots. Requires linking to a remote to function." icon = 'icons/obj/telescience.dmi' icon_state = "botpad" circuit = /obj/item/circuitboard/machine/botpad // ID of the console, used for linking up - var/id = "botlauncher" + // var/id = "botlauncher" MONKESTATION removal var/obj/item/botpad_remote/connected_remote var/datum/weakref/launched_bot // we need this to recall the bot @@ -44,6 +44,9 @@ user.balloon_alert(user, "too many bots on the pad!") return possible_bot = robot // We don't change the launched_bot var here because we are not sure if there is another bot on the pad. + if(QDELETED(possible_bot)) //MONKESTATION addition + user.balloon_alert(user, "no bots detected on the pad!") + return launched_bot = WEAKREF(possible_bot) podspawn(list( "target" = get_turf(src), @@ -56,15 +59,15 @@ /obj/machinery/botpad/proc/recall(mob/living/user) var/atom/our_bot = launched_bot?.resolve() if(isnull(our_bot)) - user.balloon_alert(user, "no bots detected on the pad!") + user.balloon_alert(user, "no bot to send back to the pad!") return user.balloon_alert(user, "bot sent back to pad") if(isbasicbot(our_bot)) var/mob/living/basic/bot/basic_bot = our_bot - basic_bot.summon_bot(src) - return - var/mob/living/simple_animal/bot/simple_bot = our_bot - simple_bot.call_bot(src, get_turf(src)) + basic_bot.summon_bot(user, get_turf(src)) + else + var/mob/living/simple_animal/bot/simple_bot = our_bot + simple_bot.call_bot(user, get_turf(src)) /obj/structure/closet/supplypod/botpod style = STYLE_SEETHROUGH diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 2e07e75a4c3a..1f966a7e6dc5 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -206,19 +206,22 @@ return if(device && device.next_activate > world.time) + playsound(src, SFX_BUTTON_FAIL, vol = 45, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE, mixer_channel = CHANNEL_MACHINERY) // monkestation edit: button sounds return if(!allowed(user)) to_chat(user, span_alert("Access Denied.")) flick("[skin]-denied", src) + playsound(src, SFX_BUTTON_FAIL, vol = 45, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE, mixer_channel = CHANNEL_MACHINERY) // monkestation edit: button sounds return + playsound(src, SFX_BUTTON_CLICK, vol = 45, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE, mixer_channel = CHANNEL_MACHINERY) // monkestation edit: button sounds use_power(5) icon_state = "[skin]1" if(device) device.pulsed(user) - SEND_GLOBAL_SIGNAL(COMSIG_GLOB_BUTTON_PRESSED,src) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_BUTTON_PRESSED, src) addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/, update_appearance)), 15) diff --git a/code/game/machinery/camera/trackable.dm b/code/game/machinery/camera/trackable.dm index d28effbb33dd..b8cb9bd93e88 100644 --- a/code/game/machinery/camera/trackable.dm +++ b/code/game/machinery/camera/trackable.dm @@ -26,7 +26,7 @@ tracking_holder = source RegisterSignal(tracking_holder, COMSIG_MOB_RESET_PERSPECTIVE, PROC_REF(perspective_reset)) -/datum/trackable/Destroy(force, ...) +/datum/trackable/Destroy(force) tracking_holder = null tracked_mob = null STOP_PROCESSING(SSprocessing, src) diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index e151967a1c7f..11aab499f5cc 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -155,6 +155,7 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) JOB_ERT_CHAPLAIN = 225, JOB_ERT_JANITOR = 226, JOB_ERT_DEATHSQUAD = 227, + JOB_BLUESHIELD = 231, // ANYTHING ELSE = UNKNOWN_JOB_ID, Unknowns/custom jobs will appear after civilians, and before assistants JOB_ASSISTANT = 999, diff --git a/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm b/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm index 996972c61d25..506920986dd2 100644 --- a/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm +++ b/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm @@ -26,7 +26,7 @@ name = "Cabbage" item_path = /obj/item/food/grown/cabbage -/datum/orderable_item/veggies/beets +/datum/orderable_item/veggies/onion name = "Onion" item_path = /obj/item/food/grown/onion diff --git a/code/game/machinery/computer/orders/order_items/order_datum.dm b/code/game/machinery/computer/orders/order_items/order_datum.dm index e7bb3c35e56c..13684fc742b4 100644 --- a/code/game/machinery/computer/orders/order_items/order_datum.dm +++ b/code/game/machinery/computer/orders/order_items/order_datum.dm @@ -22,7 +22,7 @@ if(!desc) desc = initial(item_path.desc) -/datum/orderable_item/Destroy(force, ...) +/datum/orderable_item/Destroy(force) if(item_path) qdel(item_path) return ..() diff --git a/code/game/machinery/computer/records/medical.dm b/code/game/machinery/computer/records/medical.dm index 362c8468aa6f..53c3256dc217 100644 --- a/code/game/machinery/computer/records/medical.dm +++ b/code/game/machinery/computer/records/medical.dm @@ -3,7 +3,7 @@ desc = "This can be used to check medical records." icon_screen = "medcomp" icon_keyboard = "med_key" - req_one_access = list(ACCESS_MEDICAL, ACCESS_DETECTIVE, ACCESS_GENETICS) + req_one_access = list(ACCESS_MEDICAL, ACCESS_DETECTIVE, ACCESS_BRIG_PHYSICIAN, ACCESS_GENETICS) //monkestation edit: adds brig physician to medical records access. circuit = /obj/item/circuitboard/computer/med_data light_color = LIGHT_COLOR_BLUE diff --git a/code/game/machinery/dna_infuser/dna_infuser.dm b/code/game/machinery/dna_infuser/dna_infuser.dm index b151ce9bdc69..286d4879594f 100644 --- a/code/game/machinery/dna_infuser/dna_infuser.dm +++ b/code/game/machinery/dna_infuser/dna_infuser.dm @@ -154,6 +154,7 @@ skillchip.set_metadata(chip) // monkestation end check_tier_progression(target) + return TRUE /// Picks a random mutated organ from the infuser entry which is also compatible with the target mob. /// Tries to return a typepath of a valid mutant organ if all of the following criteria are true: diff --git a/code/game/machinery/dna_infuser/infuser_book.dm b/code/game/machinery/dna_infuser/infuser_book.dm index 84a78a4899a7..ea5dbcbf4117 100644 --- a/code/game/machinery/dna_infuser/infuser_book.dm +++ b/code/game/machinery/dna_infuser/infuser_book.dm @@ -8,12 +8,22 @@ throw_speed = 2 throw_range = 5 w_class = WEIGHT_CLASS_TINY + drop_sound = 'sound/items/handling/book_drop.ogg' + pickup_sound = 'sound/items/handling/book_pickup.ogg' /obj/item/infuser_book/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "InfuserBook") ui.open() + playsound(src, SFX_PAGE_TURN, 30, TRUE) + +/obj/item/infuser_book/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + if(action == "play_flip_sound") + playsound(src, SFX_PAGE_TURN, 30, TRUE) /obj/item/infuser_book/ui_static_data(mob/user) var/list/data = list() diff --git a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm index fa345e5bae49..d24a951d76b5 100644 --- a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm +++ b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm @@ -75,3 +75,33 @@ infusion_desc = "skittish" tier = DNA_MUTANT_TIER_ONE status_effect_type = /datum/status_effect/organ_set_bonus/rat + +/datum/infuser_entry/roach + name = "Roach" + infuse_mob_name = "cockroach" + desc = "It seems as if you're a fan of ancient literature by your interest in this. Assuredly, merging cockroach DNA into your genome \ + will not cause you to become incapable of leaving your bed. These creatures are incredibly resilient against many things \ + humans are weak to, and we can use that! Who wouldn't like to survive a nuclear blast? \ + NOTE: Squished roaches will not work for the infuser, if that wasn't obvious. Try spraying them with some pestkiller from botany!" + threshold_desc = "you will no longer be gibbed by explosions, and gain incredible resistance to viruses and radiation." + qualities = list( + "resilience to attacks from behind", + "healthier organs", + "get over disgust very quickly", + "the ability to survive a nuclear apocalypse", + "harder to pick yourself up from falling over", + "avoid toxins at all costs", + "always down to find a snack", + ) + input_obj_or_mob = list( + /mob/living/basic/cockroach, + ) + output_organs = list( + /obj/item/organ/internal/heart/roach, + /obj/item/organ/internal/stomach/roach, + /obj/item/organ/internal/liver/roach, + /obj/item/organ/internal/appendix/roach, + ) + infusion_desc = "kafkaesque" // Gregor Samsa !! + tier = DNA_MUTANT_TIER_ONE + status_effect_type = /datum/status_effect/organ_set_bonus/roach diff --git a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm index 97b80b91969c..bd5c099fade4 100644 --- a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm @@ -61,6 +61,7 @@ head.unarmed_damage_low = 10 head.unarmed_damage_high = 15 head.unarmed_stun_threshold = 15 + head.unarmed_attack_effect = ATTACK_EFFECT_BITE /obj/item/organ/internal/tongue/carp/on_remove(mob/living/carbon/tongue_owner) . = ..() @@ -75,6 +76,7 @@ head.unarmed_damage_low = initial(head.unarmed_damage_low) head.unarmed_damage_high = initial(head.unarmed_damage_high) head.unarmed_stun_threshold = initial(head.unarmed_stun_threshold) + head.unarmed_attack_effect = initial(head.unarmed_attack_effect) /obj/item/organ/internal/tongue/carp/on_life(seconds_per_tick, times_fired) . = ..() diff --git a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm new file mode 100644 index 000000000000..49b7f01c7c76 --- /dev/null +++ b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm @@ -0,0 +1,226 @@ +#define ROACH_ORGAN_COLOR "#7c4200" +// Yeah i'm lazy and we don't use any of the other color slots +#define ROACH_COLORS ROACH_ORGAN_COLOR + ROACH_ORGAN_COLOR + ROACH_ORGAN_COLOR + +/datum/armor/roach_internal_armor + bomb = 100 + bio = 90 + +/datum/status_effect/organ_set_bonus/roach + id = "organ_set_bonus_roach" + organs_needed = 4 + bonus_activate_text = span_notice("Roach DNA is deeply infused with you! \ + You feel increasingly resistant to explosives, radiation, and viral agents.") + bonus_deactivate_text = span_notice("You are no longer majority roach, \ + and you feel much more vulnerable to nuclear apocalypses.") + // - Immunity to nuke gibs + // - Nukes come with radiation (not actually but yknow) + bonus_traits = list(TRAIT_NUKEIMMUNE, TRAIT_RADIMMUNE, TRAIT_VIRUS_RESISTANCE) + /// Armor type attached to the owner's physiology + var/datum/armor/given_armor = /datum/armor/roach_internal_armor + /// Storing biotypes pre-organ bonus applied so we don't remove bug from mobs which should have it. + var/old_biotypes = NONE + +/datum/status_effect/organ_set_bonus/roach/enable_bonus() + . = ..() + if(!ishuman(owner)) + return + + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.armor = human_owner.physiology.armor.add_other_armor(given_armor) + + old_biotypes = human_owner.mob_biotypes + human_owner.mob_biotypes |= MOB_BUG + +/datum/status_effect/organ_set_bonus/roach/disable_bonus() + . = ..() + if(!ishuman(owner) || QDELETED(owner)) + return + + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.armor = human_owner.physiology.armor.subtract_other_armor(given_armor) + + if(!(old_biotypes & MOB_BUG)) // only remove bug if it wasn't there before + human_owner.mob_biotypes &= ~MOB_BUG + +/// Roach heart: +/// Reduces damage taken from brute attacks from behind, +/// but increases duration of knockdowns +/obj/item/organ/internal/heart/roach + name = "mutated roach-heart" + desc = "Roach DNA infused into what was once a normal heart." + maxHealth = 2 * STANDARD_ORGAN_THRESHOLD + + icon = 'icons/obj/medical/organs/infuser_organs.dmi' + icon_state = "heart" + greyscale_config = /datum/greyscale_config/mutant_organ + greyscale_colors = ROACH_COLORS + + /// Timer ID for resetting the damage resistance applied from attacks from behind + var/defense_timerid + /// Bodypart overlay applied to the chest the heart is in + var/datum/bodypart_overlay/simple/roach_shell/roach_shell + +/obj/item/organ/internal/heart/roach/Initialize(mapload) + . = ..() + AddElement(/datum/element/noticable_organ, "has hardened, somewhat translucent skin.") + AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach) + roach_shell = new() + +/obj/item/organ/internal/heart/roach/Destroy() + QDEL_NULL(roach_shell) + return ..() + +/obj/item/organ/internal/heart/roach/on_insert(mob/living/carbon/organ_owner, special) + . = ..() + if(!ishuman(organ_owner)) + return + + var/mob/living/carbon/human/human_owner = organ_owner + + RegisterSignal(human_owner, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(modify_damage)) + human_owner.physiology.knockdown_mod *= 3 + + var/obj/item/bodypart/chest/chest = human_owner.get_bodypart(BODY_ZONE_CHEST) + chest.add_bodypart_overlay(roach_shell) + human_owner.update_body_parts() + +/obj/item/organ/internal/heart/roach/on_remove(mob/living/carbon/organ_owner, special) + . = ..() + if(!ishuman(organ_owner) || QDELETED(organ_owner)) + return + + var/mob/living/carbon/human/human_owner = organ_owner + + UnregisterSignal(human_owner, COMSIG_MOB_APPLY_DAMAGE) + human_owner.physiology.knockdown_mod /= 3 + + if(defense_timerid) + reset_damage(human_owner) + + var/obj/item/bodypart/chest/chest = human_owner.get_bodypart(BODY_ZONE_CHEST) + chest.remove_bodypart_overlay(roach_shell) + human_owner.update_body_parts() + +/** + * Signal proc for [COMSIG_MOB_APPLY_DAMAGE] + * + * Being hit with brute damage in the back will impart a large damage resistance bonus for a very short period. + */ +/obj/item/organ/internal/heart/roach/proc/modify_damage(datum/source, damage, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item) + SIGNAL_HANDLER + + if(!ishuman(owner) || !attack_direction || damagetype != BRUTE || owner.stat >= UNCONSCIOUS) + return + + var/mob/living/carbon/human/human_owner = owner + // No tactical spinning + if(human_owner.flags_1 & IS_SPINNING_1) + return + + // If we're lying down, or were attacked from the back, we get armor. + var/should_armor_up = (human_owner.body_position == LYING_DOWN) || (human_owner.dir & attack_direction) + if(!should_armor_up) + return + + // Take 50% less damage from attack behind us + if(!defense_timerid) + human_owner.physiology.brute_mod /= 2 + human_owner.visible_message(span_warning("[human_owner]'s back hardens against the blow!")) + playsound(human_owner, 'sound/effects/constructform.ogg', 25, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) + + defense_timerid = addtimer(CALLBACK(src, PROC_REF(reset_damage), owner), 5 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) + +/obj/item/organ/internal/heart/roach/proc/reset_damage(mob/living/carbon/human/human_owner) + defense_timerid = null + if(!QDELETED(human_owner)) + human_owner.physiology.brute_mod *= 2 + human_owner.visible_message(span_warning("[human_owner]'s back softens again.")) + +// Simple overlay so we can add a roach shell to guys with roach hearts +/datum/bodypart_overlay/simple/roach_shell + icon_state = "roach_shell" + layers = EXTERNAL_FRONT|EXTERNAL_BEHIND + +/datum/bodypart_overlay/simple/roach_shell/get_image(image_layer, obj/item/bodypart/limb) + return image( + icon = icon, + icon_state = "[icon_state]_[mutant_bodyparts_layertext(image_layer)]", + layer = image_layer, + ) + +/// Roach stomach: +/// Makes disgust a non-issue, very slightly worse at passing off reagents +/// Also makes you more hungry +/obj/item/organ/internal/stomach/roach + name = "mutated roach-stomach" + desc = "Roach DNA infused into what was once a normal stomach." + maxHealth = 2 * STANDARD_ORGAN_THRESHOLD + disgust_metabolism = 32 // Demolishes any disgust we have + metabolism_efficiency = 0.033 // Slightly worse at transferring reagents +// hunger_modifier = 3 //monkestation temp removal + + icon = 'icons/obj/medical/organs/infuser_organs.dmi' + icon_state = "stomach" + greyscale_config = /datum/greyscale_config/mutant_organ + greyscale_colors = ROACH_COLORS + +/obj/item/organ/internal/stomach/roach/Initialize(mapload) + . = ..() + AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach) + +/// Roach liver: +/// Purges toxins at a higher threshold, but takes more damage from them if not purged +/obj/item/organ/internal/liver/roach + name = "mutated roach-liver" + desc = "Roach DNA infused into what was once a normal liver." + maxHealth = 2 * STANDARD_ORGAN_THRESHOLD + toxTolerance = 5 // More tolerance for toxins + liver_resistance = 0.25 // But if they manage to get in you're screwed + + icon = 'icons/obj/medical/organs/infuser_organs.dmi' + icon_state = "liver" + greyscale_config = /datum/greyscale_config/mutant_organ + greyscale_colors = ROACH_COLORS + +/obj/item/organ/internal/liver/roach/Initialize(mapload) + . = ..() + AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach) + +/obj/item/organ/internal/liver/roach/on_insert(mob/living/carbon/organ_owner, special) + . = ..() + if(!ishuman(organ_owner)) + return + + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.tox_mod *= 2 + +/obj/item/organ/internal/liver/roach/on_remove(mob/living/carbon/organ_owner, special) + . = ..() + if(!ishuman(organ_owner) || QDELETED(organ_owner)) + return + + var/mob/living/carbon/human/human_owner = organ_owner + human_owner.physiology.tox_mod /= 2 + +/// Roach appendix: +/// No appendicitus! weee! +/obj/item/organ/internal/appendix/roach + name = "mutated roach-appendix" + desc = "Roach DNA infused into what was once a normal appendix. It could get worse?" + maxHealth = 2 * STANDARD_ORGAN_THRESHOLD + + icon = 'icons/obj/medical/organs/infuser_organs.dmi' + icon_state = "appendix" + greyscale_config = /datum/greyscale_config/mutant_organ + greyscale_colors = ROACH_COLORS + +/obj/item/organ/internal/appendix/roach/Initialize(mapload) + . = ..() + AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach) + +/obj/item/organ/internal/appendix/roach/become_inflamed() + return + +#undef ROACH_ORGAN_COLOR +#undef ROACH_COLORS diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index ab954ff3fa4e..ce041d62f677 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1392,7 +1392,7 @@ return ..() /obj/machinery/door/airlock/proc/prison_open() - if(obj_flags & EMAGGED) + if((obj_flags & EMAGGED) || is_probably_external_airlock()) // monkestation edit: STOP SPACING ENGI return locked = FALSE open() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 44c97e1381a1..a0d432cefd9a 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -528,6 +528,10 @@ /obj/machinery/door/morgue icon = 'icons/obj/doors/doormorgue.dmi' +/obj/machinery/door/morgue/Initialize(mapload) + . = ..() + AddComponent(/datum/component/redirect_attack_hand_from_turf) + /obj/machinery/door/get_dumping_location() return null @@ -559,7 +563,7 @@ . = ..() /// Signal proc for [COMSIG_ATOM_MAGICALLY_UNLOCKED]. Open up when someone casts knock. -/obj/machinery/door/proc/on_magic_unlock(datum/source, datum/action/cooldown/spell/aoe/knock/spell, mob/living/caster) +/obj/machinery/door/proc/on_magic_unlock(datum/source, datum/action/cooldown/spell/aoe/knock/spell, atom/caster) SIGNAL_HANDLER INVOKE_ASYNC(src, PROC_REF(open)) diff --git a/code/game/machinery/embedded_controller/airlock_controller.dm b/code/game/machinery/embedded_controller/airlock_controller.dm index b71c1ad399b3..a4376d95b207 100644 --- a/code/game/machinery/embedded_controller/airlock_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_controller.dm @@ -35,8 +35,6 @@ var/processing = FALSE /obj/machinery/airlock_controller/LateInitialize() - . = ..() - var/obj/machinery/door/interior_door = GLOB.objects_by_id_tag[interior_door_tag] if (!isnull(interior_door_tag) && !istype(interior_door)) stack_trace("interior_door_tag is set to [interior_door_tag], which is not a door ([interior_door || "null"])") @@ -57,6 +55,13 @@ stack_trace("sensor_tag is set to [sensor_tag], which is not a sensor ([sensor || "null"])") sensor_ref = WEAKREF(sensor) +/obj/machinery/airlock_controller/Destroy() + interior_door_ref = null + exterior_door_ref = null + pump_ref = null + sensor_ref = null + return ..() + /obj/machinery/airlock_controller/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) @@ -70,7 +75,7 @@ switch(state) if(AIRLOCK_STATE_INOPEN) if(target_state != state) - var/obj/machinery/door/airlock/interior_airlock = interior_door_ref.resolve() + var/obj/machinery/door/airlock/interior_airlock = interior_door_ref?.resolve() if (isnull(interior_airlock)) continue @@ -80,7 +85,7 @@ else interior_airlock.secure_close() else - var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref.resolve() + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref?.resolve() if(pump?.on) pump.on = FALSE @@ -93,7 +98,7 @@ continue if(sensor_pressure >= ONE_ATMOSPHERE*0.95) - var/obj/machinery/door/airlock/interior_airlock = interior_door_ref.resolve() + var/obj/machinery/door/airlock/interior_airlock = interior_door_ref?.resolve() if (isnull(interior_airlock)) continue @@ -103,7 +108,7 @@ state = AIRLOCK_STATE_INOPEN process_again = TRUE else - var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref.resolve() + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref?.resolve() if (isnull(pump)) continue @@ -119,7 +124,7 @@ if(AIRLOCK_STATE_CLOSED) if(target_state == AIRLOCK_STATE_OUTOPEN) - var/obj/machinery/door/airlock/interior_airlock = interior_door_ref.resolve() + var/obj/machinery/door/airlock/interior_airlock = interior_door_ref?.resolve() if (isnull(interior_airlock)) continue @@ -129,7 +134,7 @@ else interior_airlock?.secure_close() else if(target_state == AIRLOCK_STATE_INOPEN) - var/obj/machinery/door/airlock/exterior_airlock = exterior_door_ref.resolve() + var/obj/machinery/door/airlock/exterior_airlock = exterior_door_ref?.resolve() if (isnull(exterior_airlock)) continue @@ -139,7 +144,7 @@ else exterior_airlock?.secure_close() else - var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref.resolve() + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref?.resolve() if (isnull(pump)) continue @@ -158,7 +163,7 @@ if(sensor_pressure <= target_pressure) if(target_state == AIRLOCK_STATE_OUTOPEN) - var/obj/machinery/door/airlock/exterior_airlock = exterior_door_ref.resolve() + var/obj/machinery/door/airlock/exterior_airlock = exterior_door_ref?.resolve() if (isnull(exterior_airlock)) continue @@ -173,7 +178,7 @@ state = AIRLOCK_STATE_CLOSED process_again = TRUE else - var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref.resolve() + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref?.resolve() if (isnull(pump)) continue @@ -186,7 +191,7 @@ if(AIRLOCK_STATE_OUTOPEN) //state 2 if(target_state != AIRLOCK_STATE_OUTOPEN) - var/obj/machinery/door/airlock/exterior_airlock = exterior_door_ref.resolve() + var/obj/machinery/door/airlock/exterior_airlock = exterior_door_ref?.resolve() if (isnull(exterior_airlock)) continue @@ -200,7 +205,7 @@ else exterior_airlock.secure_close() else - var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref.resolve() + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref?.resolve() if (isnull(pump)) continue @@ -221,19 +226,19 @@ var/sensor_pressure = sensor_pressure() data["sensorPressure"] = isnull(sensor_pressure) ? "----" : round(sensor_pressure, 0.1) - var/obj/machinery/door/airlock/interior_airlock = interior_door_ref.resolve() + var/obj/machinery/door/airlock/interior_airlock = interior_door_ref?.resolve() if (isnull(interior_airlock)) data["interiorStatus"] = "----" else data["interiorStatus"] = interior_airlock.density ? "closed" : "open" - var/obj/machinery/door/airlock/exterior_airlock = exterior_door_ref.resolve() + var/obj/machinery/door/airlock/exterior_airlock = exterior_door_ref?.resolve() if (isnull(exterior_airlock)) data["exteriorStatus"] = "----" else data["exteriorStatus"] = exterior_airlock.density ? "closed" : "open" - var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref.resolve() + var/obj/machinery/atmospherics/components/binary/dp_vent_pump/pump = pump_ref?.resolve() switch (pump?.pump_direction) if (null) data["pumpStatus"] = "----" @@ -270,7 +275,7 @@ /// Returns the pressure over the pump, or null if it is deleted /obj/machinery/airlock_controller/proc/sensor_pressure() - var/obj/machinery/airlock_sensor/sensor = sensor_ref.resolve() + var/obj/machinery/airlock_sensor/sensor = sensor_ref?.resolve() if (!isnull(sensor) && !sensor.on) return last_pressure diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index ae87b00aea69..2ba217ac02e7 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -291,9 +291,9 @@ Possible to do for anyone motivated enough: for(var/I in holo_calls) var/datum/holocall/HC = I var/list/call_data = list( - caller = HC.user, - connected = HC.connected_holopad == src ? TRUE : FALSE, - ref = REF(HC) + "caller" = HC.user, + "connected" = HC.connected_holopad == src ? TRUE : FALSE, + "ref" = REF(HC) ) data["holo_calls"] += list(call_data) return data @@ -879,7 +879,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ render_target = "holoray#[uid]" uid++ // Let's GLOW BROTHER! (Doing it like this is the most robust option compared to duped overlays) - glow = new(null, src) + glow = new(src, render_target) // We need to counteract the pixel offset to ensure we don't double offset (I hate byond) glow.pixel_x = 32 glow.pixel_y = 32 diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index 1d1d58104ced..7a4a0ea1fae1 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -66,8 +66,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light_switch, 26) return area.lightswitch = status area.update_appearance() + playsound(src, SFX_LIGHTSWITCH, vol = 25, extrarange = SHORT_RANGE_SOUND_EXTRARANGE, frequency = status ? 1 : -1, mixer_channel = CHANNEL_MACHINERY) // monkestation edit: button sounds - for(var/obj/machinery/light_switch/light_switch in area) + for(var/obj/machinery/light_switch/light_switch as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/light_switch)) + if(light_switch.area != area) + continue light_switch.update_appearance() SEND_SIGNAL(light_switch, COMSIG_LIGHT_SWITCH_SET, status) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index bfbd2400b287..79141c5598da 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -708,13 +708,13 @@ DEFINE_BITFIELD(turret_flags, list( remote_controller = null return TRUE -/obj/machinery/porta_turret/proc/InterceptClickOn(mob/living/caller, params, atom/A) +/obj/machinery/porta_turret/proc/InterceptClickOn(mob/living/user, params, atom/A) if(!manual_control) return FALSE - if(!can_interact(caller)) + if(!can_interact(user)) remove_control() return FALSE - log_combat(caller,A,"fired with manual turret control at") + log_combat(user,A,"fired with manual turret control at") target(A) return TRUE diff --git a/code/game/machinery/prisongate.dm b/code/game/machinery/prisongate.dm index 0b7529cbb79e..4a932b2258c5 100644 --- a/code/game/machinery/prisongate.dm +++ b/code/game/machinery/prisongate.dm @@ -45,6 +45,14 @@ /obj/machinery/prisongate/CanAllowThrough(atom/movable/gate_toucher, border_dir) . = ..() if(!iscarbon(gate_toucher)) + if(isvehicle(gate_toucher)) + var/obj/vehicle/toucher = gate_toucher + for(var/mob/living/carbon/human in toucher.occupants) + if(COOLDOWN_FINISHED(src, spam_cooldown_time)) + say("Please dismount your vehicles before trying to enter.") + playsound(src, 'sound/machines/buzz-two.ogg', 50, FALSE) + COOLDOWN_START(src, spam_cooldown_time, SPAM_CD) + return FALSE if(!isstructure(gate_toucher)) return TRUE var/obj/structure/cargobay = gate_toucher diff --git a/code/game/machinery/sleepers.dm b/code/game/machinery/sleepers.dm index b6d2e886b1cb..42c13632d1da 100644 --- a/code/game/machinery/sleepers.dm +++ b/code/game/machinery/sleepers.dm @@ -29,7 +29,7 @@ var/list/possible_chems = list( list( /datum/reagent/medicine/epinephrine, - /datum/reagent/medicine/morphine, + /datum/reagent/medicine/painkiller/morphine, /datum/reagent/medicine/c2/convermol, /datum/reagent/medicine/c2/libital, /datum/reagent/medicine/c2/aiuri, diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index f3195a536e61..ad928a292c57 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -608,7 +608,8 @@ B.detonation_timer = world.time + BUTTON_DELAY detonated++ existent++ - playsound(user, 'sound/machines/click.ogg', 20, TRUE) + //playsound(user, 'sound/machines/click.ogg', 20, TRUE) + playsound(src, SFX_BUTTON_CLICK, vol = 25, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE, mixer_channel = CHANNEL_MACHINERY) // monkestation edit: button sounds to_chat(user, span_notice("[existent] found, [detonated] triggered.")) if(detonated) detonated-- diff --git a/code/game/objects/effects/anomalies/anomalies_ectoplasm.dm b/code/game/objects/effects/anomalies/anomalies_ectoplasm.dm index b84ccffc65a8..e8b0a9676fe0 100644 --- a/code/game/objects/effects/anomalies/anomalies_ectoplasm.dm +++ b/code/game/objects/effects/anomalies/anomalies_ectoplasm.dm @@ -61,9 +61,7 @@ if(effect_power >= 10) //Performs something akin to a revenant defile spell. var/effect_range = ghosts_orbiting + 3 - var/effect_area = range(effect_range, src) - - for(var/impacted_thing in effect_area) + for(var/impacted_thing in range(effect_range, src)) if(isfloorturf(impacted_thing)) if(prob(5)) new /obj/effect/decal/cleanable/blood(get_turf(impacted_thing)) @@ -179,7 +177,7 @@ candidate_list += GLOB.current_observers_list candidate_list += GLOB.dead_player_list - var/list/candidates = SSpolling.poll_candidates("Would you like to participate in a spooky ghost swarm? (Warning: you will not be able to return to your body!)", check_jobban = ROLE_SENTIENCE, poll_time = 10 SECONDS, group = candidate_list, pic_source = src, role_name_text = "ghost swarm") + var/list/candidates = SSpolling.poll_candidates("Would you like to participate in a spooky ghost swarm? (Warning: you will not be able to return to your body!)", check_jobban = ROLE_SENTIENCE, poll_time = 10 SECONDS, group = candidate_list, alert_pic = src, role_name_text = "ghost swarm") for(var/mob/dead/observer/candidate_ghost as anything in candidates) var/mob/living/basic/ghost/swarm/new_ghost = new(get_turf(src)) ghosts_spawned += new_ghost diff --git a/code/game/objects/effects/anomalies/anomalies_pyroclastic.dm b/code/game/objects/effects/anomalies/anomalies_pyroclastic.dm index 2b4f0874ef47..781fd0d5a471 100644 --- a/code/game/objects/effects/anomalies/anomalies_pyroclastic.dm +++ b/code/game/objects/effects/anomalies/anomalies_pyroclastic.dm @@ -33,21 +33,10 @@ pyro.maximum_survivable_temperature = INFINITY pyro.apply_temperature_requirements() - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob( - "Do you want to play as a pyroclastic anomaly slime?", - check_jobban = ROLE_SENTIENCE, - role = ROLE_SENTIENCE, - poll_time = 10 SECONDS, - target_mob = pyro, - ignore_category = POLL_IGNORE_PYROSLIME, - pic_source = pyro, - role_name_text = "pyroclastic anomaly slime" - ) - if(!LAZYLEN(candidates)) + var/mob/chosen_one = SSpolling.poll_ghosts_for_target(check_jobban = ROLE_SENTIENCE, poll_time = 10 SECONDS, checked_target = pyro, ignore_category = POLL_IGNORE_PYROSLIME, alert_pic = pyro, role_name_text = "pyroclastic anomaly slime") + if(isnull(chosen_one)) return - - var/mob/dead/observer/chosen = pick(candidates) - pyro.key = chosen.key + pyro.key = chosen_one.key pyro.mind.special_role = ROLE_PYROCLASTIC_SLIME pyro.mind.add_antag_datum(/datum/antagonist/pyro_slime) pyro.log_message("was made into a slime by pyroclastic anomaly", LOG_GAME) diff --git a/code/game/objects/effects/cursor_catcher.dm b/code/game/objects/effects/cursor_catcher.dm index 779cad0e2a0f..3229cd44b708 100644 --- a/code/game/objects/effects/cursor_catcher.dm +++ b/code/game/objects/effects/cursor_catcher.dm @@ -3,6 +3,7 @@ icon_state = "fullscreen_blocker" // Fullscreen semi transparent icon plane = HUD_PLANE mouse_opacity = MOUSE_OPACITY_ICON + default_click = TRUE /// The mob whose cursor we are tracking. var/mob/owner /// Client view size of the scoping mob. @@ -54,7 +55,11 @@ /atom/movable/screen/fullscreen/cursor_catcher/proc/calculate_params() var/list/modifiers = params2list(mouse_params) var/icon_x = text2num(LAZYACCESS(modifiers, VIS_X)) + if(isnull(icon_x)) + icon_x = text2num(LAZYACCESS(modifiers, ICON_X)) var/icon_y = text2num(LAZYACCESS(modifiers, VIS_Y)) + if(isnull(icon_y)) + icon_y = text2num(LAZYACCESS(modifiers, ICON_Y)) var/our_x = round(icon_x / world.icon_size) var/our_y = round(icon_y / world.icon_size) given_turf = locate(owner.x + our_x - round(view_list[1]/2), owner.y + our_y - round(view_list[2]/2), owner.z) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 83d905882447..08715536511e 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -365,6 +365,8 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) var/splatter_strength = 3 /// Insurance so that we don't keep moving once we hit a stoppoint var/hit_endpoint = FALSE + /// Type of squirt decals we should try to create when moving + var/line_type = /obj/effect/decal/cleanable/blood/line /obj/effect/decal/cleanable/blood/hitsplatter/Initialize(mapload, splatter_strength) . = ..() @@ -413,6 +415,17 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) splatter_strength-- if(splatter_strength <= 0) // we used all the puff so we delete it. qdel(src) + return + if(line_type && isturf(loc)) + var/obj/effect/decal/cleanable/line = locate(line_type) in loc + if(line) + line.add_blood_DNA(blood_dna_info) + else + line = new line_type(loc, get_dir(prev_loc, loc)) + line.add_blood_DNA(blood_dna_info) + line.alpha = 0 + animate(line, alpha = initial(line.alpha), time = 2) + /obj/effect/decal/cleanable/blood/hitsplatter/proc/loop_done(datum/source) SIGNAL_HANDLER @@ -454,3 +467,4 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) the_window.vis_contents += final_splatter the_window.bloodied = TRUE qdel(src) + diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index fa6a178b5944..cf42e3a2c0d8 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -45,6 +45,10 @@ plane = FLOOR_PLANE layer = TURF_DECAL_LAYER anchored = TRUE + /// Does this decal change colors on holidays + var/use_holiday_colors = FALSE + /// The pattern used when recoloring the decal. If null, it'll use the def of the station or holiday. + var/pattern // This is with the intent of optimizing mapload // See spawners for more details since we use the same pattern @@ -55,6 +59,13 @@ stack_trace("Warning: [src]([type]) initialized multiple times!") flags_1 |= INITIALIZED_1 + // If the tile uses holiday colors, apply them here + if(use_holiday_colors) + var/current_holiday_color = request_holiday_colors(src, pattern) + if(current_holiday_color) + color = current_holiday_color + alpha = DECAL_ALPHA + var/turf/T = loc if(!istype(T)) //you know this will happen somehow CRASH("Turf decal initialized in an object/nullspace") diff --git a/code/game/objects/effects/decals/turfdecal/tilecoloring.dm b/code/game/objects/effects/decals/turfdecal/tilecoloring.dm index 24bb508d4775..b63c88567645 100644 --- a/code/game/objects/effects/decals/turfdecal/tilecoloring.dm +++ b/code/game/objects/effects/decals/turfdecal/tilecoloring.dm @@ -3,11 +3,10 @@ icon_state = "tile_corner" layer = TURF_PLATING_DECAL_LAYER alpha = 110 + use_holiday_colors = TRUE -/obj/effect/turf_decal/tile/Initialize(mapload) - if (check_holidays(APRIL_FOOLS)) - color = "#[random_short_color()]" - return ..() +/obj/effect/turf_decal/tile/neutral/tram + pattern = PATTERN_VERTICAL_STRIPE /// Automatically generates all subtypes for a decal with the given path. #define TILE_DECAL_SUBTYPE_HELPER(path)\ @@ -37,18 +36,21 @@ }\ ##path/diagonal_edge {\ icon_state = "diagonal_edge";\ +}\ +##path/tram {\ + icon_state = "tile_tram";\ } /// Blue tiles /obj/effect/turf_decal/tile/blue - name = "blue corner" + name = "blue tile decal" color = "#52B4E9" TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/blue) /// Dark blue tiles /obj/effect/turf_decal/tile/dark_blue - name = "dark blue corner" + name = "dark blue tile decal" color = "#486091" TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/dark_blue) @@ -56,7 +58,7 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/dark_blue) /// Green tiles /obj/effect/turf_decal/tile/green - name = "green corner" + name = "green tile decal" color = "#9FED58" TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/green) @@ -64,7 +66,7 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/green) /// Dark green tiles /obj/effect/turf_decal/tile/dark_green - name = "dark green corner" + name = "dark green tile decal" color = "#439C1E" TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/dark_green) @@ -72,7 +74,7 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/dark_green) /// Yellow tiles /obj/effect/turf_decal/tile/yellow - name = "yellow corner" + name = "yellow tile decal" color = "#EFB341" TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/yellow) @@ -80,7 +82,7 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/yellow) /// Red tiles /obj/effect/turf_decal/tile/red - name = "red corner" + name = "red tile decal" color = "#DE3A3A" TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/red) @@ -88,7 +90,7 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/red) /// Dark red tiles /obj/effect/turf_decal/tile/dark_red - name = "dark red corner" + name = "dark red tile decal" color = "#B11111" TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/dark_red) @@ -96,7 +98,7 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/dark_red) /// Bar tiles /obj/effect/turf_decal/tile/bar - name = "bar corner" + name = "bar tile decal" color = "#791500" alpha = 130 @@ -105,7 +107,7 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/bar) /// Purple tiles /obj/effect/turf_decal/tile/purple - name = "purple corner" + name = "purple tile decal" color = "#D381C9" TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/purple) @@ -113,7 +115,7 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/purple) /// Brown tiles /obj/effect/turf_decal/tile/brown - name = "brown corner" + name = "brown tile decal" color = "#A46106" TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/brown) @@ -121,7 +123,7 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/brown) /// Neutral tiles /obj/effect/turf_decal/tile/neutral - name = "neutral corner" + name = "neutral tile decal" color = "#D4D4D4" alpha = 50 @@ -130,22 +132,35 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/neutral) /// Dark tiles /obj/effect/turf_decal/tile/dark - name = "dark corner" + name = "dark tile decal" color = "#0e0f0f" TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/dark) -/// Random tiles +/// Date-specific tiles +/obj/effect/turf_decal/tile/holiday + name = "ERROR tile decal" + color = "#FF0000" -/obj/effect/turf_decal/tile/random // so many colors - name = "colorful corner" - color = "#E300FF" //bright pink as default for mapping +/obj/effect/turf_decal/tile/holiday/Initialize(mapload) + color = request_holiday_colors(src, pattern) + alpha = DECAL_ALPHA + return ..() -TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/random) +/// Pattern tiles +/obj/effect/turf_decal/tile/holiday/rainbow + name = "rainbow tile decal" + color = "#75C9EB" //bright blue as default for mapping + pattern = PATTERN_RAINBOW -/obj/effect/turf_decal/tile/random/Initialize(mapload) - color = "#[random_short_color()]" - return ..() +TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/holiday/rainbow) + +/obj/effect/turf_decal/tile/holiday/random // so many colors + name = "colorful tile decal" + color = "#E300FF" //bright pink as default for mapping + pattern = PATTERN_RANDOM + +TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/holiday/random) #undef TILE_DECAL_SUBTYPE_HELPER @@ -154,10 +169,29 @@ TILE_DECAL_SUBTYPE_HELPER(/obj/effect/turf_decal/tile/random) layer = TURF_PLATING_DECAL_LAYER alpha = 110 icon_state = "trimline_box" + use_holiday_colors = TRUE + +/obj/effect/turf_decal/trimline/tram + pattern = PATTERN_VERTICAL_STRIPE + +/obj/effect/turf_decal/trimline/tram/filled/corner/Initialize(mapload) + if(use_holiday_colors) + var/current_holiday_color = request_holiday_colors(src, pattern) + if(current_holiday_color) + color = current_holiday_color + alpha = DECAL_ALPHA + else + color = "#ffc875" + return ..() -/obj/effect/turf_decal/trimline/Initialize(mapload) - if(check_holidays(APRIL_FOOLS)) - color = "#[random_short_color()]" +/obj/effect/turf_decal/trimline/tram/filled/line/Initialize(mapload) + if(use_holiday_colors) + var/current_holiday_color = request_holiday_colors(src, pattern) + if(current_holiday_color) + color = current_holiday_color + alpha = DECAL_ALPHA + else + color = "#ffc875" return ..() /// Automatically generates all trimlines for a decal with the given path. @@ -285,6 +319,13 @@ TRIMLINE_SUBTYPE_HELPER(/obj/effect/turf_decal/trimline/brown) TRIMLINE_SUBTYPE_HELPER(/obj/effect/turf_decal/trimline/neutral) +/// Tram trimlines +/obj/effect/turf_decal/trimline/tram + color = "#D4D4D4" + alpha = 50 + +TRIMLINE_SUBTYPE_HELPER(/obj/effect/turf_decal/trimline/tram) + /// Dark trimlines /obj/effect/turf_decal/trimline/dark color = "#0e0f0f" @@ -292,3 +333,4 @@ TRIMLINE_SUBTYPE_HELPER(/obj/effect/turf_decal/trimline/neutral) TRIMLINE_SUBTYPE_HELPER(/obj/effect/turf_decal/trimline/dark) #undef TRIMLINE_SUBTYPE_HELPER +#undef DECAL_ALPHA diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index d5069b20f1fe..a316ee92c5d9 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -1,4 +1,4 @@ - +/* monkestation edit: replaced in [monkestation\code\game\objects\effects\glowshroom.dm] GLOBAL_VAR_INIT(glowshrooms, 0) /obj/structure/glowshroom @@ -57,14 +57,6 @@ GLOBAL_VAR_INIT(glowshrooms, 0) . = ..() . += "This is a [generation]\th generation [name]!" -/** - * Creates a new glowshroom structure. - * - * Arguments: - * * newseed - Seed of the shroom - */ - - /obj/structure/glowshroom/Initialize(mapload, obj/item/seeds/newseed) . = ..() @@ -121,10 +113,6 @@ GLOBAL_VAR_INIT(glowshrooms, 0) STOP_PROCESSING(SSobj, src) return ..() -/** - * Causes glowshroom spreading across the floor/walls. - */ - /obj/structure/glowshroom/process(seconds_per_tick) if(COOLDOWN_FINISHED(src, spread_cooldown)) COOLDOWN_START(src, spread_cooldown, rand(min_delay_spread, max_delay_spread)) @@ -223,12 +211,6 @@ GLOBAL_VAR_INIT(glowshrooms, 0) floor = 1 return 1 -/** - * Causes the glowshroom to decay by decreasing its endurance, destroying it when it gets too low. - * - * Arguments: - * * amount - Amount of endurance to be reduced due to spread decay. - */ /obj/structure/glowshroom/proc/Decay(amount) myseed.adjust_endurance(-amount * endurance_decay_rate) take_damage(amount) @@ -267,3 +249,4 @@ GLOBAL_VAR_INIT(glowshrooms, 0) myseed.potency = 50 myseed.endurance = 50 myseed.yield = 5 +monkestation end */ diff --git a/code/game/objects/effects/spawners/random/entertainment.dm b/code/game/objects/effects/spawners/random/entertainment.dm index 13687301eb5e..61ebf8c5b783 100644 --- a/code/game/objects/effects/spawners/random/entertainment.dm +++ b/code/game/objects/effects/spawners/random/entertainment.dm @@ -283,6 +283,7 @@ /obj/item/toy/plush/abductor = 3, /obj/item/toy/plush/abductor/agent = 3, /obj/item/toy/plush/greek_cucumber = 3, + /obj/item/toy/plush/shark = 3, // super rare plushies /obj/item/toy/plush/bubbleplush = 2, /obj/item/toy/plush/ratplush = 2, diff --git a/code/game/objects/effects/spawners/random/techstorage.dm b/code/game/objects/effects/spawners/random/techstorage.dm index e79d4ca3bac1..30349d7db765 100644 --- a/code/game/objects/effects/spawners/random/techstorage.dm +++ b/code/game/objects/effects/spawners/random/techstorage.dm @@ -44,6 +44,15 @@ /obj/item/circuitboard/machine/chem_dispenser/drinks, /obj/item/circuitboard/machine/chem_dispenser/drinks/beer, /obj/item/circuitboard/computer/slot_machine, + // monkestation start: botany stuff + /obj/item/circuitboard/machine/composters, + /obj/item/circuitboard/machine/plantgenes, + /obj/item/circuitboard/machine/biogenerator, + /obj/item/circuitboard/machine/hydroponics, + /obj/item/circuitboard/machine/seed_extractor, + /obj/item/circuitboard/machine/chicken_grinder, + /obj/item/circuitboard/machine/feed_machine, + // monkestation end ) /obj/effect/spawner/random/techstorage/rnd_all @@ -63,6 +72,7 @@ /obj/item/circuitboard/machine/nanite_program_hub, /obj/item/circuitboard/computer/scan_consolenew, /obj/item/circuitboard/machine/dnascanner, + /obj/item/circuitboard/machine/dna_infuser, ) /obj/effect/spawner/random/techstorage/security_all diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index b62b84e1d813..1642cb72e7ad 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -230,7 +230,7 @@ return //stuff tied to the area to rename - var/list/to_rename = list( + var/static/list/to_rename = typecacheof(list( /obj/machinery/airalarm, /obj/machinery/atmospherics/components/unary/vent_scrubber, /obj/machinery/atmospherics/components/unary/vent_pump, @@ -238,9 +238,9 @@ /obj/machinery/firealarm, /obj/machinery/light_switch, /obj/machinery/power/apc, - ) - - for(var/obj/machine as anything in area) - if(is_type_in_list(machine, to_rename)) - machine.name = replacetext(machine.name, oldtitle, title) + )) + for (var/list/zlevel_turfs as anything in area.get_zlevel_turf_lists()) + for (var/turf/area_turf as anything in zlevel_turfs) + for(var/obj/machine as anything in typecache_filter_list(area_turf.contents, to_rename)) + machine.name = replacetext(machine.name, oldtitle, title) //TODO: much much more. Unnamed airlocks, cameras, etc. diff --git a/code/game/objects/items/botpad_remote.dm b/code/game/objects/items/botpad_remote.dm index 70a74ad3be6b..5987ea406980 100644 --- a/code/game/objects/items/botpad_remote.dm +++ b/code/game/objects/items/botpad_remote.dm @@ -1,12 +1,12 @@ /obj/item/botpad_remote - name = "Bot pad controller" - desc = "Use this device to control the connected bot pad." - desc_controls = "Left-click for launch, right-click for recall." + name = "orbital bot pad controller" + desc = "Use this device to control the connected orbital bot pad." + desc_controls = "Use in hand to launch, right-click to recall back to the pad." icon = 'icons/obj/device.dmi' icon_state = "botpad_controller" w_class = WEIGHT_CLASS_SMALL // ID of the remote, used for linking up - var/id = "botlauncher" + // var/id = "botlauncher" MONKESTATION removal var/obj/machinery/botpad/connected_botpad /obj/item/botpad_remote/Destroy() @@ -39,7 +39,7 @@ else if(!connected_botpad && istype(buffered_remote, /obj/machinery/botpad)) connected_botpad = buffered_remote connected_botpad.connected_remote = src - connected_botpad.id = id + // connected_botpad.id = id MONKESTATION REMOVAL multitool.buffer = null to_chat(user, span_notice("You connect the controller to the pad with data from the [multitool.name]'s buffer.")) else @@ -52,7 +52,9 @@ if(connected_botpad.panel_open) user?.balloon_alert(user, "close the panel!") return +/* MONKESTATION REMOVAL START if(!(locate(/mob/living/simple_animal/bot) in get_turf(connected_botpad))) user?.balloon_alert(user, "no bots detected on the pad!") return + MONKESTATION REMOVAL END */ connected_botpad.launch(user) diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index f9c7a42f4054..7ed2ea9d1572 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -1532,31 +1532,37 @@ switch(action) if("mod_access") - var/access_type = params["access_target"] - var/try_wildcard = params["access_wildcard"] - if(access_type in access) - remove_access(list(access_type)) - LOG_ID_ACCESS_CHANGE(usr, src, "removed [SSid_access.get_access_desc(access_type)]") + // monkestation start: allow multiple access edits at once + var/list/id_actions = params["actions"] + if(!islist(id_actions) || !length(id_actions)) return TRUE - - if(!(access_type in target_card.access)) - to_chat(usr, span_notice("ID error: ID card rejected your attempted access modification.")) - LOG_ID_ACCESS_CHANGE(usr, src, "failed to add [SSid_access.get_access_desc(access_type)][try_wildcard ? " with wildcard [try_wildcard]" : ""]") - return TRUE - - if(!can_add_wildcards(list(access_type), try_wildcard)) - to_chat(usr, span_notice("ID error: ID card rejected your attempted access modification.")) - LOG_ID_ACCESS_CHANGE(usr, src, "failed to add [SSid_access.get_access_desc(access_type)][try_wildcard ? " with wildcard [try_wildcard]" : ""]") - return TRUE - - if(!add_access(list(access_type), try_wildcard)) - to_chat(usr, span_notice("ID error: ID card rejected your attempted access modification.")) - LOG_ID_ACCESS_CHANGE(usr, src, "failed to add [SSid_access.get_access_desc(access_type)][try_wildcard ? " with wildcard [try_wildcard]" : ""]") - return TRUE - - if(access_type in ACCESS_ALERT_ADMINS) - message_admins("[ADMIN_LOOKUPFLW(usr)] just added [SSid_access.get_access_desc(access_type)] to an ID card [ADMIN_VV(src)] [(registered_name) ? "belonging to [registered_name]." : "with no registered name."]") - LOG_ID_ACCESS_CHANGE(usr, src, "added [SSid_access.get_access_desc(access_type)]") + for(var/list/id_action in id_actions) + var/access_type = id_action["access_target"] + var/try_wildcard = id_action["access_wildcard"] + if(access_type in access) + remove_access(list(access_type)) + LOG_ID_ACCESS_CHANGE(usr, src, "removed [SSid_access.get_access_desc(access_type)]") + continue + + if(!(access_type in target_card.access)) + to_chat(usr, span_notice("ID error: ID card rejected your attempted access modification.")) + LOG_ID_ACCESS_CHANGE(usr, src, "failed to add [SSid_access.get_access_desc(access_type)][try_wildcard ? " with wildcard [try_wildcard]" : ""]") + return TRUE + + if(!can_add_wildcards(list(access_type), try_wildcard)) + to_chat(usr, span_notice("ID error: ID card rejected your attempted access modification.")) + LOG_ID_ACCESS_CHANGE(usr, src, "failed to add [SSid_access.get_access_desc(access_type)][try_wildcard ? " with wildcard [try_wildcard]" : ""]") + return TRUE + + if(!add_access(list(access_type), try_wildcard)) + to_chat(usr, span_notice("ID error: ID card rejected your attempted access modification.")) + LOG_ID_ACCESS_CHANGE(usr, src, "failed to add [SSid_access.get_access_desc(access_type)][try_wildcard ? " with wildcard [try_wildcard]" : ""]") + return TRUE + + if(access_type in ACCESS_ALERT_ADMINS) + message_admins("[ADMIN_LOOKUPFLW(usr)] just added [SSid_access.get_access_desc(access_type)] to an ID card [ADMIN_VV(src)] [(registered_name) ? "belonging to [registered_name]." : "with no registered name."]") + LOG_ID_ACCESS_CHANGE(usr, src, "added [SSid_access.get_access_desc(access_type)]") + // monkestation end return TRUE /obj/item/card/id/advanced/chameleon/attack_self(mob/user) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 1e30dd1f4257..e65fcf02d60d 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -173,7 +173,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/choke_forever = FALSE /// When choking, what is the maximum amount of time we COULD choke for var/choke_time_max = 30 SECONDS // I am mean - /// What type of pollution does this produce on smoking, changed to weed pollution sometimes + /// What type of pollution does this produce on smoking, changed to weed pollution sometimes, monkestation edit var/pollution_type = /datum/pollutant/smoke /// The particle effect of the smoke rising out of the cigarette when lit VAR_PRIVATE/obj/effect/abstract/particle_holder/cig_smoke @@ -719,7 +719,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM name = "smoking pipe" desc = "A pipe, for smoking. Probably made of meerschaum or something." icon_state = "pipeoff" - icon_on = "pipeff" //Note - these are in masks.dmi + icon_on = "pipeoff" //Note - these are in masks.dmi icon_off = "pipeoff" inhand_icon_state = null inhand_icon_on = null @@ -791,7 +791,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM name = "corn cob pipe" desc = "A nicotine delivery system popularized by folksy backwoodsmen and kept popular in the modern age and beyond by space hipsters. Can be loaded with objects." icon_state = "cobpipeoff" - icon_on = "cobpipeff" //Note - these are in masks.dmi + icon_on = "cobpipeoff" //Note - these are in masks.dmi icon_off = "cobpipeoff" inhand_icon_on = null inhand_icon_off = null diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm index 589ccda5ffac..220cb6b22df0 100644 --- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm @@ -639,7 +639,8 @@ /obj/machinery/vending/imported = "NT Sustenance Supplier", /obj/machinery/vending/imported/yangyu = "Fudobenda", /obj/machinery/vending/imported/mothic = "Nomad Fleet Ration Chit Exchange", - /obj/machinery/vending/imported/tizirian = "Tizirian Imported Delicacies",) + /obj/machinery/vending/imported/tizirian = "Tizirian Imported Delicacies", + /obj/machinery/vending/plushvendor = "Plushie Vendor",) /obj/item/circuitboard/machine/vendor/screwdriver_act(mob/living/user, obj/item/tool) var/static/list/display_vending_names_paths @@ -1039,7 +1040,7 @@ req_components = list() /obj/item/circuitboard/machine/botpad - name = "Bot launchpad" + name = "Bot Orbital Pad" greyscale_colors = CIRCUIT_COLOR_SCIENCE build_path = /obj/machinery/botpad req_components = list() diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index c5a156d32ff8..3171bd2d8ef1 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -6,8 +6,10 @@ icon_state = "lipstick" inhand_icon_state = "lipstick" w_class = WEIGHT_CLASS_TINY - var/colour = "red" var/open = FALSE + /// Actual color of the lipstick, also gets applied to the human + var/lipstick_color = COLOR_RED + /// A trait that's applied while someone has this lipstick applied, and is removed when the lipstick is removed var/lipstick_trait @@ -31,33 +33,32 @@ if(!open) return var/mutable_appearance/colored_overlay = mutable_appearance(icon, "lipstick_uncap_color") - colored_overlay.color = colour + colored_overlay.color = lipstick_color . += colored_overlay /obj/item/lipstick/purple name = "purple lipstick" - colour = "purple" + lipstick_color = COLOR_PURPLE /obj/item/lipstick/jade - //It's still called Jade, but theres no HTML color for jade, so we use lime. name = "jade lipstick" - colour = "lime" + lipstick_color = COLOR_JADE /obj/item/lipstick/blue name = "blue lipstick" - colour = "blue" + lipstick_color = COLOR_BLUE /obj/item/lipstick/green name = "green lipstick" - colour = "green" + lipstick_color = COLOR_GREEN /obj/item/lipstick/white name = "white lipstick" - colour = "white" + lipstick_color = COLOR_WHITE /obj/item/lipstick/black name = "black lipstick" - colour = "black" + lipstick_color = COLOR_BLACK /obj/item/lipstick/black/death name = "\improper Kiss of Death" @@ -71,8 +72,16 @@ /obj/item/lipstick/random/Initialize(mapload) . = ..() icon_state = "lipstick" - colour = pick("red","purple","lime","black","green","blue","white") - name = "[colour] lipstick" + var/static/list/possible_colors + if(!possible_colors) + possible_colors = list() + for(var/obj/item/lipstick/lipstick_path as anything in (typesof(/obj/item/lipstick) - src.type)) + if(!initial(lipstick_path.lipstick_color)) + continue + possible_colors[initial(lipstick_path.lipstick_color)] = initial(lipstick_path.name) + lipstick_color = pick(possible_colors) + name = possible_colors[lipstick_color] + update_appearance() /obj/item/lipstick/attack_self(mob/user) to_chat(user, span_notice("You twist [src] [open ? "closed" : "open"].")) @@ -98,7 +107,7 @@ if(target == user) user.visible_message(span_notice("[user] does [user.p_their()] lips with \the [src]."), \ span_notice("You take a moment to apply \the [src]. Perfect!")) - target.update_lips("lipstick", colour, lipstick_trait) + target.update_lips("lipstick", lipstick_color, lipstick_trait) return user.visible_message(span_warning("[user] begins to do [target]'s lips with \the [src]."), \ @@ -107,7 +116,7 @@ return user.visible_message(span_notice("[user] does [target]'s lips with \the [src]."), \ span_notice("You apply \the [src] on [target]'s lips.")) - target.update_lips("lipstick", colour, lipstick_trait) + target.update_lips("lipstick", lipstick_color, lipstick_trait) //you can wipe off lipstick with paper! @@ -128,156 +137,3 @@ user.visible_message(span_notice("[user] wipes [target]'s lipstick off with \the [src]."), \ span_notice("You wipe off [target]'s lipstick.")) target.update_lips(null) - - -/obj/item/razor - name = "electric razor" - desc = "The latest and greatest power razor born from the science of shaving." - icon = 'icons/obj/cosmetic.dmi' - icon_state = "razor" - inhand_icon_state = "razor" - toolspeed = 1 - flags_1 = CONDUCT_1 - w_class = WEIGHT_CLASS_TINY - var/unlocked = FALSE //for unlocking super hairstyles - -/obj/item/razor/suicide_act(mob/living/carbon/user) - user.visible_message(span_suicide("[user] begins shaving [user.p_them()]self without the razor guard! It looks like [user.p_theyre()] trying to commit suicide!")) - shave(user, BODY_ZONE_PRECISE_MOUTH) - shave(user, BODY_ZONE_HEAD)//doesnt need to be BODY_ZONE_HEAD specifically, but whatever - return BRUTELOSS - -/obj/item/razor/attack(mob/M, mob/living/user) - if(SEND_SIGNAL(M, COMSIG_MOB_SHEARED, toolspeed, src, user)) - return - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/location = user.zone_selected - if((location in list(BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_HEAD)) && !H.get_bodypart(BODY_ZONE_HEAD)) - to_chat(user, span_warning("[H] doesn't have a head!")) - return - if(location == BODY_ZONE_PRECISE_MOUTH) - if(!(user.istate & ISTATE_HARM)) - if(H.gender == MALE) - if (H == user) - to_chat(user, span_warning("You need a mirror to properly style your own facial hair!")) - return - if(!user.can_perform_action(src, FORBID_TELEKINESIS_REACH)) - return - var/new_style = tgui_input_list(user, "Select a facial hairstyle", "Grooming", GLOB.facial_hairstyles_list) - if(isnull(new_style)) - return - if(!get_location_accessible(H, location)) - to_chat(user, span_warning("The mask is in the way!")) - return - if(HAS_TRAIT(H, TRAIT_SHAVED)) - to_chat(user, span_warning("[H] is just way too shaved. Like, really really shaved.")) - return - user.visible_message(span_notice("[user] tries to change [H]'s facial hairstyle using [src]."), span_notice("You try to change [H]'s facial hairstyle using [src].")) - if(new_style && do_after(user, 60, target = H)) - user.visible_message(span_notice("[user] successfully changes [H]'s facial hairstyle using [src]."), span_notice("You successfully change [H]'s facial hairstyle using [src].")) - H.facial_hairstyle = new_style - H.update_body_parts() - return - else - return - - else - if(!(FACEHAIR in H.dna.species.species_traits)) - to_chat(user, span_warning("There is no facial hair to shave!")) - return - if(!get_location_accessible(H, location)) - to_chat(user, span_warning("The mask is in the way!")) - return - if(H.facial_hairstyle == "Shaved") - to_chat(user, span_warning("Already clean-shaven!")) - return - - if(H == user) //shaving yourself - user.visible_message(span_notice("[user] starts to shave [user.p_their()] facial hair with [src]."), \ - span_notice("You take a moment to shave your facial hair with [src]...")) - if(do_after(user, 50, target = H)) - user.visible_message(span_notice("[user] shaves [user.p_their()] facial hair clean with [src]."), \ - span_notice("You finish shaving with [src]. Fast and clean!")) - shave(H, location) - else - user.visible_message(span_warning("[user] tries to shave [H]'s facial hair with [src]."), \ - span_notice("You start shaving [H]'s facial hair...")) - if(do_after(user, 50, target = H)) - user.visible_message(span_warning("[user] shaves off [H]'s facial hair with [src]."), \ - span_notice("You shave [H]'s facial hair clean off.")) - shave(H, location) - - else if(location == BODY_ZONE_HEAD) - if(!(user.istate & ISTATE_HARM)) - if (H == user) - to_chat(user, span_warning("You need a mirror to properly style your own hair!")) - return - if(!user.can_perform_action(src, FORBID_TELEKINESIS_REACH)) - return - var/new_style - if(src.unlocked) - new_style = tgui_input_list(user, "Select a hair style", "Grooming", GLOB.hairstyles_list) - else - new_style = tgui_input_list(user, "Select a hair style", "Grooming", GLOB.roundstart_hairstyles_list) - if(isnull(new_style)) - return - if(!get_location_accessible(H, location)) - to_chat(user, span_warning("The headgear is in the way!")) - return - if(HAS_TRAIT(H, TRAIT_BALD)) - to_chat(user, span_warning("[H] is just way too bald. Like, really really bald.")) - return - user.visible_message(span_notice("[user] tries to change [H]'s hairstyle using [src]."), span_notice("You try to change [H]'s hairstyle using [src].")) - if(new_style && do_after(user, 60, target = H)) - user.visible_message(span_notice("[user] successfully changes [H]'s hairstyle using [src]."), span_notice("You successfully change [H]'s hairstyle using [src].")) - H.hairstyle = new_style - H.update_body_parts() - return - - else - if(!(HAIR in H.dna.species.species_traits)) - to_chat(user, span_warning("There is no hair to shave!")) - return - if(!get_location_accessible(H, location)) - to_chat(user, span_warning("The headgear is in the way!")) - return - if(H.hairstyle == "Bald" || H.hairstyle == "Balding Hair" || H.hairstyle == "Skinhead") - to_chat(user, span_warning("There is not enough hair left to shave!")) - return - - if(H == user) //shaving yourself - user.visible_message(span_notice("[user] starts to shave [user.p_their()] head with [src]."), \ - span_notice("You start to shave your head with [src]...")) - if(do_after(user, 5, target = H)) - user.visible_message(span_notice("[user] shaves [user.p_their()] head with [src]."), \ - span_notice("You finish shaving with [src].")) - shave(H, location) - else - var/turf/H_loc = H.loc - user.visible_message(span_warning("[user] tries to shave [H]'s head with [src]!"), \ - span_notice("You start shaving [H]'s head...")) - if(do_after(user, 50, target = H)) - if(H_loc == H.loc) - user.visible_message(span_warning("[user] shaves [H]'s head bald with [src]!"), \ - span_notice("You shave [H]'s head bald.")) - shave(H, location) - else - ..() - else - ..() - -/obj/item/razor/attackby(obj/item/item, mob/user, params) - .=..() - if(istype(item, /obj/item/stack/sheet/mineral/bananium)) - if(unlocked) - to_chat(user, "[src] is already powered by bananium!") - return - item.use_tool(src, user, amount=1) - unlocked = TRUE - to_chat(user, "You insert the bananium into the battery pack.") - -/obj/item/razor/gigarazor - name = "shmick 9000" - desc = "It gets the job done." - unlocked = TRUE diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index 71b6080f6cea..c748d70e6fcf 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -14,6 +14,10 @@ var/flush = FALSE var/mob/living/silicon/ai/AI +/obj/item/aicard/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_CASTABLE_LOC, INNATE_TRAIT) + /obj/item/aicard/Destroy(force) if(AI) AI.ghostize(can_reenter_corpse = FALSE) diff --git a/code/game/objects/items/devices/portable_chem_mixer.dm b/code/game/objects/items/devices/portable_chem_mixer.dm index 43c74de6c7fd..a6a7afee22a7 100644 --- a/code/game/objects/items/devices/portable_chem_mixer.dm +++ b/code/game/objects/items/devices/portable_chem_mixer.dm @@ -1,6 +1,6 @@ /obj/item/storage/portable_chem_mixer - name = "Portable Chemical Mixer" - desc = "A portable device that dispenses and mixes chemicals. All necessary reagents need to be supplied with beakers. A label indicates that the 'CTRL'-button on the device may be used to open it for refills. This device can be worn as a belt. The letters 'S&T' are imprinted on the side." + name = "portable chemical mixer" + desc = "A portable device that dispenses and mixes chemicals using reagents inside containers. The letters 'S&T' are imprinted on the side." icon = 'icons/obj/medical/chemical.dmi' icon_state = "portablechemicalmixer_open" worn_icon_state = "portable_chem_mixer" @@ -30,10 +30,40 @@ /obj/item/reagent_containers/condiment, )) + register_context() + /obj/item/storage/portable_chem_mixer/Destroy() QDEL_NULL(beaker) return ..() +/obj/item/storage/portable_chem_mixer/add_context(atom/source, list/context, obj/item/held_item, mob/user) + context[SCREENTIP_CONTEXT_CTRL_LMB] = "[atom_storage.locked ? "Unl" : "L"]ock storage" + if(atom_storage.locked && !QDELETED(beaker)) + context[SCREENTIP_CONTEXT_ALT_LMB] = "Eject beaker" + + if(!isnull(held_item)) + if (!atom_storage.locked || \ + (held_item.item_flags & ABSTRACT) || \ + (held_item.flags_1 & HOLOGRAM_1) || \ + !is_reagent_container(held_item) || \ + !held_item.is_open_container() \ + ) + return CONTEXTUAL_SCREENTIP_SET + context[SCREENTIP_CONTEXT_LMB] = "Insert beaker" + + return CONTEXTUAL_SCREENTIP_SET + +/obj/item/storage/portable_chem_mixer/examine(mob/user) + . = ..() + if(!atom_storage.locked) + . += span_notice("Use [EXAMINE_HINT("Ctrl Click")] to lock in order to use its interface.") + else + . += span_notice("Its storage is locked, use [EXAMINE_HINT("Ctrl Click")] to unlock it.") + if(QDELETED(beaker)) + . += span_notice("A beaker can be inserted to dispense reagents after it is locked.") + else + . += span_notice("The stored beaker can be ejected with [EXAMINE_HINT("Alt Click")].") + /obj/item/storage/portable_chem_mixer/ex_act(severity, target) if(severity > EXPLODE_LIGHT) return ..() @@ -45,7 +75,6 @@ if(!user.transferItemToLoc(B, src)) return replace_beaker(user, B) - update_appearance() ui_interact(user) return return ..() @@ -56,22 +85,33 @@ * A list of dispensable reagents is created by iterating through each source beaker in the portable chemical beaker and reading its contents */ /obj/item/storage/portable_chem_mixer/proc/update_contents() + PRIVATE_PROC(TRUE) + dispensable_reagents.Cut() + //MONKESTATION EDIT STAT for (var/obj/item/reagent_containers/B in contents) - var/key = B.reagents.get_master_reagent_id() - if (!(key in dispensable_reagents)) - dispensable_reagents[key] = list() - dispensable_reagents[key]["reagents"] = list() - dispensable_reagents[key]["reagents"] += B.reagents - + if(beaker && B == beaker) + continue + for(var/datum/reagent/reagent in B.reagents.reagent_list) + var/key = reagent.type + if (!(key in dispensable_reagents)) + dispensable_reagents[key] = list() + dispensable_reagents[key]["reagents"] = list() + dispensable_reagents[key]["reagents"] += B.reagents + //MONKESTATION EDIT END return +/obj/item/storage/portable_chem_mixer/Exited(atom/movable/gone, direction) + . = ..() + if(gone == beaker) + beaker = null + /obj/item/storage/portable_chem_mixer/update_icon_state() if(!atom_storage.locked) icon_state = "portablechemicalmixer_open" return ..() - if(beaker) + if(!QDELETED(beaker)) icon_state = "portablechemicalmixer_full" return ..() icon_state = "portablechemicalmixer_empty" @@ -80,18 +120,21 @@ /obj/item/storage/portable_chem_mixer/AltClick(mob/living/user) if(!atom_storage.locked) + balloon_alert(user, "lock first to use alt eject!") return ..() if(!can_interact(user) || !user.can_perform_action(src, FORBID_TELEKINESIS_REACH)) return replace_beaker(user) - update_appearance() /obj/item/storage/portable_chem_mixer/CtrlClick(mob/living/user) - atom_storage.locked = !atom_storage.locked - if (!atom_storage.locked) + if(atom_storage.locked == STORAGE_FULLY_LOCKED) + atom_storage.locked = STORAGE_NOT_LOCKED + else + atom_storage.locked = STORAGE_FULLY_LOCKED + atom_storage.hide_contents(user) update_contents() - if (atom_storage.locked) - replace_beaker(user) + + to_chat(user, span_notice("You [atom_storage.locked ? "close" : "open"] the chemical storage of \the [src].")) update_appearance() playsound(src, 'sound/items/screwdriver2.ogg', 50) return @@ -105,14 +148,18 @@ * * obj/item/reagent_containers/new_beaker - The new beaker that the user wants to put into the device */ /obj/item/storage/portable_chem_mixer/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker) + PRIVATE_PROC(TRUE) + if(!user) - return FALSE - if(beaker) + return + + if(!QDELETED(beaker)) user.put_in_hands(beaker) - beaker = null - if(new_beaker) - beaker = new_beaker - return TRUE + if(!QDELETED(new_beaker)) + if(user.transferItemToLoc(new_beaker, src)) + beaker = new_beaker + to_chat(user, span_notice("You add \the [new_beaker] to \the [src].")) + update_appearance() /obj/item/storage/portable_chem_mixer/attack_hand(mob/user, list/modifiers) if (loc != user) @@ -128,11 +175,13 @@ if(loc == user) if (atom_storage.locked) ui_interact(user) +/*MONKESTATION REMOVAL START return else to_chat(user, span_notice("It looks like this device can be worn as a belt for increased accessibility. A label indicates that the 'CTRL'-button on the device may be used to close it after it has been filled with bottles and beakers of chemicals.")) return return +MONKESTATION REMOVAL END */ /obj/item/storage/portable_chem_mixer/MouseDrop(obj/over_object) . = ..() @@ -142,21 +191,24 @@ var/atom/movable/screen/inventory/hand/H = over_object M.putItemFromInventoryInHandIfPossible(src, H.held_index) +/obj/item/storage/portable_chem_mixer/ui_status(mob/user, datum/ui_state/state) + if(loc != user) + return UI_CLOSE + if(!atom_storage.locked) //MONKESTATION ADDITION + return UI_DISABLED + return ..() + /obj/item/storage/portable_chem_mixer/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "PortableChemMixer", name) + ui.open() var/is_hallucinating = FALSE if(isliving(user)) var/mob/living/living_user = user is_hallucinating = !!living_user.has_status_effect(/datum/status_effect/hallucination) - - if(is_hallucinating) - // to not ruin the immersion by constantly changing the fake chemicals - ui.set_autoupdate(FALSE) - - ui.open() + ui.set_autoupdate(!is_hallucinating) // to not ruin the immersion by constantly changing the fake chemicals /obj/item/storage/portable_chem_mixer/ui_data(mob/user) var/list/data = list() @@ -172,22 +224,23 @@ var/mob/living/living_user = user is_hallucinating = !!living_user.has_status_effect(/datum/status_effect/hallucination) - for(var/re in dispensable_reagents) - var/value = dispensable_reagents[re] - var/datum/reagent/temp = GLOB.chemical_reagents_list[re] + for(var/datum/reagent/reagent_type as anything in dispensable_reagents) + var/datum/reagent/temp = GLOB.chemical_reagents_list[reagent_type] if(temp) var/chemname = temp.name var/total_volume = 0 - var/total_ph = 0 - for (var/datum/reagents/rs in value["reagents"]) - total_volume += rs.total_volume - total_ph = rs.ph + //MONKESTATION EDIT START + for (var/datum/reagents/rs in dispensable_reagents[reagent_type]["reagents"]) + var/datum/reagent/RG = rs.has_reagent(reagent_type) + if(RG) + total_volume += RG.volume if(is_hallucinating && prob(5)) chemname = "[pick_list_replacements("hallucination.json", "chemicals")]" - chemicals.Add(list(list("title" = chemname, "id" = ckey(temp.name), "volume" = total_volume, "pH" = total_ph))) + chemicals.Add(list(list("title" = chemname, "id" = ckey(temp.name), "volume" = total_volume, "pH" = reagent_type.ph))) + //MONKESTATION EDIT END data["chemicals"] = chemicals var/beakerContents[0] - if(beaker) + if(!QDELETED(beaker)) for(var/datum/reagent/R in beaker.reagents.reagent_list) var/chem_name = R.name if(istype(R, /datum/reagent/ammonia/urine) && user.client?.prefs.read_preference(/datum/preference/toggle/prude_mode)) @@ -208,18 +261,16 @@ amount = target . = TRUE if("dispense") - var/reagent_name = params["reagent"] - var/datum/reagent/reagent = GLOB.name2reagent[reagent_name] - var/entry = dispensable_reagents[reagent] - if(beaker) + var/datum/reagent/reagent = GLOB.name2reagent[params["reagent"]] + if(isnull(reagent)) + return + + if(!QDELETED(beaker)) var/datum/reagents/R = beaker.reagents var/actual = min(amount, 1000, R.maximum_volume - R.total_volume) - // todo: add check if we have enough reagent left - for (var/datum/reagents/source in entry["reagents"]) - var/to_transfer = min(source.total_volume, actual) - source.trans_to(beaker, to_transfer) - actual -= to_transfer - if (actual <= 0) + for (var/datum/reagents/source in dispensable_reagents[reagent]["reagents"]) + actual -= source.trans_id_to(beaker, reagent, min(source.total_volume, actual)) //MONKESTATION EDIT + if(actual <= 0) break . = TRUE if("remove") @@ -228,5 +279,4 @@ . = TRUE if("eject") replace_beaker(usr) - update_appearance() . = TRUE diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm index fa914b99dca3..0ef37ba652a6 100644 --- a/code/game/objects/items/devices/scanners/health_analyzer.dm +++ b/code/game/objects/items/devices/scanners/health_analyzer.dm @@ -533,6 +533,60 @@ simple_scanner.show_emotion(AID_EMOTION_WARN) playsound(simple_scanner, 'sound/machines/twobeep.ogg', 50, FALSE) +//MONKESTATION ADDITION START +//Cyborgs can use an integrated health analyzer even if they cant see +/obj/item/healthanalyzer/cyborg + +/obj/item/healthanalyzer/cyborg/attack_self(mob/user) + if(!user.can_read(src, READING_CHECK_LITERACY)) + return + + scanmode = (scanmode + 1) % SCANMODE_COUNT + switch(scanmode) + if(SCANMODE_HEALTH) + to_chat(user, span_notice("You switch the health analyzer to check physical health.")) + if(SCANMODE_WOUND) + to_chat(user, span_notice("You switch the health analyzer to report extra info on wounds.")) + +/obj/item/healthanalyzer/cyborg/attack(mob/living/M, mob/living/carbon/human/user) + if(!user.can_read(src, READING_CHECK_LITERACY)) + return + + flick("[icon_state]-scan", src) //makes it so that it plays the scan animation upon scanning, including clumsy scanning + + // Clumsiness/brain damage check + if ((HAS_TRAIT(user, TRAIT_CLUMSY) || HAS_TRAIT(user, TRAIT_DUMB)) && prob(50)) + user.visible_message(span_warning("[user] analyzes the floor's vitals!"), \ + span_notice("You stupidly try to analyze the floor's vitals!")) + to_chat(user, "[span_info("Analyzing results for The floor:\n\tOverall status: Healthy")]\ + \n[span_info("Key: Suffocation/Toxin/Burn/Brute")]\ + \n[span_info("\tDamage specifics: 0-0-0-0")]\ + \n[span_info("Body temperature: ???")]") + return + + if(ispodperson(M) && !advanced) + to_chat(user, "[M]'s biological structure is too complex for the health analyzer.") + return + + user.visible_message(span_notice("[user] analyzes [M]'s vitals.")) + balloon_alert(user, "analyzing vitals") + playsound(user.loc, 'sound/items/healthanalyzer.ogg', 50) + + switch (scanmode) + if (SCANMODE_HEALTH) + healthscan(user, M, mode, advanced) + if (SCANMODE_WOUND) + woundscan(user, M, src) + + add_fingerprint(user) + +/obj/item/healthanalyzer/cyborg/attack_secondary(mob/living/victim, mob/living/user, params) + if(!user.can_read(src, READING_CHECK_LITERACY)) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + + chemscan(user, victim) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN +//MONKESTATION ADDITION END /obj/item/healthanalyzer/simple name = "wound analyzer" diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm index 28e95ac33dcf..02cb36a2fd29 100644 --- a/code/game/objects/items/dice.dm +++ b/code/game/objects/items/dice.dm @@ -442,11 +442,10 @@ var/mob/living/carbon/human/human_servant = new(drop_location()) do_smoke(0, holder = src, location = drop_location()) - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob("Do you want to play as [user.real_name]'s Servant?", check_jobban = ROLE_WIZARD, role = ROLE_WIZARD, poll_time = 5 SECONDS, target_mob = human_servant, pic_source = user, role_name_text = "dice servant") - if(LAZYLEN(candidates)) - var/mob/dead/observer/candidate = pick(candidates) - message_admins("[ADMIN_LOOKUPFLW(candidate)] was spawned as Dice Servant") - human_servant.key = candidate.key + var/mob/chosen_one = SSpolling.poll_ghosts_for_target("Do you want to play as [span_danger("[user.real_name]'s")] [span_notice("Servant")]?", check_jobban = ROLE_WIZARD, role = ROLE_WIZARD, poll_time = 5 SECONDS, checked_target = human_servant, alert_pic = user, role_name_text = "dice servant") + if(chosen_one) + message_admins("[ADMIN_LOOKUPFLW(chosen_one)] was spawned as Dice Servant") + human_servant.key = chosen_one.key human_servant.equipOutfit(/datum/outfit/butler) var/datum/mind/servant_mind = new /datum/mind() diff --git a/code/game/objects/items/emags.dm b/code/game/objects/items/emags.dm index 84eb1d50139f..1e25d25f6770 100644 --- a/code/game/objects/items/emags.dm +++ b/code/game/objects/items/emags.dm @@ -20,6 +20,7 @@ var/prox_check = TRUE //If the emag requires you to be in range var/type_blacklist //List of types that require a specialized emag + /obj/item/card/emag/attack_self(mob/user) //for traitors with balls of plastitanium if(Adjacent(user)) user.visible_message(span_notice("[user] shows you: [icon2html(src, viewers(user))] [name]."), span_notice("You show [src].")) @@ -73,8 +74,37 @@ . |= AFTERATTACK_PROCESSED_ITEM if(!can_emag(target, user)) return - log_combat(user, A, "attempted to emag") - A.emag_act(user, src) + // monkestation start: microwavable emags + if(istype(target, /obj/machinery/microwave)) + return + if (microwaved) + if (microwaved_uses_left <= 0) + to_chat(user, span_warning("the components [src] starts glowing a bright orange, before the capacitors erupt in a violent explosion!")) + to_chat(user, span_notice("How this small thing could have had this large of an explosion is byond you.")) + A.emp_act(EMP_HEAVY) + explosion(src, heavy_impact_range = 0, light_impact_range = 3) + log_combat(user, A, "attempted to emag with microwaved emag, emag exploded") + if(!QDELETED(src)) //to check if the explosion killed it before we try to delete it + qdel(src) + return . + else + A.emp_act(EMP_LIGHT) + if (microwaved_uses_left == 1) + desc += " The capacitors are leaking." + to_chat(user, span_warning("the components on [src] start glowing a burning orange!")) + to_chat(user, span_warning("[src] feels way too hot to hold in your hand, and you fumble it on to the floor.")) + user.dropItemToGround(src) + icon_state = "[icon_state]_glow" + src.visible_message(span_notice("[user] fumbles [src] and drops it on the ground, a glow fading from hot orange to dim red.")) + else + flick("[icon_state]_spark", src) + to_chat(user, span_warning(pick(list("[src] sparks in your hand!", "The components on [src] start glowing!",)))) + microwaved_uses_left-- + log_combat(user, A, "attempted to emag with microwaved emag") + else + // monkestation end + log_combat(user, A, "attempted to emag") + A.emag_act(user, src) /obj/item/card/emag/proc/can_emag(atom/target, mob/user) for (var/subtypelist in type_blacklist) diff --git a/code/game/objects/items/etherealdiscoball.dm b/code/game/objects/items/etherealdiscoball.dm index 8f20281a2ba7..2264f6296f84 100644 --- a/code/game/objects/items/etherealdiscoball.dm +++ b/code/game/objects/items/etherealdiscoball.dm @@ -17,6 +17,7 @@ icon_state = "ethdisco_head_0" anchored = TRUE density = TRUE + light_system = OVERLAY_LIGHT // monkestation edit: use overlay lighting var/TurnedOn = FALSE var/current_color var/TimerID @@ -47,7 +48,7 @@ /obj/structure/etherealball/proc/TurnOff() TurnedOn = FALSE - set_light(0) + set_light(0, update = FALSE) // monkestation edit: use overlay lighting remove_atom_colour(TEMPORARY_COLOUR_PRIORITY) update_appearance() if(TimerID) @@ -56,7 +57,7 @@ /obj/structure/etherealball/proc/DiscoFever() remove_atom_colour(TEMPORARY_COLOUR_PRIORITY) current_color = "#[random_color()]" - set_light(l_outer_range = range, l_power = power, l_color = current_color) + set_light(l_outer_range = range, l_power = power, l_color = current_color, update = FALSE) // monkestation edit: use overlay lighting add_atom_colour(current_color, FIXED_COLOUR_PRIORITY) update_appearance() TimerID = addtimer(CALLBACK(src, PROC_REF(DiscoFever)), 5, TIMER_STOPPABLE) //Call ourselves every 0.5 seconds to change colors diff --git a/code/game/objects/items/food/bait.dm b/code/game/objects/items/food/bait.dm index 5ac24baa578e..aa9a0e7bd9e9 100644 --- a/code/game/objects/items/food/bait.dm +++ b/code/game/objects/items/food/bait.dm @@ -66,4 +66,4 @@ /obj/item/food/bait/doughball/synthetic/Initialize(mapload) . = ..() - ADD_TRAIT(src, OMNI_BAIT_TRAIT, INNATE_TRAIT) + ADD_TRAIT(src, TRAIT_OMNI_BAIT, INNATE_TRAIT) diff --git a/code/game/objects/items/food/burgers.dm b/code/game/objects/items/food/burgers.dm index 6abaa3e348f9..8e0edafc7b66 100644 --- a/code/game/objects/items/food/burgers.dm +++ b/code/game/objects/items/food/burgers.dm @@ -648,3 +648,16 @@ icon_state = "custburg" tastes = list("bun") foodtypes = GRAIN + +/obj/item/food/burger/sloppy_moe + name = "sloppy moe" + desc = "Ground meat mixed with onions and barbeque sauce, sloppily plopped onto a burger bun. Delicious, but guaranteed to get your hands dirty." + icon_state = "sloppy_moe" + food_reagents = list( + /datum/reagent/consumable/nutriment = 10, + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 6, + ) + tastes = list("juicy meat" = 4, "BBQ sauce" = 3, "onions" = 2, "bun" = 2) + foodtypes = GRAIN | MEAT | VEGETABLES + venue_value = FOOD_PRICE_NORMAL diff --git a/code/game/objects/items/food/cake.dm b/code/game/objects/items/food/cake.dm index e0d7b140dc10..f35a121d5a94 100644 --- a/code/game/objects/items/food/cake.dm +++ b/code/game/objects/items/food/cake.dm @@ -640,3 +640,28 @@ icon_state = "weddingcake_slice" tastes = list("cake" = 3, "frosting" = 1) foodtypes = GRAIN | DAIRY | SUGAR + +/obj/item/food/cake/pineapple_cream_cake + name = "pineapple cream cake" + desc = "A vibrant cake with a layer of thick cream and pineapple on top." + icon_state = "pineapple_cream_cake" + food_reagents = list( + /datum/reagent/consumable/nutriment = 30, + /datum/reagent/consumable/sugar = 15, + /datum/reagent/consumable/nutriment/vitamin = 15, + ) + tastes = list("cake" = 2, "cream" = 3, "pineapple" = 4) + foodtypes = GRAIN | DAIRY | SUGAR | FRUIT | PINEAPPLE + slice_type = /obj/item/food/cakeslice/pineapple_cream_cake + +/obj/item/food/cakeslice/pineapple_cream_cake + name = "pineapple cream cake slice" + desc = "A vibrant cake with a layer of thick cream and pineapple on top." + icon_state = "pineapple_cream_cake_slice" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/sugar = 3, + /datum/reagent/consumable/nutriment/vitamin = 3, + ) + tastes = list("cake" = 2, "cream" = 3, "pineapple" = 4) + foodtypes = GRAIN | DAIRY | SUGAR | FRUIT | PINEAPPLE diff --git a/code/game/objects/items/food/meatdish.dm b/code/game/objects/items/food/meatdish.dm index e246c7476e9a..7f60ff93e7d7 100644 --- a/code/game/objects/items/food/meatdish.dm +++ b/code/game/objects/items/food/meatdish.dm @@ -671,6 +671,7 @@ /obj/item/food/nugget name = "chicken nugget" + desc = "A \"chicken\" nugget vaguely shaped like something." food_reagents = list( /datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 2, @@ -828,6 +829,7 @@ /obj/item/food/kebab/fiesta name = "fiesta skewer" + desc = "Variety of meats and vegetables on a stick." icon_state = "fiestaskewer" food_reagents = list( /datum/reagent/consumable/nutriment/protein = 12, @@ -963,3 +965,86 @@ tastes = list("juicy meat" = 3, "onions" = 1, "garlic" = 1, "ketchup" = 1) foodtypes = MEAT | VEGETABLES w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/sweet_and_sour_meatballs + name = "sweet and sour meatballs" + desc = "Golden meatballs glazed in a sticky savory sauce, served with pineapple and pepper chunks." + icon = 'icons/obj/food/meat.dmi' + icon_state = "sweet_and_sour_meatballs" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 10, + /datum/reagent/consumable/nutriment/vitamin = 8, + /datum/reagent/consumable/nutriment = 8, + ) + tastes = list("meat" = 5, "savory sauce" = 4, "tangy pineapple" = 3, "pepper" = 2) + foodtypes = MEAT | VEGETABLES | FRUIT | PINEAPPLE + +/obj/item/food/kebab/pineapple_skewer + name = "pineapple skewer" + desc = "Chunks of glazed meat skewered on a rod with pineapple slices. Surprisingly not bad!" + icon = 'icons/obj/food/meat.dmi' + icon_state = "pineapple_skewer" + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 10, + /datum/reagent/consumable/nutriment/vitamin = 8, + ) + tastes = list("juicy meat" = 4, "pineapple" = 3) + foodtypes = MEAT | FRUIT | PINEAPPLE + +/obj/item/food/futomaki_sushi_roll + name = "futomaki sushi roll" + desc = "A roll of futomaki sushi, made of boiled egg, fish, and cucumber. Sliceable" + icon_state = "futomaki_sushi_roll" + food_reagents = list( + /datum/reagent/consumable/nutriment = 12, + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 4, + ) + tastes = list("boiled rice" = 4, "fish" = 5, "egg" = 3, "dried seaweed" = 2, "cucumber" = 2) + foodtypes = VEGETABLES | SEAFOOD + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/futomaki_sushi_roll/make_processable() + AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/futomaki_sushi_slice, 4, screentip_verb = "Chop") + +/obj/item/food/futomaki_sushi_slice + name = "futomaki sushi slice" + desc = "A slice of futomaki sushi, made of boiled egg, fish, and cucumber." + icon_state = "futomaki_sushi_slice" + food_reagents = list( + /datum/reagent/consumable/nutriment = 3, + /datum/reagent/consumable/nutriment/protein = 2, + /datum/reagent/consumable/nutriment/vitamin = 1, + ) + tastes = list("boiled rice" = 4, "fish" = 5, "egg" = 3, "dried seaweed" = 2, "cucumber" = 2) + foodtypes = VEGETABLES | SEAFOOD + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/philadelphia_sushi_roll + name = "Philadelphia sushi roll" + desc = "A roll of Philadelphia sushi, made of cheese, fish, and cucumber. Sliceable" + icon_state = "philadelphia_sushi_roll" + food_reagents = list( + /datum/reagent/consumable/nutriment = 12, + /datum/reagent/consumable/nutriment/protein = 8, + /datum/reagent/consumable/nutriment/vitamin = 8, + ) + tastes = list("boiled rice" = 4, "fish" = 5, "creamy cheese" = 3, "dried seaweed" = 2, "cucumber" = 2) + foodtypes = VEGETABLES | SEAFOOD | DAIRY + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/philadelphia_sushi_roll/make_processable() + AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/philadelphia_sushi_slice, 4, screentip_verb = "Chop") + +/obj/item/food/philadelphia_sushi_slice + name = "Philadelphia sushi slice" + desc = "A roll of Philadelphia sushi, made of cheese, fish, and cucumber." + icon_state = "philadelphia_sushi_slice" + food_reagents = list( + /datum/reagent/consumable/nutriment = 3, + /datum/reagent/consumable/nutriment/protein = 2, + /datum/reagent/consumable/nutriment/vitamin = 2, + ) + tastes = list("boiled rice" = 4, "fish" = 5, "creamy cheese" = 3, "dried seaweed" = 2, "cucumber" = 2) + foodtypes = VEGETABLES | SEAFOOD | DAIRY + w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/food/meatslab.dm b/code/game/objects/items/food/meatslab.dm index 1392be355916..50b777885464 100644 --- a/code/game/objects/items/food/meatslab.dm +++ b/code/game/objects/items/food/meatslab.dm @@ -4,6 +4,28 @@ icon = 'icons/obj/food/meat.dmi' var/subjectname = "" var/subjectjob = null + var/blood_decal_type = /obj/effect/decal/cleanable/blood + +/obj/item/food/meat/Initialize(mapload) + . = ..() + + if(!blood_decal_type) + return + + AddComponent( + /datum/component/blood_walk,\ + blood_type = blood_decal_type,\ + blood_spawn_chance = 45,\ + max_blood = custom_materials[custom_materials[1]],\ + ) + + AddComponent( + /datum/component/bloody_spreader,\ + blood_left = custom_materials[custom_materials[1]],\ + blood_dna = list("meaty DNA" = "MT-"),\ + diseases = null,\ + ) + /obj/item/food/meat/slab name = "meat" @@ -54,6 +76,7 @@ tastes = list("slime" = 1, "jelly" = 1) foodtypes = MEAT | RAW | TOXIC venue_value = FOOD_MEAT_MUTANT_RARE + blood_decal_type = null /obj/item/food/meat/slab/human/mutant/golem icon_state = "golemmeat" @@ -65,6 +88,7 @@ tastes = list("rock" = 1) foodtypes = MEAT | RAW | GROSS venue_value = FOOD_MEAT_MUTANT_RARE + blood_decal_type = null /obj/item/food/meat/slab/human/mutant/golem/adamantine icon_state = "agolemmeat" @@ -87,6 +111,7 @@ tastes = list("salad" = 1, "wood" = 1) foodtypes = VEGETABLES venue_value = FOOD_MEAT_MUTANT_RARE + blood_decal_type = /obj/effect/decal/cleanable/food/plant_smudge /obj/item/food/meat/slab/human/mutant/shadow icon_state = "shadowmeat" @@ -105,6 +130,7 @@ tastes = list("maggots" = 1, "the inside of a reactor" = 1) foodtypes = MEAT | RAW | GROSS | BUGS | GORE venue_value = FOOD_MEAT_MUTANT + blood_decal_type = /obj/effect/decal/cleanable/insectguts /obj/item/food/meat/slab/human/mutant/moth icon_state = "mothmeat" @@ -120,6 +146,7 @@ tastes = list("bone" = 1) foodtypes = GROSS | GORE venue_value = FOOD_MEAT_MUTANT_RARE + blood_decal_type = null /obj/item/food/meat/slab/human/mutant/skeleton/make_processable() return //skeletons dont have cutlets @@ -138,6 +165,7 @@ tastes = list("pure electricity" = 2, "glass" = 1) //MONKE EDIT: "meat" to "glass" foodtypes = RAW | MEAT | TOXIC | GORE venue_value = FOOD_MEAT_MUTANT + blood_decal_type = null ////////////////////////////////////// OTHER MEATS //////////////////////////////////////////////////////// @@ -169,6 +197,7 @@ name = "bug meat" icon_state = "spidermeat" foodtypes = RAW | MEAT | BUGS + blood_decal_type = /obj/effect/decal/cleanable/insectguts /obj/item/food/meat/slab/mouse name = "mouse meat" @@ -214,6 +243,7 @@ food_reagents = list(/datum/reagent/consumable/nutriment = 2) tastes = list("tomato" = 1) foodtypes = FRUIT + blood_decal_type = /obj/effect/decal/cleanable/food/tomato_smudge /obj/item/food/meat/slab/killertomato/make_grillable() AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/killertomato, rand(70 SECONDS, 85 SECONDS), TRUE, TRUE) @@ -227,7 +257,7 @@ icon_state = "bearmeat" food_reagents = list( /datum/reagent/consumable/nutriment/protein = 16, - /datum/reagent/medicine/morphine = 5, + /datum/reagent/medicine/painkiller/morphine = 5, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/cooking_oil = 6, ) @@ -255,6 +285,7 @@ bite_consumption = 4 tastes = list("meat" = 1, "acid" = 1) foodtypes = RAW | MEAT + blood_decal_type = /obj/effect/decal/cleanable/xenoblood /obj/item/food/meat/slab/xeno/make_processable() AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meat/rawcutlet/xeno, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut") @@ -273,6 +304,7 @@ ) tastes = list("cobwebs" = 1) foodtypes = RAW | MEAT | TOXIC + blood_decal_type = /obj/effect/decal/cleanable/insectguts /obj/item/food/meat/slab/spider/make_processable() AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meat/rawcutlet/spider, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut") @@ -489,10 +521,12 @@ /obj/item/food/meat/steak/xeno name = "xeno steak" tastes = list("meat" = 1, "acid" = 1) + blood_decal_type = /obj/effect/decal/cleanable/xenoblood /obj/item/food/meat/steak/spider name = "spider steak" tastes = list("cobwebs" = 1) + blood_decal_type = /obj/effect/decal/cleanable/insectguts /obj/item/food/meat/steak/goliath name = "goliath steak" @@ -595,6 +629,7 @@ name = "raw killer tomato cutlet" tastes = list("tomato" = 1) foodtypes = FRUIT + blood_decal_type = /obj/effect/decal/cleanable/food/tomato_smudge /obj/item/food/meat/rawcutlet/killertomato/make_grillable() AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/killertomato, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE) @@ -613,6 +648,7 @@ /obj/item/food/meat/rawcutlet/xeno name = "raw xeno cutlet" tastes = list("meat" = 1, "acid" = 1) + blood_decal_type = /obj/effect/decal/cleanable/xenoblood /obj/item/food/meat/rawcutlet/xeno/make_grillable() AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/xeno, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE, /datum/pollutant/food/fried_meat) @@ -620,6 +656,7 @@ /obj/item/food/meat/rawcutlet/spider name = "raw spider cutlet" tastes = list("cobwebs" = 1) + blood_decal_type = /obj/effect/decal/cleanable/insectguts /obj/item/food/meat/rawcutlet/spider/make_grillable() AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/spider, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE, /datum/pollutant/food/fried_meat) @@ -696,6 +733,7 @@ name = "killer tomato cutlet" tastes = list("tomato" = 1) foodtypes = FRUIT + blood_decal_type = /obj/effect/decal/cleanable/food/tomato_smudge /obj/item/food/meat/cutlet/bear name = "bear cutlet" @@ -704,10 +742,12 @@ /obj/item/food/meat/cutlet/xeno name = "xeno cutlet" tastes = list("meat" = 1, "acid" = 1) + blood_decal_type = /obj/effect/decal/cleanable/xenoblood /obj/item/food/meat/cutlet/spider name = "spider cutlet" tastes = list("cobwebs" = 1) + blood_decal_type = /obj/effect/decal/cleanable/insectguts /obj/item/food/meat/cutlet/gondola name = "gondola cutlet" diff --git a/code/game/objects/items/food/mexican.dm b/code/game/objects/items/food/mexican.dm index 57f7b718124e..5c99b29b9fa1 100644 --- a/code/game/objects/items/food/mexican.dm +++ b/code/game/objects/items/food/mexican.dm @@ -304,3 +304,16 @@ tastes = list("zesty rice" = 1, "tomato sauce" = 3,) foodtypes = VEGETABLES w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/pineapple_salsa + name = "pineapple salsa" + desc = "A not-so liquid salsa made of pineapples, tomatoes, onions, and chilis. Makes for delightfully contrasting flavors." + icon = 'icons/obj/food/mexican.dmi' + icon_state = "pineapple_salsa" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/vitamin = 6, + ) + tastes = list("pineapple" = 4, "tomato" = 3, "onion" = 2, "chili" = 2) + foodtypes = VEGETABLES | FRUIT | PINEAPPLE + w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm index e64eaa22c038..3346aba6754a 100644 --- a/code/game/objects/items/food/misc.dm +++ b/code/game/objects/items/food/misc.dm @@ -230,7 +230,7 @@ name = "stick of butter" desc = "A stick of delicious, golden, fatty goodness." icon_state = "butter" - food_reagents = list(/datum/reagent/consumable/nutriment = 5) + food_reagents = list(/datum/reagent/consumable/nutriment = 15) tastes = list("butter" = 1) foodtypes = DAIRY w_class = WEIGHT_CLASS_SMALL @@ -262,6 +262,18 @@ trash_type = /obj/item/stack/rods food_flags = FOOD_FINGER_FOOD +/obj/item/food/butter/make_processable() + AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/butterslice, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice") + +/obj/item/food/butterslice + name = "butter slice" + desc = "A slice of butter, for your buttering needs." + icon_state = "butterslice" + food_reagents = list(/datum/reagent/consumable/nutriment = 5) + tastes = list("butter" = 1) + foodtypes = DAIRY + w_class = WEIGHT_CLASS_SMALL + /obj/item/food/onionrings name = "onion rings" desc = "Onion slices coated in batter." @@ -481,3 +493,144 @@ tastes = list("potato" = 1, "cheese" = 1) foodtypes = GRAIN | VEGETABLES | MEAT w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/stuffed_eggplant + name = "stuffed eggplant" + desc = "A cooked half of an eggplant, with the insides scooped out and mixed with meat, cheese, and veggies." + icon_state = "stuffed_eggplant" + food_reagents = list( + /datum/reagent/consumable/nutriment = 10, + /datum/reagent/consumable/nutriment/vitamin = 6, + /datum/reagent/consumable/nutriment/protein = 4, + ) + tastes = list("cooked eggplant" = 5, "cheese" = 4, "ground meat" = 3, "veggies" = 2) + foodtypes = VEGETABLES | MEAT | DAIRY + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/moussaka + name = "moussaka" + desc = "A layered Mediterranean dish made of eggplants, mixed veggies, and meat with a topping of bechamel sauce. Sliceable" + icon_state = "moussaka" + food_reagents = list( + /datum/reagent/consumable/nutriment = 30, + /datum/reagent/consumable/nutriment/vitamin = 10, + /datum/reagent/consumable/nutriment/protein = 20, + ) + tastes = list("cooked eggplant" = 5, "potato" = 1, "baked veggies" = 2, "meat" = 4, "bechamel sauce" = 3) + foodtypes = MEAT | DAIRY | VEGETABLES + +/obj/item/food/moussaka/make_processable() + AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/moussaka_slice, 4, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut") + +/obj/item/food/moussaka_slice + name = "moussaka slice" + desc = "A layered Mediterranean dish made of eggplants, mixed veggies, and meat with a topping of bechamel sauce. Delish!" + icon_state = "moussaka_slice" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/vitamin = 2, + /datum/reagent/consumable/nutriment/protein = 5, + ) + tastes = list("cooked eggplant" = 5, "potato" = 1, "baked veggies" = 2, "meat" = 4, "bechamel sauce" = 3) + foodtypes = MEAT | DAIRY | VEGETABLES + +/obj/item/food/candied_pineapple + name = "candied pineapple" + desc = "A chunk of pineapple coated in sugar and dried into a chewy treat." + food_reagents = list( + /datum/reagent/consumable/nutriment = 3, + /datum/reagent/consumable/nutriment/vitamin = 3, + ) + icon_state = "candied_pineapple_1" + base_icon_state = "candied_pineapple" + tastes = list("sugar" = 2, "chewy pineapple" = 4) + foodtypes = FRUIT | SUGAR + food_flags = FOOD_FINGER_FOOD + w_class = WEIGHT_CLASS_TINY + +/obj/item/food/candied_pineapple/Initialize(mapload) + . = ..() + icon_state = "[base_icon_state]_[rand(1, 3)]" + +/obj/item/food/raw_pita_bread + name = "raw pita bread" + desc = "a sticky disk of raw pita bread." + icon = 'icons/obj/food/food_ingredients.dmi' + icon_state = "raw_pita_bread" + food_reagents = list( + /datum/reagent/consumable/nutriment = 3, + /datum/reagent/consumable/nutriment/vitamin = 3, + ) + tastes = list("dough" = 2) + foodtypes = GRAIN + w_class = WEIGHT_CLASS_TINY + +/obj/item/food/raw_pita_bread/make_grillable() + AddComponent(/datum/component/grillable, /obj/item/food/pita_bread, rand(15 SECONDS, 30 SECONDS), TRUE, TRUE) + +/obj/item/food/raw_pita_bread/make_bakeable() + AddComponent(/datum/component/bakeable, /obj/item/food/pita_bread, rand(15 SECONDS, 30 SECONDS), TRUE, TRUE) + +/obj/item/food/pita_bread + name = "pita bread" + desc = "a multi-purposed sweet flatbread of Mediterranean origins." + icon = 'icons/obj/food/food_ingredients.dmi' + icon_state = "pita_bread" + food_reagents = list( + /datum/reagent/consumable/nutriment = 3, + /datum/reagent/consumable/nutriment/vitamin = 3, + ) + tastes = list("pita bread" = 2) + foodtypes = GRAIN + w_class = WEIGHT_CLASS_TINY + burns_on_grill = TRUE + burns_in_oven = TRUE + +/obj/item/food/tzatziki_sauce + name = "tzatziki sauce" + desc = "A garlic-based sauce or dip widely used in Mediterranean and Middle Eastern cuisine. Delicious on its own when dipped with pita bread or vegetables." + icon_state = "tzatziki_sauce" + food_reagents = list( + /datum/reagent/consumable/nutriment = 5, + /datum/reagent/consumable/nutriment/vitamin = 5, + ) + tastes = list("garlic" = 4, "cucumber" = 2, "olive oil" = 2) + foodtypes = VEGETABLES + w_class = WEIGHT_CLASS_TINY + +/obj/item/food/tzatziki_and_pita_bread + name = "tzatziki and pita bread" + desc = "Tzatziki sauce, now with pita bread for dipping. Very healthy and delicious all in one." + icon_state = "tzatziki_and_pita_bread" + food_reagents = list( + /datum/reagent/consumable/nutriment = 8, + /datum/reagent/consumable/nutriment/vitamin = 8, + ) + tastes = list("pita bread" = 4, "tzatziki sauce" = 2, "olive oil" = 2) + foodtypes = VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_TINY + +/obj/item/food/grilled_beef_gyro + name = "grilled beef gyro" + desc = "A traditional Greek dish of meat wrapped in pita bread with tomato, cabbage, onion, and tzatziki sauce." + icon_state = "grilled_beef_gyro" + food_reagents = list( + /datum/reagent/consumable/nutriment = 10, + /datum/reagent/consumable/nutriment/vitamin = 8, + /datum/reagent/consumable/nutriment/protein = 6, + ) + tastes = list("pita bread" = 4, "tender meat" = 2, "tzatziki sauce" = 2, "mixed veggies" = 2) + foodtypes = VEGETABLES | GRAIN | MEAT + w_class = WEIGHT_CLASS_TINY + +/obj/item/food/vegetarian_gyro + name = "vegetarian gyro" + desc = "A traditional Greek gyro with cucumbers substituted for meat. Still full of intense flavor and very nourishing." + icon_state = "vegetarian_gyro" + food_reagents = list( + /datum/reagent/consumable/nutriment = 10, + /datum/reagent/consumable/nutriment/vitamin = 12, + ) + tastes = list("pita bread" = 4, "cucumber" = 2, "tzatziki sauce" = 2, "mixed veggies" = 2) + foodtypes = VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_TINY diff --git a/code/game/objects/items/food/pastries.dm b/code/game/objects/items/food/pastries.dm index cd7d4f5d71cb..94babd0cf901 100644 --- a/code/game/objects/items/food/pastries.dm +++ b/code/game/objects/items/food/pastries.dm @@ -487,3 +487,48 @@ tastes = list("peanut butter" = 1, "peanuts" = 1, "cream" = 1) foodtypes = GRAIN | JUNKFOOD | SUGAR | NUTS w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/cookie/chocolate_chip_cookie + name = "chocolate chip cookie" + desc = "A delightful-smelling chocolate chip cookie. Where's the milk?" + icon_state = "COOKIE!!!" + food_reagents = list(/datum/reagent/consumable/nutriment = 5) + tastes = list("soft cookie" = 2, "chocolate" = 3) + foodtypes = GRAIN | SUGAR | DAIRY + food_flags = FOOD_FINGER_FOOD + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/cookie/snickerdoodle + name = "snickerdoodle" + desc = "A soft cookie made from vanilla and cinnamon." + icon_state = "snickerdoodle" + food_reagents = list(/datum/reagent/consumable/nutriment = 5) + tastes = list("soft cookie" = 2, "vanilla" = 3) + foodtypes = GRAIN | SUGAR | DAIRY + food_flags = FOOD_FINGER_FOOD + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/cookie/macaron + name = "macaron" + desc = "A sandwich-like confectionary with a soft cookie shell and a creamy meringue center." + food_reagents = list(/datum/reagent/consumable/nutriment = 6) + icon_state = "macaron_1" + base_icon_state = "macaron" + tastes = list("wafer" = 2, "creamy meringue" = 3) + foodtypes = GRAIN | SUGAR | DAIRY + food_flags = FOOD_FINGER_FOOD + w_class = WEIGHT_CLASS_TINY + +/obj/item/food/cookie/macaron/Initialize(mapload) + . = ..() + icon_state = "[base_icon_state]_[rand(1, 4)]" + +/obj/item/food/cookie/thumbprint_cookie + name = "thumbprint cookie" + desc = "A cookie with a thumb-sized indent in the middle made for fillings. This one is filled with cherry jelly" + icon_state = "thumbprint_cookie" + food_reagents = list(/datum/reagent/consumable/nutriment = 6) + tastes = list("cookie" = 2, "cherry jelly" = 3) + foodtypes = GRAIN | SUGAR | FRUIT + food_flags = FOOD_FINGER_FOOD + w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/food/spaghetti.dm b/code/game/objects/items/food/spaghetti.dm index a9d884ecaee2..893fa08d7d0f 100644 --- a/code/game/objects/items/food/spaghetti.dm +++ b/code/game/objects/items/food/spaghetti.dm @@ -60,7 +60,7 @@ // where the soul comes from /datum/reagent/pax = 5, /datum/reagent/medicine/psicodine = 10, - /datum/reagent/medicine/morphine = 5, + /datum/reagent/medicine/painkiller/morphine = 5, ) tastes = list("nostalgia" = 1, "happiness" = 1) @@ -148,3 +148,81 @@ ) tastes = list("cheese" = 1, "breadcrumbs" = 1, "pasta" = 1) foodtypes = GRAIN | DAIRY + +/obj/item/food/spaghetti/shoyu_tonkotsu_ramen + name = "shoyu tonkotsu ramen" + desc = "A simple ramen made of meat, egg, onion, and a sheet of seaweed." + icon_state = "shoyu_tonkotsu_ramen" + trash_type = /obj/item/reagent_containers/cup/bowl + food_reagents = list( + /datum/reagent/consumable/nutriment = 12, + /datum/reagent/consumable/nutriment/vitamin = 6, + /datum/reagent/consumable/nutriment/protein = 6, + ) + tastes = list("noodles" = 5, "meat" = 3, "egg" = 4, "dried seaweed" = 2) + foodtypes = GRAIN | MEAT | VEGETABLES + +/obj/item/food/spaghetti/kitakata_ramen + name = "kitakata ramen" + desc = "A hearty ramen composed of meat, mushrooms, onion, and garlic. Often given to the sick to comfort them" + icon_state = "kitakata_ramen" + trash_type = /obj/item/reagent_containers/cup/bowl + food_reagents = list( + /datum/reagent/consumable/nutriment = 15, + /datum/reagent/consumable/nutriment/vitamin = 6, + /datum/reagent/consumable/nutriment/protein = 8, + ) + tastes = list("noodles" = 5, "meat" = 4, "mushrooms" = 3, "onion" = 2) + foodtypes = GRAIN | MEAT | VEGETABLES + +/obj/item/food/spaghetti/kitsune_udon + name = "kitsune udon" + desc = "A vegetarian udon made of fried tofu and onions, made sweet and savory with sugar and soy sauce. The name comes from an old folktale about a fox enjoying fried tofu." + icon_state = "kitsune_udon" + trash_type = /obj/item/reagent_containers/cup/bowl + food_reagents = list( + /datum/reagent/consumable/nutriment = 12, + /datum/reagent/consumable/nutriment/vitamin = 10, + /datum/reagent/consumable/nutriment/protein = 4, + ) + tastes = list("noodles" = 5, "tofu" = 4, "sugar" = 3, "soy sauce" = 2) + foodtypes = GRAIN | VEGETABLES + +/obj/item/food/spaghetti/nikujaga + name = "nikujaga" + desc = "A delightful Japanese stew of noodles, onions, potatoes, and meat with mixed vegetables." + icon_state = "nikujaga" + trash_type = /obj/item/reagent_containers/cup/bowl + food_reagents = list( + /datum/reagent/consumable/nutriment = 16, + /datum/reagent/consumable/nutriment/vitamin = 12, + /datum/reagent/consumable/nutriment/protein = 8, + ) + tastes = list("noodles" = 5, "meat" = 4, "potato" = 3, "onion" = 2, "mixed veggies" = 2) + foodtypes = GRAIN | VEGETABLES | MEAT + +/obj/item/food/spaghetti/pho + name = "pho" + desc = "A Vietnamese dish made of noodles, vegetables, herbs, and meat. Makes for a very popular street food." + icon_state = "pho" + trash_type = /obj/item/reagent_containers/cup/bowl + food_reagents = list( + /datum/reagent/consumable/nutriment = 12, + /datum/reagent/consumable/nutriment/vitamin = 8, + /datum/reagent/consumable/nutriment/protein = 8, + ) + tastes = list("noodles" = 5, "meat" = 4, "cabbage" = 3, "onion" = 2, "herbs" = 2) + foodtypes = GRAIN | VEGETABLES | MEAT + +/obj/item/food/spaghetti/pad_thai + name = "pad thai" + desc = "A stir-fried noodle dish popular in Thailand made of peanuts, tofu, lime, and onions." + icon_state = "pad_thai" + trash_type = /obj/item/reagent_containers/cup/bowl + food_reagents = list( + /datum/reagent/consumable/nutriment = 15, + /datum/reagent/consumable/nutriment/vitamin = 10, + /datum/reagent/consumable/nutriment/protein = 4, + ) + tastes = list("noodles" = 5, "fried tofu" = 4, "lime" = 2, "peanut" = 3, "onion" = 2) + foodtypes = GRAIN | VEGETABLES | NUTS | FRUIT diff --git a/code/game/objects/items/food/vegetables.dm b/code/game/objects/items/food/vegetables.dm index f36f3f09a811..4c529befbd1b 100644 --- a/code/game/objects/items/food/vegetables.dm +++ b/code/game/objects/items/food/vegetables.dm @@ -153,3 +153,40 @@ /obj/item/food/poutine/Initialize(mapload) . = ..() AddElement(/datum/element/dunkable, 10) + +/obj/item/food/sauteed_eggplant + name = "sauteed eggplant" + desc = "Thick-cut slices of eggplant sauteed in oil and minced garlic, creating a soft, crispy, healthy snack." + icon_state = "sauteed_eggplant" + food_reagents = list( + /datum/reagent/consumable/nutriment = 8, + /datum/reagent/consumable/nutriment/vitamin = 4, + ) + tastes = list("fried eggplant" = 4, "garlic" = 2, "olive oil" = 3) + foodtypes = VEGETABLES + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/baba_ghanoush + name = "baba ghanoush" + desc = "A thick dip made from mashed eggplant, olive oil, garlic, and lemon juice with some pita bread for dipping. You'll either love it or hate it." + icon_state = "baba_ghanoush" + trash_type = /obj/item/reagent_containers/cup/bowl + food_reagents = list( + /datum/reagent/consumable/nutriment = 8, + /datum/reagent/consumable/nutriment/vitamin = 6, + ) + tastes = list("mashed eggplant" = 5, "pita bread" = 4, "garlic" = 3, "olive oil" = 4, "lemon juice" = 2) + foodtypes = VEGETABLES | GRAIN + w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/falafel + name = "falafel" + desc = "Beans, herbs, onions, and garlic mashed together and formed into a ball, then deep-fried. The herbs give the interior a unique green color." + icon_state = "falafel" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/vitamin = 2, + ) + tastes = list("fava beans" = 5, "garlic" = 3, "onion" = 2, "fresh herbs" = 4) + foodtypes = VEGETABLES + w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/granters/_granters.dm b/code/game/objects/items/granters/_granters.dm index 8cb63925f240..ad9b9a453f05 100644 --- a/code/game/objects/items/granters/_granters.dm +++ b/code/game/objects/items/granters/_granters.dm @@ -5,7 +5,7 @@ */ /obj/item/book/granter due_date = 0 - unique = 1 + unique = TRUE /// Flavor messages displayed to mobs reading the granter var/list/remarks = list() /// Controls how long a mob must keep the book in his hand to actually successfully learn diff --git a/code/game/objects/items/granters/crafting/_crafting_granter.dm b/code/game/objects/items/granters/crafting/_crafting_granter.dm index a4d2b46877a6..8a4afb65dfbc 100644 --- a/code/game/objects/items/granters/crafting/_crafting_granter.dm +++ b/code/game/objects/items/granters/crafting/_crafting_granter.dm @@ -6,6 +6,7 @@ . = ..() if(!user.mind) return - for(var/datum/crafting_recipe/crafting_recipe_type as anything in crafting_recipe_types) + for(var/crafting_recipe_type in crafting_recipe_types) user.mind.teach_crafting_recipe(crafting_recipe_type) - to_chat(user, span_notice("You learned how to make [initial(crafting_recipe_type.name)].")) + var/datum/crafting_recipe/recipe = locate(crafting_recipe_type) in GLOB.crafting_recipes + to_chat(user, span_notice("You learned how to make [recipe.name].")) diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm index 96f07bd8a233..fe0e12d4d50d 100644 --- a/code/game/objects/items/his_grace.dm +++ b/code/game/objects/items/his_grace.dm @@ -164,22 +164,8 @@ if(!awakened) return - var/static/list/transforms - if(!transforms) - var/matrix/M1 = matrix() - var/matrix/M2 = matrix() - var/matrix/M3 = matrix() - var/matrix/M4 = matrix() - M1.Translate(-1, 0) - M2.Translate(0, 1) - M3.Translate(1, 0) - M4.Translate(0, -1) - transforms = list(M1, M2, M3, M4) - animate(src, transform=transforms[1], time=0.2, loop=-1) - animate(transform=transforms[2], time=0.1) - animate(transform=transforms[3], time=0.2) - animate(transform=transforms[4], time=0.3) + spasm_animation() /obj/item/his_grace/proc/drowse() //Good night, Mr. Grace. if(!awakened || ascended) diff --git a/code/game/objects/items/implants/implantuplink.dm b/code/game/objects/items/implants/implantuplink.dm index c04436b06a8e..b6e664101ef9 100644 --- a/code/game/objects/items/implants/implantuplink.dm +++ b/code/game/objects/items/implants/implantuplink.dm @@ -16,7 +16,7 @@ if(!uplink_flag) uplink_flag = src.uplink_flag src.uplink_handler = uplink_handler - RegisterSignal(src, COMSIG_COMPONENT_REMOVING, PROC_REF(_component_removal)) + RegisterSignal(src, COMSIG_COMPONENT_REMOVING, PROC_REF(on_component_removing)) /obj/item/implant/uplink/implant(mob/living/carbon/target, mob/user, silent, force) . = ..() @@ -34,8 +34,10 @@ * generally by admin verbs or var editing. Implant does nothing without * the component, so delete itself. */ -/obj/item/implant/uplink/proc/_component_removal(datum/source, datum/component/component) +/obj/item/implant/uplink/proc/on_component_removing(datum/source, datum/component/component) SIGNAL_HANDLER + if(QDELING(src)) + return if(istype(component, /datum/component/uplink)) qdel(src) diff --git a/code/game/objects/items/mail.dm b/code/game/objects/items/mail.dm index c62b002eef05..3e28b69852e7 100644 --- a/code/game/objects/items/mail.dm +++ b/code/game/objects/items/mail.dm @@ -125,6 +125,7 @@ user.temporarilyRemoveItemFromInventory(src, TRUE) if(contents.len) user.put_in_hands(contents[1]) + user.put_in_hands(new /obj/item/cargo/mail_token) // MONKESTATION EDIT playsound(loc, 'sound/items/poster_ripped.ogg', 50, TRUE) qdel(src) @@ -294,7 +295,8 @@ atom_storage.set_holdable(list( /obj/item/mail, /obj/item/delivery/small, - /obj/item/paper + /obj/item/paper, + /obj/item/cargo/mail_token, // monkestation edit )) /obj/item/paper/fluff/junkmail_redpill diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index ae9a980d989b..3df9763ddde7 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -20,7 +20,8 @@ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT - force = 10 + force = 1 + pain_damage = 12 throwforce = 7 demolition_mod = 0.25 wound_bonus = 15 diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 693bea55a370..530ecc7d9a18 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -35,6 +35,9 @@ var/normal_desc //--end of love :'(-- +///Unique pet message + var/pet_message + /* ** If you add a new plushie please add it to the lists at both: ** /obj/effect/spawner/random/entertainment/plushie @@ -53,11 +56,10 @@ else gender = MALE - love_message = list("\n[src] is so happy, \he could rip a seam!") - partner_message = list("\n[src] has a ring on \his finger! It says bound to my dear [partner].") - heartbroken_message = list("\n[src] looks so sad.") - vowbroken_message = list("\n[src] lost \his ring...") - parent_message = list("\n[src] can't remember what sleep is.") + love_message = list("[p_they(TRUE)] [p_are()] so happy, [p_they()] could rip a seam!") + heartbroken_message = list("[p_they(TRUE)] look\s so sad.") + vowbroken_message = list("[p_they(TRUE)] threw away [p_their()] wedding ring...") + parent_message = list("[p_they(TRUE)] can't remember what sleep is.") normal_desc = desc @@ -116,7 +118,7 @@ /obj/item/toy/plush/attack_self(mob/user) . = ..() if(stuffed || grenade) - to_chat(user, span_notice("You pet [src]. D'awww.")) + to_chat(user, span_notice("[pet_message ? pet_message : "You pet [src]. D'awww."]")) if(grenade && !grenade.active) user.log_message("activated a hidden grenade in [src].", LOG_VICTIM) grenade.arm_grenade(user, msg = FALSE, volume = 10) @@ -286,6 +288,7 @@ heal_memories() partner.heal_memories() + partner_message = list("[p_they(TRUE)] [p_have()] a ring on [p_their()] finger! It says 'Bound to my dear [partner.name].'") mood_message = pick(partner_message) update_desc() @@ -310,8 +313,9 @@ maternal_parent = Mama paternal_parent = Dada young = TRUE - name = "[Mama] Jr" //Icelandic naming convention pending - normal_desc = "[src] is a little baby of [maternal_parent] and [paternal_parent]!" //original desc won't be used so the child can have moods + name = "[Mama.name] Jr" //Icelandic naming convention pending + normal_desc = "[src] [p_are()] a little baby of [maternal_parent] and [paternal_parent]!" //original desc won't be used so the child can have moods + transform *= 0.75 update_desc() Mama.mood_message = pick(Mama.parent_message) @@ -381,7 +385,7 @@ desc = normal_desc . = ..() if(mood_message) - desc += mood_message + desc += span_info("\n[mood_message]") /obj/item/toy/plush/carpplushie name = "space carp plushie" @@ -797,7 +801,7 @@ icon_state = "abductor" inhand_icon_state = null attack_verb_continuous = list("abducts", "probes") - attack_verb_continuous = list("abduct", "probe") + attack_verb_simple = list("abduct", "probe") squeak_override = list('sound/weather/ashstorm/inside/weak_end.ogg' = 1) //very faint sound since abductors are silent as far as "speaking" is concerned. /obj/item/toy/plush/abductor/agent @@ -806,7 +810,7 @@ icon_state = "abductor_agent" inhand_icon_state = null attack_verb_continuous = list("abducts", "probes", "stuns") - attack_verb_continuous = list("abduct", "probe", "stun") + attack_verb_simple = list("abduct", "probe", "stun") squeak_override = list( 'sound/weapons/egloves.ogg' = 2, 'sound/weapons/cablecuff.ogg' = 1, @@ -823,3 +827,13 @@ 'sound/effects/slosh.ogg' = 1, 'sound/effects/splat.ogg' = 2 ) + +/obj/item/toy/plush/shark + name = "shark plushie" + desc = "A plushie depicting a somewhat cartoonish shark. The tag calls it a 'hákarl', noting that it was made by an obscure furniture manufacturer in old Scandinavia." + lefthand_file = 'icons/mob/inhands/items/plushes_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/plushes_righthand.dmi' + icon_state = "blahaj" + inhand_icon_state = "blahaj" + attack_verb_continuous = list("gnaws", "gnashes", "chews") + attack_verb_simple = list("gnaw", "gnash", "chew") diff --git a/code/game/objects/items/robot/items/hypo.dm b/code/game/objects/items/robot/items/hypo.dm index 389d10175196..d02f110fae79 100644 --- a/code/game/objects/items/robot/items/hypo.dm +++ b/code/game/objects/items/robot/items/hypo.dm @@ -47,7 +47,7 @@ ) #define BASE_SYNDICATE_REAGENTS list(\ /datum/reagent/medicine/inacusiate,\ - /datum/reagent/medicine/morphine,\ + /datum/reagent/medicine/painkiller/morphine,\ /datum/reagent/medicine/potass_iodide,\ /datum/reagent/medicine/syndicate_nanites\ ) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index cf1d76bab1f0..517a05a58ee7 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -321,6 +321,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ new/datum/stack_recipe("book case", /obj/structure/bookcase, 4, time = 1.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \ new/datum/stack_recipe("drying rack", /obj/machinery/smartfridge/drying_rack, 10, time = 1.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_TOOLS), \ new/datum/stack_recipe("wooden barrel", /obj/structure/fermenting_barrel, 8, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_CONTAINERS), \ + new/datum/stack_recipe("fermenting keg", /obj/structure/fermentation_keg, 8, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_CONTAINERS), \ new/datum/stack_recipe("dog bed", /obj/structure/bed/dogbed, 10, time = 1 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \ new/datum/stack_recipe("dresser", /obj/structure/dresser, 10, time = 1.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \ new/datum/stack_recipe("picture frame", /obj/item/wallframe/picture, 1, time = 1 SECONDS, check_density = FALSE, category = CAT_ENTERTAINMENT),\ diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index f299eea303dc..0b2abb6bd53d 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -206,35 +206,33 @@ . = (amount) /** - * Builds all recipes in a given recipe list and returns an association list containing them - * - * Arguments: - * * recipe_to_iterate - The list of recipes we are using to build recipes + * Recursively builds the recipes data for the given list of recipes, iterating through each recipe. + * If recipe is of type /datum/stack_recipe, it adds the recipe data to the recipes_data list with the title as the key. + * If recipe is of type /datum/stack_recipe_list, it recursively calls itself, scanning the entire list and adding each recipe to its category. */ -/obj/item/stack/proc/recursively_build_recipes(list/recipe_to_iterate) - var/list/L = list() - for(var/recipe in recipe_to_iterate) - if(istype(recipe, /datum/stack_recipe_list)) - var/datum/stack_recipe_list/R = recipe - L["[R.title]"] = recursively_build_recipes(R.recipes) +/obj/item/stack/proc/recursively_build_recipes(list/recipes_to_iterate) + var/list/recipes_data = list() + for(var/recipe in recipes_to_iterate) if(istype(recipe, /datum/stack_recipe)) - var/datum/stack_recipe/R = recipe - L["[R.title]"] = build_recipe(R) - return L + var/datum/stack_recipe/single_recipe = recipe + recipes_data["[single_recipe.title]"] = build_recipe_data(single_recipe) -/** - * Returns a list of properties of a given recipe - * - * Arguments: - * * R - The stack recipe we are using to get a list of properties - */ -/obj/item/stack/proc/build_recipe(datum/stack_recipe/R) - return list( - "res_amount" = R.res_amount, - "max_res_amount" = R.max_res_amount, - "req_amount" = R.req_amount, - "ref" = text_ref(R), - ) + else if(istype(recipe, /datum/stack_recipe_list)) + var/datum/stack_recipe_list/recipe_list = recipe + recipes_data["[recipe_list.title]"] = recursively_build_recipes(recipe_list.recipes) + + return recipes_data + +/obj/item/stack/proc/build_recipe_data(datum/stack_recipe/recipe) + var/list/data = list() + + data["ref"] = text_ref(recipe) + data["required_amount"] = recipe.req_amount + data["result_amount"] = recipe.res_amount + data["max_result_amount"] = recipe.max_res_amount + data["image"] = recipe.image + + return data /** * Checks if the recipe is valid to be used @@ -265,7 +263,8 @@ /obj/item/stack/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "StackCrafting", name) + ui = new(user, src, "StackCraft", name) + ui.set_autoupdate(FALSE) ui.open() /obj/item/stack/ui_data(mob/user) @@ -278,16 +277,14 @@ data["recipes"] = recursively_build_recipes(recipes) return data -/obj/item/stack/ui_act(action, params) - . = ..() - if(.) - return +/obj/item/stack/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + if(..()) + return FALSE switch(action) if("make") var/datum/stack_recipe/recipe = locate(params["ref"]) var/multiplier = text2num(params["multiplier"]) - return make_item(usr, recipe, multiplier) /// The key / title for a radial option that shows the entire list of buildables (uses the old menu) diff --git a/code/game/objects/items/stacks/stack_recipe.dm b/code/game/objects/items/stacks/stack_recipe.dm index a065a4916b39..a6e5cdf395f5 100644 --- a/code/game/objects/items/stacks/stack_recipe.dm +++ b/code/game/objects/items/stacks/stack_recipe.dm @@ -38,6 +38,8 @@ var/trait_modifier = 1 /// Category for general crafting menu var/category + /// Cached recipe result base64 image + var/image /datum/stack_recipe/New( title, @@ -77,6 +79,16 @@ src.trait_modifier = trait_modifier src.category = src.category || category || CAT_MISC + var/obj/item/result = result_type + var/icon/result_icon = icon(result::icon, result::icon_state, SOUTH, 1) + var/paint = result::color + + result_icon.Scale(32, 32) + if(!isnull(paint) && paint != COLOR_WHITE) + result_icon.Blend(paint, ICON_MULTIPLY) + + src.image = "[icon2base64(result_icon)]" + /datum/stack_recipe/radial /// Optional info to be shown on the radial option for this item var/desc diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index e47cbd0ebdda..2677016f9f93 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -1026,6 +1026,33 @@ /obj/item/stack/tile/noslip/thirty amount = 30 +/obj/item/stack/tile/noslip/tram + name = "high-traction platform tile" + singular_name = "high-traction platform tile" + desc = "A titanium-aluminium induction plate that powers the tram." + icon_state = "tile_noslip" + inhand_icon_state = "tile-noslip" + turf_type = /turf/open/floor/noslip/tram + merge_type = /obj/item/stack/tile/noslip/tram + +/obj/item/stack/tile/noslip/tram_platform + name = "tram platform tiles" + singular_name = "tram platform" + desc = "A tile used for tram platforms." + icon_state = "darkiron_catwalk" + inhand_icon_state = "tile-neon" + turf_type = /turf/open/floor/noslip/tram_platform + merge_type = /obj/item/stack/tile/noslip/tram_platform + +/obj/item/stack/tile/noslip/tram_plate + name = "high-traction platform tile" + singular_name = "high-traction platform tile" + desc = "A high-traction tile used for tram platforms." + icon_state = "darkiron_plate" + inhand_icon_state = "tile-neon" + turf_type = /turf/open/floor/noslip/tram_plate + merge_type = /obj/item/stack/tile/noslip/tram_plate + //Circuit /obj/item/stack/tile/circuit name = "blue circuit tile" diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 04da84f41e4a..37e6720dd06e 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -255,6 +255,7 @@ throwforce = 15 attack_verb_continuous = list("MEATS", "MEAT MEATS") attack_verb_simple = list("MEAT", "MEAT MEAT") + custom_materials = list(/datum/material/meat = SHEET_MATERIAL_AMOUNT * 25) // MEAT ///Sounds used in the squeak component var/list/meat_sounds = list('sound/effects/blobattack.ogg' = 1) ///Reagents added to the edible component, ingested when you EAT the MEAT @@ -271,13 +272,26 @@ /obj/item/storage/backpack/meat/Initialize(mapload) . = ..() - AddComponent(/datum/component/edible,\ + AddComponent( + /datum/component/edible,\ initial_reagents = meat_reagents,\ foodtypes = foodtypes,\ tastes = tastes,\ eatverbs = eatverbs,\ ) AddComponent(/datum/component/squeak, meat_sounds) + AddComponent( + /datum/component/blood_walk,\ + blood_type = /obj/effect/decal/cleanable/blood,\ + blood_spawn_chance = 15,\ + max_blood = 300,\ + ) + AddComponent( + /datum/component/bloody_spreader,\ + blood_left = INFINITY,\ + blood_dna = list("MEAT DNA" = "MT+"),\ + diseases = null,\ + ) /* * Satchel Types @@ -411,11 +425,14 @@ ..() +/obj/item/storage/backpack/satchel/flat/listening_post_secret_stash + desc = "God, the stench from this thing is potent." + /obj/item/storage/backpack/satchel/flat/listening_post_secret_stash/PopulateContents() - new /obj/item/clothing/head/helmet/space/eva(src) - new /obj/item/clothing/suit/space/eva(src) - new /obj/item/tank/internals/oxygen/empty(src) - new /obj/item/tank/internals/oxygen/empty(src) + new /obj/item/seeds/cannabis(src) + new /obj/item/food/grown/cannabis(src) + new /obj/item/storage/box/donkpockets/donkpockethonk(src) + new /obj/item/choice_beacon/pet(src) ..() @@ -678,6 +695,7 @@ desc = "A large duffel bag containing a C-20r, some magazines, and a cheap looking suppressor." /obj/item/storage/backpack/duffelbag/syndie/c20rbundle/PopulateContents() + new /obj/item/ammo_box/magazine/smgm45(src) new /obj/item/ammo_box/magazine/smgm45(src) new /obj/item/ammo_box/magazine/smgm45(src) new /obj/item/gun/ballistic/automatic/c20r(src) diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index b7ed0f796e77..4fd204f97cb6 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -328,7 +328,7 @@ atom_storage.set_holdable(list( /obj/item/book, /obj/item/spellbook, - /obj/item/storage/book, //TG#75350 Refactors these to be just /obj/item/book, but it also add burning bibles. May look back at it another time + /obj/item/book, /obj/item/poster, )) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 61da8337811f..e0dcefc072dd 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -639,7 +639,7 @@ /obj/item/storage/belt/wands/Initialize(mapload) . = ..() - atom_storage.max_slots = 6 + atom_storage.max_slots = 7 atom_storage.set_holdable(list( /obj/item/gun/magic/wand, )) @@ -651,6 +651,7 @@ new /obj/item/gun/magic/wand/teleport(src) new /obj/item/gun/magic/wand/door(src) new /obj/item/gun/magic/wand/fireball(src) + new /obj/item/gun/magic/wand/shrink(src) for(var/obj/item/gun/magic/wand/W in contents) //All wands in this pack come in the best possible condition W.max_charges = initial(W.max_charges) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm deleted file mode 100644 index 9622a103ab5b..000000000000 --- a/code/game/objects/items/storage/book.dm +++ /dev/null @@ -1,306 +0,0 @@ -/obj/item/storage/book - name = "hollowed book" - desc = "I guess someone didn't like it." - icon = 'icons/obj/library.dmi' - icon_state ="book" - worn_icon_state = "book" - throw_speed = 2 - throw_range = 5 - w_class = WEIGHT_CLASS_NORMAL - resistance_flags = FLAMMABLE - var/title = "book" - -/obj/item/storage/book/Initialize(mapload) - . = ..() - atom_storage.max_slots = 1 - -/obj/item/storage/book/attack_self(mob/user) - balloon_alert(user, "pages cut out!") - -GLOBAL_LIST_INIT(biblenames, list("Bible", "Quran", "Scrapbook", "Burning Bible", "Clown Bible", "Banana Bible", "Creeper Bible", "White Bible", "Holy Light", "The God Delusion", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "Melted Bible", "Necronomicon", "Insulationism", "Guru Granth Sahib", "Kojiki")) -//If you get these two lists not matching in size, there will be runtimes and I will hurt you in ways you couldn't even begin to imagine -// if your bible has no custom itemstate, use one of the existing ones -GLOBAL_LIST_INIT(biblestates, list("bible", "koran", "scrapbook", "burning", "honk1", "honk2", "creeper", "white", "holylight", "atheist", "tome", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon", "insuls", "gurugranthsahib", "kojiki")) -GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", "honk1", "honk2", "creeper", "white", "holylight", "atheist", "tome", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon", "kingyellow", "gurugranthsahib", "kojiki")) - -/obj/item/storage/book/bible - name = "bible" - desc = "Apply to head repeatedly." - icon = 'icons/obj/storage/book.dmi' - icon_state = "bible" - inhand_icon_state = "bible" - worn_icon_state = "bible" - lefthand_file = 'icons/mob/inhands/items/books_lefthand.dmi' - righthand_file = 'icons/mob/inhands/items/books_righthand.dmi' - var/mob/affecting = null - var/deity_name = "Christ" - force_string = "holy" - -/obj/item/storage/book/bible/examine(mob/user) - . = ..() - if(user?.mind?.holy_role) - if(GLOB.chaplain_altars.len) - . += span_notice("[src] has an expansion pack to replace any broken Altar.") - else - . += span_notice("[src] can be unpacked by hitting the floor of a holy area with it.") - -/obj/item/storage/book/bible/Initialize(mapload) - . = ..() - atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL - AddComponent(/datum/component/anti_magic, MAGIC_RESISTANCE_HOLY) - -/obj/item/storage/book/bible/suicide_act(mob/living/user) - user.visible_message(span_suicide("[user] is offering [user.p_them()]self to [deity_name]! It looks like [user.p_theyre()] trying to commit suicide!")) - return BRUTELOSS - -/obj/item/storage/book/bible/attack_self(mob/living/carbon/human/user) - if(GLOB.bible_icon_state) - return FALSE - if(user?.mind?.holy_role != HOLY_ROLE_HIGHPRIEST) - return FALSE - - var/list/skins = list() - for(var/i in 1 to GLOB.biblestates.len) - var/image/bible_image = image(icon = 'icons/obj/storage/book.dmi', icon_state = GLOB.biblestates[i]) - skins += list("[GLOB.biblenames[i]]" = bible_image) - - var/choice = show_radial_menu(user, src, skins, custom_check = CALLBACK(src, PROC_REF(check_menu), user), radius = 40, require_near = TRUE) - if(!choice) - return FALSE - var/bible_index = GLOB.biblenames.Find(choice) - if(!bible_index) - return FALSE - icon_state = GLOB.biblestates[bible_index] - inhand_icon_state = GLOB.bibleitemstates[bible_index] - - switch(icon_state) - if("honk1") - user.dna.add_mutation(/datum/mutation/human/clumsy) - user.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(user), ITEM_SLOT_MASK) - AddComponent(/datum/component/slippery, 40) //Same as a synthesized banana peel. - if("honk2") - user.dna.add_mutation(/datum/mutation/human/clumsy) - user.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(user), ITEM_SLOT_MASK) - AddComponent(/datum/component/slippery, 40) //Same as a synthesized banana peel. - if("insuls") - var/obj/item/clothing/gloves/color/fyellow/insuls = new - insuls.name = "insuls" - insuls.desc = "A mere copy of the true insuls." - insuls.siemens_coefficient = 0.99999 - user.equip_to_slot(insuls, ITEM_SLOT_GLOVES) - GLOB.bible_icon_state = icon_state - GLOB.bible_inhand_icon_state = inhand_icon_state - SSblackbox.record_feedback("text", "religion_book", 1, "[choice]") - -/** - * Checks if we are allowed to interact with a radial menu - * - * Arguments: - * * user The mob interacting with the menu - */ -/obj/item/storage/book/bible/proc/check_menu(mob/living/carbon/human/user) - if(GLOB.bible_icon_state) - return FALSE - if(!istype(user) || !user.is_holding(src)) - return FALSE - if(user.incapacitated()) - return FALSE - if(user.mind?.holy_role != HOLY_ROLE_HIGHPRIEST) - return FALSE - return TRUE - -/obj/item/storage/book/bible/proc/make_new_altar(atom/bible_smacked, mob/user) - var/new_altar_area = get_turf(bible_smacked) - - balloon_alert(user, "unpacking bible...") - if(!do_after(user, 15 SECONDS, new_altar_area)) - return - new /obj/structure/altar_of_gods(new_altar_area) - qdel(src) - -/obj/item/storage/book/bible/proc/bless(mob/living/L, mob/living/user) - if(GLOB.religious_sect) - return GLOB.religious_sect.sect_bless(L,user) - if(!ishuman(L)) - return - var/mob/living/carbon/human/H = L - for(var/obj/item/bodypart/bodypart as anything in H.bodyparts) - if(!IS_ORGANIC_LIMB(bodypart)) - balloon_alert(user, "can't heal metal!") - return 0 - - var/heal_amt = 10 - var/list/hurt_limbs = H.get_damaged_bodyparts(1, 1, 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, BODYTYPE_ORGANIC)) - H.update_damage_overlays() - H.visible_message(span_notice("[user] heals [H] with the power of [deity_name]!")) - to_chat(H, span_boldnotice("May the power of [deity_name] compel you to be healed!")) - playsound(src.loc, SFX_PUNCH, 25, TRUE, -1) - H.add_mood_event("blessing", /datum/mood_event/blessing) - return TRUE - -/obj/item/storage/book/bible/attack(mob/living/M, mob/living/carbon/human/user, heal_mode = TRUE) - - if (!ISADVANCEDTOOLUSER(user)) - balloon_alert(user, "not dextrous enough!") - return - - if (HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) - to_chat(user, span_danger("[src] slips out of your hand and hits your head.")) - user.take_bodypart_damage(10) - user.Unconscious(40 SECONDS) - return - - if (!user.mind || !user.mind.holy_role) - to_chat(user, span_danger("The book sizzles in your hands.")) - user.take_bodypart_damage(0, 10) - return - - if (!heal_mode) - return ..() - - if (M.stat == DEAD) - M.visible_message(span_danger("[user] smacks [M]'s lifeless corpse with [src].")) - playsound(src.loc, SFX_PUNCH, 25, TRUE, -1) - return - - if(user == M) - balloon_alert(user, "can't heal yourself!") - return - - var/smack = TRUE - - if(prob(60) && bless(M, user)) - smack = FALSE - else if(iscarbon(M)) - var/mob/living/carbon/C = M - if(!istype(C.head, /obj/item/clothing/head/helmet)) - C.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 60) - C.balloon_alert(C, "you feel dumber") - - if(smack) - M.visible_message(span_danger("[user] beats [M] over the head with [src]!"), \ - span_userdanger("[user] beats [M] over the head with [src]!")) - playsound(src.loc, SFX_PUNCH, 25, TRUE, -1) - log_combat(user, M, "attacked", src) - -/obj/item/storage/book/bible/attackby_storage_insert(datum/storage, atom/storage_holder, mob/user) - return !istype(storage_holder, /obj/item/storage/book/bible) - -/obj/item/storage/book/bible/afterattack(atom/bible_smacked, mob/user, proximity) - . = ..() - if(!proximity) - return - if(SEND_SIGNAL(bible_smacked, COMSIG_BIBLE_SMACKED, user, proximity) & COMSIG_END_BIBLE_CHAIN) - return . | AFTERATTACK_PROCESSED_ITEM - if(isfloorturf(bible_smacked)) - if(user.mind && (user.mind.holy_role)) - var/area/current_area = get_area(bible_smacked) - if(!GLOB.chaplain_altars.len && istype(current_area, /area/station/service/chapel)) - make_new_altar(bible_smacked, user) - return - for(var/obj/effect/rune/nearby_runes in orange(2,user)) - nearby_runes.invisibility = 0 - bible_smacked.balloon_alert(user, "floor smacked") - - if(user?.mind?.holy_role) - if(bible_smacked.reagents && bible_smacked.reagents.has_reagent(/datum/reagent/water)) // blesses all the water in the holder - . |= AFTERATTACK_PROCESSED_ITEM - bible_smacked.balloon_alert(user, "blessed") - var/water2holy = bible_smacked.reagents.get_reagent_amount(/datum/reagent/water) - bible_smacked.reagents.del_reagent(/datum/reagent/water) - bible_smacked.reagents.add_reagent(/datum/reagent/water/holywater,water2holy) - if(bible_smacked.reagents && bible_smacked.reagents.has_reagent(/datum/reagent/fuel/unholywater)) // yeah yeah, copy pasted code - sue me - . |= AFTERATTACK_PROCESSED_ITEM - bible_smacked.balloon_alert(user, "purified") - var/unholy2clean = bible_smacked.reagents.get_reagent_amount(/datum/reagent/fuel/unholywater) - bible_smacked.reagents.del_reagent(/datum/reagent/fuel/unholywater) - bible_smacked.reagents.add_reagent(/datum/reagent/water/holywater,unholy2clean) - if(istype(bible_smacked, /obj/item/storage/book/bible) && !istype(bible_smacked, /obj/item/storage/book/bible/syndicate)) - . |= AFTERATTACK_PROCESSED_ITEM - bible_smacked.balloon_alert(user, "converted") - var/obj/item/storage/book/bible/B = bible_smacked - B.name = name - B.icon_state = icon_state - B.inhand_icon_state = inhand_icon_state - - if(istype(bible_smacked, /obj/item/cult_bastard) && !IS_CULTIST(user)) - . |= AFTERATTACK_PROCESSED_ITEM - var/obj/item/cult_bastard/sword = bible_smacked - bible_smacked.balloon_alert(user, "exorcising...") - playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,TRUE) - if(do_after(user, 40, target = sword)) - playsound(src,'sound/effects/pray_chaplain.ogg',60,TRUE) - for(var/obj/item/soulstone/SS in sword.contents) - SS.required_role = null - for(var/mob/living/basic/shade/EX in SS) - var/datum/antagonist/cult/cultist = EX.mind.has_antag_datum(/datum/antagonist/cult) - if (cultist) - cultist.silent = TRUE - cultist.on_removal() - - EX.icon_state = "shade_holy" - EX.name = "Purified [EX.name]" - SS.release_shades(user) - qdel(SS) - new /obj/item/nullrod/claymore(get_turf(sword)) - user.visible_message(span_notice("[user] purifies [sword]!")) - qdel(sword) - -/obj/item/storage/book/bible/booze - desc = "To be applied to the head repeatedly." - -/obj/item/storage/book/bible/booze/PopulateContents() - new /obj/item/reagent_containers/cup/glass/bottle/whiskey(src) - -/obj/item/storage/book/bible/syndicate - icon_state ="ebook" - deity_name = "The Syndicate" - throw_speed = 2 - throwforce = 18 - throw_range = 7 - force = 18 - hitsound = 'sound/weapons/sear.ogg' - damtype = BURN - name = "Syndicate Tome" - attack_verb_continuous = list("attacks", "burns", "blesses", "damns", "scorches") - attack_verb_simple = list("attack", "burn", "bless", "damn", "scorch") - item_flags = NO_BLOOD_ON_ITEM - var/uses = 1 - var/ownername - -/obj/item/book/bible/syndicate/Initialize(mapload) - . = ..() - AddComponent(/datum/component/anti_magic, MAGIC_RESISTANCE|MAGIC_RESISTANCE_HOLY) - AddComponent(/datum/component/effect_remover, \ - success_feedback = "You disrupt the magic of %THEEFFECT with %THEWEAPON.", \ - success_forcesay = "BEGONE FOUL MAGIKS!!", \ - tip_text = "Clear rune", \ - effects_we_clear = list(/obj/effect/rune, /obj/effect/heretic_rune, /obj/effect/cosmic_rune), \ - ) - AddElement(/datum/element/bane, target_type = /mob/living/basic/revenant, damage_multiplier = 0, added_damage = 25, requires_combat_mode = FALSE) - -/obj/item/storage/book/bible/syndicate/attack_self(mob/living/carbon/human/H) - if (uses) - H.mind.holy_role = HOLY_ROLE_PRIEST - uses -= 1 - to_chat(H, span_userdanger("You try to open the book AND IT BITES YOU!")) - playsound(src.loc, 'sound/effects/snap.ogg', 50, TRUE) - H.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - to_chat(H, span_notice("Your name appears on the inside cover, in blood.")) - ownername = H.real_name - -/obj/item/storage/book/bible/syndicate/examine(mob/user) - . = ..() - if(ownername) - . += span_warning("The name [ownername] is written in blood inside the cover.") - -/obj/item/storage/book/bible/syndicate/attack(mob/living/M, mob/living/carbon/human/user, heal_mode = TRUE) - if (!(user.istate & ISTATE_HARM)) - return ..() - else - return ..(M,user,heal_mode = FALSE) diff --git a/code/game/objects/items/storage/boxes/job_boxes.dm b/code/game/objects/items/storage/boxes/job_boxes.dm index acabe663dc34..9db611b3f316 100644 --- a/code/game/objects/items/storage/boxes/job_boxes.dm +++ b/code/game/objects/items/storage/boxes/job_boxes.dm @@ -292,6 +292,7 @@ desc = "Contains spares of every science job skillchip." /obj/item/storage/box/skillchips/science/PopulateContents() + new/obj/item/skillchip/job/research_director(src) new/obj/item/skillchip/job/roboticist(src) new/obj/item/skillchip/job/roboticist(src) new/obj/item/skillchip/cyberjacker(src) diff --git a/code/game/objects/items/storage/garment.dm b/code/game/objects/items/storage/garment.dm index 15610ab80efb..403b4843f3f5 100644 --- a/code/game/objects/items/storage/garment.dm +++ b/code/game/objects/items/storage/garment.dm @@ -82,6 +82,7 @@ new /obj/item/clothing/suit/armor/hos(src) new /obj/item/clothing/suit/armor/hos/hos_formal(src) new /obj/item/clothing/suit/armor/hos/trenchcoat/winter(src) + new /obj/item/clothing/suit/armor/hos/trenchcoat/pimpcoat(src) new /obj/item/clothing/suit/armor/vest/leather(src) new /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch(src) new /obj/item/clothing/glasses/hud/security/sunglasses/gars/giga(src) diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 6514377887d6..b890f292ea8b 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -292,17 +292,13 @@ /obj/item/paper/contractor_guide/Initialize(mapload) default_raw_text = {"

Welcome agent, congratulations on your new position as contractor. On top of your already assigned objectives, this kit will provide you contracts to take on for TC payments.

-

Provided within, we give your specialist contractor space suit. It's even more compact, being able to fit into a pocket, and faster than the Syndicate space suit available to you on the uplink. We also provide your chameleon jumpsuit and mask, both of which can be changed to any form you need for the moment. The cigarettes are a special blend - it'll heal your injuries slowly overtime.

-

Your standard issue contractor baton hits harder than the ones you might be used to, and likely be your go to weapon for kidnapping your targets. The three additional items have been randomly selected from what we had available. We hope they're useful to you for your mission.

-

The contractor hub, available at the top right of the uplink, will provide you unique items and abilities. These are bought using Contractor Rep, with two Rep being provided each time you complete a contract.

-

Using the tablet

  1. Open the Syndicate Contract Uplink program.
  2. @@ -312,7 +308,6 @@
  3. Contracts are completed by bringing the target to designated dropoff, calling for extraction, and putting them inside the pod.
-

Be careful when accepting a contract. While you'll be able to see the location of the dropoff point, cancelling will make it unavailable to take on again.

The tablet can also be recharged at any cell charger.

@@ -327,7 +322,6 @@

We need your target for our own reasons, but we ransom them back to your mission area once their use is served. They will return back from where you sent them off from in several minutes time. Don't worry, we give you a cut of what we get paid. We pay this into whatever ID card you have equipped, on top of the TC payment we give.

-

Good luck agent. You can burn this document with the supplied lighter.

"} return ..() @@ -532,6 +526,11 @@ new /obj/item/food/croissant/throwing(src) new /obj/item/book/granter/crafting_recipe/combat_baking(src) +/obj/item/storage/box/syndie_kit/laser_arm/PopulateContents() + new /obj/item/autosurgeon/organ/cyberlink_syndicate(src) + new /obj/item/autosurgeon/syndicate/laser_arm (src) + + /obj/item/storage/box/syndie_kit/centcom_costume/PopulateContents() new /obj/item/clothing/under/rank/centcom/officer(src) new /obj/item/clothing/shoes/sneakers/black(src) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 728e1504531b..e9d319803b7b 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -813,7 +813,7 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) return COMSIG_CARBON_SHOVE_HANDLED /// Signal proc for [COMSIG_ATOM_MAGICALLY_UNLOCKED]. Unlock and open up when we get knock casted. -/obj/structure/closet/proc/on_magic_unlock(datum/source, datum/action/cooldown/spell/aoe/knock/spell, mob/living/caster) +/obj/structure/closet/proc/on_magic_unlock(datum/source, datum/action/cooldown/spell/aoe/knock/spell, atom/caster) SIGNAL_HANDLER locked = FALSE diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 76f728432d44..47582a860ad3 100755 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -328,7 +328,7 @@ /obj/structure/closet/secure_closet/tac name = "armory tac locker" - req_access = list(ACCESS_ARMORY) + req_access = list(ACCESS_CENT_GENERAL) icon_state = "tac" /obj/structure/closet/secure_closet/tac/PopulateContents() diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 99317dd61aed..da3c3635ed97 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -371,6 +371,9 @@ /obj/structure/girder/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) var/remains = pick(/obj/item/stack/rods, /obj/item/stack/sheet/iron) + var/area/shipbreak/A = get_area(src) + if(istype(A)) //shipbreaking + remains = /obj/item/stack/scrap/framing new remains(loc) qdel(src) diff --git a/code/game/objects/structures/janitor.dm b/code/game/objects/structures/janitor.dm index 3d7408e60475..21a7e1ec82ed 100644 --- a/code/game/objects/structures/janitor.dm +++ b/code/game/objects/structures/janitor.dm @@ -80,6 +80,7 @@ /obj/structure/mop_bucket/janitorialcart/Initialize(mapload) . = ..() + reagents.maximum_volume *= 2.5 //monkestation edit GLOB.janitor_devices += src /obj/structure/mop_bucket/janitorialcart/Destroy() diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm index 44b1b59ddce3..7928582a88db 100644 --- a/code/game/objects/structures/railings.dm +++ b/code/game/objects/structures/railings.dm @@ -76,12 +76,14 @@ /obj/structure/railing/AltClick(mob/user) return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation +/* monkestation edit: replaced in [monkestation\code\modules\blueshift\structures\wooden_fence.dm] /obj/structure/railing/wirecutter_act(mob/living/user, obj/item/I) . = ..() to_chat(user, span_warning("You cut apart the railing.")) I.play_tool_sound(src, 100) deconstruct() return TRUE +monkestation end */ /obj/structure/railing/deconstruct(disassembled) if((flags_1 & NODECONSTRUCT_1)) diff --git a/code/game/sound.dm b/code/game/sound.dm index 856c49c975c5..4a2a02eaa997 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -263,15 +263,14 @@ GLOBAL_LIST_EMPTY(cached_mixer_channels) S.status = SOUND_UPDATE SEND_SOUND(src, S) -/client/proc/playtitlemusic(vol = 0.85) +/client/proc/playtitlemusic(vol = 85) set waitfor = FALSE UNTIL(SSticker.login_music_done) //wait for SSticker init to set the login music // monkestation edit: fix-lobby-music UNTIL(fully_created) if("[CHANNEL_LOBBYMUSIC]" in prefs.channel_volume) if(prefs.channel_volume["[CHANNEL_LOBBYMUSIC]"] != 0) - vol *= prefs.channel_volume["[CHANNEL_LOBBYMUSIC]"] * 0.01 + vol = prefs.channel_volume["[CHANNEL_LOBBYMUSIC]"] vol *= prefs.channel_volume["[CHANNEL_MASTER_VOLUME]"] * 0.01 - if((prefs && (!prefs.read_preference(/datum/preference/toggle/sound_lobby))) || CONFIG_GET(flag/disallow_title_music)) return @@ -279,6 +278,7 @@ GLOBAL_LIST_EMPTY(cached_mixer_channels) media = new /datum/media_manager(src) media.open() media.update_music() + media.lobby_music = TRUE if(!length(SSmedia_tracks.lobby_tracks)) return @@ -293,7 +293,8 @@ GLOBAL_LIST_EMPTY(cached_mixer_channels) SSmedia_tracks.first_lobby_play = FALSE var/datum/media_track/T = SSmedia_tracks.current_lobby_track - media.push_music(T.url, world.time, vol) + media.push_music(T.url, world.time, 1) + media.update_volume(vol) // this makes it easier if we modify volume later on to_chat(src,"Lobby music: [T.title] by [T.artist].") /proc/get_rand_frequency() @@ -532,4 +533,12 @@ GLOBAL_LIST_EMPTY(cached_mixer_channels) soundin = pick('sound/effects/treechop1.ogg', 'sound/effects/treechop2.ogg', 'sound/effects/treechop3.ogg') if(SFX_ROCK_TAP) soundin = pick('sound/effects/rocktap1.ogg', 'sound/effects/rocktap2.ogg', 'sound/effects/rocktap3.ogg') + // monkestation start: more sound effects + if(SFX_BUTTON_CLICK) + soundin = 'monkestation/sound/effects/hl2/button-click.ogg' + if(SFX_BUTTON_FAIL) + soundin = 'monkestation/sound/effects/hl2/button-fail.ogg' + if(SFX_LIGHTSWITCH) + soundin = 'monkestation/sound/effects/hl2/lightswitch.ogg' + // monkestation end return soundin diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index 8386c640f339..59913a3e9250 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -144,7 +144,7 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( if(SSlighting.initialized) // Space tiles should never have lighting objects //monkestation addition start - if(SSoutdoor_effects.initialized) + if(SSoutdoor_effects.initialized && SSoutdoor_effects.enabled) outdoor_effect = old_outdoor_effect get_sky_and_weather_states() diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index 424696ee4ed6..7622db1898ac 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -140,7 +140,7 @@ SSblackbox.record_feedback("tally", "ore_mined", mineralAmt, initial(mineralType.name)) if(ishuman(user)) var/mob/living/carbon/human/H = user - if(HAS_TRAIT(H, FOOD_JOB_MINER)) + if(HAS_TRAIT(H, TRAIT_FOOD_JOB_MINER)) var/obj/item/stack/ore/picked_ore if(prob(20)) switch(rand(122)) @@ -172,10 +172,12 @@ var/old_type = type if(defer_change) // TODO: make the defer change var a var for any changeturf flag flags = CHANGETURF_DEFER_CHANGE - var/turf/open/mined = ScrapeAway(null, flags) - addtimer(CALLBACK(src, PROC_REF(AfterChange), flags, old_type), 1, TIMER_UNIQUE) playsound(src, 'sound/effects/break_stone.ogg', 50, TRUE) //beautiful destruction - mined.update_visuals() + var/turf/open/mined = ScrapeAway(null, flags) + if(!QDELETED(src)) + addtimer(CALLBACK(src, PROC_REF(AfterChange), flags, old_type), 1, TIMER_UNIQUE) + if(!QDELETED(mined)) + mined.update_visuals() /turf/closed/mineral/attack_alien(mob/living/carbon/alien/user, list/modifiers) balloon_alert(user, "digging...") diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm index baf7cd488086..793447312b94 100644 --- a/code/game/turfs/closed/walls.dm +++ b/code/game/turfs/closed/walls.dm @@ -27,6 +27,7 @@ var/hardness = 40 var/slicing_duration = 100 //default time taken to slice the wall var/sheet_type = /obj/item/stack/sheet/iron + var/scrap_type = /obj/item/stack/scrap/plating var/sheet_amount = 2 var/girder_type = /obj/structure/girder /// A turf that will replace this turf when this turf is destroyed @@ -138,12 +139,20 @@ QUEUE_SMOOTH_NEIGHBORS(src) /turf/closed/wall/proc/break_wall() - new sheet_type(src, sheet_amount) + var/area/shipbreak/A = get_area(src) + if(istype(A)) //if we are actually in the shipbreaking zone... + new scrap_type(src, sheet_amount) + else + new sheet_type(src, sheet_amount) if(girder_type) return new girder_type(src) /turf/closed/wall/proc/devastate_wall() - new sheet_type(src, sheet_amount) + var/area/shipbreak/A = get_area(src) + if(istype(A)) + new scrap_type(src, sheet_amount) + else + new sheet_type(src, sheet_amount) if(girder_type) new /obj/item/stack/sheet/iron(src) diff --git a/code/game/turfs/open/floor/misc_floor.dm b/code/game/turfs/open/floor/misc_floor.dm index 4e83c9acb054..81249fe0ace6 100644 --- a/code/game/turfs/open/floor/misc_floor.dm +++ b/code/game/turfs/open/floor/misc_floor.dm @@ -155,6 +155,14 @@ /turf/open/floor/noslip/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent) return +/turf/open/floor/noslip/tram/Initialize(mapload) + . = ..() + var/current_holiday_color = request_holiday_colors(src, PATTERN_VERTICAL_STRIPE) + if(current_holiday_color) + color = current_holiday_color + else + color = "#EFB341" + /turf/open/floor/oldshuttle icon = 'icons/turf/shuttleold.dmi' icon_state = "floor" diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 8f7f545e9773..4386545f07d3 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -228,9 +228,11 @@ GLOBAL_LIST_EMPTY(station_turfs) return //move the turf - old_area.turfs_to_uncontain += src + LISTASSERTLEN(old_area.turfs_to_uncontain_by_zlevel, z, list()) + LISTASSERTLEN(new_area.turfs_by_zlevel, z, list()) + old_area.turfs_to_uncontain_by_zlevel[z] += src + new_area.turfs_by_zlevel[z] += src new_area.contents += src - new_area.contained_turfs += src //changes to make after turf has moved on_change_area(old_area, new_area) @@ -650,6 +652,11 @@ GLOBAL_LIST_EMPTY(station_turfs) /turf/AllowDrop() return TRUE +// monkestation start: fix runtime from turf.drop_location() +/turf/drop_location() + return src +// monkestation end + /turf/proc/add_vomit_floor(mob/living/M, toxvomit = NONE, purge_ratio = 0.1) var/obj/effect/decal/cleanable/vomit/V = new /obj/effect/decal/cleanable/vomit(src, M.get_static_viruses()) @@ -741,16 +748,16 @@ GLOBAL_LIST_EMPTY(station_turfs) * Returns adjacent turfs to this turf that are reachable, in all cardinal directions * * Arguments: - * * caller: The movable, if one exists, being used for mobility checks to see what tiles it can reach + * * source: The movable, if one exists, being used for mobility checks to see what tiles it can reach * * access: A list that decides if we can gain access to doors that would otherwise block a turf * * simulated_only: Do we only worry about turfs with simulated atmos, most notably things that aren't space? * * no_id: When true, doors with public access will count as impassible */ -/turf/proc/reachableAdjacentTurfs(atom/movable/caller, list/access, simulated_only, no_id = FALSE) +/turf/proc/reachableAdjacentTurfs(atom/movable/source, list/access, simulated_only, no_id = FALSE) var/static/space_type_cache = typecacheof(/turf/open/space) . = list() - var/datum/can_pass_info/pass_info = new(caller, access, no_id) + var/datum/can_pass_info/pass_info = new(source, access, no_id) for(var/iter_dir in GLOB.cardinals) var/turf/turf_to_check = get_step(src,iter_dir) if(!turf_to_check || (simulated_only && space_type_cache[turf_to_check.type])) diff --git a/code/game/world.dm b/code/game/world.dm index 6a071e02ef82..59a033e4d7e3 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -1,11 +1,13 @@ #define RESTART_COUNTER_PATH "data/round_counter.txt" - +/// Load byond-tracy. If USE_BYOND_TRACY is defined, then this is ignored and byond-tracy is always loaded. +#define USE_TRACY_PARAMETER "tracy" /// Force the log directory to be something specific in the data/logs folder #define OVERRIDE_LOG_DIRECTORY_PARAMETER "log-directory" /// Prevent the master controller from starting automatically #define NO_INIT_PARAMETER "no-init" GLOBAL_VAR(restart_counter) +GLOBAL_VAR(tracy_log) /** * WORLD INITIALIZATION @@ -62,10 +64,12 @@ GLOBAL_VAR(restart_counter) #ifdef USE_BYOND_TRACY #warn USE_BYOND_TRACY is enabled if(!tracy_initialized) - init_byond_tracy() +#else + if(!tracy_initialized && (USE_TRACY_PARAMETER in params)) +#endif + GLOB.tracy_log = init_byond_tracy() Genesis(tracy_initialized = TRUE) return -#endif Profile(PROFILE_RESTART) Profile(PROFILE_RESTART, type = "sendmaps") @@ -216,6 +220,9 @@ GLOBAL_VAR(restart_counter) GLOB.demo_log = "[GLOB.demo_directory]/[GLOB.round_id]_demo.txt" //Guh //Monkestation Edit: REPLAYS logger.init_logging() + if(GLOB.tracy_log) + rustg_file_write("[GLOB.tracy_log]", "[GLOB.log_directory]/tracy.loc") + var/latest_changelog = file("[global.config.directory]/../html/changelogs/archive/" + time2text(world.timeofday, "YYYY-MM") + ".yml") GLOB.changelog_hash = fexists(latest_changelog) ? md5(latest_changelog) : 0 //for telling if the changelog has changed recently @@ -417,10 +424,13 @@ GLOBAL_VAR(restart_counter) if(!map_load_z_cutoff) return var/area/global_area = GLOB.areas_by_type[world.area] // We're guaranteed to be touching the global area, so we'll just do this - var/list/to_add = block( - locate(old_max + 1, 1, 1), - locate(maxx, maxy, map_load_z_cutoff)) - global_area.contained_turfs += to_add + LISTASSERTLEN(global_area.turfs_by_zlevel, map_load_z_cutoff, list()) + for (var/zlevel in 1 to map_load_z_cutoff) + var/list/to_add = block( + locate(old_max + 1, 1, zlevel), + locate(maxx, maxy, zlevel)) + + global_area.turfs_by_zlevel[zlevel] += to_add /world/proc/increase_max_y(new_maxy, map_load_z_cutoff = maxz) if(new_maxy <= maxy) @@ -430,10 +440,12 @@ GLOBAL_VAR(restart_counter) if(!map_load_z_cutoff) return var/area/global_area = GLOB.areas_by_type[world.area] // We're guarenteed to be touching the global area, so we'll just do this - var/list/to_add = block( - locate(1, old_maxy + 1, 1), - locate(maxx, maxy, map_load_z_cutoff)) - global_area.contained_turfs += to_add + LISTASSERTLEN(global_area.turfs_by_zlevel, map_load_z_cutoff, list()) + for (var/zlevel in 1 to map_load_z_cutoff) + var/list/to_add = block( + locate(1, old_maxy + 1, 1), + locate(maxx, maxy, map_load_z_cutoff)) + global_area.turfs_by_zlevel[zlevel] += to_add /world/proc/incrementMaxZ() maxz++ @@ -475,7 +487,9 @@ GLOBAL_VAR(restart_counter) CRASH("Unsupported platform: [system_type]") var/init_result = call_ext(library, "init")("block") - if (init_result != "0") + if(length(init_result) != 0 && init_result[1] == ".") // if first character is ., then it returned the output filename + return init_result + else if(init_result != "0") CRASH("Error initializing byond-tracy: [init_result]") /world/proc/init_debugger() @@ -490,4 +504,5 @@ GLOBAL_VAR(restart_counter) #undef NO_INIT_PARAMETER #undef OVERRIDE_LOG_DIRECTORY_PARAMETER +#undef USE_TRACY_PARAMETER #undef RESTART_COUNTER_PATH diff --git a/code/modules/actionspeed/_actionspeed_modifier.dm b/code/modules/actionspeed/_actionspeed_modifier.dm index 761bfc3ff74a..07fce1f52f2d 100644 --- a/code/modules/actionspeed/_actionspeed_modifier.dm +++ b/code/modules/actionspeed/_actionspeed_modifier.dm @@ -40,8 +40,6 @@ can next move /datum/actionspeed_modifier/New(init_id) . = ..() - id = init_id - if(!id) id = "[type]" //We turn the path into a string. diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 2c9cbc173788..cd51aa76179d 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -43,6 +43,7 @@ GLOBAL_PROTECT(admin_verbs_admin) /datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/ /datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/ /datum/admins/proc/togglelooc, /*MONKESTATION EDIT; toggles looc on/off for everyone*/ + /datum/admins/proc/toggledeadchat, /*MONKESTATION EDIT; toggles deadchat on/off for everyone*/ /datum/admins/proc/trophy_manager, /datum/admins/proc/view_all_circuits, /datum/admins/proc/open_artifactpanel, @@ -198,7 +199,6 @@ GLOBAL_PROTECT(admin_verbs_debug) /proc/machine_upgrade, /datum/admins/proc/create_or_modify_area, /client/proc/adventure_manager, - /client/proc/hard_deletion_toggle, /client/proc/atmos_control, /client/proc/callproc, /client/proc/callproc_datum, @@ -261,6 +261,7 @@ GLOBAL_PROTECT(admin_verbs_debug) /client/proc/log_viewer_new, /client/proc/getserverlogs_debug, /client/proc/getcurrentlogs_debug, + /client/proc/server_memory_stats, ) GLOBAL_LIST_INIT(admin_verbs_possess, list(/proc/possess, /proc/release)) GLOBAL_PROTECT(admin_verbs_possess) diff --git a/code/modules/admin/antag_panel.dm b/code/modules/admin/antag_panel.dm index f01b805e5986..b9bf4486cc28 100644 --- a/code/modules/admin/antag_panel.dm +++ b/code/modules/admin/antag_panel.dm @@ -114,6 +114,7 @@ GLOBAL_VAR(antag_prototypes) GLOB.antag_prototypes[cat_id] = list(A) else GLOB.antag_prototypes[cat_id] += A + GLOB.antagonists -= A // monkestation edit: don't store the prototypes with actual antags sortTim(GLOB.antag_prototypes, GLOBAL_PROC_REF(cmp_text_asc)) //monkestation edit sortTim(GLOB.antag_prototypes, GLOBAL_PROC_REF(cmp_text_asc),associative=TRUE) diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index 3f4833527c89..66a2d727542f 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -87,16 +87,17 @@ if (!possessable.ckey && possessable.stat == CONSCIOUS) // Only assign ghosts to living, non-occupied mobs! bodies += possessable - var/question = "Would you like to be [group_name]?" - var/list/candidates = SSpolling.poll_ghost_candidates_for_mobs( - question, + var/list/candidates = SSpolling.poll_ghosts_for_targets( + question = "Would you like to be [span_notice(group_name)]?", role = ROLE_SENTIENCE, + check_jobban = ROLE_SENTIENCE, poll_time = 10 SECONDS, - mobs = bodies, + checked_targets = bodies, ignore_category = POLL_IGNORE_SHUTTLE_DENIZENS, - pic_source = src, - role_name_text = group_name || "sentience fun balloon" + alert_pic = src, + role_name_text = "sentience fun balloon", ) + while(LAZYLEN(candidates) && LAZYLEN(bodies)) var/mob/dead/observer/C = pick_n_take(candidates) var/mob/living/body = pick_n_take(bodies) diff --git a/code/modules/admin/hardelete_toggle.dm b/code/modules/admin/hardelete_toggle.dm deleted file mode 100644 index 6c2fa4b6405e..000000000000 --- a/code/modules/admin/hardelete_toggle.dm +++ /dev/null @@ -1,17 +0,0 @@ -/client/proc/hard_deletion_toggle() - set category = "Debug" - set name = "Enable/Disable Hard Deletes" - - var/static/list/warned_users - - LAZYINITLIST(warned_users) - var/current_val = SSgarbage.enable_hard_deletes - if (current_val && !warned_users[usr.ckey]) - to_chat(usr, "WARNING: Disabling garbage hard deletion will likely result in permanent memory leaks until the next round. Run this verb again to disable it.") - warned_users[usr.ckey] = TRUE - return - - SSgarbage.enable_hard_deletes = !current_val - - log_admin("[key_name(usr)] toggled garbage hard deletion [SSgarbage.enable_hard_deletes ? "ON" : "OFF"].") - SSblackbox.record_feedback("tally", "admin_verb", 1, "hard_deletion_toggle") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 31d21eeb0fd3..9cbf4bf43c5c 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -179,7 +179,7 @@ GLOBAL_PROTECT(href_token) owner.remove_admin_verbs() owner.holder = null GLOB.mentors -= owner - owner.mentor_datum.owner = null + owner.mentor_datum?.owner = null owner.mentor_datum = null owner = null diff --git a/code/modules/admin/smites/bad_luck.dm b/code/modules/admin/smites/bad_luck.dm index a5c00aea43d9..c9f6a94b93a0 100644 --- a/code/modules/admin/smites/bad_luck.dm +++ b/code/modules/admin/smites/bad_luck.dm @@ -14,8 +14,11 @@ /datum/smite/bad_luck/effect(client/user, mob/living/target) . = ..() + //if permanent, replace any existing omen + if(permanent) + var/existing_component = target.GetComponent(/datum/component/omen) + qdel(existing_component) target.AddComponent(/datum/component/omen/smite, permanent = permanent) - if(silent) return to_chat(target, span_warning("You get a bad feeling...")) diff --git a/code/modules/admin/smites/boneless.dm b/code/modules/admin/smites/boneless.dm index bf402abdfdb6..31c29aa24727 100644 --- a/code/modules/admin/smites/boneless.dm +++ b/code/modules/admin/smites/boneless.dm @@ -1,4 +1,4 @@ -/// Gives the target critically bad wounds +/// Gives the target critically bad bones /datum/smite/boneless name = ":B:oneless" @@ -8,14 +8,12 @@ if (!iscarbon(target)) to_chat(user, span_warning("This must be used on a carbon mob."), confidential = TRUE) return - var/mob/living/carbon/carbon_target = target - for(var/obj/item/bodypart/limb as anything in carbon_target.bodyparts) - var/severity = pick(list( - "[WOUND_SEVERITY_MODERATE]", - "[WOUND_SEVERITY_SEVERE]", - "[WOUND_SEVERITY_SEVERE]", - "[WOUND_SEVERITY_CRITICAL]", - "[WOUND_SEVERITY_CRITICAL]", - )) - carbon_target.cause_wound_of_type_and_severity(WOUND_BLUNT, limb, severity) + for(var/_limb in carbon_target.bodyparts) + var/obj/item/bodypart/limb = _limb // fine to use this raw, its a meme smite + var/type_wound = pick(list(/datum/wound/blunt/bone/critical, /datum/wound/blunt/bone/severe)) + limb.force_wound_upwards(type_wound, smited = TRUE) + type_wound = pick(list(/datum/wound/blunt/bone/critical, /datum/wound/blunt/bone/severe, /datum/wound/blunt/bone/moderate)) + limb.force_wound_upwards(type_wound, smited = TRUE) + type_wound = pick(list(/datum/wound/blunt/bone/critical, /datum/wound/blunt/bone/severe)) + limb.force_wound_upwards(type_wound, smited = TRUE) diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm index aa38df327ca9..c58943299822 100644 --- a/code/modules/admin/sql_ban_system.dm +++ b/code/modules/admin/sql_ban_system.dm @@ -1058,7 +1058,7 @@ if(GLOB.admin_datums[player_client.ckey] || GLOB.deadmins[player_client.ckey]) is_admin = TRUE if(kick_banned_players && (!is_admin || (is_admin && applies_to_admins))) - SSgarbage.HardDelete(player_client, override = TRUE) + SSgarbage.HardDelete(player_client) if(player_client) qdel(player_client) @@ -1069,7 +1069,7 @@ if(GLOB.admin_datums[other_player_client.ckey] || GLOB.deadmins[other_player_client.ckey]) is_admin = TRUE if(kick_banned_players && (!is_admin || (is_admin && applies_to_admins))) - SSgarbage.HardDelete(other_player_client, override = TRUE) + SSgarbage.HardDelete(other_player_client) if(other_player_client) qdel(other_player_client) diff --git a/code/modules/admin/verbs/admin.dm b/code/modules/admin/verbs/admin.dm index 1cc7e2555fab..e410703557a5 100644 --- a/code/modules/admin/verbs/admin.dm +++ b/code/modules/admin/verbs/admin.dm @@ -116,6 +116,7 @@ message_admins("[key_name_admin(usr)] has [newstate ? "activated" : "deactivated"] job exp exempt status on [key_name_admin(C)]") log_admin("[key_name(usr)] has [newstate ? "activated" : "deactivated"] job exp exempt status on [key_name(C)]") +/* monkestation edit: replaced in [monkestation\code\modules\admin\verbs\traits.dm] /// Allow admin to add or remove traits of datum /datum/admins/proc/modify_traits(datum/D) if(!D) @@ -132,10 +133,10 @@ if(istype(D,key)) available_traits += GLOB.traits_by_type[key] if("Remove") - if(!GLOB.trait_name_map) - GLOB.trait_name_map = generate_trait_name_map() + if(!GLOB.global_trait_name_map) + GLOB.global_trait_name_map = generate_global_trait_name_map() for(var/trait in D._status_traits) - var/name = GLOB.trait_name_map[trait] || trait + var/name = GLOB.global_trait_name_map[trait] || trait available_traits[name] = trait var/chosen_trait = input("Select trait to modify", "Trait") as null|anything in sort_list(available_traits) @@ -161,6 +162,7 @@ if(!source) return REMOVE_TRAIT(D,chosen_trait,source) +monkestation end */ /////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index d314d5ce58e1..a8538ba5faf7 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -10,10 +10,10 @@ return var/list/turfs = list() - for(var/turf/T in A) - if(T.density) - continue - turfs.Add(T) + for (var/list/zlevel_turfs as anything in A.get_zlevel_turf_lists()) + for (var/turf/area_turf as anything in zlevel_turfs) + if(!area_turf.density) + turfs.Add(area_turf) if(length(turfs)) var/turf/T = pick(turfs) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index d99de960392d..48cabaa21584 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -602,6 +602,9 @@ dellog += "
  • Ignored force: [I.no_respect_force]
  • " if (I.no_hint) dellog += "
  • No hint: [I.no_hint]
  • " + if(LAZYLEN(I.extra_details)) + var/details = I.extra_details.Join("
  • ") + dellog += "
  • Extra Info: " dellog += "
  • " dellog += "" diff --git a/code/modules/admin/verbs/ert.dm b/code/modules/admin/verbs/ert.dm index d43e58270249..988f6ca344e8 100644 --- a/code/modules/admin/verbs/ert.dm +++ b/code/modules/admin/verbs/ert.dm @@ -141,7 +141,7 @@ var/list/spawnpoints = GLOB.emergencyresponseteamspawn var/index = 0 - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates("Do you wish to be considered for [ertemplate.polldesc]?", check_jobban = "deathsquad", pic_source = /obj/item/card/id/advanced/centcom/ert, role_name_text = "emergency response team") + var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates("Do you wish to be considered for [ertemplate.polldesc]?", check_jobban = "deathsquad", alert_pic = /obj/item/card/id/advanced/centcom/ert, role_name_text = "emergency response team") var/teamSpawned = FALSE // This list will take priority over spawnpoints if not empty diff --git a/code/modules/admin/verbs/highlander_datum.dm b/code/modules/admin/verbs/highlander_datum.dm index bd0a60a848da..8c140ca55067 100644 --- a/code/modules/admin/verbs/highlander_datum.dm +++ b/code/modules/admin/verbs/highlander_datum.dm @@ -38,7 +38,7 @@ GLOBAL_DATUM(highlander_controller, /datum/highlander_controller) robot.make_scottish() addtimer(CALLBACK(SSshuttle.emergency, TYPE_PROC_REF(/obj/docking_port/mobile/emergency, request), null, 1), 50) -/datum/highlander_controller/Destroy(force, ...) +/datum/highlander_controller/Destroy(force) . = ..() UnregisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED) diff --git a/code/modules/admin/verbs/lua/lua_editor.dm b/code/modules/admin/verbs/lua/lua_editor.dm index e31dfd7770f7..b39050ed3c1d 100644 --- a/code/modules/admin/verbs/lua/lua_editor.dm +++ b/code/modules/admin/verbs/lua/lua_editor.dm @@ -29,7 +29,7 @@ ui.set_autoupdate(FALSE) ui.open() -/datum/lua_editor/Destroy(force, ...) +/datum/lua_editor/Destroy(force) . = ..() if(current_state) LAZYREMOVEASSOC(SSlua.editors, text_ref(current_state), src) diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm index c4a79dd6f2ba..a172f3d84542 100644 --- a/code/modules/admin/verbs/secrets.dm +++ b/code/modules/admin/verbs/secrets.dm @@ -1,4 +1,4 @@ -GLOBAL_DATUM(everyone_a_traitor, /datum/everyone_is_a_traitor_controller) +GLOBAL_DATUM(everyone_an_antag, /datum/everyone_is_an_antag_controller) /client/proc/secrets() //Creates a verb for admins to open up the ui set name = "Secrets" @@ -401,7 +401,7 @@ GLOBAL_DATUM(everyone_a_traitor, /datum/everyone_is_a_traitor_controller) var/list/candidates = list() if (prefs["offerghosts"]["value"] == "Yes") - candidates = SSpolling.poll_ghost_candidates(replacetext(prefs["ghostpoll"]["value"], "%TYPE%", initial(pathToSpawn.name)), check_jobban = ROLE_TRAITOR, pic_source = pathToSpawn, role_name_text = "portal storm") + candidates = SSpolling.poll_ghost_candidates(replacetext(prefs["ghostpoll"]["value"], "%TYPE%", initial(pathToSpawn.name)), check_jobban = ROLE_TRAITOR, alert_pic = pathToSpawn, role_name_text = "portal storm") if (prefs["playersonly"]["value"] == "Yes" && length(candidates) < prefs["minplayers"]["value"]) message_admins("Not enough players signed up to create a portal storm, the minimum was [prefs["minplayers"]["value"]] and the number of signups [length(candidates)]") @@ -453,24 +453,35 @@ GLOBAL_DATUM(everyone_a_traitor, /datum/everyone_is_a_traitor_controller) for(var/i in GLOB.human_list) var/mob/living/carbon/human/H = i INVOKE_ASYNC(H, TYPE_PROC_REF(/mob/living/carbon, monkeyize)) - if("traitor_all") + if("antag_all") if(!is_funmin) return if(!SSticker.HasRoundStarted()) tgui_alert(usr,"The game hasn't started yet!") return - if(GLOB.everyone_a_traitor) - tgui_alert(usr, "The everyone is a traitor secret has already been triggered") + if(GLOB.everyone_an_antag) + var/are_we_antagstacking = tgui_alert(usr, "The everyone is antag secret has already been triggered. Do you want to stack antags?", "DANGER ZONE. Are you sure about this?", list("Confirm", "Abort")) + if(are_we_antagstacking != "Confirm") + return + + var/chosen_antag = tgui_input_list(usr, "Choose antag", "Chose antag", list(ROLE_TRAITOR, ROLE_CHANGELING, ROLE_HERETIC, ROLE_CULTIST, ROLE_NINJA, ROLE_WIZARD, ROLE_NIGHTMARE)) + if(!chosen_antag) return - var/objective = tgui_input_text(holder, "Enter an objective", "Objective") + var/objective = tgui_input_text(usr, "Enter an objective", "Objective") if(!objective) return - GLOB.everyone_a_traitor = new /datum/everyone_is_a_traitor_controller(objective) - SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Traitor All", "[objective]")) + var/confirmation = tgui_alert(usr, "Make everyone in to [chosen_antag] with objective: [objective]", "Are you sure about this?", list("Confirm", "Abort")) + if(confirmation != "Confirm") + return + var/keep_generic_objecives = tgui_alert(usr, "Generate normal objectives?", "Give default objectives?", list("Yes", "No")) + keep_generic_objecives = (keep_generic_objecives != "Yes") ? FALSE : TRUE + + GLOB.everyone_an_antag = new /datum/everyone_is_an_antag_controller(chosen_antag, objective, keep_generic_objecives) + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("[chosen_antag] All", "[objective]")) for(var/mob/living/player in GLOB.player_list) - GLOB.everyone_a_traitor.make_traitor(null, player) - message_admins(span_adminnotice("[key_name_admin(holder)] used everyone is a traitor secret. Objective is [objective]")) - log_admin("[key_name(holder)] used everyone is a traitor secret. Objective is [objective]") + GLOB.everyone_an_antag.make_antag(null, player) + message_admins(span_adminnotice("[key_name_admin(holder)] used everyone is antag secret. Antag is [chosen_antag]. Objective is [objective]. Generate default objectives: [keep_generic_objecives]")) + log_admin("[key_name(holder)] used everyone is antag secret: [chosen_antag] . Objective is [objective]. Generate default objectives: [keep_generic_objecives]. ") if("massbraindamage") if(!is_funmin) return @@ -547,7 +558,7 @@ GLOBAL_DATUM(everyone_a_traitor, /datum/everyone_is_a_traitor_controller) if(teamsize <= 0) return FALSE - candidates = SSpolling.poll_ghost_candidates("Do you wish to be considered for a Nanotrasen emergency response drone?", check_jobban = ROLE_DRONE, pic_source = /mob/living/basic/drone/classic, role_name_text = "nanotrasen emergency response drone") + candidates = SSpolling.poll_ghost_candidates("Do you wish to be considered for a Nanotrasen emergency response drone?", check_jobban = ROLE_DRONE, alert_pic = /mob/living/basic/drone/classic, role_name_text = "nanotrasen emergency response drone") if(length(candidates) == 0) return FALSE @@ -623,38 +634,79 @@ GLOBAL_DATUM(everyone_a_traitor, /datum/everyone_is_a_traitor_controller) T.flick_overlay_static(portal_appearance[GET_TURF_PLANE_OFFSET(T) + 1], 15) playsound(T, 'sound/magic/lightningbolt.ogg', rand(80, 100), TRUE) -///Makes sure latejoining crewmembers also become traitors. -/datum/everyone_is_a_traitor_controller +/datum/everyone_is_an_antag_controller + var/chosen_antag = "" var/objective = "" + var/keep_generic_objecives -/datum/everyone_is_a_traitor_controller/New(objective) +/datum/everyone_is_an_antag_controller/New(chosen_antag, objective, keep_generic_objecives) + . = ..() + src.chosen_antag = chosen_antag src.objective = objective - RegisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED, PROC_REF(make_traitor)) + src.keep_generic_objecives = keep_generic_objecives + RegisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED, PROC_REF(make_antag_delay)) -/datum/everyone_is_a_traitor_controller/Destroy() +/datum/everyone_is_an_antag_controller/Destroy() UnregisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED) return ..() -/datum/everyone_is_a_traitor_controller/proc/make_traitor(datum/source, mob/living/player) +/datum/everyone_is_an_antag_controller/proc/assign_admin_objective_and_antag(mob/living/player, datum/antagonist/antag_datum) + var/datum/objective/new_objective = new(objective) + new_objective.team = player + new_objective.team_explanation_text = objective + antag_datum.objectives += new_objective + player.mind.add_antag_datum(antag_datum) + +/datum/everyone_is_an_antag_controller/proc/make_antag_delay(datum/source, mob/living/player) SIGNAL_HANDLER + INVOKE_ASYNC(src, PROC_REF(make_antag), source, player) + + +/datum/everyone_is_an_antag_controller/proc/make_antag(datum/source, mob/living/player) if(player.stat == DEAD || !player.mind) return - if(is_special_character(player)) - return + sleep(1) if(ishuman(player)) - var/datum/antagonist/traitor/traitor_datum = new(give_objectives = FALSE) - var/datum/objective/new_objective = new - new_objective.owner = player - new_objective.explanation_text = objective - traitor_datum.objectives += new_objective - player.mind.add_antag_datum(traitor_datum) - var/datum/uplink_handler/uplink = traitor_datum.uplink_handler - uplink.has_progression = FALSE - uplink.has_objectives = FALSE + switch(chosen_antag) + if(ROLE_TRAITOR) + var/datum/antagonist/traitor/antag_datum = new(give_objectives = keep_generic_objecives) + assign_admin_objective_and_antag(player, antag_datum) + var/datum/uplink_handler/uplink = antag_datum.uplink_handler + uplink.has_progression = FALSE + uplink.has_objectives = FALSE + if(ROLE_CHANGELING) + var/datum/antagonist/changeling/antag_datum = new + antag_datum.give_objectives = keep_generic_objecives + assign_admin_objective_and_antag(player, antag_datum) + if(ROLE_HERETIC) + var/datum/antagonist/heretic/antag_datum = new + antag_datum.give_objectives = keep_generic_objecives + assign_admin_objective_and_antag(player, antag_datum) + if(ROLE_CULTIST) + var/datum/antagonist/cult/antag_datum = new + assign_admin_objective_and_antag(player, antag_datum) + if(ROLE_NINJA) + var/datum/antagonist/ninja/antag_datum = new + antag_datum.give_objectives = keep_generic_objecives + for(var/obj/item/item_to_drop in player) + if(!istype(item_to_drop, /obj/item/implant)) //avoid removing implanted uplinks + player.dropItemToGround(item_to_drop, FALSE) + assign_admin_objective_and_antag(player, antag_datum) + if(ROLE_WIZARD) + var/datum/antagonist/wizard/antag_datum = new + antag_datum.give_objectives = keep_generic_objecives + antag_datum.move_to_lair = FALSE + for(var/obj/item/item_to_drop in player) //avoid deleting player's items + if(!istype(item_to_drop, /obj/item/implant)) + player.dropItemToGround(item_to_drop, FALSE) + assign_admin_objective_and_antag(player, antag_datum) + if(ROLE_NIGHTMARE) + var/datum/antagonist/nightmare/antag_datum = new + assign_admin_objective_and_antag(player, antag_datum) + player.set_species(/datum/species/shadow/nightmare) + else if(isAI(player)) - var/datum/antagonist/malf_ai/malfunction_datum = new(give_objectives = FALSE) - var/datum/objective/new_objective = new - new_objective.owner = player - new_objective.explanation_text = objective - malfunction_datum.objectives += new_objective - player.mind.add_antag_datum(malfunction_datum) + var/datum/antagonist/malf_ai/antag_datum = new + antag_datum.give_objectives = keep_generic_objecives + assign_admin_objective_and_antag(player, antag_datum) + diff --git a/code/modules/admin/view_variables/color_matrix_editor.dm b/code/modules/admin/view_variables/color_matrix_editor.dm index 5ea6d237a6ae..febfb344298e 100644 --- a/code/modules/admin/view_variables/color_matrix_editor.dm +++ b/code/modules/admin/view_variables/color_matrix_editor.dm @@ -27,7 +27,7 @@ proxy_view.color = current_color proxy_view.display_to(owner.mob) -/datum/color_matrix_editor/Destroy(force, ...) +/datum/color_matrix_editor/Destroy(force) QDEL_NULL(proxy_view) return ..() diff --git a/code/modules/admin/view_variables/reference_tracking.dm b/code/modules/admin/view_variables/reference_tracking.dm index b9fd0e6d2ad6..645467bf0fe0 100644 --- a/code/modules/admin/view_variables/reference_tracking.dm +++ b/code/modules/admin/view_variables/reference_tracking.dm @@ -1,29 +1,36 @@ #ifdef REFERENCE_TRACKING -#define REFSEARCH_RECURSE_LIMIT 64 -/datum/proc/find_references(references_to_clear = INFINITY) +/datum/proc/find_references(skip_alert) + running_find_references = type if(usr?.client) - if(tgui_alert(usr,"Running this will lock everything up for about 5 minutes. Would you like to begin the search?", "Find References", list("Yes", "No")) != "Yes") + if(usr.client.running_find_references) + log_reftracker("CANCELLED search for references to a [usr.client.running_find_references].") + usr.client.running_find_references = null + running_find_references = null + //restart the garbage collector + SSgarbage.can_fire = TRUE + SSgarbage.update_nextfire(reset_time = TRUE) + return + + if(!skip_alert && tgui_alert(usr,"Running this will lock everything up for about 5 minutes. Would you like to begin the search?", "Find References", list("Yes", "No")) != "Yes") + running_find_references = null return - src.references_to_clear = references_to_clear //this keeps the garbage collector from failing to collect objects being searched for in here SSgarbage.can_fire = FALSE - _search_references() - //restart the garbage collector - SSgarbage.can_fire = TRUE - SSgarbage.update_nextfire(reset_time = TRUE) + if(usr?.client) + usr.client.running_find_references = type -/datum/proc/_search_references() - log_reftracker("Beginning search for references to a [type], looking for [references_to_clear] refs.") + log_reftracker("Beginning search for references to a [type].") var/starting_time = world.time + + log_reftracker("Refcount for [type]: [refcount(src)]") + //Time to search the whole game for our ref - DoSearchVar(GLOB, "GLOB", starting_time) //globals + DoSearchVar(GLOB, "GLOB", search_time = starting_time) //globals log_reftracker("Finished searching globals") - if(src.references_to_clear == 0) - return //Yes we do actually need to do this. The searcher refuses to read weird lists //And global.vars is a really weird list @@ -31,46 +38,45 @@ for(var/key in global.vars) global_vars[key] = global.vars[key] - DoSearchVar(global_vars, "Native Global", starting_time) + DoSearchVar(global_vars, "Native Global", search_time = starting_time) log_reftracker("Finished searching native globals") - if(src.references_to_clear == 0) - return for(var/datum/thing in world) //atoms (don't beleive its lies) - DoSearchVar(thing, "World -> [thing.type]", starting_time) - if(src.references_to_clear == 0) - break + DoSearchVar(thing, "World -> [thing.type]", search_time = starting_time) log_reftracker("Finished searching atoms") - if(src.references_to_clear == 0) - return for(var/datum/thing) //datums - DoSearchVar(thing, "Datums -> [thing.type]", starting_time) - if(src.references_to_clear == 0) - break + DoSearchVar(thing, "Datums -> [thing.type]", search_time = starting_time) log_reftracker("Finished searching datums") - if(src.references_to_clear == 0) - return //Warning, attempting to search clients like this will cause crashes if done on live. Watch yourself #ifndef REFERENCE_DOING_IT_LIVE for(var/client/thing) //clients - DoSearchVar(thing, "Clients -> [thing.type]", starting_time) - if(src.references_to_clear == 0) - break + DoSearchVar(thing, "Clients -> [thing.type]", search_time = starting_time) log_reftracker("Finished searching clients") - if(src.references_to_clear == 0) - return #endif log_reftracker("Completed search for references to a [type].") -/datum/proc/DoSearchVar(potential_container, container_name, search_time, recursion_count, is_special_list) - if(recursion_count >= REFSEARCH_RECURSE_LIMIT) - log_reftracker("Recursion limit reached. [container_name]") + if(usr?.client) + usr.client.running_find_references = null + running_find_references = null + + //restart the garbage collector + SSgarbage.can_fire = TRUE + SSgarbage.update_nextfire(reset_time = TRUE) + +/datum/proc/DoSearchVar(potential_container, container_name, recursive_limit = 64, search_time = world.time) + #ifdef REFERENCE_TRACKING_DEBUG + if(SSgarbage.should_save_refs && !found_refs) + found_refs = list() + #endif + + if(usr?.client && !usr.client.running_find_references) return - if(references_to_clear == 0) + if(!recursive_limit) + log_reftracker("Recursion limit reached. [container_name]") return //Check each time you go down a layer. This makes it a bit slow, but it won't effect the rest of the game at all @@ -84,116 +90,73 @@ return datum_container.last_find_references = search_time + var/container_print = datum_container.ref_search_details() var/list/vars_list = datum_container.vars - var/is_atom = FALSE - var/is_area = FALSE - if(isatom(datum_container)) - is_atom = TRUE - if(isarea(datum_container)) - is_area = TRUE for(var/varname in vars_list) + #ifndef FIND_REF_NO_CHECK_TICK + CHECK_TICK + #endif + if (varname == "vars" || varname == "vis_locs") //Fun fact, vis_locs don't count for references + continue var/variable = vars_list[varname] - if(islist(variable)) - //Fun fact, vis_locs don't count for references - if(varname == "vars" || (is_atom && (varname == "vis_locs" || varname == "overlays" || varname == "underlays" || varname == "filters" || varname == "verbs" || (is_area && varname == "contents")))) - continue - // We do this after the varname check to avoid area contents (reading it incures a world loop's worth of cost) - if(!length(variable)) - continue - DoSearchVar(variable,\ - "[container_name] [datum_container.ref_search_details()] -> [varname] (list)",\ - search_time,\ - recursion_count + 1,\ - /*is_special_list = */ is_atom && (varname == "contents" || varname == "vis_contents" || varname == "locs")) - else if(variable == src) + + if(variable == src) #ifdef REFERENCE_TRACKING_DEBUG if(SSgarbage.should_save_refs) - if(!found_refs) - found_refs = list() found_refs[varname] = TRUE continue //End early, don't want these logging - else - log_reftracker("Found [type] [text_ref(src)] in [datum_container.type]'s [datum_container.ref_search_details()] [varname] var. [container_name]") - #else - log_reftracker("Found [type] [text_ref(src)] in [datum_container.type]'s [datum_container.ref_search_details()] [varname] var. [container_name]") #endif - references_to_clear -= 1 - if(references_to_clear == 0) - log_reftracker("All references to [type] [text_ref(src)] found, exiting.") - return + log_reftracker("Found [type] [text_ref(src)] in [datum_container.type]'s [container_print] [varname] var. [container_name]") continue + if(islist(variable)) + DoSearchVar(variable, "[container_name] [container_print] -> [varname] (list)", recursive_limit - 1, search_time) + else if(islist(potential_container)) + var/normal = IS_NORMAL_LIST(potential_container) var/list/potential_cache = potential_container for(var/element_in_list in potential_cache) - //Check normal sublists - if(islist(element_in_list)) - if(length(element_in_list)) - DoSearchVar(element_in_list, "[container_name] -> [element_in_list] (list)", search_time, recursion_count + 1) + #ifndef FIND_REF_NO_CHECK_TICK + CHECK_TICK + #endif //Check normal entrys - else if(element_in_list == src) + if(element_in_list == src) #ifdef REFERENCE_TRACKING_DEBUG if(SSgarbage.should_save_refs) - if(!found_refs) - found_refs = list() found_refs[potential_cache] = TRUE - continue - else - log_reftracker("Found [type] [text_ref(src)] in list [container_name].") - #else + continue //End early, don't want these logging + #endif log_reftracker("Found [type] [text_ref(src)] in list [container_name].") + continue + + var/assoc_val = null + if(!isnum(element_in_list) && normal) + assoc_val = potential_cache[element_in_list] + //Check assoc entrys + if(assoc_val == src) + #ifdef REFERENCE_TRACKING_DEBUG + if(SSgarbage.should_save_refs) + found_refs[potential_cache] = TRUE + continue //End early, don't want these logging #endif + log_reftracker("Found [type] [text_ref(src)] in list [container_name]\[[element_in_list]\]") + continue + //We need to run both of these checks, since our object could be hiding in either of them + //Check normal sublists + if(islist(element_in_list)) + DoSearchVar(element_in_list, "[container_name] -> [element_in_list] (list)", recursive_limit - 1, search_time) + //Check assoc sublists + if(islist(assoc_val)) + DoSearchVar(potential_container[element_in_list], "[container_name]\[[element_in_list]\] -> [assoc_val] (list)", recursive_limit - 1, search_time) + +/proc/qdel_and_find_ref_if_fail(datum/thing_to_del, force = FALSE) + thing_to_del.qdel_and_find_ref_if_fail(force) + +/datum/proc/qdel_and_find_ref_if_fail(force = FALSE) + SSgarbage.reference_find_on_fail[text_ref(src)] = TRUE + qdel(src, force) - // This is dumb as hell I'm sorry - // I don't want the garbage subsystem to count as a ref for the purposes of this number - // If we find all other refs before it I want to early exit, and if we don't I want to keep searching past it - var/ignore_ref = FALSE - var/list/queues = SSgarbage.queues - for(var/list/queue in queues) - if(potential_cache in queue) - ignore_ref = TRUE - break - if(ignore_ref) - log_reftracker("[container_name] does not count as a ref for our count") - else - references_to_clear -= 1 - if(references_to_clear == 0) - log_reftracker("All references to [type] [text_ref(src)] found, exiting.") - return - - if(!isnum(element_in_list) && !is_special_list) - // This exists to catch an error that throws when we access a special list - // is_special_list is a hint, it can be wrong - try - var/assoc_val = potential_cache[element_in_list] - //Check assoc sublists - if(islist(assoc_val)) - if(length(assoc_val)) - DoSearchVar(potential_container[element_in_list], "[container_name]\[[element_in_list]\] -> [assoc_val] (list)", search_time, recursion_count + 1) - //Check assoc entry - else if(assoc_val == src) - #ifdef REFERENCE_TRACKING_DEBUG - if(SSgarbage.should_save_refs) - if(!found_refs) - found_refs = list() - found_refs[potential_cache] = TRUE - continue - else - log_reftracker("Found [type] [text_ref(src)] in list [container_name]\[[element_in_list]\]") - #else - log_reftracker("Found [type] [text_ref(src)] in list [container_name]\[[element_in_list]\]") - #endif - references_to_clear -= 1 - if(references_to_clear == 0) - log_reftracker("All references to [type] [text_ref(src)] found, exiting.") - return - catch - // So if it goes wrong we kill it - is_special_list = TRUE - log_reftracker("Curiosity: [container_name] lead to an error when acessing [element_in_list], what is it?") - -#undef REFSEARCH_RECURSE_LIMIT #endif // Kept outside the ifdef so overrides are easy to implement diff --git a/code/modules/admin/view_variables/topic_basic.dm b/code/modules/admin/view_variables/topic_basic.dm index d98483e64421..514e8d9e7eb4 100644 --- a/code/modules/admin/view_variables/topic_basic.dm +++ b/code/modules/admin/view_variables/topic_basic.dm @@ -98,9 +98,7 @@ if(!check_rights(NONE)) return var/mass_remove = href_list[VV_HK_MASS_REMOVECOMPONENT] - var/list/components = list() - for(var/datum/component/component in target.GetComponents(/datum/component)) - components += component.type + var/list/components = target._datum_components.Copy() var/list/names = list() names += "---Components---" if(length(components)) diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index 7360393a0f60..19a346e3654c 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -286,20 +286,15 @@ GLOBAL_LIST_EMPTY(antagonists) /datum/antagonist/proc/replace_banned_player() set waitfor = FALSE - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob( - "Do you want to play as a [name]?", - check_jobban = job_rank || "[name]", - role = job_rank, - poll_time = 5 SECONDS, - target_mob = owner.current, - role_name_text = name - ) - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) + var/mob/chosen_one = SSpolling.poll_ghosts_for_target(check_jobban = job_rank, role = job_rank, poll_time = 5 SECONDS, checked_target = owner.current, alert_pic = owner.current, role_name_text = name) + if(chosen_one) to_chat(owner, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!") - message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(owner)]) to replace a jobbanned player.") + message_admins("[key_name_admin(chosen_one)] has taken control of ([key_name_admin(owner)]) to replace antagonist banned player.") + log_game("[key_name(chosen_one)] has taken control of ([key_name(owner)]) to replace antagonist banned player.") owner.current.ghostize(FALSE) - owner.current.key = C.key + owner.current.key = chosen_one.key + else + log_game("Couldn't find antagonist ban replacement for ([key_name(owner)]).") /** * Called by the remove_antag_datum() and remove_all_antag_datums() mind procs for the antag datum to handle its own removal and deletion. diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm index 4f970139ca7c..39504d384563 100644 --- a/code/modules/antagonists/_common/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -55,16 +55,15 @@ /obj/item/antag_spawner/contract/proc/poll_for_student(mob/living/carbon/human/teacher, apprentice_school) balloon_alert(teacher, "contacting apprentice...") polling = TRUE - var/list/candidates = SSpolling.poll_ghost_candidates_for_mob("Do you want to play as a wizard's [apprentice_school] apprentice?", check_jobban = ROLE_WIZARD, role = ROLE_WIZARD, poll_time = 15 SECONDS, target_mob = src, pic_source = teacher, role_name_text = "wizard apprentice") + var/mob/chosen_one = SSpolling.poll_ghosts_for_target("Do you want to play as [span_danger("[teacher]'s")] [span_notice("[apprentice_school] apprentice")]?", check_jobban = ROLE_WIZARD, role = ROLE_WIZARD, poll_time = 15 SECONDS, checked_target = src, alert_pic = /obj/item/clothing/head/wizard/red, jump_target = src, role_name_text = "wizard apprentice", chat_text_border_icon = /obj/item/clothing/head/wizard/red) polling = FALSE - if(!LAZYLEN(candidates)) + if(isnull(chosen_one)) to_chat(teacher, span_warning("Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later.")) return if(QDELETED(src) || used) return used = TRUE - var/mob/dead/observer/student = pick(candidates) - spawn_antag(student.client, get_turf(src), apprentice_school, teacher.mind) + spawn_antag(chosen_one.client, get_turf(src), apprentice_school, teacher.mind) /obj/item/antag_spawner/contract/spawn_antag(client/C, turf/T, kind, datum/mind/user) new /obj/effect/particle_effect/fluid/smoke(T) @@ -134,13 +133,12 @@ return to_chat(user, span_notice("You activate [src] and wait for confirmation.")) - var/list/nuke_candidates = SSpolling.poll_ghost_candidates("Do you want to play as a syndicate [borg_to_spawn ? "[lowertext(borg_to_spawn)] cyborg":"operative"]?", check_jobban = ROLE_OPERATIVE, role = ROLE_OPERATIVE, poll_time = 15 SECONDS, ignore_category = POLL_IGNORE_SYNDICATE, pic_source = src, role_name_text = "syndicate [borg_to_spawn ? "[borg_to_spawn] cyborg":"operative"]") - if(LAZYLEN(nuke_candidates)) + var/mob/chosen_one = SSpolling.poll_ghost_candidates("Do you want to play as a reinforcement [special_role_name]?", check_jobban = ROLE_OPERATIVE, role = ROLE_OPERATIVE, poll_time = 15 SECONDS, ignore_category = POLL_IGNORE_SYNDICATE, alert_pic = src, role_name_text = special_role_name, amount_to_pick = 1) + if(chosen_one) if(QDELETED(src) || !check_usability(user)) return used = TRUE - var/mob/dead/observer/G = pick(nuke_candidates) - spawn_antag(G.client, get_turf(src), "nukeop", user.mind) + spawn_antag(chosen_one.client, get_turf(src), "nukeop", user.mind) do_sparks(4, TRUE, src) qdel(src) else @@ -253,20 +251,13 @@ return if(used) return - var/list/candidates = SSpolling.poll_ghost_candidates( - "Do you want to play as a [initial(demon_type.name)]?", - check_jobban = ROLE_SLAUGHTER_DEMON, - poll_time = 5 SECONDS, - pic_source = demon_type, - role_name_text = initial(demon_type.name) - ) - if(LAZYLEN(candidates)) + var/mob/chosen_one = SSpolling.poll_ghosts_for_target(check_jobban = ROLE_ALIEN, role = ROLE_ALIEN, poll_time = 5 SECONDS, checked_target = src, alert_pic = demon_type, jump_target = src, role_name_text = initial(demon_type.name)) + if(chosen_one) if(used || QDELETED(src)) return used = TRUE - var/mob/dead/observer/summoned = pick(candidates) - user.log_message("has summoned forth the [initial(demon_type.name)] (played by [key_name(summoned)]) using a [name].", LOG_GAME) // has to be here before we create antag otherwise we can't get the ckey of the demon - spawn_antag(summoned.client, get_turf(src), initial(demon_type.name), user.mind) + user.log_message("has summoned forth the [initial(demon_type.name)] (played by [key_name(chosen_one)]) using a [name].", LOG_GAME) // has to be here before we create antag otherwise we can't get the ckey of the demon + spawn_antag(chosen_one.client, get_turf(src), initial(demon_type.name), user.mind) to_chat(user, shatter_msg) to_chat(user, veil_msg) playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, TRUE) diff --git a/code/modules/antagonists/_common/antag_team.dm b/code/modules/antagonists/_common/antag_team.dm index ccb895dda6b9..7be9c322b8ee 100644 --- a/code/modules/antagonists/_common/antag_team.dm +++ b/code/modules/antagonists/_common/antag_team.dm @@ -26,7 +26,7 @@ GLOBAL_LIST_EMPTY(antagonist_teams) else add_member(starting_members) -/datum/team/Destroy(force, ...) +/datum/team/Destroy(force) GLOB.antagonist_teams -= src members = null objectives = null diff --git a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm index 09d2d56e62a6..45c2f04adb1f 100644 --- a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm +++ b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm @@ -370,6 +370,10 @@ Congratulations! You are now trained for invasive xenobiology research!"} /obj/item/melee/baton/abductor/baton_attack(mob/target, mob/living/user, modifiers) if(!AbductorCheck(user)) return BATON_ATTACK_DONE + // monkestation edit: limited charges + if((mode == BATON_STUN || mode == BATON_SLEEP) && !use_charge(user)) + return BATON_ATTACK_DONE + // monkestation end return ..() /obj/item/melee/baton/abductor/baton_effect(mob/living/target, mob/living/user, modifiers, stun_override) diff --git a/code/modules/antagonists/abductor/machinery/pad.dm b/code/modules/antagonists/abductor/machinery/pad.dm index 515f181fc3c8..f000c3ce727a 100644 --- a/code/modules/antagonists/abductor/machinery/pad.dm +++ b/code/modules/antagonists/abductor/machinery/pad.dm @@ -20,11 +20,16 @@ if(teleport_target == null) teleport_target = GLOB.teleportlocs[pick(GLOB.teleportlocs)] flick("alien-pad", src) - for(var/mob/living/target in loc) - target.forceMove(teleport_target) - new /obj/effect/temp_visual/dir_setting/ninja(get_turf(target), target.dir) - to_chat(target, span_warning("The instability of the warp leaves you disoriented!")) - target.Stun(60) +// Monkestation Edit Start + for(var/atom/movable/target in loc) + if(isliving(target) || istype(target, /obj/item/toy/plush)) + target.forceMove(teleport_target) + new /obj/effect/temp_visual/dir_setting/ninja(get_turf(target), target.dir) + if(isliving(target)) + var/mob/living/abductedTarget = target + to_chat(abductedTarget, span_warning("The instability of the warp leaves you disoriented!")) + abductedTarget.Stun(60) +// Monkestation Edit End /obj/machinery/abductor/pad/proc/Retrieve(mob/living/target) flick("alien-pad", src) @@ -40,11 +45,14 @@ new /obj/effect/temp_visual/teleport_abductor(place) addtimer(CALLBACK(src, PROC_REF(doMobToLoc), place, target), 80) -/obj/machinery/abductor/pad/proc/doPadToLoc(place) +/obj/machinery/abductor/pad/proc/doPadToLoc(place) flick("alien-pad", src) - for(var/mob/living/target in get_turf(src)) - target.forceMove(place) - new /obj/effect/temp_visual/dir_setting/ninja(get_turf(target), target.dir) +// Monkestation Edit Start + for(var/atom/movable/target in get_turf(src)) + if(isliving(target) || istype(target, /obj/item/toy/plush)) + target.forceMove(place) + new /obj/effect/temp_visual/dir_setting/ninja(get_turf(target), target.dir) +// Monkestation Edit End /obj/machinery/abductor/pad/proc/PadToLoc(place) new /obj/effect/temp_visual/teleport_abductor(place) diff --git a/code/modules/antagonists/blob/powers.dm b/code/modules/antagonists/blob/powers.dm index 6dcc7b47bec8..1997533cc5be 100644 --- a/code/modules/antagonists/blob/powers.dm +++ b/code/modules/antagonists/blob/powers.dm @@ -199,7 +199,7 @@ check_jobban = ROLE_BLOB, role = ROLE_BLOB, poll_time = 5 SECONDS, - pic_source = /mob/living/basic/blob_minion/blobbernaut/minion, + alert_pic = /mob/living/basic/blob_minion/blobbernaut/minion, role_name_text = "blobbernaut" ) diff --git a/code/modules/antagonists/brainwashing/brainwashing.dm b/code/modules/antagonists/brainwashing/brainwashing.dm index e74e7b32f7f9..7f60de3a1436 100644 --- a/code/modules/antagonists/brainwashing/brainwashing.dm +++ b/code/modules/antagonists/brainwashing/brainwashing.dm @@ -35,7 +35,7 @@ roundend_category = "brainwashed victims" show_in_antagpanel = TRUE antag_hud_name = "brainwashed" - antagpanel_category = "Other" + antagpanel_category = ANTAG_GROUP_CREW show_name_in_check_antagonists = TRUE count_against_dynamic_roll_chance = FALSE ui_name = "AntagInfoBrainwashed" diff --git a/code/modules/antagonists/brother/brother.dm b/code/modules/antagonists/brother/brother.dm index db4b7890e81f..8218544a305e 100644 --- a/code/modules/antagonists/brother/brother.dm +++ b/code/modules/antagonists/brother/brother.dm @@ -49,7 +49,7 @@ return ..() /datum/antagonist/brother/proc/on_mob_successful_flashed_carbon(mob/living/source, mob/living/carbon/flashed, obj/item/assembly/flash/flash) - SIGNAL_HANDLER + //SIGNAL_HANDLER if (flashed.stat == DEAD) return @@ -63,13 +63,11 @@ flashed.balloon_alert(source, "[flashed.p_their()] mind is vacant!") return - /* - // monkestation edit: allow people to opt-out of BB - if(!(ROLE_BROTHER in flashed.client?.prefs?.be_special) || is_banned_from(flashed.ckey, list(ROLE_BROTHER, ROLE_SYNDICATE))) - flashed.balloon_alert(source, "unwilling to play role!") + // monkestation edit: dont try to convert banned people + if(is_banned_from(flashed.ckey, list(ROLE_BROTHER, ROLE_SYNDICATE))) + flashed.balloon_alert(source, "cannot become brother!") return // monkestation end - */ for(var/datum/objective/brother_objective as anything in source.mind.get_all_objectives()) // If the objective has a target, are we flashing them? @@ -210,6 +208,9 @@ return . = ..() member.remove_antag_datum(/datum/antagonist/brother) + if (!length(members)) + qdel(src) + return if (isnull(member.current)) return for (var/datum/mind/brother_mind as anything in members) diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 03455fc6fe93..2f72953f4a05 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -226,12 +226,12 @@ enable_text = span_cult("You prepare to horrify a target...") disable_text = span_cult("You dispel the magic...") -/datum/action/innate/cult/blood_spell/horror/InterceptClickOn(mob/living/caller, params, atom/clicked_on) - var/turf/caller_turf = get_turf(caller) +/datum/action/innate/cult/blood_spell/horror/InterceptClickOn(mob/living/user, params, atom/clicked_on) + var/turf/caller_turf = get_turf(user) if(!isturf(caller_turf)) return FALSE - if(!ishuman(clicked_on) || get_dist(caller, clicked_on) > 7) + if(!ishuman(clicked_on) || get_dist(user, clicked_on) > 7) return FALSE var/mob/living/carbon/human/human_clicked = clicked_on @@ -240,23 +240,23 @@ return ..() -/datum/action/innate/cult/blood_spell/horror/do_ability(mob/living/caller, mob/living/carbon/human/clicked_on) +/datum/action/innate/cult/blood_spell/horror/do_ability(mob/living/user, mob/living/carbon/human/clicked_on) clicked_on.set_hallucinations_if_lower(240 SECONDS) - SEND_SOUND(caller, sound('sound/effects/ghost.ogg', FALSE, TRUE, 50)) + SEND_SOUND(user, sound('sound/effects/ghost.ogg', FALSE, TRUE, 50)) var/image/sparkle_image = image('icons/effects/cult/effects.dmi', clicked_on, "bloodsparkles", ABOVE_MOB_LAYER) clicked_on.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", sparkle_image, NONE) addtimer(CALLBACK(clicked_on, TYPE_PROC_REF(/atom/, remove_alt_appearance), "cult_apoc", TRUE), 4 MINUTES, TIMER_OVERRIDE|TIMER_UNIQUE) - to_chat(caller, span_cultbold("[clicked_on] has been cursed with living nightmares!")) + to_chat(user, span_cultbold("[clicked_on] has been cursed with living nightmares!")) charges-- desc = base_desc desc += "
    Has [charges] use\s remaining." build_all_button_icons() if(charges <= 0) - to_chat(caller, span_cult("You have exhausted the spell's power!")) + to_chat(user, span_cult("You have exhausted the spell's power!")) qdel(src) return TRUE @@ -332,7 +332,7 @@ righthand_file = 'icons/mob/inhands/items/touchspell_righthand.dmi' icon_state = "disintegrate" inhand_icon_state = "disintegrate" - item_flags = NEEDS_PERMIT | ABSTRACT | DROPDEL + item_flags = NEEDS_PERMIT | ABSTRACT | DROPDEL | HAND_ITEM // monkestation edit: add HAND_ITEM w_class = WEIGHT_CLASS_HUGE throwforce = 0 diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm index d99d8986c116..19716589e1af 100644 --- a/code/modules/antagonists/cult/cult_comms.dm +++ b/code/modules/antagonists/cult/cult_comms.dm @@ -143,7 +143,7 @@ question = "[span_notice(nominee.name)] seeks to lead your cult, do you support [nominee.p_them()]?", poll_time = 30 SECONDS, group = asked_cultists, - pic_source = nominee, + alert_pic = nominee, role_name_text = "cult master nomination", custom_response_messages = list( POLL_RESPONSE_SIGNUP = "You have pledged your allegience to [nominee].", @@ -284,8 +284,8 @@ /datum/action/innate/cult/master/cultmark/IsAvailable(feedback = FALSE) return ..() && COOLDOWN_FINISHED(src, cult_mark_cooldown) -/datum/action/innate/cult/master/cultmark/InterceptClickOn(mob/caller, params, atom/clicked_on) - var/turf/caller_turf = get_turf(caller) +/datum/action/innate/cult/master/cultmark/InterceptClickOn(mob/user, params, atom/clicked_on) + var/turf/caller_turf = get_turf(user) if(!isturf(caller_turf)) return FALSE @@ -294,8 +294,8 @@ return ..() -/datum/action/innate/cult/master/cultmark/do_ability(mob/living/caller, atom/clicked_on) - var/datum/antagonist/cult/cultist = caller.mind.has_antag_datum(/datum/antagonist/cult, TRUE) +/datum/action/innate/cult/master/cultmark/do_ability(mob/living/user, atom/clicked_on) + var/datum/antagonist/cult/cultist = user.mind.has_antag_datum(/datum/antagonist/cult, TRUE) if(!cultist) CRASH("[type] was casted by someone without a cult antag datum.") @@ -304,17 +304,17 @@ CRASH("[type] was casted by a cultist without a cult team datum.") if(cult_team.blood_target) - to_chat(caller, span_cult("The cult has already designated a target!")) + to_chat(user, span_cult("The cult has already designated a target!")) return FALSE - if(cult_team.set_blood_target(clicked_on, caller, cult_mark_duration)) - unset_ranged_ability(caller, span_cult("The marking rite is complete! It will last for [DisplayTimeText(cult_mark_duration)] seconds.")) + if(cult_team.set_blood_target(clicked_on, user, cult_mark_duration)) + unset_ranged_ability(user, span_cult("The marking rite is complete! It will last for [DisplayTimeText(cult_mark_duration)] seconds.")) COOLDOWN_START(src, cult_mark_cooldown, cult_mark_cooldown_duration) build_all_button_icons() addtimer(CALLBACK(src, PROC_REF(build_all_button_icons)), cult_mark_cooldown_duration + 1) return TRUE - unset_ranged_ability(caller, span_cult("The marking rite failed!")) + unset_ranged_ability(user, span_cult("The marking rite failed!")) return TRUE /datum/action/innate/cult/ghostmark //Ghost version @@ -414,44 +414,44 @@ /datum/action/innate/cult/master/pulse/IsAvailable(feedback = FALSE) return ..() && COOLDOWN_FINISHED(src, pulse_cooldown) -/datum/action/innate/cult/master/pulse/InterceptClickOn(mob/living/caller, params, atom/clicked_on) - var/turf/caller_turf = get_turf(caller) +/datum/action/innate/cult/master/pulse/InterceptClickOn(mob/living/user, params, atom/clicked_on) + var/turf/caller_turf = get_turf(user) if(!isturf(caller_turf)) return FALSE if(!(clicked_on in view(7, caller_turf))) return FALSE - if(clicked_on == caller) + if(clicked_on == user) return FALSE return ..() -/datum/action/innate/cult/master/pulse/do_ability(mob/living/caller, atom/clicked_on) +/datum/action/innate/cult/master/pulse/do_ability(mob/living/user, atom/clicked_on) var/atom/throwee = throwee_ref?.resolve() if(QDELETED(throwee)) - to_chat(caller, span_cult("You lost your target!")) + to_chat(user, span_cult("You lost your target!")) throwee = null throwee_ref = null return FALSE if(throwee) if(get_dist(throwee, clicked_on) >= 16) - to_chat(caller, span_cult("You can't teleport [clicked_on.p_them()] that far!")) + to_chat(user, span_cult("You can't teleport [clicked_on.p_them()] that far!")) return FALSE var/turf/throwee_turf = get_turf(throwee) playsound(throwee_turf, 'sound/magic/exit_blood.ogg') - new /obj/effect/temp_visual/cult/sparks(throwee_turf, caller.dir) + new /obj/effect/temp_visual/cult/sparks(throwee_turf, user.dir) throwee.visible_message( span_warning("A pulse of magic whisks [throwee] away!"), span_cult("A pulse of blood magic whisks you away..."), ) if(!do_teleport(throwee, clicked_on, channel = TELEPORT_CHANNEL_CULT)) - to_chat(caller, span_cult("The teleport fails!")) + to_chat(user, span_cult("The teleport fails!")) throwee.visible_message( span_warning("...Except they don't go very far"), span_cult("...Except you don't appear to have moved very far."), @@ -459,15 +459,15 @@ return FALSE throwee_turf.Beam(clicked_on, icon_state = "sendbeam", time = 0.4 SECONDS) - new /obj/effect/temp_visual/cult/sparks(get_turf(clicked_on), caller.dir) + new /obj/effect/temp_visual/cult/sparks(get_turf(clicked_on), user.dir) throwee.visible_message( span_warning("[throwee] appears suddenly in a pulse of magic!"), span_cult("...And you appear elsewhere."), ) COOLDOWN_START(src, pulse_cooldown, pulse_cooldown_duration) - to_chat(caller, span_cult("A pulse of blood magic surges through you as you shift [throwee] through time and space.")) - caller.click_intercept = null + to_chat(user, span_cult("A pulse of blood magic surges through you as you shift [throwee] through time and space.")) + user.click_intercept = null throwee_ref = null build_all_button_icons() addtimer(CALLBACK(src, PROC_REF(build_all_button_icons)), pulse_cooldown_duration + 1) @@ -479,13 +479,13 @@ var/mob/living/living_clicked = clicked_on if(!IS_CULTIST(living_clicked)) return FALSE - SEND_SOUND(caller, sound('sound/weapons/thudswoosh.ogg')) - to_chat(caller, span_cultbold("You reach through the veil with your mind's eye and seize [clicked_on]! Click anywhere nearby to teleport [clicked_on.p_them()]!")) + SEND_SOUND(user, sound('sound/weapons/thudswoosh.ogg')) + to_chat(user, span_cultbold("You reach through the veil with your mind's eye and seize [clicked_on]! Click anywhere nearby to teleport [clicked_on.p_them()]!")) throwee_ref = WEAKREF(clicked_on) return TRUE if(istype(clicked_on, /obj/structure/destructible/cult)) - to_chat(caller, span_cultbold("You reach through the veil with your mind's eye and lift [clicked_on]! Click anywhere nearby to teleport it!")) + to_chat(user, span_cultbold("You reach through the veil with your mind's eye and lift [clicked_on]! Click anywhere nearby to teleport it!")) throwee_ref = WEAKREF(clicked_on) return TRUE diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 879eff68c84c..88d010a26e58 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -672,35 +672,36 @@ structure_check() searches for nearby cultist structures required for the invoca . += "Sacrifices unrewarded: [LAZYLEN(GLOB.sacrificed) - sacrifices_used]" /obj/effect/rune/raise_dead/invoke(list/invokers) - var/turf/T = get_turf(src) - var/mob/living/mob_to_revive - var/list/potential_revive_mobs = list() - var/mob/living/user = invokers[1] if(rune_in_use) return rune_in_use = TRUE - for(var/mob/living/M in T.contents) - if(IS_CULTIST(M) && (M.stat == DEAD || !M.client || M.client.is_afk())) - potential_revive_mobs |= M + var/mob/living/mob_to_revive + var/list/potential_revive_mobs = list() + var/mob/living/user = invokers[1] + + for(var/mob/living/target in loc) + if(IS_CULTIST(target) && (target.stat == DEAD || isnull(target.client) || target.client.is_afk())) + potential_revive_mobs += target + if(!length(potential_revive_mobs)) - to_chat(user, "There are no dead cultists on the rune!") + to_chat(user, span_cultitalic("There are no dead cultists on the rune!")) log_game("Raise Dead rune activated by [user] at [COORD(src)] failed - no cultists to revive.") fail_invoke() return - if(length(potential_revive_mobs) > 1) + + if(length(potential_revive_mobs) > 1 && user.mind) mob_to_revive = tgui_input_list(user, "Cultist to revive", "Revive Cultist", potential_revive_mobs) if(isnull(mob_to_revive)) return else mob_to_revive = potential_revive_mobs[1] + if(QDELETED(src) || !validness_checks(mob_to_revive, user)) fail_invoke() return - if(user.name == "Herbert West") - invocation = "To life, to life, I bring them!" - else - invocation = initial(invocation) - ..() + + invocation = (user.name == "Herbert West") ? "To life, to life, I bring them!" : initial(invocation) + if(mob_to_revive.stat == DEAD) var/diff = LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - sacrifices_used if(diff < 0) @@ -712,28 +713,21 @@ structure_check() searches for nearby cultist structures required for the invoca if(!mob_to_revive.client || mob_to_revive.client.is_afk()) set waitfor = FALSE - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob( - "Do you want to play as a [mob_to_revive.real_name], an inactive blood cultist?", - check_jobban = ROLE_CULTIST, - role = ROLE_CULTIST, - poll_time = 5 SECONDS, - target_mob = mob_to_revive, - role_name_text = "blood cultist" - ) - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) + var/mob/chosen_one = SSpolling.poll_ghosts_for_target("Do you want to play as [span_danger(mob_to_revive.real_name)], an [span_notice("inactive blood cultist")]?", check_jobban = ROLE_CULTIST, role = ROLE_CULTIST, poll_time = 5 SECONDS, checked_target = mob_to_revive, alert_pic = mob_to_revive, role_name_text = "inactive cultist") + if(chosen_one) to_chat(mob_to_revive.mind, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.") - message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.") + message_admins("[key_name_admin(chosen_one)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.") mob_to_revive.ghostize(FALSE) - mob_to_revive.key = C.key + mob_to_revive.key = chosen_one.key else fail_invoke() return SEND_SOUND(mob_to_revive, 'sound/ambience/antag/bloodcult/bloodcult_gain.ogg') to_chat(mob_to_revive, span_cultlarge("\"PASNAR SAVRAE YAM'TOTH. Arise.\"")) mob_to_revive.visible_message(span_warning("[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes."), \ - span_cultlarge("You awaken suddenly from the void. You're alive!")) + span_cultlarge("You awaken suddenly from the void. You're alive!")) rune_in_use = FALSE + return ..() /obj/effect/rune/raise_dead/proc/validness_checks(mob/living/target_mob, mob/living/user) var/turf/T = get_turf(src) diff --git a/code/modules/antagonists/fugitive/fugitive.dm b/code/modules/antagonists/fugitive/fugitive.dm index 1ef9989dc607..7f2cc4a9f3d5 100644 --- a/code/modules/antagonists/fugitive/fugitive.dm +++ b/code/modules/antagonists/fugitive/fugitive.dm @@ -5,6 +5,8 @@ job_rank = ROLE_FUGITIVE silent = TRUE //greet called by the event show_in_antagpanel = FALSE + show_to_ghosts = TRUE + antagpanel_category = ANTAG_GROUP_FUGITIVES prevent_roundtype_conversion = FALSE antag_hud_name = "fugitive" suicide_cry = "FOR FREEDOM!!" diff --git a/code/modules/antagonists/fugitive/hunters/hunter.dm b/code/modules/antagonists/fugitive/hunters/hunter.dm index 8184bc79ad97..fd81d588d9fe 100644 --- a/code/modules/antagonists/fugitive/hunters/hunter.dm +++ b/code/modules/antagonists/fugitive/hunters/hunter.dm @@ -4,6 +4,8 @@ roundend_category = "Fugitive" silent = TRUE //greet called by the spawn show_in_antagpanel = FALSE + show_to_ghosts = TRUE + antagpanel_category = ANTAG_GROUP_HUNTERS prevent_roundtype_conversion = FALSE antag_hud_name = "fugitive_hunter" suicide_cry = "FOR GLORY!!" @@ -148,25 +150,25 @@ result += "Postmortem [capitalize(backstory)] Victory!" result += "The [backstory]s managed to capture every fugitive, but all of them died! Spooky!" if(FUGITIVE_RESULT_MAJOR_HUNTER) - result += "Major [capitalize(backstory)] Victory" + result += "Major [capitalize(backstory)] Victory!" result += "The [backstory]s managed to capture every fugitive, dead or alive." if(FUGITIVE_RESULT_HUNTER_VICTORY) - result += "[capitalize(backstory)] Victory" + result += "[capitalize(backstory)] Victory!" result += "The [backstory]s managed to capture a fugitive, dead or alive." if(FUGITIVE_RESULT_MINOR_HUNTER) - result += "Minor [capitalize(backstory)] Victory" + result += "Minor [capitalize(backstory)] Victory!" result += "All the [backstory]s died, but managed to capture a fugitive, dead or alive." if(FUGITIVE_RESULT_STALEMATE) result += "Bloody Stalemate" result += "Everyone died, and no fugitives were recovered!" if(FUGITIVE_RESULT_MINOR_FUGITIVE) - result += "Minor Fugitive Victory" + result += "Minor Fugitive Victory!" result += "All the fugitives died, but none were recovered!" if(FUGITIVE_RESULT_FUGITIVE_VICTORY) - result += "Fugitive Victory" + result += "Fugitive Victory!" result += "A fugitive survived, and no bodies were recovered by the [backstory]s." if(FUGITIVE_RESULT_MAJOR_FUGITIVE) - result += "Major Fugitive Victory" + result += "Major Fugitive Victory!" result += "All of the fugitives survived and avoided capture!" else //get_result returned null- either bugged or no fugitives showed result += "Prank Call!" diff --git a/code/modules/antagonists/fugitive/hunters/hunter_gear.dm b/code/modules/antagonists/fugitive/hunters/hunter_gear.dm index 596420ba8f4c..47dbcbb21b25 100644 --- a/code/modules/antagonists/fugitive/hunters/hunter_gear.dm +++ b/code/modules/antagonists/fugitive/hunters/hunter_gear.dm @@ -138,6 +138,19 @@ if(gored) name = gored.real_name + AddComponent( + /datum/component/blood_walk,\ + blood_type = /obj/effect/decal/cleanable/blood,\ + blood_spawn_chance = 66.6,\ + max_blood = INFINITY,\ + ) + + AddComponent(/datum/component/bloody_spreader,\ + blood_left = INFINITY,\ + blood_dna = list("meaty DNA" = "MT-"),\ + diseases = null,\ + ) + /obj/structure/bouncy_castle/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) switch(damage_type) if(BRUTE) diff --git a/code/modules/antagonists/fugitive/hunters/hunter_outfits.dm b/code/modules/antagonists/fugitive/hunters/hunter_outfits.dm index a3cc239c2030..9766a1174344 100644 --- a/code/modules/antagonists/fugitive/hunters/hunter_outfits.dm +++ b/code/modules/antagonists/fugitive/hunters/hunter_outfits.dm @@ -71,6 +71,7 @@ var/obj/item/card/id/equipped_card = equip_to.wear_id equipped_card.assignment = "Russian Bounty Hunter" equipped_card.registered_name = equip_to.real_name + equipped_card.access = list(ACCESS_BOUNTY_HUNTER) equipped_card.update_label() equipped_card.update_icon() diff --git a/code/modules/antagonists/heretic/heretic_antag.dm b/code/modules/antagonists/heretic/heretic_antag.dm index 2fc7b32e0acd..6bab5ebb6fc6 100644 --- a/code/modules/antagonists/heretic/heretic_antag.dm +++ b/code/modules/antagonists/heretic/heretic_antag.dm @@ -45,10 +45,12 @@ var/total_sacrifices = 0 /// A list of TOTAL how many high value sacrifices completed. (Heads of staff) var/high_value_sacrifices = 0 + /* monkestation removal: sacrifice refactor (see [monkestation\code\modules\antagonists\heretic]) /// Lazy assoc list of [refs to humans] to [image previews of the human]. Humans that we have as sacrifice targets. var/list/mob/living/carbon/human/sac_targets /// List of all sacrifice target's names, used for end of round report var/list/all_sac_targets = list() + monkestation end */ /// Whether we're drawing a rune or not var/drawing_rune = FALSE /// A static typecache of all tools we can scribe with. @@ -82,9 +84,11 @@ PATH_MOON = COLOR_BLUE_LIGHT, ) +/* monkestation removal: sacrifice refactor /datum/antagonist/heretic/Destroy() LAZYNULL(sac_targets) return ..() +monkestation end */ /datum/antagonist/heretic/ui_data(mob/user) var/list/data = list() @@ -428,6 +432,7 @@ other_sac_objective.owner = owner objectives += other_sac_objective +/* monkestation removal: sacrifice refactor (see [monkestation\code\modules\antagonists\heretic]) /** * Add [target] as a sacrifice target for the heretic. * Generates a preview image and associates it with a weakref of the mob. @@ -461,6 +466,7 @@ SIGNAL_HANDLER remove_sacrifice_target(source) +monkestation end */ /** * Increments knowledge by one. @@ -468,7 +474,7 @@ */ /datum/antagonist/heretic/proc/passive_influence_gain() knowledge_points++ - if(owner.current.stat <= SOFT_CRIT) + if(owner.current?.stat <= SOFT_CRIT) to_chat(owner.current, "[span_hear("You hear a whisper...")] [span_hypnophrase(pick(strings(HERETIC_INFLUENCE_FILE, "drain_message")))]") addtimer(CALLBACK(src, PROC_REF(passive_influence_gain)), passive_gain_timer) @@ -479,7 +485,7 @@ parts += printplayer(owner) parts += "Sacrifices Made: [total_sacrifices]" - parts += "The heretic's sacrifice targets were: [english_list(all_sac_targets, nothing_text = "No one")]." + parts += "The heretic's sacrifice targets were: [roundend_sac_list()]." // monkestation edit: sacrifice refactor if(length(objectives)) var/count = 1 for(var/datum/objective/objective as anything in objectives) @@ -565,6 +571,7 @@ to_chat(admin, span_warning("You shouldn't be using this!")) return + var/list/sac_targets = get_current_target_bodies() // monkestation edit: heretic refactor var/list/removable = list() for(var/mob/living/carbon/human/old_target as anything in sac_targets) removable[old_target.name] = old_target @@ -626,10 +633,10 @@ . += "
    " . += "Current Targets:
    " + var/list/sac_targets = get_current_target_bodies() // monkestation edit: heretic refactor if(LAZYLEN(sac_targets)) for(var/mob/living/carbon/human/target as anything in sac_targets) . += " - [target.real_name], the [target.mind?.assigned_role?.title || "human"].
    " - else . += "None!
    " . += "
    " @@ -796,11 +803,13 @@ name = "summon monsters" target_amount = 2 explanation_text = "Summon 2 monsters from the Mansus into this realm." +/* monkestation removal: refactored in [monkestation\code\modules\antagonists\heretic\heretic_antag.dm] /// The total number of summons the objective owner has done var/num_summoned = 0 /datum/objective/heretic_summon/check_completion() return completed || (num_summoned >= target_amount) +monkestation end */ /datum/outfit/heretic name = "Heretic (Preview only)" diff --git a/code/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm index 002270852399..19098b052105 100644 --- a/code/modules/antagonists/heretic/heretic_knowledge.dm +++ b/code/modules/antagonists/heretic/heretic_knowledge.dm @@ -40,6 +40,8 @@ var/priority = 0 /// What path is this on. If set to "null", assumed to be unreachable (or abstract). var/route + ///Determines what kind of monster ghosts will ignore from here on out. Defaults to POLL_IGNORE_HERETIC_MONSTER, but we define other types of monsters for more granularity. + var/poll_ignore_define = POLL_IGNORE_HERETIC_MONSTER /datum/heretic_knowledge/New() if(!mutually_exclusive) @@ -230,7 +232,7 @@ /// A list of weakrefs to all items we've created. var/list/datum/weakref/created_items -/datum/heretic_knowledge/limited_amount/Destroy(force, ...) +/datum/heretic_knowledge/limited_amount/Destroy(force) LAZYCLEARLIST(created_items) return ..() @@ -529,7 +531,21 @@ var/mob/living/mob_to_summon /datum/heretic_knowledge/summon/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) - var/mob/living/summoned = new mob_to_summon(loc) + summon_ritual_mob(user, loc, mob_to_summon) + +/** + * Creates the ritual mob and grabs a ghost for it + * + * * user - the mob doing the summoning + * * loc - where the summon is happening + * * mob_to_summon - either a mob instance or a mob typepath + */ +/datum/heretic_knowledge/proc/summon_ritual_mob(mob/living/user, turf/loc, mob/living/mob_to_summon) + var/mob/living/summoned + if(isliving(mob_to_summon)) + summoned = mob_to_summon + else + summoned = new mob_to_summon(loc) summoned.ai_controller?.set_ai_status(AI_STATUS_OFF) // Fade in the summon while the ghost poll is ongoing. // Also don't let them mess with the summon while waiting @@ -539,37 +555,31 @@ animate(summoned, 10 SECONDS, alpha = 155) message_admins("A [summoned.name] is being summoned by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(summoned)].") - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob( - "Do you want to play as a [summoned.name]?", - check_jobban = ROLE_HERETIC, - poll_time = 10 SECONDS, - target_mob = summoned, - ignore_category = POLL_IGNORE_HERETIC_MONSTER, - role_name_text = summoned.name - ) - if(!LAZYLEN(candidates)) + var/mob/chosen_one = SSpolling.poll_ghosts_for_target(check_jobban = ROLE_HERETIC, poll_time = 10 SECONDS, checked_target = summoned, ignore_category = poll_ignore_define, alert_pic = summoned, role_name_text = summoned.name) + if(isnull(chosen_one)) loc.balloon_alert(user, "ritual failed, no ghosts!") animate(summoned, 0.5 SECONDS, alpha = 0) QDEL_IN(summoned, 0.6 SECONDS) return FALSE - var/mob/dead/observer/picked_candidate = pick(candidates) // Ok let's make them an interactable mob now, since we got a ghost summoned.alpha = 255 REMOVE_TRAIT(summoned, TRAIT_NO_TRANSFORM, REF(src)) summoned.move_resist = initial(summoned.move_resist) summoned.ghostize(FALSE) - summoned.key = picked_candidate.key + summoned.key = chosen_one.key - user.log_message("created a [summoned.name], controlled by [key_name(picked_candidate)].", LOG_GAME) + user.log_message("created a [summoned.name], controlled by [key_name(chosen_one)].", LOG_GAME) message_admins("[ADMIN_LOOKUPFLW(user)] created a [summoned.name], [ADMIN_LOOKUPFLW(summoned)].") var/datum/antagonist/heretic_monster/heretic_monster = summoned.mind.add_antag_datum(/datum/antagonist/heretic_monster) heretic_monster.set_owner(user.mind) + /* monkestation removal: heretic refactoring var/datum/objective/heretic_summon/summon_objective = locate() in user.mind.get_all_objectives() summon_objective?.num_summoned++ + monkestation end */ return TRUE diff --git a/code/modules/antagonists/heretic/heretic_living_heart.dm b/code/modules/antagonists/heretic/heretic_living_heart.dm index aa42a67172ab..6d0cb4666c36 100644 --- a/code/modules/antagonists/heretic/heretic_living_heart.dm +++ b/code/modules/antagonists/heretic/heretic_living_heart.dm @@ -19,7 +19,7 @@ action = new(src) action.Grant(organ_parent.owner) -/datum/component/living_heart/Destroy(force, silent) +/datum/component/living_heart/Destroy(force) QDEL_NULL(action) return ..() @@ -103,6 +103,7 @@ right_clicked = !!(trigger_flags & TRIGGER_SECONDARY_ACTION) return ..() +/* monkestation removal: replaced in [monkestation\code\modules\antagonists\heretic\heretic_living_heart.dm] /datum/action/cooldown/track_target/Activate(atom/target) var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(owner) var/datum/heretic_knowledge/sac_knowledge = heretic_datum.get_knowledge(/datum/heretic_knowledge/hunt_and_sacrifice) @@ -151,6 +152,7 @@ StartCooldown() return TRUE +monkestation end */ /// Callback for the radial to ensure it's closed when not allowed. /datum/action/cooldown/track_target/proc/check_menu() @@ -160,6 +162,7 @@ return FALSE return TRUE +/* monkestation removal: replaced in [monkestation\code\modules\antagonists\heretic\heretic_living_heart.dm] /// Gets the balloon message for who we're tracking. /datum/action/cooldown/track_target/proc/get_balloon_message(mob/living/carbon/human/tracked_mob) var/balloon_message = "error text!" @@ -218,3 +221,4 @@ balloon_message = "they're dead, " + balloon_message return balloon_message +monkestation end */ diff --git a/code/modules/antagonists/heretic/influences.dm b/code/modules/antagonists/heretic/influences.dm index 03ae1d01b2a6..3cdb194d34dc 100644 --- a/code/modules/antagonists/heretic/influences.dm +++ b/code/modules/antagonists/heretic/influences.dm @@ -21,7 +21,7 @@ /// List of minds with the ability to see influences var/list/datum/mind/tracked_heretics = list() -/datum/reality_smash_tracker/Destroy(force, ...) +/datum/reality_smash_tracker/Destroy(force) if(GLOB.reality_smash_track == src) stack_trace("[type] was deleted. Heretics may no longer access any influences. Fix it, or call coder support.") message_admins("The [type] was deleted. Heretics may no longer access any influences. Fix it, or call coder support.") @@ -256,7 +256,7 @@ return SECONDARY_ATTACK_CALL_NORMAL if(being_drained) - balloon_alert(user, "already being drained!") + loc.balloon_alert(user, "already being drained!") else INVOKE_ASYNC(src, PROC_REF(drain_influence), user, 1) @@ -288,15 +288,15 @@ /obj/effect/heretic_influence/proc/drain_influence(mob/living/user, knowledge_to_gain) being_drained = TRUE - balloon_alert(user, "draining influence...") + loc.balloon_alert(user, "draining influence...") if(!do_after(user, 10 SECONDS, src)) being_drained = FALSE - balloon_alert(user, "interrupted!") + loc.balloon_alert(user, "interrupted!") return // We don't need to set being_drained back since we delete after anyways - balloon_alert(user, "influence drained") + loc.balloon_alert(user, "influence drained") var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user) heretic_datum.knowledge_points += knowledge_to_gain diff --git a/code/modules/antagonists/heretic/items/heretic_blades.dm b/code/modules/antagonists/heretic/items/heretic_blades.dm index c83fde235797..ac2a6400ae56 100644 --- a/code/modules/antagonists/heretic/items/heretic_blades.dm +++ b/code/modules/antagonists/heretic/items/heretic_blades.dm @@ -90,6 +90,23 @@ inhand_icon_state = "flesh_blade" after_use_message = "The Marshal hears your call..." +/obj/item/melee/sickly_blade/flesh/Initialize(mapload) + . = ..() + + AddComponent( + /datum/component/blood_walk,\ + blood_type = /obj/effect/decal/cleanable/blood,\ + blood_spawn_chance = 66.6,\ + max_blood = INFINITY,\ + ) + + AddComponent( + /datum/component/bloody_spreader,\ + blood_left = INFINITY,\ + blood_dna = list("Unknown DNA" = "X*"),\ + diseases = null,\ + ) + // Path of Void's blade /obj/item/melee/sickly_blade/void name = "\improper void blade" diff --git a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm index 7df4d7af078f..bc88fa654bdd 100644 --- a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm @@ -168,22 +168,13 @@ if(!soon_to_be_ghoul.mind || !soon_to_be_ghoul.client) message_admins("[ADMIN_LOOKUPFLW(user)] is creating a voiceless dead of a body with no player.") - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob( - "Do you want to play as a [soon_to_be_ghoul.real_name], a voiceless dead?", - check_jobban = ROLE_HERETIC, - role = ROLE_HERETIC, - poll_time = 5 SECONDS, - target_mob = soon_to_be_ghoul, - role_name_text = "voiceless dead" - ) - if(!LAZYLEN(candidates)) + var/mob/chosen_one = SSpolling.poll_ghosts_for_target("Do you want to play as [span_danger(soon_to_be_ghoul.real_name)], a [span_notice("voiceless dead")]?", check_jobban = ROLE_HERETIC, role = ROLE_HERETIC, poll_time = 5 SECONDS, checked_target = soon_to_be_ghoul, alert_pic = mutable_appearance('icons/mob/species/human/human.dmi', "husk"), jump_target = soon_to_be_ghoul, role_name_text = "voiceless dead") + if(isnull(chosen_one)) loc.balloon_alert(user, "ritual failed, no ghosts!") return FALSE - - var/mob/dead/observer/chosen_candidate = pick(candidates) - message_admins("[key_name_admin(chosen_candidate)] has taken control of ([key_name_admin(soon_to_be_ghoul)]) to replace an AFK player.") + message_admins("[key_name_admin(chosen_one)] has taken control of ([key_name_admin(soon_to_be_ghoul)]) to replace an AFK player.") soon_to_be_ghoul.ghostize(FALSE) - soon_to_be_ghoul.key = chosen_candidate.key + soon_to_be_ghoul.key = chosen_one.key selected_atoms -= soon_to_be_ghoul make_ghoul(user, soon_to_be_ghoul) diff --git a/code/modules/antagonists/heretic/knowledge/general_side.dm b/code/modules/antagonists/heretic/knowledge/general_side.dm index 2dc2719227b1..bdf982153779 100644 --- a/code/modules/antagonists/heretic/knowledge/general_side.dm +++ b/code/modules/antagonists/heretic/knowledge/general_side.dm @@ -27,8 +27,7 @@ /datum/heretic_knowledge/reroll_targets/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user) - for(var/mob/living/carbon/human/target as anything in heretic_datum.sac_targets) - heretic_datum.remove_sacrifice_target(target) + LAZYNULL(heretic_datum.current_sac_targets) var/datum/heretic_knowledge/hunt_and_sacrifice/target_finder = heretic_datum.get_knowledge(/datum/heretic_knowledge/hunt_and_sacrifice) if(!target_finder) diff --git a/code/modules/antagonists/heretic/knowledge/moon_lore.dm b/code/modules/antagonists/heretic/knowledge/moon_lore.dm index 05195b9eb00a..b8eb5849076e 100644 --- a/code/modules/antagonists/heretic/knowledge/moon_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/moon_lore.dm @@ -162,7 +162,7 @@ "upgraded path of moon blades", \ ) target.emote(pick("giggle", "laugh")) - target.mob_mood.set_sanity(target.mob_mood.sanity - 10) + target.mob_mood?.set_sanity(target.mob_mood.sanity - 10) /datum/heretic_knowledge/spell/moon_ringleader name = "Ringleaders Rise" diff --git a/code/modules/antagonists/heretic/knowledge/rust_lore.dm b/code/modules/antagonists/heretic/knowledge/rust_lore.dm index 6ce32bbeceef..63d503a8ed38 100644 --- a/code/modules/antagonists/heretic/knowledge/rust_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/rust_lore.dm @@ -342,7 +342,7 @@ rusted_turfs += centre START_PROCESSING(SSprocessing, src) -/datum/rust_spread/Destroy(force, ...) +/datum/rust_spread/Destroy(force) centre = null edge_turfs.Cut() rusted_turfs.Cut() diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm index c211aa075fd5..534f7e10f0f3 100644 --- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm +++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm @@ -1,3 +1,4 @@ +/* monkestation removal: refactored in [monkestation\code\modules\antagonists\heretic\knowledge\sacrifice_knowledge\sacrifice_knowledge.dm] // The knowledge and process of heretic sacrificing. /// How long we put the target so sleep for (during sacrifice). @@ -27,7 +28,7 @@ /// An assoc list of [ref] to [timers] - a list of all the timers of people in the shadow realm currently var/list/return_timers -/datum/heretic_knowledge/hunt_and_sacrifice/Destroy(force, ...) +/datum/heretic_knowledge/hunt_and_sacrifice/Destroy(force) heretic_mind = null LAZYCLEARLIST(target_blacklist) return ..() @@ -526,3 +527,4 @@ #undef SACRIFICE_SLEEP_DURATION #undef SACRIFICE_REALM_DURATION +monkestation end */ diff --git a/code/modules/antagonists/heretic/magic/aggressive_spread.dm b/code/modules/antagonists/heretic/magic/aggressive_spread.dm index c15ae041a47a..de1233382f64 100644 --- a/code/modules/antagonists/heretic/magic/aggressive_spread.dm +++ b/code/modules/antagonists/heretic/magic/aggressive_spread.dm @@ -17,11 +17,7 @@ aoe_radius = 3 /datum/action/cooldown/spell/aoe/rust_conversion/get_things_to_cast_on(atom/center) - var/list/things = list() - for(var/turf/nearby_turf in range(aoe_radius, center)) - things += nearby_turf - - return things + return RANGE_TURFS(aoe_radius, center) /datum/action/cooldown/spell/aoe/rust_conversion/cast_on_thing_in_aoe(turf/victim, atom/caster) // We have less chance of rusting stuff that's further diff --git a/code/modules/antagonists/heretic/magic/ash_ascension.dm b/code/modules/antagonists/heretic/magic/ash_ascension.dm index 0de92c49c22e..9dd9c3646ad6 100644 --- a/code/modules/antagonists/heretic/magic/ash_ascension.dm +++ b/code/modules/antagonists/heretic/magic/ash_ascension.dm @@ -53,7 +53,8 @@ return for(var/turf/nearby_turf as anything in RANGE_TURFS(1, owner)) - new /obj/effect/hotspot(nearby_turf) + var/obj/effect/hotspot/flame_tile = locate(nearby_turf) || new(nearby_turf) + flame_tile.alpha = 125 nearby_turf.hotspot_expose(750, 25 * seconds_per_tick, 1) for(var/mob/living/fried_living in nearby_turf.contents - owner) fried_living.apply_damage(2.5 * seconds_per_tick, BURN) @@ -86,7 +87,8 @@ /datum/action/cooldown/spell/fire_cascade/proc/fire_cascade(atom/centre, flame_radius = 1) for(var/i in 0 to flame_radius) for(var/turf/nearby_turf as anything in spiral_range_turfs(i + 1, centre)) - new /obj/effect/hotspot(nearby_turf) + var/obj/effect/hotspot/flame_tile = locate(nearby_turf) || new(nearby_turf) + flame_tile.alpha = 125 nearby_turf.hotspot_expose(750, 50, 1) for(var/mob/living/fried_living in nearby_turf.contents - owner) fried_living.apply_damage(5, BURN) diff --git a/code/modules/antagonists/heretic/magic/furious_steel.dm b/code/modules/antagonists/heretic/magic/furious_steel.dm index 5899ca53fd44..da54c1904b15 100644 --- a/code/modules/antagonists/heretic/magic/furious_steel.dm +++ b/code/modules/antagonists/heretic/magic/furious_steel.dm @@ -43,12 +43,12 @@ unset_click_ability(source, refund_cooldown = TRUE) -/datum/action/cooldown/spell/pointed/projectile/furious_steel/InterceptClickOn(mob/living/caller, params, atom/target) +/datum/action/cooldown/spell/pointed/projectile/furious_steel/InterceptClickOn(mob/living/user, params, atom/target) // Let the caster prioritize using items like guns over blade casts - if(caller.get_active_held_item()) + if(user.get_active_held_item()) return FALSE // Let the caster prioritize melee attacks like punches and shoves over blade casts - if(get_dist(caller, target) <= 1) + if(get_dist(user, target) <= 1) return FALSE return ..() diff --git a/code/modules/antagonists/heretic/magic/moon_parade.dm b/code/modules/antagonists/heretic/magic/moon_parade.dm index 409e55bf9261..b2bfa13d48a2 100644 --- a/code/modules/antagonists/heretic/magic/moon_parade.dm +++ b/code/modules/antagonists/heretic/magic/moon_parade.dm @@ -86,7 +86,7 @@ victim.add_mood_event("Moon Insanity", /datum/mood_event/moon_insanity) victim.cause_hallucination(/datum/hallucination/delusion/preset/moon, name) - victim.mob_mood.set_sanity(victim.mob_mood.sanity - 20) + victim.mob_mood?.set_sanity(victim.mob_mood.sanity - 20) /obj/projectile/moon_parade/Destroy() for(var/mob/living/leftover_mob as anything in mobs_hit) diff --git a/code/modules/antagonists/heretic/magic/rust_charge.dm b/code/modules/antagonists/heretic/magic/rust_charge.dm index 0d693b0de86e..e944b827582b 100644 --- a/code/modules/antagonists/heretic/magic/rust_charge.dm +++ b/code/modules/antagonists/heretic/magic/rust_charge.dm @@ -46,4 +46,4 @@ SSexplosions.med_mov_atom += target INVOKE_ASYNC(src, PROC_REF(DestroySurroundings), source) - hit_target(source, target, charge_damage) + try_hit_target(source, target) // monkestation edit: fix runtime error diff --git a/code/modules/antagonists/heretic/structures/knock_final.dm b/code/modules/antagonists/heretic/structures/knock_final.dm index e622592be2c6..c79a028baa48 100644 --- a/code/modules/antagonists/heretic/structures/knock_final.dm +++ b/code/modules/antagonists/heretic/structures/knock_final.dm @@ -43,7 +43,7 @@ check_jobban = ROLE_SENTIENCE, poll_time = 10 SECONDS, ignore_category = POLL_IGNORE_HERETIC_MONSTER, - pic_source = src, + alert_pic = src, role_name_text = "eldritch monster" ) while(LAZYLEN(candidates)) diff --git a/code/modules/antagonists/hypnotized/hypnotized.dm b/code/modules/antagonists/hypnotized/hypnotized.dm index 2ee17b671aaa..4f1f49aa3be7 100644 --- a/code/modules/antagonists/hypnotized/hypnotized.dm +++ b/code/modules/antagonists/hypnotized/hypnotized.dm @@ -6,7 +6,7 @@ antag_hud_name = "brainwashed" ui_name = "AntagInfoBrainwashed" show_in_antagpanel = TRUE - antagpanel_category = "Other" + antagpanel_category = ANTAG_GROUP_CREW show_name_in_check_antagonists = TRUE count_against_dynamic_roll_chance = FALSE diff --git a/code/modules/antagonists/malf_ai/malf_ai.dm b/code/modules/antagonists/malf_ai/malf_ai.dm index 863b32e28d8f..6adcf901aaa3 100644 --- a/code/modules/antagonists/malf_ai/malf_ai.dm +++ b/code/modules/antagonists/malf_ai/malf_ai.dm @@ -57,8 +57,6 @@ /// Generates a complete set of malf AI objectives up to the traitor objective limit. /datum/antagonist/malf_ai/proc/forge_ai_objectives() - objectives.Cut() - if(prob(PROB_SPECIAL)) forge_special_objective() diff --git a/code/modules/antagonists/malf_ai/malf_ai_modules.dm b/code/modules/antagonists/malf_ai/malf_ai_modules.dm index 4fef406a5fbe..9b48f836afef 100644 --- a/code/modules/antagonists/malf_ai/malf_ai_modules.dm +++ b/code/modules/antagonists/malf_ai/malf_ai_modules.dm @@ -442,19 +442,19 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) . = ..() desc = "[desc] It has [uses] use\s remaining." -/datum/action/innate/ai/ranged/override_machine/do_ability(mob/living/caller, atom/clicked_on) - if(caller.incapacitated()) - unset_ranged_ability(caller) +/datum/action/innate/ai/ranged/override_machine/do_ability(mob/living/user, atom/clicked_on) + if(user.incapacitated()) + unset_ranged_ability(user) return FALSE if(!ismachinery(clicked_on)) - to_chat(caller, span_warning("You can only animate machines!")) + to_chat(user, span_warning("You can only animate machines!")) return FALSE var/obj/machinery/clicked_machine = clicked_on if(!clicked_machine.can_be_overridden() || is_type_in_typecache(clicked_machine, GLOB.blacklisted_malf_machines)) - to_chat(caller, span_warning("That machine can't be overridden!")) + to_chat(user, span_warning("That machine can't be overridden!")) return FALSE - caller.playsound_local(caller, 'sound/misc/interference.ogg', 50, FALSE, use_reverb = FALSE) + user.playsound_local(user, 'sound/misc/interference.ogg', 50, FALSE, use_reverb = FALSE) adjust_uses(-1) if(uses) @@ -462,15 +462,15 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) build_all_button_icons() clicked_machine.audible_message(span_userdanger("You hear a loud electrical buzzing sound coming from [clicked_machine]!")) - addtimer(CALLBACK(src, PROC_REF(animate_machine), caller, clicked_machine), 5 SECONDS) //kabeep! - unset_ranged_ability(caller, span_danger("Sending override signal...")) + addtimer(CALLBACK(src, PROC_REF(animate_machine), user, clicked_machine), 5 SECONDS) //kabeep! + unset_ranged_ability(user, span_danger("Sending override signal...")) return TRUE -/datum/action/innate/ai/ranged/override_machine/proc/animate_machine(mob/living/caller, obj/machinery/to_animate) +/datum/action/innate/ai/ranged/override_machine/proc/animate_machine(mob/living/user, obj/machinery/to_animate) if(QDELETED(to_animate)) return - new /mob/living/simple_animal/hostile/mimic/copy/machine(get_turf(to_animate), to_animate, caller, TRUE) + new /mob/living/simple_animal/hostile/mimic/copy/machine(get_turf(to_animate), to_animate, user, TRUE) /// Destroy RCDs: Detonates all non-cyborg RCDs on the station. /datum/ai_module/destructive/destroy_rcd @@ -519,38 +519,38 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) ..() desc = "[desc] It has [uses] use\s remaining." -/datum/action/innate/ai/ranged/overload_machine/proc/detonate_machine(mob/living/caller, obj/machinery/to_explode) +/datum/action/innate/ai/ranged/overload_machine/proc/detonate_machine(mob/living/user, obj/machinery/to_explode) if(QDELETED(to_explode)) return var/turf/machine_turf = get_turf(to_explode) - message_admins("[ADMIN_LOOKUPFLW(caller)] overloaded [to_explode.name] ([to_explode.type]) at [ADMIN_VERBOSEJMP(machine_turf)].") - caller.log_message("overloaded [to_explode.name] ([to_explode.type])", LOG_ATTACK) + message_admins("[ADMIN_LOOKUPFLW(user)] overloaded [to_explode.name] ([to_explode.type]) at [ADMIN_VERBOSEJMP(machine_turf)].") + user.log_message("overloaded [to_explode.name] ([to_explode.type])", LOG_ATTACK) explosion(to_explode, heavy_impact_range = 2, light_impact_range = 3) if(!QDELETED(to_explode)) //to check if the explosion killed it before we try to delete it qdel(to_explode) -/datum/action/innate/ai/ranged/overload_machine/do_ability(mob/living/caller, atom/clicked_on) - if(caller.incapacitated()) - unset_ranged_ability(caller) +/datum/action/innate/ai/ranged/overload_machine/do_ability(mob/living/user, atom/clicked_on) + if(user.incapacitated()) + unset_ranged_ability(user) return FALSE if(!ismachinery(clicked_on)) - to_chat(caller, span_warning("You can only overload machines!")) + to_chat(user, span_warning("You can only overload machines!")) return FALSE var/obj/machinery/clicked_machine = clicked_on if(is_type_in_typecache(clicked_machine, GLOB.blacklisted_malf_machines)) - to_chat(caller, span_warning("You cannot overload that device!")) + to_chat(user, span_warning("You cannot overload that device!")) return FALSE - caller.playsound_local(caller, SFX_SPARKS, 50, 0) + user.playsound_local(user, SFX_SPARKS, 50, 0) adjust_uses(-1) if(uses) desc = "[initial(desc)] It has [uses] use\s remaining." build_all_button_icons() clicked_machine.audible_message(span_userdanger("You hear a loud electrical buzzing sound coming from [clicked_machine]!")) - addtimer(CALLBACK(src, PROC_REF(detonate_machine), caller, clicked_machine), 5 SECONDS) //kaboom! - unset_ranged_ability(caller, span_danger("Overcharging machine...")) + addtimer(CALLBACK(src, PROC_REF(detonate_machine), user, clicked_machine), 5 SECONDS) //kaboom! + unset_ranged_ability(user, span_danger("Overcharging machine...")) return TRUE /// Blackout: Overloads a random number of lights across the station. Three uses. @@ -1050,7 +1050,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) . = ..() desc = "[desc] It has [uses] use\s remaining." -/datum/action/innate/ai/ranged/emag/do_ability(mob/living/caller, atom/clicked_on) +/datum/action/innate/ai/ranged/emag/do_ability(mob/living/user, atom/clicked_on) // Only things with of or subtyped of any of these types may be remotely emagged var/static/list/compatable_typepaths = list( @@ -1062,13 +1062,13 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) /mob/living/silicon, ) - if (!isAI(caller)) + if (!isAI(user)) return FALSE - var/mob/living/silicon/ai/ai_caller = caller + var/mob/living/silicon/ai/ai_caller = user if(ai_caller.incapacitated()) - unset_ranged_ability(caller) + unset_ranged_ability(user) return FALSE if (!ai_caller.can_see(clicked_on)) @@ -1147,15 +1147,15 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) . = ..() desc = "[desc] It has [uses] use\s remaining." -/datum/action/innate/ai/ranged/core_tilt/do_ability(mob/living/caller, atom/clicked_on) +/datum/action/innate/ai/ranged/core_tilt/do_ability(mob/living/user, atom/clicked_on) if (!COOLDOWN_FINISHED(src, time_til_next_tilt)) - caller.balloon_alert(caller, "on cooldown!") + user.balloon_alert(user, "on cooldown!") return FALSE - if (!isAI(caller)) + if (!isAI(user)) return FALSE - var/mob/living/silicon/ai/ai_caller = caller + var/mob/living/silicon/ai/ai_caller = user if (ai_caller.incapacitated() || !isturf(ai_caller.loc)) return FALSE @@ -1198,8 +1198,8 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) return ai_caller.fall_and_crush(target, MALF_AI_ROLL_DAMAGE, MALF_AI_ROLL_CRIT_CHANCE, null, paralyze_time, picked_dir, rotation = get_rotation_from_dir(picked_dir)) /// Used in our radial menu, state-checking proc after the radial menu sleeps -/datum/action/innate/ai/ranged/core_tilt/proc/radial_check(mob/living/silicon/ai/caller) - if (QDELETED(caller) || caller.incapacitated() || caller.stat == DEAD) +/datum/action/innate/ai/ranged/core_tilt/proc/radial_check(mob/living/silicon/ai/user) + if (QDELETED(user) || user.incapacitated() || user.stat == DEAD) return FALSE if (uses <= 0) @@ -1240,14 +1240,14 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) . = ..() desc = "[desc] It has [uses] use\s remaining." -/datum/action/innate/ai/ranged/remote_vendor_tilt/do_ability(mob/living/caller, atom/clicked_on) +/datum/action/innate/ai/ranged/remote_vendor_tilt/do_ability(mob/living/user, atom/clicked_on) - if (!isAI(caller)) + if (!isAI(user)) return FALSE - var/mob/living/silicon/ai/ai_caller = caller + var/mob/living/silicon/ai/ai_caller = user if(ai_caller.incapacitated()) - unset_ranged_ability(caller) + unset_ranged_ability(user) return FALSE if(!isvendor(clicked_on)) @@ -1268,7 +1268,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) clicked_vendor.balloon_alert(ai_caller, "inoperable!") return FALSE - var/picked_dir_string = show_radial_menu(ai_caller, clicked_vendor, GLOB.all_radial_directions, custom_check = CALLBACK(src, PROC_REF(radial_check), caller, clicked_vendor)) + var/picked_dir_string = show_radial_menu(ai_caller, clicked_vendor, GLOB.all_radial_directions, custom_check = CALLBACK(src, PROC_REF(radial_check), user, clicked_vendor)) if (isnull(picked_dir_string)) return FALSE var/picked_dir = text2dir(picked_dir_string) @@ -1288,7 +1288,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) desc = "[initial(desc)] It has [uses] use\s remaining." build_all_button_icons() - unset_ranged_ability(caller, span_danger("Tilting...")) + unset_ranged_ability(user, span_danger("Tilting...")) return TRUE /datum/action/innate/ai/ranged/remote_vendor_tilt/proc/do_vendor_tilt(obj/machinery/vending/vendor, turf/target) @@ -1301,8 +1301,8 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) vendor.tilt(target, MALF_VENDOR_TIPPING_CRIT_CHANCE) /// Used in our radial menu, state-checking proc after the radial menu sleeps -/datum/action/innate/ai/ranged/remote_vendor_tilt/proc/radial_check(mob/living/silicon/ai/caller, obj/machinery/vending/clicked_vendor) - if (QDELETED(caller) || caller.incapacitated() || caller.stat == DEAD) +/datum/action/innate/ai/ranged/remote_vendor_tilt/proc/radial_check(mob/living/silicon/ai/user, obj/machinery/vending/clicked_vendor) + if (QDELETED(user) || user.incapacitated() || user.stat == DEAD) return FALSE if (QDELETED(clicked_vendor)) @@ -1311,8 +1311,8 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) if (uses <= 0) return FALSE - if (!caller.can_see(clicked_vendor)) - to_chat(caller, span_warning("Lost sight of [clicked_vendor]!")) + if (!user.can_see(clicked_vendor)) + to_chat(user, span_warning("Lost sight of [clicked_vendor]!")) return FALSE return TRUE diff --git a/code/modules/antagonists/nightmare/nightmare_species.dm b/code/modules/antagonists/nightmare/nightmare_species.dm index fcfc07af378a..619d5bb79456 100644 --- a/code/modules/antagonists/nightmare/nightmare_species.dm +++ b/code/modules/antagonists/nightmare/nightmare_species.dm @@ -8,7 +8,11 @@ burnmod = 1.5 changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE no_equip_flags = ITEM_SLOT_MASK | ITEM_SLOT_OCLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_FEET | ITEM_SLOT_ICLOTHING | ITEM_SLOT_SUITSTORE - species_traits = list(NO_UNDERWEAR,NO_DNA_COPY,NOTRANSSTING,NOEYESPRITES) + species_traits = list( + NO_UNDERWEAR, + NO_DNA_COPY, + NOTRANSSTING, + ) inherent_traits = list( TRAIT_ADVANCEDTOOLUSER, TRAIT_CAN_STRIP, diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm index 82d59ba02925..a94821f71f86 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm @@ -618,6 +618,9 @@ GLOBAL_VAR(station_nuke_source) * Helper proc that handles gibbing someone who has been nuked. */ /proc/nuke_gib(mob/living/gibbed, atom/source) + if(HAS_TRAIT(gibbed, TRAIT_NUKEIMMUNE)) + return FALSE + if(istype(gibbed.loc, /obj/structure/closet/secure_closet/freezer)) var/obj/structure/closet/secure_closet/freezer/freezer = gibbed.loc if(!freezer.jones) diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm index 015307bbd17b..1faf16e4babe 100644 --- a/code/modules/antagonists/nukeop/nukeop.dm +++ b/code/modules/antagonists/nukeop/nukeop.dm @@ -435,7 +435,7 @@ switch(get_result()) if(NUKE_RESULT_FLUKE) - parts += "Humiliating Syndicate Defeat" + parts += "Humiliating Syndicate Defeat!" parts += "The crew of [station_name()] gave [syndicate_name] operatives back their bomb! The syndicate base was destroyed! Next time, don't lose the nuke!" if(NUKE_RESULT_NUKE_WIN) parts += "Syndicate Major Victory!" diff --git a/code/modules/antagonists/obsessed/obsessed.dm b/code/modules/antagonists/obsessed/obsessed.dm index 585867d5767b..a079f95cfa0e 100644 --- a/code/modules/antagonists/obsessed/obsessed.dm +++ b/code/modules/antagonists/obsessed/obsessed.dm @@ -1,8 +1,9 @@ /datum/antagonist/obsessed name = "Obsessed" show_in_antagpanel = TRUE - antagpanel_category = "Other" + antagpanel_category = ANTAG_GROUP_CREW job_rank = ROLE_OBSESSED + show_to_ghosts = TRUE antag_hud_name = "obsessed" show_name_in_check_antagonists = TRUE roundend_category = "obsessed" diff --git a/code/modules/antagonists/paradox_clone/paradox_clone.dm b/code/modules/antagonists/paradox_clone/paradox_clone.dm index 8ec0a75e8c9f..0773d949d25c 100644 --- a/code/modules/antagonists/paradox_clone/paradox_clone.dm +++ b/code/modules/antagonists/paradox_clone/paradox_clone.dm @@ -2,7 +2,9 @@ name = "\improper Paradox Clone" roundend_category = "Paradox Clone" job_rank = ROLE_PARADOX_CLONE + antagpanel_category = ANTAG_GROUP_PARADOX antag_hud_name = "paradox_clone" + show_to_ghosts = TRUE suicide_cry = "THERE CAN BE ONLY ONE!!" preview_outfit = /datum/outfit/paradox_clone diff --git a/code/modules/antagonists/pirate/pirate_event.dm b/code/modules/antagonists/pirate/pirate_event.dm index af8dde3193f5..f91b0995c267 100644 --- a/code/modules/antagonists/pirate/pirate_event.dm +++ b/code/modules/antagonists/pirate/pirate_event.dm @@ -85,7 +85,7 @@ if(chosen_gang.paid_off) return - var/list/candidates = SSpolling.poll_ghost_candidates("Do you wish to be considered for a pirate crew of [chosen_gang.name]?", check_jobban = ROLE_SPACE_PIRATE, pic_source = /obj/item/claymore/cutlass, role_name_text = "pirate crew") + var/list/candidates = SSpolling.poll_ghost_candidates("Do you wish to be considered for a pirate crew of [chosen_gang.name]?", check_jobban = ROLE_SPACE_PIRATE, alert_pic = /obj/item/claymore/cutlass, role_name_text = "pirate crew") shuffle_inplace(candidates) var/template_key = "pirate_[chosen_gang.ship_template_id]" @@ -100,8 +100,8 @@ if(!ship.load(T)) CRASH("Loading pirate ship failed!") - for(var/turf/A in ship.get_affected_turfs(T)) - for(var/obj/effect/mob_spawn/ghost_role/human/pirate/spawner in A) + for(var/turf/area_turf as anything in ship.get_affected_turfs(T)) + for(var/obj/effect/mob_spawn/ghost_role/human/pirate/spawner in area_turf) if(length(candidates) > 0) var/mob/our_candidate = candidates[1] var/mob/spawned_mob = spawner.create_from_ghost(our_candidate) diff --git a/code/modules/antagonists/revenant/haunted_item.dm b/code/modules/antagonists/revenant/haunted_item.dm index cf16686c415b..642002976cb6 100644 --- a/code/modules/antagonists/revenant/haunted_item.dm +++ b/code/modules/antagonists/revenant/haunted_item.dm @@ -61,11 +61,11 @@ pre_haunt_throwforce = haunted_item.throwforce haunted_item.throwforce = min(haunted_item.throwforce + throw_force_bonus, throw_force_max) - var/static/list/default_dispell_types = list(/obj/item/nullrod, /obj/item/storage/book/bible) + var/static/list/default_dispell_types = list(/obj/item/nullrod, /obj/item/book/bible) src.types_which_dispell_us = types_which_dispell_us || default_dispell_types src.despawn_message = despawn_message -/datum/component/haunted_item/Destroy(force, silent) +/datum/component/haunted_item/Destroy(force) var/obj/item/haunted_item = parent // Handle these two specifically in Destroy() instead of clear_haunting(), // because we want to make sure they always get dealt with no matter how the component is removed @@ -113,8 +113,7 @@ */ /proc/haunt_outburst(epicenter, range, haunt_chance, duration = 1 MINUTES) - var/effect_area = range(range, epicenter) - for(var/obj/item/object_to_possess in effect_area) + for(var/obj/item/object_to_possess in range(range, epicenter)) if(!prob(haunt_chance)) continue object_to_possess.AddComponent(/datum/component/haunted_item, \ diff --git a/code/modules/antagonists/separatist/separatist.dm b/code/modules/antagonists/separatist/separatist.dm index 6830cba8aef0..932a3d577e1f 100644 --- a/code/modules/antagonists/separatist/separatist.dm +++ b/code/modules/antagonists/separatist/separatist.dm @@ -14,7 +14,7 @@ src.potential_recruits = potential_recruits src.department = department -/datum/team/nation/Destroy(force, ...) +/datum/team/nation/Destroy(force) department = null UnregisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED) . = ..() diff --git a/code/modules/antagonists/space_dragon/carp_rift.dm b/code/modules/antagonists/space_dragon/carp_rift.dm index 88df5c03a197..a2a6eb12ad0b 100644 --- a/code/modules/antagonists/space_dragon/carp_rift.dm +++ b/code/modules/antagonists/space_dragon/carp_rift.dm @@ -18,13 +18,13 @@ if(!dragon) return var/area/rift_location = get_area(owner) - if(!(rift_location.area_flags & VALID_TERRITORY)) - to_chat(owner, span_warning("You can't summon a rift here! Try summoning somewhere secure within the station!")) + if(!(rift_location in dragon.chosen_rift_areas)) + owner.balloon_alert(owner, "can't summon a rift here!") return for(var/obj/structure/carp_rift/rift as anything in dragon.rift_list) var/area/used_location = get_area(rift) if(used_location == rift_location) - to_chat(owner, span_warning("You've already summoned a rift in this area! You have to summon again somewhere else!")) + owner.balloon_alert(owner, "already summoned a rift here!") return var/turf/rift_spawn_turf = get_turf(dragon) if(isopenspaceturf(rift_spawn_turf)) @@ -70,7 +70,7 @@ light_color = LIGHT_COLOR_PURPLE light_outer_range = 10 anchored = TRUE - density = FALSE + density = TRUE plane = MASSIVE_OBJ_PLANE /// The amount of time the rift has charged for. var/time_charged = 0 @@ -83,11 +83,13 @@ /// Current charge state of the rift. var/charge_state = CHARGE_ONGOING /// The interval for adding additional space carp spawns to the rift. - var/carp_interval = 60 + var/carp_interval = 45 /// The time since an extra carp was added to the ghost role spawning pool. var/last_carp_inc = 0 /// A list of all the ckeys which have used this carp rift to spawn in as carps. var/list/ckey_list = list() + /// Gravity aura for the rift, makes all turfs nearby forced grav. + var/datum/proximity_monitor/advanced/gravity/warns_on_entrance/gravity_aura /datum/armor/structure_carp_rift energy = 100 @@ -101,14 +103,25 @@ AddComponent( \ /datum/component/aura_healing, \ - range = 0, \ + range = 1, \ simple_heal = 5, \ limit_to_trait = TRAIT_HEALS_FROM_CARP_RIFTS, \ healing_color = COLOR_BLUE, \ ) + gravity_aura = new( + /* host = */src, + /* range = */15, + /* ignore_if_not_on_turf = */TRUE, + /* gravity = */1, + ) + START_PROCESSING(SSobj, src) +/obj/structure/carp_rift/Destroy() + QDEL_NULL(gravity_aura) + return ..() + // Carp rifts always take heavy explosion damage. Discourages the use of maxcaps // and favours more weaker explosives to destroy the portal // as they have the same effect on the portal. @@ -239,12 +252,13 @@ to_chat(user, span_warning("The rift already summoned enough carp!")) return FALSE - if(!dragon) + if(isnull(dragon)) return var/mob/living/newcarp = new dragon.minion_to_spawn(loc) newcarp.faction = dragon.owner.current.faction newcarp.AddElement(/datum/element/nerfed_pulling, GLOB.typecache_general_bad_things_to_easily_move) newcarp.AddElement(/datum/element/prevent_attacking_of_types, GLOB.typecache_general_bad_hostile_attack_targets, "this tastes awful!") + dragon.wavespeak?.link_mob(newcarp) if(!is_listed) ckey_list += user.ckey diff --git a/code/modules/antagonists/space_dragon/space_dragon.dm b/code/modules/antagonists/space_dragon/space_dragon.dm index 66d1e13461aa..3338c62612b1 100644 --- a/code/modules/antagonists/space_dragon/space_dragon.dm +++ b/code/modules/antagonists/space_dragon/space_dragon.dm @@ -21,9 +21,13 @@ /// Whether or not Space Dragon has completed their objective, and thus triggered the ending sequence. var/objective_complete = FALSE /// What mob to spawn from ghosts using this dragon's rifts - var/minion_to_spawn = /mob/living/basic/carp + var/minion_to_spawn = /mob/living/basic/carp/advanced /// What AI mobs to spawn from this dragon's rifts var/ai_to_spawn = /mob/living/basic/carp + /// Wavespeak mind linker, to allow telepathy between dragon and carps + var/datum/component/mind_linker/wavespeak + /// What areas are we allowed to place rifts in? + var/list/chosen_rift_areas = list() /datum/antagonist/space_dragon/greet() . = ..() @@ -33,16 +37,42 @@ Today, we will snuff out one of those lights.") to_chat(owner, span_boldwarning("You have five minutes to find a safe location to place down the first rift. If you take longer than five minutes to place a rift, you will be returned from whence you came.")) owner.announce_objectives() - SEND_SOUND(owner.current, sound('sound/magic/demon_attack1.ogg')) + owner.current.playsound_local(get_turf(owner.current), 'sound/magic/demon_attack1.ogg', 80) /datum/antagonist/space_dragon/forge_objectives() + var/static/list/area/allowed_areas + if(!allowed_areas) + // Areas that will prove a challeng for the dragon and are provocative to the crew. + allowed_areas = typecacheof(list( + /area/station/command, + /area/station/engineering, + /area/station/science, + /area/station/security, + )) + + var/list/possible_areas = typecache_filter_list(get_sorted_areas(), allowed_areas) + for(var/area/possible_area as anything in possible_areas) + if(initial(possible_area.outdoors) || !(possible_area.area_flags & VALID_TERRITORY)) + possible_areas -= possible_area + + for(var/i in 1 to 5) + chosen_rift_areas += pick_n_take(possible_areas) + var/datum/objective/summon_carp/summon = new - summon.dragon = src objectives += summon + summon.owner = owner + summon.update_explanation_text() /datum/antagonist/space_dragon/on_gain() forge_objectives() rift_ability = new() + owner.special_role = ROLE_SPACE_DRAGON + owner.set_assigned_role(SSjob.GetJobType(/datum/job/space_dragon)) + return ..() + +/datum/antagonist/space_dragon/on_removal() + owner.special_role = null + owner.set_assigned_role(SSjob.GetJobType(/datum/job/unassigned)) return ..() /datum/antagonist/space_dragon/apply_innate_effects(mob/living/mob_override) @@ -52,6 +82,15 @@ antag.faction |= FACTION_CARP // Give the ability over if we have one rift_ability?.Grant(antag) + wavespeak = antag.AddComponent( \ + /datum/component/mind_linker, \ + network_name = "Wavespeak", \ + chat_color = "#635BAF", \ + signals_which_destroy_us = list(COMSIG_LIVING_DEATH), \ + speech_action_icon = 'icons/mob/actions/actions_space_dragon.dmi', \ + speech_action_icon_state = "wavespeak", \ + ) + RegisterSignal(wavespeak, COMSIG_QDELETING, PROC_REF(clear_wavespeak)) /datum/antagonist/space_dragon/remove_innate_effects(mob/living/mob_override) var/mob/living/antag = mob_override || owner.current @@ -59,11 +98,14 @@ UnregisterSignal(antag, COMSIG_LIVING_DEATH) antag.faction -= FACTION_CARP rift_ability?.Remove(antag) + QDEL_NULL(wavespeak) /datum/antagonist/space_dragon/Destroy() rift_list = null carp = null QDEL_NULL(rift_ability) + QDEL_NULL(wavespeak) + chosen_rift_areas.Cut() return ..() /datum/antagonist/space_dragon/get_preview_icon() @@ -77,6 +119,10 @@ return icon +/datum/antagonist/space_dragon/proc/clear_wavespeak() + SIGNAL_HANDLER + wavespeak = null + /** * Checks to see if we need to do anything with the current state of the dragon's rifts. * @@ -133,8 +179,7 @@ objective_complete = TRUE permanant_empower() var/datum/objective/summon_carp/main_objective = locate() in objectives - if(main_objective) - main_objective.completed = TRUE + main_objective?.completed = TRUE priority_announce("A large amount of lifeforms have been detected approaching [station_name()] at extreme speeds. \ Remaining crew are advised to evacuate as soon as possible.", "[command_name()] Wildlife Observations", has_important_message = TRUE) sound_to_playing_players('sound/creatures/space_dragon_roar.ogg') @@ -178,8 +223,19 @@ owner.current.remove_movespeed_modifier(/datum/movespeed_modifier/dragon_rage) /datum/objective/summon_carp - var/datum/antagonist/space_dragon/dragon - explanation_text = "Summon and protect the rifts to flood the station with carp." + explanation_text = "Summon 3 rifts in order to flood the station with carp." + +/datum/objective/summon_carp/update_explanation_text() + var/datum/antagonist/space_dragon/dragon_owner = owner.has_antag_datum(/datum/antagonist/space_dragon) + if(isnull(dragon_owner)) + return + + var/list/converted_names = list() + for(var/area/possible_area as anything in dragon_owner.chosen_rift_areas) + converted_names += possible_area.get_original_area_name() + + explanation_text = initial(explanation_text) + explanation_text += " Your possible rift locations are: [english_list(converted_names)]" /datum/antagonist/space_dragon/roundend_report() var/list/parts = list() @@ -198,7 +254,17 @@ parts += "The [name] was successful!" else parts += "The [name] has failed!" - if(carp.len) - parts += "The [name] was assisted by:" - parts += printplayerlist(carp) + + if(length(carp)) + parts += "
    The [name] was assisted by:" + parts += "" + return "
    [parts.Join("
    ")]
    " diff --git a/code/modules/antagonists/traitor/components/traitor_objective_helpers.dm b/code/modules/antagonists/traitor/components/traitor_objective_helpers.dm index 6bf5ce5d117a..94ff8c06fb83 100644 --- a/code/modules/antagonists/traitor/components/traitor_objective_helpers.dm +++ b/code/modules/antagonists/traitor/components/traitor_objective_helpers.dm @@ -42,12 +42,12 @@ /datum/component/traitor_objective_register/proc/on_fail(datum/traitor_objective/source) SIGNAL_HANDLER var/datum/traitor_objective/objective = parent - objective.fail_objective(penalty) + objective?.fail_objective(penalty) /datum/component/traitor_objective_register/proc/on_success() SIGNAL_HANDLER var/datum/traitor_objective/objective = parent - objective.succeed_objective() + objective?.succeed_objective() /datum/component/traitor_objective_register/proc/delete_self() SIGNAL_HANDLER diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 2aade03ae3fb..84a2f92ab9a6 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -205,7 +205,6 @@ /// Generates a complete set of traitor objectives up to the traitor objective limit, including non-generic objectives such as martyr and hijack. /datum/antagonist/traitor/proc/forge_traitor_objectives() - objectives.Cut() var/objective_count = 0 if((GLOB.joined_player_list.len >= HIJACK_MIN_PLAYERS) && prob(HIJACK_PROB)) diff --git a/code/modules/antagonists/traitor/objectives/kidnapping.dm b/code/modules/antagonists/traitor/objectives/kidnapping.dm index bed1c6c928cb..64c1c1a33410 100644 --- a/code/modules/antagonists/traitor/objectives/kidnapping.dm +++ b/code/modules/antagonists/traitor/objectives/kidnapping.dm @@ -277,7 +277,8 @@ return var/list/possible_turfs = list() - for(var/turf/open/open_turf in dropoff_area) + + for(var/turf/open/open_turf in dropoff_area.get_turfs_from_all_zlevels()) if(open_turf.is_blocked_turf() || isspaceturf(open_turf)) continue possible_turfs += open_turf diff --git a/code/modules/antagonists/traitor/traitor_objective.dm b/code/modules/antagonists/traitor/traitor_objective.dm index b77bdd281c31..d1c2c79f5616 100644 --- a/code/modules/antagonists/traitor/traitor_objective.dm +++ b/code/modules/antagonists/traitor/traitor_objective.dm @@ -134,7 +134,7 @@ maximum_progression ) -/datum/traitor_objective/Destroy(force, ...) +/datum/traitor_objective/Destroy(force) handler = null return ..() diff --git a/code/modules/antagonists/traitor/uplink_handler.dm b/code/modules/antagonists/traitor/uplink_handler.dm index 4722ffcb9aef..b6ea1b6e9873 100644 --- a/code/modules/antagonists/traitor/uplink_handler.dm +++ b/code/modules/antagonists/traitor/uplink_handler.dm @@ -57,7 +57,7 @@ . = ..() maximum_potential_objectives = CONFIG_GET(number/maximum_potential_objectives) -/datum/uplink_handler/Destroy(force, ...) +/datum/uplink_handler/Destroy(force) can_replace_objectives = null replace_objectives = null return ..() diff --git a/code/modules/antagonists/wizard/equipment/enchanted_clown_suit.dm b/code/modules/antagonists/wizard/equipment/enchanted_clown_suit.dm index 3222deecd84c..623971276937 100644 --- a/code/modules/antagonists/wizard/equipment/enchanted_clown_suit.dm +++ b/code/modules/antagonists/wizard/equipment/enchanted_clown_suit.dm @@ -9,6 +9,7 @@ cooldown_time = 30 SECONDS cooldown_reduction_per_rank = 2 SECONDS delete_old = FALSE + delete_on_failure = FALSE /// Amount of time it takes you to rummage around in there var/cast_time = 3 SECONDS /// True while currently casting the spell @@ -56,7 +57,7 @@ return . | SPELL_CANCEL_CAST casting = FALSE -/datum/action/cooldown/spell/conjure_item/clown_pockets/make_item() +/datum/action/cooldown/spell/conjure_item/clown_pockets/make_item(atom/caster) item_type = pick_weight(clown_items) return ..() diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index adb6e0527a28..71a4204a942d 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -312,7 +312,17 @@ return TRUE to_chat(user, "[span_userdanger("Capture failed!")]: The soul has already fled its mortal frame. You attempt to bring it back...") - INVOKE_ASYNC(src, PROC_REF(get_ghost_to_replace_shade), victim, user) + var/mob/chosen_one = SSpolling.poll_ghosts_for_target( + check_jobban = ROLE_CULTIST, + poll_time = 20 SECONDS, + checked_target = src, + ignore_category = POLL_IGNORE_SHADE, + alert_pic = /mob/living/basic/shade, + jump_target = src, + role_name_text = "a shade", + chat_text_border_icon = /mob/living/basic/shade, + ) + on_poll_concluded(user, victim, chosen_one) return TRUE //it'll probably get someone ;) ///captures a shade that was previously released from a soulstone. @@ -425,42 +435,19 @@ shade_datum = shade.mind.add_antag_datum(/datum/antagonist/shade_minion) shade_datum.update_master(user.real_name) -/** - * Gets a ghost from dead chat to replace a missing player when a shade is created. - * - * Gets ran if a soulstone is used on a body that has no client to take over the shade. - * - * victim - the body that's being shaded - * user - the mob shading the body - * - * Returns FALSE if no ghosts are available or the replacement fails. - * Returns TRUE otherwise. - */ -/obj/item/soulstone/proc/get_ghost_to_replace_shade(mob/living/carbon/victim, mob/user) - var/mob/dead/observer/chosen_ghost - var/list/mob/dead/observer/consenting_candidates = SSpolling.poll_ghost_candidates_for_mob( - "Do you want to play as a Shade?", - check_jobban = ROLE_CULTIST, - role = ROLE_CULTIST, - poll_time = 5 SECONDS, - target_mob = victim, - ignore_category = POLL_IGNORE_SHADE, - pic_source = /mob/living/basic/shade, - role_name_text = "shade" - ) - if(length(consenting_candidates)) - chosen_ghost = pick(consenting_candidates) - - if(!victim || user.incapacitated() || !user.is_holding(src) || !user.CanReach(victim, src)) +/// Called when a ghost is chosen to become a shade. +/obj/item/soulstone/proc/on_poll_concluded(mob/living/master, mob/living/victim, mob/dead/observer/ghost) + if(isnull(victim) || master.incapacitated() || !master.is_holding(src) || !master.CanReach(victim, src)) return FALSE - if(!chosen_ghost || !chosen_ghost.client) - to_chat(user, span_danger("There were no spirits willing to become a shade.")) + if(isnull(ghost?.client)) + to_chat(master, span_danger("There were no spirits willing to become a shade.")) return FALSE - if(contents.len) //If they used the soulstone on someone else in the meantime + if(length(contents)) //If they used the soulstone on someone else in the meantime return FALSE - to_chat(user, "[span_info("Capture successful!:")] A spirit has entered [src], \ + to_chat(master, "[span_info("Capture successful!:")] A spirit has entered [src], \ taking upon the identity of [victim].") - init_shade(victim, user, shade_controller = chosen_ghost) + init_shade(victim, master, shade_controller = ghost) + return TRUE /proc/make_new_construct_from_class(construct_class, theme, mob/target, mob/creator, cultoverride, loc_override) diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/assistance.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/assistance.dm index e576d7738c3d..03b38e10f56a 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/assistance.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/assistance.dm @@ -1,44 +1,45 @@ +#define SPELLBOOK_CATEGORY_ASSISTANCE "Assistance" // Wizard spells that assist the caster in some way /datum/spellbook_entry/summonitem name = "Summon Item" desc = "Recalls a previously marked item to your hand from anywhere in the universe." spell_type = /datum/action/cooldown/spell/summonitem - category = "Assistance" + category = SPELLBOOK_CATEGORY_ASSISTANCE cost = 1 /datum/spellbook_entry/charge name = "Charge" desc = "This spell can be used to recharge a variety of things in your hands, from magical artifacts to electrical components. A creative wizard can even use it to grant magical power to a fellow magic user." spell_type = /datum/action/cooldown/spell/charge - category = "Assistance" + category = SPELLBOOK_CATEGORY_ASSISTANCE cost = 1 /datum/spellbook_entry/shapeshift name = "Wild Shapeshift" desc = "Take on the shape of another for a time to use their natural abilities. Once you've made your choice it cannot be changed." spell_type = /datum/action/cooldown/spell/shapeshift/wizard - category = "Assistance" + category = SPELLBOOK_CATEGORY_ASSISTANCE cost = 1 /datum/spellbook_entry/tap name = "Soul Tap" desc = "Fuel your spells using your own soul!" spell_type = /datum/action/cooldown/spell/tap - category = "Assistance" + category = SPELLBOOK_CATEGORY_ASSISTANCE cost = 1 /datum/spellbook_entry/item/staffanimation name = "Staff of Animation" desc = "An arcane staff capable of shooting bolts of eldritch energy which cause inanimate objects to come to life. This magic doesn't affect machines." item_path = /obj/item/gun/magic/staff/animate - category = "Assistance" + category = SPELLBOOK_CATEGORY_ASSISTANCE /datum/spellbook_entry/item/soulstones name = "Soulstone Shard Kit" desc = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. \ The spell Artificer allows you to create arcane machines for the captured souls to pilot." item_path = /obj/item/storage/belt/soulstone/full - category = "Assistance" + category = SPELLBOOK_CATEGORY_ASSISTANCE /datum/spellbook_entry/item/soulstones/try_equip_item(mob/living/carbon/human/user, obj/item/to_equip) var/was_equipped = user.equip_to_slot_if_possible(to_equip, ITEM_SLOT_BELT, disable_warning = TRUE) @@ -56,13 +57,13 @@ name = "A Necromantic Stone" desc = "A Necromantic stone is able to resurrect three dead individuals as skeletal thralls for you to command." item_path = /obj/item/necromantic_stone - category = "Assistance" + category = SPELLBOOK_CATEGORY_ASSISTANCE /datum/spellbook_entry/item/contract name = "Contract of Apprenticeship" desc = "A magical contract binding an apprentice wizard to your service, using it will summon them to your side." item_path = /obj/item/antag_spawner/contract - category = "Assistance" + category = SPELLBOOK_CATEGORY_ASSISTANCE refundable = TRUE /datum/spellbook_entry/item/guardian @@ -70,7 +71,7 @@ desc = "A deck of guardian tarot cards, capable of binding a personal guardian to your body. There are multiple types of guardian available, but all of them will transfer some amount of damage to you. \ It would be wise to avoid buying these with anything capable of causing you to swap bodies with others." item_path = /obj/item/guardian_creator/wizard - category = "Assistance" + category = SPELLBOOK_CATEGORY_ASSISTANCE /datum/spellbook_entry/item/bloodbottle name = "Bottle of Blood" @@ -80,7 +81,7 @@ in their killing, and you yourself may become a victim." item_path = /obj/item/antag_spawner/slaughter_demon limit = 3 - category = "Assistance" + category = SPELLBOOK_CATEGORY_ASSISTANCE refundable = TRUE /datum/spellbook_entry/item/hugbottle @@ -95,5 +96,7 @@ item_path = /obj/item/antag_spawner/slaughter_demon/laughter cost = 1 //non-destructive; it's just a jape, sibling! limit = 3 - category = "Assistance" + category = SPELLBOOK_CATEGORY_ASSISTANCE refundable = TRUE + +#undef SPELLBOOK_CATEGORY_ASSISTANCE diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm index 46f78dfc6c4e..d03dc224e4e7 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm @@ -1,49 +1,50 @@ +#define SPELLBOOK_CATEGORY_DEFENSIVE "Defensive" // Defensive wizard spells /datum/spellbook_entry/magicm name = "Magic Missile" desc = "Fires several, slow moving, magic projectiles at nearby targets." spell_type = /datum/action/cooldown/spell/aoe/magic_missile - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/disabletech name = "Disable Tech" desc = "Disables all weapons, cameras and most other technology in range." spell_type = /datum/action/cooldown/spell/emp/disable_tech - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 /datum/spellbook_entry/repulse name = "Repulse" desc = "Throws everything around the user away." spell_type = /datum/action/cooldown/spell/aoe/repulse/wizard - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/lightning_packet name = "Thrown Lightning" desc = "Forged from eldrich energies, a packet of pure power, \ known as a spell packet will appear in your hand, that when thrown will stun the target." spell_type = /datum/action/cooldown/spell/conjure_item/spellpacket - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/timestop name = "Time Stop" desc = "Stops time for everyone except for you, allowing you to move freely \ while your enemies and even projectiles are frozen." spell_type = /datum/action/cooldown/spell/timestop - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/smoke name = "Smoke" desc = "Spawns a cloud of choking smoke at your location." spell_type = /datum/action/cooldown/spell/smoke - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 /datum/spellbook_entry/forcewall name = "Force Wall" desc = "Create a magical barrier that only you can pass through." spell_type = /datum/action/cooldown/spell/forcewall - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 /datum/spellbook_entry/lichdom @@ -60,21 +61,21 @@ name = "Chuuni Invocations" desc = "Makes all your spells shout invocations, and the invocations become... stupid. You heal slightly after casting a spell." spell_type = /datum/action/cooldown/spell/chuuni_invocations - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/spacetime_dist name = "Spacetime Distortion" desc = "Entangle the strings of space-time in an area around you, \ randomizing the layout and making proper movement impossible. The strings vibrate..." spell_type = /datum/action/cooldown/spell/spacetime_dist - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 /datum/spellbook_entry/the_traps name = "The Traps!" desc = "Summon a number of traps around you. They will damage and enrage any enemies that step on them." spell_type = /datum/action/cooldown/spell/conjure/the_traps - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 /datum/spellbook_entry/bees @@ -82,7 +83,7 @@ desc = "This spell magically kicks a transdimensional beehive, \ instantly summoning a swarm of bees to your location. These bees are NOT friendly to anyone." spell_type = /datum/action/cooldown/spell/conjure/bee - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/duffelbag name = "Bestow Cursed Duffel Bag" @@ -91,7 +92,7 @@ if it is not fed regularly, and regardless of whether or not it's been fed, \ it will slow the person wearing it down significantly." spell_type = /datum/action/cooldown/spell/touch/duffelbag - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 /datum/spellbook_entry/item/staffhealing @@ -99,26 +100,26 @@ desc = "An altruistic staff that can heal the lame and raise the dead." item_path = /obj/item/gun/magic/staff/healing cost = 1 - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/item/lockerstaff name = "Staff of the Locker" desc = "A staff that shoots lockers. It eats anyone it hits on its way, leaving a welded locker with your victims behind." item_path = /obj/item/gun/magic/staff/locker - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/item/scryingorb name = "Scrying Orb" desc = "An incandescent orb of crackling energy. Using it will allow you to release your ghost while alive, allowing you to spy upon the station and talk to the deceased. In addition, buying it will permanently grant you X-ray vision." item_path = /obj/item/scrying - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/item/wands name = "Wand Assortment" desc = "A collection of wands that allow for a wide variety of utility. \ Wands have a limited number of charges, so be conservative with their use. Comes in a handy belt." item_path = /obj/item/storage/belt/wands/full - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 3 //monkestation edit /datum/spellbook_entry/item/wands/try_equip_item(mob/living/carbon/human/user, obj/item/to_equip) @@ -131,7 +132,7 @@ while providing more protection against attacks and the void of space. \ Also grants a battlemage shield." item_path = /obj/item/mod/control/pre_equipped/enchanted - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/item/armor/try_equip_item(mob/living/carbon/human/user, obj/item/to_equip) var/obj/item/mod/control/mod = to_equip @@ -150,7 +151,9 @@ /datum/spellbook_entry/item/battlemage_charge name = "Battlemage Armour Charges" - desc = "A powerful defensive rune, it will grant twelve additional charges to a battlemage shield." //monkestation edit: reaplced eight with twelve + desc = "A powerful defensive rune, it will grant a battlemage shield the ability to absorb 50 more damage." //monkestation edited item_path = /obj/item/wizard_armour_charge - category = "Defensive" + category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 + +#undef SPELLBOOK_CATEGORY_DEFENSIVE diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/mobility.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/mobility.dm index d5112a59611b..2893bf5614e4 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/mobility.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/mobility.dm @@ -1,47 +1,48 @@ +#define SPELLBOOK_CATEGORY_MOBILITY "Mobility" // Wizard spells that aid mobiilty(or stealth?) /datum/spellbook_entry/mindswap name = "Mindswap" desc = "Allows you to switch bodies with a target next to you. You will both fall asleep when this happens, and it will be quite obvious that you are the target's body if someone watches you do it." spell_type = /datum/action/cooldown/spell/pointed/mind_transfer - category = "Mobility" + category = SPELLBOOK_CATEGORY_MOBILITY /datum/spellbook_entry/knock name = "Knock" desc = "Opens nearby doors and closets." spell_type = /datum/action/cooldown/spell/aoe/knock - category = "Mobility" + category = SPELLBOOK_CATEGORY_MOBILITY cost = 1 /datum/spellbook_entry/blink name = "Blink" desc = "Randomly teleports you a short distance." spell_type = /datum/action/cooldown/spell/teleport/radius_turf/blink - category = "Mobility" + category = SPELLBOOK_CATEGORY_MOBILITY /datum/spellbook_entry/teleport name = "Teleport" desc = "Teleports you to an area of your selection." spell_type = /datum/action/cooldown/spell/teleport/area_teleport/wizard - category = "Mobility" + category = SPELLBOOK_CATEGORY_MOBILITY /datum/spellbook_entry/jaunt name = "Ethereal Jaunt" desc = "Turns your form ethereal, temporarily making you invisible and able to pass through walls." spell_type = /datum/action/cooldown/spell/jaunt/ethereal_jaunt - category = "Mobility" + category = SPELLBOOK_CATEGORY_MOBILITY /datum/spellbook_entry/swap name = "Swap" desc = "Switch places with any living target within nine tiles. Right click to mark a secondary target. You will always swap to your primary target." spell_type = /datum/action/cooldown/spell/pointed/swap - category = "Mobility" + category = SPELLBOOK_CATEGORY_MOBILITY cost = 1 /datum/spellbook_entry/item/warpwhistle name = "Warp Whistle" desc = "A strange whistle that will transport you to a distant safe place on the station. There is a window of vulnerability at the beginning of every use." item_path = /obj/item/warp_whistle - category = "Mobility" + category = SPELLBOOK_CATEGORY_MOBILITY cost = 1 /datum/spellbook_entry/item/staffdoor @@ -49,4 +50,6 @@ desc = "A particular staff that can mold solid walls into ornate doors. Useful for getting around in the absence of other transportation. Does not work on glass." item_path = /obj/item/gun/magic/staff/door cost = 1 - category = "Mobility" + category = SPELLBOOK_CATEGORY_MOBILITY + +#undef SPELLBOOK_CATEGORY_MOBILITY diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm index 57aa2ad7af18..c30ca31915b5 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm @@ -1,27 +1,28 @@ +#define SPELLBOOK_CATEGORY_OFFENSIVE "Offensive" // Offensive wizard spells /datum/spellbook_entry/fireball - name = "Fireball" - desc = "Fires an explosive fireball at a target. Considered a classic among all wizards." - spell_type = /datum/action/cooldown/spell/pointed/projectile/fireball - category = "Offensive" + name = "Fire Ball" //monkestation edit: added the space + desc = "Fires a fire ball at a target. The Wizard Federation got hit hard by the budget cuts." //monkestation edit: edited to reflect the new version of the given spell + spell_type = /datum/action/cooldown/spell/pointed/projectile/fireball/bouncy //monkestation edit: adds the bouncy subtype + category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/spell_cards name = "Spell Cards" desc = "Blazing hot rapid-fire homing cards. Send your foes to the shadow realm with their mystical power!" spell_type = /datum/action/cooldown/spell/pointed/projectile/spell_cards - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/rod_form name = "Rod Form" desc = "Take on the form of an immovable rod, destroying all in your path. Purchasing this spell multiple times will also increase the rod's damage and travel range." spell_type = /datum/action/cooldown/spell/rod_form - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE /*/datum/spellbook_entry/disintegrate //monkestation edit: replaced with a pointed version with a different effect name = "Smite" desc = "Charges your hand with an unholy energy that can be used to cause a touched victim to violently explode." spell_type = /datum/action/cooldown/spell/touch/smite - category = "Offensive"*/ + category = SPELLBOOK_CATEGORY_OFFENSIVE*/ /datum/spellbook_entry/summon_simians name = "Summon Simians" @@ -29,45 +30,52 @@ summons primal monkeys and lesser gorillas that will promptly flip out and attack everything in sight. Fun! \ Their lesser, easily manipulable minds will be convinced you are one of their allies, but only for a minute. Unless you also are a monkey." spell_type = /datum/action/cooldown/spell/conjure/simian - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/blind name = "Blind" desc = "Temporarily blinds a single target." spell_type = /datum/action/cooldown/spell/pointed/blind - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE + cost = 1 + +/datum/spellbook_entry/tie_shoes + name = "Tie Shoes" + desc = "This unassuming spell first unties, then knots the target's shoes. While weak at first glance, each upgrade quietens the spell, allowing it to untie laceless footwear and even summon shoes to knot!" + spell_type = /datum/action/cooldown/spell/pointed/untie_shoes + category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 1 /datum/spellbook_entry/mutate name = "Mutate" desc = "Causes you to turn into a hulk and gain laser vision for a short while." spell_type = /datum/action/cooldown/spell/apply_mutations/mutate - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/fleshtostone name = "Flesh to Stone" desc = "Charges your hand with the power to turn victims into inert statues for a long period of time." spell_type = /datum/action/cooldown/spell/touch/flesh_to_stone - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/teslablast name = "Tesla Blast" desc = "Charge up a tesla arc and release it at a random nearby target! You can move freely while it charges. The arc jumps between targets and can knock them down." spell_type = /datum/action/cooldown/spell/charged/beam/tesla - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/lightningbolt name = "Lightning Bolt" desc = "Fire a lightning bolt at your foes! It will jump between targets, but can't knock them down." spell_type = /datum/action/cooldown/spell/pointed/projectile/lightningbolt - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 1 /datum/spellbook_entry/infinite_guns name = "Lesser Summon Guns" desc = "Why reload when you have infinite guns? Summons an unending stream of bolt action rifles that deal little damage, but will knock targets down. Requires both hands free to use. Learning this spell makes you unable to learn Arcane Barrage." spell_type = /datum/action/cooldown/spell/conjure_item/infinite_guns/gun - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 3 no_coexistance_typecache = list(/datum/action/cooldown/spell/conjure_item/infinite_guns/arcane_barrage) @@ -75,7 +83,7 @@ name = "Arcane Barrage" desc = "Fire a torrent of arcane energy at your foes with this (powerful) spell. Deals much more damage than Lesser Summon Guns, but won't knock targets down. Requires both hands free to use. Learning this spell makes you unable to learn Lesser Summon Gun." spell_type = /datum/action/cooldown/spell/conjure_item/infinite_guns/arcane_barrage - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 3 no_coexistance_typecache = list(/datum/action/cooldown/spell/conjure_item/infinite_guns/gun) @@ -83,7 +91,7 @@ name = "Barnyard Curse" desc = "This spell dooms an unlucky soul to possess the speech and facial attributes of a barnyard animal." spell_type = /datum/action/cooldown/spell/pointed/barnyardcurse - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 1 //monkestation edit /datum/spellbook_entry/splattercasting @@ -91,55 +99,64 @@ desc = "Dramatically lowers the cooldown on all spells, but each one will cost blood, as well as it naturally \ draining from you over time. You can replenish it from your victims, specifically their necks." spell_type = /datum/action/cooldown/spell/splattercasting - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE no_coexistance_typecache = list(/datum/action/cooldown/spell/lichdom) /datum/spellbook_entry/sanguine_strike name = "Exsanguinating Strike" desc = "Sanguine spell that enchants your next weapon strike to deal more damage, heal you for damage dealt, and refill blood." spell_type = /datum/action/cooldown/spell/sanguine_strike - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/scream_for_me name = "Scream For Me" desc = "Sadistic sanguine spell that inflicts numerous severe blood wounds all over the victim's body." spell_type = /datum/action/cooldown/spell/touch/scream_for_me cost = 1 - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/item/staffchaos name = "Staff of Chaos" desc = "A caprious tool that can fire all sorts of magic without any rhyme or reason. Using it on people you care about is not recommended." item_path = /obj/item/gun/magic/staff/chaos - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/item/staffchange name = "Staff of Change" desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself." item_path = /obj/item/gun/magic/staff/change - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE /*/datum/spellbook_entry/item/mjolnir //monkestation edit: replaced with the spell summon mjollnir name = "Mjolnir" desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power." item_path = /obj/item/mjollnir - category = "Offensive"*/ + category = SPELLBOOK_CATEGORY_OFFENSIVE*/ /datum/spellbook_entry/item/singularity_hammer name = "Singularity Hammer" desc = "A hammer that creates an intensely powerful field of gravity where it strikes, pulling everything nearby to the point of impact." item_path = /obj/item/singularityhammer - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/item/spellblade name = "Spellblade" desc = "A sword capable of firing blasts of energy which rip targets limb from limb." item_path = /obj/item/gun/magic/staff/spellblade - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/item/highfrequencyblade name = "High Frequency Blade" desc = "An incredibly swift enchanted blade resonating at a frequency high enough to be able to slice through anything." item_path = /obj/item/highfrequencyblade/wizard - category = "Offensive" + category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 3 + +/datum/spellbook_entry/item/staffshrink + name = "Staff of Shrinking" + desc = "An artefact that can shrink anything for a reasonable duration. Small structures can be walked over, and small people are very vulnerable (often because their armour no longer fits)." + item_path = /obj/item/gun/magic/staff/shrink + category = SPELLBOOK_CATEGORY_OFFENSIVE + + +#undef SPELLBOOK_CATEGORY_OFFENSIVE diff --git a/code/modules/antagonists/wizard/grand_ritual/finales/armageddon.dm b/code/modules/antagonists/wizard/grand_ritual/finales/armageddon.dm index 942a3d656ac3..3e71dbcbe8d1 100644 --- a/code/modules/antagonists/wizard/grand_ritual/finales/armageddon.dm +++ b/code/modules/antagonists/wizard/grand_ritual/finales/armageddon.dm @@ -12,7 +12,7 @@ YOU WILL NOT SURVIVE THIS." icon = 'icons/hud/screen_alert.dmi' icon_state = "wounded" - minimum_time = 90 MINUTES // This will probably immediately end the round if it gets finished. + minimum_time = 80 MINUTES // This will probably immediately end the round if it gets finished. //monkestation edit: from 90 to 80 minutes ritual_invoke_time = 60 SECONDS // Really give the crew some time to interfere with this one. dire_warning = TRUE glow_colour = "#be000048" diff --git a/code/modules/antagonists/wizard/grand_ritual/finales/clown.dm b/code/modules/antagonists/wizard/grand_ritual/finales/clown.dm index 4caf8b87dca6..c4f33543878c 100644 --- a/code/modules/antagonists/wizard/grand_ritual/finales/clown.dm +++ b/code/modules/antagonists/wizard/grand_ritual/finales/clown.dm @@ -9,7 +9,16 @@ /datum/grand_finale/clown/trigger(mob/living/carbon/human/invoker) for(var/mob/living/carbon/human/victim as anything in GLOB.human_list) victim.Unconscious(3 SECONDS) - if (!victim.mind || IS_HUMAN_INVADER(victim) || victim == invoker) + if (victim == invoker) + if(locate(/datum/action/cooldown/spell/pointed/untie_shoes) in invoker.actions) + continue + var/datum/action/cooldown/spell/pointed/untie_shoes/newer_spell = new(invoker) + newer_spell.Grant(invoker) + for(var/i in 1 to newer_spell.spell_max_level) + newer_spell.level_spell() + newer_spell.invocation_type = INVOCATION_SHOUT + continue + if (!victim.mind || IS_HUMAN_INVADER(victim)) continue if (HAS_TRAIT(victim, TRAIT_CLOWN_ENJOYER)) victim.add_mood_event("clown_world", /datum/mood_event/clown_world) @@ -23,6 +32,8 @@ if (is_clown_job(victim.mind.assigned_role)) var/datum/action/cooldown/spell/conjure_item/clown_pockets/new_spell = new(victim) new_spell.Grant(victim) + var/datum/action/cooldown/spell/pointed/untie_shoes/newer_spell = new(victim) + newer_spell.Grant(victim) continue if (!ismonkey(victim)) // Monkeys cannot yet wear clothes dress_as_magic_clown(victim) diff --git a/code/modules/antagonists/wizard/grand_ritual/finales/grand_ritual_finale.dm b/code/modules/antagonists/wizard/grand_ritual/finales/grand_ritual_finale.dm index bfb0e01201b7..b1e5fae978f6 100644 --- a/code/modules/antagonists/wizard/grand_ritual/finales/grand_ritual_finale.dm +++ b/code/modules/antagonists/wizard/grand_ritual/finales/grand_ritual_finale.dm @@ -71,7 +71,7 @@ name = "\improper Wizard Prank Victim" roundend_category = "wizard prank victims" show_in_antagpanel = FALSE - antagpanel_category = "Other" + antagpanel_category = ANTAG_GROUP_CREW show_name_in_check_antagonists = TRUE count_against_dynamic_roll_chance = FALSE silent = TRUE diff --git a/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm b/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm index 305171cca73b..4daa3d77f45f 100644 --- a/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm +++ b/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm @@ -18,7 +18,7 @@ pixel_x = -28 pixel_y = -33 anchored = TRUE - interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND + interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_ATTACK_PAW resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF layer = SIGIL_LAYER /// How many prior grand rituals have been completed? diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm index 87fe2f3e4325..f86c46f83b6c 100644 --- a/code/modules/antagonists/wizard/wizard.dm +++ b/code/modules/antagonists/wizard/wizard.dm @@ -34,7 +34,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) /datum/antagonist/wizard_minion name = "Wizard Minion" - antagpanel_category = "Wizard Federation" + antagpanel_category = ANTAG_GROUP_WIZARDS antag_hud_name = "apprentice" show_in_roundend = FALSE show_name_in_check_antagonists = TRUE @@ -113,7 +113,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) /// Initialises the grand ritual action for this mob /datum/antagonist/wizard/proc/assign_ritual() - ritual = new(owner.current) + ritual = new(owner) //monkestation edit: adds directly to owner instead of owner.current RegisterSignal(ritual, COMSIG_GRAND_RITUAL_FINAL_COMPLETE, PROC_REF(on_ritual_complete)) /datum/antagonist/wizard/proc/send_to_lair() @@ -255,6 +255,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) name = "Wizard Apprentice" antag_hud_name = "apprentice" can_assign_self_objectives = FALSE + move_to_lair = FALSE var/datum/mind/master var/school = APPRENTICE_DESTRUCTION outfit_type = /datum/outfit/wizard/apprentice @@ -279,7 +280,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) if(APPRENTICE_DESTRUCTION) spells_to_grant = list( /datum/action/cooldown/spell/aoe/magic_missile, - /datum/action/cooldown/spell/pointed/projectile/fireball, + /datum/action/cooldown/spell/pointed/projectile/fireball/bouncy, //monkestation edit: adds the bouncy subtype ) to_chat(owner, span_bold("Your service has not gone unrewarded, however. \ Studying under [master.current.real_name], you have learned powerful, \ diff --git a/code/modules/asset_cache/assets/bibles.dm b/code/modules/asset_cache/assets/bibles.dm index d99a6e26feb9..948af216063f 100644 --- a/code/modules/asset_cache/assets/bibles.dm +++ b/code/modules/asset_cache/assets/bibles.dm @@ -2,7 +2,7 @@ name = "bibles" /datum/asset/spritesheet/bibles/create_spritesheets() - var/obj/item/storage/book/bible/holy_template = /obj/item/storage/book/bible + var/obj/item/book/bible/holy_template = /obj/item/book/bible InsertAll("display", initial(holy_template.icon)) /datum/asset/spritesheet/bibles/ModifyInserted(icon/pre_asset) diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm index 414484c6dcf4..b0f31eaa6698 100644 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ b/code/modules/awaymissions/mission_code/stationCollision.dm @@ -23,16 +23,16 @@ name = "Safecode hint spawner" /obj/effect/landmark/sc_bible_spawner/Initialize(mapload) - ..() - var/obj/item/storage/book/bible/B = new /obj/item/storage/book/bible/booze(loc) - B.name = "The Holy book of the Geometer" - B.deity_name = "Narsie" - B.icon_state = "melted" - B.inhand_icon_state = "melted" - B.lefthand_file = 'icons/mob/inhands/items/books_lefthand.dmi' - B.righthand_file = 'icons/mob/inhands/items/books_righthand.dmi' - new /obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_bible(B) - new /obj/item/pen(B) + . = ..() + var/obj/item/book/bible/holy_bible = new /obj/item/book/bible/booze(loc) + holy_bible.name = "The Holy book of the Geometer" + holy_bible.deity_name = "Narsie" + holy_bible.icon_state = "melted" + holy_bible.inhand_icon_state = "melted" + holy_bible.lefthand_file = 'icons/mob/inhands/items/books_lefthand.dmi' + holy_bible.righthand_file = 'icons/mob/inhands/items/books_righthand.dmi' + new /obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_bible(holy_bible) + new /obj/item/pen(holy_bible) return INITIALIZE_HINT_QDEL /* diff --git a/code/modules/basketball/controller.dm b/code/modules/basketball/controller.dm index d045d965341c..6489612812b2 100644 --- a/code/modules/basketball/controller.dm +++ b/code/modules/basketball/controller.dm @@ -49,7 +49,7 @@ GLOBAL_VAR(basketball_game) GLOB.basketball_game = src map_deleter = new -/datum/basketball_controller/Destroy(force, ...) +/datum/basketball_controller/Destroy(force) . = ..() GLOB.basketball_game = null end_game() diff --git a/code/modules/basketball/referee.dm b/code/modules/basketball/referee.dm index 666ff628682b..b9e2a4a8988d 100644 --- a/code/modules/basketball/referee.dm +++ b/code/modules/basketball/referee.dm @@ -14,33 +14,33 @@ disable_text = span_cult("You decide it was a bad call...") COOLDOWN_DECLARE(whistle_cooldown_minigame) -/datum/action/innate/timeout/InterceptClickOn(mob/living/caller, params, atom/clicked_on) - var/turf/caller_turf = get_turf(caller) +/datum/action/innate/timeout/InterceptClickOn(mob/living/user, params, atom/clicked_on) + var/turf/caller_turf = get_turf(user) if(!isturf(caller_turf)) return FALSE - if(!ishuman(clicked_on) || get_dist(caller, clicked_on) > 7) + if(!ishuman(clicked_on) || get_dist(user, clicked_on) > 7) return FALSE - if(clicked_on == caller) // can't call a foul on yourself + if(clicked_on == user) // can't call a foul on yourself return FALSE if(!COOLDOWN_FINISHED(src, whistle_cooldown_minigame)) - caller.balloon_alert(caller, "cant cast for [COOLDOWN_TIMELEFT(src, whistle_cooldown_minigame) *0.1] seconds!") - unset_ranged_ability(caller) + user.balloon_alert(user, "cant cast for [COOLDOWN_TIMELEFT(src, whistle_cooldown_minigame) *0.1] seconds!") + unset_ranged_ability(user) return FALSE return ..() -/datum/action/innate/timeout/do_ability(mob/living/caller, mob/living/carbon/human/target) - caller.say("FOUL BY [target]!", forced = "whistle") - playsound(caller, 'sound/misc/whistle.ogg', 30, FALSE, 4) +/datum/action/innate/timeout/do_ability(mob/living/user, mob/living/carbon/human/target) + user.say("FOUL BY [target]!", forced = "whistle") + playsound(user, 'sound/misc/whistle.ogg', 30, FALSE, 4) - new /obj/effect/timestop(get_turf(target), 0, 5 SECONDS, list(caller), TRUE, TRUE) + new /obj/effect/timestop(get_turf(target), 0, 5 SECONDS, list(user), TRUE, TRUE) COOLDOWN_START(src, whistle_cooldown_minigame, 1 MINUTES) - unset_ranged_ability(caller) + unset_ranged_ability(user) - to_chat(target, span_bold("[caller] has given you a timeout for a foul!")) - to_chat(caller, span_bold("You put [target] in a timeout!")) + to_chat(target, span_bold("[user] has given you a timeout for a foul!")) + to_chat(user, span_bold("You put [target] in a timeout!")) return TRUE diff --git a/code/modules/bitrunning/components/netpod_healing.dm b/code/modules/bitrunning/components/netpod_healing.dm index d0babf9e8de2..6d6fc823f6d3 100644 --- a/code/modules/bitrunning/components/netpod_healing.dm +++ b/code/modules/bitrunning/components/netpod_healing.dm @@ -13,7 +13,7 @@ START_PROCESSING(SSmachines, src) -/datum/component/netpod_healing/Destroy(force, silent) +/datum/component/netpod_healing/Destroy(force) STOP_PROCESSING(SSmachines, src) var/mob/living/carbon/player = parent diff --git a/code/modules/bitrunning/event.dm b/code/modules/bitrunning/event.dm index 7f72c3cedcfe..8a199952aefd 100644 --- a/code/modules/bitrunning/event.dm +++ b/code/modules/bitrunning/event.dm @@ -127,7 +127,7 @@ check_jobban = ROLE_PAI, poll_time = 7.5 SECONDS, ignore_category = POLL_IGNORE_SPLITPERSONALITY, - pic_source = /datum/antagonist/cyber_police, + alert_pic = /datum/antagonist/cyber_police, role_name_text = role_name ) diff --git a/code/modules/bitrunning/objects/landmarks.dm b/code/modules/bitrunning/objects/landmarks.dm index d727025c9286..7e6cbcf0b8b6 100644 --- a/code/modules/bitrunning/objects/landmarks.dm +++ b/code/modules/bitrunning/objects/landmarks.dm @@ -78,14 +78,15 @@ var/obj/structure/closet/crate/secure/bitrunning/encrypted/encrypted_crate var/area/my_area = get_area(src) - for(var/turf/area_turf as anything in my_area.get_contained_turfs()) - for(var/obj/structure/closet/crate/crate_to_check in area_turf) - if(istype(crate_to_check, /obj/structure/closet/crate/secure/bitrunning/encrypted)) - encrypted_crate = crate_to_check - crate_to_check.desc += span_hypnophrase(" This feels like the crate we're looking for!") - else - crate_list += crate_to_check - crate_to_check.name = "Unidentified Crate" + for (var/list/zlevel_turfs as anything in my_area.get_zlevel_turf_lists()) + for (var/turf/area_turf as anything in zlevel_turfs) + for(var/obj/structure/closet/crate/crate_to_check in area_turf) + if(istype(crate_to_check, /obj/structure/closet/crate/secure/bitrunning/encrypted)) + encrypted_crate = crate_to_check + crate_to_check.desc += span_hypnophrase(" This feels like the crate we're looking for!") + else + crate_list += crate_to_check + crate_to_check.name = "Unidentified Crate" if(!encrypted_crate) stack_trace("Bitrunning Goal Crate Randomizer failed to find an encrypted crate to swap positions for.") diff --git a/code/modules/capture_the_flag/ctf_controller.dm b/code/modules/capture_the_flag/ctf_controller.dm index 9842eb1317d2..fc60e6fe1029 100644 --- a/code/modules/capture_the_flag/ctf_controller.dm +++ b/code/modules/capture_the_flag/ctf_controller.dm @@ -29,7 +29,7 @@ src.game_id = game_id GLOB.ctf_games[game_id] = src -/datum/ctf_controller/Destroy(force, ...) +/datum/ctf_controller/Destroy(force) GLOB.ctf_games[game_id] = null return ..() @@ -209,7 +209,7 @@ team_span = spawner.team_span ///If the team is destroyed all players in that team need their componenet removed. -/datum/ctf_team/Destroy(force, ...) +/datum/ctf_team/Destroy(force) for(var/player in team_members) var/datum/component/ctf_player/ctf_player = team_members[player] ctf_player.end_game() diff --git a/code/modules/capture_the_flag/ctf_game.dm b/code/modules/capture_the_flag/ctf_game.dm index 3863518ebf5b..60cf9c8c3b2e 100644 --- a/code/modules/capture_the_flag/ctf_game.dm +++ b/code/modules/capture_the_flag/ctf_game.dm @@ -500,8 +500,9 @@ var/ctf_enabled = FALSE ctf_enabled = ctf_controller.toggle_ctf() - for(var/obj/machinery/power/emitter/emitter in ctf_area) - emitter.active = ctf_enabled + for(var/turf/ctf_turf as anything in get_area_turfs(ctf_area)) + for(var/obj/machinery/power/emitter/emitter in ctf_turf) + emitter.active = ctf_enabled if(user) message_admins("[key_name_admin(user)] has [ctf_enabled ? "enabled" : "disabled"] CTF!") else if(automated) diff --git a/code/modules/capture_the_flag/ctf_player_component.dm b/code/modules/capture_the_flag/ctf_player_component.dm index d3abc0f2571c..c51b48b918c9 100644 --- a/code/modules/capture_the_flag/ctf_player_component.dm +++ b/code/modules/capture_the_flag/ctf_player_component.dm @@ -74,7 +74,7 @@ player_mob.dust() qdel(src) -/datum/component/ctf_player/Destroy(force, silent) +/datum/component/ctf_player/Destroy(force) if(player_mob) UnregisterSignal(player_mob, list(COMSIG_MOB_AFTER_APPLY_DAMAGE, COMSIG_MOB_GHOSTIZED)) return ..() diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index b040ed55d47a..bf9edcba4aeb 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -129,12 +129,14 @@ reward = CARGO_CRATE_VALUE wanted_types = list(/obj/item/storage/fancy/cigarettes/cigpack_shadyjims = TRUE) +/* monkestation removal: get rid of bounties that just make take away station resources /datum/bounty/item/assistant/potted_plants name = "Potted Plants" description = "Central Command is looking to commission a new BirdBoat-class station. You've been ordered to supply the potted plants." reward = CARGO_CRATE_VALUE * 4 required_count = 8 wanted_types = list(/obj/item/kirbyplants = TRUE) +monkestation end */ /datum/bounty/item/assistant/monkey_cubes name = "Monkey Cubes" @@ -163,6 +165,7 @@ required_count = 5 wanted_types = list(/obj/item/toy/figure = TRUE) +/* monkestation removal: get rid of bounties that just make take away station resources /datum/bounty/item/assistant/paper_bin name = "Paper Bins" description = "Our accounting division is all out of paper. We need a new shipment immediately." @@ -190,6 +193,7 @@ description = "We need more water for our hydroponics bay. Find a water tank and ship it out to us." reward = CARGO_CRATE_VALUE * 5 wanted_types = list(/obj/structure/reagent_dispensers/watertank = TRUE) +monkestation end*/ /datum/bounty/item/assistant/pneumatic_cannon name = "Pneumatic Cannon" diff --git a/code/modules/cargo/bounties/engineering.dm b/code/modules/cargo/bounties/engineering.dm index ddfa4b9c45c5..f1d0c246cb4c 100644 --- a/code/modules/cargo/bounties/engineering.dm +++ b/code/modules/cargo/bounties/engineering.dm @@ -40,11 +40,13 @@ reward = CARGO_CRATE_VALUE * 5 wanted_types = list(/obj/machinery/power/energy_accumulator/tesla_coil = TRUE) +/* monkestation removal: get rid of bounties that just make take away station resources /datum/bounty/item/engineering/welding_tank name = "Welding Fuel Tank" description = "We need more welding fuel for the engineering team, send us a tank." reward = CARGO_CRATE_VALUE * 5 wanted_types = list(/obj/structure/reagent_dispensers/fueltank = TRUE) +monkestation end */ /datum/bounty/item/engineering/reflector name = "Reflector" diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm index 5c456f4073ca..8fa38f8736ba 100644 --- a/code/modules/cargo/exports.dm +++ b/code/modules/cargo/exports.dm @@ -96,7 +96,6 @@ Then the player gets the profit from selling his own wasted time. return ..() /datum/export/process() - ..() cost *= NUM_E**(k_elasticity * (1/30)) if(cost > init_cost) cost = init_cost diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm index 3ddc66dbe4af..bf05e9c6be95 100644 --- a/code/modules/cargo/expressconsole.dm +++ b/code/modules/cargo/expressconsole.dm @@ -185,7 +185,7 @@ if (!landingzone) WARNING("[src] couldnt find a Quartermaster/Storage (aka cargobay) area on the station, and as such it has set the supplypod landingzone to the area it resides in.") landingzone = get_area(src) - for(var/turf/open/floor/T in landingzone.get_contained_turfs())//uses default landing zone + for(var/turf/open/floor/T in landingzone.get_turfs_from_all_zlevels())//uses default landing zone if(T.is_blocked_turf()) continue LAZYADD(empty_turfs, T) @@ -204,7 +204,7 @@ else if(SO.pack.get_cost() * (0.72*MAX_EMAG_ROCKETS) <= points_to_check) // bulk discount :^) landingzone = GLOB.areas_by_type[pick(GLOB.the_station_areas)] //override default landing zone - for(var/turf/open/floor/T in landingzone.get_contained_turfs()) + for(var/turf/open/floor/T in landingzone.get_turfs_from_all_zlevels()) if(T.is_blocked_turf()) continue LAZYADD(empty_turfs, T) diff --git a/code/modules/cargo/goodies.dm b/code/modules/cargo/goodies.dm index 93f1c7bab2a4..914cf51a727b 100644 --- a/code/modules/cargo/goodies.dm +++ b/code/modules/cargo/goodies.dm @@ -147,6 +147,12 @@ cost = PAYCHECK_CREW * 4 contains = list(/obj/item/toy/plush/beeplushie) +/datum/supply_pack/goody/blahaj + name = "Shark Plushie" + desc = "A soft, warm companion for midday naps." + cost = PAYCHECK_CREW * 5 + contains = list(/obj/item/toy/plush/shark) + /datum/supply_pack/goody/dog_bone name = "Jumbo Dog Bone" desc = "The best dog bone money can have exported to a space station. A perfect gift for a dog." diff --git a/code/modules/cargo/packs/general.dm b/code/modules/cargo/packs/general.dm index fd3667a44132..f07b9c0973cc 100644 --- a/code/modules/cargo/packs/general.dm +++ b/code/modules/cargo/packs/general.dm @@ -213,7 +213,7 @@ cargo bay. Contains two bottles of holywater, bibles, chaplain robes, and burial garmets." cost = CARGO_CRATE_VALUE * 6 // it costs so much because the Space Church needs funding to build a cathedral contains = list(/obj/item/reagent_containers/cup/glass/bottle/holywater = 2, - /obj/item/storage/book/bible/booze = 2, + /obj/item/book/bible/booze = 2, /obj/item/clothing/suit/hooded/chaplain_hoodie = 2, /obj/item/clothing/under/misc/burial = 2, ) diff --git a/code/modules/cargo/universal_scanner.dm b/code/modules/cargo/universal_scanner.dm index 340132f9c841..193c180ebf4c 100644 --- a/code/modules/cargo/universal_scanner.dm +++ b/code/modules/cargo/universal_scanner.dm @@ -205,6 +205,28 @@ else to_chat(user, span_warning("Bank account not detected. Handling tip not registered.")) + // MONKESTATION EDIT START * Handling tip for mail tokens + if(istype(target, /obj/item/cargo/mail_token)) + var/token_handler_tip = 0.5 + var/obj/item/cargo/mail_token/token = target + var/datum/bank_account/scanner_account = scan_human.get_bank_account() + + if(!istype(get_area(token), /area/shuttle/supply)) + to_chat(user, span_warning("Shuttle placement not detected. Handling tip not registered.")) + + else if(token.token_handler_account) + to_chat(user, span_warning("Bank account for handling tip already registered!")) + + else if(scanner_account) + token.AddComponent(/datum/component/pricetag, scanner_account, token_handler_tip, FALSE) + token.token_handler_account = scanner_account + token.token_handler_account.bank_card_talk("Bank account for [price ? "[price * token_handler_tip] credit " : ""]handling tip successfully registered.") + + else + to_chat(user, span_warning("Bank account not detected. Handling tip not registered.")) + // MONKESTATION EDIT END + + /** * Scans an object, target, and sets it's custom_price variable to new_custom_price, presenting it to the user. */ diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 733bb4b63c0b..01d0b5819806 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -966,6 +966,10 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( if(failed && !(ckey in GLOB.interviews.approved_ckeys)) message_admins(span_adminnotice("Proxy Detection: [key_name_admin(src)] Overwatch detected this is a [string]")) interviewee = TRUE + + if(ckey in GLOB.interviews.approved_ckeys) + return FALSE + return failed /client/Click(atom/object, atom/location, control, params) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 2b722914697c..0dfff4d73fe8 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -88,7 +88,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) /// If set to TRUE, will update character_profiles on the next ui_data tick. var/tainted_character_profiles = FALSE -/datum/preferences/Destroy(force, ...) +/datum/preferences/Destroy(force) QDEL_NULL(character_preview_view) QDEL_LIST(middleware) value_cache = null @@ -210,7 +210,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) switch (action) if ("update_body") - character_preview_view?.update_body() + // monkestation start: janky bugfixing for runtimes + if(!QDELETED(character_preview_view)) + character_preview_view.update_body() + else + addtimer(CALLBACK(src, PROC_REF(create_character_preview_view), usr), 0.5 SECONDS, TIMER_DELETE_ME) + // monkestation end if ("change_slot") // Save existing character save_character() @@ -224,7 +229,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) for (var/datum/preference_middleware/preference_middleware as anything in middleware) preference_middleware.on_new_character(usr) - character_preview_view.update_body() + // monkestation start: janky bugfixing for runtimes + if(!QDELETED(character_preview_view)) + character_preview_view.update_body() + else + addtimer(CALLBACK(src, PROC_REF(create_character_preview_view), usr), 0.5 SECONDS, TIMER_DELETE_ME) + // monkestation end return TRUE if ("rotate") @@ -389,10 +399,15 @@ GLOBAL_LIST_EMPTY(preferences_datums) QDEL_NULL(body) body = new + RegisterSignal(body, COMSIG_QDELETING, PROC_REF(clear_body)) // Without this, it doesn't show up in the menu body.appearance_flags &= ~TILE_BOUND +/atom/movable/screen/map_view/char_preview/proc/clear_body(atom/movable/deletee) + if(body == deletee) + body = null + /datum/preferences/proc/create_character_profiles() var/list/profiles = list() diff --git a/code/modules/client/preferences/_preference.dm b/code/modules/client/preferences/_preference.dm index 54695d937b11..e6f260d9a2f6 100644 --- a/code/modules/client/preferences/_preference.dm +++ b/code/modules/client/preferences/_preference.dm @@ -109,6 +109,10 @@ GLOBAL_LIST_INIT(preference_entries_by_key, init_preference_entries_by_key()) /// will show the feature as selectable. var/relevant_external_organ = null + /// If the selected species has this head_flag by default, + /// will show the feature as selectable. --species nuking + var/relevant_head_flag = null + /// Called on the saved input when retrieving. /// Also called by the value sent from the user through UI. Do not trust it. /// Input is the value inside the savefile, output is to tell other code diff --git a/code/modules/client/preferences/species_features/basic.dm b/code/modules/client/preferences/species_features/basic.dm index 0e4695823c55..06a207899e43 100644 --- a/code/modules/client/preferences/species_features/basic.dm +++ b/code/modules/client/preferences/species_features/basic.dm @@ -26,7 +26,7 @@ savefile_key = "eye_color" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_SECONDARY_FEATURES - relevant_species_trait = EYECOLOR + relevant_head_flag = HEAD_EYECOLOR /datum/preference/color/eye_color/apply_to_human(mob/living/carbon/human/target, value) var/hetero = target.eye_color_heterochromatic @@ -59,7 +59,7 @@ category = PREFERENCE_CATEGORY_FEATURES main_feature_name = "Facial hair" should_generate_icons = TRUE - relevant_species_trait = FACEHAIR + relevant_head_flag = HEAD_FACIAL_HAIR /datum/preference/choiced/facial_hairstyle/init_possible_values() return generate_possible_values_for_sprite_accessories_on_head(GLOB.facial_hairstyles_list) @@ -79,7 +79,7 @@ savefile_key = "facial_hair_color" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES - relevant_species_trait = FACEHAIR + relevant_head_flag = HEAD_FACIAL_HAIR /datum/preference/color/facial_hair_color/apply_to_human(mob/living/carbon/human/target, value) target.facial_hair_color = value @@ -90,7 +90,7 @@ savefile_identifier = PREFERENCE_CHARACTER savefile_key = "facial_hair_gradient" main_feature_name = "Facial hair Gradient" - relevant_species_trait = FACEHAIR + relevant_head_flag = HEAD_FACIAL_HAIR should_generate_icons = TRUE /datum/preference/choiced/facial_hair_gradient/init_possible_values() @@ -141,7 +141,7 @@ category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER savefile_key = "facial_hair_gradient_color" - relevant_species_trait = FACEHAIR + relevant_head_flag = HEAD_FACIAL_HAIR /datum/preference/color/facial_hair_gradient/apply_to_human(mob/living/carbon/human/target, value) LAZYSETLEN(target.grad_color, GRADIENTS_LEN) @@ -157,7 +157,7 @@ savefile_key = "hair_color" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES - relevant_species_trait = HAIR + relevant_head_flag = HEAD_HAIR /datum/preference/color/hair_color/apply_to_human(mob/living/carbon/human/target, value) target.hair_color = value @@ -168,7 +168,7 @@ category = PREFERENCE_CATEGORY_FEATURES main_feature_name = "Hairstyle" should_generate_icons = TRUE - relevant_species_trait = HAIR + relevant_head_flag = HEAD_HAIR /datum/preference/choiced/hairstyle/init_possible_values() return generate_possible_values_for_sprite_accessories_on_head(GLOB.hairstyles_list) @@ -189,7 +189,7 @@ savefile_key = "hair_gradient" main_feature_name = "Hairstyle Gradient" should_generate_icons = TRUE - relevant_species_trait = HAIR + relevant_head_flag = HEAD_HAIR /datum/preference/choiced/hair_gradient/init_possible_values() var/list/values = possible_values_for_sprite_accessory_list(GLOB.hair_gradients_list) @@ -250,7 +250,7 @@ category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER savefile_key = "hair_gradient_color" - relevant_species_trait = HAIR + relevant_head_flag = HEAD_HAIR /datum/preference/color/hair_gradient/apply_to_human(mob/living/carbon/human/target, value) LAZYSETLEN(target.grad_color, GRADIENTS_LEN) diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm index 8db14b82fdc4..9782fd888e9a 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -53,7 +53,7 @@ return FALSE var/area/checkable = get_area(src) - if(checkable.area_flags & BLOCK_SUICIDE) + if(checkable?.area_flags & BLOCK_SUICIDE) to_chat(src, span_warning("You can't commit suicide here! You can ghost if you'd like.")) return FALSE diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm index f3ddf19bbe64..5f96429cfea2 100644 --- a/code/modules/clothing/glasses/engine_goggles.dm +++ b/code/modules/clothing/glasses/engine_goggles.dm @@ -97,15 +97,16 @@ return var/list/shuttle_areas = port.shuttle_areas for(var/area/region as anything in shuttle_areas) - for(var/turf/place as anything in region.get_contained_turfs()) - if(get_dist(user, place) > 7) - continue - var/image/pic - if(isshuttleturf(place)) - pic = new('icons/turf/overlays.dmi', place, "greenOverlay", AREA_LAYER) - else - pic = new('icons/turf/overlays.dmi', place, "redOverlay", AREA_LAYER) - flick_overlay_global(pic, list(user.client), 8) + for (var/list/zlevel_turfs as anything in region.get_zlevel_turf_lists()) + for (var/turf/place as anything in zlevel_turfs) + if(get_dist(user, place) > 7) + continue + var/image/pic + if(isshuttleturf(place)) + pic = new('icons/turf/overlays.dmi', place, "greenOverlay", AREA_LAYER) + else + pic = new('icons/turf/overlays.dmi', place, "redOverlay", AREA_LAYER) + flick_overlay_global(pic, list(user.client), 8) /obj/item/clothing/glasses/meson/engine/proc/show_connections() var/mob/living/carbon/human/user = loc diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 7e984c659e5e..2b304c631a76 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -144,6 +144,12 @@ inhand_icon_state = "blueshift_helmet" custom_premium_price = PAYCHECK_COMMAND +/obj/item/clothing/head/helmet/guardmanhelmet + name = "guardman's helmet" + desc = "Keeps your brain intact when fighting heretics" + icon = 'monkestation/icons/obj/clothing/hats.dmi' + worn_icon = 'monkestation/icons/mob/clothing/head.dmi' + icon_state = "guardman_helmet" /obj/item/clothing/head/helmet/toggleable dog_fashion = null diff --git a/code/modules/clothing/head/mind_monkey_helmet.dm b/code/modules/clothing/head/mind_monkey_helmet.dm index af59f2cbf643..42d71df086e2 100644 --- a/code/modules/clothing/head/mind_monkey_helmet.dm +++ b/code/modules/clothing/head/mind_monkey_helmet.dm @@ -47,26 +47,18 @@ playsound(src, 'sound/machines/ping.ogg', 30, TRUE) RegisterSignal(magnification, COMSIG_SPECIES_LOSS, PROC_REF(make_fall_off)) polling = TRUE - var/list/candidates = SSpolling.poll_ghost_candidates_for_mob( - "Do you want to play as a mind magnified monkey?", - check_jobban = ROLE_MONKEY_HELMET, - poll_time = 5 SECONDS, - target_mob = magnification, - ignore_category = POLL_IGNORE_MONKEY_HELMET, - role_name_text = "mind-magnified monkey" - ) + var/mob/chosen_one = SSpolling.poll_ghosts_for_target(check_jobban = ROLE_MONKEY_HELMET, poll_time = 5 SECONDS, checked_target = magnification, ignore_category = POLL_IGNORE_MONKEY_HELMET, alert_pic = magnification, role_name_text = "mind-magnified monkey") polling = FALSE if(!magnification) return - if(!length(candidates)) + if(isnull(chosen_one)) UnregisterSignal(magnification, COMSIG_SPECIES_LOSS) magnification = null visible_message(span_notice("[src] falls silent and drops on the floor. Maybe you should try again later?")) playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE) user.dropItemToGround(src) return - var/mob/picked = pick(candidates) - magnification.key = picked.key + magnification.key = chosen_one.key playsound(src, 'sound/machines/microwave/microwave-end.ogg', 100, FALSE) to_chat(magnification, span_notice("You're a mind magnified monkey! Protect your helmet with your life- if you lose it, your sentience goes with it!")) var/policy = get_policy(ROLE_MONKEY_HELMET) diff --git a/code/modules/clothing/head/wig.dm b/code/modules/clothing/head/wig.dm index 48949965a1a1..93f3960851fa 100644 --- a/code/modules/clothing/head/wig.dm +++ b/code/modules/clothing/head/wig.dm @@ -70,13 +70,19 @@ to_chat(user, span_warning("You can't get a good look at [target.p_their()] hair!")) return + var/obj/item/bodypart/head/noggin = target.get_bodypart(BODY_ZONE_HEAD) + if(!noggin) + to_chat(user, span_warning("[target.p_they(TRUE)] have no head!")) + return + + var/selected_hairstyle = null var/selected_hairstyle_color = null if(istype(target.head, /obj/item/clothing/head/wig)) var/obj/item/clothing/head/wig/wig = target.head selected_hairstyle = wig.hairstyle selected_hairstyle_color = wig.color - else if((HAIR in target.dna.species.species_traits) && target.hairstyle != "Bald") + else if((noggin.head_flags & HEAD_HAIR) && target.hairstyle != "Bald") selected_hairstyle = target.hairstyle selected_hairstyle_color = "[target.hair_color]" diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index c1d9d1f35e7c..3e2cfaa2cb7a 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -11,7 +11,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list( name = "gas mask" desc = "A face-covering mask that can be connected to an air supply. Good for concealing your identity and with a filter slot to help remove those toxins." //More accurate icon_state = "gas_alt" - clothing_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS | GAS_FILTERING + clothing_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS | GAS_FILTERING //monkestation edit flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR|HIDESNOUT w_class = WEIGHT_CLASS_NORMAL inhand_icon_state = "gas_alt" @@ -261,7 +261,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list( /obj/item/clothing/mask/gas/clown_hat name = "clown wig and mask" desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." - clothing_flags = MASKINTERNALS + clothing_flags = MASKINTERNALS | GAS_FILTERING //monkestation edit icon_state = "clown" inhand_icon_state = "clown_hat" lefthand_file = 'icons/mob/inhands/clothing/hats_lefthand.dmi' @@ -309,7 +309,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list( /obj/item/clothing/mask/gas/sexyclown name = "sexy-clown wig and mask" desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." - clothing_flags = MASKINTERNALS + clothing_flags = MASKINTERNALS | GAS_FILTERING //monkestation edit icon_state = "sexyclown" inhand_icon_state = "sexyclown_hat" lefthand_file = 'icons/mob/inhands/clothing/hats_lefthand.dmi' @@ -322,7 +322,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list( /obj/item/clothing/mask/gas/mime name = "mime mask" desc = "The traditional mime's mask. It has an eerie facial posture." - clothing_flags = MASKINTERNALS + clothing_flags = MASKINTERNALS | GAS_FILTERING //monkestation edit icon_state = "mime" inhand_icon_state = null w_class = WEIGHT_CLASS_SMALL @@ -379,7 +379,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list( /obj/item/clothing/mask/gas/sexymime name = "sexy mime mask" desc = "A traditional female mime's mask." - clothing_flags = MASKINTERNALS + clothing_flags = MASKINTERNALS | GAS_FILTERING //monkestation edit icon_state = "sexymime" inhand_icon_state = null flags_cover = MASKCOVERSEYES diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index c4e8f9133175..d69460e6a1ce 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -114,9 +114,10 @@ * * * * state: SHOES_UNTIED, SHOES_TIED, or SHOES_KNOTTED, depending on what you want them to become * * user: used to check to see if we're the ones unknotting our own laces + * * force_lacing: boolean. if TRUE, ignores can_be_tied */ -/obj/item/clothing/shoes/proc/adjust_laces(state, mob/user) - if(!can_be_tied) +/obj/item/clothing/shoes/proc/adjust_laces(state, mob/user, force_lacing = FALSE) + if(!can_be_tied && !force_lacing) return var/mob/living/carbon/human/our_guy diff --git a/code/modules/clothing/shoes/sneakers.dm b/code/modules/clothing/shoes/sneakers.dm index f07ea00c5089..954925ffad5b 100644 --- a/code/modules/clothing/shoes/sneakers.dm +++ b/code/modules/clothing/shoes/sneakers.dm @@ -12,6 +12,11 @@ greyscale_config_inhand_right = /datum/greyscale_config/sneakers_inhand_right flags_1 = IS_PLAYER_COLORABLE_1 +/obj/item/clothing/shoes/sneakers/random/Initialize(mapload) + . = ..() + greyscale_colors = "#" + random_color() + "#" + random_color() + update_greyscale() + /obj/item/clothing/shoes/sneakers/black name = "black shoes" desc = "A pair of black shoes." diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index e273cb28d3ef..b6a8add54370 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -171,9 +171,11 @@ /obj/item/clothing/suit/armor/hos/trenchcoat/winter name = "head of security's winter trenchcoat" desc = "A trenchcoat enhanced with a special lightweight kevlar, padded with wool on the collar and inside. You feel strangely lonely wearing this coat." - icon_state = "pimpcoat" // monkestation edit + icon_state = "hoswinter" min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT +///obj/item/clothing/suit/armor/hos/trenchcoat/pimpcoat in monkestation\code\modules\aesthetics\items\clothing.dm + /obj/item/clothing/suit/armor/hos/hos_formal name = "\improper Head of Security's parade jacket" desc = "For when an armoured vest isn't fashionable enough." diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 83efcbcda8d9..150af82f26e0 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -13,10 +13,11 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF supports_variations_flags = CLOTHING_SNOUTED_VARIATION -/obj/item/clothing/head/bio_hood/Initialize(mapload) - . = ..() - if(flags_inv & HIDEFACE) - AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES) +// MONKESTATION REMOVAL +//obj/item/clothing/head/bio_hood/Initialize(mapload) + //. = ..() + //if(flags_inv & HIDEFACE) + // AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES) /datum/armor/head_bio_hood bio = 100 @@ -133,4 +134,4 @@ /obj/item/clothing/suit/bio_suit/plaguedoctorsuit/Initialize(mapload) . = ..() - allowed += list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/cane) + allowed += list(/obj/item/book/bible, /obj/item/nullrod, /obj/item/cane) diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm index 466ac74dff34..eb99688de85e 100644 --- a/code/modules/clothing/suits/costume.dm +++ b/code/modules/clothing/suits/costume.dm @@ -127,7 +127,7 @@ inhand_icon_state = "imperium_monk" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDESHOES|HIDEJUMPSUIT - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/flashlight/flare/candle, /obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/flashlight/flare/candle, /obj/item/tank/internals/emergency_oxygen) /obj/item/clothing/suit/costume/chickensuit name = "chicken suit" @@ -484,7 +484,7 @@ worn_icon = 'icons/mob/clothing/suits/costume.dmi' inhand_icon_state = "mysticrobe" body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/spellbook, /obj/item/storage/book/bible) + allowed = list(/obj/item/spellbook, /obj/item/book/bible) flags_inv = HIDEJUMPSUIT hoodtype = /obj/item/clothing/head/hooded/mysticrobe diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index 3019de7ac0ca..457bc7d7c35b 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -66,7 +66,7 @@ inhand_icon_state = "tapehat" dog_fashion = null worn_y_offset = 6 - body_parts_covered = HEAD|HAIR + body_parts_covered = HEAD //this used to also cover HAIR, but that was never valid code as HAIR is not actually a body_part define! flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR /obj/item/clothing/head/wizard/magus diff --git a/code/modules/clothing/under/skirt_dress.dm b/code/modules/clothing/under/skirt_dress.dm index 76558b3e00c4..64528d887aff 100644 --- a/code/modules/clothing/under/skirt_dress.dm +++ b/code/modules/clothing/under/skirt_dress.dm @@ -80,3 +80,17 @@ greyscale_config = /datum/greyscale_config/sundress greyscale_config_worn = /datum/greyscale_config/sundress_worn flags_1 = IS_PLAYER_COLORABLE_1 + +//MONKESTATION ADDITIONS +/obj/item/clothing/under/dress/ballgown + name = "ballgown" + desc = "A luxurious ballgown best worn before midnight. A signature of the letters 'VA` is stitched on the hem." + icon_state = "ballgown" + custom_price = PAYCHECK_COMMAND + inhand_icon_state = null + body_parts_covered = CHEST|GROIN|LEGS + greyscale_config = /datum/greyscale_config/ballgown + greyscale_config_worn = /datum/greyscale_config/ballgown_worn + greyscale_colors = "#FFFFFF#CCECFF#FFFFFF" + flags_1 = IS_PLAYER_COLORABLE_1 + flags_inv = HIDESHOES diff --git a/code/modules/error_handler/error_handler.dm b/code/modules/error_handler/error_handler.dm index 89f430232789..84254ef615b7 100644 --- a/code/modules/error_handler/error_handler.dm +++ b/code/modules/error_handler/error_handler.dm @@ -34,6 +34,9 @@ GLOBAL_VAR_INIT(total_runtimes_skipped, 0) if(!error_last_seen) // A runtime is occurring too early in start-up initialization return ..() + if(!islist(error_last_seen)) + return ..() //how the fuck? + if(stack_workaround.Find(E.name)) var/list/data = json_decode(stack_workaround.group[1]) E.file = data[1] diff --git a/code/modules/escape_menu/escape_menu.dm b/code/modules/escape_menu/escape_menu.dm index a954822a83e6..57fe4b88813c 100644 --- a/code/modules/escape_menu/escape_menu.dm +++ b/code/modules/escape_menu/escape_menu.dm @@ -50,7 +50,7 @@ GLOBAL_LIST_EMPTY(escape_menus) if (!isnull(ckey)) GLOB.escape_menus[ckey] = src -/datum/escape_menu/Destroy(force, ...) +/datum/escape_menu/Destroy(force) QDEL_NULL(base_holder) QDEL_NULL(page_holder) diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index 708c294535d0..c27396de1aca 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -41,7 +41,9 @@ /// Flags dictating whether this event should be run on certain kinds of map var/map_flags = NONE - //monkestation vars starts + // monkestation start + /// The typepath to the event group this event is a part of. + var/datum/event_group/event_group = null var/roundstart = FALSE var/cost = 1 var/reoccurence_penalty_multiplier = 0.75 @@ -56,7 +58,7 @@ var/can_run_post_roundstart = TRUE /// If set then the type or list of types of storytellers we are restricted to being trigged by var/list/allowed_storytellers - //monkestation vars end + // monkestation end /datum/round_event_control/New() if(config && !wizardevent) // Magic is unaffected by configs @@ -69,6 +71,12 @@ for(var/admin_setup_type in admin_setup_types) admin_setup += new admin_setup_type(src) +// monkestation start: fix some hard deletes +/datum/round_event_control/Destroy(force) + QDEL_LIST(admin_setup) + return ..() +// monkestation end + /datum/round_event_control/wizard category = EVENT_CATEGORY_WIZARD wizardevent = TRUE @@ -89,15 +97,17 @@ // Admin-created events override this. /datum/round_event_control/proc/can_spawn_event(players_amt, allow_magic = FALSE, fake_check = FALSE) SHOULD_CALL_PARENT(TRUE) -//monkestation edit start - if(roundstart && ((SSticker.round_start_time && world.time - SSticker.round_start_time >= 2 MINUTES) || (SSgamemode.ran_roundstart && !fake_check))) +// monkestation start: event groups and storyteller stuff + if(event_group && !GLOB.event_groups[event_group].can_run()) + return FALSE + if(roundstart && ((SSticker.round_start_time && (world.time - SSticker.round_start_time) >= 2 MINUTES) || (SSgamemode.ran_roundstart && !fake_check))) return FALSE if(istype(src, /datum/round_event_control/antagonist/solo/from_ghosts) && (SSautotransfer.starttime + 85 MINUTES <= world.time)) return TRUE // we allow all ghost roles to run at this point and dont care about other checks -//monkestation edit end +// monkestation end if(occurrences >= max_occurrences) return FALSE - if(earliest_start >= world.time-SSticker.round_start_time) + if(earliest_start >= (world.time - SSticker.round_start_time)) return FALSE if(!allow_magic && wizardevent != SSevents.wizardmode) return FALSE @@ -110,7 +120,7 @@ if(ispath(typepath, /datum/round_event/ghost_role) && !(GLOB.ghost_role_flags & GHOSTROLE_MIDROUND_EVENT)) return FALSE - //monkestation edit start - STORYTELLERS +// monkestation start: storyteller stuff if(checks_antag_cap && !roundstart && !SSgamemode.can_inject_antags()) return FALSE if(!check_enemies()) @@ -119,7 +129,7 @@ return FALSE if(SSgamemode.storyteller.disable_distribution || SSgamemode.halted_storyteller) return FALSE - //monkestation edit end - STORYTELLERS +// monkestation end var/datum/game_mode/dynamic/dynamic = SSticker.mode if (istype(dynamic) && dynamic_should_hijack && dynamic.random_event_hijacked != HIJACKED_NOTHING) @@ -204,6 +214,11 @@ Runs the event triggering = FALSE log_game("[random ? "Random" : "Forced"] Event triggering: [name] ([typepath]).") + // monkestation start: event groups + if(event_group) + GLOB.event_groups[event_group].on_run(src) + // monkestation end + if(alert_observers) round_event.announce_deadchat(random, event_cause) diff --git a/code/modules/events/_event_admin_setup.dm b/code/modules/events/_event_admin_setup.dm index d4774d75869d..40051b719a8f 100644 --- a/code/modules/events/_event_admin_setup.dm +++ b/code/modules/events/_event_admin_setup.dm @@ -7,6 +7,12 @@ /datum/event_admin_setup/New(event_control) src.event_control = event_control +// monkestation start: fix some hard deletes +/datum/event_admin_setup/Destroy(force) + event_control = null + return ..() +// monkestation end + /datum/event_admin_setup/proc/prompt_admins() SHOULD_CALL_PARENT(FALSE) CRASH("Unimplemented prompt_admins() on [event_control]'s admin setup.") diff --git a/code/modules/events/aurora_caelus.dm b/code/modules/events/aurora_caelus.dm index 0525fe0b3b52..b4b146324889 100644 --- a/code/modules/events/aurora_caelus.dm +++ b/code/modules/events/aurora_caelus.dm @@ -31,10 +31,10 @@ /datum/round_event/aurora_caelus/start() for(var/area/affected_area as anything in GLOB.areas) if(affected_area.area_flags & AREA_USES_STARLIGHT) - for(var/turf/open/space/spess in affected_area.get_contained_turfs()) + for(var/turf/open/space/spess in affected_area.get_turfs_from_all_zlevels()) spess.set_light(l_outer_range = spess.light_outer_range * 3, l_power = spess.light_power * 0.5) if(istype(affected_area, /area/station/service/kitchen)) - for(var/turf/open/kitchen in affected_area.get_contained_turfs()) + for(var/turf/open/kitchen in affected_area.get_turfs_from_all_zlevels()) kitchen.set_light(1, 0.75) if(!prob(1) && !check_holidays(APRIL_FOOLS)) continue @@ -58,20 +58,20 @@ var/aurora_color = aurora_colors[aurora_progress] for(var/area/affected_area as anything in GLOB.areas) if(affected_area.area_flags & AREA_USES_STARLIGHT) - for(var/turf/open/space/spess in affected_area.get_contained_turfs()) + for(var/turf/open/space/spess in affected_area.get_turfs_from_all_zlevels()) spess.set_light(l_color = aurora_color) if(istype(affected_area, /area/station/service/kitchen)) - for(var/turf/open/kitchen_floor in affected_area.get_contained_turfs()) + for(var/turf/open/kitchen_floor in affected_area.get_turfs_from_all_zlevels()) kitchen_floor.set_light(l_color = aurora_color) /datum/round_event/aurora_caelus/end() for(var/area in GLOB.areas) var/area/affected_area = area if(affected_area.area_flags & AREA_USES_STARLIGHT) - for(var/turf/open/space/spess in affected_area.get_contained_turfs()) + for(var/turf/open/space/spess in affected_area.get_turfs_from_all_zlevels()) fade_to_black(spess) if(istype(affected_area, /area/station/service/kitchen)) - for(var/turf/open/superturfentent in affected_area.get_contained_turfs()) + for(var/turf/open/superturfentent in affected_area.get_turfs_from_all_zlevels()) fade_to_black(superturfentent) priority_announce("The aurora caelus event is now ending. Starlight conditions will slowly return to normal. When this has concluded, please return to your workplace and continue work as normal. Have a pleasant shift, [station_name()], and thank you for watching with us.", sound = 'sound/misc/notice2.ogg', diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index 58ed378be403..44a27e28ec34 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -1,3 +1,4 @@ +/* monkestation edit: overwritten in [code\modules\events\brand_intelligence.dm] /datum/round_event_control/brand_intelligence name = "Brand Intelligence" typepath = /datum/round_event/brand_intelligence @@ -93,3 +94,4 @@ /datum/event_admin_setup/listed_options/brand_intelligence/apply_to_event(datum/round_event/brand_intelligence/event) event.chosen_vendor_type = chosen +*/ diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index 91b3c0f99431..043a0bcd181d 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -24,7 +24,9 @@ typepath = /datum/round_event/disease_outbreak max_occurrences = 1 min_players = 10 - weight = 4 + weight = 0 + track = EVENT_TRACK_MAJOR + earliest_start = 55 MINUTES category = EVENT_CATEGORY_HEALTH description = "A 'classic' virus will infect some members of the crew." min_wizard_trigger_potency = 2 @@ -51,7 +53,7 @@ /datum/round_event_control/disease_outbreak/proc/generate_candidates() disease_candidates.Cut() //We clear the list and rebuild it again. for(var/mob/living/carbon/human/candidate in shuffle(GLOB.player_list)) //Player list is much more up to date and requires less checks(?) - if(!(candidate.mind.assigned_role.job_flags & JOB_CREW_MEMBER) || candidate.stat == DEAD) + if(!(candidate.mind?.assigned_role?.job_flags & JOB_CREW_MEMBER) || candidate.stat == DEAD) continue if(HAS_TRAIT(candidate, TRAIT_VIRUSIMMUNE)) //Don't pick someone who's virus immune, only for it to not do anything. continue @@ -143,9 +145,9 @@ name = "Disease Outbreak: Advanced" typepath = /datum/round_event/disease_outbreak/advanced category = EVENT_CATEGORY_HEALTH - weight = 5 //monkestation change 15 ==> 5 + weight = 0 //monkestation change 15 ==> 5 min_players = 35 // To avoid shafting lowpop - earliest_start = 15 MINUTES // give the chemist a chance + earliest_start = 55 MINUTES // give the chemist a chance description = "An 'advanced' disease will infect some members of the crew." min_wizard_trigger_potency = 2 max_wizard_trigger_potency = 6 diff --git a/code/modules/events/fake_virus.dm b/code/modules/events/fake_virus.dm index 950badd99362..4888ae39fe8e 100644 --- a/code/modules/events/fake_virus.dm +++ b/code/modules/events/fake_virus.dm @@ -7,27 +7,29 @@ /datum/round_event/fake_virus/start() var/list/fake_virus_victims = list() - for(var/mob/living/carbon/human/victim in shuffle(GLOB.player_list)) - if(victim.stat == DEAD || HAS_TRAIT(victim, TRAIT_CRITICAL_CONDITION) || !(victim.mind.assigned_role.job_flags & JOB_CREW_MEMBER)) + for(var/mob/living/carbon/human/victim in GLOB.player_list) + if(victim.stat != CONSCIOUS || HAS_TRAIT(victim, TRAIT_VIRUSIMMUNE)) + continue + if(!(victim.mind?.assigned_role.job_flags & JOB_CREW_MEMBER)) continue fake_virus_victims += victim //first we do hard status effect victims - var/defacto_min = min(3, LAZYLEN(fake_virus_victims)) - if(defacto_min)// event will hit 1-3 people by default, but will do 1-2 or just 1 if only those many candidates are available - for(var/i in 1 to rand(1,defacto_min)) - var/mob/living/carbon/human/hypochondriac = pick(fake_virus_victims) - hypochondriac.apply_status_effect(/datum/status_effect/fake_virus) - fake_virus_victims -= hypochondriac - announce_to_ghosts(hypochondriac) + var/defacto_min = min(3, length(fake_virus_victims)) + if(defacto_min <= 0)// event will hit 1-3 people by default, but will do 1-2 or just 1 if only those many candidates are available + return + for(var/i in 1 to rand(1, defacto_min)) + var/mob/living/carbon/human/hypochondriac = pick_n_take(fake_virus_victims) + hypochondriac.apply_status_effect(/datum/status_effect/fake_virus) + announce_to_ghosts(hypochondriac) //then we do light one-message victims who simply cough or whatever once (have to repeat the process since the last operation modified our candidates list) - defacto_min = min(5, LAZYLEN(fake_virus_victims)) - if(defacto_min) - for(var/i in 1 to rand(1,defacto_min)) - var/mob/living/carbon/human/onecoughman = pick(fake_virus_victims) - if(prob(25))//1/4 odds to get a spooky message instead of coughing out loud - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), onecoughman, span_warning("[pick("Your head hurts.", "Your head pounds.")]")), rand(30,150)) - else - addtimer(CALLBACK(onecoughman, TYPE_PROC_REF(/mob, emote), pick("cough", "sniff", "sneeze")), rand(30,150))//deliver the message with a slightly randomized time interval so there arent multiple people coughing at the exact same time - fake_virus_victims -= onecoughman + defacto_min = min(5, length(fake_virus_victims)) + if(defacto_min <= 0) + return + for(var/i in 1 to rand(1, defacto_min)) + var/mob/living/carbon/human/onecoughman = pick_n_take(fake_virus_victims) + if(prob(25))//1/4 odds to get a spooky message instead of coughing out loud + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), onecoughman, span_warning("[pick("Your head hurts.", "Your head pounds.")]")), rand(3 SECONDS, 15 SECONDS)) + else + addtimer(CALLBACK(onecoughman, TYPE_PROC_REF(/mob, emote), pick("cough", "sniff", "sneeze")), rand(3 SECONDS, 15 SECONDS))//deliver the message with a slightly randomized time interval so there arent multiple people coughing at the exact same time diff --git a/code/modules/events/ghost_role/abductor.dm b/code/modules/events/ghost_role/abductor.dm index 323bb8e9e0a7..317db90ec034 100644 --- a/code/modules/events/ghost_role/abductor.dm +++ b/code/modules/events/ghost_role/abductor.dm @@ -14,7 +14,7 @@ fakeable = FALSE //Nothing to fake here /datum/round_event/ghost_role/abductor/spawn_role() - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_ABDUCTOR, role = ROLE_ABDUCTOR, pic_source = /obj/item/melee/baton/abductor, role_name_text = role_name) + var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_ABDUCTOR, role = ROLE_ABDUCTOR, alert_pic = /obj/item/melee/baton/abductor, role_name_text = role_name) if(length(candidates) < 2) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/ghost_role/alien_infestation.dm b/code/modules/events/ghost_role/alien_infestation.dm index f627d10c07e5..9b35b2145dcf 100644 --- a/code/modules/events/ghost_role/alien_infestation.dm +++ b/code/modules/events/ghost_role/alien_infestation.dm @@ -1,11 +1,12 @@ /datum/round_event_control/antagonist/solo/from_ghosts/alien_infestation name = "Alien Infestation" typepath = /datum/round_event/antagonist/solo/ghost/alien_infestation - weight = 5 + weight = 3 + max_occurrences = 1 min_players = 35 //monkie edit: 10 to 35 (tg what the fuck) - earliest_start = 45 MINUTES //monkie edit: 20 to 90 + earliest_start = 60 MINUTES //monkie edit: 20 to 90 //dynamic_should_hijack = TRUE category = EVENT_CATEGORY_ENTITIES description = "A xenomorph larva spawns on a random vent." @@ -22,7 +23,6 @@ JOB_SECURITY_ASSISTANT, ) required_enemies = 5 - max_occurrences = 1 prompted_picking = TRUE /datum/round_event_control/antagonist/solo/from_ghosts/alien_infestation/can_spawn_event(players_amt, allow_magic = FALSE, fake_check = FALSE) //MONKESTATION ADDITION: fake_check = FALSE @@ -67,8 +67,9 @@ role = antag_flag, poll_time = 20 SECONDS, group = candidates, - pic_source = antag_datum, + alert_pic = /mob/living/carbon/alien/larva, role_name_text = lowertext(cast_control.name), + chat_text_border_icon = /mob/living/carbon/alien/larva ) var/list/weighted_candidates = return_antag_rep_weight(candidates) diff --git a/code/modules/events/ghost_role/blob.dm b/code/modules/events/ghost_role/blob.dm index 508a113852da..2cdf8174d63a 100644 --- a/code/modules/events/ghost_role/blob.dm +++ b/code/modules/events/ghost_role/blob.dm @@ -33,7 +33,7 @@ blob_icon.Blend("#9ACD32", ICON_MULTIPLY) blob_icon.Blend(icon('icons/mob/nonhuman-player/blob.dmi', "blob_core_overlay"), ICON_OVERLAY) var/image/blob_image = image(blob_icon) - var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_BLOB, role = ROLE_BLOB, pic_source = blob_image, role_name_text = role_name) + var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_BLOB, role = ROLE_BLOB, alert_pic = blob_image, role_name_text = role_name, chat_text_border_icon = blob_image) if(!length(candidates)) return NOT_ENOUGH_PLAYERS var/mob/dead/observer/new_blob = pick(candidates) diff --git a/code/modules/events/ghost_role/changeling_event.dm b/code/modules/events/ghost_role/changeling_event.dm index 08070f985945..69f7593d2056 100644 --- a/code/modules/events/ghost_role/changeling_event.dm +++ b/code/modules/events/ghost_role/changeling_event.dm @@ -21,7 +21,7 @@ fakeable = FALSE /datum/round_event/ghost_role/changeling/spawn_role() - var/list/mob/dead/observer/candidate = SSpolling.poll_ghost_candidates(check_jobban = ROLE_CHANGELING, role = ROLE_CHANGELING_MIDROUND, pic_source = /obj/item/melee/arm_blade, role_name_text = role_name) + var/list/mob/dead/observer/candidate = SSpolling.poll_ghost_candidates(check_jobban = ROLE_CHANGELING, role = ROLE_CHANGELING_MIDROUND, alert_pic = /obj/item/melee/arm_blade, role_name_text = role_name) if(!candidate.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/ghost_role/fugitive_event.dm b/code/modules/events/ghost_role/fugitive_event.dm index 8d41e0e4a539..a1e0fa09f857 100644 --- a/code/modules/events/ghost_role/fugitive_event.dm +++ b/code/modules/events/ghost_role/fugitive_event.dm @@ -20,7 +20,7 @@ if(isnull(landing_turf)) return MAP_ERROR var/list/possible_backstories = list() - var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_FUGITIVE, role = ROLE_FUGITIVE, pic_source = /obj/item/card/id/advanced/prisoner) + var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_FUGITIVE, role = ROLE_FUGITIVE, alert_pic = /obj/item/card/id/advanced/prisoner) if(!length(candidates)) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/ghost_role/morph_event.dm b/code/modules/events/ghost_role/morph_event.dm index 818c0cb66caf..1d350607b647 100644 --- a/code/modules/events/ghost_role/morph_event.dm +++ b/code/modules/events/ghost_role/morph_event.dm @@ -13,7 +13,7 @@ role_name = "morphling" /datum/round_event/ghost_role/morph/spawn_role() - var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_MORPH, pic_source = /mob/living/basic/morph, role_name_text = "morph") + var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_MORPH, alert_pic = /mob/living/basic/morph, role_name_text = "morph") if(!length(candidates)) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/ghost_role/nightmare.dm b/code/modules/events/ghost_role/nightmare.dm index 8df00041de44..4ee2c9f3d9eb 100644 --- a/code/modules/events/ghost_role/nightmare.dm +++ b/code/modules/events/ghost_role/nightmare.dm @@ -20,7 +20,7 @@ role = ROLE_NIGHTMARE, check_jobban = ROLE_NIGHTMARE, poll_time = 20 SECONDS, - pic_source = /datum/antagonist/nightmare, + alert_pic = /datum/antagonist/nightmare, role_name_text = "nightmare" ) if(!length(candidates)) diff --git a/code/modules/events/ghost_role/operative.dm b/code/modules/events/ghost_role/operative.dm index 628901d068cc..98ba2da344f4 100644 --- a/code/modules/events/ghost_role/operative.dm +++ b/code/modules/events/ghost_role/operative.dm @@ -12,7 +12,7 @@ fakeable = FALSE /datum/round_event/ghost_role/operative/spawn_role() - var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_OPERATIVE, role = ROLE_LONE_OPERATIVE, pic_source = /obj/machinery/nuclearbomb) + var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_OPERATIVE, role = ROLE_LONE_OPERATIVE, alert_pic = /obj/machinery/nuclearbomb) if(!length(candidates)) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/ghost_role/revenant_event.dm b/code/modules/events/ghost_role/revenant_event.dm index 5a8d4e20734d..ee1bb5dd5927 100644 --- a/code/modules/events/ghost_role/revenant_event.dm +++ b/code/modules/events/ghost_role/revenant_event.dm @@ -29,7 +29,7 @@ message_admins("Event attempted to spawn a revenant, but there were only [deadMobs]/[REVENANT_SPAWN_THRESHOLD] dead mobs.") return WAITING_FOR_SOMETHING - var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_REVENANT, role = ROLE_REVENANT, pic_source = /mob/living/basic/revenant) + var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_REVENANT, role = ROLE_REVENANT, alert_pic = /mob/living/basic/revenant) if(!length(candidates)) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/ghost_role/sentience.dm b/code/modules/events/ghost_role/sentience.dm index c39ec0ffcc14..923db849ab1d 100644 --- a/code/modules/events/ghost_role/sentience.dm +++ b/code/modules/events/ghost_role/sentience.dm @@ -53,7 +53,7 @@ GLOBAL_LIST_INIT(high_priority_sentience, typecacheof(list( candidates = SSpolling.poll_ghost_candidates( "Would you like to be a random animal?", role = ROLE_SENTIENCE, - pic_source = /obj/item/slimepotion/slime/sentience, + alert_pic = /obj/item/slimepotion/slime/sentience, role_name_text = role_name ) diff --git a/code/modules/events/ghost_role/sentient_disease.dm b/code/modules/events/ghost_role/sentient_disease.dm index ed2490414604..55ff1be2da0f 100644 --- a/code/modules/events/ghost_role/sentient_disease.dm +++ b/code/modules/events/ghost_role/sentient_disease.dm @@ -14,7 +14,7 @@ role_name = "sentient disease" /datum/round_event/ghost_role/sentient_disease/spawn_role() - var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_SENTIENT_DISEASE, role = ROLE_SENTIENT_DISEASE, pic_source = /obj/structure/sign/warning/biohazard, role_name_text = role_name) + var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_SENTIENT_DISEASE, role = ROLE_SENTIENT_DISEASE, alert_pic = /obj/structure/sign/warning/biohazard, role_name_text = role_name) if(!length(candidates)) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/ghost_role/slaughter_event.dm b/code/modules/events/ghost_role/slaughter_event.dm index 150f86194926..48f2955cd705 100644 --- a/code/modules/events/ghost_role/slaughter_event.dm +++ b/code/modules/events/ghost_role/slaughter_event.dm @@ -16,7 +16,7 @@ role_name = "slaughter demon" /datum/round_event/ghost_role/slaughter/spawn_role() - var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_SLAUGHTER_DEMON, pic_source = /mob/living/basic/demon/slaughter, role_name_text = role_name) + var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_SLAUGHTER_DEMON, alert_pic = /mob/living/basic/demon/slaughter, role_name_text = role_name) if(!length(candidates)) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/ghost_role/space_dragon.dm b/code/modules/events/ghost_role/space_dragon.dm index 6c9ac0d61876..8d09fee4f4f8 100644 --- a/code/modules/events/ghost_role/space_dragon.dm +++ b/code/modules/events/ghost_role/space_dragon.dm @@ -20,7 +20,7 @@ priority_announce("A large organic energy flux has been recorded near [station_name()], please stand by.", "Lifesign Alert") /datum/round_event/ghost_role/space_dragon/spawn_role() - var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_SPACE_DRAGON, role = ROLE_SPACE_DRAGON, pic_source = /mob/living/basic/space_dragon) + var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_SPACE_DRAGON, role = ROLE_SPACE_DRAGON, alert_pic = /mob/living/basic/space_dragon, chat_text_border_icon = /mob/living/basic/space_dragon) if(!length(candidates)) return NOT_ENOUGH_PLAYERS @@ -33,8 +33,6 @@ var/mob/living/basic/space_dragon/dragon = new (spawn_location) dragon.key = key - dragon.mind.set_assigned_role(SSjob.GetJobType(/datum/job/space_dragon)) - dragon.mind.special_role = ROLE_SPACE_DRAGON dragon.mind.add_antag_datum(/datum/antagonist/space_dragon) playsound(dragon, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1) message_admins("[ADMIN_LOOKUPFLW(dragon)] has been made into a Space Dragon by an event.") diff --git a/code/modules/events/ghost_role/space_ninja.dm b/code/modules/events/ghost_role/space_ninja.dm index 86f5e6c7a577..3e00f43040cd 100644 --- a/code/modules/events/ghost_role/space_ninja.dm +++ b/code/modules/events/ghost_role/space_ninja.dm @@ -19,7 +19,7 @@ return MAP_ERROR //selecting a candidate player - var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_NINJA, role = ROLE_NINJA, pic_source = /obj/item/energy_katana) + var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_NINJA, role = ROLE_NINJA, alert_pic = /obj/item/energy_katana) if(!length(candidates)) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/heart_attack.dm b/code/modules/events/heart_attack.dm index 0cdadfbc499f..5a06238e5746 100644 --- a/code/modules/events/heart_attack.dm +++ b/code/modules/events/heart_attack.dm @@ -32,7 +32,7 @@ for(var/mob/living/carbon/human/candidate in shuffle(GLOB.player_list)) if(candidate.stat == DEAD || HAS_TRAIT(candidate, TRAIT_CRITICAL_CONDITION) || !candidate.can_heartattack() || candidate.undergoing_cardiac_arrest()) continue - if(!(candidate.mind.assigned_role.job_flags & JOB_CREW_MEMBER))//only crewmembers can get one, a bit unfair for some ghost roles and it wastes the event + if(!(candidate.mind?.assigned_role?.job_flags & JOB_CREW_MEMBER))//only crewmembers can get one, a bit unfair for some ghost roles and it wastes the event continue if(candidate.satiety <= -60 && !candidate.has_status_effect(/datum/status_effect/exercised)) //Multiple junk food items recently //No foodmaxxing for the achievement heart_attack_candidates[candidate] = 3 diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index cad343f7debd..b3f8c3998c9a 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -84,7 +84,7 @@ priority_announce("Santa is coming to town!", "Unknown Transmission") /datum/round_event/santa/start() - var/list/candidates = SSpolling.poll_ghost_candidates("Santa is coming to town! Do you want to be Santa?", poll_time = 15 SECONDS, pic_source = /obj/item/clothing/head/costume/santa, role_name_text = "santa") + var/list/candidates = SSpolling.poll_ghost_candidates("Santa is coming to town! Do you want to be Santa?", poll_time = 15 SECONDS, alert_pic = /obj/item/clothing/head/costume/santa, role_name_text = "santa") if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) santa = new /mob/living/carbon/human(pick(GLOB.blobstart)) diff --git a/code/modules/events/portal_storm.dm b/code/modules/events/portal_storm.dm index 1edf99e3400d..5296814dfadd 100644 --- a/code/modules/events/portal_storm.dm +++ b/code/modules/events/portal_storm.dm @@ -64,10 +64,10 @@ number_of_hostiles += hostile_types[hostile] while(number_of_bosses > boss_spawn.len) - boss_spawn += get_random_station_turf() + boss_spawn += get_safe_random_station_turf() // monkestation edit: use [get_safe_random_station_turf] so they don't spawn in weird stupid places while(number_of_hostiles > hostiles_spawn.len) - hostiles_spawn += get_random_station_turf() + hostiles_spawn += get_safe_random_station_turf() // monkestation edit: use [get_safe_random_station_turf] so they don't spawn in weird stupid places next_boss_spawn = start_when + CEILING(2 * number_of_hostiles / number_of_bosses, 1) setup = TRUE //MONKESTATION ADDITION @@ -81,7 +81,7 @@ sound_to_playing_players('sound/magic/lightningbolt.ogg') /datum/round_event/portal_storm/tick() - spawn_effects(get_random_station_turf()) + spawn_effects(get_safe_random_station_turf()) // monkestation edit: use [get_safe_random_station_turf] so they don't spawn in weird stupid places if(spawn_hostile() && length(hostile_types)) var/type = pick(hostile_types) diff --git a/code/modules/events/radiation_leak.dm b/code/modules/events/radiation_leak.dm index aaa71540c3fb..2bc5f565a1b8 100644 --- a/code/modules/events/radiation_leak.dm +++ b/code/modules/events/radiation_leak.dm @@ -46,8 +46,8 @@ // We found something, we can just return now picked_machine_ref = WEAKREF(sick_device) + setup = TRUE //MONKESTATION ADDITION return - setup = TRUE //MONKESTATION ADDITION /datum/round_event/radiation_leak/announce(fake) var/obj/machinery/the_source_of_our_problems = picked_machine_ref?.resolve() diff --git a/code/modules/events/sandstorm.dm b/code/modules/events/sandstorm.dm index 7a308fc457a0..0c8efae91b3b 100644 --- a/code/modules/events/sandstorm.dm +++ b/code/modules/events/sandstorm.dm @@ -36,6 +36,7 @@ if(!start_side) start_side = pick(GLOB.cardinals) + /* monkestation start: use normal direction names var/start_side_text = "unknown" switch(start_side) if(NORTH) @@ -50,8 +51,10 @@ stack_trace("Sandstorm event given [start_side] as unrecognized direction. Cancelling event...") kill() return + monkestation end */ - priority_announce("A large wave of space dust is approaching from the [start_side_text] side of the station. \ + // monkestation edit: use normal direction names + priority_announce("A large wave of space dust is approaching from the [dir2text(start_side)] side of the station. \ Impact is expected in the next two minutes. All employees are encouranged to assist in repairs and damage mitigation if possible.", "Collision Emergency Alert") /datum/round_event/sandstorm/tick() diff --git a/code/modules/events/scrubber_overflow.dm b/code/modules/events/scrubber_overflow.dm index 4b225aae932d..baa07d7e15cb 100644 --- a/code/modules/events/scrubber_overflow.dm +++ b/code/modules/events/scrubber_overflow.dm @@ -105,6 +105,7 @@ /datum/round_event/scrubber_overflow/proc/get_overflowing_reagent(dangerous) return dangerous ? get_random_reagent_id() : pick(safer_chems) +/* monkestation edit: replaced in [monkestation/code/modules/events/scrubber_overflow.dm] /datum/round_event/scrubber_overflow/start() for(var/obj/machinery/atmospherics/components/unary/vent_scrubber/vent as anything in scrubbers) if(!vent.loc) @@ -124,6 +125,7 @@ dispensed_reagent.create_foam(/datum/effect_system/fluid_spread/foam/short, reagents_amount) CHECK_TICK +monkestation end */ /datum/round_event_control/scrubber_overflow/threatening name = "Scrubber Overflow: Threatening" diff --git a/code/modules/events/shuttle_loan/shuttle_loan_event.dm b/code/modules/events/shuttle_loan/shuttle_loan_event.dm index c5d45b204364..026210d7d866 100644 --- a/code/modules/events/shuttle_loan/shuttle_loan_event.dm +++ b/code/modules/events/shuttle_loan/shuttle_loan_event.dm @@ -75,7 +75,7 @@ var/list/empty_shuttle_turfs = list() var/list/area/shuttle/shuttle_areas = SSshuttle.supply.shuttle_areas for(var/area/shuttle/shuttle_area as anything in shuttle_areas) - for(var/turf/open/floor/shuttle_turf in shuttle_area) + for(var/turf/open/floor/shuttle_turf in shuttle_area.get_turfs_from_all_zlevels()) if(shuttle_turf.is_blocked_turf()) continue empty_shuttle_turfs += shuttle_turf diff --git a/code/modules/events/space_vines/vine_event.dm b/code/modules/events/space_vines/vine_event.dm index c3d6e03754a0..257e29c3b3d8 100644 --- a/code/modules/events/space_vines/vine_event.dm +++ b/code/modules/events/space_vines/vine_event.dm @@ -38,7 +38,7 @@ var/obj/structure/spacevine/vine = new() for(var/area/station/hallway/area in GLOB.areas) - for(var/turf/open/floor in area.get_contained_turfs()) + for(var/turf/open/floor in area.get_turfs_from_all_zlevels()) if(floor.Enter(vine)) turfs += floor diff --git a/code/modules/events/supermatter_surge.dm b/code/modules/events/supermatter_surge.dm index b483503fc0fc..a10e60dad2d5 100644 --- a/code/modules/events/supermatter_surge.dm +++ b/code/modules/events/supermatter_surge.dm @@ -79,6 +79,7 @@ surge_class = rand(SURGE_SEVERITY_MIN, SURGE_SEVERITY_MAX) end_when = rand(SURGE_DURATION_MIN, SURGE_DURATION_MAX) + setup = TRUE //monkestation addition /datum/round_event/supermatter_surge/announce(fake) priority_announce("The Crystal Integrity Monitoring System has detected unusual atmospheric properties in the supermatter chamber, energy output from the supermatter crystal has increased significantly. Engineering intervention is required to stabilize the engine.", "Class [surge_class] Supermatter Surge Alert", 'sound/machines/engine_alert3.ogg') diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm index cc63c15cda5d..68e74ac30143 100644 --- a/code/modules/events/wizard/curseditems.dm +++ b/code/modules/events/wizard/curseditems.dm @@ -1,3 +1,16 @@ +/// Turns them into a psuedo-wizard costume. +#define WIZARD_MIMICRY "wizardmimic" +/// Gives them a cursed sword. +#define CURSED_SWORDS "swords" +/// Gives them a blunt that they need to smoke +#define BIG_FAT_DOOBIE "bigfatdoobie" +/// Gives them boxing gloves and a luchador mask +#define BOXING "boxing" +/// Gives them a chameleon mask +#define VOICE_MODULATORS "voicemodulators" +/// Gives them kitty ears and also modifies their gender to FEMALE +#define CATGIRLS_2015 "catgirls2015" + /datum/round_event_control/wizard/cursed_items //fashion disasters name = "Cursed Items" weight = 3 @@ -11,51 +24,72 @@ //item you want to equip to the hand, and set its slots_flags = null. Only items equiped to hands need do this. /datum/round_event/wizard/cursed_items/start() - var/item_set = pick("wizardmimic", "swords", "bigfatdoobie", "boxing", "voicemodulators", "catgirls2015") + var/item_set = pick( + BIG_FAT_DOOBIE, + BOXING, + CATGIRLS_2015, + CURSED_SWORDS, + VOICE_MODULATORS, + WIZARD_MIMICRY, + ) var/list/loadout[SLOTS_AMT] - var/ruins_spaceworthiness - var/ruins_wizard_loadout + var/ruins_spaceworthiness = FALSE + var/ruins_wizard_loadout = FALSE switch(item_set) - if("wizardmimic") - loadout[ITEM_SLOT_OCLOTHING] = /obj/item/clothing/suit/wizrobe - loadout[ITEM_SLOT_FEET] = /obj/item/clothing/shoes/sandal/magic - loadout[ITEM_SLOT_HEAD] = /obj/item/clothing/head/wizard - ruins_spaceworthiness = 1 - if("swords") - loadout[ITEM_SLOT_HANDS] = /obj/item/katana/cursed - if("bigfatdoobie") + if(BIG_FAT_DOOBIE) loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/cigarette/rollie/trippy - ruins_spaceworthiness = 1 - if("boxing") + ruins_spaceworthiness = TRUE + if(BOXING) loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/luchador loadout[ITEM_SLOT_GLOVES] = /obj/item/clothing/gloves/boxing - ruins_spaceworthiness = 1 - if("voicemodulators") - loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/chameleon - if("catgirls2015") + ruins_spaceworthiness = TRUE + if(CATGIRLS_2015) loadout[ITEM_SLOT_HEAD] = /obj/item/clothing/head/costume/kitty - ruins_spaceworthiness = 1 - ruins_wizard_loadout = 1 + ruins_spaceworthiness = TRUE + ruins_wizard_loadout = TRUE + if(CURSED_SWORDS) + loadout[ITEM_SLOT_HANDS] = /obj/item/katana/cursed + if(VOICE_MODULATORS) + loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/chameleon + if(WIZARD_MIMICRY) + loadout[ITEM_SLOT_OCLOTHING] = /obj/item/clothing/suit/wizrobe + loadout[ITEM_SLOT_FEET] = /obj/item/clothing/shoes/sandal/magic + loadout[ITEM_SLOT_HEAD] = /obj/item/clothing/head/wizard + ruins_spaceworthiness = TRUE - for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - if(ruins_spaceworthiness && !is_station_level(H.z) || isspaceturf(H.loc) || isplasmaman(H)) + var/list/mob/living/carbon/human/victims = list() + + for(var/mob/living/carbon/human/target in GLOB.alive_mob_list) + if(isspaceturf(target.loc) || !isnull(target.dna.species.outfit_important_for_life) || (ruins_spaceworthiness && !is_station_level(target.z))) continue //#savetheminers - if(ruins_wizard_loadout && IS_WIZARD(H)) + if(ruins_wizard_loadout && IS_WIZARD(target)) continue - if(item_set == "catgirls2015") //Wizard code means never having to say you're sorry - H.gender = FEMALE - for(var/i in 1 to loadout.len) - if(loadout[i]) - var/obj/item/J = loadout[i] - var/obj/item/I = new J //dumb but required because of byond throwing a fit anytime new gets too close to a list - H.dropItemToGround(H.get_item_by_slot(i), TRUE) - H.equip_to_slot_or_del(I, i) - ADD_TRAIT(I, TRAIT_NODROP, CURSED_ITEM_TRAIT(I)) - I.item_flags |= DROPDEL - I.name = "cursed " + I.name - - for(var/mob/living/carbon/human/victim in GLOB.alive_mob_list) + if(item_set == CATGIRLS_2015) //Wizard code means never having to say you're sorry + target.gender = FEMALE + for(var/iterable in 1 to loadout.len) + if(!loadout[iterable]) + continue + + var/obj/item/item_type = loadout[iterable] + var/obj/item/thing = new item_type //dumb but required because of byond throwing a fit anytime new gets too close to a list + + target.dropItemToGround(target.get_item_by_slot(iterable), TRUE) + target.equip_to_slot_or_del(thing, iterable) + ADD_TRAIT(thing, TRAIT_NODROP, CURSED_ITEM_TRAIT(thing)) + thing.item_flags |= DROPDEL + thing.name = "cursed " + thing.name + + victims += target + + for(var/mob/living/carbon/human/victim as anything in victims) var/datum/effect_system/fluid_spread/smoke/smoke = new smoke.set_up(0, holder = victim, location = victim.loc) smoke.start() + +#undef BIG_FAT_DOOBIE +#undef BOXING +#undef CATGIRLS_2015 +#undef CURSED_SWORDS +#undef VOICE_MODULATORS +#undef WIZARD_MIMICRY diff --git a/code/modules/events/wizard/imposter.dm b/code/modules/events/wizard/imposter.dm index 86e5e03e3113..c2fb5472bdd8 100644 --- a/code/modules/events/wizard/imposter.dm +++ b/code/modules/events/wizard/imposter.dm @@ -13,27 +13,24 @@ if(!ishuman(M.current)) continue var/mob/living/carbon/human/W = M.current - var/list/candidates = SSpolling.poll_ghost_candidates("Would you like to be an imposter wizard?", check_jobban = ROLE_WIZARD, pic_source = /obj/item/clothing/head/wizard, role_name_text = "imposter wizard") - if(!length(candidates)) + var/mob/chosen_one = SSpolling.poll_ghost_candidates("Would you like to be an [span_notice("imposter wizard")]?", check_jobban = ROLE_WIZARD, alert_pic = /obj/item/clothing/head/wizard, jump_target = W, role_name_text = "imposter wizard", amount_to_pick = 1) + if(isnull(chosen_one)) return //Sad Trombone - var/mob/dead/observer/C = pick(candidates) - new /obj/effect/particle_effect/fluid/smoke(W.loc) - var/mob/living/carbon/human/I = new /mob/living/carbon/human(W.loc) W.dna.transfer_identity(I, transfer_SE=1) I.real_name = I.dna.real_name I.name = I.dna.real_name I.updateappearance(mutcolor_update=1) I.domutcheck() - I.key = C.key + I.key = chosen_one.key var/datum/antagonist/wizard/master = M.has_antag_datum(/datum/antagonist/wizard) if(!master.wiz_team) master.create_wiz_team() var/datum/antagonist/wizard/apprentice/imposter/imposter = new() imposter.master = M imposter.wiz_team = master.wiz_team - master.wiz_team.add_member(I.mind) + master.wiz_team.add_member(imposter) I.mind.add_antag_datum(imposter) I.mind.special_role = "imposter" I.log_message("is an imposter!", LOG_ATTACK, color="red") //? diff --git a/code/modules/experisci/experiment/handlers/experiment_handler.dm b/code/modules/experisci/experiment/handlers/experiment_handler.dm index b38ad1579c2f..0c1a838bb336 100644 --- a/code/modules/experisci/experiment/handlers/experiment_handler.dm +++ b/code/modules/experisci/experiment/handlers/experiment_handler.dm @@ -75,7 +75,7 @@ GLOB.experiment_handlers += src -/datum/component/experiment_handler/Destroy(force, silent) +/datum/component/experiment_handler/Destroy(force) . = ..() GLOB.experiment_handlers -= src diff --git a/code/modules/explorer_drone/exploration_events/resource.dm b/code/modules/explorer_drone/exploration_events/resource.dm index aa334f5685e1..01f8c083c63b 100644 --- a/code/modules/explorer_drone/exploration_events/resource.dm +++ b/code/modules/explorer_drone/exploration_events/resource.dm @@ -242,8 +242,8 @@ var/mob/living/carbon/human/head_species_source = new head_species_source.set_species(/datum/species/skeleton) head_species_source.real_name = "spaced locker victim" - var/obj/item/bodypart/head/skeleton_head = new - skeleton_head.update_limb(FALSE,head_species_source) + var/obj/item/bodypart/head/skeleton_head = head_species_source.get_bodypart(BODY_ZONE_HEAD) + skeleton_head.drop_limb(FALSE) qdel(head_species_source) drone.try_transfer(skeleton_head) diff --git a/code/modules/explorer_drone/manager.dm b/code/modules/explorer_drone/manager.dm index 74a972216a41..310edb970be1 100644 --- a/code/modules/explorer_drone/manager.dm +++ b/code/modules/explorer_drone/manager.dm @@ -137,7 +137,7 @@ /datum/adventure_browser/ui_assets(mob/user) return list(get_asset_datum(/datum/asset/simple/adventure)) -/datum/adventure_browser/Destroy(force, ...) +/datum/adventure_browser/Destroy(force) . = ..() QDEL_NULL(temp_adventure) diff --git a/code/modules/explorer_drone/scanner_array.dm b/code/modules/explorer_drone/scanner_array.dm index b47ebebad64e..1d857904ee7d 100644 --- a/code/modules/explorer_drone/scanner_array.dm +++ b/code/modules/explorer_drone/scanner_array.dm @@ -71,7 +71,7 @@ GLOBAL_LIST_INIT(scan_conditions,init_scan_conditions()) SEND_SIGNAL(src,COMSIG_EXOSCAN_INTERRUPTED) qdel(src) -/datum/exoscan/Destroy(force, ...) +/datum/exoscan/Destroy(force) . = ..() deltimer(scan_timer) diff --git a/code/modules/fishing/fish/fish_traits.dm b/code/modules/fishing/fish/fish_traits.dm index 63de4cfdf1dc..f247d11ef848 100644 --- a/code/modules/fishing/fish/fish_traits.dm +++ b/code/modules/fishing/fish/fish_traits.dm @@ -70,7 +70,7 @@ GLOBAL_LIST_INIT(fish_traits, init_subtypes_w_path_keys(/datum/fish_trait, list( if(!rod.bait) .[MULTIPLICATIVE_FISHING_MOD] = 0 return - if(HAS_TRAIT(rod.bait, OMNI_BAIT_TRAIT)) + if(HAS_TRAIT(rod.bait, TRAIT_OMNI_BAIT)) return if(HAS_TRAIT(rod.bait, TRAIT_GOOD_QUALITY_BAIT) || HAS_TRAIT(rod.bait, TRAIT_GREAT_QUALITY_BAIT)) .[MULTIPLICATIVE_FISHING_MOD] = 0 @@ -115,7 +115,7 @@ GLOBAL_LIST_INIT(fish_traits, init_subtypes_w_path_keys(/datum/fish_trait, list( if(!rod.bait) .[MULTIPLICATIVE_FISHING_MOD] = 0 return - if(HAS_TRAIT(rod.bait, OMNI_BAIT_TRAIT)) + if(HAS_TRAIT(rod.bait, TRAIT_OMNI_BAIT)) return if(!istype(rod.bait, /obj/item/food)) .[MULTIPLICATIVE_FISHING_MOD] = 0 @@ -134,7 +134,7 @@ GLOBAL_LIST_INIT(fish_traits, init_subtypes_w_path_keys(/datum/fish_trait, list( if(!rod.bait) .[MULTIPLICATIVE_FISHING_MOD] = 0 return - if(HAS_TRAIT(rod.bait, OMNI_BAIT_TRAIT)) + if(HAS_TRAIT(rod.bait, TRAIT_OMNI_BAIT)) return if(!istype(rod.bait, /obj/item/food/grown)) .[MULTIPLICATIVE_FISHING_MOD] = 0 diff --git a/code/modules/fishing/fishing_minigame.dm b/code/modules/fishing/fishing_minigame.dm index 8384dccea015..01d69da2229a 100644 --- a/code/modules/fishing/fishing_minigame.dm +++ b/code/modules/fishing/fishing_minigame.dm @@ -199,7 +199,7 @@ bait_height -= difficulty bait_pixel_height = round(MINIGAME_BAIT_HEIGHT * (bait_height/initial(bait_height)), 1) -/datum/fishing_challenge/Destroy(force, ...) +/datum/fishing_challenge/Destroy(force) if(!completed) complete(win = FALSE) if(fishing_line) diff --git a/code/modules/fishing/sources/_fish_source.dm b/code/modules/fishing/sources/_fish_source.dm index 3dc673d80394..7a9b5af47e7f 100644 --- a/code/modules/fishing/sources/_fish_source.dm +++ b/code/modules/fishing/sources/_fish_source.dm @@ -254,7 +254,7 @@ GLOBAL_LIST(fishing_property_cache) final_table[result] = round(final_table[result] * 3.5, 1) else if(HAS_TRAIT(bait, TRAIT_BASIC_QUALITY_BAIT)) final_table[result] *= 2 - if(!HAS_TRAIT(bait, OMNI_BAIT_TRAIT)) + if(!HAS_TRAIT(bait, TRAIT_OMNI_BAIT)) //Bait matching likes doubles the chance var/list/fav_bait = fish_list_properties[result][NAMEOF(caught_fish, favorite_bait)] for(var/bait_identifer in fav_bait) diff --git a/code/modules/food_and_drinks/machinery/deep_fryer.dm b/code/modules/food_and_drinks/machinery/deep_fryer.dm index be5c84fa7f79..3d3e4a58c0d3 100644 --- a/code/modules/food_and_drinks/machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/machinery/deep_fryer.dm @@ -11,6 +11,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( /obj/item/delivery, /obj/item/his_grace, /obj/item/bodybag/bluespace, + /obj/item/mod/control, ))) /obj/machinery/deepfryer @@ -25,7 +26,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( circuit = /obj/item/circuitboard/machine/deep_fryer /// What's being fried RIGHT NOW? - var/obj/item/frying + var/frying = FALSE /// How long the current object has been cooking for var/cook_time = 0 /// How much cooking oil is used per process @@ -51,19 +52,13 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( /obj/machinery/deepfryer/Initialize(mapload) . = ..() + basket = new(src) create_reagents(50, OPENCONTAINER) reagents.add_reagent(/datum/reagent/consumable/cooking_oil, 25) fry_loop = new(src, FALSE) /obj/machinery/deepfryer/Destroy() QDEL_NULL(fry_loop) - QDEL_NULL(frying) - return ..() - -/obj/machinery/deepfryer/deconstruct(disassembled) - // This handles nulling out frying via exited - if(frying) - frying.forceMove(drop_location()) return ..() /obj/machinery/deepfryer/RefreshParts() @@ -76,8 +71,6 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( /obj/machinery/deepfryer/examine(mob/user) . = ..() - if(frying) - . += "You can make out \a [frying] in the oil." if(in_range(user, src) || isobserver(user)) . += span_notice("The status display reads: Frying at [fry_speed*100]% speed.
    Using [oil_use] units of oil per second.") @@ -109,7 +102,10 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( to_chat(user, span_userdanger("Your cooking skills are not up to the legendary Doublefry technique.")) return // Handle opening up the fryer with tools - if(default_deconstruction_screwdriver(user, "fryer_off", "fryer_off", weapon)) //where's the open maint panel icon?! + var/fryer_icon = "fryer_off" + if(!basket) + fryer_icon = "fryer" + if(default_deconstruction_screwdriver(user, fryer_icon, fryer_icon, weapon)) //where's the open maint panel icon?! return else // So we skip the attack animation @@ -122,13 +118,10 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( || HAS_TRAIT(weapon, TRAIT_NODROP) \ || (weapon.item_flags & (ABSTRACT|DROPDEL|HAND_ITEM))) return ..() - // Do the frying. - else if(!frying && user.transferItemToLoc(weapon, src)) - start_fry(weapon, user) - return return ..() +/* /obj/machinery/deepfryer/process(seconds_per_tick) ..() var/datum/reagent/consumable/cooking_oil/frying_oil = reagents.has_reagent(/datum/reagent/consumable/cooking_oil) @@ -149,47 +142,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( visible_message(span_warning("[src] emits an acrid smell!")) use_power(active_power_usage) - -/obj/machinery/deepfryer/Exited(atom/movable/gone, direction) - . = ..() - if(gone == frying) - reset_frying() - -/obj/machinery/deepfryer/handle_atom_del(atom/deleting_atom) - . = ..() - if(deleting_atom == frying) - reset_frying() - -/obj/machinery/deepfryer/proc/reset_frying() - if(!QDELETED(frying)) - frying.AddElement(/datum/element/fried_item, cook_time) - - frying = null - frying_fried = FALSE - frying_burnt = FALSE - fry_loop.stop() - cook_time = 0 - icon_state = "fryer_off" - -/obj/machinery/deepfryer/proc/start_fry(obj/item/frying_item, mob/user) - to_chat(user, span_notice("You put [frying_item] into [src].")) - if(istype(frying_item, /obj/item/freeze_cube)) - log_bomber(user, "put a freeze cube in a", src) - visible_message(span_userdanger("[src] starts glowing... Oh no...")) - playsound(src, 'sound/effects/pray_chaplain.ogg', 100) - add_filter("entropic_ray", 10, list("type" = "rays", "size" = 35, "color" = COLOR_VIVID_YELLOW)) - addtimer(CALLBACK(src, PROC_REF(blow_up)), 5 SECONDS) - - frying = frying_item - // Give them reagents to put frying oil in - if(isnull(frying.reagents)) - frying.create_reagents(50, INJECTABLE) - if(user.mind) - ADD_TRAIT(frying, TRAIT_FOOD_CHEF_MADE, REF(user.mind)) - SEND_SIGNAL(frying, COMSIG_ITEM_ENTERED_FRYER) - - icon_state = "fryer_on" - fry_loop.start() +*/ /obj/machinery/deepfryer/proc/blow_up() visible_message(span_userdanger("[src] blows up from the entropic reaction!")) @@ -201,10 +154,12 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( /obj/machinery/deepfryer/attack_hand(mob/living/user, list/modifiers) if(frying) - to_chat(user, span_notice("You eject [frying] from [src].")) - frying.forceMove(drop_location()) - if(Adjacent(user) && !issilicon(user)) - user.put_in_hands(frying) + frying = FALSE + reset_frying(user) + if(Adjacent(user) && !issilicon(user) && basket) + user.put_in_hands(basket) + basket = null + icon_state = "fryer" return else if(user.pulling && iscarbon(user.pulling) && reagents.total_volume) @@ -232,6 +187,11 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( reagents.remove_all((reagents.total_volume/2)) dunking_target.Paralyze(60) user.changeNext_move(CLICK_CD_MELEE) + if(Adjacent(user) && !issilicon(user) && basket) + user.put_in_hands(basket) + basket = null + icon_state = "fryer" + return ..() #undef DEEPFRYER_COOKTIME diff --git a/code/modules/food_and_drinks/machinery/microwave.dm b/code/modules/food_and_drinks/machinery/microwave.dm index 162c9e40e41a..521af2e3618b 100644 --- a/code/modules/food_and_drinks/machinery/microwave.dm +++ b/code/modules/food_and_drinks/machinery/microwave.dm @@ -68,7 +68,7 @@ /obj/machinery/microwave/on_deconstruction() - eject() + // eject() // monkestation edit: overrided in module return ..() /obj/machinery/microwave/Destroy() @@ -360,6 +360,11 @@ usr.set_machine(src) switch(choice) if("eject") + // monkestation edit start: microwave "enhancements" + if (!can_eject) + balloon_alert(user, "the lock is stuck!") + return + // monkestation end eject() if("use") cook(user) @@ -466,20 +471,38 @@ . = ..() if((machine_stat & NOPOWER) && operating) pre_fail() - eject() + eject(force = TRUE) // monkestation edit: microwave "enhancements" /obj/machinery/microwave/proc/loop_finish(mob/cooker) operating = FALSE var/metal_amount = 0 + var/shouldnt_open = FALSE // monkestation edit: microwave "enhancements" + var/dont_eject = FALSE // monkestation edit: microwave "enhancements" for(var/obj/item/cooked_item in ingredients) + // monkestation original start + // var/sigreturn = cooked_item.microwave_act(src, cooker, randomize_pixel_offset = ingredients.len) + // if(sigreturn & COMPONENT_MICROWAVE_SUCCESS) + // if(isstack(cooked_item)) + // var/obj/item/stack/cooked_stack = cooked_item + // dirty += cooked_stack.amount + // else + // dirty++ + // monkestation original end + // monkestation start: microwave "enhancements" var/sigreturn = cooked_item.microwave_act(src, cooker, randomize_pixel_offset = ingredients.len) if(sigreturn & COMPONENT_MICROWAVE_SUCCESS) + var/should_dirty = !(sigreturn & COMPONENT_MICROWAVE_DONTDIRTY) if(isstack(cooked_item)) var/obj/item/stack/cooked_stack = cooked_item - dirty += cooked_stack.amount + if (should_dirty) dirty += cooked_stack.amount else - dirty++ + if (should_dirty) dirty++ + if (sigreturn & COMPONENT_MICROWAVE_DONTEJECT) + dont_eject = TRUE + if (sigreturn & COMPONENT_MICROWAVE_DONTOPEN) + shouldnt_open = TRUE + // monkestation end metal_amount += (cooked_item.custom_materials?[GET_MATERIAL_REF(/datum/material/iron)] || 0) @@ -493,10 +516,10 @@ broken = REALLY_BROKEN if(HAS_TRAIT(cooker, TRAIT_CURSED) || prob(max(metal_amount / 2, 33))) // If we're unlucky and have metal, we're guaranteed to explode explosion(src, heavy_impact_range = 1, light_impact_range = 2) - else + else if (!dont_eject) // monkestation edit: microwave "enhancements" - + if (!dont_eject) dump_inventory_contents() - after_finish_loop() + after_finish_loop(dontopen = shouldnt_open) // monkestation edit: microwave "enhancements" - () -> (dontopen = shouldnt_open) /obj/machinery/microwave/proc/pre_fail() broken = REALLY_BROKEN diff --git a/code/modules/food_and_drinks/machinery/oven.dm b/code/modules/food_and_drinks/machinery/oven.dm index 077d775a4428..130a78142397 100644 --- a/code/modules/food_and_drinks/machinery/oven.dm +++ b/code/modules/food_and_drinks/machinery/oven.dm @@ -139,6 +139,17 @@ . = ..() open = !open if(open) + timer_duration = world.time - timer_laststart + deltimer(oven_timer) + oven_timer = null + if(used_tray) + var/obj/item/reagent_containers/cooking_container/located = locate(/obj/item/reagent_containers/cooking_container) in used_tray.contents + if(located) + if(user && user.Adjacent(src)) + located.process_item(src, user, lower_quality_on_fail=CHEWIN_BASE_QUAL_REDUCTION, send_message=TRUE) + else + located.process_item(src, user, lower_quality_on_fail=CHEWIN_BASE_QUAL_REDUCTION) + playsound(src, 'sound/machines/oven/oven_open.ogg', 75, TRUE) set_smoke_state(OVEN_SMOKE_STATE_NONE) to_chat(user, span_notice("You open [src].")) @@ -146,6 +157,8 @@ if(used_tray) used_tray.vis_flags &= ~VIS_HIDE else + timer_laststart = world.time + oven_timer = addtimer(CALLBACK(src, PROC_REF(go_off_queen)), timer_duration, TIMER_UNIQUE | TIMER_STOPPABLE) playsound(src, 'sound/machines/oven/oven_close.ogg', 75, TRUE) to_chat(user, span_notice("You close [src].")) if(used_tray) diff --git a/code/modules/food_and_drinks/machinery/processor.dm b/code/modules/food_and_drinks/machinery/processor.dm index 7ff1e07db07d..627ff85fca0f 100644 --- a/code/modules/food_and_drinks/machinery/processor.dm +++ b/code/modules/food_and_drinks/machinery/processor.dm @@ -153,9 +153,12 @@ log_admin("DEBUG: [movable_input] in processor doesn't have a suitable recipe. How did it get in there? Please report it immediately!!!") continue total_time += recipe.time - var/offset = prob(50) ? -2 : 2 - animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = (total_time / rating_speed)*5) //start shaking - sleep(total_time / rating_speed) + + var/duration = (total_time / rating_speed) + INVOKE_ASYNC(src, TYPE_PROC_REF(/atom, Shake), 1, 0, duration) + addtimer(CALLBACK(src, PROC_REF(complete_processing)), duration) + +/obj/machinery/processor/proc/complete_processing() for(var/atom/movable/content_item in processor_contents) var/datum/food_processor_process/recipe = PROCESSOR_SELECT_RECIPE(content_item) if (!recipe) diff --git a/code/modules/food_and_drinks/machinery/stove_component.dm b/code/modules/food_and_drinks/machinery/stove_component.dm index b148e27f01b0..9ccdf8fc2302 100644 --- a/code/modules/food_and_drinks/machinery/stove_component.dm +++ b/code/modules/food_and_drinks/machinery/stove_component.dm @@ -23,6 +23,12 @@ var/container_y = 8 /// Modifies how much temperature is exposed to the reagents, and in turn modifies how fast the reagents are heated. var/heat_coefficient = 0.033 + ///our stove temperature + var/temperature = J_LO + ///list of temperatures + var/list/temperatures = list(J_LO, J_MED, J_HI) + ///our temp index + var/temp_index = 1 /datum/component/stove/Initialize(container_x = 0, container_y = 8, obj/item/spawn_container) if(!ismachinery(parent)) @@ -37,6 +43,7 @@ add_container(spawn_container) /datum/component/stove/RegisterWithParent() + RegisterSignal(parent, COMSIG_CLICK_ALT, PROC_REF(switch_temp)) RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND_SECONDARY, PROC_REF(on_attack_hand_secondary)) RegisterSignal(parent, COMSIG_ATOM_EXITED, PROC_REF(on_exited)) @@ -73,6 +80,7 @@ turn_off() return + SEND_SIGNAL(container, COMSIG_STOVE_PROCESS, temperature, seconds_per_tick, parent) container?.reagents.expose_temperature(SOUP_BURN_TEMP + 80, heat_coefficient) real_parent.use_power(real_parent.active_power_usage) @@ -165,6 +173,7 @@ /datum/component/stove/proc/on_requesting_context(obj/machinery/source, list/context, obj/item/held_item) SIGNAL_HANDLER + context[SCREENTIP_CONTEXT_ALT_LMB] = "Change Temperature" if(isnull(held_item)) context[SCREENTIP_CONTEXT_RMB] = "Turn [on ? "off":"on"] burner" return CONTEXTUAL_SCREENTIP_SET @@ -173,6 +182,14 @@ context[SCREENTIP_CONTEXT_LMB] = "Place container" return CONTEXTUAL_SCREENTIP_SET +/datum/component/stove/proc/switch_temp(datum/source, atom/target) + temp_index++ + if(temp_index > length(temperatures)) + temp_index = 1 + temperature = temperatures[temp_index] + var/atom/movable/parent_atom = parent + parent_atom.visible_message("Temperature set to [temperature]") + /datum/component/stove/proc/on_examine(obj/machinery/source, mob/user, list/examine_list) SIGNAL_HANDLER diff --git a/code/modules/food_and_drinks/plate.dm b/code/modules/food_and_drinks/plate.dm index 083a9c5236e1..46c24742512d 100644 --- a/code/modules/food_and_drinks/plate.dm +++ b/code/modules/food_and_drinks/plate.dm @@ -14,7 +14,7 @@ var/placement_offset = -15 /obj/item/plate/attackby(obj/item/I, mob/user, params) - if(!IS_EDIBLE(I)) + if(!IS_EDIBLE(I) && !istype(I, /obj/item/reagent_containers/cooking_container)) to_chat(user, span_notice("[src] is made for food, and food alone!")) return if(contents.len >= max_items) diff --git a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm index 116982d597c2..ab21e0043156 100644 --- a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm +++ b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm @@ -290,7 +290,7 @@ /datum/chemical_reaction/drink/neurotoxin results = list(/datum/reagent/consumable/ethanol/neurotoxin = 2) - required_reagents = list(/datum/reagent/consumable/ethanol/gargle_blaster = 1, /datum/reagent/medicine/morphine = 1) + required_reagents = list(/datum/reagent/consumable/ethanol/gargle_blaster = 1, /datum/reagent/medicine/painkiller/morphine = 1) reaction_tags = REACTION_TAG_DRINK | REACTION_TAG_EASY | REACTION_TAG_OTHER /datum/chemical_reaction/drink/snowwhite @@ -558,7 +558,7 @@ /datum/chemical_reaction/drink/the_juice results = list(/datum/reagent/consumable/ethanol/the_juice = 5) - required_reagents = list(/datum/reagent/consumable/mushroom_tea = 1, /datum/reagent/bluespace = 1, /datum/reagent/toxin/mindbreaker = 1, /datum/reagent/consumable/ethanol/neurotoxin = 1, /datum/reagent/medicine/morphine = 1) + required_reagents = list(/datum/reagent/consumable/mushroom_tea = 1, /datum/reagent/bluespace = 1, /datum/reagent/toxin/mindbreaker = 1, /datum/reagent/consumable/ethanol/neurotoxin = 1, /datum/reagent/medicine/painkiller/morphine = 1) mix_message = "The liquids all swirl together into a deep purple." /datum/chemical_reaction/drink/helianthus diff --git a/code/modules/food_and_drinks/recipes/processor_recipes.dm b/code/modules/food_and_drinks/recipes/processor_recipes.dm index 469909030d2c..037a23d56d67 100644 --- a/code/modules/food_and_drinks/recipes/processor_recipes.dm +++ b/code/modules/food_and_drinks/recipes/processor_recipes.dm @@ -97,6 +97,7 @@ /datum/food_processor_process/spidereggs input = /obj/item/food/spidereggs + blacklist = list(/obj/item/food/spidereggs/processed) output = /obj/item/food/spidereggs/processed /datum/food_processor_process/potato diff --git a/code/modules/food_and_drinks/recipes/soup_mixtures.dm b/code/modules/food_and_drinks/recipes/soup_mixtures.dm index fdcfba5174ab..90a9e82d9f90 100644 --- a/code/modules/food_and_drinks/recipes/soup_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/soup_mixtures.dm @@ -572,7 +572,10 @@ drink_type = VEGETABLES | FRUIT // ?? /datum/chemical_reaction/food/soup/tomatosoup - required_reagents = list(/datum/reagent/water = 50) + required_reagents = list( + /datum/reagent/water = 50, + /datum/reagent/consumable/cream = 5 + ) required_ingredients = list( /obj/item/food/grown/tomato = 2, ) @@ -1126,7 +1129,7 @@ /obj/item/food/grown/onion = 2, /obj/item/food/grown/chili = 1, /obj/item/food/grown/garlic = 1, - /obj/item/food/butter = 1, + /obj/item/food/butterslice = 1, /obj/item/food/boiledrice = 1, ) results = list( @@ -1473,12 +1476,12 @@ /datum/chemical_reaction/food/soup/cheese required_reagents = list( /datum/reagent/water = 30, - /datum/reagent/consumable/flour = 10, /datum/reagent/consumable/milk = 10, ) required_ingredients = list( + /obj/item/food/doughslice = 2, /obj/item/food/cheese/wedge = 2, - /obj/item/food/butter = 1, + /obj/item/food/butterslice = 1, /obj/item/food/grown/potato/sweet = 1, ) results = list( @@ -1689,7 +1692,7 @@ required_ingredients = list( /obj/item/food/cheese/firm_cheese_slice = 1, /obj/item/food/cheese/curd_cheese = 1, - /obj/item/food/butter = 1, + /obj/item/food/butterslice = 1, ) results = list( /datum/reagent/consumable/nutriment/soup/cheese_porridge = 30, diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm index 364904f448e4..e78efd293ffc 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm @@ -89,7 +89,7 @@ time = 40 reqs = list(/obj/item/food/grown/garlic = 1, /obj/item/food/breadslice/plain = 1, - /obj/item/food/butter = 1 + /obj/item/food/butterslice = 1 ) result = /obj/item/food/garlicbread category = CAT_BREAD @@ -98,7 +98,7 @@ name = "Butter Biscuit" reqs = list( /obj/item/food/bun = 1, - /obj/item/food/butter = 1 + /obj/item/food/butterslice = 1 ) result = /obj/item/food/butterbiscuit category = CAT_BREAD @@ -107,7 +107,7 @@ name = "Butterdog" reqs = list( /obj/item/food/bun = 1, - /obj/item/food/butter = 3, + /obj/item/food/butter = 1, ) result = /obj/item/food/butterdog category = CAT_BREAD @@ -127,7 +127,7 @@ reqs = list( /obj/item/food/doughslice = 1, /datum/reagent/consumable/salt = 1, - /obj/item/food/butter = 1 + /obj/item/food/butterslice = 1 ) result = /obj/item/food/raw_breadstick category = CAT_BREAD @@ -137,7 +137,7 @@ reqs = list( /obj/item/food/doughslice = 1, /datum/reagent/consumable/sugar = 1, - /obj/item/food/butter = 1 + /obj/item/food/butterslice = 1 ) result = /obj/item/food/raw_croissant category = CAT_BREAD @@ -189,7 +189,7 @@ name = "Buttered Toast" reqs = list( /obj/item/food/breadslice/plain = 1, - /obj/item/food/butter = 1 + /obj/item/food/butterslice = 1 ) result = /obj/item/food/butteredtoast category = CAT_BREAD diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm index 16075d970cae..5ef95ca8ab64 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm @@ -200,15 +200,6 @@ category = CAT_BURGER /datum/crafting_recipe/food/spellburger - name = "Spell burger" - reqs = list( - /obj/item/clothing/head/wizard/fake = 1, - /obj/item/food/bun = 1 - ) - result = /obj/item/food/burger/spell - category = CAT_BURGER - -/datum/crafting_recipe/food/spellburger2 name = "Spell burger" reqs = list( /obj/item/clothing/head/wizard = 1, @@ -395,3 +386,14 @@ ) result = /obj/item/food/burger/crazy category = CAT_BURGER + +/datum/crafting_recipe/food/sloppy_moe + name = "Sloppy moe" + reqs = list( + /obj/item/food/bun = 1, + /obj/item/food/meat/cutlet = 2, + /obj/item/food/onion_slice = 1, + /datum/reagent/consumable/bbqsauce = 5, + ) + result = /obj/item/food/burger/sloppy_moe + category = CAT_BURGER diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm index 37b7a00b7eb0..b70b3b9114c1 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm @@ -257,3 +257,13 @@ ) result = /obj/item/food/cake/wedding category = CAT_CAKE + +/datum/crafting_recipe/food/pineapple_cream_cake + name = "Pineapple cream cake" + reqs = list( + /obj/item/food/cake/plain = 1, + /obj/item/food/grown/pineapple = 1, + /datum/reagent/consumable/cream = 20, + ) + result = /obj/item/food/cake/pineapple_cream_cake + category = CAT_CAKE diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm index 5735e5946cae..4076cffd109b 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm @@ -37,7 +37,6 @@ non_craftable = TRUE /datum/crafting_recipe/food/reaction/New() - . = ..() if(!ispath(reaction, /datum/chemical_reaction)) return @@ -48,6 +47,7 @@ var/datum/chemical_reaction/chemical_reaction = new reaction() setup_chemical_reaction_details(chemical_reaction) qdel(chemical_reaction) + ..() /** * Sets up information for our recipe based on the chemical reaction we have set. @@ -270,6 +270,10 @@ result = /obj/item/food/pastrybase category = CAT_BREAD +/datum/crafting_recipe/food/knife/butterslice + reqs = list(/obj/item/food/butter = 1) + result = /obj/item/food/butterslice + /datum/crafting_recipe/food/knife/doughball reqs = list(/obj/item/food/doughslice = 1) result = /obj/item/food/bait/doughball @@ -552,7 +556,7 @@ result = /datum/reagent/consumable/flour /datum/crafting_recipe/food/grinder/butter - reqs = list(/datum/reagent/consumable/milk = 15) + reqs = list(/datum/reagent/consumable/milk = MILK_TO_BUTTER_COEFF) result = /obj/item/food/butter steps = list("Put into grinder and mix") @@ -645,10 +649,6 @@ reqs = list(/obj/item/food/tempehstarter = 1) result = /obj/item/food/tempeh -/datum/crafting_recipe/food/processor/yakiimo - reqs = list(/obj/item/food/grown/potato/sweet = 1) - result = /obj/item/food/yakiimo - /datum/crafting_recipe/food/processor/popsicle_stick reqs = list(/obj/item/grown/log = 1) result = /obj/item/popsicle_stick @@ -796,7 +796,7 @@ /datum/crafting_recipe/food/oven/yakiimo reqs = list(/obj/item/food/grown/potato/sweet = 1) result = /obj/item/food/yakiimo - category = CAT_SALAD + category = CAT_MISCFOOD /datum/crafting_recipe/food/oven/reispan reqs = list(/obj/item/food/rice_dough = 1) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm index ec5db9baf149..ccb0b975cb74 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm @@ -375,7 +375,7 @@ name = "Korta brittle slab" reqs = list( /obj/item/food/grown/korta_nut = 2, - /obj/item/food/butter = 1, + /obj/item/food/butterslice = 1, /datum/reagent/consumable/korta_nectar = 5, /datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/salt = 2 diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm index 774c8ed5b464..b184347a38fc 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm @@ -188,7 +188,7 @@ name = "Martian fried noodles" reqs = list( /obj/item/food/spaghetti/boilednoodles = 1, - /obj/item/food/peanuts/salted = 1, + /obj/item/food/grown/peanut = 2, /obj/item/food/meat/cutlet = 1, /obj/item/food/onion_slice = 1, /obj/item/food/egg = 1, @@ -669,7 +669,7 @@ reqs = list( /obj/item/food/cake/plain = 1, /obj/item/food/grown/ambrosia/vulgaris = 1, - /obj/item/food/butter = 1, //monkestation edit: no butterslices yet, is intended to be 2 slices + /obj/item/food/butterslice = 2, ) result = /obj/item/food/cake/spekkoek category = CAT_MARTIAN @@ -700,7 +700,7 @@ name = "Boh loh yah" reqs = list( /obj/item/food/doughslice = 1, - /obj/item/food/butter = 1, //monkestation edit: no butterslices yet, is intended to be 1 slice + /obj/item/food/butterslice = 1, /datum/reagent/consumable/sugar = 5, ) result = /obj/item/food/boh_loh_yah diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm index 7997e3c67c62..fcb25b39ba8d 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm @@ -145,7 +145,7 @@ name = "Pig in a Blanket" reqs = list( /obj/item/food/bun = 1, - /obj/item/food/butter = 1, + /obj/item/food/butterslice = 1, /obj/item/food/meat/cutlet = 1 ) result = /obj/item/food/pigblanket @@ -295,3 +295,24 @@ ) result = /obj/item/food/raw_meatloaf category = CAT_MEAT + +/datum/crafting_recipe/food/sweet_and_sour_meatballs + name = "Sweet and sour meatballs" + reqs = list( + /obj/item/food/meatball = 3, + /obj/item/food/pineappleslice = 1, + /obj/item/food/grown/bell_pepper = 1, + /datum/reagent/consumable/sugar = 5, + ) + result = /obj/item/food/sweet_and_sour_meatballs + category = CAT_MEAT + +/datum/crafting_recipe/food/pineapple_skewer + name = "Pineapple skewer" + reqs = list( + /obj/item/stack/rods = 1, + /obj/item/food/pineappleslice = 2, + /obj/item/food/meat/cutlet = 2, + ) + result = /obj/item/food/kebab/pineapple_skewer + category = CAT_MEAT diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm index 267cdea69b32..8778ee976ef2 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm @@ -190,3 +190,14 @@ ) result = /obj/item/food/spanish_rice category = CAT_MEXICAN + +/datum/crafting_recipe/food/pineapple_salsa + name = "Pineapple salsa" + reqs = list( + /obj/item/food/pineappleslice = 2, + /obj/item/food/grown/tomato = 1, + /obj/item/food/grown/onion = 1, + /obj/item/food/grown/chili = 1, + ) + result = /obj/item/food/pineapple_salsa + category = CAT_MEXICAN diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm index c7807653fc54..bda81c6be73e 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm @@ -156,7 +156,7 @@ reqs = list( /obj/item/organ/internal/brain = 1, /obj/item/organ/internal/heart = 1, - /obj/item/food/butter = 10, + /obj/item/food/butter = 4, /obj/item/food/meat/slab = 5, /datum/reagent/blood = 50, /datum/reagent/teslium = 1 //To shock the whole thing into life @@ -225,7 +225,7 @@ reqs = list( /datum/reagent/consumable/milk = 10, /datum/reagent/consumable/flour = 5, - /obj/item/food/butter = 1 + /obj/item/food/butterslice = 1 ) result = /obj/item/food/bechamel_sauce category = CAT_MISCFOOD @@ -276,7 +276,7 @@ reqs = list( /obj/item/food/grown/potato = 2, /obj/item/food/grown/garlic = 1, - /obj/item/food/butter = 1, + /obj/item/food/butterslice = 1, ) result = /obj/item/food/mashed_potatoes category = CAT_MISCFOOD @@ -345,7 +345,7 @@ name = "Buttered baked potato" reqs = list( /obj/item/food/baked_potato = 1, - /obj/item/food/butter = 1, + /obj/item/food/butterslice = 1, ) result = /obj/item/food/buttered_baked_potato category = CAT_MISCFOOD @@ -427,3 +427,128 @@ result = /obj/item/storage/fancy/pickles_jar category = CAT_MISCFOOD delete_contents = FALSE + +/datum/crafting_recipe/food/sauteed_eggplant + name = "Sauteed eggplant" + reqs = list( + /obj/item/food/grown/eggplant = 1, + /obj/item/food/grown/garlic = 1, + /datum/reagent/consumable/quality_oil = 3, + ) + result = /obj/item/food/sauteed_eggplant + category = CAT_MISCFOOD + +/datum/crafting_recipe/food/stuffed_eggplant + name = "Stuffed eggplant" + reqs = list( + /obj/item/food/grown/eggplant = 1, + /obj/item/food/grown/garlic = 1, + /obj/item/food/grown/cabbage = 1, + /obj/item/food/cheese/wedge = 1, + /obj/item/food/meat/cutlet = 1, + ) + result = /obj/item/food/stuffed_eggplant + category = CAT_MISCFOOD + +/datum/crafting_recipe/food/baba_ghanoush + name = "Baba ghanoush" + reqs = list( + /obj/item/reagent_containers/cup/bowl = 1, + /obj/item/food/pita_bread = 1, + /obj/item/food/grown/eggplant = 1, + /obj/item/food/grown/garlic = 1, + /datum/reagent/consumable/quality_oil = 5, + /datum/reagent/consumable/lemonjuice = 3, + ) + result = /obj/item/food/baba_ghanoush + category = CAT_MISCFOOD + +/datum/crafting_recipe/food/moussaka + name = "Moussaka" + reqs = list( + /obj/item/food/grown/eggplant = 2, + /obj/item/food/grown/garlic = 1, + /obj/item/food/grown/onion = 1, + /obj/item/food/meat/cutlet = 1, + /obj/item/food/bechamel_sauce = 1, + ) + result = /obj/item/food/moussaka + category = CAT_MISCFOOD + +/datum/crafting_recipe/food/falafel + name = "Falafel" + reqs = list( + /obj/item/food/grown/soybeans = 1, + /obj/item/food/grown/garlic = 1, + /obj/item/food/grown/onion = 1, + /obj/item/food/grown/herbs = 1, + ) + result = /obj/item/food/falafel + category = CAT_MISCFOOD + +/datum/crafting_recipe/food/candied_pineapple + name = "Candied pineapple" + reqs = list( + /obj/item/food/pineappleslice = 1, + /datum/reagent/consumable/sugar = 2, + /datum/reagent/water = 2, + ) + result = /obj/item/food/candied_pineapple + category = CAT_MISCFOOD + +/datum/crafting_recipe/food/tzatziki_sauce + name = "Tzatziki sauce" + reqs = list( + /obj/item/food/grown/cucumber = 1, + /datum/reagent/consumable/quality_oil = 2, + /obj/item/food/grown/garlic = 1, + /datum/reagent/consumable/salt = 1, + ) + result = /obj/item/food/tzatziki_sauce + category = CAT_MISCFOOD + +/datum/crafting_recipe/food/tzatziki_and_pita_bread + name = "Tzatziki and pita bread" + reqs = list( + /obj/item/food/tzatziki_sauce = 1, + /obj/item/food/pita_bread = 1, + ) + result = /obj/item/food/tzatziki_and_pita_bread + category = CAT_MISCFOOD + +/datum/crafting_recipe/food/grilled_beef_gyro + name = "Grilled beef gyro" + reqs = list( + /obj/item/food/tzatziki_sauce = 1, + /obj/item/food/pita_bread = 1, + /obj/item/food/meat/cutlet = 2, + /obj/item/food/grown/cabbage = 1, + /obj/item/food/grown/tomato = 1, + /obj/item/food/grown/onion = 1, + ) + result = /obj/item/food/grilled_beef_gyro + category = CAT_MISCFOOD + +/datum/crafting_recipe/food/vegetarian_gyro + name = "Vegetarian gyro" + reqs = list( + /obj/item/food/tzatziki_sauce = 1, + /obj/item/food/pita_bread = 1, + /obj/item/food/grown/cucumber = 1, + /obj/item/food/grown/cabbage = 1, + /obj/item/food/grown/tomato = 1, + /obj/item/food/grown/onion = 1, + ) + result = /obj/item/food/vegetarian_gyro + category = CAT_MISCFOOD + +/datum/crafting_recipe/food/raw_pita_bread + name = "Raw pita bread" + reqs = list( + /datum/reagent/consumable/flour = 10, + /datum/reagent/water = 5, + /datum/reagent/consumable/quality_oil = 2, + /datum/reagent/consumable/sugar = 2, + ) + result = /obj/item/food/raw_pita_bread + category = CAT_MISCFOOD diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_moth.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_moth.dm index fadfe23a87e2..880b51a3909b 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_moth.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_moth.dm @@ -112,7 +112,7 @@ name = "Buttered baked corn" reqs = list( /obj/item/food/oven_baked_corn = 1, - /obj/item/food/butter = 1 + /obj/item/food/butterslice = 1 ) result = /obj/item/food/buttered_baked_corn category = CAT_MOTH @@ -317,7 +317,7 @@ /datum/crafting_recipe/food/raw_mothic_garlic reqs = list( /obj/item/food/mothic_pizza_dough = 1, - /obj/item/food/butter = 1, + /obj/item/food/butterslice = 1, /obj/item/food/grown/garlic = 1, /obj/item/food/grown/herbs = 1 ) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm index ecc38887db4b..3ce319b1985a 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm @@ -603,7 +603,7 @@ /datum/reagent/consumable/sugar = 5, /obj/item/food/egg = 2, /datum/reagent/consumable/coco = 5, - /obj/item/food/butter = 1 + /obj/item/food/butterslice = 1 ) result = /obj/item/food/raw_brownie_batter category = CAT_PASTRY @@ -616,7 +616,7 @@ /obj/item/food/egg = 2, /datum/reagent/consumable/coco = 5, /datum/reagent/consumable/peanut_butter = 5, - /obj/item/food/butter = 1 + /obj/item/food/butterslice = 1 ) result = /obj/item/food/peanut_butter_brownie_batter category = CAT_PASTRY @@ -631,3 +631,40 @@ ) result = /obj/item/food/crunchy_peanut_butter_tart category = CAT_PASTRY + +/datum/crafting_recipe/food/chocolate_chip_cookie + name = "Chocolate chip cookie" + reqs = list( + /obj/item/food/pastrybase = 1, + /obj/item/food/chocolatebar = 1, + ) + result = /obj/item/food/cookie/chocolate_chip_cookie + category = CAT_PASTRY + +/datum/crafting_recipe/food/snickerdoodle + name = "Snickerdoodle" + reqs = list( + /obj/item/food/pastrybase = 1, + /datum/reagent/consumable/vanilla = 5, + ) + result = /obj/item/food/cookie/snickerdoodle + category = CAT_PASTRY + +/datum/crafting_recipe/food/thumbprint_cookie + name = "Thumbprint cookie" + reqs = list( + /obj/item/food/pastrybase = 1, + /datum/reagent/consumable/cherryjelly = 5, + ) + result = /obj/item/food/cookie/thumbprint_cookie + category = CAT_PASTRY + +/datum/crafting_recipe/food/macaron + name = "Macaron" + reqs = list( + /datum/reagent/consumable/eggwhite = 2, + /datum/reagent/consumable/cream = 5, + /datum/reagent/consumable/flour = 5, + ) + result = /obj/item/food/cookie/macaron + category = CAT_PASTRY diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm index 1cfc38948a3a..93851558cffe 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm @@ -200,7 +200,7 @@ /datum/crafting_recipe/food/baklava name = "Baklava pie" reqs = list( - /obj/item/food/butter = 2, + /obj/item/food/butterslice = 2, /obj/item/food/tortilla = 4, //Layers /obj/item/seeds/wheat/oat = 4 ) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.dm index 0e56a3e1d561..60c7de2e3333 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_seafood.dm @@ -121,3 +121,27 @@ ) result = /obj/item/food/fish_poke category = CAT_SEAFOOD + +/datum/crafting_recipe/food/futomaki_sushi_roll + name ="Futomaki sushi roll" + reqs = list( + /obj/item/food/seaweedsheet = 1, + /obj/item/food/boiledrice = 1, + /obj/item/food/boiledegg = 1, + /obj/item/food/fishmeat = 1, + /obj/item/food/grown/cucumber = 1, + ) + result = /obj/item/food/futomaki_sushi_roll + category = CAT_SEAFOOD + +/datum/crafting_recipe/food/philadelphia_sushi_roll + name ="Philadelphia sushi roll" + reqs = list( + /obj/item/food/seaweedsheet = 1, + /obj/item/food/boiledrice = 1, + /obj/item/food/cheese/wedge = 1, + /obj/item/food/fishmeat = 1, + /obj/item/food/grown/cucumber = 1, + ) + result = /obj/item/food/philadelphia_sushi_roll + category = CAT_SEAFOOD diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm index 297f761bab32..589235eacb70 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_spaghetti.dm @@ -64,7 +64,7 @@ name = "Butter Noodles" reqs = list( /obj/item/food/spaghetti/boiledspaghetti = 1, - /obj/item/food/butter = 1 + /obj/item/food/butterslice = 1 ) result = /obj/item/food/spaghetti/butternoodles category = CAT_SPAGHETTI @@ -80,3 +80,80 @@ ) result = /obj/item/food/spaghetti/mac_n_cheese category = CAT_SPAGHETTI + +/datum/crafting_recipe/food/shoyu_tonkotsu_ramen + name = "Shoyu Tonkotsu ramen" + reqs = list( + /obj/item/reagent_containers/cup/bowl = 1, + /obj/item/food/spaghetti/boiledspaghetti = 1, + /obj/item/food/boiledegg = 1, + /obj/item/food/seaweedsheet = 1, + /obj/item/food/meat/cutlet = 1, + /obj/item/food/grown/onion = 1, + ) + result = /obj/item/food/spaghetti/shoyu_tonkotsu_ramen + category = CAT_SPAGHETTI + +/datum/crafting_recipe/food/kitakata_ramen + name = "Kitakata ramen" + reqs = list( + /obj/item/reagent_containers/cup/bowl = 1, + /obj/item/food/spaghetti/boiledspaghetti = 1, + /obj/item/food/meat/cutlet = 2, + /obj/item/food/grown/onion = 1, + /obj/item/food/grown/mushroom/chanterelle = 1, + /obj/item/food/grown/garlic = 1, + ) + result = /obj/item/food/spaghetti/kitakata_ramen + category = CAT_SPAGHETTI + +/datum/crafting_recipe/food/kitsune_udon + name = "Kitsune udon" + reqs = list( + /obj/item/reagent_containers/cup/bowl = 1, + /obj/item/food/spaghetti/boiledspaghetti = 1, + /obj/item/food/tofu = 2, + /obj/item/food/grown/onion = 1, + /datum/reagent/consumable/soysauce = 5, + /datum/reagent/consumable/sugar = 5, + ) + result = /obj/item/food/spaghetti/kitsune_udon + category = CAT_SPAGHETTI + +/datum/crafting_recipe/food/nikujaga + name = "Nikujaga" + reqs = list( + /obj/item/reagent_containers/cup/bowl = 1, + /obj/item/food/spaghetti/boiledspaghetti = 1, + /obj/item/food/meat/cutlet = 2, + /obj/item/food/grown/potato = 1, + /obj/item/food/grown/carrot = 1, + /obj/item/food/grown/peas = 1, + ) + result = /obj/item/food/spaghetti/nikujaga + category = CAT_SPAGHETTI + +/datum/crafting_recipe/food/pho + name = "Pho" + reqs = list( + /obj/item/reagent_containers/cup/bowl = 1, + /obj/item/food/spaghetti/boiledspaghetti = 1, + /obj/item/food/meat/cutlet = 1, + /obj/item/food/grown/onion = 1, + /obj/item/food/grown/cabbage = 1, + ) + result = /obj/item/food/spaghetti/pho + category = CAT_SPAGHETTI + +/datum/crafting_recipe/food/pad_thai + name = "Pad thai" + reqs = list( + /obj/item/reagent_containers/cup/bowl = 1, + /obj/item/food/spaghetti/boiledspaghetti = 1, + /obj/item/food/tofu = 1, + /obj/item/food/grown/onion = 1, + /obj/item/food/grown/peanut = 1, + /obj/item/food/grown/citrus/lime = 1, + ) + result = /obj/item/food/spaghetti/pad_thai + category = CAT_SPAGHETTI diff --git a/code/modules/forensics/_forensics.dm b/code/modules/forensics/_forensics.dm index 76a051f1d727..2b09cc664e12 100644 --- a/code/modules/forensics/_forensics.dm +++ b/code/modules/forensics/_forensics.dm @@ -66,7 +66,7 @@ src.fibers = LAZY_LISTS_OR(src.fibers, fibers) check_blood() -/datum/forensics/Destroy(force, ...) +/datum/forensics/Destroy(force) var/atom/parent_atom = parent.resolve() if (!isnull(parent_atom)) UnregisterSignal(parent_atom, list(COMSIG_COMPONENT_CLEAN_ACT)) diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index 28b5d8b4f72b..8749875221aa 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -18,13 +18,17 @@ var/year_offset = 0 ///Timezones this holiday is celebrated in (defaults to three timezones spanning a 50 hour window covering all timezones) var/list/timezones = list(TIMEZONE_LINT, TIMEZONE_UTC, TIMEZONE_ANYWHERE_ON_EARTH) - ///If this is defined, drones without a default hat will spawn with this one during the holiday; check drones_as_items.dm to see this used - var/obj/item/drone_hat + ///If this is defined, drones/assistants without a default hat will spawn with this item in their head clothing slot. + var/obj/item/holiday_hat ///When this holiday is active, does this prevent mail from arriving to cargo? Try not to use this for longer holidays. var/mail_holiday = FALSE var/poster_name = "generic celebration poster" var/poster_desc = "A poster for celebrating some holiday. Unfortunately, its unfinished, so you can't see what the holiday is." var/poster_icon = "holiday_unfinished" + /// Color scheme for this holiday + var/list/holiday_colors + /// The default pattern of the holiday, if the requested pattern is null. + var/holiday_pattern = PATTERN_DEFAULT // This proc gets run before the game starts when the holiday is activated. Do festive shit here. /datum/holiday/proc/celebrate() @@ -75,6 +79,31 @@ return FALSE +/// Procs to return holiday themed colors for recoloring atoms +/datum/holiday/proc/get_holiday_colors(atom/thing_to_color, pattern = holiday_pattern) + if(!holiday_colors) + return + switch(pattern) + if(PATTERN_DEFAULT) + return holiday_colors[(thing_to_color.y % holiday_colors.len) + 1] + if(PATTERN_VERTICAL_STRIPE) + return holiday_colors[(thing_to_color.x % holiday_colors.len) + 1] + +/proc/request_holiday_colors(atom/thing_to_color, pattern) + switch(pattern) + if(PATTERN_RANDOM) + return "#[random_short_color()]" + if(PATTERN_RAINBOW) + var/datum/holiday/pride_week/rainbow_datum = new() + return rainbow_datum.get_holiday_colors(thing_to_color, PATTERN_DEFAULT) + if(!length(GLOB.holidays)) + return + for(var/holiday_key in GLOB.holidays) + var/datum/holiday/holiday_real = GLOB.holidays[holiday_key] + if(!holiday_real.holiday_colors) + continue + return holiday_real.get_holiday_colors(thing_to_color, pattern || holiday_real.holiday_pattern) + // The actual holidays // JANUARY @@ -84,6 +113,7 @@ name = "Fleet Day" begin_month = JANUARY begin_day = 19 + holiday_hat = /obj/item/clothing/head/mothcap /datum/holiday/fleet_day/greet() return "This day commemorates another year of successful survival aboard the Mothic Grand Nomad Fleet. Moths galaxywide are encouraged to eat, drink, and be merry." @@ -106,6 +136,12 @@ timezones = list(TIMEZONE_NZDT, TIMEZONE_CHADT) begin_day = 6 begin_month = FEBRUARY + holiday_colors = list( + COLOR_UNION_JACK_BLUE, + COLOR_WHITE, + COLOR_UNION_JACK_RED, + COLOR_WHITE, + ) /datum/holiday/nz/getStationPrefix() return pick("Aotearoa","Kiwi","Fish 'n' Chips","Kākāpō","Southern Cross") @@ -130,7 +166,7 @@ name = "Birthday of Space Station 13" begin_day = 16 begin_month = FEBRUARY - drone_hat = /obj/item/clothing/head/costume/festive + holiday_hat = /obj/item/clothing/head/costume/festive poster_name = "station birthday poster" poster_desc = "A poster celebrating another year of the station's operation. Why anyone would be happy to be here is byond you." poster_icon = "holiday_cake" // is a lie @@ -195,7 +231,13 @@ name = "St. Patrick's Day" begin_day = 17 begin_month = MARCH - drone_hat = /obj/item/clothing/head/soft/green + holiday_hat = /obj/item/clothing/head/soft/green + holiday_colors = list( + COLOR_IRISH_GREEN, + COLOR_WHITE, + COLOR_IRISH_ORANGE, + ) + holiday_pattern = PATTERN_VERTICAL_STRIPE /datum/holiday/no_this_is_patrick/getStationPrefix() return pick("Blarney","Green","Leprechaun","Booze") @@ -210,6 +252,7 @@ begin_month = APRIL begin_day = 1 end_day = 2 + holiday_hat = /obj/item/clothing/head/chameleon/broken /datum/holiday/april_fools/celebrate() . = ..() @@ -220,13 +263,19 @@ var/mob/dead/new_player/P = i if(P.client) P.client.playtitlemusic() - */ + */ //monkestation removal end + +/datum/holiday/april_fools/get_holiday_colors(atom/thing_to_color) + return "#[random_short_color()]" + +/datum/holiday/april_fools/get_holiday_colors(atom/thing_to_color) + return "#[random_short_color()]" /datum/holiday/spess name = "Cosmonautics Day" begin_day = 12 begin_month = APRIL - drone_hat = /obj/item/clothing/head/syndicatefake + holiday_hat = /obj/item/clothing/head/syndicatefake /datum/holiday/spess/greet() return "On this day over 600 years ago, Comrade Yuri Gagarin first ventured into space!" @@ -235,6 +284,12 @@ name = "Four-Twenty" begin_day = 20 begin_month = APRIL + holiday_hat = /obj/item/clothing/head/rasta + holiday_colors = list( + COLOR_ETHIOPIA_GREEN, + COLOR_ETHIOPIA_YELLOW, + COLOR_ETHIOPIA_RED, + ) /datum/holiday/fourtwenty/getStationPrefix() return pick("Snoop","Blunt","Toke","Dank","Cheech","Chong") @@ -257,7 +312,7 @@ timezones = list(TIMEZONE_TKT, TIMEZONE_TOT, TIMEZONE_NZST, TIMEZONE_NFT, TIMEZONE_LHST, TIMEZONE_AEST, TIMEZONE_ACST, TIMEZONE_ACWST, TIMEZONE_AWST, TIMEZONE_CXT, TIMEZONE_CCT, TIMEZONE_CKT, TIMEZONE_NUT) begin_day = 25 begin_month = APRIL - drone_hat = /obj/item/food/grown/poppy + holiday_hat = /obj/item/food/grown/poppy /datum/holiday/anz/getStationPrefix() return pick("Australian","New Zealand","Poppy", "Southern Cross") @@ -268,7 +323,7 @@ name = "Labor Day" begin_day = 1 begin_month = MAY - drone_hat = /obj/item/clothing/head/utility/hardhat + holiday_hat = /obj/item/clothing/head/utility/hardhat mail_holiday = TRUE //Draconic Day is celebrated on May 3rd, the date on which the Draconic language was merged (#26780) @@ -287,7 +342,7 @@ name = "Firefighter's Day" begin_day = 4 begin_month = MAY - drone_hat = /obj/item/clothing/head/utility/hardhat/red + holiday_hat = /obj/item/clothing/head/utility/hardhat/red /datum/holiday/firefighter/getStationPrefix() return pick("Burning","Blazing","Plasma","Fire") @@ -296,7 +351,6 @@ name = "Bee Day" begin_day = 20 begin_month = MAY - drone_hat = /obj/item/clothing/mask/animal/small/bee /datum/holiday/bee/getStationPrefix() return pick("Bee","Honey","Hive","Africanized","Mead","Buzz") @@ -329,6 +383,22 @@ name = "Summer Solstice" begin_day = 21 begin_month = JUNE + holiday_hat = /obj/item/clothing/head/costume/garland + +/datum/holiday/pride_week + name = PRIDE_WEEK + begin_month = JUNE + // Stonewall was June 28th, this captures its week. + begin_day = 23 + end_day = 29 + holiday_colors = list( + COLOR_PRIDE_PURPLE, + COLOR_PRIDE_BLUE, + COLOR_PRIDE_GREEN, + COLOR_PRIDE_YELLOW, + COLOR_PRIDE_ORANGE, + COLOR_PRIDE_RED, + ) // JULY @@ -336,13 +406,13 @@ name = "Doctor's Day" begin_day = 1 begin_month = JULY - drone_hat = /obj/item/clothing/head/costume/nursehat + holiday_hat = /obj/item/clothing/head/costume/nursehat /datum/holiday/ufo name = "UFO Day" begin_day = 2 begin_month = JULY - drone_hat = /obj/item/clothing/mask/facehugger/dead + holiday_hat = /obj/item/clothing/head/collectable/xenom /datum/holiday/ufo/getStationPrefix() //Is such a thing even possible? return pick("Ayy","Truth","Tsoukalos","Mulder","Scully") //Yes it is! @@ -353,6 +423,15 @@ begin_day = 4 begin_month = JULY mail_holiday = TRUE + holiday_hat = /obj/item/clothing/head/cowboy/brown + holiday_colors = list( + COLOR_OLD_GLORY_BLUE, + COLOR_OLD_GLORY_RED, + COLOR_WHITE, + COLOR_OLD_GLORY_RED, + COLOR_WHITE, + ) + /datum/holiday/usa/getStationPrefix() return pick("Independent","American","Burger","Bald Eagle","Star-Spangled", "Fireworks") @@ -367,11 +446,17 @@ timezones = list(TIMEZONE_CEST) begin_day = 14 begin_month = JULY - drone_hat = /obj/item/clothing/head/beret + holiday_hat = /obj/item/clothing/head/beret mail_holiday = TRUE + holiday_colors = list( + COLOR_FRENCH_BLUE, + COLOR_WHITE, + COLOR_FRENCH_RED + ) + holiday_pattern = PATTERN_VERTICAL_STRIPE /datum/holiday/france/getStationPrefix() - return pick("Francais","Fromage", "Zut", "Merde") + return pick("Francais", "Fromage", "Zut", "Merde", "Sacrebleu") /datum/holiday/france/greet() return "Do you hear the people sing?" @@ -389,7 +474,7 @@ name = "Wizard's Day" begin_month = JULY begin_day = 27 - drone_hat = /obj/item/clothing/head/wizard + holiday_hat = /obj/item/clothing/head/wizard /datum/holiday/wizards_day/getStationPrefix() return pick("Dungeon", "Elf", "Magic", "D20", "Edition") @@ -421,6 +506,7 @@ name = "Tiziran Unification Day" begin_month = SEPTEMBER begin_day = 1 + holiday_hat = /obj/item/clothing/head/costume/lizard /datum/holiday/tiziran_unification/greet() return "On this day over 400 years ago, Lizardkind first united under a single banner, ready to face the stars as one unified people." @@ -429,7 +515,7 @@ return pick("Tizira", "Lizard", "Imperial") /datum/holiday/ianbirthday - name = "Ian's Birthday" //github.com/tgstation/tgstation/commit/de7e4f0de0d568cd6e1f0d7bcc3fd34700598acb + name = IAN_HOLIDAY //github.com/tgstation/tgstation/commit/de7e4f0de0d568cd6e1f0d7bcc3fd34700598acb begin_month = SEPTEMBER begin_day = 9 end_day = 10 @@ -444,7 +530,7 @@ name = "Talk-Like-a-Pirate Day" begin_day = 19 begin_month = SEPTEMBER - drone_hat = /obj/item/clothing/head/costume/pirate + holiday_hat = /obj/item/clothing/head/costume/pirate /datum/holiday/pirate/greet() return "Ye be talkin' like a pirate today or else ye'r walkin' tha plank, matey!" @@ -474,13 +560,13 @@ name = "Smiling Day" begin_day = 7 begin_month = OCTOBER - drone_hat = /obj/item/clothing/head/costume/papersack/smiley + holiday_hat = /obj/item/clothing/head/costume/papersack/smiley /datum/holiday/boss name = "Boss' Day" begin_day = 16 begin_month = OCTOBER - drone_hat = /obj/item/clothing/head/hats/tophat + holiday_hat = /obj/item/clothing/head/hats/tophat /datum/holiday/un_day name = "Anniversary of the Foundation of the United Nations" @@ -516,12 +602,25 @@ /datum/holiday/vegan/getStationPrefix() return pick("Tofu", "Tempeh", "Seitan", "Tofurkey") +/datum/holiday/october_revolution + name = "October Revolution" + begin_day = 6 + begin_month = NOVEMBER + end_day = 7 + holiday_colors = list( + COLOR_MEDIUM_DARK_RED, + COLOR_GOLD, + COLOR_MEDIUM_DARK_RED, + ) + +/datum/holiday/october_revolution/getStationPrefix() + return pick("Communist", "Soviet", "Bolshevik", "Socialist", "Red", "Workers'") /datum/holiday/remembrance_day name = "Remembrance Day" begin_month = NOVEMBER begin_day = 11 - drone_hat = /obj/item/food/grown/poppy + holiday_hat = /obj/item/food/grown/poppy /datum/holiday/remembrance_day/getStationPrefix() return pick("Peace", "Armistice", "Poppy") @@ -543,7 +642,7 @@ name = "Flowers Day" begin_day = 19 begin_month = NOVEMBER - drone_hat = /obj/item/food/grown/moonflower + holiday_hat = /obj/item/food/grown/moonflower /datum/holiday/hello name = "Saying-'Hello' Day" @@ -572,7 +671,7 @@ begin_day = 1 begin_month = DECEMBER end_day = 31 - drone_hat = /obj/item/clothing/head/costume/santa + holiday_hat = /obj/item/clothing/head/costume/santa /datum/holiday/festive_season/greet() return "Have a nice festive season!" @@ -586,21 +685,23 @@ name = MONKEYDAY begin_day = 14 begin_month = DECEMBER - drone_hat = /obj/item/clothing/mask/gas/monkeymask /datum/holiday/doomsday name = "Mayan Doomsday Anniversary" begin_day = 21 begin_month = DECEMBER - drone_hat = /obj/item/clothing/mask/animal/small/tribal /datum/holiday/xmas name = CHRISTMAS begin_day = 23 begin_month = DECEMBER end_day = 27 - drone_hat = /obj/item/clothing/head/costume/santa + holiday_hat = /obj/item/clothing/head/costume/santa mail_holiday = TRUE + holiday_colors = list( + COLOR_CHRISTMAS_GREEN, + COLOR_CHRISTMAS_RED, + ) /datum/holiday/xmas/greet() return "Have a merry Christmas!" @@ -616,7 +717,7 @@ begin_month = DECEMBER end_day = 2 end_month = JANUARY - drone_hat = /obj/item/clothing/head/costume/festive + holiday_hat = /obj/item/clothing/head/costume/festive mail_holiday = TRUE /datum/holiday/new_year/getStationPrefix() @@ -706,7 +807,6 @@ /datum/holiday/hebrew/passover/getStationPrefix() return pick("Matzah", "Moses", "Red Sea") - // HOLIDAY ADDONS /datum/holiday/xmas/celebrate() @@ -732,7 +832,7 @@ /datum/holiday/easter name = EASTER - drone_hat = /obj/item/clothing/head/costume/rabbitears + holiday_hat = /obj/item/clothing/head/costume/rabbitears var/const/days_early = 1 //to make editing the holiday easier var/const/days_extra = 1 diff --git a/code/modules/holiday/nth_week.dm b/code/modules/holiday/nth_week.dm index 55cfec74be6e..ef4815de0664 100644 --- a/code/modules/holiday/nth_week.dm +++ b/code/modules/holiday/nth_week.dm @@ -35,7 +35,7 @@ begin_week = 4 begin_month = NOVEMBER begin_weekday = THURSDAY - drone_hat = /obj/item/clothing/head/hats/tophat //This is the closest we can get to a pilgrim's hat + holiday_hat = /obj/item/clothing/head/hats/tophat //This is the closest we can get to a pilgrim's hat /datum/holiday/nth_week/thanksgiving/canada name = "Thanksgiving in Canada" diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index aca2324fc8fe..025c3457830d 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -100,13 +100,14 @@ . = ..() if(.) return - if(user.stat || machine_stat & (NOPOWER|BROKEN)) + if(machine_stat & (NOPOWER|BROKEN)) to_chat(user, span_warning("This device is not powered!")) return - currentarea = get_area(src.loc) - if(!currentarea) + currentarea = get_area(src) + if(isnull(currentarea)) qdel(src) + return if(eventstarted) to_chat(usr, span_warning("The event has already begun!")) @@ -118,10 +119,12 @@ var/numbuttons = 0 var/numready = 0 - for(var/obj/machinery/readybutton/button in currentarea) - numbuttons++ - if (button.ready) - numready++ + for(var/list/zlevel_turfs as anything in currentarea.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + for(var/obj/machinery/readybutton/button in area_turf) + numbuttons++ + if(button.ready) + numready++ if(numbuttons == numready) begin_event() @@ -134,12 +137,14 @@ eventstarted = TRUE - for(var/obj/structure/window/W in currentarea) - if(W.flags_1&NODECONSTRUCT_1) // Just in case: only holo-windows - qdel(W) + for(var/list/zlevel_turfs as anything in currentarea.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + for(var/obj/structure/window/barrier in area_turf) + if(barrier.flags_1 & (NODECONSTRUCT_1 | HOLOGRAM_1))// Just in case: only holo-windows + qdel(barrier) - for(var/mob/M in currentarea) - to_chat(M, span_userdanger("FIGHT!")) + for(var/mob/contestant in area_turf) + to_chat(contestant, span_userdanger("FIGHT!")) /obj/machinery/conveyor/holodeck diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index 3b94cebeab6a..8d88dba452f6 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -23,7 +23,7 @@ growthstages = 4 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list(/datum/reagent/medicine/morphine = 0.35, /datum/reagent/medicine/c2/multiver = 0.35, /datum/reagent/consumable/nutriment = 0) + reagents_add = list(/datum/reagent/medicine/painkiller/morphine = 0.35, /datum/reagent/medicine/c2/multiver = 0.35, /datum/reagent/consumable/nutriment = 0) graft_gene = /datum/plant_gene/trait/plant_type/fungal_metabolism /obj/item/food/grown/mushroom/reishi diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm index 9231102097f4..1f816c79360e 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -89,4 +89,4 @@ name = "coffee robusta beans" desc = "Increases robustness by 37 percent!" icon_state = "coffee_robusta" - grind_results = list(/datum/reagent/toxin/coffeepowder = 0, /datum/reagent/medicine/morphine = 0) + grind_results = list(/datum/reagent/toxin/coffeepowder = 0, /datum/reagent/medicine/painkiller/morphine = 0) diff --git a/code/modules/hydroponics/grown/tobacco.dm b/code/modules/hydroponics/grown/tobacco.dm index 08e1ec675fd8..d6f41b812769 100644 --- a/code/modules/hydroponics/grown/tobacco.dm +++ b/code/modules/hydroponics/grown/tobacco.dm @@ -13,7 +13,7 @@ growthstages = 3 icon_dead = "tobacco-dead" possible_mutations = list(/datum/hydroponics/plant_mutation/space_tobacco) - reagents_add = list(/datum/reagent/drug/nicotine = 0.03, /datum/reagent/consumable/nutriment = 0.03) + reagents_add = list(/datum/reagent/drug/nicotine = 0.03) ///datum/reagent/consumable/nutriment = 0.03 Thy shall not get fat from smoking /obj/item/food/grown/tobacco seed = /obj/item/seeds/tobacco @@ -31,7 +31,7 @@ plantname = "Space Tobacco Plant" product = /obj/item/food/grown/tobacco/space possible_mutations = list() - reagents_add = list(/datum/reagent/medicine/salbutamol = 0.05, /datum/reagent/drug/nicotine = 0.08, /datum/reagent/consumable/nutriment = 0.03) + reagents_add = list(/datum/reagent/medicine/salbutamol = 0.05, /datum/reagent/drug/nicotine = 0.08) ///datum/reagent/consumable/nutriment = 0.03 Thy shall not get fat from smoking rarity = 20 /obj/item/food/grown/tobacco/space diff --git a/code/modules/industrial_lift/tram/tram_floors.dm b/code/modules/industrial_lift/tram/tram_floors.dm index 83f82e2d131d..3d4cff43ccbd 100644 --- a/code/modules/industrial_lift/tram/tram_floors.dm +++ b/code/modules/industrial_lift/tram/tram_floors.dm @@ -1,8 +1,15 @@ +/turf/open/floor/noslip/tram + name = "high-traction platform" + icon_state = "noslip_tram" + base_icon_state = "noslip_tram" + floor_tile = /obj/item/stack/tile/noslip/tram + /turf/open/floor/noslip/tram_plate name = "linear induction plate" desc = "The linear induction plate that powers the tram." icon_state = "tram_plate" base_icon_state = "tram_plate" + floor_tile = /obj/item/stack/tile/noslip/tram_plate slowdown = 0 flags_1 = NONE @@ -15,9 +22,9 @@ /turf/open/floor/noslip/tram_platform name = "tram platform" - desc = "A sturdy looking tram platform." icon_state = "tram_platform" base_icon_state = "tram_platform" + floor_tile = /obj/item/stack/tile/noslip/tram_platform slowdown = 0 /turf/open/floor/noslip/tram_plate/broken_states() diff --git a/code/modules/interview/interview_manager.dm b/code/modules/interview/interview_manager.dm index 9c2961e0a53e..c8d0a8677b14 100644 --- a/code/modules/interview/interview_manager.dm +++ b/code/modules/interview/interview_manager.dm @@ -29,7 +29,7 @@ GLOBAL_DATUM_INIT(interviews, /datum/interview_manager, new) return approved_ckeys = json -/datum/interview_manager/Destroy(force, ...) +/datum/interview_manager/Destroy(force) SSpersistence.save_keys(approved_ckeys) QDEL_LIST(open_interviews) QDEL_LIST(interview_queue) diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index a39f45555cb9..6960ab4b8a94 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -103,7 +103,7 @@ /// List of family heirlooms this job can get with the family heirloom quirk. List of types. var/list/family_heirlooms - /// All values = (JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN) + /// All values = (JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN | JOB_CANNOT_OPEN_SLOTS) var/job_flags = NONE /// Multiplier for general usage of the voice of god. diff --git a/code/modules/jobs/job_types/ai.dm b/code/modules/jobs/job_types/ai.dm index 22763cee110d..8c813fa156a9 100644 --- a/code/modules/jobs/job_types/ai.dm +++ b/code/modules/jobs/job_types/ai.dm @@ -19,7 +19,7 @@ /datum/job_department/silicon, ) random_spawns_possible = FALSE - job_flags = JOB_NEW_PLAYER_JOINABLE | JOB_EQUIP_RANK | JOB_BOLD_SELECT_TEXT + job_flags = JOB_NEW_PLAYER_JOINABLE | JOB_EQUIP_RANK | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS var/do_special_check = TRUE config_tag = "AI" diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index f009bd938856..037b86f03fe4 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -31,7 +31,7 @@ Assistant /obj/item/crowbar/large = 1 ) - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS rpg_title = "Lout" config_tag = "ASSISTANT" @@ -43,6 +43,12 @@ Assistant /datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/target) ..() + for(var/holidayname in GLOB.holidays) + var/datum/holiday/holiday_today = GLOB.holidays[holidayname] + var/obj/item/special_hat = holiday_today.holiday_hat + if(prob(HOLIDAY_HAT_CHANCE) && !isnull(special_hat) && isnull(head)) + head = special_hat + give_jumpsuit(target) /datum/outfit/job/assistant/proc/give_jumpsuit(mob/living/carbon/human/target) diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index b5c38f4fe589..77f52fd8ab60 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -35,7 +35,7 @@ /obj/item/grenade/gas_crystal/nitrous_oxide_crystal = 5, ) - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS rpg_title = "Aeromancer" /datum/outfit/job/atmos diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index ec526e10d915..0d33c968e563 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -29,7 +29,7 @@ /obj/item/stack/sheet/mineral/uranium = 10, ) - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS rpg_title = "Tavernkeeper" /datum/job/bartender/award_service(client/winner, award) diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm index 9486cc6e4c30..d977b221b474 100644 --- a/code/modules/jobs/job_types/botanist.dm +++ b/code/modules/jobs/job_types/botanist.dm @@ -36,7 +36,7 @@ /obj/item/food/monkeycube/bee = 2 ) - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS rpg_title = "Gardener" /datum/outfit/job/botanist diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index d4e41d63b364..48f0d569f5e1 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -42,7 +42,7 @@ /obj/item/skillchip/sabrage = 5, ) - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS rpg_title = "Star Duke" voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index b277200c03f3..27c9723af780 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -33,7 +33,7 @@ /obj/item/gun/ballistic/automatic/wt550 = 1, ) rpg_title = "Merchantman" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS /datum/outfit/job/cargo_tech diff --git a/code/modules/jobs/job_types/chaplain/chaplain.dm b/code/modules/jobs/job_types/chaplain/chaplain.dm index 37c9d669d6da..bb5cfcd67538 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain.dm @@ -31,7 +31,7 @@ /obj/item/toy/plush/ratplush = 1 ) rpg_title = "Paladin" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS voice_of_god_power = 2 //Chaplains are very good at speaking with the voice of god @@ -42,61 +42,59 @@ . = ..() if(!ishuman(spawned)) return - var/mob/living/carbon/human/H = spawned - var/obj/item/storage/book/bible/booze/B = new - + var/mob/living/carbon/human/human_spawned = spawned + var/obj/item/book/bible/booze/holy_bible = new if(GLOB.religion) - if(H.mind) - H.mind.holy_role = HOLY_ROLE_PRIEST - B.deity_name = GLOB.deity - B.name = GLOB.bible_name + if(human_spawned.mind) + human_spawned.mind.holy_role = HOLY_ROLE_PRIEST + holy_bible.deity_name = GLOB.deity + holy_bible.name = GLOB.bible_name // These checks are important as there's no guarantee the "HOLY_ROLE_HIGHPRIEST" chaplain has selected a bible skin. if(GLOB.bible_icon_state) - B.icon_state = GLOB.bible_icon_state + holy_bible.icon_state = GLOB.bible_icon_state if(GLOB.bible_inhand_icon_state) - B.inhand_icon_state = GLOB.bible_inhand_icon_state - to_chat(H, span_boldnotice("There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.")) - H.equip_to_slot_or_del(B, ITEM_SLOT_BACKPACK) + holy_bible.inhand_icon_state = GLOB.bible_inhand_icon_state + to_chat(human_spawned, span_boldnotice("There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.")) + human_spawned.equip_to_slot_or_del(holy_bible, ITEM_SLOT_BACKPACK) var/nrt = GLOB.holy_weapon_type || /obj/item/nullrod - var/obj/item/nullrod/N = new nrt(H) - H.put_in_hands(N) + var/obj/item/nullrod/nullrod = new nrt(human_spawned) + human_spawned.put_in_hands(nullrod) if(GLOB.religious_sect) - GLOB.religious_sect.on_conversion(H) + GLOB.religious_sect.on_conversion(human_spawned) return - if(H.mind) - H.mind.holy_role = HOLY_ROLE_HIGHPRIEST + if(human_spawned.mind) + human_spawned.mind.holy_role = HOLY_ROLE_HIGHPRIEST var/new_religion = player_client?.prefs?.read_preference(/datum/preference/name/religion) || DEFAULT_RELIGION var/new_deity = player_client?.prefs?.read_preference(/datum/preference/name/deity) || DEFAULT_DEITY var/new_bible = player_client?.prefs?.read_preference(/datum/preference/name/bible) || DEFAULT_BIBLE - B.deity_name = new_deity - + holy_bible.deity_name = new_deity switch(lowertext(new_religion)) if("lol", "wtf", "poo", "badmin", "shitmin", "deadmin", "meme", "memes") new_bible = pick("Sweet Bro and Hella Jeff: Expanded Edition","F.A.T.A.L. Rulebook") switch(new_bible) if("Sweet Bro and Hella Jeff: Expanded Edition") - B.deity_name = pick("Sweet Bro", "Hella Jeff", "Stairs", "AH") + holy_bible.deity_name = pick("Sweet Bro", "Hella Jeff", "Stairs", "AH") if("F.A.T.A.L. Rulebook") - B.deity_name = "Twenty Ten-Sided Dice" - H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 100) // also starts off brain damaged as fuck + holy_bible.deity_name = "Twenty Ten-Sided Dice" + human_spawned.adjustOrganLoss(ORGAN_SLOT_BRAIN, 100) // also starts off brain damaged as fuck if("servicianism", "partying") - B.desc = "Happy, Full, Clean. Live it and give it." + holy_bible.desc = "Happy, Full, Clean. Live it and give it." if("weeaboo","kawaii") new_bible = pick("Fanfiction Compendium","Japanese for Dummies","The Manganomicon","Establishing Your O.T.P") - B.deity_name = "Anime" + holy_bible.deity_name = "Anime" else if(new_bible == DEFAULT_BIBLE) new_bible = DEFAULT_BIBLE_REPLACE(new_bible) - B.name = new_bible + holy_bible.name = new_bible GLOB.religion = new_religion GLOB.bible_name = new_bible - GLOB.deity = B.deity_name + GLOB.deity = holy_bible.deity_name - H.equip_to_slot_or_del(B, ITEM_SLOT_BACKPACK) + human_spawned.equip_to_slot_or_del(holy_bible, ITEM_SLOT_BACKPACK) SSblackbox.record_feedback("text", "religion_name", 1, "[new_religion]", 1) SSblackbox.record_feedback("text", "religion_deity", 1, "[new_deity]", 1) diff --git a/code/modules/jobs/job_types/chaplain/chaplain_costumes.dm b/code/modules/jobs/job_types/chaplain/chaplain_costumes.dm index 936c558aebba..c0751b2e3d1b 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain_costumes.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain_costumes.dm @@ -1,7 +1,7 @@ //Chaplain Suit Subtypes //If any new staple chaplain items get added, put them in these lists /obj/item/clothing/suit/chaplainsuit - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/flashlight/flare/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/flashlight/flare/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) icon = 'icons/obj/clothing/suits/chaplain.dmi' worn_icon = 'icons/mob/clothing/suits/chaplain.dmi' @@ -24,7 +24,7 @@ wound = 20 /obj/item/clothing/suit/hooded/chaplainsuit - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/flashlight/flare/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/flashlight/flare/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) //Suits /obj/item/clothing/suit/chaplainsuit/holidaypriest @@ -134,7 +134,7 @@ desc = "It sounds like hissing steam, ticking cogs, gone silent, It looks like a dead machine, trying to tick with life." icon_state = "clockwork_cuirass" inhand_icon_state = null - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/flashlight/flare/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/flashlight/flare/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) slowdown = 0 clothing_flags = NONE @@ -164,7 +164,7 @@ desc = "God wills it!" icon_state = "knight_templar" inhand_icon_state = null - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/flashlight/flare/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/flashlight/flare/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) slowdown = 0 clothing_flags = NONE @@ -242,7 +242,7 @@ worn_icon = 'icons/mob/clothing/suits/chaplain.dmi' inhand_icon_state = null body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/flashlight/flare/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/flashlight/flare/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) hoodtype = /obj/item/clothing/head/hooded/chaplain_hood /obj/item/clothing/head/hooded/chaplain_hood diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index 4393066100a7..e4e545553b32 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -35,7 +35,7 @@ /obj/item/paper/secretrecipe = 1 ) rpg_title = "Alchemist" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS /datum/outfit/job/chemist diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index 9ef561013e1b..ce4d6c9e4745 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -43,7 +43,7 @@ /obj/effect/spawner/random/engineering/tool_advanced = 3 ) rpg_title = "Head Crystallomancer" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index daebcfa9d845..a89172e44e66 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -40,7 +40,7 @@ ) family_heirlooms = list(/obj/item/storage/medkit/ancient/heirloom, /obj/item/scalpel, /obj/item/hemostat, /obj/item/circular_saw, /obj/item/retractor, /obj/item/cautery) rpg_title = "High Cleric" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index 0bd6ad84a1b1..b535d0f2b783 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -33,7 +33,7 @@ family_heirlooms = list(/obj/item/bikehorn/golden) rpg_title = "Jester" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS job_tone = "honk" @@ -113,4 +113,3 @@ var/datum/atom_hud/fan = GLOB.huds[DATA_HUD_FAN] fan.show_to(H) H.faction |= FACTION_CLOWN - diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm index edbc4f625bdb..a7544a1a5eb9 100644 --- a/code/modules/jobs/job_types/cook.dm +++ b/code/modules/jobs/job_types/cook.dm @@ -46,7 +46,7 @@ ) rpg_title = "Tavern Chef" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS /datum/job/cook/award_service(client/winner, award) winner.give_award(award, winner.mob) diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm index dd2ca0563808..41d989ed6b9f 100644 --- a/code/modules/jobs/job_types/curator.dm +++ b/code/modules/jobs/job_types/curator.dm @@ -30,7 +30,7 @@ family_heirlooms = list(/obj/item/pen/fountain, /obj/item/storage/dice) - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS voice_of_god_silence_power = 3 rpg_title = "Veteran Adventurer" diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm index 43885a875e4e..c51dc10a1eea 100644 --- a/code/modules/jobs/job_types/cyborg.dm +++ b/code/modules/jobs/job_types/cyborg.dm @@ -19,7 +19,7 @@ /datum/job_department/silicon, ) random_spawns_possible = FALSE - job_flags = JOB_NEW_PLAYER_JOINABLE | JOB_EQUIP_RANK + job_flags = JOB_NEW_PLAYER_JOINABLE | JOB_EQUIP_RANK | JOB_CANNOT_OPEN_SLOTS /datum/job/cyborg/after_spawn(mob/living/spawned, client/player_client) diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 4b44a3a4ae24..b6984e24b422 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -40,7 +40,7 @@ family_heirlooms = list(/obj/item/reagent_containers/cup/glass/bottle/whiskey) rpg_title = "Thiefcatcher" //I guess they caught them all rip thief... - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS job_tone = "objection" diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index be1af0f60edc..7966128f02c5 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -29,7 +29,7 @@ family_heirlooms = list(/obj/item/clothing/under/shorts/purple) rpg_title = "Genemancer" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS /datum/outfit/job/geneticist diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index 169260079dda..2ad677fc97c1 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -40,7 +40,7 @@ family_heirlooms = list(/obj/item/reagent_containers/cup/glass/trophy/silver_cup) rpg_title = "Guild Questgiver" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS voice_of_god_power = 1.4 //Command staff has authority @@ -73,7 +73,7 @@ /datum/outfit/job/hop/pre_equip(mob/living/carbon/human/H) ..() - if(check_holidays("Ian's Birthday")) + if(check_holidays(IAN_HOLIDAY)) undershirt = /datum/sprite_accessory/undershirt/ian //only pet worth reviving diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 259c828f47c0..c3372bacfc67 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -34,7 +34,7 @@ family_heirlooms = list(/obj/item/book/manual/wiki/security_space_law) rpg_title = "Guard Leader" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm index aca74c5be957..13a3496c609d 100644 --- a/code/modules/jobs/job_types/janitor.dm +++ b/code/modules/jobs/job_types/janitor.dm @@ -28,7 +28,7 @@ /obj/item/lightreplacer = 10 ) rpg_title = "Groundskeeper" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS job_tone = "slip" @@ -41,6 +41,7 @@ belt = /obj/item/modular_computer/pda/janitor ears = /obj/item/radio/headset/headset_srv skillchips = list(/obj/item/skillchip/job/janitor) + backpack_contents = list(/obj/item/access_key) /datum/outfit/job/janitor/pre_equip(mob/living/carbon/human/human_equipper, visuals_only) . = ..() @@ -48,11 +49,6 @@ backpack_contents += list(/obj/item/gun/ballistic/revolver) r_pocket = /obj/item/ammo_box/a357 - var/static/access_key_given = FALSE - if(!access_key_given && !visuals_only) - access_key_given = TRUE - backpack_contents += list(/obj/item/access_key) - /datum/outfit/job/janitor/get_types_to_preload() . = ..() if(check_holidays(GARBAGEDAY)) diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm index 38d55e85c285..a25a1d86d3ad 100644 --- a/code/modules/jobs/job_types/lawyer.dm +++ b/code/modules/jobs/job_types/lawyer.dm @@ -25,7 +25,7 @@ rpg_title = "Magistrate" family_heirlooms = list(/obj/item/gavelhammer, /obj/item/book/manual/wiki/security_space_law) - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS job_tone = "objection" diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index e8f064fd5456..049ca7489578 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -36,7 +36,7 @@ /obj/effect/spawner/random/medical/memeorgans = 1 ) rpg_title = "Cleric" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS /datum/outfit/job/doctor diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm index 9be0af70b651..97a84511a2ad 100644 --- a/code/modules/jobs/job_types/mime.dm +++ b/code/modules/jobs/job_types/mime.dm @@ -29,7 +29,7 @@ /obj/item/book/mimery = 1, ) rpg_title = "Fool" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS voice_of_god_power = 0.5 //Why are you speaking voice_of_god_silence_power = 3 diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm index c9dad2aa0a66..76c6e10dabf4 100644 --- a/code/modules/jobs/job_types/paramedic.dm +++ b/code/modules/jobs/job_types/paramedic.dm @@ -35,7 +35,7 @@ /obj/item/reagent_containers/hypospray/medipen/survival/luxury = 5 ) rpg_title = "Corpse Runner" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS /datum/outfit/job/paramedic diff --git a/code/modules/jobs/job_types/prisoner.dm b/code/modules/jobs/job_types/prisoner.dm index 60871e29ea25..e931a34f5ae6 100644 --- a/code/modules/jobs/job_types/prisoner.dm +++ b/code/modules/jobs/job_types/prisoner.dm @@ -7,6 +7,10 @@ spawn_positions = 5 supervisors = "the security team" exp_granted_type = EXP_TYPE_CREW + exp_requirements = 300 + exp_required_type = EXP_TYPE_CREW + exp_required_type_department = EXP_TYPE_SECURITY + exp_granted_type = EXP_TYPE_CREW paycheck = PAYCHECK_LOWER config_tag = "PRISONER" @@ -23,7 +27,7 @@ family_heirlooms = list(/obj/item/pen/blue) rpg_title = "Defeated Miniboss" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN | JOB_CANNOT_OPEN_SLOTS /datum/job/prisoner/New() . = ..() @@ -41,11 +45,13 @@ else if(crime_name == "Random") crime_name = pick(assoc_to_keys(GLOB.prisoner_crimes)) + /* monkestation removal: doesn't work bc manifest gets injected AFTER [COMSIG_GLOB_CREWMEMBER_JOINED] var/datum/prisoner_crime/crime = GLOB.prisoner_crimes[crime_name] var/datum/record/crew/target_record = crewmember.mind?.crewfile || find_record(crewmember.real_name) var/datum/crime/past_crime = new(crime.name, crime.desc, "Central Command", "Indefinite.") target_record?.crimes += past_crime target_record.recreate_manifest_photos(add_height_chart = TRUE) + monkestation end */ to_chat(crewmember, span_warning("You are imprisoned for \"[crime_name]\".")) crewmember.add_mob_memory(/datum/memory/key/permabrig_crimes, crimes = crime_name) diff --git a/code/modules/jobs/job_types/psychologist.dm b/code/modules/jobs/job_types/psychologist.dm index b39babc00450..440adbda9d0c 100644 --- a/code/modules/jobs/job_types/psychologist.dm +++ b/code/modules/jobs/job_types/psychologist.dm @@ -31,7 +31,7 @@ /obj/item/gun/syringe = 1 ) rpg_title = "Snake Oil Salesman" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS /datum/outfit/job/psychologist diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index 49d26f09d62a..7088b76c35e7 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -32,7 +32,7 @@ /obj/item/circuitboard/machine/emitter = 3 ) rpg_title = "Steward" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS ignore_human_authority = TRUE /datum/outfit/job/quartermaster diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index d0d711411061..b8ba0f237606 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -41,7 +41,7 @@ family_heirlooms = list(/obj/item/toy/plush/slimeplushie) rpg_title = "Archmagister" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm index 83ea82c129dd..becff790c07a 100644 --- a/code/modules/jobs/job_types/roboticist.dm +++ b/code/modules/jobs/job_types/roboticist.dm @@ -31,7 +31,7 @@ family_heirlooms = list(/obj/item/toy/plush/pkplush) rpg_title = "Necromancer" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS /datum/job/roboticist/New() diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm index 5d4cc75b9b8b..06be18a02b6e 100644 --- a/code/modules/jobs/job_types/scientist.dm +++ b/code/modules/jobs/job_types/scientist.dm @@ -32,7 +32,7 @@ /obj/item/disk/design_disk/bepis = 2, ) rpg_title = "Thaumaturgist" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS job_tone = "boom" diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index c80bccb55d94..f299c690577f 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -38,7 +38,7 @@ /obj/item/melee/baton/security/boomerang/loaded = 1 ) rpg_title = "Guard" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, SEC_DEPT_SCIENCE, SEC_DEPT_SUPPLY)) @@ -121,13 +121,11 @@ GLOBAL_LIST_EMPTY(security_officer_distribution) qdel(spawning.ears) spawning.equip_to_slot_or_del(new ears(spawning),ITEM_SLOT_EARS) - //monkestation edit start: add dept sec outfits + //monkestation edit start: add dept sec outfitsif(suit) if(suit) - for(var/obj/item/gun/ballistic/automatic/pistol/paco/no_mag/stored in spawning.contents) - if(spawning.wear_suit) - qdel(spawning.wear_suit) - spawning.equip_to_slot_or_del(new suit(spawning),ITEM_SLOT_OCLOTHING) - spawning.equip_to_slot_or_del(stored,ITEM_SLOT_SUITSTORE) + if(spawning.wear_suit) + qdel(spawning.wear_suit) + spawning.equip_to_slot_or_del(new suit(spawning),ITEM_SLOT_OCLOTHING) if(head) if(spawning.head && !isplasmaman(spawning)) qdel(spawning.head) @@ -224,10 +222,10 @@ GLOBAL_LIST_EMPTY(security_officer_distribution) uniform = /obj/item/clothing/under/rank/security/officer head = /obj/item/clothing/head/helmet/hat/cowboy //monkestation edit: cowboy sec suit = /obj/item/clothing/suit/armor/secduster //monkestation edit: cowboy sec - suit_store = /obj/item/gun/ballistic/automatic/pistol/paco/no_mag //monkestation edit: Paco sec backpack_contents = list( /obj/item/evidencebag = 1, - /obj/item/ammo_box/magazine/m35/rubber = 2, //monkestation edit: Paco sec + /obj/item/ammo_box/magazine/m35/rubber = 2, + /obj/item/gun/ballistic/automatic/pistol/paco/no_mag, //monkestation edit: Paco sec ) belt = /obj/item/modular_computer/pda/security ears = /obj/item/radio/headset/headset_sec/alt diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 4e4e55496d0d..db7fff237cdd 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -26,7 +26,7 @@ family_heirlooms = list(/obj/item/pickaxe/mini, /obj/item/shovel) rpg_title = "Adventurer" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS /datum/outfit/job/miner diff --git a/code/modules/jobs/job_types/spawner/lavaland_syndicate.dm b/code/modules/jobs/job_types/spawner/lavaland_syndicate.dm index a22e798274af..984c87b42cea 100644 --- a/code/modules/jobs/job_types/spawner/lavaland_syndicate.dm +++ b/code/modules/jobs/job_types/spawner/lavaland_syndicate.dm @@ -1,3 +1,4 @@ /datum/job/lavaland_syndicate title = ROLE_LAVALAND_SYNDICATE policy_index = ROLE_LAVALAND_SYNDICATE + diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index 343752ea2fb3..f636058677ec 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -36,7 +36,7 @@ /obj/item/clothing/head/utility/hardhat/red/upgraded = 1 ) rpg_title = "Crystallomancer" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS /datum/outfit/job/engineer diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index b8b68b478b74..5ea786330b18 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -44,7 +44,7 @@ // End Monkestation Addition ) rpg_title = "Plague Doctor" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + job_flags = STATION_JOB_FLAGS /datum/outfit/job/virologist diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index 2179908c57d7..62e7dc9e2058 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -40,8 +40,7 @@ /obj/item/storage/box/lethalshot = 5 ) rpg_title = "Jailor" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN - + job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT /datum/outfit/job/warden name = "Warden" diff --git a/code/modules/library/bibles.dm b/code/modules/library/bibles.dm new file mode 100644 index 000000000000..564104baa9a3 --- /dev/null +++ b/code/modules/library/bibles.dm @@ -0,0 +1,367 @@ +GLOBAL_LIST_INIT(biblenames, list( + "Bible", + "Quran", + "Scrapbook", + "Burning Bible", + "Clown Bible", + "Banana Bible", + "Creeper Bible", + "White Bible", + "Holy Light", + "The God Delusion", + "Tome", + "The King in Yellow", + "Ithaqua", + "Scientology", + "Melted Bible", + "Necronomicon", + "Insulationism", + "Guru Granth Sahib", + "Kojiki", +)) +//If you get these two lists not matching in size, there will be runtimes and I will hurt you in ways you couldn't even begin to imagine +// if your bible has no custom itemstate, use one of the existing ones +GLOBAL_LIST_INIT(biblestates, list( + "bible", + "koran", + "scrapbook", + "burning", + "honk1", + "honk2", + "creeper", + "white", + "holylight", + "atheist", + "tome", + "kingyellow", + "ithaqua", + "scientology", + "melted", + "necronomicon", + "insuls", + "gurugranthsahib", + "kojiki", +)) +GLOBAL_LIST_INIT(bibleitemstates, list( + "bible", + "koran", + "scrapbook", + "burning", + "honk1", + "honk2", + "creeper", + "white", + "holylight", + "atheist", + "tome", + "kingyellow", + "ithaqua", + "scientology", + "melted", + "necronomicon", + "kingyellow", + "gurugranthsahib", + "kojiki", +)) + +/obj/item/book/bible + name = "bible" + desc = "Apply to head repeatedly." + icon = 'icons/obj/storage/book.dmi' + icon_state = "bible" + worn_icon_state = "bible" + inhand_icon_state = "bible" + lefthand_file = 'icons/mob/inhands/items/books_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/books_righthand.dmi' + force_string = "holy" + unique = TRUE + /// Deity this bible is related to + var/deity_name = "Space Jesus" + +/obj/item/book/bible/Initialize(mapload) + . = ..() + AddComponent(/datum/component/anti_magic, MAGIC_RESISTANCE_HOLY) + carve_out() + +/obj/item/book/bible/examine(mob/user) + . = ..() + if(deity_name) + . += span_notice("This bible has been approved by [deity_name].") + if(user.mind?.holy_role) + if(GLOB.chaplain_altars.len) + . += span_notice("[src] has an expansion pack to replace any broken Altar.") + else + . += span_notice("[src] can be unpacked by hitting the floor of a holy area with it.") + +/obj/item/book/bible/burn_paper_product_attackby_check(obj/item/attacking_item, mob/living/user, bypass_clumsy) + . = ..() + // no deity to cast a curse upon thee + if(!deity_name) + return + if(. && (resistance_flags & ON_FIRE)) + var/datum/component/omen/existing_omen = user.GetComponent(/datum/component/omen) + //DOUBLE CURSED?! Just straight up gib the guy. + if(existing_omen) + to_chat(user, span_userdanger("[deity_name] SMITE thee!")) + add_memory_in_range(user, 7, /datum/memory/witnessed_gods_wrath, protagonist = user, deuteragonist = src, antagonist = deity_name) + user.client?.give_award(/datum/award/achievement/misc/gods_wrath, user) + user.gib() + else + to_chat(user, span_userdanger("[deity_name] cast a curse upon thee!")) + user.AddComponent(/datum/component/omen/bible) + +/obj/item/book/bible/carve_out(obj/item/carving_item, mob/living/user) + . = ..() + atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL + +/obj/item/book/bible/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] is offering [user.p_them()]self to [deity_name]! It looks like [user.p_theyre()] trying to commit suicide!")) + return BRUTELOSS + +/obj/item/book/bible/attack_self(mob/living/carbon/human/user) + if(GLOB.bible_icon_state) + return FALSE + if(user?.mind?.holy_role != HOLY_ROLE_HIGHPRIEST) + return FALSE + + var/list/skins = list() + for(var/i in 1 to GLOB.biblestates.len) + var/image/bible_image = image(icon = 'icons/obj/storage/book.dmi', icon_state = GLOB.biblestates[i]) + skins += list("[GLOB.biblenames[i]]" = bible_image) + + var/choice = show_radial_menu(user, src, skins, custom_check = CALLBACK(src, PROC_REF(check_menu), user), radius = 40, require_near = TRUE) + if(!choice) + return FALSE + var/bible_index = GLOB.biblenames.Find(choice) + if(!bible_index) + return FALSE + icon_state = GLOB.biblestates[bible_index] + inhand_icon_state = GLOB.bibleitemstates[bible_index] + + switch(icon_state) + if("honk1") + user.dna.add_mutation(/datum/mutation/human/clumsy) + user.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(user), ITEM_SLOT_MASK) + AddComponent(/datum/component/slippery, 40) //Same as a synthesized banana peel. + if("honk2") + user.dna.add_mutation(/datum/mutation/human/clumsy) + user.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(user), ITEM_SLOT_MASK) + AddComponent(/datum/component/slippery, 40) //Same as a synthesized banana peel. + if("insuls") + var/obj/item/clothing/gloves/color/fyellow/insuls = new + insuls.name = "insuls" + insuls.desc = "A mere copy of the true insuls." + insuls.siemens_coefficient = 0.99999 + user.equip_to_slot(insuls, ITEM_SLOT_GLOVES) + GLOB.bible_icon_state = icon_state + GLOB.bible_inhand_icon_state = inhand_icon_state + SSblackbox.record_feedback("text", "religion_book", 1, "[choice]") + +/** + * Checks if we are allowed to interact with a radial menu + * + * Arguments: + * * user The mob interacting with the menu + */ +/obj/item/book/bible/proc/check_menu(mob/living/carbon/human/user) + if(GLOB.bible_icon_state) + return FALSE + if(!istype(user) || !user.is_holding(src)) + return FALSE + if(user.incapacitated()) + return FALSE + if(user.mind?.holy_role != HOLY_ROLE_HIGHPRIEST) + return FALSE + return TRUE + +/obj/item/book/bible/proc/make_new_altar(atom/bible_smacked, mob/user) + var/new_altar_area = get_turf(bible_smacked) + + balloon_alert(user, "unpacking bible...") + if(!do_after(user, 15 SECONDS, new_altar_area)) + return + new /obj/structure/altar_of_gods(new_altar_area) + qdel(src) + +/obj/item/book/bible/proc/bless(mob/living/blessed, mob/living/user) + if(GLOB.religious_sect) + return GLOB.religious_sect.sect_bless(blessed,user) + if(!ishuman(blessed)) + return + var/mob/living/carbon/human/built_in_his_image = blessed + for(var/obj/item/bodypart/bodypart as anything in built_in_his_image.bodyparts) + if(!IS_ORGANIC_LIMB(bodypart)) + balloon_alert(user, "can't heal metal!") + return FALSE + + var/heal_amt = 10 + var/list/hurt_limbs = built_in_his_image.get_damaged_bodyparts(1, 1, BODYTYPE_ORGANIC) + if(length(hurt_limbs)) + for(var/obj/item/bodypart/affecting as anything in hurt_limbs) + if(affecting.heal_damage(heal_amt, heal_amt, BODYTYPE_ORGANIC)) + built_in_his_image.update_damage_overlays() + built_in_his_image.visible_message(span_notice("[user] heals [built_in_his_image] with the power of [deity_name]!")) + to_chat(built_in_his_image, span_boldnotice("May the power of [deity_name] compel you to be healed!")) + playsound(built_in_his_image, SFX_PUNCH, 25, TRUE, -1) + built_in_his_image.add_mood_event("blessing", /datum/mood_event/blessing) + return TRUE + +/obj/item/book/bible/attack(mob/living/target_mob, mob/living/carbon/human/user, params, heal_mode = TRUE) + if(!ISADVANCEDTOOLUSER(user)) + balloon_alert(user, "not dextrous enough!") + return + + if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) + to_chat(user, span_danger("[src] slips out of your hand and hits your head.")) + user.take_bodypart_damage(10) + user.Unconscious(40 SECONDS) + return + + if(!user.mind?.holy_role) + to_chat(user, span_danger("The book sizzles in your hands.")) + user.take_bodypart_damage(burn = 10) + return + + if(!heal_mode) + return ..() + + if(target_mob.stat == DEAD) + target_mob.visible_message(span_danger("[user] smacks [target_mob]'s lifeless corpse with [src].")) + playsound(target_mob, SFX_PUNCH, 25, TRUE, -1) + return + + if(user == target_mob) + balloon_alert(user, "can't heal yourself!") + return + + var/smack = TRUE + if(prob(60) && bless(target_mob, user)) + smack = FALSE + else if(iscarbon(target_mob)) + var/mob/living/carbon/carbon_target = target_mob + if(!istype(carbon_target.head, /obj/item/clothing/head/helmet)) + carbon_target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 60) + carbon_target.balloon_alert(carbon_target, "you feel dumber!") + if(smack) + target_mob.visible_message(span_danger("[user] beats [target_mob] over the head with [src]!"), \ + span_userdanger("[user] beats [target_mob] over the head with [src]!")) + playsound(target_mob, SFX_PUNCH, 25, TRUE, -1) + log_combat(user, target_mob, "attacked", src) + +/obj/item/book/bible/afterattack(atom/bible_smacked, mob/user, proximity_flag, click_parameters) + . = ..() + if(!proximity_flag) + return + if(SEND_SIGNAL(bible_smacked, COMSIG_BIBLE_SMACKED, user, proximity_flag, click_parameters) & COMSIG_END_BIBLE_CHAIN) + return . | AFTERATTACK_PROCESSED_ITEM + if(isfloorturf(bible_smacked)) + if(user.mind?.holy_role) + var/area/current_area = get_area(bible_smacked) + if(!GLOB.chaplain_altars.len && istype(current_area, /area/station/service/chapel)) + make_new_altar(bible_smacked, user) + return + for(var/obj/effect/rune/nearby_runes in range(2, user)) + nearby_runes.invisibility = 0 + bible_smacked.balloon_alert(user, "floor smacked!") + + if(user.mind?.holy_role) + if(bible_smacked.reagents && bible_smacked.reagents.has_reagent(/datum/reagent/water)) // blesses all the water in the holder + . |= AFTERATTACK_PROCESSED_ITEM + bible_smacked.balloon_alert(user, "blessed") + var/water2holy = bible_smacked.reagents.get_reagent_amount(/datum/reagent/water) + bible_smacked.reagents.del_reagent(/datum/reagent/water) + bible_smacked.reagents.add_reagent(/datum/reagent/water/holywater,water2holy) + if(bible_smacked.reagents && bible_smacked.reagents.has_reagent(/datum/reagent/fuel/unholywater)) // yeah yeah, copy pasted code - sue me + . |= AFTERATTACK_PROCESSED_ITEM + bible_smacked.balloon_alert(user, "purified") + var/unholy2holy = bible_smacked.reagents.get_reagent_amount(/datum/reagent/fuel/unholywater) + bible_smacked.reagents.del_reagent(/datum/reagent/fuel/unholywater) + bible_smacked.reagents.add_reagent(/datum/reagent/water/holywater,unholy2holy) + if(istype(bible_smacked, /obj/item/book/bible) && !istype(bible_smacked, /obj/item/book/bible/syndicate)) + . |= AFTERATTACK_PROCESSED_ITEM + bible_smacked.balloon_alert(user, "converted") + var/obj/item/book/bible/other_bible = bible_smacked + other_bible.name = name + other_bible.icon_state = icon_state + other_bible.inhand_icon_state = inhand_icon_state + other_bible.deity_name = deity_name + + if(istype(bible_smacked, /obj/item/cult_bastard) && !IS_CULTIST(user)) + . |= AFTERATTACK_PROCESSED_ITEM + var/obj/item/cult_bastard/sword = bible_smacked + bible_smacked.balloon_alert(user, "exorcising...") + playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,TRUE) + if(do_after(user, 4 SECONDS, target = sword)) + playsound(src,'sound/effects/pray_chaplain.ogg',60,TRUE) + for(var/obj/item/soulstone/stone in sword.contents) + stone.required_role = null + for(var/mob/living/basic/shade/shade in stone) + var/datum/antagonist/cult/cultist = shade.mind.has_antag_datum(/datum/antagonist/cult) + if(cultist) + cultist.silent = TRUE + cultist.on_removal() + shade.icon_state = "shade_holy" + shade.name = "Purified [shade.name]" + stone.release_shades(user) + qdel(stone) + new /obj/item/nullrod/claymore(get_turf(sword)) + user.visible_message(span_notice("[user] exorcises [sword]!")) + qdel(sword) + +/obj/item/book/bible/booze + desc = "To be applied to the head repeatedly." + +/obj/item/book/bible/booze/Initialize(mapload) + . = ..() + new /obj/item/reagent_containers/cup/glass/bottle/whiskey(src) + +/obj/item/book/bible/syndicate + name = "Syndicate Tome" + desc = "A very ominous tome resembling a bible." + icon_state ="ebook" + item_flags = NO_BLOOD_ON_ITEM + throw_speed = 2 + throw_range = 7 + throwforce = 18 + force = 18 + hitsound = 'sound/weapons/sear.ogg' + damtype = BURN + attack_verb_continuous = list("attacks", "burns", "blesses", "damns", "scorches", "curses", "smites") + attack_verb_simple = list("attack", "burn", "bless", "damn", "scorch", "curses", "smites") + deity_name = "The Syndicate" + var/uses = 1 + var/owner_name + +/obj/item/book/bible/syndicate/Initialize(mapload) + . = ..() + AddComponent(/datum/component/anti_magic, MAGIC_RESISTANCE|MAGIC_RESISTANCE_HOLY) + AddComponent(/datum/component/effect_remover, \ + success_feedback = "You disrupt the magic of %THEEFFECT with %THEWEAPON.", \ + success_forcesay = "BEGONE FOUL MAGIKS!!", \ + tip_text = "Clear rune", \ + effects_we_clear = list(/obj/effect/rune, /obj/effect/heretic_rune, /obj/effect/cosmic_rune), \ + ) + AddElement(/datum/element/bane, target_type = /mob/living/basic/revenant, damage_multiplier = 0, added_damage = 25, requires_combat_mode = FALSE) + +/obj/item/book/bible/syndicate/attack_self(mob/living/carbon/human/user, modifiers) + if(!uses || !istype(user)) + return + user.mind.holy_role = HOLY_ROLE_PRIEST + uses -= 1 + to_chat(user, span_userdanger("You try to open the book AND IT BITES YOU!")) + playsound(src.loc, 'sound/effects/snap.ogg', 50, TRUE) + var/active_hand_zone = (!(user.active_hand_index % RIGHT_HANDS) ? BODY_ZONE_R_ARM : BODY_ZONE_L_ARM) + user.apply_damage(5, BRUTE, active_hand_zone, attacking_item = src) + to_chat(user, span_notice("Your name appears on the inside cover, in blood.")) + owner_name = user.real_name + +/obj/item/book/bible/syndicate/examine(mob/user) + . = ..() + if(owner_name) + . += span_warning("The name [owner_name] is written in blood inside the cover.") + +/obj/item/book/bible/syndicate/attack(mob/living/target_mob, mob/living/carbon/human/user, params, heal_mode = TRUE) + if(!(user.istate & ISTATE_HARM)) + return ..() + else + return ..(target_mob, user, heal_mode = FALSE) diff --git a/code/modules/library/book.dm b/code/modules/library/book.dm index e789df8021ff..aae35dcc23e1 100644 --- a/code/modules/library/book.dm +++ b/code/modules/library/book.dm @@ -1,84 +1,9 @@ -//Some information about how html sanitization is handled -//All book info datums should store sanitized data. This cannot be worked around -//All inputs and outputs from the round (DB calls) need to use sanitized data -//All tgui menus should get unsanitized data, since jsx handles that on its own -//Everything else should use sanitized data. Yes including names, it's an xss vuln because of how chat works -///A datum which contains all the metadata of a book -/datum/book_info - ///The title of the book - var/title - ///The "author" of the book - var/author - ///The info inside the book - var/content - -/datum/book_info/New(_title, _author, _content) - title = _title - author = _author - content = _content - -/datum/book_info/proc/set_title(_title, trusted = FALSE) //Trusted should only be used for books read from the db, or in cases that we can be sure the info has already been sanitized - if(trusted) - title = _title - return - title = reject_bad_text(trim(html_encode(_title), 30)) - -/datum/book_info/proc/get_title(default="N/A") //Loads in an html decoded version of the title. Only use this for tgui menus, absolutely nothing else. - return html_decode(title) || "N/A" - -/datum/book_info/proc/set_author(_author, trusted = FALSE) - if(trusted) - author = _author - return - author = trim(html_encode(_author), MAX_NAME_LEN) - -/datum/book_info/proc/get_author(default="N/A") - return html_decode(author) || "N/A" - -/datum/book_info/proc/set_content(_content, trusted = FALSE) - if(trusted) - content = _content - return - content = trim(html_encode(_content), MAX_PAPER_LENGTH) - -/datum/book_info/proc/set_content_using_paper(obj/item/paper/paper) - // Just the paper's raw data. - var/raw_content = "" - for(var/datum/paper_input/text_input as anything in paper.raw_text_inputs) - raw_content += text_input.to_raw_html() - - content = trim(html_encode(raw_content), MAX_PAPER_LENGTH) - -/datum/book_info/proc/get_content(default="N/A") - return html_decode(content) || "N/A" - -///Returns a copy of the book_info datum -/datum/book_info/proc/return_copy() - var/datum/book_info/copycat = new(title, author, content) - return copycat - -///Modify an existing book_info datum to match your data -/datum/book_info/proc/copy_into(datum/book_info/copycat) - copycat.set_title(title, trusted = TRUE) - copycat.set_author(author, trusted = TRUE) - copycat.set_content(content, trusted = TRUE) - return copycat - -/datum/book_info/proc/compare(datum/book_info/cmp_with) - if(author != cmp_with.author) - return FALSE - if(title != cmp_with.title) - return FALSE - if(content != cmp_with.content) - return FALSE - return TRUE - /obj/item/book name = "book" + desc = "Crack it open, inhale the musk of its pages, and learn something new." icon = 'icons/obj/library.dmi' icon_state ="book" worn_icon_state = "book" - desc = "Crack it open, inhale the musk of its pages, and learn something new." throw_speed = 1 throw_range = 5 w_class = WEIGHT_CLASS_NORMAL //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever) @@ -87,22 +12,25 @@ resistance_flags = FLAMMABLE drop_sound = 'sound/items/handling/book_drop.ogg' pickup_sound = 'sound/items/handling/book_pickup.ogg' - ///Game time in 1/10th seconds + /// Maximum icon state number + var/maximum_book_state = 8 + /// Game time in 1/10th seconds var/due_date = 0 - ///false - Normal book, true - Should not be treated as normal book, unable to be copied, unable to be modified + /// false - Normal book, true - Should not be treated as normal book, unable to be copied, unable to be modified var/unique = FALSE + /// whether or not we have been carved out + var/carved = FALSE + /// Specific window size for the book, i.e: "1920x1080", Size x Width var/window_size = null - ///The initial title, for use in var editing and such + /// The initial title, for use in var editing and such var/starting_title - ///The initial author, for use in var editing and such + /// The initial author, for use in var editing and such var/starting_author - ///The initial bit of content, for use in var editing and such + /// The initial bit of content, for use in var editing and such var/starting_content - ///The packet of information that describes this book + /// The packet of information that describes this book var/datum/book_info/book_data - ///Maximum icon state number - var/maximum_book_state = 8 /obj/item/book/Initialize(mapload) . = ..() @@ -110,6 +38,11 @@ AddElement(/datum/element/falling_hazard, damage = 5, wound_bonus = 0, hardhat_safety = TRUE, crushes = FALSE, impact_sound = drop_sound) +/obj/item/book/examine(mob/user) + . = ..() + if(carved) + . += span_notice("[src] has been hollowed out.") + /obj/item/book/ui_static_data(mob/user) var/list/data = list() data["author"] = book_data.get_author() @@ -118,8 +51,11 @@ return data /obj/item/book/ui_interact(mob/living/user, datum/tgui/ui) + if(carved) + balloon_alert(user, "book is carved out!") + return if(!length(book_data.get_content())) - balloon_alert(user, "this book is blank!") + balloon_alert(user, "book is blank!") return if(istype(user) && !isnull(user.mind)) @@ -134,10 +70,6 @@ ui = new(user, src, "MarkdownViewer", name) ui.open() -/// Generates a random icon state for the book -/obj/item/book/proc/gen_random_icon_state() - icon_state = "book[rand(1, maximum_book_state)]" - /obj/item/book/attack_self(mob/user) if(user.is_blind()) to_chat(user, span_warning("You are blind and can't read anything!")) @@ -149,7 +81,10 @@ user.visible_message(span_notice("[user] opens a book titled \"[book_data.title]\" and begins reading intently.")) ui_interact(user) -/obj/item/book/attackby(obj/item/attacking_item, mob/user, params) +/obj/item/book/attackby(obj/item/attacking_item, mob/living/user, params) + if(burn_paper_product_attackby_check(attacking_item, user)) + return + if(istype(attacking_item, /obj/item/pen)) if(!user.can_perform_action(src) || !user.can_write(attacking_item)) return @@ -159,6 +94,9 @@ if(unique) to_chat(user, span_warning("These pages don't seem to take the ink well! Looks like you can't modify it.")) return + if(carved) + to_chat(user, span_warning("The book has been carved out! There is nothing to be vandalized.")) + return var/choice = tgui_input_list(usr, "What would you like to change?", "Book Alteration", list("Title", "Contents", "Author", "Cancel")) if(isnull(choice)) @@ -194,7 +132,6 @@ to_chat(user, span_warning("The name is invalid.")) return book_data.set_author(html_decode(author)) //Setting this encodes, don't want to double up - else if(istype(attacking_item, /obj/item/barcodescanner)) var/obj/item/barcodescanner/scanner = attacking_item var/obj/machinery/computer/libraryconsole/bookmanagement/computer = scanner.computer_ref?.resolve() @@ -221,23 +158,35 @@ computer.inventory[ref(our_copy)] = our_copy computer.inventory_update() user.balloon_alert(user, "book added to inventory") - - else if((istype(attacking_item, /obj/item/knife) || attacking_item.tool_behaviour == TOOL_WIRECUTTER) && !(flags_1 & HOLOGRAM_1)) - to_chat(user, span_notice("You begin to carve out [book_data.title]...")) - if(do_after(user, 30, target = src)) - to_chat(user, span_notice("You carve out the pages from [book_data.title]! You didn't want to read it anyway.")) - var/obj/item/storage/book/carved_out = new - carved_out.name = src.name - carved_out.title = book_data.title - carved_out.icon_state = src.icon_state - if(user.is_holding(src)) - qdel(src) - user.put_in_hands(carved_out) - return - else - carved_out.forceMove(drop_location()) - qdel(src) - return + else if(try_carve(attacking_item, user, params)) return - else - ..() + return ..() + +/// Generates a random icon state for the book +/obj/item/book/proc/gen_random_icon_state() + icon_state = "book[rand(1, maximum_book_state)]" + +/// Called when user attempts to carve the book with an item +/obj/item/book/proc/try_carve(obj/item/carving_item, mob/living/user, params) + if(carved) + return FALSE + if(!(user.istate & ISTATE_HARM)) + return FALSE + if(!((carving_item.sharpness & SHARP_EDGED) && (carving_item.tool_behaviour != TOOL_KNIFE) && (carving_item.tool_behaviour != TOOL_WIRECUTTER))) + return FALSE + //i hate balloon alerts i hate them so god damn much + balloon_alert(user, "carving out...") + if(!do_after(user, 3 SECONDS, target = src)) + balloon_alert(user, "interrupted!") + return FALSE + carve_out(carving_item, user) + return TRUE + +/// Called when the book gets carved successfully +/obj/item/book/proc/carve_out(obj/item/carving_item, mob/living/user) + if(user) + balloon_alert(user, "carved out") + playsound(src, 'sound/effects/cloth_rip.ogg', vol = 75, vary = TRUE) + carved = TRUE + create_storage(max_slots = 1) + return TRUE diff --git a/code/modules/library/book_info.dm b/code/modules/library/book_info.dm new file mode 100644 index 000000000000..8663069644d7 --- /dev/null +++ b/code/modules/library/book_info.dm @@ -0,0 +1,74 @@ +//Some information about how html sanitization is handled +//All book info datums should store sanitized data. This cannot be worked around +//All inputs and outputs from the round (DB calls) need to use sanitized data +//All tgui menus should get unsanitized data, since jsx handles that on its own +//Everything else should use sanitized data. Yes including names, it's an xss vuln because of how chat works +///A datum which contains all the metadata of a book +/datum/book_info + ///The title of the book + var/title + ///The "author" of the book + var/author + ///The info inside the book + var/content + +/datum/book_info/New(_title, _author, _content) + title = _title + author = _author + content = _content + +/datum/book_info/proc/set_title(_title, trusted = FALSE) //Trusted should only be used for books read from the db, or in cases that we can be sure the info has already been sanitized + if(trusted) + title = _title + return + title = reject_bad_text(trim(html_encode(_title), 30)) + +/datum/book_info/proc/get_title(default="N/A") //Loads in an html decoded version of the title. Only use this for tgui menus, absolutely nothing else. + return html_decode(title) || "N/A" + +/datum/book_info/proc/set_author(_author, trusted = FALSE) + if(trusted) + author = _author + return + author = trim(html_encode(_author), MAX_NAME_LEN) + +/datum/book_info/proc/get_author(default="N/A") + return html_decode(author) || "N/A" + +/datum/book_info/proc/set_content(_content, trusted = FALSE) + if(trusted) + content = _content + return + content = trim(html_encode(_content), MAX_PAPER_LENGTH) + +/datum/book_info/proc/set_content_using_paper(obj/item/paper/paper) + // Just the paper's raw data. + var/raw_content = "" + for(var/datum/paper_input/text_input as anything in paper.raw_text_inputs) + raw_content += text_input.to_raw_html() + + content = trim(html_encode(raw_content), MAX_PAPER_LENGTH) + +/datum/book_info/proc/get_content(default="N/A") + return html_decode(content) || "N/A" + +///Returns a copy of the book_info datum +/datum/book_info/proc/return_copy() + var/datum/book_info/copycat = new(title, author, content) + return copycat + +///Modify an existing book_info datum to match your data +/datum/book_info/proc/copy_into(datum/book_info/copycat) + copycat.set_title(title, trusted = TRUE) + copycat.set_author(author, trusted = TRUE) + copycat.set_content(content, trusted = TRUE) + return copycat + +/datum/book_info/proc/compare(datum/book_info/cmp_with) + if(author != cmp_with.author) + return FALSE + if(title != cmp_with.title) + return FALSE + if(content != cmp_with.content) + return FALSE + return TRUE diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 2b42f615b495..bfdf5a5b868a 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -633,7 +633,7 @@ GLOBAL_VAR_INIT(library_table_modified, 0) return TRUE /obj/machinery/computer/libraryconsole/bookmanagement/proc/print_bible() - var/obj/item/storage/book/bible/holy_book = new(loc) + var/obj/item/book/bible/holy_book = new(loc) if(!GLOB.bible_icon_state || !GLOB.bible_inhand_icon_state) return holy_book.icon_state = GLOB.bible_icon_state diff --git a/code/modules/library/skill_learning/job_skillchips/roboticist.dm b/code/modules/library/skill_learning/job_skillchips/roboticist.dm index b6835c9d484b..401315e265ab 100644 --- a/code/modules/library/skill_learning/job_skillchips/roboticist.dm +++ b/code/modules/library/skill_learning/job_skillchips/roboticist.dm @@ -1,7 +1,7 @@ /obj/item/skillchip/job/roboticist name = "Cyborg C1-RCU-1T skillchip" desc = "A roboticist's second best friend." - auto_traits = list(TRAIT_KNOW_CYBORG_WIRES) + auto_traits = list(TRAIT_KNOW_ROBO_WIRES) skill_name = "Cyborg Circuitry" skill_description = "Recognise cyborg wire layouts and understand their functionality at a glance." skill_icon = "sitemap" diff --git a/code/modules/lighting/lighting_area.dm b/code/modules/lighting/lighting_area.dm index c11130dcbc18..a6e90a82f44f 100644 --- a/code/modules/lighting/lighting_area.dm +++ b/code/modules/lighting/lighting_area.dm @@ -49,9 +49,11 @@ /area/proc/remove_base_lighting() var/list/z_offsets = SSmapping.z_level_to_plane_offset - for(var/turf/T as anything in get_contained_turfs()) - if(z_offsets[T.z]) - T.cut_overlay(lighting_effects[z_offsets[T.z] + 1]) + if(length(lighting_effects) > 1) + for(var/area_zlevel in 1 to get_highest_zlevel()) + if(z_offsets[area_zlevel]) + for(var/turf/T as anything in get_turfs_by_zlevel(area_zlevel)) + T.cut_overlay(lighting_effects[z_offsets[T.z] + 1]) cut_overlay(lighting_effects[1]) QDEL_LIST(lighting_effects) area_has_base_lighting = FALSE @@ -69,12 +71,17 @@ lighting_effects += lighting_effect add_overlay(lighting_effects[1]) var/list/z_offsets = SSmapping.z_level_to_plane_offset - for(var/turf/T as anything in get_contained_turfs()) - T.luminosity = 1 - // This outside loop is EXTREMELY hot because it's run by space tiles. Don't want no part in that + for(var/area_zlevel in 1 to get_highest_zlevel()) // We will only add overlays to turfs not on the first z layer, because that's a significantly lesser portion // And we need to do them separate, or lighting will go fuckey - if(z_offsets[T.z]) - T.add_overlay(lighting_effects[z_offsets[T.z] + 1]) + // This inside loop is EXTREMELY hot because it's run by space tiles, so we do the if check once on the outside + if(length(lighting_effects) > 1 && z_offsets[area_zlevel]) + var/lighting_effect_to_add = lighting_effects[z_offsets[area_zlevel] + 1] + for(var/turf/area_turf as anything in get_turfs_by_zlevel(area_zlevel)) + area_turf.luminosity = 1 + area_turf.add_overlay(lighting_effect_to_add) + else + for(var/turf/area_turf as anything in get_turfs_by_zlevel(area_zlevel)) + area_turf.luminosity = 1 area_has_base_lighting = TRUE diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm index a601229c83af..8713b28e96bb 100644 --- a/code/modules/lighting/lighting_atom.dm +++ b/code/modules/lighting/lighting_atom.dm @@ -1,7 +1,7 @@ // The proc you should always use to set the light of this atom. // Nonesensical value for l_color default, so we can detect if it gets set to null. -/atom/proc/set_light(l_outer_range, l_inner_range, l_power, l_falloff_curve = LIGHTING_DEFAULT_FALLOFF_CURVE, l_color = NONSENSICAL_VALUE, l_on) +/atom/proc/set_light(l_outer_range, l_inner_range, l_power, l_falloff_curve = LIGHTING_DEFAULT_FALLOFF_CURVE, l_color = NONSENSICAL_VALUE, l_on, update = TRUE) if(!isnum(l_power) && !isnull(l_power)) return if(l_outer_range > 0 && l_outer_range < MINIMUM_USEFUL_LIGHT_RANGE) @@ -28,7 +28,8 @@ if(!isnull(l_on)) set_light_on(l_on) - update_light() + if(update) + update_light() /// Will update the light (duh). /// Creates or destroys it if needed, makes it update values, makes sure it's got the correct source turf... diff --git a/code/modules/lighting/lighting_setup.dm b/code/modules/lighting/lighting_setup.dm index d6bf19711ef7..c148530d1cd8 100644 --- a/code/modules/lighting/lighting_setup.dm +++ b/code/modules/lighting/lighting_setup.dm @@ -1,12 +1,12 @@ /proc/create_all_lighting_objects() - for(var/area/A as anything in GLOB.areas) - if(!A.static_lighting) + for(var/area/area as anything in GLOB.areas) + if(!area.static_lighting) continue - - for(var/turf/T as anything in A.get_contained_turfs()) - if(T.space_lit) - continue - new /datum/lighting_object(T) + for (var/list/zlevel_turfs as anything in area.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + if(area_turf.space_lit) + continue + new /datum/lighting_object(area_turf) CHECK_TICK CHECK_TICK diff --git a/code/modules/lighting/lighting_source.dm b/code/modules/lighting/lighting_source.dm index 1c6da704dfd1..3abfd151153f 100644 --- a/code/modules/lighting/lighting_source.dm +++ b/code/modules/lighting/lighting_source.dm @@ -193,16 +193,21 @@ /datum/light_source/proc/remove_lum() SETUP_CORNERS_REMOVAL_CACHE(src) applied = FALSE + var/list/turfs_to_mark = list() for (var/datum/lighting_corner/corner as anything in effect_str) REMOVE_CORNER(corner) LAZYREMOVE(corner.affecting, src) - //Monkestation Edit: REPLAYS - SSdemo.mark_turf(corner.master_NE) - SSdemo.mark_turf(corner.master_SE) - SSdemo.mark_turf(corner.master_SW) - SSdemo.mark_turf(corner.master_NW) - //Monkestation Edit: REPLAYS + // monkestation start: REPLAYS + turfs_to_mark += list( + corner.master_NE, + corner.master_SE, + corner.master_SW, + corner.master_NW + ) + // monkestation end: REPLAYS + + SSdemo.mark_multiple_turfs(turfs_to_mark) // monkestation edit: REPLAYS effect_str = null @@ -321,6 +326,7 @@ var/uses_multiz = !!GET_LOWEST_STACK_OFFSET(source_turf.z) var/oldlum = source_turf.luminosity source_turf.luminosity = CEILING(light_outer_range, 1) + var/list/turfs_to_mark = list() if(!uses_multiz) // Yes I know this could be acomplished with an if in the for loop, but it's fukin lighting code man for(var/turf/T in view(CEILING(light_outer_range, 1), source_turf)) if(IS_OPAQUE_TURF(T)) @@ -332,7 +338,7 @@ corners[T.lighting_corner_SE] = 0 corners[T.lighting_corner_SW] = 0 corners[T.lighting_corner_NW] = 0 - SSdemo.mark_turf(T) //Monkestation Edit: REPLAYS + turfs_to_mark += T // Monkestation Edit: REPLAYS else for(var/turf/T in view(CEILING(light_outer_range, 1), source_turf)) if(IS_OPAQUE_TURF(T)) @@ -344,7 +350,7 @@ corners[T.lighting_corner_SE] = 0 corners[T.lighting_corner_SW] = 0 corners[T.lighting_corner_NW] = 0 - SSdemo.mark_turf(T) //Monkestation Edit: REPLAYS + turfs_to_mark += T // Monkestation Edit: REPLAYS var/turf/below = GET_TURF_BELOW(T) var/turf/previous = T @@ -383,9 +389,10 @@ corners[above.lighting_corner_SW] = 0 corners[above.lighting_corner_NW] = 0 above = GET_TURF_ABOVE(above) - SSdemo.mark_turf(T) //Monkestation Edit: REPLAYS + turfs_to_mark += T // Monkestation Edit: REPLAYS source_turf.luminosity = oldlum + SSdemo.mark_multiple_turfs(turfs_to_mark) SETUP_CORNERS_CACHE(src) diff --git a/code/modules/mafia/abilities/abilities.dm b/code/modules/mafia/abilities/abilities.dm index 14ca2bbd61b2..b4030bd0e3de 100644 --- a/code/modules/mafia/abilities/abilities.dm +++ b/code/modules/mafia/abilities/abilities.dm @@ -24,7 +24,7 @@ RegisterSignal(game, action_priority, PROC_REF(perform_action_target)) RegisterSignal(game, COMSIG_MAFIA_NIGHT_END, PROC_REF(clean_action_refs)) -/datum/mafia_ability/Destroy(force, ...) +/datum/mafia_ability/Destroy(force) host_role = null target_role = null return ..() diff --git a/code/modules/mafia/controller.dm b/code/modules/mafia/controller.dm index 8cfb4800b753..fda749f128b0 100644 --- a/code/modules/mafia/controller.dm +++ b/code/modules/mafia/controller.dm @@ -103,7 +103,7 @@ GLOBAL_LIST_INIT(mafia_role_by_alignment, setup_mafia_role_by_alignment()) GLOB.mafia_game = src map_deleter = new -/datum/mafia_controller/Destroy(force, ...) +/datum/mafia_controller/Destroy(force) . = ..() GLOB.mafia_game = null end_game() diff --git a/code/modules/mafia/roles/roles.dm b/code/modules/mafia/roles/roles.dm index 207db7362a41..c9f02a71116f 100644 --- a/code/modules/mafia/roles/roles.dm +++ b/code/modules/mafia/roles/roles.dm @@ -40,7 +40,7 @@ role_unique_actions += new abilities(game, src) role_unique_actions -= abilities -/datum/mafia_role/Destroy(force, ...) +/datum/mafia_role/Destroy(force) QDEL_NULL(body) QDEL_NULL(role_unique_actions) return ..() diff --git a/code/modules/mapfluff/centcom/nuke_ops.dm b/code/modules/mapfluff/centcom/nuke_ops.dm index 02bf8a50f8e7..e1f5e8adbf08 100644 --- a/code/modules/mapfluff/centcom/nuke_ops.dm +++ b/code/modules/mapfluff/centcom/nuke_ops.dm @@ -43,3 +43,16 @@ name = "The Walk-In Fridge" desc = "Locked. Lopez sure runs a tight galley." puzzle_id = "syndicate_fridge" + +// MONKESTATION EDIT START +/obj/item/keycard/syndicate_suit_storage + name = "Heavy Operation Suit Storage" + desc = "A red keycard with an image of a skull. Using this will allow you to gain access to the Heavy Operation Suit Storage in Firebase Balthazord." + color = "#9c0e26" + puzzle_id = "syndicate_suit_storage" + +/obj/machinery/door/puzzle/keycard/syndicate_suit_storage + name = "Heavy Operation Suit Storage" + desc = "You heard legends of that suit. The Syndicate considers it overkill for most operations." + puzzle_id = "syndicate_suit_storage" +// MONKESTATION EDIT STOP diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm b/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm index 730739a9a4f8..c8915fe456ff 100644 --- a/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm +++ b/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm @@ -164,7 +164,7 @@ new /obj/item/coin/silver(src) new /obj/item/shovel/spade(src) if(4) - new /obj/item/storage/book/bible/booze(src) + new /obj/item/book/bible/booze(src) if(5) new /obj/item/clothing/neck/stethoscope(src) new /obj/item/scalpel(src) diff --git a/code/modules/mapfluff/ruins/spaceruin_code/caravanambush.dm b/code/modules/mapfluff/ruins/spaceruin_code/caravanambush.dm index d6b2d9ffaa75..c6d4a8beb4b8 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/caravanambush.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/caravanambush.dm @@ -106,7 +106,7 @@ req_access = list(ACCESS_SYNDICATE) circuit = /obj/item/circuitboard/computer/caravan/syndicate1 shuttleId = "caravansyndicate1" - possible_destinations = "caravansyndicate1_custom;caravansyndicate1_ambush;caravansyndicate1_listeningpost" + possible_destinations = "caravansyndicate1_custom;caravansyndicate1_ambush;syndicate_listening_post" //monkestation edit: new listening post /obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate1 name = "Syndicate Fighter Navigation Computer" @@ -116,7 +116,7 @@ shuttleId = "caravansyndicate1" lock_override = NONE shuttlePortId = "caravansyndicate1_custom" - jump_to_ports = list("caravansyndicate1_ambush" = 1, "caravansyndicate1_listeningpost" = 1) + jump_to_ports = list("caravansyndicate1_ambush" = 1, "syndicate_listening_post" = 1) //monkestation edit: new listening post view_range = 0 x_offset = 2 y_offset = 0 @@ -130,7 +130,7 @@ light_color = COLOR_SOFT_RED circuit = /obj/item/circuitboard/computer/caravan/syndicate2 shuttleId = "caravansyndicate2" - possible_destinations = "caravansyndicate2_custom;caravansyndicate2_ambush;caravansyndicate1_listeningpost" + possible_destinations = "caravansyndicate2_custom;caravansyndicate2_ambush;syndicate_listening_post" //monkestation edit: new listening post /obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate2 name = "Syndicate Fighter Navigation Computer" @@ -140,7 +140,7 @@ shuttleId = "caravansyndicate2" lock_override = NONE shuttlePortId = "caravansyndicate2_custom" - jump_to_ports = list("caravansyndicate2_ambush" = 1, "caravansyndicate1_listeningpost" = 1) + jump_to_ports = list("caravansyndicate2_ambush" = 1, "syndicate_listening_post" = 1) //monkestation edit: new listening post view_range = 0 x_offset = 0 y_offset = 2 @@ -154,7 +154,7 @@ light_color = COLOR_SOFT_RED circuit = /obj/item/circuitboard/computer/caravan/syndicate3 shuttleId = "caravansyndicate3" - possible_destinations = "caravansyndicate3_custom;caravansyndicate3_ambush;caravansyndicate3_listeningpost" + possible_destinations = "caravansyndicate3_custom;caravansyndicate3_ambush;syndicate_listening_post" //monkestation edit: new listening post /obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate3 name = "Syndicate Drop Ship Navigation Computer" @@ -164,7 +164,7 @@ shuttleId = "caravansyndicate3" lock_override = NONE shuttlePortId = "caravansyndicate3_custom" - jump_to_ports = list("caravansyndicate3_ambush" = 1, "caravansyndicate3_listeningpost" = 1) + jump_to_ports = list("caravansyndicate3_ambush" = 1, "syndicate_listening_post" = 1) //monkestation edit: new listening post view_range = 2.5 x_offset = -1 y_offset = -3 diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm index 25490e6562ad..f085090a8dbf 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm @@ -179,10 +179,15 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) currentArea.storageTurf = storageTurf currentArea.roomnumber = currentRoomnumber currentArea.reservation = currentReservation - for(var/turf/closed/indestructible/hoteldoor/door in currentArea) + + for(var/turf/closed/indestructible/hoteldoor/door in currentReservation.reserved_turfs) door.parentSphere = src - door.desc = "The door to this hotel room. The placard reads 'Room [currentRoomnumber]'. Strangely, this door doesn't even seem openable. The doorknob, however, seems to buzz with unusual energy...
    [span_info("Alt-Click to look through the peephole.")]" - for(var/turf/open/space/bluespace/BSturf in currentArea) + door.desc = "The door to this hotel room. \ + The placard reads 'Room [currentRoomnumber]'. \ + Strangely, this door doesn't even seem openable. \ + The doorknob, however, seems to buzz with unusual energy...
    \ + [span_info("Alt-Click to look through the peephole.")]" + for(var/turf/open/space/bluespace/BSturf in currentReservation.reserved_turfs) BSturf.parentSphere = src /obj/item/hilbertshotel/proc/ejectRooms() @@ -412,12 +417,10 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) targetturf = get_turf(pick(GLOB.blobstart)) else CRASH("Unable to find a blobstart landmark") - var/turf/T = get_turf(H) - var/area/A = T.loc + log_game("[H] entered itself. Moving it to [loc_name(targetturf)].") message_admins("[H] entered itself. Moving it to [ADMIN_VERBOSEJMP(targetturf)].") - for(var/mob/M in A) - to_chat(M, span_danger("[H] almost implodes in upon itself, but quickly rebounds, shooting off into a random point in space!")) + H.visible_message(span_danger("[H] almost implodes in upon itself, but quickly rebounds, shooting off into a random point in space!")) H.forceMove(targetturf) /area/misc/hilbertshotel/Exited(atom/movable/gone, direction) diff --git a/code/modules/mapfluff/ruins/spaceruin_code/listeningstation.dm b/code/modules/mapfluff/ruins/spaceruin_code/listeningstation.dm index 1c44703f10af..54d36dd3eea5 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/listeningstation.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/listeningstation.dm @@ -36,11 +36,19 @@

    It's not like anyone but me reads these, why else should I talk about my base upkeep? Today: the "lobby". "} +//monkestation edit: goliath +/obj/item/paper/fluff/ruins/listeningstation/reports/june/goliath + name = "hastily-written report" + default_raw_text = {"Heard some strange noises in the lobby, leaving this in case something happens. +
    Some sorta loud banging behind one of the walls. I'm going to go take a look. +
    Got my gun just in case, hopefully it isn't anything I need to use it for. +"} +//monkey business end // "Anderson" starts writing here /obj/item/paper/fluff/ruins/listeningstation/reports/july name = "july report" - default_raw_text = {"Hey, old guy got a transfer, and I was next in line. I'll show them how we do it over at the Gorlex Marauders! Let's monitor some stuff. This will be fun. + default_raw_text = {"Hey, old guy went missing, and I was next in line. I'll show them how we do it over at the Gorlex Marauders! Let's monitor some stuff. This will be fun.
    It seems "old guy" did some upkeep around the base, and I will admit: it's nice. The lobby is shoddy for some reason. Not sure why that is.
    I read some of the older reports, and it seems like interesting stuff. No idea where June is. Ah well, maybe he got out in May?
    Odd sleeper, the frost covered it up. They were telling me about this on the way here, that it's meant to be a replacement to ensure "seamless" operation of this base. Okay? @@ -60,7 +68,7 @@ /obj/item/paper/fluff/ruins/listeningstation/reports/september name = "september report" default_raw_text = {"i'm... not doing good. i'm doing so bad. the sleeper is still there. my friend died in a sleeper malfunction. it overheated. -
    i don't want to unplug it, i don't want to wake them up. i don't go in the bedroom anymore, i have a small cot in the lobby area. i'm lonely. +
    i don't want to unplug it, i don't want to wake them up. i don't go near the backup anymore. i'm lonely.
    blowing myself up is out of the question. it'll kill them too. i've killed many people in my life, but i think ending another that way
    will probably send me to hell. if hell is anything like this, i'd rather try and salvage as much as i can before i pass. death awaits us all.
    @@ -115,4 +123,17 @@
    You may view intelligence reports from your predecessors in the filing cabinet in your office. "} - +// MONKESTATION EDIT: monkestation new listening post. im not making a seperate file for modularising some goddamn fluff on the other side of a file. this is why git exists +/obj/item/paper/fluff/ruins/listeningstation/engineer + name = "message from syndicate engineering" + default_raw_text = {"This outpost's pretty messy compared to other models, so here's the basic rundown of every room and whatnot: +
    As is to be expected, you've probably already found your way around the lounge area: it's where you'll spend most of your day, given the frequent dark periods on Nanotrasen stations. +
    You also have a self-destruct issued for emergencies - probably don't wanna touch that. +
    There's also your office, equipped with everything needed to communicate with agents and decieve (or just annoy) Nanotrasen crew - given this is being faxed, you're probably here. +
    Service areas should be behind the yellow airlock - that's the laundry, engineering area, and life support: the relay is also through here. +
    Entrance's opposite - it's reconfigured by different post crews for different uses: some use it as a lobby, some use it for cargo handling, others just cut it up for parts and leave it in shoddy condition. +
    Infirmary's below - it's got a proper sleeper modified to allow you to use it without external assistance, as well as some supplies. +
    There's also a pile of garden equipment in the excavation near medical - have fun with that. +
    +
    Enjoy your assignment."} +// end monkey business diff --git a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm index bea6c8cce77f..8dfd57199e6e 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm @@ -44,6 +44,14 @@ icon = 'icons/mob/simple/meteor_heart.dmi' anchored = TRUE +/obj/structure/meateor_fluff/Initialize(mapload) + . = ..() + AddComponent(/datum/component/bloody_spreader,\ + blood_left = INFINITY,\ + blood_dna = list("meaty DNA" = "MT-"),\ + diseases = null,\ + ) + /obj/structure/meateor_fluff/play_attack_sound(damage_amount, damage_type, damage_flag) switch(damage_type) if(BRUTE) diff --git a/code/modules/mapping/access_helpers.dm b/code/modules/mapping/access_helpers.dm index 633c6aac387f..e0fc2a15b426 100644 --- a/code/modules/mapping/access_helpers.dm +++ b/code/modules/mapping/access_helpers.dm @@ -278,6 +278,13 @@ access_list += list(ACCESS_SECURITY, ACCESS_MAINT_TUNNELS) return access_list +/// MONKESTATION EDIT BEGIN +/obj/effect/mapping_helpers/airlock/access/any/security/brig_physician/get_access() + var/list/access_list = ..() + access_list += ACCESS_BRIG_PHYSICIAN + return access_list +/// MONKESTATION EDIT END + // -------------------- Service access helpers /obj/effect/mapping_helpers/airlock/access/any/service icon_state = "access_helper_serv" @@ -739,6 +746,12 @@ access_list += ACCESS_HOS return access_list +/// MONKESTATION EDIT BEGIN +/obj/effect/mapping_helpers/airlock/access/all/security/brig_physician/get_access() + var/list/access_list = ..() + access_list += ACCESS_BRIG_PHYSICIAN + return access_list +/// MONKESTATION EDIT END // -------------------- Service access helpers /obj/effect/mapping_helpers/airlock/access/all/service icon_state = "access_helper_serv" diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 170d0d15a229..89485c52e315 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -671,9 +671,9 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) /obj/effect/mapping_helpers/atom_injector/trait_injector/check_validity() if(!istext(trait_name)) CRASH("Wrong trait in [type] - [trait_name] is not a trait") - if(!GLOB.trait_name_map) - GLOB.trait_name_map = generate_trait_name_map() - if(!GLOB.trait_name_map.Find(trait_name)) + if(!GLOB.global_trait_name_map) + GLOB.global_trait_name_map = generate_global_trait_name_map() + if(!GLOB.global_trait_name_map.Find(trait_name)) stack_trace("Possibly wrong trait in [type] - [trait_name] is not a trait in the global trait list") return TRUE @@ -836,11 +836,12 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) /obj/effect/mapping_helpers/dead_body_placer/LateInitialize() var/area/morgue_area = get_area(src) var/list/obj/structure/bodycontainer/morgue/trays = list() - for(var/turf/area_turf as anything in morgue_area.get_contained_turfs()) - var/obj/structure/bodycontainer/morgue/morgue_tray = locate() in area_turf - if(isnull(morgue_tray) || !morgue_tray.beeper || morgue_tray.connected.loc != morgue_tray) - continue - trays += morgue_tray + for (var/list/zlevel_turfs as anything in morgue_area.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + var/obj/structure/bodycontainer/morgue/morgue_tray = locate() in area_turf + if(isnull(morgue_tray) || !morgue_tray.beeper || morgue_tray.connected.loc != morgue_tray) + continue + trays += morgue_tray var/numtrays = length(trays) if(numtrays == 0) @@ -914,39 +915,47 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) name = "Ian's Bday Helper" late = TRUE icon_state = "iansbdayhelper" + /// How many clusters of balloons to spawn. var/balloon_clusters = 2 + /// if TRUE, we give a map log warning if we can't find Ian's dogbed. + var/map_warning = TRUE /obj/effect/mapping_helpers/ianbirthday/LateInitialize() - if(check_holidays("Ian's Birthday")) + if(check_holidays(IAN_HOLIDAY)) birthday() qdel(src) /obj/effect/mapping_helpers/ianbirthday/proc/birthday() - var/area/a = get_area(src) - var/list/table = list()//should only be one aka the front desk, but just in case... - var/list/openturfs = list() - - //confetti and a corgi balloon! (and some list stuff for more decorations) - for(var/thing in a.contents) - if(istype(thing, /obj/structure/table/reinforced)) - table += thing - if(isopenturf(thing)) - new /obj/effect/decal/cleanable/confetti(thing) - if(locate(/obj/structure/bed/dogbed/ian) in thing) - new /obj/item/toy/balloon/corgi(thing) - else - openturfs += thing + var/area/celebration_area = get_area(src) + var/list/table_turfs = list() + var/list/open_turfs = list() + var/turf/dogbed_turf + for (var/list/zlevel_turfs as anything in celebration_area.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + if(locate(/obj/structure/table/reinforced) in area_turf) + table_turfs += area_turf + if(locate(/obj/structure/bed/dogbed/ian) in area_turf) + dogbed_turf = area_turf + if(isopenturf(area_turf)) + new /obj/effect/decal/cleanable/confetti(area_turf) + open_turfs += area_turf + + if(isnull(dogbed_turf) && map_warning) + log_mapping("[src] in [celebration_area] could not find Ian's dogbed.") - //cake + knife to cut it! - if(length(table)) - var/turf/food_turf = get_turf(pick(table)) + else + new /obj/item/toy/balloon/corgi(dogbed_turf) + var/turf/food_turf = length(table_turfs) ? pick(table_turfs) : dogbed_turf new /obj/item/knife/kitchen(food_turf) var/obj/item/food/cake/birthday/iancake = new(food_turf) iancake.desc = "Happy birthday, Ian!" + if(!length(open_turfs)) + return + //some balloons! this picks an open turf and pops a few balloons in and around that turf, yay. for(var/i in 1 to balloon_clusters) - var/turf/clusterspot = pick_n_take(openturfs) + var/turf/clusterspot = pick_n_take(open_turfs) new /obj/item/toy/balloon(clusterspot) var/balloons_left_to_give = 3 //the amount of balloons around the cluster var/list/dirs_to_balloon = GLOB.cardinals.Copy() @@ -973,6 +982,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) /obj/effect/mapping_helpers/ianbirthday/admin//so admins may birthday any room name = "generic birthday setup" icon_state = "bdayhelper" + map_warning = FALSE /obj/effect/mapping_helpers/ianbirthday/admin/LateInitialize() birthday() @@ -990,24 +1000,27 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) qdel(src) /obj/effect/mapping_helpers/iannewyear/proc/fireworks() - var/area/a = get_area(src) - var/list/table = list()//should only be one aka the front desk, but just in case... - var/list/openturfs = list() - - for(var/thing in a.contents) - if(istype(thing, /obj/structure/table/reinforced)) - table += thing - else if(isopenturf(thing)) - if(locate(/obj/structure/bed/dogbed/ian) in thing) - new /obj/item/clothing/head/costume/festive(thing) - var/obj/item/reagent_containers/cup/glass/bottle/champagne/iandrink = new(thing) - iandrink.name = "dog champagne" - iandrink.pixel_y += 8 - iandrink.pixel_x += 8 - else - openturfs += thing + var/area/celebration_area = get_area(src) + var/list/table_turfs = list() + var/turf/dogbed_turf + for (var/list/zlevel_turfs as anything in celebration_area.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + if(locate(/obj/structure/table/reinforced) in area_turf) + table_turfs += area_turf + if(locate(/obj/structure/bed/dogbed/ian) in area_turf) + dogbed_turf = area_turf + + if(isnull(dogbed_turf)) + log_mapping("[src] in [celebration_area] could not find Ian's dogbed.") + return + + new /obj/item/clothing/head/costume/festive(dogbed_turf) + var/obj/item/reagent_containers/cup/glass/bottle/champagne/iandrink = new(dogbed_turf) + iandrink.name = "dog champagne" + iandrink.pixel_y += 8 + iandrink.pixel_x += 8 - var/turf/fireworks_turf = get_turf(pick(table)) + var/turf/fireworks_turf = length(table_turfs) ? pick(table_turfs) : dogbed_turf var/obj/item/storage/box/matches/matchbox = new(fireworks_turf) matchbox.pixel_y += 8 matchbox.pixel_x -= 3 diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index b03177acfe13..14504eb38098 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -932,8 +932,10 @@ GLOBAL_LIST_EMPTY(map_model_default) if(!new_z) old_area = crds.loc - old_area.turfs_to_uncontain += crds - area_instance.contained_turfs.Add(crds) + LISTASSERTLEN(old_area.turfs_to_uncontain_by_zlevel, crds.z, list()) + LISTASSERTLEN(area_instance.turfs_by_zlevel, crds.z, list()) + old_area.turfs_to_uncontain_by_zlevel[crds.z] += crds + area_instance.turfs_by_zlevel[crds.z] += crds area_instance.contents.Add(crds) if(GLOB.use_preloader) diff --git a/code/modules/mapping/ruins.dm b/code/modules/mapping/ruins.dm index a7b9480a34e4..ff87057796bc 100644 --- a/code/modules/mapping/ruins.dm +++ b/code/modules/mapping/ruins.dm @@ -64,7 +64,16 @@ return center -/proc/seedRuins(list/z_levels = null, budget = 0, whitelist = list(/area/space), list/potentialRuins, clear_below = FALSE) +/** + * Loads the ruins for a given z level. + * @param z_levels The z levels to load ruins on. + * @param budget The budget to spend on ruins. Compare against the cost of the ruins in /datum/map_template/ruin. + * @param whitelist A list of areas to allow ruins to be placed in. + * @param potentialRuins A list of ruins to choose from. + * @param clear_below Whether to clear the area below the ruin. Used for multiz ruins. + * @param mineral_budget The budget to spend on ruins that spawn ore vents. Map templates with vents have that defined by mineral_cost. + */ +/proc/seedRuins(list/z_levels = null, budget = 0, whitelist = list(/area/space), list/potentialRuins, clear_below = FALSE, mineral_budget = 15) if(!z_levels || !z_levels.len) WARNING("No Z levels provided - Not generating ruins") return @@ -93,14 +102,14 @@ R.allow_duplicates = FALSE // no multiples for testing R.always_place = !R.unpickable // unpickable ruin means it spawns as a set with another ruin - if(R.cost > budget) //Why would you do that + if(R.cost > budget || R.mineral_cost > mineral_budget) //Why would you do that continue if(R.always_place) forced_ruins[R] = -1 if(R.unpickable) continue ruins_available[R] = R.placement_weight - while(budget > 0 && (ruins_available.len || forced_ruins.len)) + while((budget > 0 || mineral_budget > 0) && (ruins_available.len || forced_ruins.len)) var/datum/map_template/ruin/current_pick var/forced = FALSE var/forced_z //If set we won't pick z level and use this one instead. @@ -159,6 +168,7 @@ log_world("Failed to place [current_pick.name] ruin.") else budget -= current_pick.cost + mineral_budget -= current_pick.mineral_cost if(!current_pick.allow_duplicates) for(var/datum/map_template/ruin/R in ruins_available) if(R.id == current_pick.id) @@ -189,7 +199,7 @@ //Update the available list for(var/datum/map_template/ruin/R in ruins_available) - if(R.cost > budget) + if(R.cost > budget || R.mineral_cost > mineral_budget) ruins_available -= R log_world("Ruin loader finished with [budget] left to spend.") diff --git a/code/modules/mapping/space_management/space_reservation.dm b/code/modules/mapping/space_management/space_reservation.dm index b4e933d87d3c..49e65f627f98 100644 --- a/code/modules/mapping/space_management/space_reservation.dm +++ b/code/modules/mapping/space_management/space_reservation.dm @@ -81,9 +81,13 @@ for(var/turf/cordon_turf as anything in cordon_turfs) var/area/misc/cordon/cordon_area = GLOB.areas_by_type[/area/misc/cordon] || new var/area/old_area = cordon_turf.loc - old_area.turfs_to_uncontain += cordon_turf - cordon_area.contained_turfs += cordon_turf + + LISTASSERTLEN(old_area.turfs_to_uncontain_by_zlevel, cordon_turf.z, list()) + LISTASSERTLEN(cordon_area.turfs_by_zlevel, cordon_turf.z, list()) + old_area.turfs_to_uncontain_by_zlevel[cordon_turf.z] += cordon_turf + cordon_area.turfs_by_zlevel[cordon_turf.z] += cordon_turf cordon_area.contents += cordon_turf + // Its no longer unused, but its also not "used" cordon_turf.turf_flags &= ~UNUSED_RESERVATION_TURF cordon_turf.ChangeTurf(/turf/cordon, /turf/cordon) diff --git a/code/modules/mapping/verify.dm b/code/modules/mapping/verify.dm index 60067bc5db75..c9347c7ecdb7 100644 --- a/code/modules/mapping/verify.dm +++ b/code/modules/mapping/verify.dm @@ -16,7 +16,7 @@ GLOBAL_LIST_EMPTY(map_reports) original_path = map.original_path || "Untitled" GLOB.map_reports += src -/datum/map_report/Destroy(force, ...) +/datum/map_report/Destroy(force) GLOB.map_reports -= src return ..() diff --git a/code/modules/meteors/meteor_types.dm b/code/modules/meteors/meteor_types.dm index 9f598f9809e9..94e1f3dfe4eb 100644 --- a/code/modules/meteors/meteor_types.dm +++ b/code/modules/meteors/meteor_types.dm @@ -327,8 +327,8 @@ signature = "bluespace flux" /obj/effect/meteor/bluespace/Bump() - ..() - if(prob(35)) + . = ..() + if(!QDELETED(src) && prob(35)) // monkestation edit: runtime fix do_teleport(src, get_turf(src), 6, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) /obj/effect/meteor/banana diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm index 46b6d407e38a..1011e8af2ff2 100644 --- a/code/modules/mining/equipment/mineral_scanner.dm +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -82,7 +82,9 @@ duration = 35 pixel_x = -224 pixel_y = -224 + /// What animation easing to use when we create the ore overlay on rock walls/ore vents. + var/easing_style = EASE_IN /obj/effect/temp_visual/mining_overlay/Initialize(mapload) . = ..() - animate(src, alpha = 0, time = duration, easing = EASE_IN) + animate(src, alpha = 0, time = duration, easing = easing_style) diff --git a/code/modules/mining/equipment/monster_organs/monster_organ.dm b/code/modules/mining/equipment/monster_organs/monster_organ.dm index 22837383d31e..55b7c08220bd 100644 --- a/code/modules/mining/equipment/monster_organs/monster_organ.dm +++ b/code/modules/mining/equipment/monster_organs/monster_organ.dm @@ -65,7 +65,7 @@ . = ..() decay_timer = addtimer(CALLBACK(src, PROC_REF(go_inert)), time_to_decay, TIMER_STOPPABLE) -/obj/item/organ/internal/monster_core/Destroy(force, silent) +/obj/item/organ/internal/monster_core/Destroy(force) deltimer(decay_timer) return ..() diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm index 61a571ab9eeb..bd4ee168cb7d 100644 --- a/code/modules/mining/lavaland/megafauna_loot.dm +++ b/code/modules/mining/lavaland/megafauna_loot.dm @@ -428,7 +428,7 @@ check_jobban = ROLE_PAI, poll_time = 10 SECONDS, ignore_category = POLL_IGNORE_POSSESSED_BLADE, - pic_source = src, + alert_pic = src, role_name_text = "soul scythe" ) if(LAZYLEN(candidates)) diff --git a/code/modules/mob/dead/new_player/login.dm b/code/modules/mob/dead/new_player/login.dm index 1374d542a055..89d19d4a3d15 100644 --- a/code/modules/mob/dead/new_player/login.dm +++ b/code/modules/mob/dead/new_player/login.dm @@ -52,7 +52,7 @@ var/datum/asset/asset_datum = get_asset_datum(/datum/asset/simple/lobby) asset_datum.send(client) - if(!client) // client disconnected during asset transit + if(QDELETED(client)) // client disconnected during asset transit return FALSE // The parent call for Login() may do a bunch of stuff, like add verbs. @@ -61,11 +61,16 @@ ///guh client.check_overwatch() + if(QDELETED(client)) // client disconnected during overwatch check + return FALSE if(client.interviewee) register_for_interview() return + if(QDELETED(client)) // client disconnected during- yeah you get the point + return FALSE + if(SSticker.current_state < GAME_STATE_SETTING_UP) var/tl = SSticker.GetTimeLeft() to_chat(src, "Please set up your character and select \"Ready\". The game will start [tl > 0 ? "in about [DisplayTimeText(tl)]" : "soon"].") diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index ed00c93095fd..18a4e63e6eda 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -299,6 +299,10 @@ return new_character.key = key //Manually transfer the key to log them in, new_character.stop_sound_channel(CHANNEL_LOBBYMUSIC) + if(new_character?.client?.media) + new_character.client.media.lobby_music = FALSE + new_character.client.media.stop_music() + var/area/joined_area = get_area(new_character.loc) if(joined_area) joined_area.on_joining_game(new_character) diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm index 90b147e0aff1..08608f33a042 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -67,7 +67,7 @@ * Currently only used by mutantparts so don't worry about hair and stuff. * This is the source that this accessory will get its color from. Default is MUTCOLOR, but can also be HAIR, FACEHAIR, EYECOLOR and 0 if none. */ - var/color_src = MUTCOLORS + var/color_src = MUTANT_COLOR /// Decides if this sprite has an "inner" part, such as the fleshy parts on ears. var/hasinner = FALSE /// Is this part locked from roundstart selection? Used for parts that apply effects. @@ -1780,7 +1780,7 @@ MONKESTATION EDIT name = "Cat" icon = 'icons/mob/species/human/cat_features.dmi' icon_state = "default" - color_src = HAIR + color_src = HAIR_COLOR /datum/sprite_accessory/tails/monkey name = "Monkey" @@ -1891,14 +1891,14 @@ MONKESTATION EDIT name = "Cat" icon_state = "cat" hasinner = TRUE - color_src = HAIR + color_src = HAIR_COLOR /datum/sprite_accessory/ears/fox icon = 'icons/mob/species/human/fox_features.dmi' name = "Fox" icon_state = "fox" hasinner = TRUE - color_src = HAIR + color_src = HAIR_COLOR locked = TRUE /datum/sprite_accessory/wings/none @@ -2092,7 +2092,7 @@ MONKESTATION EDIT /datum/sprite_accessory/caps icon = 'icons/mob/species/mush_cap.dmi' - color_src = HAIR + color_src = HAIR_COLOR em_block = TRUE /datum/sprite_accessory/caps/round diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index fc8782763a46..862a269ebbfb 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -37,7 +37,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) var/health_scan = FALSE //Are health scans currently enabled? var/chem_scan = FALSE //Are chem scans currently enabled? var/gas_scan = FALSE //Are gas scans currently enabled? - var/list/datahuds = list(DATA_HUD_SECURITY_ADVANCED, DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_ADVANCED) //list of data HUDs shown to ghosts. + var/list/datahuds = list(DATA_HUD_SECURITY_ADVANCED, DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_ADVANCED, DATA_HUD_MOOD) //list of data HUDs shown to ghosts. monkestation addition here var/ghost_orbit = GHOST_ORBIT_CIRCLE //These variables store hair data if the ghost originates from a species with head and/or facial hair. @@ -107,10 +107,11 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) if(ishuman(body)) var/mob/living/carbon/human/body_human = body - if(HAIR in body_human.dna.species.species_traits) + var/datum/species/human_species = body_human.dna.species + if(human_species.check_head_flags(HEAD_HAIR)) hairstyle = body_human.hairstyle hair_color = brighten_color(body_human.hair_color) - if(FACEHAIR in body_human.dna.species.species_traits) + if(human_species.check_head_flags(HEAD_FACIAL_HAIR)) facial_hairstyle = body_human.facial_hairstyle facial_hair_color = brighten_color(body_human.facial_hair_color) @@ -769,9 +770,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/datum/atom_hud/data_hud = GLOB.huds[hudtype] data_hud.hide_from(src) +//MONKESTATION /mob/dead/observer/verb/toggle_data_huds() - set name = "Toggle Sec/Med/Diag HUD" - set desc = "Toggles whether you see medical/security/diagnostic HUDs" + set name = "Toggle Sec/Med/Diag/Mood HUD" + set desc = "Toggles whether you see medical/security/diagnostic/mood HUDs" set category = "Ghost" if(data_huds_on) //remove old huds @@ -842,11 +844,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/species_type = client.prefs.read_preference(/datum/preference/choiced/species) var/datum/species/species = new species_type - if(HAIR in species.species_traits) + if(species.check_head_flags(HEAD_HAIR)) hairstyle = client.prefs.read_preference(/datum/preference/choiced/hairstyle) hair_color = brighten_color(client.prefs.read_preference(/datum/preference/color/hair_color)) - if(FACEHAIR in species.species_traits) + if(species.check_head_flags(HEAD_FACIAL_HAIR)) facial_hairstyle = client.prefs.read_preference(/datum/preference/choiced/facial_hairstyle) facial_hair_color = brighten_color(client.prefs.read_preference(/datum/preference/color/facial_hair_color)) diff --git a/code/modules/mob/dead/observer/observer_say.dm b/code/modules/mob/dead/observer/observer_say.dm index 522e250204f2..95a0c35d3745 100644 --- a/code/modules/mob/dead/observer/observer_say.dm +++ b/code/modules/mob/dead/observer/observer_say.dm @@ -62,8 +62,14 @@ // Create map text prior to modifying message for goonchat if (client?.prefs.read_preference(/datum/preference/toggle/enable_runechat) && (client.prefs.read_preference(/datum/preference/toggle/enable_runechat_non_mobs) || ismob(speaker))) create_chat_message(speaker, message_language, raw_message, spans) + // monkestation start: bold messages for ghosts when they're nearby + var/list/our_spans = spans + if((client?.prefs.chat_toggles & CHAT_GHOSTEARS) && in_view_range(src, to_follow, TRUE)) + our_spans = spans.Copy() + our_spans |= SPAN_BOLD + // monkestation end // Recompose the message, because it's scrambled by default - message = compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mods) + message = compose_message(speaker, message_language, raw_message, radio_freq, our_spans, message_mods) to_chat(src, html = "[link] [message]", avoid_highlighting = speaker == src) diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index db6acc346b15..6f81f7e53d34 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -176,6 +176,7 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new) /mob/living/basic/regal_rat, /mob/living/simple_animal/bot, /mob/living/simple_animal/hostile/megafauna, + /mob/living/basic/chicken/gary, // monkestation edit: gary )) if(!is_type_in_typecache(potential_mob_poi, mob_allowed_typecache) && !potential_mob_poi.GetComponent(/datum/component/deadchat_control)) return FALSE diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 5d3d80745a3d..d6a9075abf80 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -285,7 +285,7 @@ * * Will pass FALSE if the item can not be dropped due to TRAIT_NODROP via doUnEquip() * If the item can be dropped, it will be forceMove()'d to the ground and the turf's Entered() will be called. */ -/mob/proc/dropItemToGround(obj/item/I, force = FALSE, silent = FALSE, invdrop = TRUE) +/mob/proc/dropItemToGround(obj/item/I, force = FALSE, silent = FALSE, invdrop = TRUE, violent = FALSE) if (isnull(I)) return TRUE @@ -300,6 +300,11 @@ I.pixel_y = I.base_pixel_y + rand(-6, 6) I.do_drop_animation(src) + if(violent) + var/turf/drop = drop_location() + I.launch_item(drop) + + //for when the item will be immediately placed in a loc other than the ground /mob/proc/transferItemToLoc(obj/item/I, newloc = null, force = FALSE, silent = TRUE) . = doUnEquip(I, force, newloc, FALSE, silent = silent) diff --git a/code/modules/mob/living/basic/bots/_bots.dm b/code/modules/mob/living/basic/bots/_bots.dm index e5584574ee3e..26cf415c11d7 100644 --- a/code/modules/mob/living/basic/bots/_bots.dm +++ b/code/modules/mob/living/basic/bots/_bots.dm @@ -793,11 +793,11 @@ GLOBAL_LIST_INIT(command_strings, list( initial_access = access_card.access.Copy() -/mob/living/basic/bot/proc/summon_bot(atom/caller, turf/turf_destination, user_access = list(), grant_all_access = FALSE) - if(isAI(caller) && !set_ai_caller(caller)) +/mob/living/basic/bot/proc/summon_bot(atom/user, turf/turf_destination, user_access = list(), grant_all_access = FALSE) + if(isAI(user) && !set_ai_caller(user)) return FALSE - bot_reset(bypass_ai_reset = isAI(caller)) - var/turf/destination = turf_destination ? turf_destination : get_turf(caller) + bot_reset(bypass_ai_reset = isAI(user)) + var/turf/destination = turf_destination ? turf_destination : get_turf(user) ai_controller?.set_blackboard_key(BB_BOT_SUMMON_TARGET, destination) var/list/access_to_grant = grant_all_access ? REGION_ACCESS_ALL_STATION : user_access + initial_access access_card.set_access(access_to_grant) @@ -805,11 +805,11 @@ GLOBAL_LIST_INIT(command_strings, list( update_bot_mode(new_mode = BOT_SUMMON) return TRUE -/mob/living/basic/bot/proc/set_ai_caller(mob/living/caller) +/mob/living/basic/bot/proc/set_ai_caller(mob/living/user) var/atom/calling_ai = calling_ai_ref?.resolve() if(!isnull(calling_ai) && calling_ai != src) return FALSE - calling_ai_ref = WEAKREF(caller) + calling_ai_ref = WEAKREF(user) return TRUE /mob/living/basic/bot/proc/update_bot_mode(new_mode, update_hud = TRUE) diff --git a/code/modules/mob/living/basic/bots/medbot/medbot.dm b/code/modules/mob/living/basic/bots/medbot/medbot.dm index 88e843cc814d..2e7a78d2b679 100644 --- a/code/modules/mob/living/basic/bots/medbot/medbot.dm +++ b/code/modules/mob/living/basic/bots/medbot/medbot.dm @@ -163,7 +163,7 @@ icon_state = "[base_icon_state]a" return if(mode == BOT_HEALING) - icon_state = "[base_icon_state]s[medical_mode_flags & MEDBOT_STATIONARY_MODE]" + icon_state = "[base_icon_state]s[medical_mode_flags & MEDBOT_STATIONARY_MODE ? 1 : 0]" return icon_state = "[base_icon_state][medical_mode_flags & MEDBOT_STATIONARY_MODE ? 2 : 1]" //Bot has yellow light to indicate stationary mode. diff --git a/code/modules/mob/living/basic/drone/_drone.dm b/code/modules/mob/living/basic/drone/_drone.dm index cf0e71553abe..27c328617c4d 100644 --- a/code/modules/mob/living/basic/drone/_drone.dm +++ b/code/modules/mob/living/basic/drone/_drone.dm @@ -187,7 +187,8 @@ equip_to_slot_or_del(storage, ITEM_SLOT_DEX_STORAGE) for(var/holiday_name in GLOB.holidays) - var/obj/item/potential_hat + var/datum/holiday/holiday_today = GLOB.holidays[holiday_name] + var/obj/item/potential_hat = holiday_today.holiday_hat if(!isnull(potential_hat) && isnull(default_headwear)) //If our drone type doesn't start with a hat, we take the holiday one. default_headwear = potential_hat diff --git a/code/modules/mob/living/basic/guardian/guardian_creator.dm b/code/modules/mob/living/basic/guardian/guardian_creator.dm index 23a1710478ac..7915bc621017 100644 --- a/code/modules/mob/living/basic/guardian/guardian_creator.dm +++ b/code/modules/mob/living/basic/guardian/guardian_creator.dm @@ -98,7 +98,7 @@ GLOBAL_LIST_INIT(guardian_radial_images, setup_guardian_radial()) check_jobban = ROLE_PAI, poll_time = 10 SECONDS, ignore_category = POLL_IGNORE_HOLOPARASITE, - pic_source = guardian_path, + alert_pic = guardian_path, role_name_text = "guardian spirit" ) if(LAZYLEN(candidates)) diff --git a/code/modules/mob/living/basic/guardian/guardian_verbs.dm b/code/modules/mob/living/basic/guardian/guardian_verbs.dm index f2e81306c515..0baa9700f0fb 100644 --- a/code/modules/mob/living/basic/guardian/guardian_verbs.dm +++ b/code/modules/mob/living/basic/guardian/guardian_verbs.dm @@ -166,27 +166,18 @@ return FALSE to_chat(owner, span_holoparasite("You attempt to reset [span_bold(chosen_guardian.real_name)]'s personality...")) - var/list/mob/dead/observer/ghost_candidates = SSpolling.poll_ghost_candidates_for_mob( - "Do you want to play as [owner.real_name]'s [chosen_guardian.theme.name]?", - check_jobban = ROLE_PAI, - poll_time = 10 SECONDS, - target_mob = owner, - ignore_category = POLL_IGNORE_HOLOPARASITE, - role_name_text = chosen_guardian.theme.name - ) - if (!LAZYLEN(ghost_candidates)) + var/mob/chosen_one = SSpolling.poll_ghost_candidates("Do you want to play as [span_danger("[owner.real_name]'s")] [span_notice(chosen_guardian.theme.name)]?", check_jobban = ROLE_PAI, poll_time = 10 SECONDS, alert_pic = chosen_guardian, jump_target = owner, role_name_text = chosen_guardian.theme.name, amount_to_pick = 1) + if(isnull(chosen_one)) to_chat(owner, span_holoparasite("Your attempt to reset the personality of \ [span_bold(chosen_guardian.real_name)] appears to have failed... \ Looks like you're stuck with it for now.")) StartCooldown() return FALSE - - var/mob/dead/observer/candidate = pick(ghost_candidates) to_chat(chosen_guardian, span_holoparasite("Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance.")) to_chat(owner, span_boldholoparasite("The personality of [chosen_guardian.theme.name] has been successfully reset.")) - message_admins("[key_name_admin(candidate)] has taken control of ([ADMIN_LOOKUPFLW(chosen_guardian)])") + message_admins("[key_name_admin(chosen_one)] has taken control of ([ADMIN_LOOKUPFLW(chosen_guardian)])") chosen_guardian.ghostize(FALSE) - chosen_guardian.key = candidate.key + chosen_guardian.key = chosen_one.key COOLDOWN_START(chosen_guardian, resetting_cooldown, 5 MINUTES) chosen_guardian.guardian_rename() //give it a new color and name, to show it's a new person chosen_guardian.guardian_recolour() diff --git a/code/modules/mob/living/basic/heretic/star_gazer.dm b/code/modules/mob/living/basic/heretic/star_gazer.dm index a243c67b3ebb..8b664b68dcf2 100644 --- a/code/modules/mob/living/basic/heretic/star_gazer.dm +++ b/code/modules/mob/living/basic/heretic/star_gazer.dm @@ -31,6 +31,7 @@ move_force = MOVE_FORCE_OVERPOWERING move_resist = MOVE_FORCE_OVERPOWERING pull_force = MOVE_FORCE_OVERPOWERING + can_buckle_to = FALSE mob_size = MOB_SIZE_HUGE layer = LARGE_MOB_LAYER plane = GAME_PLANE_UPPER_FOV_HIDDEN diff --git a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon_ai.dm b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon_ai.dm index 0012aff294d4..3e0558f89af0 100644 --- a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon_ai.dm +++ b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon_ai.dm @@ -31,7 +31,7 @@ var/datum/action/cooldown/ability = controller.blackboard[BB_TARGETED_ACTION] if(QDELETED(target) || QDELETED(controller.pawn) || !ability?.IsAvailable()) return - ability.InterceptClickOn(caller = controller.pawn, target = target) + ability.InterceptClickOn(user = controller.pawn, target = target) /datum/ai_planning_subtree/targeted_mob_ability/brimbeam use_ability_behaviour = /datum/ai_behavior/targeted_mob_ability/brimbeam diff --git a/code/modules/mob/living/basic/pets/parrot/_parrot.dm b/code/modules/mob/living/basic/pets/parrot/_parrot.dm index 4cf4070e75e8..0e4914439824 100644 --- a/code/modules/mob/living/basic/pets/parrot/_parrot.dm +++ b/code/modules/mob/living/basic/pets/parrot/_parrot.dm @@ -70,7 +70,7 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( /obj/structure/frame/computer, )) ///items we wont pick up - var/static/list/ignore_items = typecacheof(list(/obj/item/radio)) + var/static/list/ignore_items = typecacheof(list(/obj/item/radio, /obj/effect)) //Monkestation addition: ignore their nametag /// Food that Poly loves to eat (spoiler alert it's just crackers) var/static/list/edibles = list( diff --git a/code/modules/mob/living/basic/space_fauna/carp/carp.dm b/code/modules/mob/living/basic/space_fauna/carp/carp.dm index 24fb0b582642..b889305f811e 100644 --- a/code/modules/mob/living/basic/space_fauna/carp/carp.dm +++ b/code/modules/mob/living/basic/space_fauna/carp/carp.dm @@ -269,6 +269,10 @@ disk_overlay = mutable_appearance('icons/mob/simple/carp.dmi', "disk_overlay") new_overlays += disk_overlay +/mob/living/basic/carp/advanced + health = 40 + obj_damage = 15 + #undef RARE_CAYENNE_CHANCE ///Wild carp that just vibe ya know diff --git a/code/modules/mob/living/basic/space_fauna/morph.dm b/code/modules/mob/living/basic/space_fauna/morph.dm index 0cce48ba377e..40d9a8802219 100644 --- a/code/modules/mob/living/basic/space_fauna/morph.dm +++ b/code/modules/mob/living/basic/space_fauna/morph.dm @@ -147,7 +147,7 @@ SIGNAL_HANDLER // linters hate this if it's not async for some reason even though nothing blocks - INVOKE_ASYNC(disguise_ability, TYPE_PROC_REF(/datum/action/cooldown, InterceptClickOn), caller = source, target = target) + INVOKE_ASYNC(disguise_ability, TYPE_PROC_REF(/datum/action/cooldown, InterceptClickOn), user = source, target = target) return COMSIG_MOB_CANCEL_CLICKON /// Handles the logic for attacking anything. diff --git a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm index a595fe6beae8..24f1b6d7463d 100644 --- a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm +++ b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm @@ -62,6 +62,7 @@ poll_ignore_key = POLL_IGNORE_REGAL_RAT,\ assumed_control_message = "You are an independent, invasive force on the station! Hoard coins, trash, cheese, and the like from the safety of darkness!",\ after_assumed_control = CALLBACK(src, PROC_REF(became_player_controlled)),\ + poll_chat_border_icon = /obj/item/food/cheese/wedge,\ ) var/datum/action/cooldown/mob_cooldown/domain/domain = new(src) diff --git a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat_actions.dm b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat_actions.dm index 0f90a8b2ed02..2bcee4a6d55f 100644 --- a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat_actions.dm +++ b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat_actions.dm @@ -105,7 +105,7 @@ if (LAZYLEN(SSmobs.cheeserats) >= rat_cap) to_chat(owner,span_warning("There's too many mice on this station to beckon a new one! Find them first!")) return - new /mob/living/basic/mouse(owner.loc) + new /mob/living/basic/mouse/ratking(owner.loc) owner.visible_message(span_warning("[owner] commands a rat to their side!")) /// Makes a passed mob into our minion diff --git a/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm b/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm index 0d218d73ec14..15cc2b7747b0 100644 --- a/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm +++ b/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm @@ -65,11 +65,7 @@ return TRUE /datum/action/cooldown/spell/aoe/revenant/get_things_to_cast_on(atom/center) - var/list/things = list() - for(var/turf/nearby_turf in range(aoe_radius, center)) - things += nearby_turf - - return things + return RANGE_TURFS(aoe_radius, center) /datum/action/cooldown/spell/aoe/revenant/before_cast(mob/living/basic/revenant/cast_on) . = ..() diff --git a/code/modules/mob/living/basic/space_fauna/revenant/revenant_items.dm b/code/modules/mob/living/basic/space_fauna/revenant/revenant_items.dm index ea153b03c063..f8a3db0202a2 100644 --- a/code/modules/mob/living/basic/space_fauna/revenant/revenant_items.dm +++ b/code/modules/mob/living/basic/space_fauna/revenant/revenant_items.dm @@ -86,21 +86,11 @@ /// Handles giving the revenant a new client to control it /obj/item/ectoplasm/revenant/proc/get_new_user() message_admins("The new revenant's old client either could not be found or is in a new, living mob - grabbing a random candidate instead...") - var/list/candidates = SSpolling.poll_ghost_candidates_for_mob("Do you want to be [revenant.name] (reforming)?", check_jobban = ROLE_REVENANT, role = ROLE_REVENANT, poll_time = 5 SECONDS, target_mob = revenant, pic_source = revenant) - - if(!LAZYLEN(candidates)) + var/mob/chosen_one = SSpolling.poll_ghosts_for_target("Do you want to be [span_notice(revenant.name)] (reforming)?", check_jobban = ROLE_REVENANT, role = ROLE_REVENANT, poll_time = 5 SECONDS, checked_target = revenant, alert_pic = revenant, role_name_text = "reforming revenant", chat_text_border_icon = revenant) + if(isnull(chosen_one)) message_admins("No candidates were found for the new revenant.") inert = TRUE visible_message(span_revenwarning("[src] settles down and seems lifeless.")) qdel(revenant) return null - - var/mob/dead/observer/potential_client = pick(candidates) - if(isnull(potential_client)) - qdel(revenant) - message_admins("No candidate was found for the new revenant. Oh well!") - inert = TRUE - visible_message(span_revenwarning("[src] settles down and seems lifeless.")) - return null - - return potential_client + return chosen_one diff --git a/code/modules/mob/living/basic/vermin/cockroach.dm b/code/modules/mob/living/basic/vermin/cockroach.dm index c55b94cd0182..51652ae179ae 100644 --- a/code/modules/mob/living/basic/vermin/cockroach.dm +++ b/code/modules/mob/living/basic/vermin/cockroach.dm @@ -2,13 +2,15 @@ name = "cockroach" desc = "This station is just crawling with bugs." icon_state = "cockroach" - icon_dead = "cockroach" //Make this work + icon_dead = "cockroach_no_animation" density = FALSE mob_biotypes = MOB_ORGANIC|MOB_BUG mob_size = MOB_SIZE_TINY + held_w_class = WEIGHT_CLASS_TINY health = 1 maxHealth = 1 speed = 1.25 + can_be_held = TRUE gold_core_spawnable = FRIENDLY_SPAWN pass_flags = PASSTABLE | PASSGRILLE | PASSMOB @@ -38,17 +40,22 @@ var/static/list/roach_drops = list(/obj/effect/decal/cleanable/insectguts) AddElement(/datum/element/death_drops, roach_drops) AddElement(/datum/element/swabable, cockroach_cell_line, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 7) - AddComponent(/datum/component/squashable, squash_chance = 50, squash_damage = 1) + AddComponent( \ + /datum/component/squashable, \ + squash_chance = 50, \ + squash_damage = 1, \ + squash_flags = SQUASHED_SHOULD_BE_GIBBED|SQUASHED_ALWAYS_IF_DEAD|SQUASHED_DONT_SQUASH_IN_CONTENTS, \ + ) ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) - -/mob/living/basic/cockroach/death(gibbed) - if(GLOB.station_was_nuked) //If the nuke is going off, then cockroaches are invincible. Keeps the nuke from killing them, cause cockroaches are immune to nukes. - return - ..() + ADD_TRAIT(src, TRAIT_NUKEIMMUNE, INNATE_TRAIT) + ADD_TRAIT(src, TRAIT_RADIMMUNE, INNATE_TRAIT) /mob/living/basic/cockroach/ex_act() //Explosions are a terrible way to handle a cockroach. return FALSE +// Roach goop is the gibs to drop +/mob/living/basic/cockroach/spawn_gibs() + return /datum/ai_controller/basic_controller/cockroach blackboard = list( @@ -137,7 +144,13 @@ /mob/living/basic/cockroach/hauberoach/Initialize(mapload) . = ..() AddComponent(/datum/component/caltrop, min_damage = 10, max_damage = 15, flags = (CALTROP_BYPASS_SHOES | CALTROP_SILENT)) - AddComponent(/datum/component/squashable, squash_chance = 100, squash_damage = 1, squash_callback = TYPE_PROC_REF(/mob/living/basic/cockroach/hauberoach, on_squish)) + AddComponent( \ + /datum/component/squashable, \ + squash_chance = 100, \ + squash_damage = 1, \ + squash_flags = SQUASHED_SHOULD_BE_GIBBED|SQUASHED_ALWAYS_IF_DEAD|SQUASHED_DONT_SQUASH_IN_CONTENTS, \ + squash_callback = TYPE_PROC_REF(/mob/living/basic/cockroach/hauberoach, on_squish), \ + ) ///Proc used to override the squashing behavior of the normal cockroach. /mob/living/basic/cockroach/hauberoach/proc/on_squish(mob/living/cockroach, mob/living/living_target) @@ -148,6 +161,7 @@ return TRUE living_target.visible_message(span_notice("[living_target] squashes [cockroach], not even noticing its spike."), span_notice("You squashed [cockroach], not even noticing its spike.")) return FALSE + /datum/ai_controller/basic_controller/cockroach/hauberoach planning_subtrees = list( /datum/ai_planning_subtree/pet_planning, diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 246e539d3985..4c9635ef9742 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -79,7 +79,7 @@ if(iter_part.generic_bleedstacks) // If you don't have any bleedstacks, don't try and heal them if(HAS_TRAIT(src, TRAIT_HEAVY_BLEEDER)) - iter_part.adjustBleedStacks(-1, 0) /// we basically double up on bleedstacks + iter_part.adjustBleedStacks(-1, minimum = 0) /// we basically double up on bleedstacks iter_part.adjustBleedStacks(-1, 0) if(temp_bleed) @@ -92,24 +92,23 @@ iter_part.update_part_wound_overlay() //Makes a blood drop, leaking amt units of blood from the mob -/mob/living/carbon/proc/bleed(amt) - if(!blood_volume || (status_flags & GODMODE)) +/mob/living/carbon/proc/bleed(amt, no_visual = FALSE) + if(!blood_volume || (status_flags & GODMODE) || HAS_TRAIT(src, TRAIT_NOBLOOD)) return blood_volume = max(blood_volume - amt, 0) //Blood loss still happens in locker, floor stays clean - if(isturf(loc) && prob(sqrt(amt)*BLOOD_DRIP_RATE_MOD)) - add_splatter_floor(loc, (amt <= 10)) + if(!no_visual && isturf(loc) && prob(sqrt(amt) * 80)) + add_splatter_floor(loc, small_drip = (amt < 10)) -/mob/living/carbon/human/bleed(amt) +/mob/living/carbon/human/bleed(amt, no_visual = FALSE) amt *= physiology.bleed_mod - if(!HAS_TRAIT(src, TRAIT_NOBLOOD)) - ..() + return ..() /// A helper to see how much blood we're losing per tick /mob/living/carbon/proc/get_bleed_rate() - if(!blood_volume) - return + if(!blood_volume || HAS_TRAIT(src, TRAIT_NOBLOOD)) + return 0 var/bleed_amt = 0 for(var/X in bodyparts) var/obj/item/bodypart/iter_bodypart = X @@ -117,10 +116,7 @@ return bleed_amt /mob/living/carbon/human/get_bleed_rate() - if(HAS_TRAIT(src, TRAIT_NOBLOOD)) - return - . = ..() - . *= physiology.bleed_mod + return ..() * physiology.bleed_mod /** * bleed_warn() is used to for carbons with an active client to occasionally receive messages warning them about their bleeding status (if applicable) @@ -324,26 +320,26 @@ . = safe //to add a splatter of blood or other mob liquid. -/mob/living/proc/add_splatter_floor(turf/T, small_drip) - if(get_blood_id() != /datum/reagent/blood) +/mob/living/proc/add_splatter_floor(turf/splattered, small_drip) + if((get_blood_id() != /datum/reagent/blood) || HAS_TRAIT(src, TRAIT_NOBLOOD)) return - if(!QDELETED(T)) - T = get_turf(src) - if(QDELETED(T) || isclosedturf(T) || (isgroundlessturf(T) && !GET_TURF_BELOW(T))) + if(!splattered) + splattered = get_turf(src) + if(isclosedturf(splattered) || (isgroundlessturf(splattered) && !GET_TURF_BELOW(splattered))) return var/datum/reagent/blood_type = get_blood_id() var/list/temp_blood_DNA if(small_drip) - if(!QDELETED(T.liquids)) + if(!QDELETED(splattered.liquids)) var/list/blood_drop = list(get_blood_id() = 0.1) - T.add_liquid_list(blood_drop, FALSE, 300) + splattered.add_liquid_list(blood_drop, FALSE, 300) return // Only a certain number of drips (or one large splatter) can be on a given turf. - var/obj/effect/decal/cleanable/blood/drip/drop = locate() in T + var/obj/effect/decal/cleanable/blood/drip/drop = locate() in splattered if(drop) if(drop.drips < 5) - T?.pollute_turf(/datum/pollutant/metallic_scent, 5) + splattered?.pollute_turf(/datum/pollutant/metallic_scent, 5) drop.drips++ drop.add_overlay(pick(drop.random_icon_states)) drop.transfer_mob_blood_dna(src) @@ -352,18 +348,18 @@ temp_blood_DNA = GET_ATOM_BLOOD_DNA(drop) //we transfer the dna from the drip to the splatter qdel(drop)//the drip is replaced by a bigger splatter else - T?.pollute_turf(/datum/pollutant/metallic_scent, 5) - drop = new(T, get_static_viruses()) + splattered?.pollute_turf(/datum/pollutant/metallic_scent, 5) + drop = new(splattered, get_static_viruses()) drop.transfer_mob_blood_dna(src) return // Create a bit of metallic pollution, as that's how blood smells - T.pollute_turf(/datum/pollutant/metallic_scent, 30) + splattered.pollute_turf(/datum/pollutant/metallic_scent, 30) // Find a blood decal or create a new one. - var/obj/effect/decal/cleanable/blood/B = locate() in T + var/obj/effect/decal/cleanable/blood/B = locate() in splattered if(!B) - B = new /obj/effect/decal/cleanable/blood/splatter(T, get_static_viruses()) + B = new /obj/effect/decal/cleanable/blood/splatter(splattered, get_static_viruses()) if(QDELETED(B)) //Give it up return B.bloodiness = min((B.bloodiness + BLOOD_AMOUNT_PER_DECAL), BLOOD_POOL_MAX) @@ -383,7 +379,7 @@ if(B.count > 9) qdel(B) var/list/blood_large = list(get_blood_id() = 20) - T.add_liquid_list(blood_large, FALSE, 300) + splattered.add_liquid_list(blood_large, FALSE, 300) /mob/living/carbon/human/add_splatter_floor(turf/T, small_drip) if(!HAS_TRAIT(src, TRAIT_NOBLOOD)) @@ -404,4 +400,33 @@ if(!B) B = new(T) +/** + * This proc is a helper for spraying blood for things like slashing/piercing wounds and dismemberment. + * + * The strength of the splatter in the second argument determines how much it can dirty and how far it can go + * + * Arguments: + * * splatter_direction: Which direction the blood is flying + * * splatter_strength: How many tiles it can go, and how many items it can pass over and dirty + */ +/mob/living/proc/spray_blood(splatter_direction, splatter_strength = 3) + if(!isturf(loc) || !blood_volume || HAS_TRAIT(src, TRAIT_NOBLOOD)) + return + var/obj/effect/decal/cleanable/blood/hitsplatter/our_splatter = new(loc) + our_splatter.add_blood_DNA(GET_ATOM_BLOOD_DNA(src)) + var/turf/targ = get_ranged_target_turf(src, splatter_direction, splatter_strength) + our_splatter.fly_towards(targ, splatter_strength) + +/** + * Helper proc for throwing blood particles around, similar to the spray_blood proc. + */ +/mob/living/proc/blood_particles(amount = rand(1, 3), angle = rand(0,360), min_deviation = -30, max_deviation = 30, min_pixel_z = 0, max_pixel_z = 6) + if(!isturf(loc) || !blood_volume ||HAS_TRAIT(src, TRAIT_NOBLOOD)) + return + for(var/i in 1 to amount) + var/obj/effect/decal/cleanable/blood/particle/droplet = new(loc) + droplet.add_blood_DNA(GET_ATOM_BLOOD_DNA(src)) + droplet.pixel_z = rand(min_pixel_z, max_pixel_z) + droplet.start_movement(angle + rand(min_deviation, max_deviation)) + #undef BLOOD_DRIP_RATE_MOD diff --git a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm index e26406a68288..ec6efde78d56 100644 --- a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm @@ -277,22 +277,22 @@ Doesn't work on other aliens/AI.*/ // We do this in InterceptClickOn() instead of Activate() // because we use the click parameters for aiming the projectile // (or something like that) -/datum/action/cooldown/alien/acid/neurotoxin/InterceptClickOn(mob/living/caller, params, atom/target) +/datum/action/cooldown/alien/acid/neurotoxin/InterceptClickOn(mob/living/user, params, atom/target) . = ..() if(!.) - unset_click_ability(caller, refund_cooldown = FALSE) + unset_click_ability(user, refund_cooldown = FALSE) return FALSE var/modifiers = params2list(params) - caller.visible_message( - span_danger("[caller] spits neurotoxin!"), + user.visible_message( + span_danger("[user] spits neurotoxin!"), span_alertalien("You spit neurotoxin."), ) - var/obj/projectile/neurotoxin/neurotoxin = new /obj/projectile/neurotoxin(caller.loc) - neurotoxin.preparePixelProjectile(target, caller, modifiers) - neurotoxin.firer = caller + var/obj/projectile/neurotoxin/neurotoxin = new /obj/projectile/neurotoxin(user.loc) + neurotoxin.preparePixelProjectile(target, user, modifiers) + neurotoxin.firer = user neurotoxin.fire() - caller.newtonian_move(get_dir(target, caller)) + user.newtonian_move(get_dir(target, user)) return TRUE // Has to return TRUE, otherwise is skipped. diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index a430deb718db..727f17c455e8 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -65,9 +65,9 @@ if(stage < 6) INVOKE_ASYNC(src, PROC_REF(RefreshInfectionImage)) var/slowdown = 1 - if(ishuman(owner)) - var/mob/living/carbon/human/baby_momma = owner - slowdown = baby_momma.reagents.has_reagent(/datum/reagent/medicine/antipathogenic/spaceacillin) ? 2 : 1 // spaceacillin doubles the time it takes to grow + if(!isnull(owner)) // it gestates out of bodies. + if(HAS_TRAIT(owner, TRAIT_VIRUS_RESISTANCE)) + slowdown *= 2 // spaceacillin doubles the time it takes to grow if(owner.has_status_effect(/datum/status_effect/nest_sustenance)) slowdown *= 0.80 //egg gestates 20% faster if you're trapped in a nest @@ -97,7 +97,7 @@ check_jobban = ROLE_ALIEN, poll_time = 10 SECONDS, ignore_category = POLL_IGNORE_ALIEN_LARVA, - pic_source = /mob/living/carbon/alien/larva, + alert_pic = /mob/living/carbon/alien/larva, role_name_text = "alien larva" ) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 1b98c758b55e..8ed56358f71e 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -495,12 +495,12 @@ if(isnull(.)) return if(new_value == LYING_DOWN) - if(HAS_TRAIT(src, FOOD_SLIDE)) + if(HAS_TRAIT(src, TRAIT_FOOD_SLIDE)) add_movespeed_modifier(/datum/movespeed_modifier/belly_slide) else add_movespeed_modifier(/datum/movespeed_modifier/carbon_crawling) else - if(HAS_TRAIT(src, FOOD_SLIDE)) + if(HAS_TRAIT(src, TRAIT_FOOD_SLIDE)) remove_movespeed_modifier(/datum/movespeed_modifier/belly_slide) else remove_movespeed_modifier(/datum/movespeed_modifier/carbon_crawling) @@ -1376,24 +1376,6 @@ log_combat(shover, target, "shoved", addition = "into [name]") return COMSIG_CARBON_SHOVE_HANDLED -/** - * This proc is a helper for spraying blood for things like slashing/piercing wounds and dismemberment. - * - * The strength of the splatter in the second argument determines how much it can dirty and how far it can go - * - * Arguments: - * * splatter_direction: Which direction the blood is flying - * * splatter_strength: How many tiles it can go, and how many items it can pass over and dirty - */ -/mob/living/carbon/proc/spray_blood(splatter_direction, splatter_strength = 3) - if(!isturf(loc)) - return - var/obj/effect/decal/cleanable/blood/hitsplatter/our_splatter = new(loc) - our_splatter.add_blood_DNA(GET_ATOM_BLOOD_DNA(src)) - our_splatter.blood_dna_info = get_blood_dna_list() - var/turf/targ = get_ranged_target_turf(src, splatter_direction, splatter_strength) - our_splatter.fly_towards(targ, splatter_strength) - /mob/living/carbon/ominous_nosebleed() var/obj/item/bodypart/head = get_bodypart(BODY_ZONE_HEAD) if(isnull(head)) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 488e04eee515..3b21192da75d 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -103,8 +103,7 @@ if(I.damtype == BRUTE && affecting.can_bleed()) if(prob(33)) I.add_mob_blood(src) - var/turf/location = get_turf(src) - add_splatter_floor(location) + blood_particles(amount = rand(1, 1 + round(I.force/15, 1)), angle = (user == src ? rand(0, 360): get_angle(user, src))) if(get_dist(user, src) <= 1) //people with TK won't get smeared with blood user.add_mob_blood(src) if(affecting.body_zone == BODY_ZONE_HEAD) @@ -520,12 +519,12 @@ add_mood_event("hug", /datum/mood_event/bad_touch_bear_hug) // Let people know if they hugged someone really warm or really cold - if(helper.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT) + if(helper.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT || helper.has_status_effect(/datum/status_effect/bloodsucker_sol)) // monkestation edit: bloodsucker sol to_chat(src, span_warning("It feels like [helper] is over heating as [helper.p_they()] hug[helper.p_s()] you.")) else if(helper.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) to_chat(src, span_warning("It feels like [helper] is freezing as [helper.p_they()] hug[helper.p_s()] you.")) - if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT) + if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT || has_status_effect(/datum/status_effect/bloodsucker_sol)) // monkestation edit: bloodsucker sol to_chat(helper, span_warning("It feels like [src] is over heating as you hug [p_them()].")) else if(bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) to_chat(helper, span_warning("It feels like [src] is freezing as you hug [p_them()].")) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 3e884ae3b476..af129ce55802 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -2,7 +2,7 @@ blood_volume = BLOOD_VOLUME_NORMAL gender = MALE pressure_resistance = 15 - hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,GLAND_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD,SENSOR_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,GLAND_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD,SENSOR_HUD,MOOD_HUD) has_limbs = TRUE held_items = list(null, null) num_legs = 0 //Populated on init through list/bodyparts diff --git a/code/modules/mob/living/carbon/carbon_update_icons.dm b/code/modules/mob/living/carbon/carbon_update_icons.dm index fef1272d9765..2485d23eabef 100644 --- a/code/modules/mob/living/carbon/carbon_update_icons.dm +++ b/code/modules/mob/living/carbon/carbon_update_icons.dm @@ -553,27 +553,41 @@ /obj/item/bodypart/head/generate_icon_key() . = ..() - . += "-[facial_hairstyle]" - . += "-[facial_hair_color]" - if(facial_hair_gradient_style) - . += "-[facial_hair_gradient_style]" - if(hair_gradient_color) - . += "-[facial_hair_gradient_color]" + if(lip_style) + . += "-[lip_style]" + . += "-[lip_color]" if(facial_hair_hidden) . += "-FACIAL_HAIR_HIDDEN" + else + . += "-[facial_hairstyle]" + . += "-[override_hair_color || fixed_hair_color || facial_hair_color]" + . += "-[facial_hair_alpha]" + if(facial_hair_gradient_style) + . += "-[facial_hair_gradient_style]" + . += "-[facial_hair_gradient_color]" + if(show_missing_eyes) + . += "-SHOW_MISSING_EYES" if(show_debrained) . += "-SHOW_DEBRAINED" return . - - . += "-[hair_style]" - . += "-[fixed_hair_color || override_hair_color || hair_color]" - if(hair_gradient_style) - . += "-[hair_gradient_style]" - if(hair_gradient_color) - . += "-[hair_gradient_color]" if(hair_hidden) . += "-HAIR_HIDDEN" + else + . += "-[hair_style]" + . += "-[override_hair_color || fixed_hair_color || hair_color]" + . += "-[hair_alpha]" + if(hair_gradient_style) + . += "-[hair_gradient_style]" + . += "-[hair_gradient_color]" + + return . +/obj/item/bodypart/head/generate_husk_key() + . = ..() + if(show_missing_eyes) + . += "-SHOW_MISSING_EYES" + if(show_debrained) + . += "-SHOW_DEBRAINED" return . GLOBAL_LIST_EMPTY(masked_leg_icons_cache) diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index d75ed5450ae1..ba629ae60144 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -26,11 +26,11 @@ /mob/living/carbon/gib(no_brain, no_organs, no_bodyparts, safe_gib = FALSE) add_memory_in_range(src, 7, /datum/memory/witness_gib, protagonist = src) - if(safe_gib) // If you want to keep all the mob's items and not have them deleted - for(var/obj/item/W in src) - dropItemToGround(W) - if(prob(50)) - step(W, pick(GLOB.alldirs)) + // if(safe_gib) // If you want to keep all the mob's items and not have them deleted MONKESTATION EDIT + for(var/obj/item/W in src) + dropItemToGround(W, violent = TRUE) + if(prob(50)) + step(W, pick(GLOB.alldirs)) var/atom/Tsec = drop_location() for(var/mob/M in src) M.forceMove(Tsec) @@ -41,19 +41,20 @@ var/atom/Tsec = drop_location() if(!no_bodyparts) if(no_organs)//so the organs don't get transfered inside the bodyparts we'll drop. - for(var/X in organs) - if(no_brain || !istype(X, /obj/item/organ/internal/brain)) - qdel(X) + for(var/organ in organs) + if(no_brain || !istype(organ, /obj/item/organ/internal/brain)) + qdel(organ) else //we're going to drop all bodyparts except chest, so the only organs that needs spilling are those inside it. for(var/obj/item/organ/organs as anything in organs) if(no_brain && istype(organs, /obj/item/organ/internal/brain)) qdel(organs) //so the brain isn't transfered to the head when the head drops. continue var/org_zone = check_zone(organs.zone) //both groin and chest organs. - if(org_zone == BODY_ZONE_CHEST) - organs.Remove(src) - organs.forceMove(Tsec) - organs.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5) + if(org_zone != BODY_ZONE_CHEST) + continue + organs.Remove(src) + organs.forceMove(Tsec) + organs.fly_away(Tsec, horizontal_multiplier = 2, vertical_multiplier = 1.2) else for(var/obj/item/organ/organs as anything in organs) if(no_brain && istype(organs, /obj/item/organ/internal/brain)) @@ -64,15 +65,18 @@ continue organs.Remove(src) organs.forceMove(Tsec) - organs.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5) + organs.fly_away(Tsec, horizontal_multiplier = 2, vertical_multiplier = 1.2) /// Launches all bodyparts away from the mob. skip_head will keep the head attached. -/mob/living/carbon/spread_bodyparts(skip_head = FALSE) +/mob/living/carbon/spread_bodyparts(skip_head = FALSE, skip_organ = FALSE, violent = FALSE) + var/atom/Tsec = drop_location() for(var/obj/item/bodypart/part as anything in bodyparts) if(skip_head && part.body_zone == BODY_ZONE_HEAD) continue - part.drop_limb() - part.throw_at(get_edge_target_turf(src, pick(GLOB.alldirs)), rand(1,3), 5) + else if(part.body_zone == BODY_ZONE_CHEST) + continue + part.drop_limb(violent = violent) + part.fly_away(Tsec, horizontal_multiplier = 2, vertical_multiplier = 1.2) /mob/living/carbon/set_suicide(suicide_state) //you thought that box trick was pretty clever, didn't you? well now hardmode is on, boyo. . = ..() diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index 61357c64b0fc..a979550ce806 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -54,6 +54,8 @@ GLOBAL_LIST_EMPTY(features_by_species) var/hair_color ///The alpha used by the hair. 255 is completely solid, 0 is invisible. var/hair_alpha = 255 + ///The alpha used by the facial hair. 255 is completely solid, 0 is invisible. + var/facial_hair_alpha = 255 ///Examine text when the person has cellular damage. var/cellular_damage_desc = DEFAULT_CLONE_EXAMINE_TEXT @@ -230,9 +232,6 @@ GLOBAL_LIST_EMPTY(features_by_species) ///List of results you get from knife-butchering. null means you cant butcher it. Associated by resulting type - value of amount var/list/knife_butcher_results - ///List of visual overlays created by handle_body() - var/list/body_vis_overlays = list() - /// Should we preload this species's organs? var/preload = TRUE @@ -686,84 +685,54 @@ GLOBAL_LIST_EMPTY(features_by_species) var/list/standing = list() var/list/standing_face = list() - var/obj/item/bodypart/head/noggin = species_human.get_bodypart(BODY_ZONE_HEAD) - - if(noggin && !(HAS_TRAIT(species_human, TRAIT_HUSK))) - // lipstick - if(species_human.lip_style && (LIPS in species_traits)) - var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/species/human/human_face.dmi', "lips_[species_human.lip_style]", -FACE_LAYER) - lip_overlay.color = species_human.lip_color - if(OFFSET_FACE in species_human.dna.species.offset_features) - lip_overlay.pixel_x += species_human.dna.species.offset_features[OFFSET_FACE][1] - lip_overlay.pixel_y += species_human.dna.species.offset_features[OFFSET_FACE][2] - lip_overlay.pixel_y += height_offset - standing_face += lip_overlay - - // eyes - if(!(NOEYESPRITES in species_traits)) + if(!HAS_TRAIT(species_human, TRAIT_HUSK)) + var/obj/item/bodypart/head/noggin = species_human.get_bodypart(BODY_ZONE_HEAD) + if(noggin?.head_flags & HEAD_EYESPRITES) + // eyes (missing eye sprites get handled by the head itself, but sadly we have to do this stupid shit here, for now) var/obj/item/organ/internal/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES) - var/mutable_appearance/no_eyeslay - var/add_pixel_x = 0 - var/add_pixel_y = 0 - //cut any possible vis overlays - if(body_vis_overlays.len) - SSvis_overlays.remove_vis_overlay(species_human, body_vis_overlays) - - if(OFFSET_FACE in species_human.dna.species.offset_features) - add_pixel_x = species_human.dna.species.offset_features[OFFSET_FACE][1] - add_pixel_y = species_human.dna.species.offset_features[OFFSET_FACE][2] - add_pixel_y += height_offset - - if(!eye_organ) - no_eyeslay = mutable_appearance('icons/mob/species/human/human_face.dmi', "eyes_missing", -FACE_LAYER) - no_eyeslay.pixel_x += add_pixel_x - no_eyeslay.pixel_y += add_pixel_y - standing += no_eyeslay - else + if(eye_organ) eye_organ.refresh(call_update = FALSE) - - if(!no_eyeslay) for(var/mutable_appearance/eye_overlay in eye_organ.generate_body_overlay(species_human)) eye_overlay.pixel_y += height_offset - standing_face += eye_overlay - - // organic body markings - if(HAS_MARKINGS in species_traits) - var/obj/item/bodypart/chest/chest = species_human.get_bodypart(BODY_ZONE_CHEST) - var/obj/item/bodypart/arm/right/right_arm = species_human.get_bodypart(BODY_ZONE_R_ARM) - var/obj/item/bodypart/arm/left/left_arm = species_human.get_bodypart(BODY_ZONE_L_ARM) - var/obj/item/bodypart/leg/right/right_leg = species_human.get_bodypart(BODY_ZONE_R_LEG) - var/obj/item/bodypart/leg/left/left_leg = species_human.get_bodypart(BODY_ZONE_L_LEG) - var/datum/sprite_accessory/markings = GLOB.moth_markings_list[species_human.dna.features["moth_markings"]] - if(markings) - if(!HAS_TRAIT(species_human, TRAIT_HUSK)) - if(noggin && (IS_ORGANIC_LIMB(noggin))) - var/mutable_appearance/markings_head_overlay = mutable_appearance(markings.icon, "[markings.icon_state]_head", -BODY_LAYER) - markings_head_overlay.pixel_y += height_offset - standing += markings_head_overlay - - if(chest && (IS_ORGANIC_LIMB(chest))) - var/mutable_appearance/markings_chest_overlay = mutable_appearance(markings.icon, "[markings.icon_state]_chest", -BODY_LAYER) - markings_chest_overlay.pixel_y += height_offset - standing += markings_chest_overlay - - if(right_arm && (IS_ORGANIC_LIMB(right_arm))) - var/mutable_appearance/markings_r_arm_overlay = mutable_appearance(markings.icon, "[markings.icon_state]_r_arm", -BODY_LAYER) - markings_r_arm_overlay.pixel_y += height_offset - standing += markings_r_arm_overlay - - if(left_arm && (IS_ORGANIC_LIMB(left_arm))) - var/mutable_appearance/markings_l_arm_overlay = mutable_appearance(markings.icon, "[markings.icon_state]_l_arm", -BODY_LAYER) - markings_l_arm_overlay.pixel_y += height_offset - standing += markings_l_arm_overlay - - if(right_leg && (IS_ORGANIC_LIMB(right_leg))) - var/mutable_appearance/markings_r_leg_overlay = mutable_appearance(markings.icon, "[markings.icon_state]_r_leg", -BODY_LAYER) - standing += markings_r_leg_overlay - - if(left_leg && (IS_ORGANIC_LIMB(left_leg))) - var/mutable_appearance/markings_l_leg_overlay = mutable_appearance(markings.icon, "[markings.icon_state]_l_leg", -BODY_LAYER) - standing += markings_l_leg_overlay + standing += eye_overlay + + // organic body markings + if(HAS_MARKINGS in species_traits) + var/obj/item/bodypart/chest/chest = species_human.get_bodypart(BODY_ZONE_CHEST) + var/obj/item/bodypart/arm/right/right_arm = species_human.get_bodypart(BODY_ZONE_R_ARM) + var/obj/item/bodypart/arm/left/left_arm = species_human.get_bodypart(BODY_ZONE_L_ARM) + var/obj/item/bodypart/leg/right/right_leg = species_human.get_bodypart(BODY_ZONE_R_LEG) + var/obj/item/bodypart/leg/left/left_leg = species_human.get_bodypart(BODY_ZONE_L_LEG) + var/datum/sprite_accessory/markings = GLOB.moth_markings_list[species_human.dna.features["moth_markings"]] + if(markings) + if(!HAS_TRAIT(species_human, TRAIT_HUSK)) + if(noggin && (IS_ORGANIC_LIMB(noggin))) + var/mutable_appearance/markings_head_overlay = mutable_appearance(markings.icon, "[markings.icon_state]_head", -BODY_LAYER) + markings_head_overlay.pixel_y += height_offset + standing += markings_head_overlay + + if(chest && (IS_ORGANIC_LIMB(chest))) + var/mutable_appearance/markings_chest_overlay = mutable_appearance(markings.icon, "[markings.icon_state]_chest", -BODY_LAYER) + markings_chest_overlay.pixel_y += height_offset + standing += markings_chest_overlay + + if(right_arm && (IS_ORGANIC_LIMB(right_arm))) + var/mutable_appearance/markings_r_arm_overlay = mutable_appearance(markings.icon, "[markings.icon_state]_r_arm", -BODY_LAYER) + markings_r_arm_overlay.pixel_y += height_offset + standing += markings_r_arm_overlay + + if(left_arm && (IS_ORGANIC_LIMB(left_arm))) + var/mutable_appearance/markings_l_arm_overlay = mutable_appearance(markings.icon, "[markings.icon_state]_l_arm", -BODY_LAYER) + markings_l_arm_overlay.pixel_y += height_offset + standing += markings_l_arm_overlay + + if(right_leg && (IS_ORGANIC_LIMB(right_leg))) + var/mutable_appearance/markings_r_leg_overlay = mutable_appearance(markings.icon, "[markings.icon_state]_r_leg", -BODY_LAYER) + standing += markings_r_leg_overlay + + if(left_leg && (IS_ORGANIC_LIMB(left_leg))) + var/mutable_appearance/markings_l_leg_overlay = mutable_appearance(markings.icon, "[markings.icon_state]_l_leg", -BODY_LAYER) + standing += markings_l_leg_overlay //Underwear, Undershirts & Socks if(!(NO_UNDERWEAR in species_traits)) @@ -900,16 +869,16 @@ GLOBAL_LIST_EMPTY(features_by_species) accessory_overlay.color = fixed_mut_color else accessory_overlay.color = source.dna.features["mcolor_secondary"] - if(HAIR) + if(HAIR_COLOR) if(hair_color == "mutcolor") accessory_overlay.color = source.dna.features["mcolor"] else if(hair_color == "fixedmutcolor") accessory_overlay.color = fixed_mut_color else accessory_overlay.color = source.hair_color - if(FACEHAIR) + if(FACIAL_HAIR_COLOR) accessory_overlay.color = source.facial_hair_color - if(EYECOLOR) + if(EYE_COLOR) accessory_overlay.color = source.eye_color_left if(ANIME) accessory_overlay.color = source.dna.features["animecolor"] @@ -1224,7 +1193,8 @@ GLOBAL_LIST_EMPTY(features_by_species) source.domutcheck() if(time_since_irradiated > RAD_MOB_HAIRLOSS && SPT_PROB(RAD_MOB_HAIRLOSS_PROB, seconds_per_tick)) - if(!(source.hairstyle == "Bald") && (HAIR in species_traits)) + var/obj/item/bodypart/head/head = source.get_bodypart(BODY_ZONE_HEAD) + if(!(source.hairstyle == "Bald") && (head?.head_flags & HEAD_HAIR|HEAD_FACIAL_HAIR)) to_chat(source, span_danger("Your hair starts to fall out in clumps...")) addtimer(CALLBACK(src, PROC_REF(go_bald), source), 5 SECONDS) @@ -1908,7 +1878,8 @@ GLOBAL_LIST_EMPTY(features_by_species) if ( \ (preference.relevant_mutant_bodypart in mutant_bodyparts) \ || (preference.relevant_species_trait in species_traits) \ - || (preference.relevant_external_organ in external_organs) + || (preference.relevant_external_organ in external_organs) \ + || (preference.relevant_head_flag && check_head_flags(preference.relevant_head_flag)) \ ) features += preference.savefile_key @@ -2331,5 +2302,15 @@ GLOBAL_LIST_EMPTY(features_by_species) target.create_bodyparts(bodypart_overrides) target.regenerate_icons() +/** + * Checks if the species has a head with these head flags, by default. + * Admittedly, this is a very weird and seemingly redundant proc, but it + * gets used by some preferences (such as hair style) to determine whether + * or not they are accessible. + **/ +/datum/species/proc/check_head_flags(check_flags = NONE) + var/obj/item/bodypart/head/fake_head = bodypart_overrides[BODY_ZONE_HEAD] + return (initial(fake_head.head_flags) & check_flags) + /datum/species/proc/spec_revival(mob/living/carbon/human/H) return diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 67674712d890..656684c4e15f 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -74,6 +74,6 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift) return TRUE /mob/living/carbon/proc/makeUncloneable() - ADD_TRAIT(src, TRAIT_BADDNA, MADE_UNCLONEABLE) + ADD_TRAIT(src, TRAIT_BADDNA, UNCLONEABLE_TRAIT) blood_volume = 0 return TRUE diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index 895a80e4ac80..fb6762f4863f 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -213,3 +213,7 @@ GLOBAL_LIST_EMPTY(dummy_mob_list) bound_height = 64 var/list/extra_bodyparts = list() + +/mob/living/carbon/human/dummy/extra_tall/Destroy() + . = ..() + extra_bodyparts = null diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index f82259bf5f22..a51504d92cd9 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -173,6 +173,8 @@ I.disease_contact(src, check_zone(user.zone_selected)) SSblackbox.record_feedback("nested tally", "item_used_for_combat", 1, list("[I.force]", "[initial(I.name)]")) SSblackbox.record_feedback("tally", "zone_targeted", 1, target_area) + if(I.pain_damage) + cause_pain(target_area, I.pain_damage, I.damtype) // the attacked_by code varies among species return dna.species.spec_attacked_by(I, user, affecting, src) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 9c5a1a90bbb0..13db05913a0e 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -5,7 +5,7 @@ icon = 'icons/mob/species/human/human.dmi' icon_state = "human_basic" appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE - hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD,ANTAG_HUD,GLAND_HUD,SENTIENT_DISEASE_HUD,FAN_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD,PERMIT_HUD,SENSOR_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD,ANTAG_HUD,GLAND_HUD,SENTIENT_DISEASE_HUD,FAN_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD,PERMIT_HUD,SENSOR_HUD,MOOD_HUD) hud_type = /datum/hud/human pressure_resistance = 25 can_buckle = TRUE diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index 3d6b1de5b43c..ec7f482ae1d9 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -836,12 +836,14 @@ generate/load female uniform sprites matching all previously decided variables var/obj/item/bodypart/HD = get_bodypart("head") - if (!istype(HD)) + if(!istype(HD)) return HD.update_limb(is_creating = update_limb_data) add_overlay(HD.get_limb_icon()) + + /* update_damage_overlays() if(HD && !(HAS_TRAIT(src, TRAIT_HUSK))) @@ -867,6 +869,7 @@ generate/load female uniform sprites matching all previously decided variables add_overlay(missing_eyes) update_worn_head() update_worn_mask() + */ // Hooks into human apply overlay so that we can modify all overlays applied through standing overlays to our height system. // Some of our overlays will be passed through a displacement filter to make our mob look taller or shorter. diff --git a/code/modules/mob/living/carbon/human/physiology.dm b/code/modules/mob/living/carbon/human/physiology.dm index 3d52aab08928..6975ece08ca5 100644 --- a/code/modules/mob/living/carbon/human/physiology.dm +++ b/code/modules/mob/living/carbon/human/physiology.dm @@ -32,7 +32,11 @@ var/siemens_coeff = 1 // resistance to shocks - var/stun_mod = 1 // % stun modifier + /// Multiplier applied to all incapacitating stuns (knockdown, stun, paralyze, immobilize) + var/stun_mod = 1 + /// Multiplied aplpied to just knockdowns, stacks with above multiplicatively + var/knockdown_mod = 1 + var/bleed_mod = 1 // % bleeding modifier var/datum/armor/armor // internal armor datum diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm index 868224c6a266..7987df7b7fef 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm @@ -3,7 +3,6 @@ id = SPECIES_ABDUCTOR sexes = FALSE species_traits = list( - NOEYESPRITES, NO_UNDERWEAR, ) inherent_traits = list( diff --git a/code/modules/mob/living/carbon/human/species_types/android.dm b/code/modules/mob/living/carbon/human/species_types/android.dm index bebb0971acc2..99a3a852fc7a 100644 --- a/code/modules/mob/living/carbon/human/species_types/android.dm +++ b/code/modules/mob/living/carbon/human/species_types/android.dm @@ -6,7 +6,6 @@ NOTRANSSTING, NO_UNDERWEAR, NOHUSK, - HAIR, // monke edit: allow them to have hair (it's the future, why not) ) inherent_traits = list( TRAIT_CAN_USE_FLIGHT_POTION, @@ -26,7 +25,12 @@ TRAIT_TOXIMMUNE, TRAIT_NOBLOOD, TRAIT_VIRUSIMMUNE, - TRAIT_REVIVES_BY_HEALING, // monkestation edit: making androids closer to IPCs + // monkestation edit: making androids closer to IPCs + TRAIT_REVIVES_BY_HEALING, + TRAIT_NO_DNA_COPY, + TRAIT_XENO_IMMUNE, + TRAIT_STABLELIVER, + // monkestation end ) inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index bea88b0b2aca..5e1d4530228f 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -1,12 +1,7 @@ /datum/species/dullahan name = "Dullahan" id = SPECIES_DULLAHAN - species_traits = list( - EYECOLOR, - HAIR, - FACEHAIR, - LIPS, - ) + species_traits = list() inherent_traits = list( TRAIT_NOBREATH, TRAIT_NOHUNGER, diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 8fe88ce6e742..caeecface3f7 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -1,12 +1,7 @@ /datum/species/human name = "\improper Human" id = SPECIES_HUMAN - species_traits = list( - EYECOLOR, - HAIR, - FACEHAIR, - LIPS, - ) + species_traits = list() inherent_traits = list( TRAIT_CAN_USE_FLIGHT_POTION, ) diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 7093b8f8b7cb..3fb5d55cf93a 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -12,11 +12,7 @@ id = SPECIES_JELLYPERSON species_traits = list( MUTCOLORS, - EYECOLOR, - HAIR, // monke edit: allow them to have hair (it's the future, why not) ) - hair_color = "mutcolor" - hair_alpha = 150 inherent_traits = list( TRAIT_CAN_USE_FLIGHT_POTION, TRAIT_TOXINLOVER, @@ -41,6 +37,9 @@ species_language_holder = /datum/language_holder/jelly ass_image = 'icons/ass/assslime.png' wing_types = list(/obj/item/organ/external/wings/functional/slime) + hair_color = "mutcolor" + hair_alpha = 150 + facial_hair_alpha = 150 bodypart_overrides = list( BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/jelly, @@ -182,9 +181,10 @@ name = "\improper Slimeperson" plural_form = "Slimepeople" id = SPECIES_SLIMEPERSON - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) + species_traits = list(MUTCOLORS,) hair_color = "mutcolor" hair_alpha = 150 + facial_hair_alpha = 150 changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT mutanteyes = /obj/item/organ/internal/eyes var/datum/action/innate/split_body/slime_split @@ -682,10 +682,11 @@ project_action = new(src) project_action.Grant(grant_to) - grant_to.AddComponent(/datum/component/mind_linker, \ + grant_to.AddComponent( \ + /datum/component/mind_linker/active_linking, \ network_name = "Slime Link", \ - linker_action_path = /datum/action/innate/link_minds, \ signals_which_destroy_us = list(COMSIG_SPECIES_LOSS), \ + linker_action_path = /datum/action/innate/link_minds, \ ) //Species datums don't normally implement destroy, but JELLIES SUCK ASS OUT OF A STEEL STRAW 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 5fd87552ad8b..117ff8257afd 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -7,9 +7,6 @@ species_traits = list( MUTCOLORS, MUTCOLORS_SECONDARY, - EYECOLOR, - LIPS, - HAIR // monke edit: lizards can have hair (it's the future, why not) ) inherent_traits = list( TRAIT_CAN_USE_FLIGHT_POTION, @@ -125,17 +122,17 @@ Lizard subspecies: ASHWALKERS id = SPECIES_LIZARD_ASH mutantlungs = /obj/item/organ/internal/lungs/lavaland mutantbrain = /obj/item/organ/internal/brain/primitive + wing_types = list(/obj/item/organ/external/wings/functional/dragon) species_traits = list( MUTCOLORS, MUTCOLORS_SECONDARY, - EYECOLOR, - LIPS, NO_UNDERWEAR, //MONKESTATION ADDITION: no more flesh clothes lol ) inherent_traits = list( //TRAIT_LITERATE, TRAIT_VIRUSIMMUNE, - TRAIT_HARD_SOLES //MONKESTATION ADDITION + TRAIT_HARD_SOLES, //MONKESTATION ADDITION + TRAIT_CAN_USE_FLIGHT_POTION, ) species_language_holder = /datum/language_holder/lizard/ash /*digitigrade_customization = DIGITIGRADE_FORCED*/ //MONKESTATION REMOVAL: not needed diff --git a/code/modules/mob/living/carbon/human/species_types/monkeys.dm b/code/modules/mob/living/carbon/human/species_types/monkeys.dm index aca109b60874..4810b185a43f 100644 --- a/code/modules/mob/living/carbon/human/species_types/monkeys.dm +++ b/code/modules/mob/living/carbon/human/species_types/monkeys.dm @@ -14,15 +14,12 @@ knife_butcher_results = list(/obj/item/food/meat/slab/monkey = 5, /obj/item/stack/sheet/animalhide/monkey = 1) species_traits = list( NO_UNDERWEAR, - LIPS, - NOEYESPRITES, NOBLOODOVERLAY, NOTRANSSTING, NOAUGMENTS, ) inherent_traits = list( TRAIT_GUN_NATURAL, - //TRAIT_LITERATE, TRAIT_VENTCRAWLER_NUDE, TRAIT_WEAK_SOUL, ) diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index 9e76c1908e6d..90cd1774596c 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -3,9 +3,7 @@ plural_form = "Mothmen" id = SPECIES_MOTH species_traits = list( - LIPS, HAS_MARKINGS, - HAIR // monke edit: moths can have hair (it's the future, why not) ) inherent_traits = list( TRAIT_CAN_USE_FLIGHT_POTION, @@ -67,7 +65,6 @@ if(istype(attacking_item, /obj/item/melee/flyswatter)) damage_mods += 10 // Yes, a 10x damage modifier - /datum/species/moth/randomize_features(mob/living/carbon/human/human_mob) human_mob.dna.features["moth_markings"] = pick(GLOB.moth_markings_list) randomize_external_organs(human_mob) diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index 4a1981f4478c..73c3657abae0 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -10,7 +10,6 @@ species_traits = list( MUTCOLORS, - NOEYESPRITES, NO_UNDERWEAR, ) inherent_traits = list( diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 2690c18927e2..c451d48110b0 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -5,7 +5,6 @@ id = SPECIES_PODPERSON species_traits = list( MUTCOLORS, - EYECOLOR, ) inherent_traits = list( TRAIT_PLANT_SAFE, diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 9812b2fad673..e7f1d9658e2f 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -5,9 +5,7 @@ id = SPECIES_SHADOW sexes = 0 meat = /obj/item/food/meat/slab/human/mutant/shadow - species_traits = list( - NOEYESPRITES, - ) + species_traits = list() inherent_traits = list( TRAIT_NOBREATH, TRAIT_RADIMMUNE, diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index 400438fc8790..1c294c2579ff 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -6,11 +6,9 @@ meat = /obj/item/food/meat/slab/human/mutant/skeleton species_traits = list( NOTRANSSTING, - NOEYESPRITES, NO_DNA_COPY, NO_UNDERWEAR, NOHUSK, - HAIR, // monke edit: allow them to have hair (it's the future, why not) ) inherent_traits = list( TRAIT_CAN_USE_FLIGHT_POTION, diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 3cebd9f52233..72f06a970033 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -8,10 +8,6 @@ name = "Vampire" id = SPECIES_VAMPIRE species_traits = list( - EYECOLOR, - HAIR, - FACEHAIR, - LIPS, DRINKSBLOOD, BLOOD_CLANS, ) 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 c420d355e009..b7f9b81de523 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -10,7 +10,6 @@ species_traits = list( NOZOMBIE, NOTRANSSTING, - HAIR, // monke edit: allow them to have hair (it's the future, why not) ) inherent_traits = list( // SHARED WITH ALL ZOMBIES diff --git a/code/modules/mob/living/carbon/human/status_procs.dm b/code/modules/mob/living/carbon/human/status_procs.dm index 5eb42e042246..acbb3c528c6f 100644 --- a/code/modules/mob/living/carbon/human/status_procs.dm +++ b/code/modules/mob/living/carbon/human/status_procs.dm @@ -1,10 +1,10 @@ /mob/living/carbon/human/Stun(amount, ignore_canstun = FALSE) - amount = dna.species.spec_stun(src,amount) + amount = dna.species.spec_stun(src, amount) return ..() /mob/living/carbon/human/Knockdown(amount, ignore_canstun = FALSE) - amount = dna.species.spec_stun(src,amount) + amount = dna.species.spec_stun(src, amount) * physiology.knockdown_mod return ..() /mob/living/carbon/human/Paralyze(amount, ignore_canstun = FALSE) @@ -16,7 +16,7 @@ return ..() /mob/living/carbon/human/Unconscious(amount, ignore_canstun = FALSE) - amount = dna.species.spec_stun(src,amount) + amount = dna.species.spec_stun(src, amount) if(HAS_TRAIT(src, TRAIT_HEAVY_SLEEPER)) amount *= (rand(125, 130) * 0.01) return ..() diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 833e435b58a3..9793371343fa 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -34,13 +34,18 @@ bare_wound_bonus = 0, sharpness = NONE, attack_direction = null, - attacking_item, + obj/item/attacking_item, ) SHOULD_CALL_PARENT(TRUE) var/damage_amount = damage if(!forced) damage_amount *= ((100 - blocked) / 100) damage_amount *= get_incoming_damage_modifier(damage_amount, damagetype, def_zone, sharpness, attack_direction, attacking_item) + if(attacking_item) + if(!SEND_SIGNAL(attacking_item, COMSIG_ITEM_DAMAGE_MULTIPLIER, src, def_zone)) + attacking_item.last_multi = 1 + damage_amount *= attacking_item.last_multi + if(damage_amount <= 0) return 0 diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 957839645d92..a82cacfaf960 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -18,9 +18,17 @@ spill_organs(no_brain, no_organs, no_bodyparts) if(!no_bodyparts) - spread_bodyparts(no_brain, no_organs) + spread_bodyparts(no_brain, no_organs, TRUE) spawn_gibs(no_bodyparts) + ///lol I want it to be bloody as fuck + blood_particles(5, min_deviation = 70, max_deviation = 120, min_pixel_z = 4, max_pixel_z = 11) + blood_particles(6, min_deviation = -70, max_deviation = -30, min_pixel_z = 5, max_pixel_z = 7) + blood_particles(4, min_deviation = -190, max_deviation = -80, min_pixel_z = 0, max_pixel_z = 9) + blood_particles(7, min_deviation = 130, max_deviation = 160, min_pixel_z = 12, max_pixel_z = 16) + blood_particles(4, min_deviation = -200, max_deviation = -220, min_pixel_z = 4, max_pixel_z = 6) + blood_particles(2, min_deviation = 161, max_deviation = 200, min_pixel_z = 2, max_pixel_z = 12) + ///lol SEND_SIGNAL(src, COMSIG_LIVING_GIBBED, no_brain, no_organs, no_bodyparts) qdel(src) @@ -33,7 +41,7 @@ /mob/living/proc/spill_organs() return -/mob/living/proc/spread_bodyparts() +/mob/living/proc/spread_bodyparts(skip_head, skip_organs, violent) return /** diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 4758e2355ab7..1fec8e44db44 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -2599,18 +2599,9 @@ GLOBAL_LIST_EMPTY(fire_appearances) if(isnull(guardian_client)) return else if(guardian_client == "Poll Ghosts") - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob( - "Do you want to play as an admin created Guardian Spirit of [real_name]?", - check_jobban = ROLE_PAI, - poll_time = 10 SECONDS, - target_mob = src, - ignore_category = POLL_IGNORE_HOLOPARASITE, - pic_source = /mob/living/basic/guardian, - role_name_text = "guardian spirit" - ) - if(LAZYLEN(candidates)) - var/mob/dead/observer/candidate = pick(candidates) - guardian_client = candidate.client + var/mob/chosen_one = SSpolling.poll_ghost_candidates("Do you want to play as an admin created [span_notice("Guardian Spirit")] of [span_danger(real_name)]?", check_jobban = ROLE_PAI, poll_time = 10 SECONDS, ignore_category = POLL_IGNORE_HOLOPARASITE, alert_pic = mutable_appearance('icons/mob/nonhuman-player/guardian.dmi', "magicexample"), jump_target = src, role_name_text = "guardian spirit", amount_to_pick = 1) + if(chosen_one) + guardian_client = chosen_one.client else tgui_alert(admin, "No ghost candidates.", "Guardian Controller") return @@ -2623,7 +2614,7 @@ GLOBAL_LIST_EMPTY(fire_appearances) if(picked_theme == "Random") picked_theme = null //holopara code handles not having a theme by giving a random one var/picked_name = tgui_input_text(admin, "Name the guardian, leave empty to let player name it.", "Guardian Controller") - var/picked_color = tgui_color_picker(admin, "Set the guardian's color, cancel to let player set it.", "Guardian Controller", "#ffffff") + var/picked_color = input(admin, "Set the guardian's color, cancel to let player set it.", "Guardian Controller", "#ffffff") as color|null if(tgui_alert(admin, "Confirm creation.", "Guardian Controller", list("Yes", "No")) != "Yes") return var/mob/living/basic/guardian/summoned_guardian = new picked_type(src, picked_theme) diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index 8ea7180266ea..765e124d4e1f 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -231,18 +231,20 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( if(radio_return & NOPASS) return TRUE - if(HAS_TRAIT(src, TRAIT_SOFTSPOKEN) && !HAS_TRAIT(src, TRAIT_SIGN_LANG)) // MONKESTATION EDIT: Moved TRAIT_SOFTSPOKEN check to be after radios. - message_mods[WHISPER_MODE] = MODE_WHISPER - - //No screams in space, unless you're next to someone. - var/turf/T = get_turf(src) - var/datum/gas_mixture/environment = T.return_air() - var/pressure = (environment)? environment.return_pressure() : 0 - if(pressure < SOUND_MINIMUM_PRESSURE && !HAS_TRAIT(src, TRAIT_SIGN_LANG)) - message_range = 1 + if(!HAS_TRAIT(src, TRAIT_SIGN_LANG)) + if(HAS_TRAIT(src, TRAIT_SOFTSPOKEN)) // MONKESTATION EDIT: Moved TRAIT_SOFTSPOKEN check to be after radios. + message_range = 1 + spans |= SPAN_ITALICS + message_mods[WHISPER_MODE] = MODE_WHISPER - if(pressure < ONE_ATMOSPHERE*0.4) //Thin air, let's italicise the message - spans |= SPAN_ITALICS + //No screams in space, unless you're next to someone. + var/turf/our_turf = get_turf(src) + var/pressure = our_turf.return_air()?.return_pressure() || 0 + if(pressure < SOUND_MINIMUM_PRESSURE) + message_range = 1 + + if(pressure < (ONE_ATMOSPHERE * 0.4)) //Thin air, let's italicise the message + spans |= SPAN_ITALICS send_speech(message, message_range, src, bubble_type, spans, language, message_mods)//roughly 58% of living/say()'s total cost diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index c3842847a11a..44b962a3d5e4 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -330,7 +330,7 @@ to_chat(usr, span_alert("[can_evac_or_fail_reason]")) return - var/reason = tgui_input_text(src, "What is the nature of your emergency? ([CALL_SHUTTLE_REASON_LENGTH] characters required.)", "Confirm Shuttle Call") + var/reason = tgui_input_text(src, "What is the nature of your emergency? ([CALL_SHUTTLE_REASON_LENGTH] characters required.)", "Confirm Shuttle Call", encode = FALSE) // monkestation edit: fix double-encoded ai shuttle call reasons if(incapacitated()) return @@ -779,6 +779,7 @@ if (!camera_light_on) to_chat(src, "Camera lights deactivated.") + list_clear_nulls(lit_cameras) for (var/obj/machinery/camera/C in lit_cameras) C.set_light(0) lit_cameras = list() @@ -797,8 +798,12 @@ var/list/obj/machinery/camera/visible = list() for (var/datum/camerachunk/chunk as anything in eyeobj.visibleCameraChunks) for (var/z_key in chunk.cameras) - for(var/obj/machinery/camera/camera as anything in chunk.cameras[z_key]) - if (!camera.can_use() || get_dist(camera, eyeobj) > 7 || !camera.internal_light) + var/list/z_cameras = chunk.cameras[z_key] + list_clear_nulls(z_cameras) + for(var/obj/machinery/camera/camera as anything in z_cameras) + if(QDELETED(camera)) + continue + if(!camera.can_use() || get_dist(camera, eyeobj) > 7 || !camera.internal_light) continue visible |= camera diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm index 9dd1f2ed57ae..4b6363f4c847 100644 --- a/code/modules/mob/living/silicon/robot/robot_model.dm +++ b/code/modules/mob/living/silicon/robot/robot_model.dm @@ -664,7 +664,7 @@ name = "Medical" basic_modules = list( /obj/item/assembly/flash/cyborg, - /obj/item/healthanalyzer, + /obj/item/healthanalyzer/cyborg, //MONKESTATION EDIT /obj/item/reagent_containers/borghypo/medical, /obj/item/borg/apparatus/beaker, /obj/item/reagent_containers/dropper, @@ -760,7 +760,7 @@ /obj/item/robot_model/peacekeeper/do_transform_animation() ..() - to_chat(loc, "Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \ + to_chat(loc, "You are an Enforcer and Upholder of your active lawset. \ You are not a security member and you are expected to follow orders and prevent harm above all else. Space law means nothing to you.") /obj/item/robot_model/security diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 26f3ea537144..9101a2ec6049 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -661,8 +661,8 @@ Pass a positive integer as an argument to override a bot's default speed. if(mode != BOT_SUMMON && mode != BOT_RESPONDING) access_card.set_access(prev_access) -/mob/living/simple_animal/bot/proc/call_bot(caller, turf/waypoint, message = TRUE) - if(isAI(caller) && calling_ai && calling_ai != src) //Prevents an override if another AI is controlling this bot. +/mob/living/simple_animal/bot/proc/call_bot(user, turf/waypoint, message = TRUE) + if(isAI(user) && calling_ai && calling_ai != src) //Prevents an override if another AI is controlling this bot. return FALSE bot_reset() //Reset a bot before setting it to call mode. @@ -671,7 +671,7 @@ Pass a positive integer as an argument to override a bot's default speed. //Easier then building the list ourselves. I'm sorry. var/static/obj/item/card/id/all_access = new /obj/item/card/id/advanced/gold/captains_spare() set_path(get_path_to(src, waypoint, max_distance=200, access = all_access.GetAccess())) - calling_ai = caller //Link the AI to the bot! + calling_ai = user //Link the AI to the bot! ai_waypoint = waypoint if(path?.len) //Ensures that a valid path is calculated! @@ -681,7 +681,7 @@ Pass a positive integer as an argument to override a bot's default speed. access_card.set_access(REGION_ACCESS_ALL_STATION) //Give the bot all-access while under the AI's command. if(client) reset_access_timer_id = addtimer(CALLBACK (src, PROC_REF(bot_reset)), 60 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time - to_chat(src, span_notice("[span_big("Priority waypoint set by [icon2html(calling_ai, src)] [caller]. Proceed to [end_area].")]
    [path.len-1] meters to destination. You have been granted additional door access for 60 seconds.")) + to_chat(src, span_notice("[span_big("Priority waypoint set by [icon2html(calling_ai, src)] [user]. Proceed to [end_area].")]
    [path.len-1] meters to destination. You have been granted additional door access for 60 seconds.")) if(message) to_chat(calling_ai, span_notice("[icon2html(src, calling_ai)] [name] called to [end_area]. [path.len-1] meters to destination.")) pathset = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index bdf86d4ad1f0..34851c30a65a 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -380,16 +380,13 @@ /datum/crystal_warp_theme/proc/transform_area(area/target_area) if (target_area.outdoors) return FALSE - for(var/atom/thing in target_area) - if(isturf(thing)) - replace_turf(thing) - continue - if(chair && istype(thing, /obj/structure/chair)) - replace_object(thing, chair) - continue - if(table && istype(thing, /obj/structure/table)) - replace_object(thing, table) - continue + for(var/turf/area_turf as anything in target_area.get_turfs_from_all_zlevels()) + replace_turf(area_turf) + for(var/turf_obj in area_turf) + if(chair && istype(turf_obj, /obj/structure/chair)) + replace_object(turf_obj, chair) + else if(table && istype(turf_obj, /obj/structure/table)) + replace_object(turf_obj, table) return TRUE /// Replaces a turf with a different themed turf diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index c1e3ef6ef487..38d1e2b09d6b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -190,18 +190,10 @@ While using this makes the system rely on OnFire, it still gives options for tim addtimer(CALLBACK(src, PROC_REF(spawn_elite)), 30) return visible_message(span_boldwarning("Something within [src] stirs...")) - var/list/candidates = SSpolling.poll_ghost_candidates_for_mob( - "Do you want to play as a lavaland elite?", - role = ROLE_SENTIENCE, - poll_time = 5 SECONDS, - target_mob = src, - ignore_category = POLL_IGNORE_LAVALAND_ELITE, - pic_source = src, - role_name_text = "lavaland elite" - ) - if(length(candidates)) + var/mob/chosen_one = SSpolling.poll_ghosts_for_target(check_jobban = ROLE_SENTIENCE, role = ROLE_SENTIENCE, poll_time = 5 SECONDS, checked_target = src, ignore_category = POLL_IGNORE_LAVALAND_ELITE, alert_pic = src, role_name_text = "lavaland elite") + if(chosen_one) audible_message(span_boldwarning("The stirring sounds increase in volume!")) - elitemind = pick(candidates) + elitemind = chosen_one elitemind.playsound_local(get_turf(elitemind), 'sound/effects/magic.ogg', 40, 0) to_chat(elitemind, "You have been chosen to play as a Lavaland Elite.\nIn a few seconds, you will be summoned on Lavaland as a monster to fight your activator, in a fight to the death.\n\ Your attacks can be switched using the buttons on the top left of the HUD, and used by clicking on targets or tiles similar to a gun.\n\ diff --git a/code/modules/mob/living/simple_animal/hostile/ooze.dm b/code/modules/mob/living/simple_animal/hostile/ooze.dm index 190db5f19ac8..99a94a1197a8 100644 --- a/code/modules/mob/living/simple_animal/hostile/ooze.dm +++ b/code/modules/mob/living/simple_animal/hostile/ooze.dm @@ -335,7 +335,7 @@ return TRUE -/datum/action/cooldown/globules/InterceptClickOn(mob/living/caller, params, atom/target) +/datum/action/cooldown/globules/InterceptClickOn(mob/living/user, params, atom/target) . = ..() if(!.) return FALSE @@ -344,19 +344,19 @@ // Well, we need to use the params of the click intercept // for passing into preparePixelProjectile, so we'll handle it here instead. // We just need to make sure Pre-activate and Activate return TRUE so we make it this far - caller.visible_message( - span_nicegreen("[caller] launches a mending globule!"), + user.visible_message( + span_nicegreen("[user] launches a mending globule!"), span_notice("You launch a mending globule."), ) - var/mob/living/simple_animal/hostile/ooze/oozy = caller + var/mob/living/simple_animal/hostile/ooze/oozy = user if(istype(oozy)) oozy.adjust_ooze_nutrition(-5) var/modifiers = params2list(params) - var/obj/projectile/globule/globule = new(caller.loc) - globule.preparePixelProjectile(target, caller, modifiers) - globule.def_zone = caller.zone_selected + var/obj/projectile/globule/globule = new(user.loc) + globule.preparePixelProjectile(target, user, modifiers) + globule.def_zone = user.zone_selected globule.fire() StartCooldown() diff --git a/code/modules/mob/living/simple_animal/hostile/vatbeast.dm b/code/modules/mob/living/simple_animal/hostile/vatbeast.dm index 7c6edeb88da4..48918ec2c483 100644 --- a/code/modules/mob/living/simple_animal/hostile/vatbeast.dm +++ b/code/modules/mob/living/simple_animal/hostile/vatbeast.dm @@ -81,13 +81,13 @@ if(refund_cooldown) to_chat(on_who, span_notice("You stop preparing your [on_who == owner ? "":"steed's "]pimp-tentacle.")) -/datum/action/cooldown/tentacle_slap/InterceptClickOn(mob/living/caller, params, atom/target) +/datum/action/cooldown/tentacle_slap/InterceptClickOn(mob/living/user, params, atom/target) // Check if we can slap if(!isliving(target) || target == owner) return FALSE if(!owner.Adjacent(target)) - owner.balloon_alert(caller, "too far!") + owner.balloon_alert(user, "too far!") return FALSE // Do the slap @@ -97,8 +97,8 @@ // Give feedback from the slap. // Additional feedback for if a rider did it - if(caller != owner) - to_chat(caller, span_notice("You command [owner] to slap [target] with its tentacles.")) + if(user != owner) + to_chat(user, span_notice("You command [owner] to slap [target] with its tentacles.")) return TRUE diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index e40ad4b247a8..82fb0783c7fd 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -362,14 +362,13 @@ var/datum/antagonist/A = M.mind.has_antag_datum(/datum/antagonist/) if(A) poll_message = "[poll_message] Status: [A.name]." - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob(poll_message, check_jobban = ROLE_PAI, poll_time = 10 SECONDS, target_mob = M, pic_source = M, role_name_text = "ghost control") + var/mob/chosen_one = SSpolling.poll_ghosts_for_target(poll_message, check_jobban = ROLE_PAI, poll_time = 10 SECONDS, checked_target = M, alert_pic = M, role_name_text = "ghost control", chat_text_border_icon = M) - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) + if(chosen_one) to_chat(M, "Your mob has been taken over by a ghost!") - message_admins("[key_name_admin(C)] has taken control of ([ADMIN_LOOKUPFLW(M)])") + message_admins("[key_name_admin(chosen_one)] has taken control of ([ADMIN_LOOKUPFLW(M)])") M.ghostize(FALSE) - M.key = C.key + M.key = chosen_one.key M.client?.init_verbs() return TRUE else diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index a94bc9b5803b..fe8b58c603a6 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -183,11 +183,10 @@ to_chat(src, "You are job banned from cyborg! Appeal your job ban if you want to avoid this in the future!") ghostize(FALSE) - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob("Do you want to play as [src]?", check_jobban = JOB_CYBORG, poll_time = 5 SECONDS, target_mob = src, pic_source = src, role_name_text = "cyborg") - if(LAZYLEN(candidates)) - var/mob/dead/observer/chosen_candidate = pick(candidates) - message_admins("[key_name_admin(chosen_candidate)] has taken control of ([key_name_admin(src)]) to replace a jobbanned player.") - key = chosen_candidate.key + var/mob/chosen_one = SSpolling.poll_ghosts_for_target("Do you want to play as [span_notice(name)]?", check_jobban = JOB_CYBORG, poll_time = 5 SECONDS, checked_target = src, alert_pic = src, role_name_text = "cyborg", chat_text_border_icon = src) + if(chosen_one) + message_admins("[key_name_admin(chosen_one)] has taken control of ([key_name_admin(src)]) to replace a jobbanned player.") + key = chosen_one.key //human -> alien /mob/living/carbon/human/proc/Alienize() diff --git a/code/modules/mob_spawn/corpses/mob_corpses.dm b/code/modules/mob_spawn/corpses/mob_corpses.dm index 0ad9d0bcd8ce..56ff8591d9d2 100644 --- a/code/modules/mob_spawn/corpses/mob_corpses.dm +++ b/code/modules/mob_spawn/corpses/mob_corpses.dm @@ -48,6 +48,18 @@ id = null id_trim = null +//monkestation edit begin +/obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear/listeningpost + outfit = /datum/outfit/syndicatecommandocorpse/lessenedgear/listeningpost + +/datum/outfit/syndicatecommandocorpse/lessenedgear/listeningpost + name = "Forgotten Comms Agent Corpse" + back = /obj/item/storage/backpack + uniform = /obj/item/clothing/under/syndicate/sniper //corpse drip + neck = /obj/item/clothing/neck/large_scarf/syndie + head = /obj/item/clothing/head/soft/black +//monke business ends + /obj/effect/mob_spawn/corpse/human/syndicatestormtrooper name = "Syndicate Stormtrooper" hairstyle = "Bald" diff --git a/code/modules/mob_spawn/ghost_roles/space_roles.dm b/code/modules/mob_spawn/ghost_roles/space_roles.dm index cc97da88536e..f64984017f5e 100644 --- a/code/modules/mob_spawn/ghost_roles/space_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/space_roles.dm @@ -87,19 +87,6 @@ shoes = /obj/item/clothing/shoes/laceup l_pocket = /obj/item/stack/medical/bruise_pack -///asteroid comms agent - -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/comms/space - you_are_text = "You are a syndicate agent, assigned to a small listening post station situated near your hated enemy's top secret research facility: Space Station 13." - flavour_text = "Monitor enemy activity as best you can, and try to keep a low profile. Monitor enemy activity as best you can, and try to keep a low profile. Use the communication equipment to provide support to any field agents, and sow disinformation to throw Nanotrasen off your trail. Do not let the base fall into enemy hands!" - important_text = "DO NOT abandon the base." - -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/comms/space/Initialize(mapload) - . = ..() - if(prob(85)) //only has a 15% chance of existing, otherwise it'll just be a NPC syndie. - new /mob/living/basic/trooper/syndicate/ranged(get_turf(src)) - return INITIALIZE_HINT_QDEL - ///battlecruiser stuff /obj/effect/mob_spawn/ghost_role/human/syndicate/battlecruiser diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm index 5a11f82fcfcd..59a1ad67c206 100644 --- a/code/modules/mod/mod_types.dm +++ b/code/modules/mod/mod_types.dm @@ -508,6 +508,7 @@ /obj/item/mod/module/magboot/advanced, /obj/item/mod/module/jetpack/advanced, /obj/item/mod/module/anomaly_locked/kinesis/plus, + /obj/item/mod/module/rad_protection, // monkestation edit ) default_pins = list( /obj/item/mod/module/stealth/ninja, diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm index 2c69dac697ca..48094fcf406b 100644 --- a/code/modules/mod/modules/modules_antag.dm +++ b/code/modules/mod/modules/modules_antag.dm @@ -148,9 +148,9 @@ icon_state = "battlemage_shield" idle_power_cost = DEFAULT_CHARGE_DRAIN * 0 //magic use_power_cost = DEFAULT_CHARGE_DRAIN * 0 //magic too - max_charges = 15 - recharge_start_delay = 0 SECONDS - charge_recovery = 12 //monkestation edit: from 8 to 12 + max_charges = 25 //monkestation edit: from 15 to 25 + recharge_start_delay = 1 MINUTES //monkestation edit: from 0 SECONDS to 1 MINUTES + charge_recovery = 25 //monkestation edit: from 8 to 25 shield_icon_file = 'icons/effects/magic.dmi' shield_icon = "mageshield" recharge_path = /obj/item/wizard_armour_charge diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 1e3d2a4898a6..61985dd13f42 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -497,11 +497,11 @@ * The program calling this proc. * The message that the program wishes to display. */ -/obj/item/modular_computer/proc/alert_call(datum/computer_file/program/caller, alerttext, sound = 'sound/machines/twobeep_high.ogg') - if(!caller || !caller.alert_able || caller.alert_silenced || !alerttext) //Yeah, we're checking alert_able. No, you don't get to make alerts that the user can't silence. +/obj/item/modular_computer/proc/alert_call(datum/computer_file/program/origin, alerttext, sound = 'sound/machines/twobeep_high.ogg') + if(!origin || !origin.alert_able || origin.alert_silenced || !alerttext) //Yeah, we're checking alert_able. No, you don't get to make alerts that the user can't silence. return FALSE playsound(src, sound, 50, TRUE) - loc.visible_message(span_notice("[icon2html(src)] [span_notice("The [src] displays a [caller.filedesc] notification: [alerttext]")]")) + loc.visible_message(span_notice("[icon2html(src)] [span_notice("The [src] displays a [origin.filedesc] notification: [alerttext]")]")) /obj/item/modular_computer/proc/ring(ringtone) // bring bring if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED)) diff --git a/code/modules/modular_computers/computers/item/pda.dm b/code/modules/modular_computers/computers/item/pda.dm index 44ecdc5eeeb5..711ec369f9ce 100644 --- a/code/modules/modular_computers/computers/item/pda.dm +++ b/code/modules/modular_computers/computers/item/pda.dm @@ -13,7 +13,7 @@ steel_sheet_cost = 2 custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass=SMALL_MATERIAL_AMOUNT, /datum/material/plastic=SMALL_MATERIAL_AMOUNT) - interaction_flags_atom = INTERACT_ATOM_ALLOW_USER_LOCATION + interaction_flags_atom = INTERACT_ATOM_ALLOW_USER_LOCATION | INTERACT_ATOM_IGNORE_MOBILITY icon_state_menu = "menu" max_capacity = 64 diff --git a/code/modules/modular_computers/computers/item/role_tablet_presets.dm b/code/modules/modular_computers/computers/item/role_tablet_presets.dm index 01b6778d2009..98fb9f07a9c9 100644 --- a/code/modules/modular_computers/computers/item/role_tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/role_tablet_presets.dm @@ -379,10 +379,12 @@ /datum/computer_file/program/newscaster, ) +/* monkestation removal: don't force ringer off by default /obj/item/modular_computer/pda/curator/Initialize(mapload) . = ..() for(var/datum/computer_file/program/messenger/msg in stored_files) msg.alert_silenced = TRUE +monkestation end */ /** * No Department diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm index 1f974f862fcc..b8c41feb3c86 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/card.dm @@ -215,26 +215,32 @@ if("PRG_access") if(!computer || !authenticated_card || !inserted_auth_card) return TRUE - playsound(computer, SFX_TERMINAL_TYPE, 50, FALSE) - var/access_type = params["access_target"] - var/try_wildcard = params["access_wildcard"] - if(!(access_type in valid_access)) - stack_trace("[key_name(usr)] ([usr]) attempted to add invalid access \[[access_type]\] to [inserted_auth_card]") + // monkestation start: allow multiple access edits at once + var/list/id_actions = params["actions"] + if(!islist(id_actions) || !length(id_actions)) return TRUE + playsound(computer, SFX_TERMINAL_TYPE, 50, FALSE) + for(var/list/id_action in id_actions) + var/access_type = id_action["access_target"] + var/try_wildcard = id_action["access_wildcard"] + if(!(access_type in valid_access)) + stack_trace("[key_name(usr)] ([usr]) attempted to add invalid access \[[access_type]\] to [inserted_auth_card]") + return TRUE - if(access_type in inserted_auth_card.access) - inserted_auth_card.remove_access(list(access_type)) - LOG_ID_ACCESS_CHANGE(user, inserted_auth_card, "removed [SSid_access.get_access_desc(access_type)]") - return TRUE + if(access_type in inserted_auth_card.access) + inserted_auth_card.remove_access(list(access_type)) + LOG_ID_ACCESS_CHANGE(user, inserted_auth_card, "removed [SSid_access.get_access_desc(access_type)]") + continue - if(!inserted_auth_card.add_access(list(access_type), try_wildcard)) - to_chat(usr, span_notice("ID error: ID card rejected your attempted access modification.")) - LOG_ID_ACCESS_CHANGE(user, inserted_auth_card, "failed to add [SSid_access.get_access_desc(access_type)][try_wildcard ? " with wildcard [try_wildcard]" : ""]") - return TRUE + if(!inserted_auth_card.add_access(list(access_type), try_wildcard)) + to_chat(usr, span_notice("ID error: ID card rejected your attempted access modification.")) + LOG_ID_ACCESS_CHANGE(user, inserted_auth_card, "failed to add [SSid_access.get_access_desc(access_type)][try_wildcard ? " with wildcard [try_wildcard]" : ""]") + return TRUE - if(access_type in ACCESS_ALERT_ADMINS) - message_admins("[ADMIN_LOOKUPFLW(user)] just added [SSid_access.get_access_desc(access_type)] to an ID card [ADMIN_VV(inserted_auth_card)] [(inserted_auth_card.registered_name) ? "belonging to [inserted_auth_card.registered_name]." : "with no registered name."]") - LOG_ID_ACCESS_CHANGE(user, inserted_auth_card, "added [SSid_access.get_access_desc(access_type)]") + if(access_type in ACCESS_ALERT_ADMINS) + message_admins("[ADMIN_LOOKUPFLW(user)] just added [SSid_access.get_access_desc(access_type)] to an ID card [ADMIN_VV(inserted_auth_card)] [(inserted_auth_card.registered_name) ? "belonging to [inserted_auth_card.registered_name]." : "with no registered name."]") + LOG_ID_ACCESS_CHANGE(user, inserted_auth_card, "added [SSid_access.get_access_desc(access_type)]") + // monkestation end return TRUE // Apply template to ID card. if("PRG_template") diff --git a/code/modules/modular_computers/file_system/programs/jobmanagement.dm b/code/modules/modular_computers/file_system/programs/jobmanagement.dm index cb059cf9663e..b394b0a2ad9f 100644 --- a/code/modules/modular_computers/file_system/programs/jobmanagement.dm +++ b/code/modules/modular_computers/file_system/programs/jobmanagement.dm @@ -14,19 +14,6 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) program_icon = "address-book" var/change_position_cooldown = 30 - ///Jobs blacklisted from having their slots edited. - var/static/list/blacklisted = list( - JOB_CAPTAIN, - JOB_HEAD_OF_PERSONNEL, - JOB_HEAD_OF_SECURITY, - JOB_RESEARCH_DIRECTOR, - JOB_CHIEF_ENGINEER, - JOB_CHIEF_MEDICAL_OFFICER, - JOB_QUARTERMASTER, - JOB_AI, - JOB_CYBORG, - JOB_ASSISTANT, - ) //The scaling factor of max total positions in relation to the total amount of people on board the station in % var/max_relative_positions = 30 //30%: Seems reasonable, limit of 6 @ 20 players @@ -41,14 +28,16 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) /datum/computer_file/program/job_management/proc/can_edit_job(datum/job/job) - if(!job || !(job.job_flags & JOB_CREW_MEMBER) || (job.title in blacklisted)) + if(!istype(job)) + return FALSE + if(!(job.job_flags & JOB_CREW_MEMBER)) + return FALSE + if(job.job_flags & JOB_CANNOT_OPEN_SLOTS) return FALSE return TRUE /datum/computer_file/program/job_management/proc/can_open_job(datum/job/job) - if(!can_edit_job(job)) - return FALSE if((job.total_positions <= length(GLOB.player_list) * (max_relative_positions / 100))) var/delta = (world.time / 10) - GLOB.time_last_changed_position if((change_position_cooldown < delta) || (opened_positions[job.title] < 0)) @@ -57,8 +46,6 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) /datum/computer_file/program/job_management/proc/can_close_job(datum/job/job) - if(!can_edit_job(job)) - return FALSE if(job.total_positions > length(GLOB.player_list) * (max_relative_positions / 100)) var/delta = (world.time / 10) - GLOB.time_last_changed_position if((change_position_cooldown < delta) || (opened_positions[job.title] > 0)) @@ -75,7 +62,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) if("PRG_open_job") var/edit_job_target = params["target"] var/datum/job/j = SSjob.GetJob(edit_job_target) - if(!j || !can_open_job(j)) + if(!can_edit_job(j) || !can_open_job(j)) return TRUE if(opened_positions[edit_job_target] >= 0) GLOB.time_last_changed_position = world.time / 10 @@ -87,7 +74,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) if("PRG_close_job") var/edit_job_target = params["target"] var/datum/job/j = SSjob.GetJob(edit_job_target) - if(!j || !can_close_job(j)) + if(!can_edit_job(j) || !can_close_job(j)) return TRUE //Allow instant closing without cooldown if a position has been opened before if(opened_positions[edit_job_target] <= 0) @@ -100,7 +87,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) if("PRG_priority") var/priority_target = params["target"] var/datum/job/j = SSjob.GetJob(priority_target) - if(!j || !can_edit_job(j)) + if(!can_edit_job(j)) return TRUE if(j.total_positions <= j.current_positions) return TRUE @@ -128,7 +115,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) var/list/pos = list() var/list/priority = list() for(var/datum/job/job as anything in SSjob.joinable_occupations) - if(job.title in blacklisted) + if(!can_edit_job(job)) continue if(job in SSjob.prioritized_jobs) priority += job.title @@ -145,4 +132,3 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) var/delta = round(change_position_cooldown - ((world.time / 10) - GLOB.time_last_changed_position), 1) data["cooldown"] = delta < 0 ? 0 : delta return data - diff --git a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm index 06eb507167cb..6ee58575a49c 100644 --- a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm +++ b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm @@ -552,7 +552,7 @@ return send_message_signal(sender, message, targets, fake_photo, FALSE, TRUE, fake_name, fake_job) /datum/computer_file/program/messenger/proc/send_message_signal(mob/sender, message, list/datum/computer_file/program/messenger/targets, photo_path = null, everyone = FALSE, rigged = FALSE, fake_name = null, fake_job = null) - if(!sender.can_perform_action(computer)) + if(!sender.can_perform_action(computer, ALLOW_RESTING)) return FALSE if(!COOLDOWN_FINISHED(src, last_text)) diff --git a/code/modules/modular_computers/file_system/programs/records.dm b/code/modules/modular_computers/file_system/programs/records.dm index 960702d608cc..8a48b2c91d07 100644 --- a/code/modules/modular_computers/file_system/programs/records.dm +++ b/code/modules/modular_computers/file_system/programs/records.dm @@ -18,7 +18,7 @@ filename = "medrecords" program_icon = "book-medical" extended_desc = "Allows the user to view several basic medical records from the crew." - transfer_access = list(ACCESS_MEDICAL, ACCESS_FLAG_COMMAND) + transfer_access = list(ACCESS_MEDICAL, ACCESS_BRIG_PHYSICIAN, ACCESS_FLAG_COMMAND) ///MONKESTATION EDIT: add brig phys to medrecords. available_on_ntnet = TRUE mode = "medical" diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm index c2778d19471b..892b928db9ee 100644 --- a/code/modules/movespeed/modifiers/mobs.dm +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -172,3 +172,6 @@ /datum/movespeed_modifier/basilisk_overheat multiplicative_slowdown = -18 + +/datum/movespeed_modifier/magic_ties + multiplicative_slowdown = 0.5 diff --git a/code/modules/pai/card.dm b/code/modules/pai/card.dm index 1c42beac3412..3e11c0b7bcb8 100644 --- a/code/modules/pai/card.dm +++ b/code/modules/pai/card.dm @@ -68,6 +68,7 @@ . = ..() update_appearance() SSpai.pai_card_list += src + ADD_TRAIT(src, TRAIT_CASTABLE_LOC, INNATE_TRAIT) /obj/item/pai_card/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is staring sadly at [src]! [user.p_they()] can't keep living without real human intimacy!")) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 52005f7e3917..989fa458d8f8 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -359,25 +359,31 @@ return TRUE return ..() -/obj/item/proc/burn_paper_product_attackby_check(obj/item/I, mob/living/user, bypass_clumsy) - var/ignition_message = I.ignition_effect(src, user) +/obj/item/proc/burn_paper_product_attackby_check(obj/item/attacking_item, mob/living/user, bypass_clumsy = FALSE) + //can't be put on fire! + if((resistance_flags & FIRE_PROOF) || !(resistance_flags & FLAMMABLE)) + return FALSE + //already on fire! + if(resistance_flags & ON_FIRE) + return FALSE + var/ignition_message = attacking_item.ignition_effect(src, user) if(!ignition_message) - return - . = TRUE + return FALSE if(!bypass_clumsy && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(10) && Adjacent(user)) user.visible_message(span_warning("[user] accidentally ignites [user.p_them()]self!"), \ span_userdanger("You miss [src] and accidentally light yourself on fire!")) - if(user.is_holding(I)) //checking if they're holding it in case TK is involved - user.dropItemToGround(I) - user.adjust_fire_stacks(1) + if(user.is_holding(attacking_item)) //checking if they're holding it in case TK is involved + user.dropItemToGround(attacking_item) + user.adjust_fire_stacks(attacking_item) user.ignite_mob() - return + return TRUE if(user.is_holding(src)) //no TK shit here. user.dropItemToGround(src) user.visible_message(ignition_message) add_fingerprint(user) - fire_act(I.get_temperature()) + fire_act(attacking_item.get_temperature()) + return TRUE /obj/item/paper/attackby(obj/item/attacking_item, mob/living/user, params) if(burn_paper_product_attackby_check(attacking_item, user)) diff --git a/code/modules/plumbing/ducts.dm b/code/modules/plumbing/ducts.dm index 9e91221ea8a5..33c4c5e300c7 100644 --- a/code/modules/plumbing/ducts.dm +++ b/code/modules/plumbing/ducts.dm @@ -19,7 +19,7 @@ All the important duct code: ///our ductnet, wich tracks what we're connected to var/datum/ductnet/duct ///amount we can transfer per process. note that the ductnet can carry as much as the lowest capacity duct - var/capacity = 100 + var/capacity = 1000 ///the color of our duct var/duct_color = COLOR_VERY_LIGHT_GRAY diff --git a/code/modules/plumbing/plumbers/synthesizer.dm b/code/modules/plumbing/plumbers/synthesizer.dm index 4f9f3672ecba..479af8c800a7 100644 --- a/code/modules/plumbing/plumbers/synthesizer.dm +++ b/code/modules/plumbing/plumbers/synthesizer.dm @@ -20,6 +20,7 @@ var/list/dispensable_reagents = list( /datum/reagent/aluminium, /datum/reagent/bromine, + /datum/reagent/brine, /datum/reagent/carbon, /datum/reagent/chlorine, /datum/reagent/copper, diff --git a/code/modules/power/apc/apc_main.dm b/code/modules/power/apc/apc_main.dm index 172cd043ca92..de83bf31fe9d 100644 --- a/code/modules/power/apc/apc_main.dm +++ b/code/modules/power/apc/apc_main.dm @@ -453,11 +453,13 @@ update() if("emergency_lighting") emergency_lights = !emergency_lights - for(var/obj/machinery/light/L in area) - if(!initial(L.no_low_power)) //If there was an override set on creation, keep that override - L.no_low_power = emergency_lights - INVOKE_ASYNC(L, TYPE_PROC_REF(/obj/machinery/light/, update), FALSE) - CHECK_TICK + for (var/list/zlevel_turfs as anything in area.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + for(var/obj/machinery/light/area_light in area_turf) + if(!initial(area_light.no_low_power)) //If there was an override set on creation, keep that override + area_light.no_low_power = emergency_lights + INVOKE_ASYNC(area_light, TYPE_PROC_REF(/obj/machinery/light/, update), FALSE) + CHECK_TICK return TRUE /obj/machinery/power/apc/ui_close(mob/user) @@ -657,10 +659,12 @@ INVOKE_ASYNC(src, PROC_REF(break_lights)) /obj/machinery/power/apc/proc/break_lights() - for(var/obj/machinery/light/breaked_light in area) - breaked_light.on = TRUE - breaked_light.break_light_tube() - stoplag() + for (var/list/zlevel_turfs as anything in area.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + for(var/obj/machinery/light/breaked_light in area_turf) + breaked_light.on = TRUE + breaked_light.break_light_tube() + stoplag() /obj/machinery/power/apc/should_atmos_process(datum/gas_mixture/air, exposed_temperature) return (exposed_temperature > 2000) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index afdaa342f2ad..4d3625b7a5ad 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -341,7 +341,7 @@ if(STAGE_ONE) steps = 1 if(STAGE_TWO) - steps = 3//Yes this is right + steps = 2//Now THIS is right if(STAGE_THREE) steps = 3 if(STAGE_FOUR) diff --git a/code/modules/projectiles/ammunition/energy/special.dm b/code/modules/projectiles/ammunition/energy/special.dm index 47f36877f053..684f18e77efa 100644 --- a/code/modules/projectiles/ammunition/energy/special.dm +++ b/code/modules/projectiles/ammunition/energy/special.dm @@ -65,7 +65,7 @@ projectile_type = /obj/projectile/energy/tesla_cannon /obj/item/ammo_casing/energy/shrink - projectile_type = /obj/projectile/beam/shrink + projectile_type = /obj/projectile/magic/shrink/alien select_name = "shrink ray" e_cost = 200 diff --git a/code/modules/projectiles/ammunition/special/magic.dm b/code/modules/projectiles/ammunition/special/magic.dm index 0965aae2fddd..70afbc169256 100644 --- a/code/modules/projectiles/ammunition/special/magic.dm +++ b/code/modules/projectiles/ammunition/special/magic.dm @@ -83,3 +83,9 @@ /obj/item/ammo_casing/magic/nothing projectile_type = /obj/projectile/magic/nothing harmful = FALSE + +/obj/item/ammo_casing/magic/shrink + projectile_type = /obj/projectile/magic/shrink + +/obj/item/ammo_casing/magic/shrink/wand + projectile_type = /obj/projectile/magic/shrink/wand diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index bd12ddd9a4fa..bc0f0ea385ce 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -172,8 +172,11 @@ playsound(src, fire_sound, fire_sound_volume, vary_fire_sound) /obj/item/gun/proc/shoot_live_shot(mob/living/user, pointblank = 0, atom/pbtarget = null, message = 1) + var/angle = get_angle(user, pbtarget)+rand(-recoil_deviation, recoil_deviation) + 180 + if(angle > 360) + angle -= 360 if(recoil && !tk_firing(user)) - shake_camera(user, recoil + 1, recoil) + recoil_camera(user, recoil+1, (recoil*recoil_backtime_multiplier) + 1, recoil, angle) fire_sounds() if(!suppressed) if(message) @@ -278,8 +281,9 @@ var/obj/item/bodypart/other_hand = user.has_hand_for_held_index(user.get_inactive_hand_index()) //returns non-disabled inactive hands if(weapon_weight == WEAPON_HEAVY && (user.get_inactive_held_item() || !other_hand)) - balloon_alert(user, "use both hands!") - return + if(!istype(user.get_inactive_held_item(), /obj/item/offhand)) + balloon_alert(user, "use both hands!") + return //DUAL (or more!) WIELDING var/bonus_spread = 0 var/loop_counter = 0 diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index f5eb4bb7c71f..134980255e35 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -127,8 +127,11 @@ ///What is the cap on our misfire probability? Do not set this to 100. var/misfire_probability_cap = 25 + var/wield_recoil = 0 + /obj/item/gun/ballistic/Initialize(mapload) . = ..() + AddComponent(/datum/component/two_handed, wield_callback = CALLBACK(src, PROC_REF(on_wield)), unwield_callback = CALLBACK(src, PROC_REF(on_unwield))) if(!spawn_magazine_type) spawn_magazine_type = accepted_magazine_type if (!spawnwithmagazine) @@ -143,6 +146,12 @@ chamber_round(replace_new_round = TRUE) update_appearance() RegisterSignal(src, COMSIG_ITEM_RECHARGED, PROC_REF(instant_reload)) + register_context() + +/obj/item/gun/ballistic/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + context[SCREENTIP_CONTEXT_CTRL_LMB] = "Toggle Bracing" + return CONTEXTUAL_SCREENTIP_SET /obj/item/gun/ballistic/Destroy() QDEL_NULL(magazine) diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm index e23a1e9121a4..dc729ab3a1f9 100644 --- a/code/modules/projectiles/guns/magic/staff.dm +++ b/code/modules/projectiles/guns/magic/staff.dm @@ -148,6 +148,7 @@ /obj/projectile/magic/teleport, /obj/projectile/magic/wipe, /obj/projectile/temp/chill, + /obj/projectile/magic/shrink ) /obj/item/gun/magic/staff/chaos/unrestricted @@ -318,3 +319,17 @@ inhand_icon_state = "pharoah_sceptre" worn_icon_state = "wipestaff" school = SCHOOL_FORBIDDEN //arguably the worst staff in the entire game effect wise + +/obj/item/gun/magic/staff/shrink + name = "staff of shrinking" + desc = "An artefact that spits bolts of tiny magic that makes things small. It's easily mistaken for a wand." + fire_sound = 'sound/magic/staff_shrink.ogg' + ammo_type = /obj/item/ammo_casing/magic/shrink + icon_state = "shrinkstaff" + inhand_icon_state = "staff" + max_charges = 10 // slightly more/faster charges since this will be used on walls and such + recharge_rate = 5 + no_den_usage = TRUE + school = SCHOOL_TRANSMUTATION + slot_flags = NONE //too small to wear on your back + w_class = WEIGHT_CLASS_NORMAL //but small enough for a bag diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index a078c4ae00b0..82b78a4859ed 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -256,3 +256,25 @@ name = "wand of nothing" desc = "It's not just a stick, it's a MAGIC stick?" ammo_type = /obj/item/ammo_casing/magic/nothing + + +///////////////////////////////////// +//WAND OF SHRINKING +///////////////////////////////////// + +/obj/item/gun/magic/wand/shrink + name = "wand of shrinking" + desc = "Feel the tiny eldritch terror of an itty... bitty... head!" + ammo_type = /obj/item/ammo_casing/magic/shrink/wand + icon_state = "shrinkwand" + base_icon_state = "shrinkwand" + fire_sound = 'sound/magic/staff_shrink.ogg' + max_charges = 10 //10, 5, 5, 4 + no_den_usage = TRUE + w_class = WEIGHT_CLASS_TINY + +/obj/item/gun/magic/wand/shrink/zap_self(mob/living/user) + to_chat(user, span_notice("The world grows large...")) + charges-- + user.AddComponent(/datum/component/shrink, -1) // small forever + return ..() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 4b668f80fef0..35ca181378e7 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -8,6 +8,7 @@ icon_state = "bullet" density = FALSE anchored = TRUE + animate_movement = NO_STEPS //Use SLIDE_STEPS in conjunction with legacy mouse_opacity = MOUSE_OPACITY_TRANSPARENT movement_type = FLYING wound_bonus = CANT_WOUND // can't wound by default @@ -314,8 +315,9 @@ new /obj/effect/temp_visual/dir_setting/bloodsplatter/xenosplatter(target_turf, splatter_dir) else new /obj/effect/temp_visual/dir_setting/bloodsplatter(target_turf, splatter_dir) - if(prob(33)) - living_target.add_splatter_floor(target_turf) + if(prob(damage)) + living_target.blood_particles(amount = rand(1, 1 + round(damage/20, 1)), angle = src.Angle) + else if (!isnull(hit_bodypart) && (hit_bodypart.biological_state & (BIO_METAL|BIO_WIRED))) var/random_damage_mult = RANDOM_DECIMAL(0.85, 1.15) // SOMETIMES you can get more or less sparks var/damage_dealt = ((damage / (1 - (blocked / 100))) * random_damage_mult) @@ -517,8 +519,10 @@ return process_hit(T, select_target(T, target, bumped), bumped, hit_something) // try to hit something else // at this point we are going to hit the thing // in which case send signal to it - if (SEND_SIGNAL(target, COMSIG_PROJECTILE_PREHIT, args, src) & PROJECTILE_INTERRUPT_HIT) - qdel(src) + var/signal_bitfield = SEND_SIGNAL(target, COMSIG_PROJECTILE_PREHIT, args, src) //monkestation edit + if (signal_bitfield & PROJECTILE_INTERRUPT_HIT) + if(!(signal_bitfield & PROJECTILE_INTERRUPT_BLOCK_QDEL)) //monkestation edit + qdel(src) return BULLET_ACT_BLOCK if(mode == PROJECTILE_PIERCE_HIT) ++pierces @@ -917,7 +921,7 @@ process_homing() var/forcemoved = FALSE for(var/i in 1 to SSprojectiles.global_iterations_per_move) - if(QDELETED(src)) + if(QDELETED(src) || !trajectory) //monkestation edit: adds the trajectory check return trajectory.increment(trajectory_multiplier) var/turf/T = trajectory.return_turf() diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 8d5d22da3cdc..96c99fca0298 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -226,23 +226,6 @@ /obj/projectile/beam/lasertag/bluetag/hitscan hitscan = TRUE -//a shrink ray that shrinks stuff, which grows back after a short while. -/obj/projectile/beam/shrink - name = "shrink ray" - icon_state = "blue_laser" - hitsound = 'sound/weapons/shrink_hit.ogg' - damage = 0 - damage_type = STAMINA - armor_flag = ENERGY - impact_effect_type = /obj/effect/temp_visual/impact_effect/shrink - light_color = LIGHT_COLOR_BLUE - var/shrink_time = 90 - -/obj/projectile/beam/shrink/on_hit(atom/target, blocked = 0, pierce_hit) - . = ..() - if(isopenturf(target) || isindestructiblewall(target))//shrunk floors wouldnt do anything except look weird, i-walls shouldn't be bypassable - return - target.AddComponent(/datum/component/shrink, shrink_time) - -/obj/projectile/beam/shrink/is_hostile_projectile() - return TRUE +/obj/projectile/magic/shrink/alien + antimagic_flags = NONE + shrink_time = 9 SECONDS diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index b4198caeafd1..98e2f150d65d 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -13,6 +13,12 @@ wound_falloff_tile = -5 embed_falloff_tile = -3 + light_system = OVERLAY_LIGHT + light_outer_range = 1.25 + light_power = 1 + light_color = COLOR_VERY_SOFT_YELLOW + light_on = TRUE + speed = 0.4 //twice as fast /obj/projectile/bullet/smite diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index e545cf615acb..ea38aedb0021 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -393,24 +393,23 @@ /obj/projectile/magic/wipe/proc/possession_test(mob/living/carbon/target) var/datum/brain_trauma/special/imaginary_friend/trapped_owner/trauma = target.gain_trauma(/datum/brain_trauma/special/imaginary_friend/trapped_owner) - var/poll_message = "Do you want to play as [target.real_name]?" + var/poll_message = "Do you want to play as [span_danger(target.real_name)]?" if(target.mind) - poll_message = "[poll_message] Job:[target.mind.assigned_role.title]." + poll_message = "[poll_message] Job:[span_notice(target.mind.assigned_role.title)]." if(target.mind && target.mind.special_role) - poll_message = "[poll_message] Status:[target.mind.special_role]." + poll_message = "[poll_message] Status:[span_boldnotice(target.mind.special_role)]." else if(target.mind) var/datum/antagonist/A = target.mind.has_antag_datum(/datum/antagonist/) if(A) - poll_message = "[poll_message] Status:[A.name]." - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob(poll_message, check_jobban = ROLE_PAI, poll_time = 10 SECONDS, target_mob = target, pic_source = target, role_name_text = "bolt of possession") + poll_message = "[poll_message] Status:[span_boldnotice(A.name)]." + var/mob/chosen_one = SSpolling.poll_ghosts_for_target(poll_message, check_jobban = ROLE_PAI, poll_time = 10 SECONDS, checked_target = target, alert_pic = target, role_name_text = "bolt of possession") if(target.stat == DEAD)//boo. return - if(LAZYLEN(candidates)) - var/mob/dead/observer/ghost = pick(candidates) + if(chosen_one) to_chat(target, span_boldnotice("You have been noticed by a ghost and it has possessed you!")) var/oldkey = target.key target.ghostize(FALSE) - target.key = ghost.key + target.key = chosen_one.key trauma.friend.key = oldkey trauma.friend.reset_perspective(null) trauma.friend.Show() @@ -612,3 +611,31 @@ damage_type = BURN damage = 2 antimagic_charge_cost = 0 // since the cards gets spammed like a shotgun + +//a shrink ray that shrinks stuff, which grows back after a short while. +/obj/projectile/magic/shrink + name = "shrink ray" + icon_state = "blue_laser" + hitsound = 'sound/weapons/shrink_hit.ogg' + damage = 0 + damage_type = STAMINA + armor_flag = ENERGY + impact_effect_type = /obj/effect/temp_visual/impact_effect/shrink + light_color = LIGHT_COLOR_BLUE + var/shrink_time = -1 + +/obj/projectile/magic/shrink/on_hit(atom/target, blocked = 0, pierce_hit) + . = ..() + if(isopenturf(target) || isindestructiblewall(target))//shrunk floors wouldnt do anything except look weird, i-walls shouldn't be bypassable + return + target.AddComponent(/datum/component/shrink, shrink_time) + +/obj/projectile/magic/shrink/is_hostile_projectile() + return TRUE + +/obj/projectile/magic/shrink/wand + shrink_time = 90 SECONDS + +/obj/projectile/magic/shrink/wand/on_hit(atom/target, blocked = 0, pierce_hit) + shrink_time = rand(60 SECONDS, 90 SECONDS) + return ..() diff --git a/code/modules/reagents/chemistry/equilibrium.dm b/code/modules/reagents/chemistry/equilibrium.dm index 4e1aaeca21bf..76cef723be44 100644 --- a/code/modules/reagents/chemistry/equilibrium.dm +++ b/code/modules/reagents/chemistry/equilibrium.dm @@ -336,6 +336,7 @@ //Calculate how much product to make and how much reactant to remove factors.. for(var/reagent in reaction.required_reagents) holder.remove_reagent(reagent, (delta_chem_factor * reaction.required_reagents[reagent]), safety = TRUE) + /* monkestation removal: we don't use ph or purity //Apply pH changes var/pH_adjust if(reaction.reaction_flags & REACTION_PH_VOL_CONSTANT) @@ -343,6 +344,7 @@ else //Default adds pH independant of volume pH_adjust = (delta_chem_factor * reaction.required_reagents[reagent])*(reaction.H_ion_release*h_ion_mod) holder.adjust_specific_reagent_ph(reagent, pH_adjust) + monkestation end */ var/step_add for(var/product in reaction.results) @@ -351,6 +353,7 @@ //Default handiling holder.add_reagent(product, step_add, null, cached_temp, purity, override_base_ph = TRUE) + /* monkestation removal: we don't use ph or purity //Apply pH changes var/pH_adjust if(reaction.reaction_flags & REACTION_PH_VOL_CONSTANT) @@ -358,6 +361,7 @@ else pH_adjust = step_add*(reaction.H_ion_release*h_ion_mod) holder.adjust_specific_reagent_ph(product, pH_adjust) + MONKESTATION END */ reacted_vol += step_add total_step_added += step_add diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 125efbeaa221..a897c80dc6ec 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -230,6 +230,8 @@ //add the reagent to the existing if it exists for(var/datum/reagent/iter_reagent as anything in cached_reagents) if(iter_reagent.type == reagent) + if(!iter_reagent.can_merge) + return if(override_base_ph) added_ph = iter_reagent.ph iter_reagent.purity = ((iter_reagent.creation_purity * iter_reagent.volume) + (added_purity * amount)) /(iter_reagent.volume + amount) //This should add the purity to the product @@ -1249,7 +1251,7 @@ else . += reagent.volume total_volume = . - recalculate_sum_ph() + // recalculate_sum_ph() // monkestation edit: we don't use ph or purity /** * Applies the relevant expose_ proc for every reagent in this holder @@ -1484,9 +1486,11 @@ * Arguments: * * value - How much to adjust the base pH by */ +/* monkestation removal: we don't use ph or purity /datum/reagents/proc/adjust_all_reagents_ph(value, lower_limit = 0, upper_limit = 14) for(var/datum/reagent/reagent as anything in reagent_list) reagent.ph = clamp(reagent.ph + value, lower_limit, upper_limit) +monkestation end */ /* * Adjusts the base pH of all of the listed types @@ -1497,11 +1501,13 @@ * * input_reagents_list - list of reagent objects to adjust * * value - How much to adjust the base pH by */ +/* monkestation removal: we don't use ph or purity /datum/reagents/proc/adjust_specific_reagent_list_ph(list/input_reagents_list, value, lower_limit = 0, upper_limit = 14) for(var/datum/reagent/reagent as anything in input_reagents_list) if(!reagent) //We can call this with missing reagents. continue reagent.ph = clamp(reagent.ph + value, lower_limit, upper_limit) +monkestation end */ /* * Adjusts the base pH of a specific type @@ -1514,15 +1520,18 @@ * * lower_limit - how low the pH can go * * upper_limit - how high the pH can go */ +/* monkestation removal: we don't use ph or purity /datum/reagents/proc/adjust_specific_reagent_ph(input_reagent, value, lower_limit = 0, upper_limit = 14) var/datum/reagent/reagent = get_reagent(input_reagent) if(!reagent) //We can call this with missing reagents. return FALSE reagent.ph = clamp(reagent.ph + value, lower_limit, upper_limit) +monkestation end */ /* * Updates the reagents datum pH based off the volume weighted sum of the reagent_list's reagent pH */ +/* monkestation removal: we don't use ph or purity /datum/reagents/proc/recalculate_sum_ph() if(!reagent_list || !total_volume) //Ensure that this is true ph = CHEMICAL_NORMAL_PH @@ -1532,6 +1541,7 @@ total_ph += (reagent.ph * reagent.volume) //Keep limited ph = clamp(total_ph/total_volume, 0, 14) +*/ /** * Outputs a log-friendly list of reagents based on an external reagent list. @@ -2032,6 +2042,7 @@ qdel(reagents) reagents = new /datum/reagents(max_vol, flags) reagents.my_atom = src + return reagents /atom/movable/chem_holder name = "This atom exists to hold chems. If you can see this, make an issue report" diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 6eb3009bd3da..fbc515d8bec4 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -65,21 +65,31 @@ /datum/reagent/fuel, /datum/reagent/silver, ) - //these become available once the manipulator has been upgraded to tier 4 (femto) + //These become available once upgraded. (Monkestation Edit) var/list/upgrade_reagents = list( - /datum/reagent/acetone, - /datum/reagent/ammonia, - /datum/reagent/ash, - /datum/reagent/diethylamine, /datum/reagent/fuel/oil, + /datum/reagent/ammonia, + /datum/reagent/ash + ) + + var/list/upgrade_reagents2 = list( + /datum/reagent/acetone, + /datum/reagent/phenol, + /datum/reagent/diethylamine + ) + + var/list/upgrade_reagents3 = list( + /datum/reagent/medicine/mine_salve, + /datum/reagent/toxin, /datum/reagent/saltpetre ) + var/list/emagged_reagents = list( /datum/reagent/toxin/carpotoxin, /datum/reagent/medicine/mine_salve, - /datum/reagent/medicine/morphine, + /datum/reagent/medicine/painkiller/morphine, /datum/reagent/drug/space_drugs, - /datum/reagent/toxin + /datum/reagent/australium ) var/list/recording_recipe @@ -428,12 +438,13 @@ for(var/datum/stock_part/capacitor/capacitor in component_parts) recharge_amount *= capacitor.tier parts_rating += capacitor.tier - for(var/datum/stock_part/manipulator/manipulator in component_parts) - if (manipulator.tier > 3) + for(var/datum/stock_part/manipulator/manipulator in component_parts) // Monkestation Edit + if (manipulator.tier > 1) dispensable_reagents |= upgrade_reagents - else - dispensable_reagents -= upgrade_reagents - parts_rating += manipulator.tier + if (manipulator.tier > 2) + dispensable_reagents |= upgrade_reagents2 + if (manipulator.tier > 3) + dispensable_reagents |= upgrade_reagents3 powerefficiency = round(newpowereff, 0.01) /obj/machinery/chem_dispenser/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker) @@ -699,7 +710,7 @@ /datum/reagent/fuel/oil, /datum/reagent/saltpetre, /datum/reagent/medicine/mine_salve, - /datum/reagent/medicine/morphine, + /datum/reagent/medicine/painkiller/morphine, /datum/reagent/drug/space_drugs, /datum/reagent/toxin, /datum/reagent/toxin/plasma, diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index f72c548396a8..2434c0da6a8b 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -1,4 +1,3 @@ -#define MILK_TO_BUTTER_COEFF 15 /obj/machinery/reagentgrinder name = "\improper All-In-One Grinder" @@ -362,5 +361,3 @@ var/amount = beaker.reagents.get_reagent_amount(/datum/reagent/consumable/cream) beaker.reagents.remove_reagent(/datum/reagent/consumable/cream, amount) beaker.reagents.add_reagent(/datum/reagent/consumable/whipped_cream, amount) - -#undef MILK_TO_BUTTER_COEFF diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index aa3d15916aa0..69929561ee18 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -126,6 +126,8 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) var/list/metabolized_traits /// A list of traits to apply while the reagent is in a mob. var/list/added_traits + ///are we able to merge + var/can_merge = TRUE /datum/reagent/New() SHOULD_CALL_PARENT(TRUE) diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm index 79d9a191e845..d91620353710 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm @@ -2015,17 +2015,18 @@ taste_description = "the pain of ten thousand slain mosquitos" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -/datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) - //Bugs should not drink Bug spray. - if(ismoth(drinker) || isflyperson(drinker)) - drinker.adjustToxLoss(1 * REM * seconds_per_tick, FALSE, required_biotype = affected_biotype) - return ..() - -/datum/reagent/consumable/ethanol/bug_spray/on_mob_metabolize(mob/living/carbon/drinker) +/datum/reagent/consumable/ethanol/bug_spray/on_new(data) + . = ..() + AddElement(/datum/element/bugkiller_reagent) - if(ismoth(drinker) || isflyperson(drinker)) +/datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) + // Does some damage to bug biotypes + var/did_damage = drinker.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = MOB_BUG) + // Random chance of causing a screm if we did some damage + if(did_damage && SPT_PROB(2, seconds_per_tick)) drinker.emote("scream") - return ..() + + return ..() || did_damage /datum/reagent/consumable/ethanol/applejack name = "Applejack" diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 4c000052b996..4493b5c13971 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -424,13 +424,12 @@ new/obj/effect/decal/cleanable/food/salt(exposed_turf) -/datum/reagent/consumable/salt/expose_mob(mob/living/exposed_mob, methods, reac_volume) +/datum/reagent/consumable/salt/expose_mob(mob/living/carbon/exposed_carbon, methods, reac_volume) . = ..() - var/mob/living/carbon/carbies = exposed_mob - if(!(methods & (PATCH|TOUCH|VAPOR))) + if(!iscarbon(exposed_carbon) || !(methods & (PATCH|TOUCH|VAPOR))) return - for(var/datum/wound/iter_wound as anything in carbies.all_wounds) - iter_wound.on_salt(reac_volume, carbies) + for(var/datum/wound/iter_wound as anything in exposed_carbon.all_wounds) + iter_wound.on_salt(reac_volume, exposed_carbon) // Salt can help with wounds by soaking up fluid, but undiluted salt will also cause irritation from the loose crystals, and it might soak up the body's water as well! // A saltwater mixture would be best, but we're making improvised chems here, not real ones. diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm index b4d869631672..8dccaf47f6f5 100644 --- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm @@ -118,7 +118,7 @@ Basically, we fill the time between now and 2s from now with hands based off the hands++ for(var/id in timer_ids) // So that we can be certain that all timers are deleted at the end. deltimer(id) - timer_ids.Cut() + timer_ids?.Cut() return ..() /datum/reagent/inverse/helgrasp/heretic diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index da8cf6bf8e26..d1bfbf5a97df 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -241,6 +241,14 @@ ph = 8.1 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED +/datum/reagent/medicine/spaceacillin/on_mob_metabolize(mob/living/L) + . = ..() + ADD_TRAIT(L, TRAIT_VIRUS_RESISTANCE, type) + +/datum/reagent/medicine/spaceacillin/on_mob_end_metabolize(mob/living/L) + . = ..() + REMOVE_TRAIT(L, TRAIT_VIRUS_RESISTANCE, type) + //Goon Chems. Ported mainly from Goonstation. Easily mixable (or not so easily) and provide a variety of effects. /datum/reagent/medicine/oxandrolone @@ -595,7 +603,7 @@ holder.remove_reagent(/datum/reagent/toxin/histamine, 3 * REM * seconds_per_tick) ..() -/datum/reagent/medicine/morphine +/datum/reagent/medicine/painkiller/morphine name = "Morphine" description = "A painkiller that allows the patient to move at full speed even when injured. Causes drowsiness and eventually unconsciousness in high doses. Overdose will cause a variety of effects, ranging from minor to lethal." reagent_state = LIQUID @@ -607,28 +615,20 @@ addiction_types = list(/datum/addiction/opioids = 10) metabolized_traits = list(TRAIT_ANALGESIA) -/datum/reagent/medicine/morphine/on_mob_metabolize(mob/living/affected_mob) +/datum/reagent/medicine/painkiller/morphine/on_mob_metabolize(mob/living/affected_mob) ..() affected_mob.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) -/datum/reagent/medicine/morphine/on_mob_end_metabolize(mob/living/affected_mob) +/datum/reagent/medicine/painkiller/morphine/on_mob_end_metabolize(mob/living/affected_mob) affected_mob.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) ..() -/datum/reagent/medicine/morphine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) +/datum/reagent/medicine/painkiller/morphine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) if(current_cycle >= 5) affected_mob.add_mood_event("numb", /datum/mood_event/narcotic_medium, name) - switch(current_cycle) - if(11) - to_chat(affected_mob, span_warning("You start to feel tired...") ) - if(12 to 24) - affected_mob.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick) - if(24 to INFINITY) - affected_mob.Sleeping(40 * REM * seconds_per_tick) - . = TRUE ..() -/datum/reagent/medicine/morphine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired) +/datum/reagent/medicine/painkiller/morphine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired) if(SPT_PROB(18, seconds_per_tick)) affected_mob.drop_all_held_items() affected_mob.set_dizzy_if_lower(4 SECONDS) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 8189dbd47b25..257a184a2278 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -622,8 +622,9 @@ affected_human.facial_hairstyle = "Shaved" affected_human.facial_hair_color = "#000000" affected_human.hair_color = "#000000" - if(!(HAIR in affected_human.dna.species.species_traits)) //No hair? No problem! - affected_human.dna.species.species_traits += HAIR + var/obj/item/bodypart/head/head = affected_human.get_bodypart(BODY_ZONE_HEAD) + if(head) + head.head_flags |= HEAD_HAIR //No hair? No problem! if(affected_human.dna.species.use_skintones) affected_human.skin_tone = "orange" else if(MUTCOLORS in affected_human.dna.species.species_traits) //Aliens with custom colors simply get turned orange @@ -2164,12 +2165,10 @@ var/mob/living/carbon/human/human_mob = affected_mob if(creation_purity == 1 && human_mob.has_quirk(/datum/quirk/item_quirk/bald)) human_mob.remove_quirk(/datum/quirk/item_quirk/bald) - var/datum/species/species_datum = human_mob.dna?.species - if(!species_datum) + var/obj/item/bodypart/head/head = human_mob.get_bodypart(BODY_ZONE_HEAD) + if(!head || (head.head_flags & HEAD_HAIR)) return - if(species_datum.species_traits.Find(HAIR)) - return - species_datum.species_traits |= HAIR + head.head_flags |= HEAD_HAIR var/message if(HAS_TRAIT(affected_mob, TRAIT_BALD)) message = span_warning("You feel your scalp mutate, but you are still hopelessly bald.") @@ -2454,7 +2453,7 @@ taste_description = "acrid cinnamon" metabolization_rate = 0.2 * REAGENTS_METABOLISM chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE - metabolized_traits = list(CHANGELING_HIVEMIND_MUTE) + metabolized_traits = list(TRAIT_CHANGELING_HIVEMIND_MUTE) /datum/reagent/bz_metabolites/on_mob_life(mob/living/carbon/target, seconds_per_tick, times_fired) if(target.mind) @@ -2658,15 +2657,15 @@ /datum/reagent/gravitum/expose_obj(obj/exposed_obj, volume) . = ..() exposed_obj.AddElement(/datum/element/forced_gravity, 0) - addtimer(CALLBACK(exposed_obj, PROC_REF(_RemoveElement), list(/datum/element/forced_gravity, 0)), volume * time_multiplier) + addtimer(CALLBACK(exposed_obj, PROC_REF(_RemoveElement), list(/datum/element/forced_gravity, 0, can_override = TRUE)), volume * time_multiplier) /datum/reagent/gravitum/on_mob_metabolize(mob/living/affected_mob) - affected_mob.AddElement(/datum/element/forced_gravity, 0) //0 is the gravity, and in this case weightless + affected_mob.AddElement(/datum/element/forced_gravity, 0, can_override = TRUE) //0 is the gravity, and in this case weightless return ..() /datum/reagent/gravitum/on_mob_end_metabolize(mob/living/affected_mob) . = ..() - affected_mob.RemoveElement(/datum/element/forced_gravity, 0) + affected_mob.RemoveElement(/datum/element/forced_gravity, 0, can_override = TRUE) /datum/reagent/cellulose name = "Cellulose Fibers" diff --git a/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm b/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm index 676cbdcae45b..9b789ee3e5ff 100644 --- a/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm @@ -27,6 +27,7 @@ ///The strength of the buffer where (volume/holder.total_volume)*strength. So for 1u added to 50u the ph will decrease by 0.4 var/strength = 30 +/* monkestation removal: we don't use ph or purity //Consumes self on addition and shifts ph /datum/reagent/reaction_agent/acidic_buffer/intercept_reagents_transfer(datum/reagents/target, amount) . = ..() @@ -42,6 +43,7 @@ target.my_atom.audible_message(span_warning("The beaker fizzes as the ph changes!")) playsound(target.my_atom, 'sound/chemistry/bufferadd.ogg', 50, TRUE) holder.remove_reagent(type, amount) +monkestation end */ /datum/reagent/reaction_agent/basic_buffer name = "Strong Basic Buffer" @@ -54,6 +56,7 @@ ///The strength of the buffer where (volume/holder.total_volume)*strength. So for 1u added to 50u the ph will increase by 0.4 var/strength = 30 +/* monkestation removal: we don't use ph or purity /datum/reagent/reaction_agent/basic_buffer/intercept_reagents_transfer(datum/reagents/target, amount) . = ..() if(!.) @@ -68,6 +71,7 @@ target.my_atom.audible_message(span_warning("The beaker froths as the ph changes!")) playsound(target.my_atom, 'sound/chemistry/bufferadd.ogg', 50, TRUE) holder.remove_reagent(type, amount) +monkestation end */ //purity testor/reaction agent prefactors diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index d7d309fe5e9d..54e6461a701f 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -389,11 +389,13 @@ ph = 3.2 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -/datum/reagent/toxin/pestkiller/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume) +/datum/reagent/toxin/pestkiller/on_new(data) . = ..() - if(exposed_mob.mob_biotypes & MOB_BUG) - var/damage = min(round(0.4*reac_volume, 0.1),10) - exposed_mob.adjustToxLoss(damage, required_biotype = affected_biotype) + AddElement(/datum/element/bugkiller_reagent) + +/datum/reagent/toxin/pestkiller/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = affected_mob.adjustToxLoss(2 * toxpwr * REM * seconds_per_tick, updating_health = FALSE, required_biotype = MOB_BUG) + return ..() || . /datum/reagent/toxin/pestkiller/organic name = "Natural Pest Killer" diff --git a/code/modules/reagents/chemistry/recipes/cat2_medicines.dm b/code/modules/reagents/chemistry/recipes/cat2_medicines.dm index ea93cc82e1aa..92289982bbf4 100644 --- a/code/modules/reagents/chemistry/recipes/cat2_medicines.dm +++ b/code/modules/reagents/chemistry/recipes/cat2_medicines.dm @@ -231,8 +231,10 @@ var/datum/reagent/oxy = holder.has_reagent(/datum/reagent/oxygen) if(oxy) holder.remove_reagent(/datum/reagent/oxygen, 0.25) +/* monkestation removal: we don't use ph or purity else holder.adjust_all_reagents_ph(-0.05*step_reaction_vol)//pH drifts faster +monkestation end */ //Sleepytime for chem /datum/chemical_reaction/medicine/tirimol/overheated(datum/reagents/holder, datum/equilibrium/equilibrium, impure = FALSE) diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index b692d22b516e..a60e74c9d044 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -5,7 +5,7 @@ /datum/chemical_reaction/krokodil results = list(/datum/reagent/drug/krokodil = 6) - required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/medicine/morphine = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/potassium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/fuel = 1) + required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/medicine/painkiller/morphine = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/potassium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/fuel = 1) mix_message = "The mixture dries into a pale blue powder." required_temp = 380 reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG @@ -84,7 +84,7 @@ /datum/chemical_reaction/aranesp results = list(/datum/reagent/drug/aranesp = 3) - required_reagents = list(/datum/reagent/medicine/epinephrine = 1, /datum/reagent/medicine/atropine = 1, /datum/reagent/medicine/morphine = 1) + required_reagents = list(/datum/reagent/medicine/epinephrine = 1, /datum/reagent/medicine/atropine = 1, /datum/reagent/medicine/painkiller/morphine = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_TOXIN | REACTION_TAG_DAMAGING /datum/chemical_reaction/happiness diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 8edab30eee11..582f3cf11a5a 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -328,7 +328,7 @@ reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_ORGAN /datum/chemical_reaction/medicine/morphine - results = list(/datum/reagent/medicine/morphine = 2) + results = list(/datum/reagent/medicine/painkiller/morphine = 2) required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1) required_temp = 480 reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index 2bc8aa303138..4011a8142b9f 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -248,7 +248,7 @@ /datum/chemical_reaction/zombiepowder results = list(/datum/reagent/toxin/zombiepowder = 2) - required_reagents = list(/datum/reagent/toxin/carpotoxin = 5, /datum/reagent/medicine/morphine = 5, /datum/reagent/copper = 5) + required_reagents = list(/datum/reagent/toxin/carpotoxin = 5, /datum/reagent/medicine/painkiller/morphine = 5, /datum/reagent/copper = 5) mix_message = "The mixture turns into a strange green powder." is_cold_recipe = FALSE required_temp = 100 diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 0da5d92aa3c0..c9ef536d8ded 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -346,3 +346,9 @@ filling.color = mix_color_from_reagents(reagents.reagent_list) . += filling + +/obj/item/reagent_containers/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + after_attack_pour(user, target) + +/obj/item/reagent_containers/proc/after_attack_pour(mob/user, atom/target) diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm index 72ad62edda93..a51fa5bac242 100644 --- a/code/modules/reagents/reagent_containers/cups/_cup.dm +++ b/code/modules/reagents/reagent_containers/cups/_cup.dm @@ -89,6 +89,7 @@ checkLiked(fraction, target_mob) ////playsound(target_mob.loc,'sound/items/drink.ogg', rand(10,50), TRUE) // monkestation edit original playsound(target_mob.loc,get_drink_sound(target_mob), rand(10,50), TRUE) // monkestation edit: synthesized drink sounds + SEND_SIGNAL(target_mob.reagents, COMSIG_DRANK_REAGENT, reagents, gulp_size) if(!iscarbon(target_mob)) return var/mob/living/carbon/carbon_drinker = target_mob @@ -136,6 +137,7 @@ reagents.trans_to(chugger, gulp_size, transfered_by = chugger, methods = INGEST) checkLiked(fraction, chugger) playsound(chugger.loc,get_drink_sound(chugger), rand(10,50), TRUE) + SEND_SIGNAL(chugger.reagents, COMSIG_DRANK_REAGENT, reagents, gulp_size) if(!iscarbon(chugger)) continue var/mob/living/carbon/carbon_drinker = chugger diff --git a/code/modules/reagents/reagent_containers/cups/bottle.dm b/code/modules/reagents/reagent_containers/cups/bottle.dm index 9394124c9d2a..8aeb4118c8a6 100644 --- a/code/modules/reagents/reagent_containers/cups/bottle.dm +++ b/code/modules/reagents/reagent_containers/cups/bottle.dm @@ -41,7 +41,7 @@ name = "morphine bottle" desc = "A small bottle of morphine." icon = 'icons/obj/medical/chemical.dmi' - list_reagents = list(/datum/reagent/medicine/morphine = 30) + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 30) /obj/item/reagent_containers/cup/bottle/chloralhydrate name = "chloral hydrate bottle" diff --git a/code/modules/reagents/reagent_containers/cups/drinks.dm b/code/modules/reagents/reagent_containers/cups/drinks.dm index e96d1c2ba1fc..5cdab2b3812b 100644 --- a/code/modules/reagents/reagent_containers/cups/drinks.dm +++ b/code/modules/reagents/reagent_containers/cups/drinks.dm @@ -451,6 +451,7 @@ custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*2.5) volume = 60 isGlass = FALSE + slot_flags = ITEM_SLOT_BELT /obj/item/reagent_containers/cup/glass/flask/gold name = "captain's flask" diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index ea56463d1fba..c7f9cf6c65be 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -188,7 +188,7 @@ icon_state = "morphen" inhand_icon_state = "morphen" base_icon_state = "morphen" - list_reagents = list(/datum/reagent/medicine/morphine = 10) + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 10) /obj/item/reagent_containers/hypospray/medipen/oxandrolone name = "oxandrolone medipen" @@ -245,9 +245,9 @@ icon_state = "stimpen" inhand_icon_state = "stimpen" base_icon_state = "stimpen" - volume = 30 - amount_per_transfer_from_this = 30 - list_reagents = list( /datum/reagent/medicine/epinephrine = 8, /datum/reagent/medicine/c2/aiuri = 8, /datum/reagent/medicine/c2/libital = 8, /datum/reagent/medicine/leporazine = 6) + volume = 35 + amount_per_transfer_from_this = 35 + list_reagents = list( /datum/reagent/medicine/epinephrine = 8, /datum/reagent/medicine/c2/aiuri = 8, /datum/reagent/medicine/c2/libital = 8, /datum/reagent/medicine/leporazine = 6, /datum/reagent/medicine/painkiller/hydromorphone = 5) /obj/item/reagent_containers/hypospray/medipen/survival/inject(mob/living/affected_mob, mob/user) if(lavaland_equipment_pressure_check(get_turf(user))) @@ -272,9 +272,9 @@ icon_state = "luxpen" inhand_icon_state = "atropen" base_icon_state = "luxpen" - volume = 60 - amount_per_transfer_from_this = 60 - list_reagents = list(/datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/c2/penthrite = 10, /datum/reagent/medicine/oxandrolone = 10, /datum/reagent/medicine/sal_acid = 10 ,/datum/reagent/medicine/omnizine = 10 ,/datum/reagent/medicine/leporazine = 10) + volume = 70 + amount_per_transfer_from_this = 70 + list_reagents = list(/datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/c2/penthrite = 10, /datum/reagent/medicine/oxandrolone = 10, /datum/reagent/medicine/sal_acid = 10 ,/datum/reagent/medicine/omnizine = 10 ,/datum/reagent/medicine/leporazine = 10, /datum/reagent/medicine/painkiller/hydromorphone = 10) /obj/item/reagent_containers/hypospray/medipen/atropine name = "atropine autoinjector" diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 28d259d6cd8b..85f2baa58a4a 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -110,7 +110,7 @@ name = "morphine pill" desc = "Commonly used to treat insomnia." icon_state = "pill8" - list_reagents = list(/datum/reagent/medicine/morphine = 30) + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 30) rename_with_volume = TRUE /obj/item/reagent_containers/pill/stimulant diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index c9535ddff580..c4746b9cacfa 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -312,4 +312,4 @@ list_reagents = list(/datum/reagent/toxin/fentanyl = 15) /obj/item/reagent_containers/syringe/contraband/morphine - list_reagents = list(/datum/reagent/medicine/morphine = 15) + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 15) diff --git a/code/modules/religion/burdened/psyker.dm b/code/modules/religion/burdened/psyker.dm index b06e618e0775..e913584081cd 100644 --- a/code/modules/religion/burdened/psyker.dm +++ b/code/modules/religion/burdened/psyker.dm @@ -36,28 +36,16 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodypart_traits = list(TRAIT_DISFIGURED, TRAIT_BALD, TRAIT_SHAVED) + head_flags = HEAD_LIPS|HEAD_EYEHOLES|HEAD_DEBRAIN /obj/item/bodypart/head/psyker/try_attach_limb(mob/living/carbon/new_head_owner, special, abort) . = ..() if(!.) return new_head_owner.become_blind(limb_id) - if(!new_head_owner.dna?.species) - return - - new_head_owner.dna.species.species_traits |= NOEYESPRITES //MAKE VISUALS TIED TO BODYPARTS ARGHH - new_head_owner.update_body() -/obj/item/bodypart/head/psyker/drop_limb(special, dismembered) +/obj/item/bodypart/head/psyker/drop_limb(special, dismembered, violent) owner.cure_blind(limb_id) - if(!owner.dna?.species) - return ..() - - if(initial(owner.dna.species.species_traits) & NOEYESPRITES) - return ..() - - owner.dna.species.species_traits &= ~NOEYESPRITES - owner.update_body() return ..() /// flavorful variant of psykerizing that deals damage and sends messages before calling psykerize() diff --git a/code/modules/religion/sparring/sparring_datum.dm b/code/modules/religion/sparring/sparring_datum.dm index b64134f46597..037b35c26f2f 100644 --- a/code/modules/religion/sparring/sparring_datum.dm +++ b/code/modules/religion/sparring/sparring_datum.dm @@ -301,4 +301,4 @@ return to_chat(loser, span_userdanger("You've lost ownership over your soul to [winner]!")) var/obj/item/soulstone/anybody/chaplain/sparring/shard = new(shard_turf) - shard.capture_soul(loser, winner, forced = TRUE) + INVOKE_ASYNC(shard, TYPE_PROC_REF(/obj/item/soulstone, capture_soul), loser, winner, forced = TRUE) diff --git a/code/modules/requests/request_manager.dm b/code/modules/requests/request_manager.dm index bb8d73f3bdba..eb16a38fc3bc 100644 --- a/code/modules/requests/request_manager.dm +++ b/code/modules/requests/request_manager.dm @@ -25,7 +25,7 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new) /// List where requests can be accessed by ID var/list/requests_by_id = list() -/datum/request_manager/Destroy(force, ...) +/datum/request_manager/Destroy(force) QDEL_LIST(requests) return ..() diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index b92908f21373..29e1fa3e0d7d 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -472,6 +472,16 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE +/datum/design/board/dnainfuser + name = "DNA Infuser Board" + desc = "The circuit board for a DNA Infuser." + id = "dnainfuser" + build_path = /obj/item/circuitboard/machine/dna_infuser + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_GENETICS + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + /datum/design/board/scan_console name = "DNA Console Board" desc = "Allows for the construction of circuit boards used to build a new DNA console." diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 0718f2fca4b5..423afdaeb938 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -15,6 +15,11 @@ "basic_micro_laser", "basic_scanning", "blast", + "big_manipulator", + "assembler", + "manipulator_filter", + "manipulator_filter_cargo", + "manipulator_filter_internal", "bodybag", "bounced_radio", "bowl", @@ -63,6 +68,8 @@ "infrared_emitter", "intercom_frame", "kitchen_knife", + "recipe_card", + "bottling_kit", "laptop", "light_bulb", "light_replacer", @@ -452,6 +459,7 @@ "plasmarefiller", "smoke_machine", "sleeper", + "surgical_gloves", //Monkestation Edit ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) discount_experiments = list(/datum/experiment/scanning/random/material/meat = 2000, @@ -677,11 +685,24 @@ design_ids = list( "anomaly_neutralizer", "reactive_armour", + //"artifact_heater", //MONKESTATION EDIT REMOVAL + //"artifact_xray", //MONKESTATION EDIT REMOVAL + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) +//MONKEYSTATION ADDITION START +/datum/techweb_node/artifact + id = "artifact_research" + display_name = "Artifact Research" + description = "Properly concuct research on the various artifacts found around." + prereq_ids = list("base") + design_ids = list( "artifact_heater", "artifact_xray", + "disk_artifact", + "artifact_wand" ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) - + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) +//MONKESTATION ADDITION END /datum/techweb_node/high_efficiency id = "high_efficiency" display_name = "High Efficiency Parts" @@ -1286,6 +1307,7 @@ prereq_ids = list("biotech") design_ids = list( "dna_disk", + "dnainfuser", "dnascanner", "scan_console", ) @@ -1428,6 +1450,9 @@ "borg_upgrade_damagemod", "borg_upgrade_rangemod", "cargoexpress", + "b_smelter", + "b_refinery", + "brm", "cooldownmod", "damagemod", "drill", @@ -1491,6 +1516,7 @@ "seed_extractor", "adv_watering_can", "plantgenes", + "composters", // monkestation edit: build composters ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 4000) discount_experiments = list(/datum/experiment/scanning/random/plants/traits = 2000, diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index 7c2bbe1f3ca2..6c91d1a863d6 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -1012,7 +1012,7 @@ /datum/status_effect/stabilized/lightpink/on_apply() owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/lightpink) - ADD_TRAIT(owner, TRAIT_PACIFISM, STABILIZED_LIGHT_PINK_TRAIT) + ADD_TRAIT(owner, TRAIT_PACIFISM, STABILIZED_LIGHT_PINK_EXTRACT_TRAIT) return ..() /datum/status_effect/stabilized/lightpink/tick() @@ -1024,7 +1024,7 @@ /datum/status_effect/stabilized/lightpink/on_remove() owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/lightpink) - REMOVE_TRAIT(owner, TRAIT_PACIFISM, STABILIZED_LIGHT_PINK_TRAIT) + REMOVE_TRAIT(owner, TRAIT_PACIFISM, STABILIZED_LIGHT_PINK_EXTRACT_TRAIT) /datum/status_effect/stabilized/adamantine id = "stabilizedadamantine" diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index e29856e5b326..4ccc9567271a 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -188,12 +188,13 @@ Burning extracts: effect_desc = "Shatters all lights in the current room." /obj/item/slimecross/burning/pyrite/do_effect(mob/user) + var/area/user_area = get_area(user) + if(isnull(user_area.apc)) + user.visible_message(span_danger("[src] releases a colorful wave of energy, but nothing seems to happen.")) + return + + user_area.apc.break_lights() user.visible_message(span_danger("[src] releases a colorful wave of energy, which shatters the lights!")) - var/area/A = get_area(user.loc) - for(var/obj/machinery/light/L in A) //Shamelessly copied from the APC effect. - L.on = TRUE - L.break_light_tube() - stoplag() ..() /obj/item/slimecross/burning/red diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm index 9c37d0df7b87..14a132ce17e0 100644 --- a/code/modules/research/xenobiology/crossbreeding/chilling.dm +++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm @@ -53,13 +53,15 @@ Chilling extracts: effect_desc = "Injects everyone in the area with some regenerative jelly." /obj/item/slimecross/chilling/purple/do_effect(mob/user) - var/area/A = get_area(get_turf(user)) - if(A.outdoors) + var/area/user_area = get_area(user) + if(user_area.outdoors) to_chat(user, span_warning("[src] can't affect such a large area.")) return user.visible_message(span_notice("[src] shatters, and a healing aura fills the room briefly.")) - for(var/mob/living/carbon/C in A) - C.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10) + for (var/list/zlevel_turfs as anything in user_area.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + for(var/mob/living/carbon/nearby in area_turf) + nearby.reagents?.add_reagent(/datum/reagent/medicine/regen_jelly,10) ..() /obj/item/slimecross/chilling/blue @@ -87,11 +89,14 @@ Chilling extracts: effect_desc = "Recharges the room's APC by 50%." /obj/item/slimecross/chilling/yellow/do_effect(mob/user) - var/area/A = get_area(get_turf(user)) - user.visible_message(span_notice("[src] shatters, and a the air suddenly feels charged for a moment.")) - for(var/obj/machinery/power/apc/C in A) - if(C.cell) - C.cell.charge = min(C.cell.charge + C.cell.maxcharge/2, C.cell.maxcharge) + var/area/user_area = get_area(user) + if(isnull(user_area.apc?.cell)) + user.visible_message(span_notice("[src] shatters, yet the air around you feels normal.")) + return + + var/obj/machinery/power/apc/area_apc = user_area.apc + area_apc.cell.charge = min(area_apc.cell.charge + area_apc.cell.maxcharge / 2, area_apc.cell.maxcharge) + user.visible_message(span_notice("[src] shatters, and the air suddenly feels charged for a moment.")) ..() /obj/item/slimecross/chilling/darkpurple @@ -104,7 +109,7 @@ Chilling extracts: to_chat(user, span_warning("[src] can't affect such a large area.")) return var/filtered = FALSE - for(var/turf/open/T in A) + for(var/turf/open/T in A.get_turfs_from_all_zlevels()) var/datum/gas_mixture/G = T.air if(istype(G)) G.assert_gas(/datum/gas/plasma) @@ -339,6 +344,8 @@ Chilling extracts: to_chat(user, span_warning("[src] can't affect such a large area.")) return user.visible_message(span_warning("[src] reflects an array of dazzling colors and light, energy rushing to nearby doors!")) - for(var/obj/machinery/door/airlock/door in area) - new /obj/effect/forcefield/slimewall/rainbow(door.loc) + for (var/list/zlevel_turfs as anything in area.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + for(var/obj/machinery/door/airlock/door in area_turf) + new /obj/effect/forcefield/slimewall/rainbow(door.loc) return ..() diff --git a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm b/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm index f22e6109fb35..97ce1219d682 100644 --- a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm +++ b/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm @@ -158,7 +158,7 @@ supplementary_reagents = list( /datum/reagent/consumable/honey = 8, //Hunny. /datum/reagent/growthserum = 5, - /datum/reagent/medicine/morphine = 4, //morphine is a vital nutrient for space bears, but it is better as a supplemental for gameplay reasons. + /datum/reagent/medicine/painkiller/morphine = 4, //morphine is a vital nutrient for space bears, but it is better as a supplemental for gameplay reasons. /datum/reagent/consumable/nutriment/vitamin = 3) suppressive_reagents = list( @@ -245,7 +245,7 @@ suppressive_reagents = list( /datum/reagent/consumable/frostoil = -4, /datum/reagent/cryostylane = -4, - /datum/reagent/medicine/morphine = -2, + /datum/reagent/medicine/painkiller/morphine = -2, /datum/reagent/consumable/ice = -2) //Brrr! virus_suspectibility = 0 diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 7b953117f4a3..edc0b1313653 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -673,11 +673,10 @@ desc = "A miraculous chemical mix that grants human like intelligence to living beings." icon = 'icons/obj/medical/chemical.dmi' icon_state = "potpink" - var/list/not_interested = list() var/being_used = FALSE var/sentience_type = SENTIENCE_ORGANIC -/obj/item/slimepotion/slime/sentience/attack(mob/living/dumb_mob, mob/user) +/obj/item/slimepotion/slime/sentience/attack(mob/living/dumb_mob, mob/living/user) if(being_used || !isliving(dumb_mob)) return if(dumb_mob.ckey) //only works on animals that aren't player controlled @@ -689,31 +688,38 @@ if(!dumb_mob.compare_sentience_type(sentience_type)) // Will also return false if not a basic or simple mob, which are the only two we want anyway balloon_alert(user, "invalid creature!") return - + var/potion_reason = tgui_input_text(user, "For what reason?", "Intelligence Potion", multiline = TRUE, timeout = 2 MINUTES) + if(isnull(potion_reason)) + return balloon_alert(user, "offering...") being_used = TRUE - - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob( - "Do you want to play as [dumb_mob.name]", - role = ROLE_SENTIENCE, - poll_time = 5 SECONDS, - target_mob = dumb_mob, + var/mob/chosen_one = SSpolling.poll_ghosts_for_target( + question = "[span_danger("[user.real_name || user.name]")] is offering [span_notice("[dumb_mob.real_name || dumb_mob.name]")] an intelligence potion! Reason: [span_boldnotice(potion_reason)]", + check_jobban = ROLE_SENTIENCE, + poll_time = 20 SECONDS, + checked_target = dumb_mob, ignore_category = POLL_IGNORE_SENTIENCE_POTION, - pic_source = dumb_mob, - role_name_text = "sentient mob" + alert_pic = dumb_mob, + role_name_text = "intelligence potion", + chat_text_border_icon = src, ) - if(!LAZYLEN(candidates)) + on_poll_concluded(user, dumb_mob, chosen_one) + +/// Assign the chosen ghost to the mob +/obj/item/slimepotion/slime/sentience/proc/on_poll_concluded(mob/user, mob/living/dumb_mob, mob/dead/observer/ghost) + if(isnull(ghost)) balloon_alert(user, "try again later!") being_used = FALSE - return ..() + return - var/mob/dead/observer/C = pick(candidates) - dumb_mob.key = C.key + dumb_mob.key = ghost.key dumb_mob.mind.enslave_mind_to_creator(user) SEND_SIGNAL(dumb_mob, COMSIG_SIMPLEMOB_SENTIENCEPOTION, user) + if(isanimal(dumb_mob)) var/mob/living/simple_animal/smart_animal = dumb_mob smart_animal.sentience_act() + dumb_mob.mind.add_antag_datum(/datum/antagonist/sentient_creature) balloon_alert(user, "success") after_success(user, dumb_mob) @@ -1048,9 +1054,10 @@ /obj/item/areaeditor/blueprints/slime/edit_area() ..() - var/area/A = get_area(src) - for(var/turf/T in A) - T.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - T.add_atom_colour("#2956B2", FIXED_COLOUR_PRIORITY) - A.area_flags |= XENOBIOLOGY_COMPATIBLE + var/area/area = get_area(src) + for (var/list/zlevel_turfs as anything in area.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + area_turf.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) + area_turf.add_atom_colour("#2956B2", FIXED_COLOUR_PRIORITY) + area.area_flags |= XENOBIOLOGY_COMPATIBLE qdel(src) diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm index 6d744e5f03d4..f1b33370aa6a 100644 --- a/code/modules/security_levels/keycard_authentication.dm +++ b/code/modules/security_levels/keycard_authentication.dm @@ -167,21 +167,25 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/keycard_auth, 26) GLOBAL_VAR_INIT(emergency_access, FALSE) /proc/make_maint_all_access() - for(var/area/station/maintenance/A in GLOB.areas) - for(var/turf/in_area as anything in A.get_contained_turfs()) - for(var/obj/machinery/door/airlock/D in in_area) - D.emergency = TRUE - D.update_icon(ALL, 0) + for(var/area/station/maintenance/area in GLOB.areas) + for (var/list/zlevel_turfs as anything in area.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + for(var/obj/machinery/door/airlock/airlock in area_turf) + airlock.emergency = TRUE + airlock.update_icon(ALL, 0) + minor_announce("Access restrictions on maintenance and external airlocks have been lifted.", "Attention! Station-wide emergency declared!",1) GLOB.emergency_access = TRUE SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency maintenance access", "enabled")) /proc/revoke_maint_all_access() - for(var/area/station/maintenance/A in GLOB.areas) - for(var/turf/in_area as anything in A.get_contained_turfs()) - for(var/obj/machinery/door/airlock/D in in_area) - D.emergency = FALSE - D.update_icon(ALL, 0) + for(var/area/station/maintenance/area in GLOB.areas) + for (var/list/zlevel_turfs as anything in area.get_zlevel_turf_lists()) + for(var/turf/area_turf as anything in zlevel_turfs) + for(var/obj/machinery/door/airlock/airlock in area_turf) + airlock.emergency = FALSE + airlock.update_icon(ALL, 0) + minor_announce("Access restrictions in maintenance areas have been restored.", "Attention! Station-wide emergency rescinded:") GLOB.emergency_access = FALSE SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency maintenance access", "disabled")) diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index 0ddf272081b6..bd50a6b68958 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -34,12 +34,14 @@ areas = list() var/list/new_latejoin = list() - for(var/area/shuttle/arrival/A in GLOB.areas) - for(var/obj/structure/chair/C in A) - new_latejoin += C - if(!console) - console = locate(/obj/machinery/requests_console) in A - areas += A + for(var/area/shuttle/arrival/arrival_area in GLOB.areas) + for (var/list/zlevel_turfs as anything in arrival_area.get_zlevel_turf_lists()) + for(var/turf/arrival_turf as anything in zlevel_turfs) + for(var/obj/structure/chair/shuttle_chair in arrival_turf) + new_latejoin += shuttle_chair + if(isnull(console)) + console = locate() in arrival_turf + areas += arrival_area if(SSjob.latejoin_trackers.len) log_mapping("Map contains predefined latejoin spawn points and an arrivals shuttle. Using the arrivals shuttle.") diff --git a/code/modules/shuttle/battlecruiser_starfury.dm b/code/modules/shuttle/battlecruiser_starfury.dm index 6ce6ff4581e2..6331627f9a2f 100644 --- a/code/modules/shuttle/battlecruiser_starfury.dm +++ b/code/modules/shuttle/battlecruiser_starfury.dm @@ -135,7 +135,7 @@ */ /proc/summon_battlecruiser(datum/team/battlecruiser/team) - var/list/candidates = SSpolling.poll_ghost_candidates("Do you wish to be considered for battlecruiser crew?", check_jobban = ROLE_TRAITOR, pic_source = /obj/machinery/sleeper/syndie, role_name_text = "battlecruiser crew") + var/list/candidates = SSpolling.poll_ghost_candidates("Do you wish to be considered for battlecruiser crew?", check_jobban = ROLE_TRAITOR, alert_pic = /obj/machinery/sleeper/syndie, role_name_text = "battlecruiser crew") shuffle_inplace(candidates) var/datum/map_template/ship = SSmapping.map_templates["battlecruiser_starfury.dmm"] diff --git a/code/modules/shuttle/docking.dm b/code/modules/shuttle/docking.dm index a11ede8578f5..04553ccd4f7d 100644 --- a/code/modules/shuttle/docking.dm +++ b/code/modules/shuttle/docking.dm @@ -133,6 +133,7 @@ old_turfs[oldT] = move_mode /obj/docking_port/mobile/proc/takeoff(list/old_turfs, list/new_turfs, list/moved_atoms, rotation, movement_direction, old_dock, area/underlying_old_area) + var/list/atoms_to_mark = list() // monkestation edit: replays for(var/i in 1 to old_turfs.len) var/turf/oldT = old_turfs[i] var/turf/newT = new_turfs[i] @@ -152,6 +153,8 @@ continue moving_atom.onShuttleMove(newT, oldT, movement_force, movement_direction, old_dock, src) //atoms moved_atoms[moving_atom] = oldT + atoms_to_mark += moving_atom + SSdemo.mark_multiple_dirty(atoms_to_mark) // monkestation edit: replays /obj/docking_port/mobile/proc/cleanup_runway(obj/docking_port/stationary/new_dock, list/old_turfs, list/new_turfs, list/areas_to_move, list/moved_atoms, rotation, movement_direction, area/underlying_old_area) diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 2a3ec71d926a..c93bd1bfa152 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -98,19 +98,19 @@ var/mob/camera/ai_eye/remote/shuttle_docker/the_eye = eyeobj the_eye.setDir(shuttle_port.dir) var/turf/origin = locate(shuttle_port.x + x_offset, shuttle_port.y + y_offset, shuttle_port.z) - for(var/V in shuttle_port.shuttle_areas) - var/area/A = V - for(var/turf/T in A) - if(T.z != origin.z) - continue - var/image/I = image('icons/effects/alphacolors.dmi', origin, "red") - var/x_off = T.x - origin.x - var/y_off = T.y - origin.y - I.loc = locate(origin.x + x_off, origin.y + y_off, origin.z) //we have to set this after creating the image because it might be null, and images created in nullspace are immutable. - I.layer = ABOVE_NORMAL_TURF_LAYER - SET_PLANE(I, ABOVE_GAME_PLANE, T) - I.mouse_opacity = MOUSE_OPACITY_TRANSPARENT - the_eye.placement_images[I] = list(x_off, y_off) + for(var/area/shuttle_area as anything in shuttle_port.shuttle_areas) + for (var/list/zlevel_turfs as anything in shuttle_area.get_zlevel_turf_lists()) + for(var/turf/shuttle_turf as anything in zlevel_turfs) + if(shuttle_turf.z != origin.z) + continue + var/image/I = image('icons/effects/alphacolors.dmi', origin, "red") + var/x_off = shuttle_turf.x - origin.x + var/y_off = shuttle_turf.y - origin.y + I.loc = locate(origin.x + x_off, origin.y + y_off, origin.z) //we have to set this after creating the image because it might be null, and images created in nullspace are immutable. + I.layer = ABOVE_NORMAL_TURF_LAYER + SET_PLANE(I, ABOVE_GAME_PLANE, shuttle_turf) + I.mouse_opacity = MOUSE_OPACITY_TRANSPARENT + the_eye.placement_images[I] = list(x_off, y_off) /obj/machinery/computer/camera_advanced/shuttle_docker/give_eye_control(mob/user) ..() diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index a02524e06447..f13ed1b94765 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -112,8 +112,6 @@ All ShuttleMove procs go here abstract_move(newT) - SSdemo.mark_dirty(src) //Monkestation Edit: Replays - return TRUE // Called on atoms after everything has been moved diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index fdf008c26344..6a221f47d4ba 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -334,7 +334,7 @@ . = ..() SSshuttle.transit_docking_ports += src -/obj/docking_port/stationary/transit/Destroy(force=FALSE) +/obj/docking_port/stationary/transit/Destroy(force = FALSE) if(force) if(get_docked()) log_world("A transit dock was destroyed while something was docked to it.") @@ -513,13 +513,14 @@ var/min_y = -1 var/max_x = WORLDMAXX_CUTOFF var/max_y = WORLDMAXY_CUTOFF - for(var/area/area as anything in shuttle_areas) - for(var/turf/turf in area) - min_x = max(turf.x, min_x) - max_x = min(turf.x, max_x) - min_y = max(turf.y, min_y) - max_y = min(turf.y, max_y) - CHECK_TICK + for(var/area/shuttle_area as anything in shuttle_areas) + for (var/list/zlevel_turfs as anything in shuttle_area.get_zlevel_turf_lists()) + for(var/turf/turf as anything in zlevel_turfs) + min_x = max(turf.x, min_x) + max_x = min(turf.x, max_x) + min_y = max(turf.y, min_y) + max_y = min(turf.y, max_y) + CHECK_TICK if(min_x == -1 || max_x == WORLDMAXX_CUTOFF) CRASH("Failed to locate shuttle boundaries when iterating through shuttle areas, somehow.") diff --git a/code/modules/shuttle/shuttle_events/player_controlled.dm b/code/modules/shuttle/shuttle_events/player_controlled.dm index fb4d6f6945c5..833a5e222fba 100644 --- a/code/modules/shuttle/shuttle_events/player_controlled.dm +++ b/code/modules/shuttle/shuttle_events/player_controlled.dm @@ -21,7 +21,7 @@ ghost_alert_string + " (Warning: you will not be able to return to your body!)", check_jobban = role_type, poll_time = 10 SECONDS, - pic_source = spawn_type, + alert_pic = spawn_type, role_name_text = "shot at shuttle" ) var/mob/dead/observer/candidate = length(candidates) ? pick(candidates) : null diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index fec0b78074f9..ae4dd19fc820 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -90,17 +90,14 @@ . = ..() /obj/structure/table/abductor/wabbajack/process() - var/area = orange(4, src) - if(!our_statue) - for(var/obj/machinery/power/emitter/energycannon/magical/M in area) - our_statue = M - break + if(isnull(our_statue)) + our_statue = locate() in orange(4, src) - if(!our_statue) + if(isnull(our_statue)) name = "inert [initial(name)]" return - else - name = initial(name) + + name = initial(name) var/turf/T = get_turf(src) var/list/found = list() diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 90b64bf26a1c..cb5e3cfc2b46 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -63,12 +63,12 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( return ..() /obj/docking_port/mobile/supply/proc/check_blacklist(areaInstances) - for(var/place in areaInstances) - var/area/shuttle/shuttle_area = place - for(var/turf/shuttle_turf in shuttle_area) - for(var/atom/passenger in shuttle_turf.get_all_contents()) - if((is_type_in_typecache(passenger, GLOB.blacklisted_cargo_types) || HAS_TRAIT(passenger, TRAIT_BANNED_FROM_CARGO_SHUTTLE)) && !istype(passenger, /obj/docking_port)) - return FALSE + for(var/area/shuttle_area as anything in areaInstances) + for (var/list/zlevel_turfs as anything in shuttle_area.get_zlevel_turf_lists()) + for(var/turf/shuttle_turf as anything in zlevel_turfs) + for(var/atom/passenger in shuttle_turf.get_all_contents()) + if((is_type_in_typecache(passenger, GLOB.blacklisted_cargo_types) || HAS_TRAIT(passenger, TRAIT_BANNED_FROM_CARGO_SHUTTLE)) && !istype(passenger, /obj/docking_port)) + return FALSE return TRUE /obj/docking_port/mobile/supply/request(obj/docking_port/stationary/S) @@ -95,10 +95,10 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( var/list/empty_turfs = list() for(var/area/shuttle/shuttle_area as anything in shuttle_areas) - for(var/turf/open/floor/T in shuttle_area) - if(T.is_blocked_turf()) + for(var/turf/open/floor/shuttle_turf in shuttle_area.get_turfs_from_all_zlevels()) + if(shuttle_turf.is_blocked_turf()) continue - empty_turfs += T + empty_turfs += shuttle_turf //quickly and greedily handle chef's grocery runs first, there are a few reasons why this isn't attached to the rest of cargo... //but the biggest reason is that the chef requires produce to cook and do their job, and if they are using this system they @@ -226,12 +226,14 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( var/datum/export_report/ex = new for(var/area/shuttle/shuttle_area as anything in shuttle_areas) - for(var/atom/movable/AM in shuttle_area) - if(iscameramob(AM)) - continue - if(AM.anchored) - continue - export_item_and_contents(AM, export_categories, dry_run = FALSE, external_report = ex) + for (var/list/zlevel_turfs as anything in shuttle_area.get_zlevel_turf_lists()) + for(var/turf/shuttle_turf as anything in zlevel_turfs) + for(var/atom/movable/exporting_atom in shuttle_turf) + if(iscameramob(exporting_atom)) + continue + if(exporting_atom.anchored) + continue + export_item_and_contents(exporting_atom, export_categories, dry_run = FALSE, external_report = ex) if(ex.exported_atoms) ex.exported_atoms += "." //ugh @@ -260,9 +262,8 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( //spawn crate var/list/empty_turfs = list() - for(var/place as anything in shuttle_areas) - var/area/shuttle/shuttle_area = place - for(var/turf/open/floor/shuttle_floor in shuttle_area) + for(var/area/shuttle/shuttle_area as anything in shuttle_areas) + for(var/turf/open/floor/shuttle_floor in shuttle_area.get_turfs_from_all_zlevels()) if(shuttle_floor.is_blocked_turf()) continue empty_turfs += shuttle_floor diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 43838df140bd..7b05e2f6b56f 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -141,7 +141,9 @@ /datum/action/cooldown/spell/PreActivate(atom/target) if(SEND_SIGNAL(owner, COMSIG_MOB_ABILITY_STARTED, src) & COMPONENT_BLOCK_ABILITY_START) return FALSE - if(!is_valid_target(target)) + if(target == owner) + target = get_caster_from_target(target) + if(isnull(target) || !is_valid_target(target)) return FALSE return Activate(target) @@ -213,10 +215,6 @@ to_chat(owner, span_warning("[src] can't be cast in this state!")) return FALSE - // Being put into a card form breaks a lot of spells, so we'll just forbid them in these states - if(ispAI(owner) || (isAI(owner) && istype(owner.loc, /obj/item/aicard))) - return FALSE - return TRUE /** @@ -229,6 +227,28 @@ /datum/action/cooldown/spell/proc/is_valid_target(atom/cast_on) return TRUE +/** + * Used to get the cast_on atom if a self cast spell is being cast. + * + * Allows for some atoms to be used as casting sources if a spell caster is located within. + */ +/datum/action/cooldown/spell/proc/get_caster_from_target(atom/target) + var/atom/cast_loc = target.loc + if(isnull(cast_loc)) + return null // No magic in nullspace + + if(isturf(cast_loc)) + return target // They're just standing around, proceed as normal + + if(HAS_TRAIT(cast_loc, TRAIT_CASTABLE_LOC)) + /*if(HAS_TRAIT(cast_loc, TRAIT_SPELLS_TRANSFER_TO_LOC) && ismob(cast_loc.loc)) + return cast_loc.loc + else*/ //monkestation temp removal + return cast_loc + // They're in an atom which allows casting, so redirect the caster to loc + + return null + // The actual cast chain occurs here, in Activate(). // You should generally not be overriding or extending Activate() for spells. // Defer to any of the cast chain procs instead. diff --git a/code/modules/spells/spell_types/aoe_spell/_aoe_spell.dm b/code/modules/spells/spell_types/aoe_spell/_aoe_spell.dm index 4d16ae379714..92442bd0e40a 100644 --- a/code/modules/spells/spell_types/aoe_spell/_aoe_spell.dm +++ b/code/modules/spells/spell_types/aoe_spell/_aoe_spell.dm @@ -12,6 +12,9 @@ /// The radius of the aoe. var/aoe_radius = 7 +/datum/action/cooldown/spell/aoe/is_valid_target(atom/cast_on) + return isturf(cast_on.loc) + // At this point, cast_on == owner. Either works. // Don't extend this for your spell! Look at cast_on_thing_in_aoe. /datum/action/cooldown/spell/aoe/cast(atom/cast_on) diff --git a/code/modules/spells/spell_types/aoe_spell/area_conversion.dm b/code/modules/spells/spell_types/aoe_spell/area_conversion.dm index f75c39586852..a03b4c9ab21a 100644 --- a/code/modules/spells/spell_types/aoe_spell/area_conversion.dm +++ b/code/modules/spells/spell_types/aoe_spell/area_conversion.dm @@ -16,11 +16,7 @@ aoe_radius = 2 /datum/action/cooldown/spell/aoe/area_conversion/get_things_to_cast_on(atom/center) - var/list/things = list() - for(var/turf/nearby_turf in range(aoe_radius, center)) - things += nearby_turf - - return things + return RANGE_TURFS(aoe_radius, center) /datum/action/cooldown/spell/aoe/area_conversion/cast_on_thing_in_aoe(turf/victim, atom/caster) playsound(victim, 'sound/items/welder.ogg', 75, TRUE) diff --git a/code/modules/spells/spell_types/aoe_spell/knock.dm b/code/modules/spells/spell_types/aoe_spell/knock.dm index fd9e4503de8f..ede1462633b0 100644 --- a/code/modules/spells/spell_types/aoe_spell/knock.dm +++ b/code/modules/spells/spell_types/aoe_spell/knock.dm @@ -13,6 +13,23 @@ spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC aoe_radius = 3 +/datum/action/cooldown/spell/aoe/knock/get_caster_from_target(atom/target) + if(istype(target.loc, /obj/structure/closet)) + return target + + return ..() + +/datum/action/cooldown/spell/aoe/knock/is_valid_target(atom/cast_on) + return ..() || istype(cast_on.loc, /obj/structure/closet) + +/datum/action/cooldown/spell/aoe/knock/cast(atom/cast_on) + if(istype(cast_on.loc, /obj/structure/closet)) + var/obj/structure/closet/open_closet = cast_on.loc + open_closet.locked = FALSE + open_closet.open() + + return ..() + /datum/action/cooldown/spell/aoe/knock/get_things_to_cast_on(atom/center) return RANGE_TURFS(aoe_radius, center) diff --git a/code/modules/spells/spell_types/aoe_spell/repulse.dm b/code/modules/spells/spell_types/aoe_spell/repulse.dm index d0074a9f3866..259f20ee9ba0 100644 --- a/code/modules/spells/spell_types/aoe_spell/repulse.dm +++ b/code/modules/spells/spell_types/aoe_spell/repulse.dm @@ -6,6 +6,23 @@ /// The moveforce of the throw done by the repulsion. var/repulse_force = MOVE_FORCE_EXTREMELY_STRONG +/datum/action/cooldown/spell/aoe/repulse/get_caster_from_target(atom/target) + if(istype(target.loc, /obj/structure/closet)) + return target + + return ..() + +/datum/action/cooldown/spell/aoe/repulse/is_valid_target(atom/cast_on) + return ..() || istype(cast_on.loc, /obj/structure/closet) + +/datum/action/cooldown/spell/aoe/repulse/cast(atom/cast_on) + if(istype(cast_on.loc, /obj/structure/closet)) + var/obj/structure/closet/open_closet = cast_on.loc + open_closet.open(force = TRUE) + open_closet.visible_message(span_warning("[open_closet] suddenly flies open!")) + + return ..() + /datum/action/cooldown/spell/aoe/repulse/get_things_to_cast_on(atom/center) var/list/things = list() for(var/atom/movable/nearby_movable in view(aoe_radius, center)) @@ -44,7 +61,13 @@ to_chat(victim, span_userdanger("You're thrown back by [caster]!")) // So stuff gets tossed around at the same time. - victim.safe_throw_at(throwtarget, ((clamp((max_throw - (clamp(dist_from_caster - 2, 0, dist_from_caster))), 3, max_throw))), 1, caster, force = repulse_force) + victim.safe_throw_at( + target = throwtarget, + range = clamp((max_throw - (clamp(dist_from_caster - 2, 0, dist_from_caster))), 3, max_throw), + speed = 1, + thrower = ismob(caster) ? caster : null, + force = repulse_force, + ) /datum/action/cooldown/spell/aoe/repulse/wizard name = "Repulse" diff --git a/code/modules/spells/spell_types/conjure/_conjure.dm b/code/modules/spells/spell_types/conjure/_conjure.dm index ffab08871118..3afe7c525575 100644 --- a/code/modules/spells/spell_types/conjure/_conjure.dm +++ b/code/modules/spells/spell_types/conjure/_conjure.dm @@ -16,6 +16,9 @@ /// If TRUE, no two summons can be spawned in the same turf. var/summon_respects_prev_spawn_points = TRUE +/datum/action/cooldown/spell/conjure/is_valid_target(atom/cast_on) + return isturf(cast_on.loc) + /datum/action/cooldown/spell/conjure/cast(atom/cast_on) . = ..() var/list/to_summon_in = list() diff --git a/code/modules/spells/spell_types/conjure_item/_conjure_item.dm b/code/modules/spells/spell_types/conjure_item/_conjure_item.dm index 45b4ff1a11bb..181fd118871e 100644 --- a/code/modules/spells/spell_types/conjure_item/_conjure_item.dm +++ b/code/modules/spells/spell_types/conjure_item/_conjure_item.dm @@ -8,6 +8,10 @@ var/delete_old = TRUE /// List of weakrefs to items summoned var/list/datum/weakref/item_refs + /// If TRUE, deletes the item if no mob picks it up on cast + var/delete_on_failure = TRUE + /// If TRUE, requires the caster be able to pick it up afterwards + var/requires_hands = FALSE /datum/action/cooldown/spell/conjure_item/Destroy() // If we delete_old, clean up all of our items on delete @@ -20,29 +24,56 @@ return ..() +/datum/action/cooldown/spell/conjure_item/can_cast_spell(feedback) + . = ..() + if(!.) + return FALSE + + if(!requires_hands) + return TRUE + + if(!isliving(owner)) + return FALSE + + var/mob/living/living_owner = owner + if(living_owner.usable_hands < 1) + if(feedback) + owner.balloon_alert(owner, "no free hands!") + return FALSE + + return TRUE + /datum/action/cooldown/spell/conjure_item/is_valid_target(atom/cast_on) - return iscarbon(cast_on) + if(!requires_hands) + return TRUE + if(!isliving(cast_on)) + return FALSE + var/mob/living/living_cast_on = cast_on + return living_cast_on.usable_hands >= 1 -/datum/action/cooldown/spell/conjure_item/cast(mob/living/carbon/cast_on) +/datum/action/cooldown/spell/conjure_item/cast(atom/cast_on) if(delete_old && LAZYLEN(item_refs)) QDEL_LAZYLIST(item_refs) - var/obj/item/existing_item = cast_on.get_active_held_item() - if(existing_item) - cast_on.dropItemToGround(existing_item) + var/mob/mob_caster = cast_on + if(istype(mob_caster)) + var/obj/item/existing_item = mob_caster.get_active_held_item() + if(existing_item) + mob_caster.dropItemToGround(existing_item) - var/obj/item/created = make_item() + var/obj/item/created = make_item(cast_on) if(QDELETED(created)) CRASH("[type] tried to create an item, but failed. It's item type is [item_type].") - cast_on.put_in_hands(created, del_on_fail = TRUE) + if(istype(mob_caster)) + mob_caster.put_in_hands(created, del_on_fail = delete_on_failure) post_created(cast_on, created) //monkestation edit: im just gonna call this here return ..() /// Instantiates the item we're conjuring and returns it. -/// Item is made in nullspace and moved out in cast(). -/datum/action/cooldown/spell/conjure_item/proc/make_item() - var/obj/item/made_item = new item_type() +/// Item is made in at the caster's. +/datum/action/cooldown/spell/conjure_item/proc/make_item(atom/caster) + var/obj/item/made_item = new item_type(caster.loc) LAZYADD(item_refs, WEAKREF(made_item)) return made_item diff --git a/code/modules/spells/spell_types/conjure_item/infinite_guns.dm b/code/modules/spells/spell_types/conjure_item/infinite_guns.dm index 98921da4879d..35d83a9987f6 100644 --- a/code/modules/spells/spell_types/conjure_item/infinite_guns.dm +++ b/code/modules/spells/spell_types/conjure_item/infinite_guns.dm @@ -8,6 +8,7 @@ item_type = /obj/item/gun/ballistic/rifle // Enchanted guns self delete / do wacky stuff, anyways delete_old = FALSE + requires_hands = TRUE /datum/action/cooldown/spell/conjure_item/infinite_guns/Remove(mob/living/remove_from) var/obj/item/existing = remove_from.is_holding_item_of_type(item_type) @@ -18,8 +19,8 @@ // Because enchanted guns self-delete and regenerate themselves, // override make_item here and let's not bother with tracking their weakrefs. -/datum/action/cooldown/spell/conjure_item/infinite_guns/make_item() - return new item_type() +/datum/action/cooldown/spell/conjure_item/infinite_guns/make_item(atom/caster) + return new item_type(caster.loc) /datum/action/cooldown/spell/conjure_item/infinite_guns/gun name = "Lesser Summon Guns" diff --git a/code/modules/spells/spell_types/conjure_item/invisible_box.dm b/code/modules/spells/spell_types/conjure_item/invisible_box.dm index af6d5586af25..42da02121d3c 100644 --- a/code/modules/spells/spell_types/conjure_item/invisible_box.dm +++ b/code/modules/spells/spell_types/conjure_item/invisible_box.dm @@ -30,7 +30,7 @@ . = ..() invocation = span_notice("[cast_on] moves [cast_on.p_their()] hands in the shape of a cube, pressing a box out of the air.") -/datum/action/cooldown/spell/conjure_item/invisible_box/make_item() +/datum/action/cooldown/spell/conjure_item/invisible_box/make_item(atom/caster) . = ..() var/obj/item/made_box = . made_box.alpha = 255 diff --git a/code/modules/spells/spell_types/conjure_item/lighting_packet.dm b/code/modules/spells/spell_types/conjure_item/lighting_packet.dm index 2badfdd46dff..2df0c85f470e 100644 --- a/code/modules/spells/spell_types/conjure_item/lighting_packet.dm +++ b/code/modules/spells/spell_types/conjure_item/lighting_packet.dm @@ -9,6 +9,7 @@ spell_max_level = 1 item_type = /obj/item/spellpacket/lightningbolt + requires_hands = TRUE /datum/action/cooldown/spell/conjure_item/spellpacket/cast(mob/living/carbon/cast_on) . = ..() diff --git a/code/modules/spells/spell_types/conjure_item/snowball.dm b/code/modules/spells/spell_types/conjure_item/snowball.dm index ffd6d8d5e549..80b4aad9361c 100644 --- a/code/modules/spells/spell_types/conjure_item/snowball.dm +++ b/code/modules/spells/spell_types/conjure_item/snowball.dm @@ -8,3 +8,4 @@ antimagic_flags = NONE cooldown_time = 1.5 SECONDS item_type = /obj/item/toy/snowball + requires_hands = TRUE diff --git a/code/modules/spells/spell_types/jaunt/_jaunt.dm b/code/modules/spells/spell_types/jaunt/_jaunt.dm index e0463c02a10f..0378a5efee45 100644 --- a/code/modules/spells/spell_types/jaunt/_jaunt.dm +++ b/code/modules/spells/spell_types/jaunt/_jaunt.dm @@ -19,6 +19,12 @@ /// What dummy mob type do we put jaunters in on jaunt? var/jaunt_type = /obj/effect/dummy/phased_mob +/datum/action/cooldown/spell/jaunt/get_caster_from_target(atom/target) + if(istype(target.loc, jaunt_type)) + return target + + return ..() + /datum/action/cooldown/spell/jaunt/before_cast(atom/cast_on) return ..() | SPELL_NO_FEEDBACK // Don't do the feedback until after we're jaunting diff --git a/code/modules/spells/spell_types/jaunt/shadow_walk.dm b/code/modules/spells/spell_types/jaunt/shadow_walk.dm index 29bb80633673..de03f8e15e02 100644 --- a/code/modules/spells/spell_types/jaunt/shadow_walk.dm +++ b/code/modules/spells/spell_types/jaunt/shadow_walk.dm @@ -9,6 +9,9 @@ spell_requirements = NONE jaunt_type = /obj/effect/dummy/phased_mob/shadow + /// The max amount of lumens on a turf allowed before we can no longer enter jaunt with this + var/light_threshold = SHADOW_SPECIES_LIGHT_THRESHOLD + /datum/action/cooldown/spell/jaunt/shadow_walk/Grant(mob/grant_to) . = ..() RegisterSignal(grant_to, COMSIG_MOVABLE_MOVED, PROC_REF(update_status_on_signal)) @@ -17,6 +20,12 @@ . = ..() UnregisterSignal(remove_from, COMSIG_MOVABLE_MOVED) +/datum/action/cooldown/spell/jaunt/shadow_walk/enter_jaunt(mob/living/jaunter, turf/loc_override) + var/obj/effect/dummy/phased_mob/shadow/shadow = ..() + if(istype(shadow)) + shadow.light_max = light_threshold + return shadow + /datum/action/cooldown/spell/jaunt/shadow_walk/can_cast_spell(feedback = TRUE) . = ..() if(!.) @@ -24,7 +33,7 @@ if(is_jaunting(owner)) return TRUE var/turf/cast_turf = get_turf(owner) - if(cast_turf.get_lumcount() >= SHADOW_SPECIES_LIGHT_THRESHOLD) + if(cast_turf.get_lumcount() >= light_threshold) if(feedback) to_chat(owner, span_warning("It isn't dark enough here!")) return FALSE @@ -44,6 +53,8 @@ /obj/effect/dummy/phased_mob/shadow name = "shadows" + /// Max amount of light permitted before being kicked out + var/light_max = SHADOW_SPECIES_LIGHT_THRESHOLD /// The amount that shadow heals us per SSobj tick (times seconds_per_tick) var/healing_rate = 1.5 /// When cooldown is active, you are prevented from moving into tiles that would eject you from your jaunt @@ -109,11 +120,9 @@ * * location_to_check - The location to have its light level checked. */ -/obj/effect/dummy/phased_mob/shadow/proc/check_light_level(location_to_check) - var/turf/T = get_turf(location_to_check) - var/light_amount = T.get_lumcount() - if(light_amount > 0.2) // jaunt ends - return TRUE +/obj/effect/dummy/phased_mob/shadow/proc/check_light_level(atom/location_to_check) + var/turf/light_turf = get_turf(location_to_check) + return light_turf.get_lumcount() > light_max // jaunt ends on TRUE /** * Checks if the user should recieve a warning that they're moving into light. diff --git a/code/modules/spells/spell_types/pointed/_pointed.dm b/code/modules/spells/spell_types/pointed/_pointed.dm index 976e18e2731e..c220f5573b35 100644 --- a/code/modules/spells/spell_types/pointed/_pointed.dm +++ b/code/modules/spells/spell_types/pointed/_pointed.dm @@ -64,7 +64,7 @@ build_all_button_icons() return TRUE -/datum/action/cooldown/spell/pointed/InterceptClickOn(mob/living/caller, params, atom/target) +/datum/action/cooldown/spell/pointed/InterceptClickOn(mob/living/user, params, atom/target) var/atom/aim_assist_target if(aim_assist && isturf(target)) @@ -74,7 +74,7 @@ // If we didn't find a human, we settle for any living at all aim_assist_target = locate(/mob/living) in target - return ..(caller, params, aim_assist_target || target) + return ..(user, params, aim_assist_target || target) /datum/action/cooldown/spell/pointed/is_valid_target(atom/cast_on) if(cast_on == owner) @@ -133,10 +133,11 @@ // cast_on is a turf, or atom target, that we clicked on to fire at. /datum/action/cooldown/spell/pointed/projectile/cast(atom/cast_on) . = ..() - if(!isturf(owner.loc)) + var/atom/caster = get_caster_from_target(owner) + if(!isturf(caster.loc)) return FALSE - var/turf/caster_turf = get_turf(owner) + var/turf/caster_turf = caster.loc // Get the tile infront of the caster, based on their direction var/turf/caster_front_turf = get_step(owner, owner.dir) diff --git a/code/modules/spells/spell_types/pointed/spell_cards.dm b/code/modules/spells/spell_types/pointed/spell_cards.dm index 47700d2c09a8..d2f12092ff59 100644 --- a/code/modules/spells/spell_types/pointed/spell_cards.dm +++ b/code/modules/spells/spell_types/pointed/spell_cards.dm @@ -7,7 +7,8 @@ school = SCHOOL_EVOCATION cooldown_time = 5 SECONDS - cooldown_reduction_per_rank = 1 SECONDS + cooldown_reduction_per_rank = 2 SECONDS + spell_max_level = 3 invocation = "Sigi'lu M'Fan 'Tasia!" invocation_type = INVOCATION_SHOUT @@ -21,7 +22,7 @@ /// A weakref to the mob we're currently targeting with the lockon component. var/datum/weakref/current_target_weakref /// The turn rate of the spell cards in flight. (They track onto locked on targets) - var/projectile_turnrate = 10 + var/projectile_turnrate = 15 //monkestation edit: from 10 to 15 /// The homing spread of the spell cards in flight. var/projectile_pixel_homing_spread = 32 /// The initial spread of the spell cards when fired. @@ -47,6 +48,7 @@ target_typecache = GLOB.typecache_living, \ lock_amount = 1, \ on_lock = CALLBACK(src, PROC_REF(on_lockon_component)), \ + catcher_default_click = FALSE, /*monkestation edit*/ \ ) /datum/action/cooldown/spell/pointed/projectile/spell_cards/proc/on_lockon_component(list/locked_weakrefs) diff --git a/code/modules/spells/spell_types/pointed/swap.dm b/code/modules/spells/spell_types/pointed/swap.dm index 904c2d36c6ee..8c1b152127f9 100644 --- a/code/modules/spells/spell_types/pointed/swap.dm +++ b/code/modules/spells/spell_types/pointed/swap.dm @@ -8,11 +8,11 @@ active_overlay_icon_state = "bg_spell_border_active_blue" school = SCHOOL_TRANSLOCATION - cooldown_time = 30 SECONDS - cooldown_reduction_per_rank = 6 SECONDS + cooldown_time = 25 SECONDS + cooldown_reduction_per_rank = 10 SECONDS + spell_max_level = 3 cast_range = 9 - invocation = "FRO' BRT'TRO, DA!" - invocation_type = INVOCATION_SHOUT + invocation_type = INVOCATION_NONE spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC|SPELL_REQUIRES_STATION active_msg = "You prepare to swap locations with a target..." @@ -35,8 +35,8 @@ return FALSE return TRUE -/datum/action/cooldown/spell/pointed/swap/InterceptClickOn(mob/living/caller, params, atom/target) - if((caller.istate & ISTATE_SECONDARY)) +/datum/action/cooldown/spell/pointed/swap/InterceptClickOn(mob/living/user, params, atom/target) + if((user.istate & ISTATE_SECONDARY)) if(!IsAvailable(feedback = TRUE)) return FALSE if(!target) diff --git a/code/modules/spells/spell_types/pointed/tie_shoes.dm b/code/modules/spells/spell_types/pointed/tie_shoes.dm new file mode 100644 index 000000000000..5783717d0e72 --- /dev/null +++ b/code/modules/spells/spell_types/pointed/tie_shoes.dm @@ -0,0 +1,137 @@ + +/datum/action/cooldown/spell/pointed/untie_shoes + name = "Untie Shoes" + desc = "This unassuming spell unties and then knots the target's shoes." + ranged_mousepointer = 'icons/effects/mouse_pointers/lace.dmi' + button_icon_state = "lace" + + school = SCHOOL_CONJURATION + cooldown_time = 3 SECONDS + cooldown_reduction_per_rank = 0.2 SECONDS + + spell_max_level = 4 + invocation = "Acetato!" + invocation_type = INVOCATION_SHOUT + spell_requirements = NONE + antimagic_flags = MAGIC_RESISTANCE|MAGIC_RESISTANCE_HOLY + + cast_range = INFINITY + active_msg = "You prepare to tie your target's shoes!" + + /// Ignores inability to tie laces, such as jackboots, magboots, or sandals. + var/bypass_tie_status = FALSE + /// Summons shoes to untie if the target has none. + var/summons_shoes = FALSE + +/datum/action/cooldown/spell/pointed/untie_shoes/New(Target) + . = ..() + // tgs first spell with multiple invocations!!!!!! + invocation = pick("Acetato!", "Agaletto!") + +/datum/action/cooldown/spell/pointed/untie_shoes/level_spell(bypass_cap) + . = ..() + if(spell_level == 2) + bypass_tie_status = TRUE + to_chat(owner, span_notice("You will now summon laces on laceless shoes, such as jackboots.")) + + if(spell_level == 3) + summons_shoes = TRUE + to_chat(owner, span_notice("You will now summon shoes if your target has none.")) + + if(spell_level == 4) + invocation_type = INVOCATION_NONE + to_chat(owner, span_boldnotice("Your invocations are now silent!")) + +/datum/action/cooldown/spell/pointed/untie_shoes/is_valid_target(atom/cast_on) + return isliving(cast_on) + +// We need to override this, as trying to change next_use_time in cast() will just result in it being overridden. +/datum/action/cooldown/spell/touch/before_cast(atom/cast_on) + return ..() | SPELL_NO_IMMEDIATE_COOLDOWN + +/datum/action/cooldown/spell/pointed/untie_shoes/cast(mob/living/carbon/cast_on) + . = ..() + if(cast_on.can_block_magic(antimagic_flags)) + to_chat(owner, span_warning("The spell had no effect!")) + return FALSE + + if(isanimal_or_basicmob(cast_on)) + cast_on.add_movespeed_modifier(/datum/movespeed_modifier/magic_ties) + addtimer(CALLBACK(cast_on, TYPE_PROC_REF(/mob/living, remove_movespeed_modifier), /datum/movespeed_modifier/magic_ties), 3 SECONDS * spell_level, TIMER_UNIQUE|TIMER_OVERRIDE) + to_chat(owner, span_warning("You tie [cast_on] with weak, magic laces!")) + if(invocation_type != INVOCATION_NONE) // extra feedback since it's weird for them + cast_on.balloon_alert_to_viewers("magically tied!") + else + cast_on.balloon_alert(owner, "magically tied!") + playsound(cast_on, 'sound/magic/summonitems_generic.ogg', 50, TRUE) + return TRUE + + var/shoe_to_cast = /obj/item/clothing/shoes/sneakers/random + + if(HAS_TRAIT(owner, TRAIT_CHUUNIBYOU)) + shoe_to_cast = /obj/item/clothing/shoes/sneakers/marisa + if(HAS_TRAIT(owner, TRAIT_SPLATTERCASTER)) + shoe_to_cast = /obj/item/clothing/shoes/laceup + + var/obj/item/clothing/shoes/shoes_to_tie = cast_on.shoes + + if(isnull(shoes_to_tie)) + if(!summons_shoes) + to_chat(owner, span_warning("[cast_on] isn't wearing any shoes!")) + return FALSE + + shoes_to_tie = new shoe_to_cast(cast_on) + if(!cast_on.equip_to_slot_or_del(shoes_to_tie, ITEM_SLOT_FEET)) + to_chat(owner, span_warning("Couldn't equip shoes on [cast_on]!")) + return FALSE + + if(invocation_type != INVOCATION_NONE) + playsound(cast_on, 'sound/magic/summonitems_generic.ogg', 50, TRUE) + + switch(shoes_to_tie.tied) + if(SHOES_TIED) + if(!shoes_to_tie.can_be_tied) + if(bypass_tie_status) + to_chat(owner, span_warning("You magically grant laces to [cast_on]'s shoes!")) + cast_on.balloon_alert(owner, "laced!") + shoes_to_tie.can_be_tied = TRUE + if(invocation_type != INVOCATION_NONE) + playsound(cast_on, 'sound/magic/summonitems_generic.ogg', 50, TRUE) + return TRUE + else + to_chat(owner, span_warning("[cast_on] is wearing laceless shoes!")) + cast_on.balloon_alert(owner, "laceless!") + return FALSE + + to_chat(owner, span_warning("You untie [cast_on]'s shoes!")) + cast_on.balloon_alert(owner, "untied!") + shoes_to_tie.adjust_laces(SHOES_UNTIED, force_lacing = TRUE) + if(SHOES_UNTIED) + to_chat(owner, span_warning("You knot [cast_on]'s laces!")) + cast_on.balloon_alert(owner, "knotted!") + shoes_to_tie.adjust_laces(SHOES_KNOTTED, force_lacing = TRUE) + if(SHOES_KNOTTED) + to_chat(owner, span_warning("[cast_on]'s laces are already knotted!")) + return FALSE + +// We need to override this, as trying to change next_use_time in cast() will just result in it being overridden. +/datum/action/cooldown/spell/pointed/untie_shoes/after_cast(atom/cast_on) + . = ..() + var/extra_time = 0 SECONDS + if((cast_on.z != owner.z) || get_dist(cast_on, owner) > 7) + extra_time += cooldown_time * 10 // :) + + StartCooldown(cooldown_time + extra_time) + +/datum/action/cooldown/spell/pointed/untie_shoes/get_spell_title() + switch(spell_level) + if(2) + return "Laceless " + if(3) + return "Prankster's " + if(4) + return "Sneakerly " + if(5) + return "Clown's Own " + + return "" diff --git a/code/modules/spells/spell_types/right_and_wrong.dm b/code/modules/spells/spell_types/right_and_wrong.dm index 26f803486c14..fa2838a27945 100644 --- a/code/modules/spells/spell_types/right_and_wrong.dm +++ b/code/modules/spells/spell_types/right_and_wrong.dm @@ -266,7 +266,7 @@ GLOBAL_LIST_INIT(summoned_magic_objectives, list( /datum/summon_things_controller/New() RegisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED, PROC_REF(on_latejoin)) -/datum/summon_things_controller/Destroy(force, ...) +/datum/summon_things_controller/Destroy(force) . = ..() UnregisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED) diff --git a/code/modules/spells/spell_types/self/basic_heal.dm b/code/modules/spells/spell_types/self/basic_heal.dm index a4acba2d8845..135b80942062 100644 --- a/code/modules/spells/spell_types/self/basic_heal.dm +++ b/code/modules/spells/spell_types/self/basic_heal.dm @@ -17,6 +17,9 @@ /// Amount of burn to heal to the spell caster on cast var/burn_to_heal = 10 +/datum/action/cooldown/spell/basic_heal/is_valid_target(atom/cast_on) + return isliving(cast_on) + /datum/action/cooldown/spell/basic_heal/cast(mob/living/cast_on) . = ..() cast_on.visible_message( diff --git a/code/modules/spells/spell_types/self/mutate.dm b/code/modules/spells/spell_types/self/mutate.dm index 9f4bf3db6c8e..59f8f6ddc37f 100644 --- a/code/modules/spells/spell_types/self/mutate.dm +++ b/code/modules/spells/spell_types/self/mutate.dm @@ -38,9 +38,10 @@ /datum/action/cooldown/spell/apply_mutations/mutate name = "Mutate" - desc = "This spell causes you to turn into a gigantic hulk and gain laser vision for a short while. Unlike the lesser nonmagical version, it works on non-humans and mantains hand dexterity as well!" - cooldown_time = 60 SECONDS //monkestation edit: from 40 to 60 seconds - cooldown_reduction_per_rank = 5 SECONDS //monkestation edit: from 2.5 to 5 seconds + desc = "This spell causes you to turn into a hulk and gain laser vision for a short while." + cooldown_time = 40 SECONDS + cooldown_reduction_per_rank = 5 SECONDS + spell_max_level = 3 invocation = "BIRUZ BENNAR" invocation_type = INVOCATION_SHOUT @@ -56,7 +57,7 @@ cast_on.add_atom_colour("#00FF00", TEMPORARY_COLOUR_PRIORITY) /datum/action/cooldown/spell/apply_mutations/mutate/remove_mutations(mob/living/carbon/human/cast_on) - if(QDELETED(cast_on) || !is_valid_target(cast_on)) + if(QDELETED(cast_on) || !is_valid_target(cast_on)) // Not 100% sure if this check is still needed, leaving it just in case return - + ..() cast_on.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY) diff --git a/code/modules/spells/spell_types/self/personality_commune.dm b/code/modules/spells/spell_types/self/personality_commune.dm deleted file mode 100644 index cd10c2b7736a..000000000000 --- a/code/modules/spells/spell_types/self/personality_commune.dm +++ /dev/null @@ -1,56 +0,0 @@ -// This can probably be changed to use mind linker at some point -/datum/action/cooldown/spell/personality_commune - name = "Personality Commune" - desc = "Sends thoughts to your alternate consciousness." - button_icon_state = "telepathy" - cooldown_time = 0 SECONDS - spell_requirements = NONE - - /// Fluff text shown when a message is sent to the pair - var/fluff_text = span_boldnotice("You hear an echoing voice in the back of your head...") - /// The message to send to the corresponding person on cast - var/to_send - -/datum/action/cooldown/spell/personality_commune/New(Target) - . = ..() - if(!istype(target, /datum/brain_trauma/severe/split_personality)) - stack_trace("[type] was created on a target that isn't a /datum/brain_trauma/severe/split_personality, this doesn't work.") - qdel(src) - -/datum/action/cooldown/spell/personality_commune/is_valid_target(atom/cast_on) - return isliving(cast_on) - -/datum/action/cooldown/spell/personality_commune/before_cast(atom/cast_on) - . = ..() - if(. & SPELL_CANCEL_CAST) - return - - var/datum/brain_trauma/severe/split_personality/trauma = target - if(!istype(trauma)) // hypothetically impossible but you never know - return . | SPELL_CANCEL_CAST - - to_send = tgui_input_text(cast_on, "What would you like to tell your other self?", "Commune") - if(QDELETED(src) || QDELETED(trauma) || QDELETED(cast_on) || QDELETED(trauma.owner) || !can_cast_spell()) - return . | SPELL_CANCEL_CAST - if(!to_send) - reset_cooldown() - return . | SPELL_CANCEL_CAST - -// Pillaged and adapted from telepathy code -/datum/action/cooldown/spell/personality_commune/cast(mob/living/cast_on) - . = ..() - var/datum/brain_trauma/severe/split_personality/trauma = target - - var/user_message = span_boldnotice("You concentrate and send thoughts to your other self:") - var/user_message_body = span_notice("[to_send]") - - to_chat(cast_on, "[user_message] [user_message_body]") - - trauma.owner.balloon_alert(trauma.owner, "you hear a voice") - to_chat(trauma.owner, "[fluff_text] [user_message_body]") - - log_directed_talk(cast_on, trauma.owner, to_send, LOG_SAY, "[name]") - for(var/dead_mob in GLOB.dead_mob_list) - if(!isobserver(dead_mob)) - continue - to_chat(dead_mob, "[FOLLOW_LINK(dead_mob, cast_on)] [span_boldnotice("[cast_on] [name]:")] [span_notice("\"[to_send]\" to")] [span_name("[trauma]")]") diff --git a/code/modules/spells/spell_types/self/soultap.dm b/code/modules/spells/spell_types/self/soultap.dm index 0c114575c4be..cb611de0a21a 100644 --- a/code/modules/spells/spell_types/self/soultap.dm +++ b/code/modules/spells/spell_types/self/soultap.dm @@ -45,6 +45,8 @@ cast_on.health = min(cast_on.health, cast_on.maxHealth) for(var/datum/action/cooldown/spell/spell in cast_on.actions) + if(istype(spell, /datum/action/cooldown/spell/pointed/mind_transfer)) //monkestation edit + continue //monkestation edit spell.reset_spell_cooldown() // If the tap took all of our life, we die and lose our soul! diff --git a/code/modules/spells/spell_types/shapeshift/shapechange.dm b/code/modules/spells/spell_types/shapeshift/shapechange.dm index d7ff71e0425d..dd2597d00970 100644 --- a/code/modules/spells/spell_types/shapeshift/shapechange.dm +++ b/code/modules/spells/spell_types/shapeshift/shapechange.dm @@ -4,7 +4,8 @@ Once you've made your choice, it cannot be changed." cooldown_time = 20 SECONDS - cooldown_reduction_per_rank = 3.75 SECONDS + cooldown_reduction_per_rank = 8 SECONDS + spell_max_level = 3 invocation = "RAC'WA NO!" invocation_type = INVOCATION_SHOUT diff --git a/code/modules/spells/spell_types/teleport/teleport.dm b/code/modules/spells/spell_types/teleport/teleport.dm index 1dfcf6f2608e..d48615720428 100644 --- a/code/modules/spells/spell_types/teleport/teleport.dm +++ b/code/modules/spells/spell_types/teleport/teleport.dm @@ -7,7 +7,8 @@ school = SCHOOL_TRANSLOCATION cooldown_time = 1 MINUTES - cooldown_reduction_per_rank = 10 SECONDS + cooldown_reduction_per_rank = 20 SECONDS + spell_max_level = 3 invocation = "SCYAR NILA" invocation_type = INVOCATION_SHOUT diff --git a/code/modules/spells/spell_types/touch/scream_for_me.dm b/code/modules/spells/spell_types/touch/scream_for_me.dm index 231b6927e504..f12ab5ce7eff 100644 --- a/code/modules/spells/spell_types/touch/scream_for_me.dm +++ b/code/modules/spells/spell_types/touch/scream_for_me.dm @@ -21,6 +21,7 @@ span_userdanger("The spell bounces from [victim]'s skin back into your arm!"), ) var/obj/item/bodypart/to_wound = caster.get_holding_bodypart_of_item(hand) + victim.cause_pain(BODY_ZONE_EVERYTHING, 50, BRUTE) caster.cause_wound_of_type_and_severity(WOUND_SLASH, to_wound, WOUND_SEVERITY_MODERATE, WOUND_SEVERITY_CRITICAL) /datum/action/cooldown/spell/touch/scream_for_me/cast_on_hand_hit(obj/item/melee/touch_attack/hand, mob/living/victim, mob/living/carbon/caster) diff --git a/code/modules/spells/spell_types/tower_of_babel.dm b/code/modules/spells/spell_types/tower_of_babel.dm index b10038aaf65c..0f70700c0973 100644 --- a/code/modules/spells/spell_types/tower_of_babel.dm +++ b/code/modules/spells/spell_types/tower_of_babel.dm @@ -27,7 +27,7 @@ GLOBAL_DATUM(tower_of_babel, /datum/tower_of_babel) curse_of_babel(target) -/datum/tower_of_babel/Destroy(force, ...) +/datum/tower_of_babel/Destroy(force) . = ..() UnregisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED) diff --git a/code/modules/surgery/advanced/bioware/bioware_surgery.dm b/code/modules/surgery/advanced/bioware/bioware_surgery.dm index 203c8b17fba8..1d0da8962b37 100644 --- a/code/modules/surgery/advanced/bioware/bioware_surgery.dm +++ b/code/modules/surgery/advanced/bioware/bioware_surgery.dm @@ -1,5 +1,6 @@ /datum/surgery/advanced/bioware name = "Enhancement surgery" + requires_bodypart_type = NONE var/bioware_target = BIOWARE_GENERIC /datum/surgery/advanced/bioware/can_start(mob/user, mob/living/carbon/human/target) diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index 8f6b870247d8..5178752d63af 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -109,6 +109,11 @@ var/px_x = 0 var/px_y = 0 + /** + * A copy of the original owner's species datum species_traits list (very hacky) + * It sucks that we have to do this, but due to MUTCOLORS and others, we have to. For now. + */ + var/species_flags_list = list() ///the type of damage overlay (if any) to use when this bodypart is bruised/burned. var/dmg_overlay_type = "human" @@ -401,18 +406,27 @@ SHOULD_CALL_PARENT(TRUE) var/atom/drop_loc = drop_location() - if(IS_ORGANIC_LIMB(src)) + if(IS_ORGANIC_LIMB(src) && violent_removal) playsound(drop_loc, 'sound/misc/splort.ogg', 50, TRUE, -1) seep_gauze(9999) // destroy any existing gauze if any exists - for(var/obj/item/organ/bodypart_organ in get_organs()) - bodypart_organ.transfer_to_limb(src, owner) - for(var/obj/item/organ/external/external in external_organs) - external.remove_from_limb() - external.forceMove(drop_loc) + for(var/obj/item/organ/organ as anything in get_organs()) + if(owner) + organ.Remove(owner) + else + organ.remove_from_limb(src) + organ.forceMove(drop_loc) + if(violent_removal) + organ.fly_away(drop_loc) for(var/obj/item/item_in_bodypart in src) item_in_bodypart.forceMove(drop_loc) + if(violent_removal && owner) + item_in_bodypart.transfer_mob_blood_dna(owner) + + if(owner) + owner.update_body() + else + update_icon_dropped() - update_icon_dropped() ///since organs aren't actually stored in the bodypart themselves while attached to a person, we have to query the owner for what we should have /obj/item/bodypart/proc/get_organs() @@ -886,7 +900,7 @@ // No, xenos don't actually use bodyparts. Don't ask. var/mob/living/carbon/human/human_owner = owner var/datum/species/owner_species = human_owner.dna.species - species_flags_list = owner_species.species_traits + species_flags_list = owner_species.species_traits.Copy() limb_gender = (human_owner.physique == MALE) ? "m" : "f" if(owner_species.use_skintones) @@ -1006,8 +1020,9 @@ . += aux_em_block //EMISSIVE CODE END - //Ok so legs are a bit goofy in regards to layering, and we will need two images instead of one to fix that - if((body_zone == BODY_ZONE_R_LEG) || (body_zone == BODY_ZONE_L_LEG)) + //No need to handle leg layering if dropped, we only face south anyways + if(!dropped && ((body_zone == BODY_ZONE_R_LEG) || (body_zone == BODY_ZONE_L_LEG))) + //Legs are a bit goofy in regards to layering, and we will need two images instead of one to fix that var/obj/item/bodypart/leg/leg_source = src for(var/image/limb_image in .) //remove the old, unmasked image diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 33cee5db254f..6991a2bdd46a 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -51,50 +51,29 @@ target_turf = new_turf if(new_turf.density) break - throw_at(target_turf, throw_range, throw_speed) + fly_away(limb_owner.drop_location()) return TRUE /obj/item/bodypart/chest/dismember(dam_type = BRUTE, silent=TRUE, wounding_type) - if(!owner) + if(!owner || (bodypart_flags & BODYPART_UNREMOVABLE)) return FALSE - var/mob/living/carbon/chest_owner = owner - if(bodypart_flags & BODYPART_UNREMOVABLE) + if(owner.status_flags & GODMODE) return FALSE - if(HAS_TRAIT(chest_owner, TRAIT_NODISMEMBER)) + if(HAS_TRAIT(owner, TRAIT_NODISMEMBER)) return FALSE - . = list() - if(wounding_type != WOUND_BURN && isturf(chest_owner.loc) && can_bleed()) - chest_owner.add_splatter_floor(chest_owner.loc) - playsound(get_turf(chest_owner), 'sound/misc/splort.ogg', 80, TRUE) - for(var/obj/item/organ/organ as anything in chest_owner.organs) - var/org_zone = check_zone(organ.zone) - if(org_zone != BODY_ZONE_CHEST) - continue - organ.Remove(chest_owner) - organ.forceMove(chest_owner.loc) - . += organ - - for(var/obj/item/organ/external/ext_organ as anything in src.external_organs) - if(!(ext_organ.organ_flags & ORGAN_UNREMOVABLE)) - ext_organ.Remove(chest_owner) - ext_organ.forceMove(chest_owner.loc) - . += ext_organ + return drop_organs(violent_removal = TRUE) - if(cavity_item) - cavity_item.forceMove(chest_owner.loc) - . += cavity_item - cavity_item = null ///limb removal. The "special" argument is used for swapping a limb with a new one without the effects of losing a limb kicking in. -/obj/item/bodypart/proc/drop_limb(special, dismembered) +/obj/item/bodypart/proc/drop_limb(special, dismembered, violent = FALSE) if(!owner) return var/atom/drop_loc = owner.drop_location() - SEND_SIGNAL(owner, COMSIG_CARBON_REMOVE_LIMB, src, dismembered) + SEND_SIGNAL(owner, COMSIG_CARBON_REMOVE_LIMB, src, dismembered, special) SEND_SIGNAL(src, COMSIG_BODYPART_REMOVED, owner, dismembered) - update_limb(TRUE) + update_limb(dropping_limb = TRUE) //limb is out and about, it can't really be considered an implant bodypart_flags &= ~BODYPART_IMPLANTED owner.remove_bodypart(src) @@ -154,7 +133,7 @@ qdel(src) return - if(limb_id == SPECIES_OOZELING) + if((limb_id == SPECIES_OOZELING) && !special) to_chat(phantom_owner, span_warning("Your [src] splatters with an unnerving squelch!")) playsound(phantom_owner, 'sound/effects/blobattack.ogg', 60, TRUE) phantom_owner.blood_volume -= 60 //Makes for 120 when you regenerate it. @@ -246,11 +225,11 @@ head.tongue = src ..() -/obj/item/bodypart/chest/drop_limb(special) +/obj/item/bodypart/chest/drop_limb(special, dismembered, violent) if(special) return ..() -/obj/item/bodypart/arm/drop_limb(special) +/obj/item/bodypart/arm/drop_limb(special, dismembered, violent) var/mob/living/carbon/arm_owner = owner . = ..() @@ -260,7 +239,7 @@ if(arm_owner.hand_bodyparts[held_index] == src) // We only want to do this if the limb being removed is the active hand part. // This catches situations where limbs are "hot-swapped" such as augmentations and roundstart prosthetics. - arm_owner.dropItemToGround(arm_owner.get_item_for_held_index(held_index), 1) + arm_owner.dropItemToGround(arm_owner.get_item_for_held_index(held_index), 1, violent = violent) arm_owner.hand_bodyparts[held_index] = null if(arm_owner.handcuffed) arm_owner.handcuffed.forceMove(drop_location()) @@ -271,10 +250,10 @@ var/atom/movable/screen/inventory/hand/associated_hand = arm_owner.hud_used.hand_slots["[held_index]"] associated_hand?.update_appearance() if(arm_owner.gloves) - arm_owner.dropItemToGround(arm_owner.gloves, TRUE) + arm_owner.dropItemToGround(arm_owner.gloves, TRUE, violent = violent) arm_owner.update_worn_gloves() //to remove the bloody hands overlay -/obj/item/bodypart/leg/drop_limb(special) +/obj/item/bodypart/leg/drop_limb(special, dismembered, violent) if(owner && !special) if(owner.legcuffed) owner.legcuffed.forceMove(owner.drop_location()) //At this point bodypart is still in nullspace @@ -282,14 +261,14 @@ owner.legcuffed = null owner.update_worn_legcuffs() if(owner.shoes) - owner.dropItemToGround(owner.shoes, TRUE) + owner.dropItemToGround(owner.shoes, TRUE, violent = violent) return ..() -/obj/item/bodypart/head/drop_limb(special) +/obj/item/bodypart/head/drop_limb(special, dismembered, violent) if(!special) //Drop all worn head items for(var/obj/item/head_item as anything in list(owner.glasses, owner.ears, owner.wear_mask, owner.head)) - owner.dropItemToGround(head_item, force = TRUE) + owner.dropItemToGround(head_item, force = TRUE, violent = violent) qdel(owner.GetComponent(/datum/component/creamed)) //clean creampie overlay flushed emoji @@ -395,7 +374,7 @@ SEND_SIGNAL(new_limb_owner, COMSIG_CARBON_POST_ATTACH_LIMB, src, special) return TRUE -/obj/item/bodypart/head/try_attach_limb(mob/living/carbon/new_head_owner, special = FALSE, abort = FALSE) +/obj/item/bodypart/head/try_attach_limb(mob/living/carbon/new_head_owner, special = FALSE) // These are stored before calling super. This is so that if the head is from a different body, it persists its appearance. var/real_name = src.real_name @@ -438,6 +417,8 @@ sexy_chad.grad_color[GRADIENT_HAIR_KEY] = hair_gradient_color sexy_chad.grad_style[GRADIENT_FACIAL_HAIR_KEY] = facial_hair_gradient_style sexy_chad.grad_color[GRADIENT_FACIAL_HAIR_KEY] = facial_hair_gradient_color + sexy_chad.lip_style = lip_style + sexy_chad.lip_color = lip_color new_head_owner.updatehealth() new_head_owner.update_body() diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index 5aeb7363ddf3..211c3f0369d5 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -38,38 +38,60 @@ var/show_organs_on_examine = TRUE //Limb appearance info: - var/real_name = "" //Replacement name - ///Hair color source - var/hair_color_source = null - ///Hair colour and style - var/hair_color = "#000000" - ///An override color that can be cleared later. - var/override_hair_color = null - ///An override that cannot be cleared under any circumstances - var/fixed_hair_color = null + /// Replacement name + var/real_name = "" + /// Flags related to appearance, such as hair, lips, etc + var/head_flags = HEAD_ALL_FEATURES + + /// Hair style var/hair_style = "Bald" + /// Hair color source + var/hair_color_source = null + /// Hair colour and style + var/hair_color = "#000000" + /// Hair alpha var/hair_alpha = 255 + /// Hair gradient style, if any var/hair_gradient_style = null + /// Hair gradient color, if any var/hair_gradient_color = null - //Facial hair colour and style - var/facial_hair_color = "#000000" + /// Is the hair currently hidden by something? + var/hair_hidden = FALSE + + ///Facial hair style var/facial_hairstyle = "Shaved" + ///Facial hair color + var/facial_hair_color = "#000000" + ///Facial hair alpha + var/facial_hair_alpha = 255 + ///Facial hair gradient style, if any var/facial_hair_gradient_style = null + ///Facial hair gradient color, if any var/facial_hair_gradient_color = null - ///Is the hair currently hidden by something? - var/hair_hidden ///Is the facial hair currently hidden by something? - var/facial_hair_hidden - ///Draw this head as "debrained" - VAR_PROTECTED/show_debrained = FALSE - + var/facial_hair_hidden = FALSE + /// An override color that can be cleared later, affects both hair and facial hair + var/override_hair_color = null + /// An override that cannot be cleared under any circumstances, affects both hair and facial hair + var/fixed_hair_color = null + ///Type of lipstick being used, basically var/lip_style + ///Lipstick color var/lip_color = "white" + ///Current lipstick trait, if any (such as TRAIT_KISS_OF_DEATH) var/stored_lipstick_trait + + ///Draw this head as "debrained" + VAR_PROTECTED/show_debrained = FALSE + ///Draw this head as missing eyes + VAR_PROTECTED/show_missing_eyes = FALSE + + ///The image for lipstick + var/mutable_appearance/lip_overlay ///The image for hair var/mutable_appearance/hair_overlay ///The image for hair gradient @@ -79,7 +101,6 @@ ///The image for facial hair gradient var/mutable_appearance/facial_gradient_overlay - /obj/item/bodypart/head/Destroy() QDEL_NULL(brainmob) //order is sensitive, see warning in handle_atom_del() below QDEL_NULL(brain) @@ -184,60 +205,52 @@ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// /obj/item/bodypart/head/get_limb_icon(dropped, draw_external_organs) - cut_overlays() . = ..() - if(dropped) //certain overlays only appear when the limb is being detached from its owner. - - if(IS_ORGANIC_LIMB(src)) //having a robotic head hides certain features. - //facial hair - if(facial_hairstyle && (FACEHAIR in species_flags_list)) - var/datum/sprite_accessory/sprite = GLOB.facial_hairstyles_list[facial_hairstyle] - if(sprite) - var/image/facial_overlay = image(sprite.icon, "[sprite.icon_state]", -HAIR_LAYER, SOUTH) - facial_overlay.color = facial_hair_color - facial_overlay.alpha = hair_alpha - . += facial_overlay - - if(!eyes) - . += image('icons/mob/species/human/human_face.dmi', "eyes_missing", -FACE_LAYER, SOUTH) - - //Applies the debrained overlay if there is no brain - if(!brain) - var/image/debrain_overlay = image(layer = -HAIR_LAYER, dir = SOUTH) - if(bodytype & BODYTYPE_ALIEN) - debrain_overlay.icon = 'icons/mob/species/alien/bodyparts.dmi' - debrain_overlay.icon_state = "debrained_alien" - else if(bodytype & BODYTYPE_LARVA_PLACEHOLDER) - debrain_overlay.icon = 'icons/mob/species/alien/bodyparts.dmi' - debrain_overlay.icon_state = "debrained_larva" - else if(!(TRAIT_NOBLOOD in species_flags_list)) - debrain_overlay.icon = 'icons/mob/species/human/human_face.dmi' - debrain_overlay.icon_state = "debrained" - . += debrain_overlay - else - var/datum/sprite_accessory/sprite2 = GLOB.roundstart_hairstyles_list[hair_style] - if(sprite2 && (HAIR in species_flags_list)) - var/image/hair_overlay = image(sprite2.icon, "[sprite2.icon_state]", -HAIR_LAYER, SOUTH) - hair_overlay.color = hair_color - hair_overlay.alpha = hair_alpha - . += hair_overlay - + // logic for the overlays changes when dropped (ugh, rework this later if possible) + if(dropped) + //BAHHHH don't do any of this if we are husked + if(is_husked) + return . // lipstick - if(lip_style) + if(lip_style && (head_flags & HEAD_LIPS)) var/image/lips_overlay = image('icons/mob/species/human/human_face.dmi', "lips_[lip_style]", -FACE_LAYER, SOUTH) lips_overlay.color = lip_color . += lips_overlay + + //facial hair + if(facial_hairstyle && (head_flags & HEAD_FACIAL_HAIR)) + var/datum/sprite_accessory/facial_hair_sprite = GLOB.facial_hairstyles_list[facial_hairstyle] + if(facial_hair_sprite) + var/image/facial_overlay = image(facial_hair_sprite.icon, "[facial_hair_sprite.icon_state]", -HAIR_LAYER, SOUTH) + facial_overlay.color = facial_hair_color + facial_overlay.alpha = hair_alpha + . += facial_overlay + + //Applies the debrained overlay if there is no brain + if(!brain && (head_flags & HEAD_DEBRAIN)) + . += get_debrain_overlay(can_rotate = FALSE) + //Otherwise, applies hair + else if(hair_style && (head_flags & HEAD_HAIR)) + var/datum/sprite_accessory/hair_sprite = GLOB.hairstyles_list[hair_style] + if(hair_sprite && (head_flags & HEAD_HAIR)) + var/image/hair_overlay = image(hair_sprite.icon, "[hair_sprite.icon_state]", -HAIR_LAYER, SOUTH) + hair_overlay.color = hair_color + hair_overlay.alpha = hair_alpha + . += hair_overlay + // eyes - if(eyes) // This is a bit of copy/paste code from eyes.dm:generate_body_overlay + // This is a bit of copy/paste code from eyes.dm:generate_body_overlay + if(eyes?.eye_icon_state && (head_flags & HEAD_EYESPRITES)) var/image/eye_left = image('icons/mob/species/human/human_face.dmi', "[eyes.eye_icon_state]_l", -FACE_LAYER, SOUTH) var/image/eye_right = image('icons/mob/species/human/human_face.dmi', "[eyes.eye_icon_state]_r", -FACE_LAYER, SOUTH) - if(eyes.eye_color_left) - eye_left.color = eyes.eye_color_left - if(eyes.eye_color_right) - eye_right.color = eyes.eye_color_right + if(head_flags & HEAD_EYECOLOR) + if(eyes.eye_color_left) + eye_left.color = eyes.eye_color_left + if(eyes.eye_color_right) + eye_right.color = eyes.eye_color_right if(eyes.overlay_ignore_lighting) eye_left.overlays += emissive_appearance(eye_left.icon, eye_left.icon_state, src, alpha = eye_left.alpha) eye_right.overlays += emissive_appearance(eye_right.icon, eye_right.icon_state, src, alpha = eye_right.alpha) @@ -248,21 +261,30 @@ . += eye_left . += eye_right else - if(!facial_hair_hidden && facial_overlay && (FACEHAIR in species_flags_list)) + if(lip_overlay && (head_flags & HEAD_LIPS)) + . += lip_overlay + + if(!facial_hair_hidden && facial_overlay && (head_flags & HEAD_FACIAL_HAIR)) facial_overlay.alpha = hair_alpha . += facial_overlay if(facial_gradient_overlay) . += facial_gradient_overlay - if(show_debrained) + if(show_debrained && (head_flags & HEAD_DEBRAIN)) . += mutable_appearance('icons/mob/species/human/human_face.dmi', "debrained", HAIR_LAYER) - else if(!hair_hidden && hair_overlay && (HAIR in species_flags_list)) + else if(!hair_hidden && hair_overlay && (head_flags & HEAD_HAIR)) hair_overlay.alpha = hair_alpha . += hair_overlay if(hair_gradient_overlay) . += hair_gradient_overlay + if(show_missing_eyes && (head_flags && HEAD_EYEHOLES)) + var/mutable_appearance/no_eyes = mutable_appearance('icons/mob/species/human/human_face.dmi', "eyes_missing", -BODY_LAYER) + . += no_eyes + + return + /mob/living/proc/set_haircolor(hex_string, override) return @@ -297,6 +319,24 @@ say(message, language, sanitize = FALSE) return NOPASS +/// Returns an appropriate debrained icon state +/obj/item/bodypart/head/proc/get_debrain_overlay(can_rotate = TRUE) + var/debrain_icon = 'icons/mob/species/human/human_face.dmi' + var/debrain_icon_state = "debrained" + if(bodytype & BODYTYPE_ALIEN) + debrain_icon = 'icons/mob/species/alien/bodyparts.dmi' + debrain_icon_state = "debrained_alien" + else if(bodytype & BODYTYPE_LARVA_PLACEHOLDER) + debrain_icon = 'icons/mob/species/alien/bodyparts.dmi' + debrain_icon_state = "debrained_larva" + + var/image/debrain_overlay + if(can_rotate) + debrain_overlay = mutable_appearance(debrain_icon, debrain_icon_state, HAIR_LAYER) + else + debrain_overlay = image(debrain_icon, debrain_icon_state, -HAIR_LAYER, SOUTH) + return debrain_overlay + /obj/item/bodypart/head/GetVoice() return "The head of [real_name]" @@ -311,6 +351,7 @@ should_draw_greyscale = FALSE dmg_overlay_type = SPECIES_MONKEY is_dimorphic = FALSE + head_flags = HEAD_LIPS|HEAD_DEBRAIN /obj/item/bodypart/head/alien icon = 'icons/mob/species/alien/bodyparts.dmi' diff --git a/code/modules/surgery/bodyparts/hair.dm b/code/modules/surgery/bodyparts/head_hair_and_lips.dm similarity index 70% rename from code/modules/surgery/bodyparts/hair.dm rename to code/modules/surgery/bodyparts/head_hair_and_lips.dm index 673af47de27b..670462bdac8c 100644 --- a/code/modules/surgery/bodyparts/hair.dm +++ b/code/modules/surgery/bodyparts/head_hair_and_lips.dm @@ -1,65 +1,61 @@ -#define SET_OVERLAY_VALUE(X,Y,Z) if(X) X.Y = Z +#define SET_OVERLAY_VALUE(overlay,variable,value) if(overlay) overlay.variable = value -///Part of `update_limb()`, this proc does what the name implies. -/obj/item/bodypart/head/proc/update_hair_and_lips() +/// Part of `update_limb()`, this proc does what the name implies. +/obj/item/bodypart/head/proc/update_hair_and_lips(dropping_limb, is_creating) + // THIS PROC DOES NOT WORK FOR DROPPED HEADS. YET. + if(!owner) + return var/mob/living/carbon/human/human_head_owner = owner var/datum/species/owner_species = human_head_owner.dna.species - if(human_head_owner.lip_style && (LIPS in owner_species.species_traits)) - lip_style = human_head_owner.lip_style - lip_color = human_head_owner.lip_color - else - lip_style = null - lip_color = "white" - - ///FACIAL HAIR CHECKS START - //we check if our hat or helmet hides our facial hair. + //HIDDEN CHECKS START + hair_hidden = FALSE facial_hair_hidden = FALSE if(human_head_owner.head) var/obj/item/hat = human_head_owner.head + if(hat.flags_inv & HIDEHAIR) + hair_hidden = TRUE if(hat.flags_inv & HIDEFACIALHAIR) facial_hair_hidden = TRUE if(human_head_owner.wear_mask) var/obj/item/mask = human_head_owner.wear_mask + if(mask.flags_inv & HIDEHAIR) + hair_hidden = TRUE if(mask.flags_inv & HIDEFACIALHAIR) facial_hair_hidden = TRUE - ///FACIAL HAIR CHECKS END - - ///HAIR CHECKS START - hair_hidden = FALSE - if(human_head_owner.head) - var/obj/item/hat = human_head_owner.head - if(hat.flags_inv & HIDEHAIR) - hair_hidden = TRUE if(human_head_owner.w_uniform) var/obj/item/item_uniform = human_head_owner.w_uniform if(item_uniform.flags_inv & HIDEHAIR) hair_hidden = TRUE - - if(human_head_owner.wear_mask) - var/obj/item/mask = human_head_owner.wear_mask - if(mask.flags_inv & HIDEHAIR) - hair_hidden = TRUE - ///HAIR CHECKS END - //invisibility stuff - if(HAS_TRAIT(human_head_owner, TRAIT_INVISIBLE_MAN)) + if(item_uniform.flags_inv & HIDEFACIALHAIR) + facial_hair_hidden = TRUE + //invisibility and husk stuff + if(HAS_TRAIT(human_head_owner, TRAIT_INVISIBLE_MAN) || HAS_TRAIT(human_head_owner, TRAIT_HUSK)) hair_hidden = TRUE facial_hair_hidden = TRUE - if(!hair_hidden && !owner.get_organ_slot(ORGAN_SLOT_BRAIN) && !HAS_TRAIT(owner, TRAIT_NOBLOOD)) + if(!hair_hidden && !owner.get_organ_slot(ORGAN_SLOT_BRAIN) && (head_flags & HEAD_DEBRAIN) && !HAS_TRAIT(owner, TRAIT_NO_DEBRAIN_OVERLAY)) show_debrained = TRUE else show_debrained = FALSE + if(!owner.get_organ_slot(ORGAN_SLOT_EYES) && (head_flags & HEAD_EYEHOLES)) + show_missing_eyes = TRUE + else + show_missing_eyes = FALSE + var/datum/sprite_accessory/sprite_accessory + lip_overlay = null facial_overlay = null facial_gradient_overlay = null hair_overlay = null hair_gradient_overlay = null + lip_style = human_head_owner.lip_style + lip_color = human_head_owner.lip_color hair_alpha = owner_species.hair_alpha hair_color = human_head_owner.hair_color facial_hair_color = human_head_owner.facial_hair_color @@ -68,39 +64,39 @@ facial_hairstyle = human_head_owner.facial_hairstyle var/atom/location = loc || owner || src - var/height = human_head_owner.get_mob_height() - if(height == HUMAN_HEIGHT_DWARF) - height += 2 - height = num2text(height) - var/offsets = GLOB.human_heights_to_offsets[height] - if(facial_hairstyle && !facial_hair_hidden && (FACEHAIR in species_flags_list)) + if(!facial_hair_hidden && lip_style && (head_flags & HEAD_LIPS)) + lip_overlay = mutable_appearance('icons/mob/species/human/human_face.dmi', "lips_[lip_style]", -BODY_LAYER) + lip_overlay.color = lip_color + + if(!facial_hair_hidden && facial_hairstyle && (head_flags & HEAD_FACIAL_HAIR)) sprite_accessory = GLOB.facial_hairstyles_list[facial_hairstyle] if(sprite_accessory) - //Create the overlay + //Overlay facial_overlay = mutable_appearance(sprite_accessory.icon, sprite_accessory.icon_state, -HAIR_LAYER) - facial_overlay.overlays += emissive_blocker(facial_overlay.icon, facial_overlay.icon_state, location, alpha = hair_alpha) - facial_overlay.pixel_y += offsets[1] + facial_overlay.alpha = facial_hair_alpha //Gradients facial_hair_gradient_style = LAZYACCESS(human_head_owner.grad_style, GRADIENT_FACIAL_HAIR_KEY) if(facial_hair_gradient_style) facial_hair_gradient_color = LAZYACCESS(human_head_owner.grad_color, GRADIENT_FACIAL_HAIR_KEY) facial_gradient_overlay = make_gradient_overlay(sprite_accessory.icon, sprite_accessory.icon_state, HAIR_LAYER, GLOB.facial_hair_gradients_list[facial_hair_gradient_style], facial_hair_gradient_color) - facial_gradient_overlay.pixel_y += offsets[1] - - facial_overlay.overlays += emissive_blocker(sprite_accessory.icon, sprite_accessory.icon_state, location, alpha = hair_alpha) + //Emissive + facial_overlay.overlays += emissive_blocker(facial_overlay.icon, facial_overlay.icon_state, location, alpha = facial_hair_alpha) - if(!hair_hidden && !show_debrained && (HAIR in species_flags_list)) + if(!show_debrained && !hair_hidden && hair_style && (head_flags & HEAD_HAIR)) sprite_accessory = GLOB.hairstyles_list[hair_style] if(sprite_accessory) + //Overlay hair_overlay = mutable_appearance(sprite_accessory.icon, sprite_accessory.icon_state, -HAIR_LAYER) - hair_overlay.overlays += emissive_blocker(hair_overlay.icon, hair_overlay.icon_state, location, alpha = hair_alpha) + hair_overlay.alpha = hair_alpha + //Gradients hair_gradient_style = LAZYACCESS(human_head_owner.grad_style, GRADIENT_HAIR_KEY) if(hair_gradient_style) hair_gradient_color = LAZYACCESS(human_head_owner.grad_color, GRADIENT_HAIR_KEY) hair_gradient_overlay = make_gradient_overlay(sprite_accessory.icon, sprite_accessory.icon_state, HAIR_LAYER, GLOB.hair_gradients_list[hair_gradient_style], hair_gradient_color) + //Emissive + hair_overlay.overlays += emissive_blocker(hair_overlay.icon, hair_overlay.icon_state, location, alpha = hair_alpha) - //CREATION-ONLY END //HAIR COLOR START if(!override_hair_color) if(hair_color_source) diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index 710b0a1da3ca..2b9d1bd5c96e 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -156,8 +156,7 @@ if(BODY_ZONE_CHEST) new_bodypart = new /obj/item/bodypart/chest/alien() if(new_bodypart) - new_bodypart.update_limb(src) - + new_bodypart.update_limb(is_creating = TRUE) /proc/skintone2hex(skin_tone) diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 076b4b4d630e..a45c1d5446dc 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -277,6 +277,8 @@ damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT, CLONE = DEFAULT_CLONE_EXAMINE_TEXT) + head_flags = HEAD_EYESPRITES + var/obj/item/assembly/flash/handheld/flash1 = null var/obj/item/assembly/flash/handheld/flash2 = null diff --git a/code/modules/surgery/bodyparts/species_parts/android_parts.dm b/code/modules/surgery/bodyparts/species_parts/android_parts.dm index e9b821f5934d..b7a1f55bf43f 100644 --- a/code/modules/surgery/bodyparts/species_parts/android_parts.dm +++ b/code/modules/surgery/bodyparts/species_parts/android_parts.dm @@ -6,6 +6,7 @@ /obj/item/bodypart/head/robot/android change_exempt_flags = null + head_flags = HEAD_HAIR | HEAD_EYESPRITES /obj/item/bodypart/chest/robot/android change_exempt_flags = null diff --git a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm index f43f68dd6cde..06db450e5dd2 100644 --- a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm @@ -13,6 +13,7 @@ var/mob/living/carbon/human/potato_oc = owner var/datum/species/ethereal/eth_holder = potato_oc.dna.species species_color = eth_holder.current_color + head_flags = HEAD_HAIR | HEAD_FACIAL_HAIR | HEAD_EYESPRITES | HEAD_EYEHOLES | HEAD_DEBRAIN | HEAD_EYECOLOR /obj/item/bodypart/chest/ethereal icon_greyscale = 'icons/mob/species/ethereal/bodyparts.dmi' diff --git a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm index 08622f070176..1b496fc3bd74 100644 --- a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm @@ -2,6 +2,7 @@ icon_greyscale = 'icons/mob/species/lizard/bodyparts.dmi' limb_id = SPECIES_LIZARD is_dimorphic = FALSE + head_flags = HEAD_HAIR| HEAD_EYESPRITES | HEAD_EYEHOLES | HEAD_DEBRAIN | HEAD_EYECOLOR /obj/item/bodypart/chest/lizard icon_greyscale = 'icons/mob/species/lizard/bodyparts.dmi' diff --git a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm index db612f440be9..3522df549ea8 100644 --- a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm @@ -2,6 +2,7 @@ /obj/item/bodypart/head/snail limb_id = SPECIES_SNAIL is_dimorphic = FALSE + head_flags = HEAD_EYESPRITES|HEAD_DEBRAIN /obj/item/bodypart/chest/snail limb_id = SPECIES_SNAIL @@ -31,6 +32,7 @@ limb_id = SPECIES_ABDUCTOR is_dimorphic = FALSE should_draw_greyscale = FALSE + head_flags = NONE /obj/item/bodypart/chest/abductor limb_id = SPECIES_ABDUCTOR @@ -61,6 +63,7 @@ limb_id = SPECIES_JELLYPERSON is_dimorphic = TRUE dmg_overlay_type = null + head_flags = HEAD_ALL_FEATURES /obj/item/bodypart/chest/jelly biological_state = (BIO_FLESH|BIO_BLOODED) @@ -93,6 +96,7 @@ biological_state = (BIO_FLESH|BIO_BLOODED) limb_id = SPECIES_SLIMEPERSON is_dimorphic = FALSE + head_flags = HEAD_ALL_FEATURES /obj/item/bodypart/chest/slime biological_state = (BIO_FLESH|BIO_BLOODED) @@ -147,6 +151,7 @@ limb_id = SPECIES_ZOMBIE is_dimorphic = FALSE should_draw_greyscale = FALSE + head_flags = HEAD_EYESPRITES | HEAD_DEBRAIN | HEAD_HAIR /obj/item/bodypart/chest/zombie limb_id = SPECIES_ZOMBIE @@ -203,6 +208,7 @@ limb_id = SPECIES_FLYPERSON is_dimorphic = FALSE should_draw_greyscale = FALSE + head_flags = HEAD_EYESPRITES | HEAD_DEBRAIN /obj/item/bodypart/chest/fly limb_id = SPECIES_FLYPERSON @@ -230,6 +236,7 @@ limb_id = SPECIES_SHADOW is_dimorphic = FALSE should_draw_greyscale = FALSE + head_flags = NONE /obj/item/bodypart/chest/shadow limb_id = SPECIES_SHADOW @@ -265,6 +272,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE dmg_overlay_type = null + head_flags = HEAD_HAIR /obj/item/bodypart/chest/skeleton biological_state = BIO_BONE @@ -301,6 +309,7 @@ /obj/item/bodypart/head/mushroom limb_id = SPECIES_MUSHROOM is_dimorphic = TRUE + head_flags = NONE /obj/item/bodypart/chest/mushroom limb_id = SPECIES_MUSHROOM @@ -331,13 +340,14 @@ unarmed_damage_high = 15 unarmed_stun_threshold = 14 -///GOLEMS (i hate xenobio SO FUCKING MUCH) (from 2022: Yeah I fucking feel your pain brother) +///GOLEMS (i hate xenobio SO FUCKING MUCH) (from 2022: Yeah I fucking feel your pain brother) (2024: yeah this is shit) /obj/item/bodypart/head/golem biological_state = BIO_BONE bodytype = BODYTYPE_ORGANIC limb_id = SPECIES_GOLEM is_dimorphic = FALSE dmg_overlay_type = null + head_flags = HEAD_EYESPRITES /obj/item/bodypart/chest/golem biological_state = BIO_BONE @@ -413,6 +423,7 @@ limb_id = SPECIES_GOLEM_CULT is_dimorphic = FALSE should_draw_greyscale = FALSE + head_flags = NONE /obj/item/bodypart/chest/golem/cult limb_id = SPECIES_GOLEM_CULT @@ -479,6 +490,7 @@ limb_id = SPECIES_GOLEM_CARDBOARD is_dimorphic = FALSE should_draw_greyscale = FALSE + head_flags = NONE /obj/item/bodypart/chest/golem/cardboard limb_id = SPECIES_GOLEM_CARDBOARD @@ -528,6 +540,7 @@ limb_id = SPECIES_GOLEM_DURATHREAD is_dimorphic = FALSE should_draw_greyscale = FALSE + head_flags = NONE /obj/item/bodypart/chest/golem/durathread limb_id = SPECIES_GOLEM_DURATHREAD @@ -556,6 +569,7 @@ limb_id = SPECIES_GOLEM_BONE is_dimorphic = FALSE should_draw_greyscale = FALSE + head_flags = NONE /obj/item/bodypart/chest/golem/bone biological_state = BIO_BONE @@ -588,6 +602,7 @@ limb_id = SPECIES_GOLEM_SNOW is_dimorphic = FALSE should_draw_greyscale = FALSE + head_flags = NONE /obj/item/bodypart/chest/golem/snow limb_id = SPECIES_GOLEM_SNOW @@ -701,3 +716,5 @@ unarmed_damage_low = 0 unarmed_damage_high = 1 unarmed_stun_threshold = 2 + +// diff --git a/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm index c23b935176ba..f0fc78f83f0b 100644 --- a/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm @@ -5,6 +5,7 @@ limb_id = SPECIES_MOTH is_dimorphic = FALSE should_draw_greyscale = FALSE + head_flags = HEAD_LIPS |HEAD_EYESPRITES |HEAD_EYEHOLES | HEAD_DEBRAIN | HEAD_HAIR /obj/item/bodypart/chest/moth icon = 'icons/mob/species/moth/bodyparts.dmi' diff --git a/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm index 3756cee1e8b3..fad07868ea04 100644 --- a/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm @@ -7,6 +7,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE dmg_overlay_type = null + head_flags = HEAD_EYESPRITES /obj/item/bodypart/chest/plasmaman icon = 'icons/mob/species/plasmaman/bodyparts.dmi' diff --git a/code/modules/surgery/organs/external/_external_organs.dm b/code/modules/surgery/organs/external/_external_organs.dm index 11f1a7e5aeb1..ecc1259e00e6 100644 --- a/code/modules/surgery/organs/external/_external_organs.dm +++ b/code/modules/surgery/organs/external/_external_organs.dm @@ -116,10 +116,11 @@ return ..() /obj/item/organ/external/remove_from_limb() - ownerlimb.external_organs -= src - ownerlimb.remove_bodypart_overlay(bodypart_overlay) - if(ownerlimb.owner && external_bodytypes) - ownerlimb.synchronize_bodytypes(ownerlimb.owner) + if(!QDELETED(ownerlimb)) + ownerlimb.external_organs -= src + ownerlimb.remove_bodypart_overlay(bodypart_overlay) + if(ownerlimb.owner && external_bodytypes) + ownerlimb.synchronize_bodytypes(ownerlimb.owner) ownerlimb = null return ..() diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index aaadb308076d..c8006bd92dc0 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -56,7 +56,7 @@ return eye_recipient.cure_blind(NO_EYES) apply_damaged_eye_effects() - refresh(eye_recipient, inserting = TRUE) + refresh(eye_recipient, inserting = TRUE, call_update = TRUE) /// Refreshes the visuals of the eyes /// If call_update is TRUE, we also will call update_body @@ -85,7 +85,7 @@ affected_human.add_fov_trait(type, native_fov) if(call_update) - affected_human.dna?.species?.handle_body(affected_human) //updates eye icon + affected_human.update_body() /obj/item/organ/internal/eyes/Remove(mob/living/carbon/eye_owner, special = FALSE) . = ..() @@ -95,10 +95,9 @@ human_owner.eye_color_left = old_eye_color_left if(initial(eye_color_right)) human_owner.eye_color_right = old_eye_color_right - human_owner.update_body() if(native_fov) eye_owner.remove_fov_trait(type) - + human_owner.update_body() // Cure blindness from eye damage eye_owner.cure_blind(EYE_DAMAGE) eye_owner.cure_nearsighted(EYE_DAMAGE) @@ -124,22 +123,24 @@ var/mutable_appearance/eye_left = mutable_appearance(eye_icon, "[eye_icon_state]_l", -FACE_LAYER) var/mutable_appearance/eye_right = mutable_appearance(eye_icon, "[eye_icon_state]_r", -FACE_LAYER) - var/list/overlays = list(eye_left, eye_right) - if(EYECOLOR in parent.dna?.species.species_traits) - eye_right.color = eye_color_right - eye_left.color = eye_color_left - - var/obscured = parent.check_obscured_slots(TRUE) - if(overlay_ignore_lighting && !(obscured & ITEM_SLOT_EYES)) - overlays += emissive_appearance_copy(eye_left, src, NONE) - overlays += emissive_appearance_copy(eye_right, src, NONE) - - if(OFFSET_FACE in parent.dna?.species.offset_features) - var/offset = parent.dna.species.offset_features[OFFSET_FACE] - for(var/mutable_appearance/overlay in overlays) - overlay.pixel_x += offset[OFFSET_X] - overlay.pixel_y += offset[OFFSET_Y] + var/list/overlays = list(eye_left, eye_right) + var/obj/item/bodypart/head/my_head = parent.get_bodypart(BODY_ZONE_HEAD) + if(my_head) + if(my_head.head_flags & HEAD_EYECOLOR) + eye_right.color = eye_color_right + eye_left.color = eye_color_left + + var/obscured = parent.check_obscured_slots(TRUE) + if(overlay_ignore_lighting && !(obscured & ITEM_SLOT_EYES)) + overlays += emissive_appearance_copy(eye_left, src, NONE) + overlays += emissive_appearance_copy(eye_right, src, NONE) + + if(OFFSET_FACE in parent.dna?.species.offset_features) + var/offset = parent.dna.species.offset_features[OFFSET_FACE] + for(var/mutable_appearance/overlay in overlays) + overlay.pixel_x += offset[OFFSET_X] + overlay.pixel_y += offset[OFFSET_Y] return overlays diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 20bb7871c9bc..6c317316fc97 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -88,8 +88,8 @@ owner.stop_sound_channel(CHANNEL_HEARTBEAT) beat = BEAT_NONE - if(organ_flags & ORGAN_FAILING && owner.can_heartattack() && !(HAS_TRAIT(src, TRAIT_STABLEHEART))) //heart broke, stopped beating, death imminent... unless you have veins that pump blood without a heart - if(owner.stat == CONSCIOUS) + if((organ_flags & ORGAN_FAILING) && owner.can_heartattack() && !(HAS_TRAIT(src, TRAIT_STABLEHEART))) //heart broke, stopped beating, death imminent... unless you have veins that pump blood without a heart + if(owner.stat == CONSCIOUS && beating) // monkestation edit: antispam owner.visible_message(span_danger("[owner] clutches at [owner.p_their()] chest as if [owner.p_their()] heart is stopping!"), \ span_userdanger("You feel a terrible pain in your chest, as if your heart has stopped!")) owner.set_heartattack(TRUE) @@ -241,11 +241,14 @@ owner.losebreath += 10 COOLDOWN_START(src, severe_cooldown, 20 SECONDS) if(prob(emp_vulnerability/severity)) //Chance of permanent effects - organ_flags |= ORGAN_SYNTHETIC_EMP //Starts organ faliure - gonna need replacing soon. - Stop() - owner.visible_message(span_danger("[owner] clutches at [owner.p_their()] chest as if [owner.p_their()] heart is stopping!"), \ - span_userdanger("You feel a terrible pain in your chest, as if your heart has stopped!")) - addtimer(CALLBACK(src, PROC_REF(Restart)), 10 SECONDS) + organ_flags |= ORGAN_SYNTHETIC_EMP //Starts organ faliure - gonna need replacing soon + // monkestation edit: antispam + if(beating) + owner.visible_message(span_danger("[owner] clutches at [owner.p_their()] chest as if [owner.p_their()] heart is stopping!"), \ + span_userdanger("You feel a terrible pain in your chest, as if your heart has stopped!")) + Stop() + addtimer(CALLBACK(src, PROC_REF(Restart)), 10 SECONDS) + // monkestation end /obj/item/organ/internal/heart/cybernetic/on_life(seconds_per_tick, times_fired) . = ..() diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm old mode 100644 new mode 100755 diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 1cbbd1bca1b2..31f69eeacacf 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -844,7 +844,7 @@ var/do_i_cough = SPT_PROB((damage < high_threshold) ? 2.5 : 5, seconds_per_tick) // between : past high if(do_i_cough) owner.emote("cough") - if(organ_flags & ORGAN_FAILING && owner.stat == CONSCIOUS) + if((organ_flags & ORGAN_FAILING) && owner.stat == CONSCIOUS && SPT_PROB(1, seconds_per_tick)) // monkestation edit: antispam owner.visible_message(span_danger("[owner] grabs [owner.p_their()] throat, struggling for breath!"), span_userdanger("You suddenly feel like you can't breathe!")) failed = TRUE diff --git a/code/modules/surgery/organs/stomach/_stomach.dm b/code/modules/surgery/organs/stomach/_stomach.dm index 4b8a2e733c99..8e1d4a661fb2 100644 --- a/code/modules/surgery/organs/stomach/_stomach.dm +++ b/code/modules/surgery/organs/stomach/_stomach.dm @@ -230,6 +230,7 @@ disgusted.adjust_confusion(2.5 SECONDS) disgusted.adjust_stutter(2 SECONDS) disgusted.vomit(10, distance = 0, vomit_type = NONE) + disgusted.adjust_disgust(-50) disgusted.set_dizzy_if_lower(10 SECONDS) if(disgust >= DISGUST_LEVEL_DISGUSTED) if(SPT_PROB(13, seconds_per_tick)) diff --git a/code/modules/surgery/surgery_helpers.dm b/code/modules/surgery/surgery_helpers.dm index ec33b47dca2f..7946a51e9e7a 100644 --- a/code/modules/surgery/surgery_helpers.dm +++ b/code/modules/surgery/surgery_helpers.dm @@ -1,6 +1,10 @@ /proc/get_location_modifier(mob/located_mob) var/turf/mob_turf = get_turf(located_mob) - if(locate(/obj/structure/table/optable, mob_turf)) + // monkestation start: alien surgical tables are even faster + if(locate(/obj/structure/table/optable/abductor, mob_turf)) + return 1.2 + // monkestation end + else if(locate(/obj/structure/table/optable, mob_turf)) return 1 else if(locate(/obj/machinery/stasis, mob_turf)) return 0.9 diff --git a/code/modules/tgs/LICENSE b/code/modules/tgs/LICENSE index 2bedf9a63aa0..324c48e993e1 100644 --- a/code/modules/tgs/LICENSE +++ b/code/modules/tgs/LICENSE @@ -1,6 +1,6 @@ The MIT License -Copyright (c) 2017-2023 Jordan Brown +Copyright (c) 2017-2024 Jordan Brown Permission is hereby granted, free of charge, to any person obtaining a copy of this software and diff --git a/code/modules/tgs/README.md b/code/modules/tgs/README.md index 6319028d8106..35ca73d7e9a8 100644 --- a/code/modules/tgs/README.md +++ b/code/modules/tgs/README.md @@ -1,6 +1,6 @@ # DMAPI Internals -This folder should be placed on it's own inside a codebase that wishes to use the TGS DMAPI. Warranty void if modified. +This folder should be placed on its own inside a codebase that wishes to use the TGS DMAPI. Warranty void if modified. - [includes.dm](./includes.dm) is the file that should be included by DM code, it handles including the rest. - The [core](./core) folder includes all code not directly part of any API version. diff --git a/code/modules/tgs/core/README.md b/code/modules/tgs/core/README.md index b82d8f49e297..965e21b549a3 100644 --- a/code/modules/tgs/core/README.md +++ b/code/modules/tgs/core/README.md @@ -3,7 +3,7 @@ This folder contains all DMAPI code not directly involved in an API. - [_definitions.dm](./definitions.dm) contains defines needed across DMAPI internals. +- [byond_world_export.dm](./byond_world_export.dm) contains the default `/datum/tgs_http_handler` implementation which uses `world.Export()`. - [core.dm](./core.dm) contains the implementations of the `/world/proc/TgsXXX()` procs. Many map directly to the `/datum/tgs_api` functions. It also contains the /datum selection and setup code. - [datum.dm](./datum.dm) contains the `/datum/tgs_api` declarations that all APIs must implement. - [tgs_version.dm](./tgs_version.dm) contains the `/datum/tgs_version` definition -- diff --git a/code/modules/tgs/core/byond_world_export.dm b/code/modules/tgs/core/byond_world_export.dm new file mode 100644 index 000000000000..6ef8d841b8f7 --- /dev/null +++ b/code/modules/tgs/core/byond_world_export.dm @@ -0,0 +1,22 @@ +/datum/tgs_http_handler/byond_world_export + +/datum/tgs_http_handler/byond_world_export/PerformGet(url) + // This is an infinite sleep until we get a response + var/export_response = world.Export(url) + TGS_DEBUG_LOG("byond_world_export: Export complete") + + if(!export_response) + TGS_ERROR_LOG("byond_world_export: Failed request: [url]") + return new /datum/tgs_http_result(null, FALSE) + + var/content = export_response["CONTENT"] + if(!content) + TGS_ERROR_LOG("byond_world_export: Failed request, missing content!") + return new /datum/tgs_http_result(null, FALSE) + + var/response_json = TGS_FILE2TEXT_NATIVE(content) + if(!response_json) + TGS_ERROR_LOG("byond_world_export: Failed request, failed to load content!") + return new /datum/tgs_http_result(null, FALSE) + + return new /datum/tgs_http_result(response_json, TRUE) diff --git a/code/modules/tgs/core/core.dm b/code/modules/tgs/core/core.dm index 15622228e91f..63cb5a2c3514 100644 --- a/code/modules/tgs/core/core.dm +++ b/code/modules/tgs/core/core.dm @@ -1,4 +1,4 @@ -/world/TgsNew(datum/tgs_event_handler/event_handler, minimum_required_security_level = TGS_SECURITY_ULTRASAFE) +/world/TgsNew(datum/tgs_event_handler/event_handler, minimum_required_security_level = TGS_SECURITY_ULTRASAFE, datum/tgs_http_handler/http_handler = null) var/current_api = TGS_READ_GLOBAL(tgs) if(current_api) TGS_ERROR_LOG("API datum already set (\ref[current_api] ([current_api]))! Was TgsNew() called more than once?") @@ -55,7 +55,10 @@ TGS_ERROR_LOG("Invalid parameter for event_handler: [event_handler]") event_handler = null - var/datum/tgs_api/new_api = new api_datum(event_handler, version) + if(!http_handler) + http_handler = new /datum/tgs_http_handler/byond_world_export + + var/datum/tgs_api/new_api = new api_datum(event_handler, version, http_handler) TGS_WRITE_GLOBAL(tgs, new_api) diff --git a/code/modules/tgs/core/datum.dm b/code/modules/tgs/core/datum.dm index 898516f12486..3ca53e9bf7c6 100644 --- a/code/modules/tgs/core/datum.dm +++ b/code/modules/tgs/core/datum.dm @@ -6,8 +6,8 @@ TGS_DEFINE_AND_SET_GLOBAL(tgs, null) var/list/warned_deprecated_command_runs -/datum/tgs_api/New(datum/tgs_event_handler/event_handler, datum/tgs_version/version) - . = ..() +/datum/tgs_api/New(datum/tgs_event_handler/event_handler, datum/tgs_version/version, datum/tgs_http_handler/http_handler) + ..() src.event_handler = event_handler src.version = version diff --git a/code/modules/tgs/core/tgs_version.dm b/code/modules/tgs/core/tgs_version.dm index a5dae1241a30..bc561e67487a 100644 --- a/code/modules/tgs/core/tgs_version.dm +++ b/code/modules/tgs/core/tgs_version.dm @@ -1,4 +1,5 @@ /datum/tgs_version/New(raw_parameter) + ..() src.raw_parameter = raw_parameter deprefixed_parameter = replacetext(raw_parameter, "/tg/station 13 Server v", "") var/list/version_bits = splittext(deprefixed_parameter, ".") diff --git a/code/modules/tgs/includes.dm b/code/modules/tgs/includes.dm index 23b714f9d064..f5118ed55a3c 100644 --- a/code/modules/tgs/includes.dm +++ b/code/modules/tgs/includes.dm @@ -1,4 +1,5 @@ #include "core\_definitions.dm" +#include "core\byond_world_export.dm" #include "core\core.dm" #include "core\datum.dm" #include "core\tgs_version.dm" diff --git a/code/modules/tgs/v5/__interop_version.dm b/code/modules/tgs/v5/__interop_version.dm index f4806f7adb97..29ea239ad84d 100644 --- a/code/modules/tgs/v5/__interop_version.dm +++ b/code/modules/tgs/v5/__interop_version.dm @@ -1 +1 @@ -"5.9.0" +"5.10.0" diff --git a/code/modules/tgs/v5/_defines.dm b/code/modules/tgs/v5/_defines.dm index 92c7a8388a71..a47bfd78000b 100644 --- a/code/modules/tgs/v5/_defines.dm +++ b/code/modules/tgs/v5/_defines.dm @@ -95,6 +95,7 @@ #define DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION "newServerVersion" #define DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE "broadcastMessage" +#define DMAPI5_TOPIC_RESPONSE_CLIENT_COUNT "clientCount" #define DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE "commandResponse" #define DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE "commandResponseMessage" #define DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES "chatResponses" diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index 95b8edd3ee5c..3e328fc7c27d 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -31,9 +31,12 @@ var/detached = FALSE -/datum/tgs_api/v5/New() + var/datum/tgs_http_handler/http_handler + +/datum/tgs_api/v5/New(datum/tgs_event_handler/event_handler, datum/tgs_version/version, datum/tgs_http_handler/http_handler) . = ..() interop_version = version + src.http_handler = http_handler TGS_DEBUG_LOG("V5 API created: [json_encode(args)]") /datum/tgs_api/v5/ApiVersion() @@ -50,7 +53,9 @@ version = null // we want this to be the TGS version, not the interop version // sleep once to prevent an issue where world.Export on the first tick can hang indefinitely + TGS_DEBUG_LOG("Starting Export bug prevention sleep tick. time:[world.time] sleep_offline:[world.sleep_offline]") sleep(world.tick_lag) + TGS_DEBUG_LOG("Export bug prevention sleep complete") var/list/bridge_response = Bridge(DMAPI5_BRIDGE_COMMAND_STARTUP, list(DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL = minimum_required_security_level, DMAPI5_BRIDGE_PARAMETER_VERSION = api_version.raw_parameter, DMAPI5_PARAMETER_CUSTOM_COMMANDS = ListCustomCommands(), DMAPI5_PARAMETER_TOPIC_PORT = GetTopicPort())) if(!istype(bridge_response)) diff --git a/code/modules/tgs/v5/bridge.dm b/code/modules/tgs/v5/bridge.dm index 0c5e701a32b6..62201fcc9e58 100644 --- a/code/modules/tgs/v5/bridge.dm +++ b/code/modules/tgs/v5/bridge.dm @@ -78,27 +78,24 @@ WaitForReattach(FALSE) TGS_DEBUG_LOG("Bridge request start") - // This is an infinite sleep until we get a response - var/export_response = world.Export(bridge_request) + var/datum/tgs_http_result/result = http_handler.PerformGet(bridge_request) TGS_DEBUG_LOG("Bridge request complete") - if(!export_response) - TGS_ERROR_LOG("Failed bridge request: [bridge_request]") + if(isnull(result)) + TGS_ERROR_LOG("Failed bridge request, handler returned null!") return - var/content = export_response["CONTENT"] - if(!content) - TGS_ERROR_LOG("Failed bridge request, missing content!") + if(!istype(result) || result.type != /datum/tgs_http_result) + TGS_ERROR_LOG("Failed bridge request, handler returned non-[/datum/tgs_http_result]!") return - var/response_json = TGS_FILE2TEXT_NATIVE(content) - if(!response_json) - TGS_ERROR_LOG("Failed bridge request, failed to load content!") + if(!result.success) + TGS_DEBUG_LOG("Failed bridge request, HTTP request failed!") return - var/list/bridge_response = json_decode(response_json) + var/list/bridge_response = json_decode(result.response_text) if(!bridge_response) - TGS_ERROR_LOG("Failed bridge request, bad json: [response_json]") + TGS_ERROR_LOG("Failed bridge request, bad json: [result.response_text]") return var/error = bridge_response[DMAPI5_RESPONSE_ERROR_MESSAGE] diff --git a/code/modules/tgs/v5/topic.dm b/code/modules/tgs/v5/topic.dm index e1f2cb638578..59e5e63e5cd4 100644 --- a/code/modules/tgs/v5/topic.dm +++ b/code/modules/tgs/v5/topic.dm @@ -149,7 +149,9 @@ if(DMAPI5_TOPIC_COMMAND_HEALTHCHECK) if(event_handler && event_handler.receive_health_checks) event_handler.HandleEvent(TGS_EVENT_HEALTH_CHECK) - return TopicResponse() + var/list/health_check_response = TopicResponse() + health_check_response[DMAPI5_TOPIC_RESPONSE_CLIENT_COUNT] = TGS_CLIENT_COUNT + return health_check_response; if(DMAPI5_TOPIC_COMMAND_WATCHDOG_REATTACH) detached = FALSE diff --git a/code/modules/tgs/v5/undefs.dm b/code/modules/tgs/v5/undefs.dm index 237207fdfd05..acd19dfa6411 100644 --- a/code/modules/tgs/v5/undefs.dm +++ b/code/modules/tgs/v5/undefs.dm @@ -18,7 +18,6 @@ #undef DMAPI5_PARAMETER_ACCESS_IDENTIFIER #undef DMAPI5_PARAMETER_CUSTOM_COMMANDS -#undef DMAPI5_PARAMETER_TOPIC_PORT #undef DMAPI5_CHUNK #undef DMAPI5_CHUNK_PAYLOAD @@ -95,6 +94,7 @@ #undef DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION #undef DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE +#undef DMAPI5_TOPIC_RESPONSE_CLIENT_COUNT #undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE #undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE #undef DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES diff --git a/code/modules/tgui/states.dm b/code/modules/tgui/states.dm index e43deb373a09..16fa83445c50 100644 --- a/code/modules/tgui/states.dm +++ b/code/modules/tgui/states.dm @@ -73,7 +73,8 @@ /mob/living/shared_ui_interaction(src_object) . = ..() - if(!(mobility_flags & MOBILITY_UI) && . == UI_INTERACTIVE) + var/obj/item/object = src_object + if(!(mobility_flags & MOBILITY_UI) && !(object.interaction_flags_atom & INTERACT_ATOM_IGNORE_MOBILITY) && . == UI_INTERACTIVE) return UI_UPDATE /mob/living/silicon/ai/shared_ui_interaction(src_object) diff --git a/code/modules/tgui_input/alert.dm b/code/modules/tgui_input/alert.dm index a9d8955c0a34..4ff7ab81ab15 100644 --- a/code/modules/tgui_input/alert.dm +++ b/code/modules/tgui_input/alert.dm @@ -70,7 +70,7 @@ start_time = world.time QDEL_IN(src, timeout) -/datum/tgui_alert/Destroy(force, ...) +/datum/tgui_alert/Destroy(force) SStgui.close_uis(src) QDEL_NULL(buttons) return ..() diff --git a/code/modules/tgui_input/checkboxes.dm b/code/modules/tgui_input/checkboxes.dm index 7b1129af30cc..87b9ac3ddd00 100644 --- a/code/modules/tgui_input/checkboxes.dm +++ b/code/modules/tgui_input/checkboxes.dm @@ -63,7 +63,7 @@ start_time = world.time QDEL_IN(src, timeout) -/datum/tgui_checkbox_input/Destroy(force, ...) +/datum/tgui_checkbox_input/Destroy(force) SStgui.close_uis(src) QDEL_NULL(items) diff --git a/code/modules/tgui_input/color.dm b/code/modules/tgui_input/color.dm index 2c37ad03086e..fe161b2e6a92 100644 --- a/code/modules/tgui_input/color.dm +++ b/code/modules/tgui_input/color.dm @@ -60,7 +60,7 @@ start_time = world.time QDEL_IN(src, timeout) -/datum/tgui_color_picker/Destroy(force, ...) +/datum/tgui_color_picker/Destroy(force) SStgui.close_uis(src) . = ..() diff --git a/code/modules/tgui_input/list.dm b/code/modules/tgui_input/list.dm index abac3ec43561..9fefd4f2fa83 100644 --- a/code/modules/tgui_input/list.dm +++ b/code/modules/tgui_input/list.dm @@ -79,7 +79,7 @@ start_time = world.time QDEL_IN(src, timeout) -/datum/tgui_list_input/Destroy(force, ...) +/datum/tgui_list_input/Destroy(force) SStgui.close_uis(src) QDEL_NULL(items) return ..() diff --git a/code/modules/tgui_input/number.dm b/code/modules/tgui_input/number.dm index 7f2918d87c7c..10413c3f175f 100644 --- a/code/modules/tgui_input/number.dm +++ b/code/modules/tgui_input/number.dm @@ -85,7 +85,7 @@ if(default > max_value) CRASH("Default value is greater than max value.") -/datum/tgui_input_number/Destroy(force, ...) +/datum/tgui_input_number/Destroy(force) SStgui.close_uis(src) return ..() diff --git a/code/modules/tgui_input/text.dm b/code/modules/tgui_input/text.dm index 1571ad6b5522..29c59ba20183 100644 --- a/code/modules/tgui_input/text.dm +++ b/code/modules/tgui_input/text.dm @@ -83,7 +83,7 @@ start_time = world.time QDEL_IN(src, timeout) -/datum/tgui_input_text/Destroy(force, ...) +/datum/tgui_input_text/Destroy(force) SStgui.close_uis(src) return ..() diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm index 49539920920c..757fe67d81e2 100644 --- a/code/modules/tooltip/tooltip.dm +++ b/code/modules/tooltip/tooltip.dm @@ -100,7 +100,7 @@ Notes: /datum/tooltip/proc/do_hide() winshow(owner, control, FALSE) -/datum/tooltip/Destroy(force, ...) +/datum/tooltip/Destroy(force) last_target = null return ..() diff --git a/code/modules/tutorials/_tutorial.dm b/code/modules/tutorials/_tutorial.dm index 810960f9fa7f..7d4e31646750 100644 --- a/code/modules/tutorials/_tutorial.dm +++ b/code/modules/tutorials/_tutorial.dm @@ -16,7 +16,7 @@ RegisterSignal(user, COMSIG_QDELETING, PROC_REF(destroy_self)) RegisterSignal(user.client, COMSIG_QDELETING, PROC_REF(destroy_self)) -/datum/tutorial/Destroy(force, ...) +/datum/tutorial/Destroy(force) user.client?.screen -= instruction_screen QDEL_NULL(instruction_screen) @@ -163,7 +163,7 @@ ASSERT(ispath(tutorial_type, /datum/tutorial)) src.tutorial_type = tutorial_type -/datum/tutorial_manager/Destroy(force, ...) +/datum/tutorial_manager/Destroy(force) if (!force) stack_trace("Something is trying to destroy [type], which is a singleton") return QDEL_HINT_LETMELIVE diff --git a/code/modules/tutorials/tutorials/drop.dm b/code/modules/tutorials/tutorials/drop.dm index de692edab433..06980b28848d 100644 --- a/code/modules/tutorials/tutorials/drop.dm +++ b/code/modules/tutorials/tutorials/drop.dm @@ -12,7 +12,7 @@ var/atom/movable/screen/drop_preview var/obj/last_held_item -/datum/tutorial/drop/Destroy(force, ...) +/datum/tutorial/drop/Destroy(force) last_held_item = null user.client?.screen -= drop_preview QDEL_NULL(drop_preview) diff --git a/code/modules/tutorials/tutorials/switch_hands.dm b/code/modules/tutorials/tutorials/switch_hands.dm index bf27a9e9d83a..f1bcbbb3b711 100644 --- a/code/modules/tutorials/tutorials/switch_hands.dm +++ b/code/modules/tutorials/tutorials/switch_hands.dm @@ -19,7 +19,7 @@ hand_to_watch = (user.active_hand_index % user.held_items.len) + 1 -/datum/tutorial/switch_hands/Destroy(force, ...) +/datum/tutorial/switch_hands/Destroy(force) user.client?.screen -= hand_preview QDEL_NULL(hand_preview) diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 1a4fde137abf..0d373b931c25 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -141,6 +141,7 @@ #include "json_savefile_importing.dm" #include "keybinding_init.dm" #include "knockoff_component.dm" +#include "language_key_conflicts.dm" #include "leash.dm" #include "lesserform.dm" #include "limbsanity.dm" @@ -209,6 +210,7 @@ #include "species_unique_id.dm" #include "species_whitelists.dm" #include "spell_invocations.dm" +#include "spell_jaunt.dm" #include "spell_mindswap.dm" #include "spell_names.dm" #include "spell_shapeshift.dm" diff --git a/code/modules/unit_tests/area_contents.dm b/code/modules/unit_tests/area_contents.dm index 8a48d644ee96..52394dd60ec2 100644 --- a/code/modules/unit_tests/area_contents.dm +++ b/code/modules/unit_tests/area_contents.dm @@ -6,23 +6,28 @@ /datum/unit_test/area_contents/Run() // First, we check that there are no entries in more then one area // That or duplicate entries - for(var/area/space in GLOB.areas) - for(var/turf/position as anything in space.get_contained_turfs()) - if(!isturf(position)) - TEST_FAIL("Found a [position.type] in [space.type]'s turf listing") + for (var/area/area_to_test in GLOB.areas) + area_to_test.cannonize_contained_turfs() + for (var/i in 1 to area_to_test.turfs_by_zlevel.len) + if (!islist(area_to_test.turfs_by_zlevel[i])) + TEST_FAIL("zlevel index [i] in [area_to_test.type] is not a list.") - if(position.in_contents_of) - var/area/existing = position.in_contents_of - if(existing == space) - TEST_FAIL("Found a duplicate turf [position.type] inside [space.type]'s turf listing") - else - TEST_FAIL("Found a shared turf [position.type] between [space.type] and [existing.type]'s turf listings") + for (var/turf/turf_to_check as anything in area_to_test.turfs_by_zlevel[i]) + if (!isturf(turf_to_check)) + TEST_FAIL("Found a [turf_to_check.type] in [area_to_test.type]'s turf listing") - var/area/dream_spot = position.loc - if(dream_spot != space) - TEST_FAIL("Found a turf [position.type] which is IN [dream_spot.type], but is registered as being in [space.type]") + if (turf_to_check.in_contents_of) + var/area/existing = turf_to_check.in_contents_of + if (existing == turf_to_check) + TEST_FAIL("Found a duplicate turf [turf_to_check.type] inside [area_to_test.type]'s turf listing") + else + TEST_FAIL("Found a shared turf [turf_to_check.type] between [area_to_test.type] and [existing.type]'s turf listings") - position.in_contents_of = space + var/area/turfs_actual_area = turf_to_check.loc + if (turfs_actual_area != area_to_test) + TEST_FAIL("Found a turf [turf_to_check.type] which is IN [turfs_actual_area.type], but is registered as being in [area_to_test.type]") + + turf_to_check.in_contents_of = turf_to_check for(var/turf/position in ALL_TURFS()) if(!position.in_contents_of) diff --git a/code/modules/unit_tests/atmospherics_sanity.dm b/code/modules/unit_tests/atmospherics_sanity.dm index c4f024e9178b..ff177ae4517b 100644 --- a/code/modules/unit_tests/atmospherics_sanity.dm +++ b/code/modules/unit_tests/atmospherics_sanity.dm @@ -101,7 +101,7 @@ UNTIL(crawls == 0) for(var/area/missed as anything in remaining_areas) if(missed.has_contained_turfs()) - var/turf/first_turf = missed.get_contained_turfs()[1] + var/turf/first_turf = missed.get_zlevel_turf_lists()[1][1] TEST_FAIL("Disconnected Area '[missed]'([missed.type]) at ([first_turf.x], [first_turf.y], [first_turf.z])") else TEST_NOTICE(src, "Disconnected Area '[missed]'([missed.type]) with no turfs?") diff --git a/code/modules/unit_tests/create_and_destroy.dm b/code/modules/unit_tests/create_and_destroy.dm index 0a9b5b8a99ff..0c9498b19bf2 100644 --- a/code/modules/unit_tests/create_and_destroy.dm +++ b/code/modules/unit_tests/create_and_destroy.dm @@ -101,6 +101,9 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) TEST_FAIL("[item.name] failed to respect force deletion [item.no_respect_force] times out of a total del count of [item.qdels]") if(item.no_hint) TEST_FAIL("[item.name] failed to return a qdel hint [item.no_hint] times out of a total del count of [item.qdels]") + if(LAZYLEN(item.extra_details)) + var/details = item.extra_details.Join("\n") + TEST_FAIL("[item.name] failed with extra info: \n[details]") cache_for_sonic_speed = SSatoms.BadInitializeCalls for(var/path in cache_for_sonic_speed) diff --git a/code/modules/unit_tests/heretic_rituals.dm b/code/modules/unit_tests/heretic_rituals.dm index 257221163445..d03bed574b6d 100644 --- a/code/modules/unit_tests/heretic_rituals.dm +++ b/code/modules/unit_tests/heretic_rituals.dm @@ -104,14 +104,13 @@ // Finally, we checked all of our resulting atoms and cleaned them up. // The nearby_atoms list should be devoid of any atom/movables now. Let's double-check that. for(var/atom/thing as anything in nearby_atoms) - if(!ismovable(thing)) + if(!ismovable(thing) || istype(thing, /obj/effect/abstract)) continue // There are atoms around the rune still, and there shouldn't be. // All component atoms were consumed, and all resulting atoms were cleaned up. // This means the ritual may have messed up somewhere. Throw a fail and clean them up so we can keep testing. - if(!istype(thing, /obj/effect/name_tag)) - TEST_FAIL("Heretic rituals: ([knowledge.type]) After completing the ritual, there were non-result atoms remaining on the rune. ([thing] - [thing.type])") + TEST_FAIL("Heretic rituals: ([knowledge.type]) After completing the ritual, there were non-result atoms remaining on the rune. ([thing] - [thing.type])") nearby_atoms -= thing qdel(thing) diff --git a/code/modules/unit_tests/language_key_conflicts.dm b/code/modules/unit_tests/language_key_conflicts.dm new file mode 100644 index 000000000000..bf15517195bd --- /dev/null +++ b/code/modules/unit_tests/language_key_conflicts.dm @@ -0,0 +1,15 @@ +/// This test ensures that multiple languages aren't mapped to the same prefix key. +/datum/unit_test/language_key_conflicts + +/datum/unit_test/language_key_conflicts/Run() + var/list/used_keys = list() + for(var/datum/language/language as anything in subtypesof(/datum/language)) + var/name = language::name + var/key = language::key + if(!key) + continue + if(used_keys[key]) + var/datum/language/conflicting_language = used_keys[key] + TEST_FAIL("[name] ([language]) uses the '[key]' prefix, which is also used by [conflicting_language::name] ([conflicting_language])!") + else + used_keys[key] = language diff --git a/code/modules/unit_tests/mapload_space_verification.dm b/code/modules/unit_tests/mapload_space_verification.dm index 6ff32145efa1..ff93799281e3 100644 --- a/code/modules/unit_tests/mapload_space_verification.dm +++ b/code/modules/unit_tests/mapload_space_verification.dm @@ -25,6 +25,7 @@ /area/station/solars, // magnet area is designed specifically to hold the asteroid /area/station/cargo/mining/asteroid_magnet, + /area/shipbreak, )) // We aren't planetary, so let's check area placements and ensure stuff lines up. diff --git a/code/modules/unit_tests/required_map_items.dm b/code/modules/unit_tests/required_map_items.dm index 5f5fe135a950..2f498667b16c 100644 --- a/code/modules/unit_tests/required_map_items.dm +++ b/code/modules/unit_tests/required_map_items.dm @@ -31,6 +31,7 @@ expected_types += /obj/machinery/cryopod expected_types += /obj/machinery/station_map/engineering expected_types += /obj/structure/cassette_rack/prefilled + expected_types += /obj/effect/landmark/start/gary ignored_types += /obj/machinery/cryopod/prison // monkestation end diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_krokodil_addict.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_krokodil_addict.png index 30f9080a6c3c..e9251e73cc54 100644 Binary files a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_krokodil_addict.png and b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_krokodil_addict.png differ diff --git a/code/modules/unit_tests/spell_jaunt.dm b/code/modules/unit_tests/spell_jaunt.dm new file mode 100644 index 000000000000..41446b71a591 --- /dev/null +++ b/code/modules/unit_tests/spell_jaunt.dm @@ -0,0 +1,21 @@ +/// Tests Shadow Walk can be entered and exited +/datum/unit_test/shadow_jaunt + +/datum/unit_test/shadow_jaunt/Run() + var/mob/living/carbon/human/jaunter = allocate(/mob/living/carbon/human/consistent) + var/datum/action/cooldown/spell/jaunt/shadow_walk/walk = allocate(/datum/action/cooldown/spell/jaunt/shadow_walk, jaunter) + walk.Grant(jaunter) + + var/turf/jaunt_turf = jaunter.loc + TEST_ASSERT(istype(jaunt_turf), "Jaunter was not allocated to a turf, instead to [jaunt_turf || "nullspace"].") + TEST_ASSERT(walk.IsAvailable(), "Unit test room is not suitable to test [walk].") + + walk.Trigger() + + TEST_ASSERT_NOTEQUAL(jaunter.loc, jaunt_turf, "Jaunter's loc did not change on casting [walk].") + TEST_ASSERT(istype(jaunter.loc, walk.jaunt_type), "Jaunter failed to enter jaunt on casting [walk].") + + walk.next_use_time = -1 + walk.Trigger() + + TEST_ASSERT_EQUAL(jaunter.loc, jaunt_turf, "Jaunter failed to exit jaunt on exiting [walk].") diff --git a/code/modules/uplink/uplink_items/device_tools.dm b/code/modules/uplink/uplink_items/device_tools.dm index 75d2801acb2b..cd13886b275c 100644 --- a/code/modules/uplink/uplink_items/device_tools.dm +++ b/code/modules/uplink/uplink_items/device_tools.dm @@ -38,7 +38,7 @@ the seemingly magical books of a certain cult. Though lacking the esoteric abilities \ of the originals, these inferior copies are still quite useful, being able to provide \ both weal and woe on the battlefield, even if they do occasionally bite off a finger." - item = /obj/item/storage/book/bible/syndicate + item = /obj/item/book/bible/syndicate cost = 5 /datum/uplink_item/device_tools/tram_remote diff --git a/code/modules/uplink/uplink_items/job.dm b/code/modules/uplink/uplink_items/job.dm index fad2f28193c3..27e838f6cc79 100644 --- a/code/modules/uplink/uplink_items/job.dm +++ b/code/modules/uplink/uplink_items/job.dm @@ -207,7 +207,7 @@ desc = "An implant that grants you a recharging laser gun inside your arm. Weak to EMPs. Comes with a syndicate autosurgeon for immediate self-application." progression_minimum = 20 MINUTES cost = 10 - item = /obj/item/autosurgeon/syndicate/laser_arm + item = /obj/item/storage/box/syndie_kit/laser_arm restricted_roles = list(JOB_ROBOTICIST, JOB_RESEARCH_DIRECTOR) surplus = 20 diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm index 61adf5f39b9c..b4dc2d8dc4de 100644 --- a/code/modules/uplink/uplink_items/nukeops.dm +++ b/code/modules/uplink/uplink_items/nukeops.dm @@ -108,7 +108,7 @@ desc = "A fully-loaded Scarborough Arms bullpup submachine gun. The C-20r fires .45 rounds with a \ 24-round magazine and is compatible with suppressors." item = /obj/item/gun/ballistic/automatic/c20r - cost = 13 + cost = 10 surplus = 40 purchasable_from = UPLINK_NUKE_OPS diff --git a/code/modules/vehicles/_vehicle.dm b/code/modules/vehicles/_vehicle.dm index 03554ac081d4..ca666292a3f5 100644 --- a/code/modules/vehicles/_vehicle.dm +++ b/code/modules/vehicles/_vehicle.dm @@ -51,6 +51,7 @@ autogrant_actions_controller = list() occupant_actions = list() generate_actions() + ADD_TRAIT(src, TRAIT_CASTABLE_LOC, INNATE_TRAIT) /obj/vehicle/Destroy(force) QDEL_NULL(trailer) diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 03e2862c2eb2..f546cb369d66 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -175,8 +175,6 @@ var/onstation_override = FALSE //change this on the object on the map to override the onstation check. DO NOT APPLY THIS GLOBALLY. var/list/vending_machine_input = list() - ///Display header on the input view - var/input_display_header = "Custom Vendor" //The type of refill canisters used by this machine. var/obj/item/vending_refill/refill_canister = null @@ -214,6 +212,11 @@ set_wires(new /datum/wires/vending(src)) if(build_inv) //non-constructable vending machine + ///Non-constructible vending machines do not have a refill canister to populate its products list from, + ///Which apparently is still needed in the case we use product categories instead. + if(product_categories) + for(var/list/category as anything in product_categories) + products |= category["products"] build_inventories() slogan_list = splittext(product_slogans, ";") @@ -697,6 +700,21 @@ /atom/movable/proc/post_tilt() return +/proc/check_atom_crushable(atom/atom_target) + /// Contains structures and items that vendors shouldn't crush when we land on them. + var/static/list/vendor_uncrushable_objects = list( + /obj/structure/chair, + /obj/machinery/conveyor, + ) + GLOB.WALLITEMS_INTERIOR + GLOB.WALLITEMS_EXTERIOR + + if(is_type_in_list(atom_target, vendor_uncrushable_objects)) //make sure its not in the list of "uncrushable" stuff + return FALSE + + if (atom_target.uses_integrity && !(atom_target.invisibility > SEE_INVISIBLE_LIVING)) //check if it has integrity + allow ninjas, etc to be crushed in cloak + return TRUE //SMUSH IT + + return FALSE + /obj/machinery/vending/post_crush_living(mob/living/crushed, was_alive) if(was_alive && crushed.stat == DEAD && crushed.client) @@ -805,7 +823,7 @@ post_crush_living(living_target, was_alive) flags_to_return |= (SUCCESSFULLY_CRUSHED_MOB|SUCCESSFULLY_CRUSHED_ATOM) - else if (atom_target.uses_integrity && !(atom_target.invisibility > SEE_INVISIBLE_LIVING) && !(is_type_in_typecache(atom_target, GLOB.WALLITEMS_INTERIOR) || is_type_in_typecache(atom_target, GLOB.WALLITEMS_EXTERIOR))) + else if(check_atom_crushable(atom_target)) atom_target.take_damage(adjusted_damage, damage_type, damage_flag, FALSE, crush_dir) crushed = TRUE flags_to_return |= SUCCESSFULLY_CRUSHED_ATOM @@ -991,22 +1009,22 @@ animate(src, transform = to_turn, 0.2 SECONDS) tilted_rotation = 0 -/obj/machinery/vending/proc/loadingAttempt(obj/item/I, mob/user) +/obj/machinery/vending/proc/loadingAttempt(obj/item/inserted_item, mob/user) . = TRUE - if(!user.transferItemToLoc(I, src)) + if(!user.transferItemToLoc(inserted_item, src)) return FALSE - to_chat(user, span_notice("You insert [I] into [src]'s input compartment.")) + to_chat(user, span_notice("You insert [inserted_item] into [src]'s input compartment.")) for(var/datum/data/vending_product/product_datum in product_records + coin_records + hidden_records) - if(ispath(I.type, product_datum.product_path)) + if(inserted_item.type == product_datum.product_path) product_datum.amount++ - LAZYADD(product_datum.returned_products, I) + LAZYADD(product_datum.returned_products, inserted_item) return - if(vending_machine_input[format_text(I.name)]) - vending_machine_input[format_text(I.name)]++ + if(vending_machine_input[inserted_item.type]) + vending_machine_input[inserted_item.type]++ else - vending_machine_input[format_text(I.name)] = 1 + vending_machine_input[inserted_item.type] = 1 loaded_items++ /obj/machinery/vending/unbuckle_mob(mob/living/buckled_mob, force = FALSE, can_fall = TRUE) @@ -1160,11 +1178,12 @@ for (var/datum/data/vending_product/product_record in product_records + coin_records + hidden_records) var/list/product_data = list( name = product_record.name, + path = replacetext(replacetext("[product_record.product_path]", "/obj/item/", ""), "/", "-"), amount = product_record.amount, colorable = product_record.colorable, ) - .["stock"][product_record.name] = product_data + .["stock"][product_data["path"]] = product_data .["extended_inventory"] = extended_inventory @@ -1322,9 +1341,9 @@ vended_item.set_greyscale(colors=greyscale_colors) R.amount-- if(usr.CanReach(src) && usr.put_in_hands(vended_item)) - to_chat(usr, span_notice("You take [R.name] out of the slot.")) + to_chat(usr, span_notice("You take \the [R.name] out of the slot.")) else - to_chat(usr, span_warning("[capitalize(R.name)] falls onto the floor!")) + to_chat(usr, span_warning("[capitalize(format_text(R.name))] falls onto the floor!")) SSblackbox.record_feedback("nested tally", "vending_machine_usage", 1, list("[name]", "[R.name]")) vend_ready = TRUE @@ -1439,10 +1458,10 @@ * * I - the item being loaded * * user - the user doing the loading */ -/obj/machinery/vending/proc/canLoadItem(obj/item/I, mob/user) - if((I.type in products) || (I.type in premium) || (I.type in contraband)) +/obj/machinery/vending/proc/canLoadItem(obj/item/loaded_item, mob/user) + if(!length(loaded_item.contents) && ((loaded_item.type in products) || (loaded_item.type in premium) || (loaded_item.type in contraband))) return TRUE - to_chat(user, span_warning("[src] does not accept [I]!")) + to_chat(user, span_warning("[src] does not accept [loaded_item]!")) return FALSE /obj/machinery/vending/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) @@ -1511,25 +1530,26 @@ . = ..() .["access"] = compartmentLoadAccessCheck(user) .["vending_machine_input"] = list() - for (var/O in vending_machine_input) - if(vending_machine_input[O] > 0) + for (var/obj/item/stocked_item as anything in vending_machine_input) + if(vending_machine_input[stocked_item] > 0) var/base64 var/price = 0 - for(var/obj/item/T in contents) - if(format_text(T.name) == O) - price = T.custom_price - if(!base64) - if(base64_cache[T.type]) - base64 = base64_cache[T.type] + for(var/obj/item/stored_item in contents) + if(stored_item.type == stocked_item) + price = stored_item.custom_price + if(!base64) //generate an icon of the item to use in UI + if(base64_cache[stored_item.type]) + base64 = base64_cache[stored_item.type] else - base64 = icon2base64(getFlatIcon(T, no_anim=TRUE)) - base64_cache[T.type] = base64 + base64 = icon2base64(getFlatIcon(stored_item, no_anim=TRUE)) + base64_cache[stored_item.type] = base64 break var/list/data = list( - name = O, + path = stocked_item, + name = initial(stocked_item.name), price = price, img = base64, - amount = vending_machine_input[O], + amount = vending_machine_input[stocked_item], colorable = FALSE ) .["vending_machine_input"] += list(data) @@ -1541,7 +1561,8 @@ switch(action) if("dispense") if(isliving(usr)) - vend_act(usr, params["item"]) + vend_act(usr, params) + vend_ready = TRUE vend_ready = TRUE return TRUE @@ -1580,9 +1601,10 @@ * Updating stock, account transactions, alerting users. * @return -- TRUE if a valid condition was met, FALSE otherwise. */ -/obj/machinery/vending/custom/proc/vend_act(mob/living/user, choice) +/obj/machinery/vending/custom/proc/vend_act(mob/living/user, list/params) if(!vend_ready) return + var/obj/item/choice = text2path(params["item"]) // typepath is a string coming from javascript, we need to convert it back var/obj/item/dispensed_item var/obj/item/card/id/id_card = user.get_idcard(TRUE) vend_ready = FALSE @@ -1591,8 +1613,8 @@ flick(icon_deny, src) return TRUE var/datum/bank_account/payee = id_card.registered_account - for(var/obj/stock in contents) - if(format_text(stock.name) == choice) + for(var/obj/item/stock in contents) + if(istype(stock, choice)) dispensed_item = stock break if(!dispensed_item) diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index b1c6508ec219..ff4615ae875e 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -67,6 +67,9 @@ /obj/item/clothing/under/costume/worldchampiongi = 1, /obj/item/clothing/head/milkmanhat = 2, /obj/item/clothing/under/costume/milkman = 2, + /obj/item/clothing/shoes/bb_slippers = 1, + /obj/item/clothing/head/bb_wig = 1, + /obj/item/clothing/under/costume/bb_dress = 1, //Monkestation Addition end ), ), @@ -88,6 +91,14 @@ /obj/item/clothing/suit/costume/shrine_maiden = 1, /obj/item/gohei = 1, /obj/item/clothing/under/costume/skeleton = 1, + //Monkestation Addition start + /obj/item/clothing/shoes/costume_2021/infinity_shoes = 5, + /obj/item/clothing/under/costume/infinity_under = 5, + /obj/item/clothing/suit/infinity_jacket = 5, + /obj/item/clothing/gloves/infinity_gloves = 5, + /obj/item/clothing/suit/thekiller_robe = 1, + /obj/item/clothing/head/thekiller_head = 1, + //Monkestation Addition end ), ), list( @@ -227,6 +238,10 @@ /obj/item/clothing/suit/shipwreckedsuit = 2, /obj/item/clothing/head/kingofbugshelmet = 2, /obj/item/clothing/suit/kingofbugssuit = 2, + /obj/item/clothing/shoes/crueltysquad_shoes = 2, // MONKESTATION EDIT ADDITION + /obj/item/clothing/under/costume/crueltysquad_under = 2, // MONKESTATION EDIT ADDITION + /obj/item/clothing/glasses/crueltysquad_glasses = 2, // MONKESTATION EDIT ADDITION + /obj/item/clothing/gloves/crueltysquad_gloves = 2, // MONKESTATION EDIT ADDITION ), ), ) @@ -261,6 +276,7 @@ /obj/item/clothing/under/dress/wedding_dress = 1, /obj/item/clothing/under/suit/tuxedo = 1, /obj/item/clothing/head/costume/weddingveil = 1, + /obj/item/clothing/under/dress/ballgown = 1, //MONKESTATION EDIT ADDITION /obj/item/storage/belt/fannypack/cummerbund = 1, /obj/item/clothing/suit/costume/drfreeze_coat = 1, /obj/item/clothing/under/costume/drfreeze = 1, diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 9e148451db63..3de82c5e6ceb 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -66,6 +66,7 @@ /obj/item/clothing/under/costume/buttondown/shorts = 4, /obj/item/clothing/under/dress/sundress = 2, /obj/item/clothing/under/dress/tango = 2, + /obj/item/clothing/under/dress/ballgown = 2, //MONKESTATION EDIT ADDITION /obj/item/clothing/under/dress/skirt/plaid = 4, /obj/item/clothing/under/dress/skirt/turtleskirt = 4, /obj/item/clothing/under/misc/overalls = 2, @@ -76,6 +77,7 @@ /obj/item/clothing/under/dress/sailor = 1, /obj/item/clothing/under/dress/redeveninggown = 1, /obj/item/clothing/suit/apron/purple_bartender = 2, + /obj/item/clothing/under/costume/citizen_uniform = 4, ), ), diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/drinnerware.dm index 6b8d2e75d1a8..2e57c0f53063 100644 --- a/code/modules/vending/drinnerware.dm +++ b/code/modules/vending/drinnerware.dm @@ -9,6 +9,12 @@ "name" = "Kitchen Utensils", "icon" = FA_ICON_KITCHEN_SET, "products" = list( + /obj/item/reagent_containers/cooking_container/deep_basket = 10, + /obj/item/reagent_containers/cooking_container/pan = 10, + /obj/item/reagent_containers/cooking_container/pot = 10, + /obj/item/reagent_containers/cooking_container/bowl = 10, + /obj/item/reagent_containers/cooking_container/oven = 10, + /obj/item/reagent_containers/cooking_container/board = 10, /obj/item/storage/bag/tray = 8, /obj/item/reagent_containers/cup/soup_pot = 3, /obj/item/kitchen/spoon/soup_ladle = 3, diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm index 36cf4076fa51..b99474175b2b 100644 --- a/code/modules/vending/medical.dm +++ b/code/modules/vending/medical.dm @@ -32,6 +32,7 @@ /obj/item/storage/medkit/advanced = 2, /obj/item/shears = 1, /obj/item/storage/organbox = 1, + /obj/item/clothing/gloves/latex/surgical = 1, //Monkestation Edit ) refill_canister = /obj/item/vending_refill/medical default_price = PAYCHECK_CREW diff --git a/code/modules/vending/plushvendor.dm b/code/modules/vending/plushvendor.dm new file mode 100644 index 000000000000..bf549b4aa30f --- /dev/null +++ b/code/modules/vending/plushvendor.dm @@ -0,0 +1,74 @@ +/obj/machinery/vending/plushvendor + name = "\improper Plushie Vendor" + desc = "A vending machine filled with trusty companions." + icon = 'monkestation/code/modules/blueshift/icons/obj/vending.dmi' + icon_state = "plushie" + panel_type = "panel4" + product_slogans = "For when the cold empty expanse of space is too much to bear!;Plushies made only from the highest quality material.;Collect them all and never be alone again!; Too cute to handle!" + product_ads = "The most reliable buddies!;They love the inside of your backpack!;Objectively the best toy!;Who needs people when you have plushies?" + vend_reply = "Have fun with your new friend!" + light_mask = "plushie-light-mask" + + product_categories = list( + list( + "name" = "Classic", + "icon" = "hand-sparkles", + "products" = list( + /obj/item/toy/plush/carpplushie = 1, + /obj/item/toy/plush/slimeplushie = 1, + /obj/item/toy/plush/lizard_plushie = 1, + /obj/item/toy/plush/snakeplushie = 1, + /obj/item/toy/plush/plasmamanplushie = 1, + /obj/item/toy/plush/moth = 1, + /obj/item/toy/plush/pkplush = 1, + /obj/item/toy/plush/beeplushie = 1, + ), + ), + list( + "name" = "Deluxe", + "icon" = "star", + "products" = list( + /obj/item/toy/plush/lizard_plushie/green = 1, + /obj/item/toy/plush/space_lizard_plushie = 1, + /obj/item/toy/plush/awakenedplushie = 1, + /obj/item/toy/plush/goatplushie = 1, + /obj/item/toy/plush/rouny = 1, + /obj/item/toy/plush/abductor = 1, + /obj/item/toy/plush/abductor/agent = 1, + /obj/item/toy/plush/greek_cucumber = 1, + ), + ), + list( + "name" = "Special", + "icon" = "diamond", + "products" = list(), + ), + ) + premium = list( + /obj/item/toy/plush/bubbleplush = 1, + /obj/item/toy/plush/ratplush = 1, + /obj/item/toy/plush/narplush = 1, + /obj/item/toy/plush/whiny_plushie = 1, + /obj/item/toy/plush/shark = 1, + ) + refill_canister = /obj/item/vending_refill/plushvendor + default_price = PAYCHECK_COMMAND * 3 //should be expensive + extra_price = PAYCHECK_COMMAND * 5 + payment_department = NO_FREEBIES + +/obj/machinery/vending/plushvendor/build_products_from_categories() //snowflake code to randomize plushies, breaks icon spreadsheets for random products + var/obj/item/vending_refill/R = locate() in component_parts + if(!R.product_categories && !R.contraband) + var/list/lobplush = subtypesof(/obj/item/toy/plush/lobotomy) + var/list/novaplush = subtypesof(/obj/item/toy/plush/nova) + for(var/i in 1 to 8) + contraband[pick_n_take(lobplush)] = 1 + product_categories[3]["products"][pick_n_take(novaplush)] = 1 + else + product_categories = R.product_categories.Copy() + contraband = R.contraband.Copy() + . = ..() + +/obj/item/vending_refill/plushvendor + machine_name = "\improper Plushie Vendor" + icon_state = "refill_plush" diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index 2e64c636db48..baf524c01ffc 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -33,7 +33,9 @@ /obj/item/grenade/stingbang = 1, /obj/item/watertank/pepperspray = 2, /obj/item/storage/belt/holster/energy = 4, - /obj/item/clothing/head/guardmanhelmet = 1, //monkestation edit: Guardman + /obj/item/clothing/head/helmet/civilprotection_helmet = 1, //monkestation edit + /obj/item/clothing/suit/armor/civilprotection_vest = 1, //monkestation edit + /obj/item/clothing/head/helmet/guardmanhelmet = 1, //monkestation edit: Guardman /obj/item/clothing/under/guardmanuniform = 1, //monkestation edit: Guardman /obj/item/clothing/suit/armor/guardmanvest = 1, //monkestation edit: Guardman /obj/item/citationinator = 3 // monkestation edit: security assistants diff --git a/code/modules/vending/snack.dm b/code/modules/vending/snack.dm index c5b58a5a6ef9..1e81679135b3 100644 --- a/code/modules/vending/snack.dm +++ b/code/modules/vending/snack.dm @@ -45,7 +45,6 @@ default_price = PAYCHECK_CREW * 0.6 extra_price = PAYCHECK_CREW payment_department = ACCOUNT_SRV - input_display_header = "Chef's Food Selection" /obj/item/vending_refill/snack machine_name = "Getmore Chocolate Corp" diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index ffbf6a098579..89efc62f8f57 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -5,7 +5,6 @@ default_price = PAYCHECK_CREW extra_price = PAYCHECK_COMMAND payment_department = NO_FREEBIES - input_display_header = "Returned Clothing" panel_type = "panel19" light_mask = "wardrobe-light-mask" @@ -38,6 +37,9 @@ /obj/item/clothing/under/rank/security/brig_physician/skirt = 3, //Monkestation edit /obj/item/clothing/suit/toggle/labcoat/brig_physician = 3, //Monkestation edit /obj/item/clothing/shoes/sneakers/secred = 3, //Monkestation edit + /obj/item/clothing/under/civilprotection_uniform = 1, //monkestation edit + /obj/item/clothing/gloves/civilprotection_gloves = 1, + /obj/item/clothing/shoes/civilprotection_boots = 1, //monkestation edit ) premium = list( /obj/item/clothing/under/rank/security/officer/formal = 3, @@ -50,7 +52,9 @@ /obj/item/clothing/suit/armor/secduster/cargo = 2, /obj/item/clothing/head/helmet/hat/cowboy/cargo = 2, /obj/item/clothing/suit/armor/secduster/science = 2, - /obj/item/clothing/head/helmet/hat/cowboy/science = 2 + /obj/item/clothing/head/helmet/hat/cowboy/science = 2, + /obj/item/clothing/head/cop_mascot = 1, // MONKESTATION EDIT ADDITION + /obj/item/clothing/under/costume/cop_mascot = 1, // MONKESTATION EDIT ADDITION ) refill_canister = /obj/item/vending_refill/wardrobe/sec_wardrobe payment_department = ACCOUNT_SEC diff --git a/code/modules/visuals/render_steps.dm b/code/modules/visuals/render_steps.dm index e29436596c6e..74cc7f80d7f7 100644 --- a/code/modules/visuals/render_steps.dm +++ b/code/modules/visuals/render_steps.dm @@ -12,16 +12,10 @@ //we'll display using that, so we gotta reset appearance_flags = KEEP_APART|KEEP_TOGETHER|RESET_TRANSFORM -/atom/movable/render_step/Initialize(mapload, atom/source) +/atom/movable/render_step/Initialize(mapload, source) . = ..() verbs.Cut() //Cargo cultttttt - - if(!source) - return - - render_source = source.render_target - SET_PLANE_EXPLICIT(src, initial(plane), source) - RegisterSignal(source, COMSIG_QDELETING, PROC_REF(on_source_deleting)) + render_source = source /atom/movable/render_step/ex_act(severity) return FALSE @@ -40,12 +34,6 @@ if(harderforce) return ..() -/atom/movable/render_step/proc/on_source_deleting(atom/source) - SIGNAL_HANDLER - - if(!QDELING(src)) - qdel(src) - /** * Render step that modfies an atom's color * Useful for creating coherent emissive blockers out of things like glass floors by lowering alpha statically using matrixes @@ -56,7 +44,7 @@ //RESET_COLOR is obvious I hope appearance_flags = KEEP_APART|KEEP_TOGETHER|RESET_COLOR|RESET_TRANSFORM -/atom/movable/render_step/color/Initialize(mapload, atom/source, color) +/atom/movable/render_step/color/Initialize(mapload, source, color) . = ..() src.color = color @@ -73,10 +61,11 @@ plane = EMISSIVE_PLANE appearance_flags = EMISSIVE_APPEARANCE_FLAGS|RESET_TRANSFORM -/atom/movable/render_step/emissive_blocker/Initialize(mapload, atom/source) +/atom/movable/render_step/emissive_blocker/Initialize(mapload, source) . = ..() src.color = GLOB.em_block_color + /** * Render step that makes the passed in render source GLOW * diff --git a/code/modules/wiremod/shell/compact_remote.dm b/code/modules/wiremod/shell/compact_remote.dm index 9c0361518319..02dabc8bbb72 100644 --- a/code/modules/wiremod/shell/compact_remote.dm +++ b/code/modules/wiremod/shell/compact_remote.dm @@ -45,6 +45,7 @@ /obj/item/circuit_component/compact_remote/proc/send_trigger(atom/source, mob/user) SIGNAL_HANDLER source.balloon_alert(user, "clicked primary button") - playsound(source, get_sfx(SFX_TERMINAL_TYPE), 25, FALSE) + //playsound(source, get_sfx(SFX_TERMINAL_TYPE), 25, FALSE) + playsound(src, SFX_BUTTON_CLICK, vol = 25, vary = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, mixer_channel = CHANNEL_MACHINERY) // monkestation edit: button sounds entity.set_output(user) signal.set_output(COMPONENT_SIGNAL) diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm index 376bef8fbfce..464bf9f3740c 100644 --- a/code/modules/zombie/items.dm +++ b/code/modules/zombie/items.dm @@ -35,7 +35,7 @@ return // spaceacillin has a 75% chance to block infection - if(istype(target) && target.reagents.has_reagent(/datum/reagent/medicine/antipathogenic/spaceacillin) && prob(75)) + if(HAS_TRAIT(target, TRAIT_VIRUS_RESISTANCE) && prob(75)) return var/obj/item/bodypart/actual_limb = target.get_bodypart(def_zone) diff --git a/config/monkestation/antag-tokens.toml b/config/monkestation/antag-tokens.toml index a6b25fbfd528..267c6c32c904 100644 --- a/config/monkestation/antag-tokens.toml +++ b/config/monkestation/antag-tokens.toml @@ -1,3 +1,3 @@ -low = ["traitor", "florida_man", "paradox_clone"] -medium = ["heretic", "bloodsucker"] +low = ["traitor", "florida_man", "paradox_clone", "cortical_borer"] +medium = ["heretic", "bloodsucker", "cortical_borer/hivemind"] high = ["cult", "rev/head", "wizard", "clock_cultist", "ninja"] diff --git a/html/changelogs/archive/2024-08.yml b/html/changelogs/archive/2024-08.yml index 04fff14ba16a..650f31bc5b5f 100644 --- a/html/changelogs/archive/2024-08.yml +++ b/html/changelogs/archive/2024-08.yml @@ -235,3 +235,182 @@ 2024-08-19: MomoBerri: - rscadd: new light subtypes for mappers +2024-08-20: + Absolucy: + - bugfix: The Ashen Forge traitor faction can now actually roll. + - bugfix: The Soft-Spoken quirk properly makes you speak softly again. + Absolucy, Momo8289, JohnFulpWillard, Wayland-Smithy, LT3: + - qol: Service personnel now show up in green in the crew monitor console. + - rscadd: The crew monitor now has sorting options and a search bar. + CannibalHunter: + - rscadd: Added new durrcell plushie to the monkeshop! +2024-08-21: + Absolucy: + - bugfix: The "Space Adaptation Effect" symptom now actually works as intended. + - bugfix: Fixed some runtimes related to pathology symptoms. + - code_imp: Cleaned up the code of some pathology symptoms. + - qol: Grey Tide viruses will no longer affect airlocks that lead to space. + - bugfix: Fixed a runtime related to ghost hearing. + - bugfix: Fixed some dirt tiles at centcom that wasted init time with useless atmos + processing. + - rscadd: Curators will now spawn with some of the tapes they've had approved (if + any) in their cassette rack. + - qol: Bulk cassette crates will no longer contain duplicates tapes. + Absolucy, 13spacemen, Melbert: + - code_imp: Poll alerts support small border pictures in the chat message. + - code_imp: Poll alert alert picture and jump target do not have to be the same. + - qol: Slime intelligence potions ask the user for a reason, this will be shown + to ghosts. + - bugfix: Fixes polling for things causing said things to have their planes and + layers screwed up (causing random objects or mobs to appear above runechat and + blindness, for example) + Absolucy, Vekter: + - bugfix: Fixed the DNA Infuser's circuit board missing from the techfab and tech + storage. + KnigTheThrasher: + - rscadd: Added wind turbines to lavaland mining base + Melbert: + - bugfix: Crewmembers immune to viruses won't be picked by the fake virus event. + RedBaronFlyer: + - qol: Janitorial has had a budget increase. All janitors are now equipped with + keyrings. + Wisemonster: + - rscdel: Removed the stage 2 hunger symptom + - bugfix: Fixed one of the bars in box station having flooring that can create chasms +2024-08-22: + Absolucy: + - refactor: Implemented batch marking for replays. Basically, this should somewhat + reduce lag caused by the replay system in some situations. + - bugfix: Fixed messages getting bolded for everyone when ghosts are watching. + - bugfix: Having a nonfunctional heart or lungs will no longer CONSTANTLY spam chat. + TTNT789: + - bugfix: makes the rage chemical system not explode you repeatedly apon implantation +2024-08-23: + DragonLee66: + - rscadd: gave the cryobeaker a different sprite +2024-08-24: + Absolucy: + - bugfix: Role prompts now properly show the preview pics in the chat. + - bugfix: Fixed intelligence potions being broken. + - bugfix: Fixed blood brother gear choosing being broken. +2024-08-25: + Absolucy: + - rscadd: Certain jobs, mostly most medical and the janitor, now have naturally + stronger immune systems. + - bugfix: Tide viruses now properly exclude external airlocks. + - qol: As part of an agreement with the Church of Carp'Sie, the windows and walls + for the aquarium on Blueshift-model stations has been reinforced. + - bugfix: Heavily optimized glowshrooms, resulting in far less lag during shroomlooses. + AlbertNanotracen: + - bugfix: Nanotrasen Cookery Command has ended the plague of staff complaining that + their tomato dishes are just complicated forms of soup by redefining "tomato + soup" to include a dash of cream. + - rscadd: Added butter slices, which you can make by cutting butter into 3. + - qol: Recipes that once required butter now only require a slice of it. With the + exception of the butter on a stick, of course. + - balance: Butter now requires 25 milk to mix and has 3 times as much nutriment. + - image: Resprited butter and butter on a stick using bluespace technology, managing + to compress more butter into a smaller space + - bugfix: ' Infinite spider eggs are no more.' + - bugfix: Removed duplicate and incorrect Yaki Imo recipe + - qol: "Swapped out the flour in \xC6losterrm\xE6sch with two dough slices, to avoid\ + \ competing reactions while preparing or cooking" + - spellcheck: Chicken nugget will have a description in the craft menu, and fiesta + skewers will have a description in general + - bugfix: Spell burger now has only one recipe + - bugfix: crafting recipes without a name, such as the mothic pizzas, will inherit + the name of the item they make + - rscadd: Added 28 new food recipes! + - qol: 'Martian fried noodles now requires 2 grown peanuts instead of + + salted peanut packet.' + - bugfix: Moussaka now only uses eggplants instead of eggplants and potatoes + - bugfix: Pita bread no longer burns on the griddle/oven + Tag114: + - bugfix: Fixes players being unable to switch back to the default title for Brig + Physician after selecting an alternate title. + ThePooba: + - rscadd: added multiple guns to traitor uplink under conspicious + Wisemonster: + - rscadd: Replaced the drone dispensers on blueshift and ouroboros with pre-loaded + variants + ven1883: + - bugfix: fixed cyberware quirks being incompatible with eachother + - bugfix: Bright Eyes now is incompatible with Body Purist +2024-08-27: + Absolucy: + - bugfix: Etheral disco balls now lag the server much less + - bugfix: Fixed the Overwatch subsystem initialization being reported as erroring, + despite the fact it initialized just fine. + ThePooba: + - rscadd: Choke on this smite + V2LenKagamine: + - rscadd: New Bomb Vest, strap it to someone for a little trolling +2024-08-28: + Absolucy: + - bugfix: Androids can no longer be transform stung by changelings. + - bugfix: Androids no longer suffer from liver failure. + - bugfix: Facehuggers no longer waste their lives trying to hug androids (who can't + host an embryo anyways.) + - bugfix: Cleaned up some more roundstart active turfs, leading to slightly better + init times. + - qol: The curator's PDA no longer disables ringer by default. + - rscadd: NT-Brand Auto Composters can now be built and deconstructed. + PotatoTomahto: + - bugfix: fixes holomap cursor and area hover text + Veth-s: + - rscadd: Malphy's canopics have been added to the game! +2024-08-29: + Absolucy: + - bugfix: Railings can now actually be deconstructed. + DexeeXI: + - qol: admin mods now have anti rad built it. it's shrimple. + - bugfix: fixes the cyka blyat id cards. + Gboster-0: + - rscadd: New magnitude of power, Raynawatt for all your PTL exporting needs + PotatoTomahto: + - bugfix: Liquid pump actually works now. + V2LenKagamine: + - rscadd: Wumpa. + Veth-s: + - rscadd: Added malphy's canopics to the game. + Wisemonster: + - bugfix: Heart disease (contracted from the heart attack random event) now has + the correct badness level + - bugfix: Fixed the radiation leak event, super-matter surge event, and random artifact + event not triggering. +2024-08-30: + Absolucy: + - bugfix: Fixed hydroponics trays not being able to go above 10% self-sustenance. + - bugfix: Fixed plants with >100 potency having small sprites when harvested. + RedBaronFlyer: + - qol: make the cart hold 2.5x more water + ThePooba: + - bugfix: now you can buy the worst gun in the game from your uplink for your henchmen +2024-08-31: + Absolucy: + - bugfix: Ghost messages are no longer bolded for speakers on another z-level. + - rscadd: Added an "event groups" mechanic to event/storyteller logic. + - rscadd: Events in the same group will all have a shared cooldown, and some groups + have a set maximum amount of times they can run. + - rscadd: The more times events in a group have been ran, the cooldown will become + more biased towards the upper bound of the possible cooldown time with each + run. + - rscadd: As an example, the "Anomalies" event group has a cooldown between 10 to + 25 minutes. + - sound: Spitting sounds now respect the volume mixer, and can't be heard from the + next room over. + SirNightKnight: + - rscadd: Nanotrasen has launched a new program to incentivize delivering mail. + Mail tokens are now found in every letter and can be returned to Central Command + for a decent bit of credits. + - qol: The supplying company has further genetically modified their tobacco seeds + to remove nutriment for an easier smoking experience. + - rscadd: Nanotrasen has approved Assistants signing up as Test Subjects. Peace + to the Intern Union! + - bugfix: The smoking pipe and cobpipe don't default to an error texture when lit. + - bugfix: Adjusted the smoking pipe texture to look better. + Wisemonster: + - balance: Removed the access requirements from the maint shutters leading to Blueshifts + north-west and north-east upper maints. + - balance: Reduced the stage 1 hunger symptom nutrition drain from 25 to 10 diff --git a/html/changelogs/archive/2024-09.yml b/html/changelogs/archive/2024-09.yml new file mode 100644 index 000000000000..8a9266891a78 --- /dev/null +++ b/html/changelogs/archive/2024-09.yml @@ -0,0 +1,439 @@ +2024-09-01: + Absolucy: + - bugfix: The Blah-Sucker and Ashtongue languages no longer conflict over the ",l" + prefix, as Ashtongue now uses ",a" + BoltonsHead: + - rscadd: the Policeman Mascot Head and Policeman Mascot Suit to the Secdrobe, where + you can purchase 2 in the premium section for 100 credits. + - rscadd: four more costumes! Alongside it is the Cruelty Squad main character clothing + to the autodrobe, + - rscadd: Infinity Jersey, wristbands, shorts, and sneakers to the autodrobe, + - rscadd: BB's wig, dress, and slippers to the autodrobe, + - rscadd: and The Killer's robe and head to the autodrobe. + - rscadd: Metrocop uniform to sectech drobe. + - rscadd: Citizen uniform to clothesmate. + SirNightKnight: + - bugfix: Made stamina a lil less wonky + ThePooba: + - balance: gchanged some nukeops gun prices +2024-09-02: + DexeeXI: + - bugfix: fixed solars on blueshift to wire correctly. + - rscadd: correctional officer lockers now require an id card. get buzzed, prisoner + scum. + - bugfix: swapped the empty industrial suit locker on blueshift for one with a loader + MOD. now move crates, cargo. + - bugfix: dumped the command livery for quartermaster on voidraptor. they are not + command. + - bugfix: blueshift qm office de-commanded. + - rscadd: air alarm and apc added to qm's office on blueshift. + - bugfix: ouroboros qm office de-commanded. + - bugfix: voidraptor atmos door now requires atmos perms. fuck off greytiders. + - bugfix: icebox's BP office found its missing cables. + - bugfix: plumbing constructor on meta now found. + - bugfix: voidraptor "command maintenance" now is actually radshielded. + SirNightKnight: + - rscadd: The Cybersun Juggernaut suit is now available for purchase for 20 TC from + the Syndicate uplink. + flleeppyy: + - bugfix: no more unlimited spit +2024-09-03: + Absolucy: + - balance: Alien surgical tables are now 20% faster. +2024-09-04: + Absolucy: + - refactor: Cleaned up code related to name tags. + - qol: Improved the font for name tags, making them easier to read. + - qol: The curator booth's radio is now lossless - it is unaffected by exospheric + anomalies. + - qol: Sitting in a chair no longer stops you from doing most actions. + - qol: You can now reach around filing cabinets and the radio microphone. + Flleeppyy, Punny: + - image: Added burnt emag and hack-o-lantern designs by PunnyPunny + - code_imp: added some more features to the microwave, items can now return COMPONENT_MICROWAVE + - "DONTEJECT", "DONTDIRTY", and "DONTOPEN" + PotatoTomahto: + - rscadd: Flasks can now be worn on the belt slot + RikuTheKiller: + - bugfix: Fixed a health update bug with Longevity Syndrome. + Sorenon: + - bugfix: reconnected atmos in kilo station science department + V2LenKagamine: + - rscadd: Axe Smithed Item + - rscadd: Spear Smithed Item + - rscadd: Blacksmith Cape + - rscadd: Industrial Electroplater. Ever wanted the shine of gold and the damage + of Plastitanium? -- Now buildable with boards + - rscadd: Material Alloyer. Allows you to alloy to materials, blending their stats! + Works with Smithed Items!-- Now buildable with boards + - rscadd: Material Analizer. For seeing aforementioned stats. -- Now buildable with + boards + - rscadd: Sell Smithed items for credits based on how well they're made and what + they're made of + - rscadd: 'Armor Smithing Items: Boots, Gloves, Helmet, and Chestplate.' + - rscadd: 'Smithing Crate: Now for all avid-smithy-goers! Contains an anvil,assembly + bench,material alloy board, material Analizer board,and industrial electroplater + board!' + - qol: Forges now Accept plasma Sheets as Fuel + - balance: Smithed tools are affected by their quality more. + - bugfix: Comment in primative.dm saying there were only 3 levels of smith. there + are 7. + - bugfix: The ability to rip something off the anvil mid-smithing has been removed. + - refactor: anvil and bench recipe files now not 'sword' and now human readable + Wisemonster: + - bugfix: Fixed Poly getting stuck in a hoarding loop + - bugfix: Fixed Poly being unable to speak + flleeppyy: + - admin: new Server verb for toggling deadchat "Toggle Deadchat" + lmenvs: + - rscadd: adds CaptainShiba's pet transformation and pet! Thank you for your patronage! + Sprites by AbberantQuerist. +2024-09-06: + Absolucy: + - bugfix: You can no longer cryo someone if their soul is in a soulcatcher. + - qol: Unarmed attacks with carp jaws now uses a bite effect rather than a punch + effect. + - qol: Scrubber overflows now use liquids instead of foam. + - qol: Sandstorm event announcement now uses normal direction names. + - rscadd: Added Grant All and Remove All buttons to ID consoles and agent IDs. + - qol: Clicking floor tiles now also closes curator/morgue doors, like with normal + airlocks. + - bugfix: Nanite defibrillation will no longer spam your ghost with notifications + when you can't be defibbed anyways. + KnigTheThrasher: + - bugfix: fixed asteroid magnet on kilostation + - rscadd: Updated nova permabrigs with monke content + LordVoidron: + - bugfix: Trashbag sprites while filled and worn no longer missing. + MichiRecRoom: + - rscadd: pAIs cards now have a clarity disclaimer in their examine text, regarding + their incompatibility with magic. Yes, this means silicons (including pAIs) + not seeing runes is intentional. + PotatoTomahto: + - rscadd: Adds a ballgown to the autodrobe and clothesmate. + - qol: Medical cyborg can use their health analyzer when in the dark or blind. + - bugfix: Fixes fugitive hunter victory end round text. + - bugfix: Restored old HOS trenchcoat sprite. Winter trenchcoat sprite also fixed. + - bugfix: Plush refill canister is actually in maint loot now. + RikuTheKiller: + - rscadd: You can now permanently remove NIFs through a surgery on the head called + "NIF debonding", but it requires OOC consent. + - bugfix: Cortical borers can regenerate as intended. + - bugfix: Cortical borer life ticks now follow subsystem delays, making them resistant + to lag. + - spellcheck: Cortical borer objectives are now better worded and have proper spelling + and punctuation. + The-Black-Screen: + - rscdel: removed kitchen and robotics access helpers from the morgue maintenance + airlock. + - bugfix: fixed the access helpers on the morgue medical airlock being the wrong + type. + Wisemonster: + - bugfix: The round-start status summary will only be green-shift if the current + storyteller is Ghost + - bugfix: Fixes Poly freezing up after speaking + - rscadd: Added 4 surgery duffel bags to the centcom practice surgery area. + catmanpop: + - qol: Chemical Dispenser now actually upgrades with manipulators instead of a dump + at T4 and adds a few more +2024-09-07: + Absolucy: + - refactor: Heavily optimized code related to food decomposition. + - code_imp: Cleaned up some code related to sign language. + - qol: Sign language messages won't be italicized in low-pressure. + - bugfix: Blood Cult hand spells will no longer interfere with sign language, consistent + with other touch spells. + - rscadd: Gary now spawns on all maps. + - rscadd: Gary will usually spawn near some pre-set locations scattered around maints, + however they can rarely choose a completely random location in maints! + - rscadd: Gary is now immune to shocks, and can pass through grilles, flaps, and + wooden barricades. + - qol: Gary is now always visible from the ghost orbit menu. + - bugfix: Fixed some minor runtime errors. + - bugfix: Holomap visualizations of meteor shield coverage on multi-z maps are more + accurate now. + - bugfix: Empty blood brother teams will now be cleaned up, instead of clogging + up the roundend report. + - bugfix: (Melbert) Spawning on a table or other elevated object does not offset + you forever + - bugfix: (Comxy) Fixes Star Gazer getting buckled. + - image: (Comxy) Removes Star Gazer alpha pixels. + - balance: Abductor batons now have 3 charges, with a single charge regenerating + every 5 seconds. A charge is needed to stun or sleep someone with the baton. + Absolucy, LT3, Majkl-J: + - code_imp: Added TGUI mobility check bypass. + - qol: You can now use your PDA while laying down. + MrBagHead: + - rscadd: Abductor telepads can now send plushies, adding more opportunities for + fun interactions. + ThePooba: + - bugfix: stop centcom breaking +2024-09-08: + Absolucy: + - bugfix: Actually fix Light Step. + - rscdel: Remove bounties that just deprive station resources, such as water/welder + tanks, pens, plants, etc. + - sound: Added a new meow sound that has a 5% chance to play when meow emoting. + - rscadd: 'Added new emotes: *mggaow and *purr' + - qol: Added short audio cooldowns to several audible emotes. + - code_imp: Cleaned up some emote code. + - rscadd: (ChungusGamer666) Books can now be burned just like any other paper item. + - rscadd: (ChungusGamer666) You can cut pages out of books with any sharp item, + not just knives or wirecutters. + - bugfix: (ZephyrTFA) Book's no longer take your formatting and throw it out the + window. + - refactor: (ZephyrTFA) Book display and rendering. + - rscadd: (ChungusGamer666) You can burn bibles now! But heresy has a steep cost... + - bugfix: Ensure blood volume is restored to normal levels whenever TRAIT_NOBLOOD + is lost. + - rscadd: You can now reinforce clothing with 5 durathread and a welder, giving + it additional armor. + - rscadd: Added the "speen" emote. + - balance: Cosmic Fields now block projectiles, if they were shot by someone with + a star mark. + DexeeXI: + - bugfix: tables can no longer be flipped by ghosts + - bugfix: tables can no longer be flipped by people viewing through cameras. + Wisemonster: + - bugfix: Fixed the disease from the random heart attack event not progressing into + later stages. +2024-09-10: + Absolucy: + - bugfix: Fixed name tags being incredibly off-center for some mobs. + - bugfix: Name tags should be properly updated when VVing a mob's name now. + - qol: Name tags are now always right-side up, rather than rotating with the mob. + - qol: Name tags no longer inherit their mob's color. + - qol: Trying to take off your own memento mori will ask you if you're *really* + sure first. + - refactor: Refactored heretic sacrifices to track minds instead of bodies. + - bugfix: Heretics can now properly sacrifice oozeling cores. + - bugfix: Heretic sacrifice targets will still be valid if they somehow change bodies, + i.e if they're cloned. + - qol: Heretic roundend report will now bold the names of targets who were actually + sacrificed. + - qol: Heretics will no longer roll off-station, non-crew, disconnected, or AFK + players as targets. + Odairu: + - rscadd: ability to pixel shift items and player characters +2024-09-11: + Absolucy: + - balance: The NPCs from the Syndicate Shocktroops event now have much less health, + deal less damage, and have very slightly longer attack cooldowns. This does + not affect the NPCs in the space ruins and such, only the ones from the event. + - bugfix: Syndicate Shocktroops will no longer spawn in stupid places like in the + middle of a wall. + - sound: Buttons and light switches now have sound effects! They might be somewhat + familiar, heh. + - bugfix: Blood Brother bans now properly prevent conversion. + - admin: Added a debug verb for admins to output the server's current memory usage + summary to their chat. + - bugfix: Cortical borer forced speech now formats messages properly. + - bugfix: Fixed the image previews in the chicken encyclopedia and botanical lexicon. + Absolucy, ChungusGamer666, jjpark-kb: + - bugfix: (ChungusGamer666) You can no longer make extra cloth when looming cotton + by spamming do afters. + - qol: (jjpark-kb) looms will now attempt to loop through stackable items (cotton + as an example) + AlbertNanotracen: + - bugfix: Clown masks and Mime masks now use their filters + DexeeXI: + - bugfix: BP can now access the medical records laptop. + - balance: All Maps, BP access is restricted to only the medbay front doors, side + doors, appropriate maintenance doors and the medbay treatment center only. BP + may only gain full medical access during skeleton crew manning. + - rscadd: BP now has a new, wicked sick PDA. + - balance: BP now has a revised list of default PDA programs. + - qol: BP's locker now has a BP dufflebag for surgical instead. More drip! + KnigTheThrasher: + - rscadd: Moved entire centcom area upwards + - rscadd: Added a new eorg area + - bugfix: readded ctf spawner (should work now) + - rscdel: changed how centcom ghost areas work + - rscadd: Reworked curator's booth in kilo + - rscadd: Updated delta armoury with nova content + - bugfix: Fixed missing seed vendor in kilo public botany + - bugfix: Fixed cryo in kilo + - bugfix: Fixed a maint door in delta + MomoBerri: + - rscadd: Meta and Delta have gotten renovated Isolations. + PotatoTomahto: + - bugfix: Weird portable chemical mixer behavior fixed, with some improved usability. + - bugfix: Window sills deconstruct correctly. + RandomDudeFromTheRim: + - bugfix: fixed a typo when your bladder is full + RikuTheKiller: + - balance: Borers now evolve slower again. + - bugfix: Borer maturity (not regen or such) is now actually lag immune. + ThePooba: + - balance: Prisoners now need 5 hours of security, no more freeloading + - rscadd: Adds "Black" Surgical Latex Gloves + - rscadd: ' timelock for brig physicians' + Uristthedorf: + - rscadd: Experimental surgeries can now be performed on robotic limbs. + Wisemonster: + - balance: Increased the chance of signs from the heart attack symptom appearing + - rscadd: Ourobouros now has a Brig Physician locker +2024-09-12: + MomoBerri: + - bugfix: several blueshift issues + - bugfix: fixes to metastation + - bugfix: boxstation fixes + RandomDudeFromTheRim: + - bugfix: Modsuits are no longer deepfriable + V2LenKagamine: + - rscadd: New asteroids to discover and pillage + - rscdel: Old Asteroid Generation + - qol: Astroid Magnet now gives a general compass direction along with AZIMUTH + - code_imp: Asteroid Magnet now pulls from DMM files instead of being a generator. +2024-09-13: + Absolucy: + - bugfix: Fixed Gary being invisible when dead. + - rscdel: Remove slurry and brine from maintpill pool. + - balance: Reworked the Brand Intelligence event. + - balance: Killing the "origin" vendor will put a stop to the entire event, including + already animated vendors. + - balance: Brand Intelligence only infects vendors within a randomized range of + the origin vendor. + - balance: Brand Intelligence doesn't last forever, ending automatically after around + ~15 minutes or so. + - balance: Brand Intelligence won't affect prison wing vendors, as the prisoners + likely have no means of deconstructing the vendors. + - balance: Tweaked the weights of target departments for Brand Intelligence. + - qol: Ghosts can now examine vendors to see if they're affected by Brand Intelligence + or not. + - balance: Examining vendors closely will give hints as to their rebellion status. + Silicons and anyone with a diagnostic HUD will see even more detail. + - refactor: Heavily refactored and cleaned up code relating to Brand Intelligence. + - balance: Sol has been reworked for Bloodsuckers. Instead of burning during Sol, + they'll instead get a status effect that completely disables their passive healing, + slower movement and action speed, they will take 50% more damage (of any type), + and some powers will either have a much higher blood cost, or be completely + unavailable. + - bugfix: Fixed various jank regarding oozeling bloodsuckers. + - rscadd: Added various botany circuit boards to Tech Storage. + - bugfix: Fix runtime error spam relating to AI camera lighting. + - bugfix: The Opposing Force panel now properly sets the max length of its text + inputs, rather than silently cutting the input off afterwards. + - qol: Changed the maximum opfor objective title length from 40 to 64. + - qol: Changed the maximum opfor admin chat length to 1024 - the usual maximum message + length. + Absolucy, carlarctg: + - qol: Ash Ascension spells have high transparency + Absolucy, vinylspiders, SmArtKar: + - bugfix: (vinylspiders) Fixed a hard delete with soapboxes. + - bugfix: (SmArtKar) Fixed soapbox component sometimes runtiming roundstart. + Gw0sty: + - rscadd: Adds R.D.S.P.L.X. skill chip to the science skill chip box. + KnigTheThrasher: + - rscadd: Kilo docking bay has been moved somewhere else + - rscadd: Improved Kilo xenobiology piping and disposals + MomoBerri: + - bugfix: sandstone stools now deconstruct properly into sandstone bricks. + - bugfix: adds a normal floor tile underneath a certain airlock in a certain lavaland + ruin. + - bugfix: fixes contractor guide formatting. + PotatoTomahto: + - rscadd: Adds "Cryptozoologist" and "Paranormal Investigator" alt titles. + RandomDudeFromTheRim: + - bugfix: Split Personas can speak with owner and vice versa now once again + RikuTheKiller: + - bugfix: Varients work now. + Shoddd: + - bugfix: Makes robo tot laser arm usable again + Wisemonster: + - balance: The Bogseo now uses .27-54 Cesarzowa rounds, instead of .585 trappiste + rounds + - balance: The Bogseo smg gunset for the Blueshield now comes with 1 box of .27-54 + Cesarzowa piercing bullets, and 2 boxes of the rubber variant. + - balance: The trappiste ammo boxes now contain 32 rounds +2024-09-14: + Absolucy: + - balance: The confusion symptom's (Topographical Cretinism) confusion no longer + infinitely stacks - it will no longer COMPLETELY randomize your movement. + - balance: The confusion symptom can now only activate every 1 to 5 seconds. + Addust: + - rscadd: We've been picking up radio traffic from a nearby asteroid in the area. + It appears the Syndicate has commissioned a new listening station. + - rscadd: We've also seen reports of a second agent operating from the outpost. + Gw0sty: + - rscadd: 'Accelerator Cybernetic for Security Assistants and S.M.A.R.T. Ammo Counters + for Blueshields during the Cybernetic Revolution Station Trait. + + :cl:' + - qol: 'Brought IPC surgery steps more in line with normal surgery steps + + :cl:' + - bugfix: 'Made Peacekeeper Cyborg transformation message more broad. + + :cl:' + MomoBerri: + - bugfix: adds a bluespace sender and a disposals dispenser to boxstation atmos. + PotatoTomahto: + - rscadd: Ghosts can now see mood changes. + RandomDudeFromTheRim: + - bugfix: made gorilla transformation when affected by excess amounts of genetic + damage work + Shoddd: + - bugfix: fixed secoffs not getting paco with non standard suit + - bugfix: Security's Guardman Helmet now armored + - bugfix: Makes Aphid hive exit indestructible + SirNightKnight: + - qol: Removed the FOV restriction from bio hoods. + The-Black-Screen: + - rscadd: added a new random engine map for boxstation, added more fire extinguishers, + miscellaneous things. + - rscdel: removed a pipe gun, removed the burned clown skeleton, miscellaneous things. + - qol: added a direct entrance from the exam room to cryogenics, added a northern + entrance to all random bar maps. + - bugfix: tried to fix some lights being weird. + - code_imp: added the new engine to boxstation's engines file. +2024-09-15: + Absolucy: + - bugfix: Fixed various runtimes and hard deletes. + ? Comxy, Fikou, lessthnthree, Rhials, Ghommie, MrMelbert, IndieanaJones, san7890, + Holoo-1, PKPenguin321, larentoun, Das15, carlarctg, Jacquerel, JohnFulpWillard + : - rscadd: Wizards can now purchase mirror shields + - rscadd: The Fireball spell in wizards spellbooks has been replaced with Fire + Ball + - balance: The magical chem sprayed now comes with a bio suit and wizard combat + gloves + - balance: The wizard MODsuit shield has been reworked and now costs 1 + - bugfix: spell cards work again + PotatoTomahto: + - balance: Wrenching and unwrenching the liquid pump takes 2 seconds instead of + 4. + - bugfix: Mood hud should no longer constantly appear when retoggling ghost hud. + RikuTheKiller: + - rscadd: Borers are now available in the antag token menu. (regular and neutered) + - bugfix: Borers now spawn in vents, rather than on top of them. + - spellcheck: Fixed some minor typos and whatnot. + Shoddd: + - bugfix: Ash walkers can now use flight potions +2024-09-16: + Absolucy: + - bugfix: Fixed the Goldeneye shuttle console becoming a nukie shuttle console when + reconstructed. + - bugfix: Cleaning stickers off the floor now properly drops the sticker instead + of runtiming and permanently sending it to nullspace. + KnigTheThrasher: + - bugfix: Fixed bot pathfinding in Kilostation + MomoBerri: + - bugfix: Icebox's lavaland bar has been renovated to fit properly. + - bugfix: several fixes to voidraptor + PotatoTomahto: + - bugfix: Bot launch pad fixed and renamed to "orbital bot pad". + - bugfix: Stationary medbot healing sprite fixed. + RandomDudeFromTheRim: + - bugfix: Stage 2 singularities should no longer escape containment + The-Black-Screen: + - rscadd: added more dirt to maintenance, added more fire extinguishers, miscellaneous + things. + - rscdel: removed the construction area, miscellaneous things. + - qol: added a northern entrance to all random bar maps, changed a lot of stuff + in a lot of areas, removed airlocks from specific maintenance area paths. + - bugfix: added a lot of the changes that were supposed to be in PR 2213. +2024-09-17: + Shoddd: + - bugfix: Apid hive exits are now anchored + SirNightKnight: + - qol: Utility jumpsuits can now be unzipped. diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 36f30f74f1ff..9bf25b8de2bb 100644 Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ diff --git a/icons/effects/mouse_pointers/lace.dmi b/icons/effects/mouse_pointers/lace.dmi new file mode 100644 index 000000000000..68aad755c627 Binary files /dev/null and b/icons/effects/mouse_pointers/lace.dmi differ diff --git a/icons/mob/actions/actions_space_dragon.dmi b/icons/mob/actions/actions_space_dragon.dmi index a4e33eef1eb2..48d73fd6f47a 100644 Binary files a/icons/mob/actions/actions_space_dragon.dmi and b/icons/mob/actions/actions_space_dragon.dmi differ diff --git a/icons/mob/actions/actions_spells.dmi b/icons/mob/actions/actions_spells.dmi index 39ea58104173..d66c2e22011a 100644 Binary files a/icons/mob/actions/actions_spells.dmi and b/icons/mob/actions/actions_spells.dmi differ diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index 573607307172..fe203910d5c6 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/clothing/mask.dmi b/icons/mob/clothing/mask.dmi index 283c85274c06..69b79fa06a23 100644 Binary files a/icons/mob/clothing/mask.dmi and b/icons/mob/clothing/mask.dmi differ diff --git a/icons/mob/clothing/under/dress.dmi b/icons/mob/clothing/under/dress.dmi index be6e7715c486..16d9ecbeda86 100644 Binary files a/icons/mob/clothing/under/dress.dmi and b/icons/mob/clothing/under/dress.dmi differ diff --git a/icons/mob/huds/hud.dmi b/icons/mob/huds/hud.dmi index 5473ba0f1390..5d9ab7cdfd19 100644 Binary files a/icons/mob/huds/hud.dmi and b/icons/mob/huds/hud.dmi differ diff --git a/icons/mob/inhands/items/plushes_lefthand.dmi b/icons/mob/inhands/items/plushes_lefthand.dmi new file mode 100644 index 000000000000..01fa1e7a2ed0 Binary files /dev/null and b/icons/mob/inhands/items/plushes_lefthand.dmi differ diff --git a/icons/mob/inhands/items/plushes_righthand.dmi b/icons/mob/inhands/items/plushes_righthand.dmi new file mode 100644 index 000000000000..99dd1d01044f Binary files /dev/null and b/icons/mob/inhands/items/plushes_righthand.dmi differ diff --git a/icons/mob/nonhuman-player/96x96eldritch_mobs.dmi b/icons/mob/nonhuman-player/96x96eldritch_mobs.dmi index c20779ff2469..4bbc55c15dd8 100644 Binary files a/icons/mob/nonhuman-player/96x96eldritch_mobs.dmi and b/icons/mob/nonhuman-player/96x96eldritch_mobs.dmi differ diff --git a/icons/mob/simple/animal.dmi b/icons/mob/simple/animal.dmi index 602648205a26..51fc02ff8b0e 100644 Binary files a/icons/mob/simple/animal.dmi and b/icons/mob/simple/animal.dmi differ diff --git a/icons/mob/simple/slugcats.dmi b/icons/mob/simple/slugcats.dmi index eed4a7437aef..7aeda223494a 100644 Binary files a/icons/mob/simple/slugcats.dmi and b/icons/mob/simple/slugcats.dmi differ diff --git a/icons/mob/species/misc/bodypart_overlay_simple.dmi b/icons/mob/species/misc/bodypart_overlay_simple.dmi index 2bc1dda5663a..2c1739fd1687 100644 Binary files a/icons/mob/species/misc/bodypart_overlay_simple.dmi and b/icons/mob/species/misc/bodypart_overlay_simple.dmi differ diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index 92f3453eec48..ea74f41e3473 100644 Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ diff --git a/icons/obj/clothing/under/dress.dmi b/icons/obj/clothing/under/dress.dmi index d38b53746be7..a004577859f0 100644 Binary files a/icons/obj/clothing/under/dress.dmi and b/icons/obj/clothing/under/dress.dmi differ diff --git a/icons/obj/food/burgerbread.dmi b/icons/obj/food/burgerbread.dmi index a49423ba87cf..9faca25854e2 100644 Binary files a/icons/obj/food/burgerbread.dmi and b/icons/obj/food/burgerbread.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 4eabc5e0ab4d..9b7b0d11855b 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/food/food_ingredients.dmi b/icons/obj/food/food_ingredients.dmi index 30825da02431..e0799ed71088 100644 Binary files a/icons/obj/food/food_ingredients.dmi and b/icons/obj/food/food_ingredients.dmi differ diff --git a/icons/obj/food/meat.dmi b/icons/obj/food/meat.dmi index b010ced4ead9..dec295bcbf0b 100644 Binary files a/icons/obj/food/meat.dmi and b/icons/obj/food/meat.dmi differ diff --git a/icons/obj/food/mexican.dmi b/icons/obj/food/mexican.dmi index 44bcc5f2e7ba..ba02c15a0b57 100644 Binary files a/icons/obj/food/mexican.dmi and b/icons/obj/food/mexican.dmi differ diff --git a/icons/obj/food/piecake.dmi b/icons/obj/food/piecake.dmi index 36adf23eb821..1fc5c954bb51 100644 Binary files a/icons/obj/food/piecake.dmi and b/icons/obj/food/piecake.dmi differ diff --git a/icons/obj/food/spaghetti.dmi b/icons/obj/food/spaghetti.dmi index 23b50af2a8d4..1c97a45e7b78 100644 Binary files a/icons/obj/food/spaghetti.dmi and b/icons/obj/food/spaghetti.dmi differ diff --git a/icons/obj/machines/artifact_machines.dmi b/icons/obj/machines/artifact_machines.dmi index 004e7539d4e5..8cbd0b5ff0ba 100644 Binary files a/icons/obj/machines/artifact_machines.dmi and b/icons/obj/machines/artifact_machines.dmi differ diff --git a/icons/obj/medical/chemical.dmi b/icons/obj/medical/chemical.dmi index 75625c206eb1..d2ca41199a23 100644 Binary files a/icons/obj/medical/chemical.dmi and b/icons/obj/medical/chemical.dmi differ diff --git a/icons/obj/medical/organs/infuser_organs.dmi b/icons/obj/medical/organs/infuser_organs.dmi index 49ac2751aae2..c2551b41f666 100644 Binary files a/icons/obj/medical/organs/infuser_organs.dmi and b/icons/obj/medical/organs/infuser_organs.dmi differ diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index 4ba733b29dcc..fdddb793362a 100644 Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ diff --git a/icons/obj/toys/plushes.dmi b/icons/obj/toys/plushes.dmi index 01ff00c7637a..1642faa8fdda 100644 Binary files a/icons/obj/toys/plushes.dmi and b/icons/obj/toys/plushes.dmi differ diff --git a/icons/obj/vending_restock.dmi b/icons/obj/vending_restock.dmi index 824e52d00a26..066ce416c70a 100644 Binary files a/icons/obj/vending_restock.dmi and b/icons/obj/vending_restock.dmi differ diff --git a/icons/obj/weapons/guns/magic.dmi b/icons/obj/weapons/guns/magic.dmi index 92210a4e0542..0434b5b6d852 100644 Binary files a/icons/obj/weapons/guns/magic.dmi and b/icons/obj/weapons/guns/magic.dmi differ diff --git a/icons/obj/weapons/guns/projectiles.dmi b/icons/obj/weapons/guns/projectiles.dmi index 6830a4ac5bdf..4e57ac40c940 100644 Binary files a/icons/obj/weapons/guns/projectiles.dmi and b/icons/obj/weapons/guns/projectiles.dmi differ diff --git a/icons/turf/decals.dmi b/icons/turf/decals.dmi index 278db3ad3cd1..c4a9d8858c5a 100644 Binary files a/icons/turf/decals.dmi and b/icons/turf/decals.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 580a53fcb3ad..153fe582544f 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/icons/ui_icons/achievements/achievements.dmi b/icons/ui_icons/achievements/achievements.dmi index 80d37860846e..59d763201a0a 100644 Binary files a/icons/ui_icons/achievements/achievements.dmi and b/icons/ui_icons/achievements/achievements.dmi differ diff --git a/interface/skin.dmf b/interface/skin.dmf index 9f3d8ccdb7a8..a07ed21500f6 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -10,21 +10,21 @@ macro "default" menu "menu" - elem + elem name = "&File" command = "" saved-params = "is-checked" - elem + elem name = "&Quick screenshot\tF2" command = ".screenshot auto" category = "&File" saved-params = "is-checked" - elem + elem name = "&Save screenshot as...\tShift+F2" command = ".screenshot" category = "&File" saved-params = "is-checked" - elem + elem name = "" command = "" category = "&File" @@ -34,7 +34,7 @@ menu "menu" command = ".reconnect" category = "&File" saved-params = "is-checked" - elem + elem name = "&Quit\tAlt-F4" command = ".quit" category = "&File" @@ -43,22 +43,22 @@ menu "menu" name = "&Help" command = "" saved-params = "is-checked" - elem + elem name = "&Admin Help\tF1" command = "adminhelp" category = "&Help" saved-params = "is-checked" - elem + elem name = "&Hotkeys" command = "Hotkeys-Help" category = "&Help" saved-params = "is-checked" - elem + elem name = "Refresh TGUI" command = "refresh-tgui" category = "&Help" saved-params = "is-checked" - elem + elem name = "Fix Chat" command = "fix-chat" category = "&Help" @@ -277,6 +277,14 @@ window "outputwindow" command = ".winset \"mebutton.is-checked=true ? input.command=\"!me \\\"\" : input.command=\"\"mebutton.is-checked=true ? saybutton.is-checked=false\"\"mebutton.is-checked=true ? oocbutton.is-checked=false\"" is-flat = true button-type = pushbox + elem "mediapanel" + type = BROWSER + pos = 599,460 + size = 1x1 + anchor1 = 100,100 + anchor2 = -1,-1 + is-visible = false + saved-params = "" elem "browseroutput" type = BROWSER pos = 0,0 @@ -350,14 +358,6 @@ window "statwindow" anchor2 = 100,100 is-visible = false saved-params = "" - elem "mediapanel" - type = BROWSER - pos = 392,25 - size = 1x1 - anchor1 = -1,-1 - anchor2 = -1,-1 - is-visible = false - saved-params = "" window "tgui_say" elem "tgui_say" diff --git a/memorystats.dll b/memorystats.dll new file mode 100644 index 000000000000..1d81a2450731 Binary files /dev/null and b/memorystats.dll differ diff --git a/monkestation/code/__HELPERS/_lists.dm b/monkestation/code/__HELPERS/_lists.dm index c13af294d408..1b997b61f862 100644 --- a/monkestation/code/__HELPERS/_lists.dm +++ b/monkestation/code/__HELPERS/_lists.dm @@ -5,3 +5,10 @@ for(var/i=1, i= -maximum_pixel_shift + pulled_item.base_pixel_y) + pulled_item.pixel_y-- + if(WEST) + if(pulled_item.pixel_x >= -maximum_pixel_shift + pulled_item.base_pixel_x) + pulled_item.pixel_x-- + if(SHIFTING_PARENT) + switch(direct) + if(NORTH) + if(owner.pixel_y <= maximum_pixel_shift + owner.base_pixel_y) + owner.pixel_y++ + is_shifted = TRUE + if(EAST) + if(owner.pixel_x <= maximum_pixel_shift + owner.base_pixel_x) + owner.pixel_x++ + is_shifted = TRUE + if(SOUTH) + if(owner.pixel_y >= -maximum_pixel_shift + owner.base_pixel_y) + owner.pixel_y-- + is_shifted = TRUE + if(WEST) + if(owner.pixel_x >= -maximum_pixel_shift + owner.base_pixel_x) + owner.pixel_x-- + is_shifted = TRUE + + // Yes, I know this sets it to true for everything if more than one is matched. + // Movement doesn't check diagonals, and instead just checks EAST or WEST, depending on where you are for those. + if(owner.pixel_y > passthrough_threshold) + passthroughable |= EAST | SOUTH | WEST + else if(owner.pixel_y < -passthrough_threshold) + passthroughable |= NORTH | EAST | WEST + if(owner.pixel_x > passthrough_threshold) + passthroughable |= NORTH | SOUTH | WEST + else if(owner.pixel_x < -passthrough_threshold) + passthroughable |= NORTH | EAST | SOUTH + +#undef SHIFTING_PARENT +#undef SHIFTING_ITEMS diff --git a/monkestation/code/datums/components/wound_converter.dm b/monkestation/code/datums/components/wound_converter.dm index 08fcbc7ef371..16bc19ddbe2d 100644 --- a/monkestation/code/datums/components/wound_converter.dm +++ b/monkestation/code/datums/components/wound_converter.dm @@ -23,7 +23,7 @@ if(istype(parent, /obj/item/bodypart)) return -/datum/component/wound_converter/Destroy(force, silent) +/datum/component/wound_converter/Destroy(force) . = ..() //var/eee = exact_type_conversions[item] || general_type_conversions[item] diff --git a/monkestation/code/datums/id_trim/jobs.dm b/monkestation/code/datums/id_trim/jobs.dm index ece4a2889851..d9ef7b302f02 100644 --- a/monkestation/code/datums/id_trim/jobs.dm +++ b/monkestation/code/datums/id_trim/jobs.dm @@ -9,7 +9,7 @@ ACCESS_BRIG_ENTRANCE, ACCESS_COURT, ACCESS_MECH_SECURITY, - ACCESS_MEDICAL, + ACCESS_BRIG_PHYSICIAN, ACCESS_MINERAL_STOREROOM, ACCESS_MORGUE, ACCESS_SECURITY, @@ -19,6 +19,7 @@ ACCESS_DETECTIVE, ACCESS_MAINT_TUNNELS, ACCESS_SURGERY, + ACCESS_MEDICAL, ) template_access = list( ACCESS_CAPTAIN, diff --git a/monkestation/code/datums/keybinding/living.dm b/monkestation/code/datums/keybinding/living.dm index d3a2f213914d..3cb95168c68a 100644 --- a/monkestation/code/datums/keybinding/living.dm +++ b/monkestation/code/datums/keybinding/living.dm @@ -62,3 +62,41 @@ if(.) return user.imode.keybind_act(5) + +/datum/keybinding/living/item_pixel_shift + hotkey_keys = list("V") + name = "item_pixel_shift" + full_name = "Item Pixel Shift" + description = "Shift a pulled item's offset" + category = CATEGORY_MISC + keybind_signal = COMSIG_KB_LIVING_ITEM_PIXEL_SHIFT_DOWN + +/datum/keybinding/living/item_pixel_shift/down(client/user) + . = ..() + if(.) + return + user.mob.AddComponent(/datum/component/pixel_shift) + SEND_SIGNAL(user.mob, COMSIG_KB_LIVING_ITEM_PIXEL_SHIFT_DOWN) + +/datum/keybinding/living/item_pixel_shift/up(client/user) + . = ..() + SEND_SIGNAL(user.mob, COMSIG_KB_LIVING_ITEM_PIXEL_SHIFT_UP) + +/datum/keybinding/living/pixel_shift + hotkey_keys = list("B") + name = "pixel_shift" + full_name = "Pixel Shift" + description = "Shift your characters offset." + category = CATEGORY_MOVEMENT + keybind_signal = COMSIG_KB_LIVING_PIXEL_SHIFT_DOWN + +/datum/keybinding/living/pixel_shift/down(client/user) + . = ..() + if(.) + return + user.mob.AddComponent(/datum/component/pixel_shift) + SEND_SIGNAL(user.mob, COMSIG_KB_LIVING_PIXEL_SHIFT_DOWN) + +/datum/keybinding/living/pixel_shift/up(client/user) + . = ..() + SEND_SIGNAL(user.mob, COMSIG_KB_LIVING_PIXEL_SHIFT_UP) diff --git a/monkestation/code/datums/mind/_mind.dm b/monkestation/code/datums/mind/_mind.dm index 0e40c8fca9b9..5e068b5b5ccb 100644 --- a/monkestation/code/datums/mind/_mind.dm +++ b/monkestation/code/datums/mind/_mind.dm @@ -4,6 +4,11 @@ /// The locked manifest entry for this crew member, if any. var/datum/record/locked/lockfile +/datum/mind/Destroy() + crewfile = null + lockfile = null + return ..() + /datum/mind/proc/add_to_manifest(crew = TRUE, locked = FALSE) if(crew && !QDELETED(crewfile)) GLOB.manifest.general |= crewfile @@ -15,3 +20,6 @@ GLOB.manifest.general -= crewfile if(locked && !QDELETED(lockfile)) GLOB.manifest.locked -= lockfile + +/datum/mind/proc/operator""() + return trimtext(name || current?.real_name || current?.name) diff --git a/monkestation/code/datums/patreon_data.dm b/monkestation/code/datums/patreon_data.dm index 1e9e664fa787..c1ee4bc83ed4 100644 --- a/monkestation/code/datums/patreon_data.dm +++ b/monkestation/code/datums/patreon_data.dm @@ -59,7 +59,7 @@ access_rank = ACCESS_COMMAND_RANK if(TRAITOR_RANK) access_rank = ACCESS_TRAITOR_RANK - if(NUKIE_RANK, OLD_NUKIE_RANK) + if(NUKIE_RANK, OLD_NUKIE_RANK, REALLY_ANOTHER_FUCKING_NUKIE_RANK) access_rank = ACCESS_NUKIE_RANK /datum/patreon_data/proc/has_access(rank) @@ -70,6 +70,6 @@ return FALSE /datum/patreon_data/proc/is_donator() - if((owned_rank != NO_RANK) && (owned_rank != UNSUBBED)) - return TRUE - return FALSE + if((owned_rank == NO_RANK) || !owned_rank || (owned_rank == UNSUBBED)) + return FALSE + return TRUE diff --git a/monkestation/code/datums/records/record.dm b/monkestation/code/datums/records/record.dm index 42d3f4d2a164..96367340d9da 100644 --- a/monkestation/code/datums/records/record.dm +++ b/monkestation/code/datums/records/record.dm @@ -127,7 +127,7 @@ /datum/record/crew/Destroy() GLOB.manifest.general -= src - QDEL_LAZYLIST(record_photos) + QDEL_LAZYASSOCLIST(record_photos) return ..() /** diff --git a/monkestation/code/datums/stamina_container.dm b/monkestation/code/datums/stamina_container.dm index 6816e614c3ac..28a3c9aa76ce 100644 --- a/monkestation/code/datums/stamina_container.dm +++ b/monkestation/code/datums/stamina_container.dm @@ -14,6 +14,8 @@ var/decrement = 0 ///Are we regenerating right now? var/is_regenerating = TRUE + //unga bunga + var/process_stamina = TRUE ///cooldowns ///how long until we can lose stamina again @@ -35,17 +37,23 @@ return ..() /datum/stamina_container/proc/update(seconds_per_tick) - if(!is_regenerating) - if(!COOLDOWN_FINISHED(src, paused_stamina)) - return - is_regenerating = TRUE - - if(seconds_per_tick) - current = min(current + (regen_rate*seconds_per_tick), maximum) - if(seconds_per_tick && decrement) - current = max(current + (-decrement*seconds_per_tick), 0) - loss = maximum - current - loss_as_percent = loss ? (loss == maximum ? 0 : loss / maximum * 100) : 0 + if(process_stamina == TRUE) + if(!is_regenerating) + if(!COOLDOWN_FINISHED(src, paused_stamina)) + return + is_regenerating = TRUE + + if(seconds_per_tick) + current = min(current + (regen_rate*seconds_per_tick), maximum) + if(seconds_per_tick && decrement) + current = max(current + (-decrement*seconds_per_tick), 0) + loss = maximum - current + loss_as_percent = loss ? (loss == maximum ? 0 : loss / maximum * 100) : 0 + + if(seconds_per_tick && current == maximum) + process_stamina = FALSE + else if(!(current == maximum)) + process_stamina = TRUE parent.on_stamina_update() diff --git a/monkestation/code/datums/status_effects/food_buffs.dm b/monkestation/code/datums/status_effects/food_buffs.dm index 984de1078617..45f79a5edf3f 100644 --- a/monkestation/code/datums/status_effects/food_buffs.dm +++ b/monkestation/code/datums/status_effects/food_buffs.dm @@ -2,6 +2,7 @@ duration = 10 MINUTES status_type = STATUS_EFFECT_REPLACE show_duration = TRUE + var/quality_modifier = 1 /datum/status_effect/food/on_apply() if(HAS_TRAIT(owner, TRAIT_GOURMAND)) @@ -241,13 +242,13 @@ /datum/status_effect/food/belly_slide/on_apply() if(ishuman(owner)) var/mob/living/carbon/user = owner - ADD_TRAIT(user, FOOD_SLIDE, "food_buffs") + ADD_TRAIT(user, TRAIT_FOOD_SLIDE, "food_buffs") return ..() /datum/status_effect/food/belly_slide/on_remove() .=..() - if(HAS_TRAIT(owner, FOOD_SLIDE)) - REMOVE_TRAIT(owner, FOOD_SLIDE, "food_buffs") + if(HAS_TRAIT(owner, TRAIT_FOOD_SLIDE)) + REMOVE_TRAIT(owner, TRAIT_FOOD_SLIDE, "food_buffs") if(owner.has_movespeed_modifier(/datum/movespeed_modifier/belly_slide)) owner.remove_movespeed_modifier(/datum/movespeed_modifier/belly_slide) @@ -312,14 +313,14 @@ /datum/status_effect/food/botanist/on_apply() if(ishuman(owner)) var/mob/living/carbon/user = owner - ADD_TRAIT(user, FOOD_JOB_BOTANIST, "food_buffs") + ADD_TRAIT(user, TRAIT_FOOD_JOB_BOTANIST, "food_buffs") return ..() /datum/status_effect/food/botanist/on_remove() .=..() if(ishuman(owner)) var/mob/living/carbon/user = owner - REMOVE_TRAIT(user, FOOD_JOB_BOTANIST, "food_buffs") + REMOVE_TRAIT(user, TRAIT_FOOD_JOB_BOTANIST, "food_buffs") /datum/status_effect/food/miner @@ -334,11 +335,11 @@ /datum/status_effect/food/miner/on_apply() if(ishuman(owner)) var/mob/living/carbon/user = owner - ADD_TRAIT(user, FOOD_JOB_MINER, "food_buffs") + ADD_TRAIT(user, TRAIT_FOOD_JOB_MINER, "food_buffs") return ..() /datum/status_effect/food/miner/on_remove() .=..() if(ishuman(owner)) var/mob/living/carbon/user = owner - REMOVE_TRAIT(user, FOOD_JOB_MINER, "food_buffs") + REMOVE_TRAIT(user, TRAIT_FOOD_JOB_MINER, "food_buffs") diff --git a/monkestation/code/game/area/areas.dm b/monkestation/code/game/area/areas.dm index 140e5c499d4a..b8e874ad6dbd 100644 --- a/monkestation/code/game/area/areas.dm +++ b/monkestation/code/game/area/areas.dm @@ -1,3 +1,16 @@ /area /// Whether roundstart lockers should be anchored by default in this area, if eligible. var/anchor_roundstart_lockers = TRUE + + +/area/Entered(atom/movable/arrived, area/old_area) + . = ..() + if(isliving(arrived)) + var/turf/arrived_turf = get_turf(arrived) + if(!arrived_turf?.z) + return + if(SSparticle_weather.running_eclipse_weather || SSparticle_weather.running_weather) + if(SSparticle_weather.running_eclipse_weather && SSmapping.level_has_all_traits(arrived_turf.z, list(ZTRAIT_ECLIPSE))) + SSparticle_weather.running_eclipse_weather.weather_sound_effect(arrived) + if(SSparticle_weather.running_weather && SSmapping.level_has_all_traits(arrived_turf.z, list(ZTRAIT_STATION))) + SSparticle_weather.running_weather.weather_sound_effect(arrived) diff --git a/monkestation/code/game/machinery/deployable.dm b/monkestation/code/game/machinery/deployable.dm new file mode 100644 index 000000000000..c4979b0965f2 --- /dev/null +++ b/monkestation/code/game/machinery/deployable.dm @@ -0,0 +1,9 @@ +/obj/structure/barricade/wooden/CanAllowThrough(atom/movable/mover, border_dir) + if(HAS_TRAIT(mover, TRAIT_GOES_THROUGH_WOODEN_BARRICADES)) + return TRUE + return ..() + +/obj/structure/barricade/wooden/CanAStarPass(to_dir, datum/can_pass_info/pass_info) + if(pass_info.goes_thru_barricades) + return TRUE + return ..() diff --git a/monkestation/code/game/machinery/exp_cloner.dm b/monkestation/code/game/machinery/exp_cloner.dm index 497f9426699d..46bb81111d4c 100644 --- a/monkestation/code/game/machinery/exp_cloner.dm +++ b/monkestation/code/game/machinery/exp_cloner.dm @@ -90,17 +90,18 @@ role_text = "defective clone" poll_text = "Do you want to play as [clonename]'s defective clone?" - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob( + var/preview = get_clone_preview(clonee.dna) || clonee + var/mob/chosen_one = SSpolling.poll_ghosts_for_target( poll_text, poll_time = 10 SECONDS, - target_mob = clonee, + checked_target = clonee, ignore_category = POLL_IGNORE_DEFECTIVECLONE, - pic_source = get_clone_preview(clonee.dna) || clonee, - role_name_text = role_text + alert_pic = preview, + role_name_text = role_text, + chat_text_border_icon = preview, ) - if(LAZYLEN(candidates)) - var/mob/dead/observer/candidate = pick(candidates) - clonee.key = candidate.key + if(chosen_one) + clonee.key = chosen_one.key if(grab_ghost_when == CLONER_FRESH_CLONE) clonee.grab_ghost() diff --git a/monkestation/code/game/objects/effects/forcefields.dm b/monkestation/code/game/objects/effects/forcefields.dm new file mode 100644 index 000000000000..013373082dca --- /dev/null +++ b/monkestation/code/game/objects/effects/forcefields.dm @@ -0,0 +1,8 @@ +/obj/effect/forcefield/cosmic_field/CanAllowThrough(atom/movable/mover, border_dir) + if(isprojectile(mover)) + var/obj/projectile/projectile = mover + if(isliving(projectile.firer)) + var/mob/living/living_firer = projectile.firer + if(living_firer.has_status_effect(/datum/status_effect/star_mark)) + return FALSE + return ..() diff --git a/monkestation/code/game/objects/effects/glowshroom.dm b/monkestation/code/game/objects/effects/glowshroom.dm new file mode 100644 index 000000000000..647bfb3d5766 --- /dev/null +++ b/monkestation/code/game/objects/effects/glowshroom.dm @@ -0,0 +1,264 @@ +/obj/structure/glowshroom + name = "glowshroom" + desc = "Mycena Bregprox, a species of mushroom that glows in the dark." + anchored = TRUE + opacity = FALSE + density = FALSE + icon = 'monkestation/icons/obj/flora/glowshroom.dmi' + icon_state = "glowshroom1" + layer = ABOVE_OPEN_TURF_LAYER + max_integrity = GLOWSHROOM_BASE_INTEGRITY + light_system = OVERLAY_LIGHT + ///Cooldown for when next to try to spread. + COOLDOWN_DECLARE(spread_cooldown) + /// Min time interval between glowshroom "spreads" + var/min_delay_spread = 20 SECONDS + /// Max time interval between glowshroom "spreads" + var/max_delay_spread = 30 SECONDS + /// Boolean to indicate if the shroom is on the floor/wall + var/floor = FALSE + /// Mushroom generation number + var/generation = 1 + /// Chance to spread into adjacent tiles (0-100) + var/spread_into_adjacent_chance = 75 + ///Amount of decay when decay happens on process. + var/idle_decay_min = 1 + ///Amount of decay when decay happens on process + var/idle_decay_max = 2 + ///Amount of percentage decay affects endurance.max_integrity = + var/endurance_decay_rate = 0.1 + var/original_endurance = /obj/item/seeds/glowshroom::endurance + /// Internal seed of the glowshroom, stats are stored here + var/obj/item/seeds/myseed = /obj/item/seeds/glowshroom + /// The world.time of the last successful glowshroom spread. + /// Used for sorting processing to try to ensure all glowshrooms get a chance to proc. + var/last_successful_spread = 0 + /// The variant of the icon (1-4 for floor, 1-3 for wall) + var/icon_variant + + /// Turfs where the glowshroom cannot spread to + var/static/list/blacklisted_glowshroom_turfs + +/obj/structure/glowshroom/glowcap + name = "glowcap" + desc = "Mycena Ruthenia, a species of mushroom that, while it does glow in the dark, is not actually bioluminescent." + myseed = /obj/item/seeds/glowshroom/glowcap + +/obj/structure/glowshroom/shadowshroom + name = "shadowshroom" + desc = "Mycena Umbra, a species of mushroom that emits shadow instead of light." + myseed = /obj/item/seeds/glowshroom/shadowshroom + +/obj/structure/glowshroom/single/Spread() + return + +/obj/structure/glowshroom/examine(mob/user) + . = ..() + . += "This is a [generation]\th generation [name]!" + +/** + * Creates a new glowshroom structure. + * + * Arguments: + * * newseed - Seed of the shroom + */ + +/obj/structure/glowshroom/Initialize(mapload, obj/item/seeds/newseed) + . = ..() + if(!blacklisted_glowshroom_turfs) + blacklisted_glowshroom_turfs = typecacheof(list(/turf/open/lava, /turf/open/water)) + if(istype(newseed)) + myseed = newseed + myseed.forceMove(src) + else + myseed = new myseed(src) + original_endurance = myseed.endurance + modify_max_integrity(GLOWSHROOM_BASE_INTEGRITY + ((100 - GLOWSHROOM_BASE_INTEGRITY) / 100 * myseed.endurance)) //goes up to 100 with peak endurance + var/datum/plant_gene/trait/glow/our_glow_gene = myseed.get_gene(/datum/plant_gene/trait/glow) + if(ispath(our_glow_gene)) // Seeds were ported to initialize so their genes are still typepaths here, luckily their initializer is smart enough to handle us doing this + myseed.genes -= our_glow_gene + our_glow_gene = new our_glow_gene + myseed.genes += our_glow_gene + if(istype(our_glow_gene)) + set_light(l_outer_range = our_glow_gene.glow_range(myseed), l_power = our_glow_gene.glow_power(myseed), l_color = our_glow_gene.glow_color, update = FALSE) + setDir(calc_dir()) + update_icon_state() + AddElement(/datum/element/atmos_sensitive, mapload) + COOLDOWN_START(src, spread_cooldown, rand(min_delay_spread, max_delay_spread)) + + SSglowshrooms.glowshrooms += src // new_glowshrooms will update lighting first, and then move it to the normal glowshrooms processing list + + var/static/list/hovering_item_typechecks = list( + /obj/item/plant_analyzer = list( + SCREENTIP_CONTEXT_LMB = "Scan shroom stats", + SCREENTIP_CONTEXT_RMB = "Scan shroom chemicals" + ), + ) + + AddElement(/datum/element/contextual_screentip_item_typechecks, hovering_item_typechecks) + +/obj/structure/glowshroom/Destroy() + if(isatom(myseed)) + QDEL_NULL(myseed) + //SSglowshrooms.new_glowshrooms -= src + SSglowshrooms.glowshrooms -= src + return ..() + +/obj/structure/glowshroom/update_icon_state() + if(isnull(icon_variant)) + icon_variant = rand(1, floor ? 4 : 3) + base_icon_state = floor ? "glowshroom" : "glowshroom_wall" + icon_state = "[base_icon_state][icon_variant]" + if(!floor) + switch(dir) //offset to make it be on the wall rather than on the floor + if(NORTH) + pixel_y = 32 + if(SOUTH) + pixel_y = -32 + if(EAST) + pixel_x = 32 + if(WEST) + pixel_x = -32 + add_atom_colour(light_color, FIXED_COLOUR_PRIORITY) + return ..() + +/obj/structure/glowshroom/proc/Spread(seconds_per_tick) + var/turf/ownturf = get_turf(src) + if(!TURF_SHARES(ownturf)) //If we are in a 1x1 room + last_successful_spread = INFINITY + return //Deal with it not now + + var/list/possible_locs = list() + //Lets collect a list of possible viewable turfs BEFORE we iterate for yield so we don't call view multiple + //times when there's no real chance of the viewable range changing, really you could do this once on item + //spawn and most people probably would not notice. + for(var/turf/open/floor/earth in oview(2, src)) + if(QDELING(earth) || !TURF_SHARES(earth) || is_type_in_typecache(earth, blacklisted_glowshroom_turfs)) + continue + possible_locs += earth + + //Lets not even try to spawn again if somehow we have ZERO possible locations + if(!length(possible_locs)) + last_successful_spread = INFINITY + return + + var/chance_generation = 100 * (NUM_E ** -((GLOWSHROOM_SPREAD_BASE_DIMINISH_FACTOR + GLOWSHROOM_SPREAD_DIMINISH_FACTOR_PER_GLOWSHROOM * length(SSglowshrooms.glowshrooms)) / myseed.potency * (generation - 1))) //https://www.desmos.com/calculator/istvjvcelz + + for(var/i in 1 to myseed.yield) + if(!length(possible_locs)) + return + if(!SPT_PROB(chance_generation, seconds_per_tick)) + continue + var/spreads_into_adjacent = SPT_PROB(spread_into_adjacent_chance, seconds_per_tick) + var/turf/new_loc + + //Try three random locations to spawn before giving up tradeoff + //between running view(1, earth) on every single collected possibleLoc + //and failing to spread if we get 3 bad picks, which should only be a problem + //if there's a lot of glow shroom clustered about + for(var/iterator in 1 to min(length(possible_locs), 3)) + var/turf/possibleLoc = pick_n_take(possible_locs) + if(spreads_into_adjacent || !(locate(/obj/structure/glowshroom) in view(1, possibleLoc))) + new_loc = possibleLoc + break + + //We failed to find any location, skip trying to yield + if(QDELETED(new_loc)) + break + + var/shroom_count = 0 + var/place_count = 1 + for(var/obj/structure/glowshroom/shroom in new_loc) + shroom_count++ + for(var/wall_dir in GLOB.cardinals) + var/turf/potential_wall = get_step(new_loc,wall_dir) + if(potential_wall.density) + place_count++ + if(shroom_count >= place_count) + continue + + var/obj/item/seeds/new_seeds = myseed.Copy() + new_seeds.set_endurance(clamp(original_endurance * (rand(80, 110) * 0.01), initial(new_seeds.endurance), MAX_PLANT_ENDURANCE)) + var/obj/structure/glowshroom/child = new type(new_loc, new_seeds) + child.generation = generation + 1 + last_successful_spread = world.time + if(TICK_CHECK) + return + +/obj/structure/glowshroom/proc/calc_dir(turf/location = loc) + var/direction = 16 + + for(var/wall_dir in GLOB.cardinals) + var/turf/new_turf = get_step(location,wall_dir) + if(new_turf.density) + direction |= wall_dir + + for(var/obj/structure/glowshroom/shroom in location) + if(shroom == src) + continue + if(shroom.floor) //special + direction &= ~16 + else + direction &= ~shroom.dir + + var/list/dir_list = list() + + for(var/i=1,i <= 16,i <<= 1) + if(direction & i) + dir_list += i + + if(dir_list.len) + var/new_dir = pick(dir_list) + if(new_dir == 16) + floor = TRUE + new_dir = 1 + return new_dir + + floor = TRUE + return TRUE + +/** + * Causes the glowshroom to decay by decreasing its endurance, destroying it when it gets too low. + * + * Arguments: + * * amount - Amount of endurance to be reduced due to spread decay. + */ +/obj/structure/glowshroom/proc/Decay(amount) + myseed.adjust_endurance(-amount * endurance_decay_rate) + take_damage(amount) + // take_damage could qdel our shroom, so check beforehand + // if our endurance dropped before the min plant endurance, then delete our shroom anyways + if(!QDELETED(src) && myseed.endurance <= MIN_PLANT_ENDURANCE) + qdel(src) + +/obj/structure/glowshroom/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + if(damage_type == BURN && damage_amount) + playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE) + +/obj/structure/glowshroom/should_atmos_process(datum/gas_mixture/air, exposed_temperature) + return exposed_temperature > 300 + +/obj/structure/glowshroom/atmos_expose(datum/gas_mixture/air, exposed_temperature) + take_damage(5, BURN, 0, 0) + +/obj/structure/glowshroom/acid_act(acidpwr, acid_volume) + visible_message(span_danger("[src] melts away!")) + var/obj/effect/decal/cleanable/molten_object/I = new (get_turf(src)) + I.desc = "Looks like this was \an [src] some time ago." + qdel(src) + return TRUE + +/obj/structure/glowshroom/extreme/Initialize(mapload, obj/item/seeds/newseed) + . = ..() + if(generation == 1) + myseed.potency = 100 + myseed.endurance = 100 + myseed.yield = 10 + +/obj/structure/glowshroom/medium/Initialize(mapload, obj/item/seeds/newseed) + . = ..() + if(generation == 1) + myseed.potency = 50 + myseed.endurance = 50 + myseed.yield = 5 + diff --git a/monkestation/code/game/objects/items/circuitboards/computer_circuitboards.dm b/monkestation/code/game/objects/items/circuitboards/computer_circuitboards.dm index 305ef9fc449e..02122087ab4e 100644 --- a/monkestation/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/monkestation/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -17,3 +17,13 @@ name = "Nanite Cloud Control (Computer Board)" greyscale_colors = CIRCUIT_COLOR_SCIENCE build_path = /obj/machinery/computer/nanite_cloud_controller + +/obj/item/circuitboard/computer/goldeneye_helm + name = "goldeneye cruiser helm" + greyscale_colors = CIRCUIT_COLOR_GENERIC + build_path = /obj/machinery/computer/shuttle/goldeneye_cruiser + +/obj/item/circuitboard/computer/goldeneye_recall + name = "goldeneye cruiser recall" + greyscale_colors = CIRCUIT_COLOR_GENERIC + build_path = /obj/machinery/computer/shuttle/goldeneye_cruiser/recall diff --git a/monkestation/code/game/objects/items/circuitboards/machine_circuitboards.dm b/monkestation/code/game/objects/items/circuitboards/machine_circuitboards.dm index 2c8e2dd55219..f92f715cb3f9 100644 --- a/monkestation/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/monkestation/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -83,3 +83,13 @@ /obj/item/circuitboard/machine/public_nanite_chamber/examine(mob/user) . = ..() . += "Cloud ID is currently set to [cloud_id]." + +/obj/item/circuitboard/machine/composters + name = "NT-Brand Auto Composter (Machine Board)" + greyscale_colors = CIRCUIT_COLOR_ENGINEERING + desc = "Comes with a small amount solder of arranged in the corner: \"If you can read this, you're too close.\"" + build_path = /obj/machinery/composters + req_components = list( + /datum/stock_part/matter_bin = 1, + /datum/stock_part/manipulator = 1, + ) diff --git a/monkestation/code/game/objects/items/emags.dm b/monkestation/code/game/objects/items/emags.dm new file mode 100644 index 000000000000..8e6b409b8b84 --- /dev/null +++ b/monkestation/code/game/objects/items/emags.dm @@ -0,0 +1,25 @@ +/obj/item/card/emag + var/microwaved = FALSE + var/microwaved_uses_left = -1 + +/obj/item/card/emag/microwave_act(obj/machinery/microwave/microwave_source, mob/microwaver, randomize_pixel_offset) + if (microwaved) + microwave_source.can_eject = FALSE + INVOKE_ASYNC(src, PROC_REF(microwave_explode), microwave_source, microwaver) + return ..() | COMPONENT_MICROWAVE_DONTEJECT | COMPONENT_MICROWAVE_DONTDIRTY | COMPONENT_MICROWAVE_DONTOPEN + desc += " Some of the components look a little crispy." + icon_state = "[initial(icon_state)]_burnt" + + microwaved_uses_left = 5 + microwaved = TRUE + return ..() | COMPONENT_MICROWAVE_SUCCESS | COMPONENT_MICROWAVE_DONTDIRTY + +/obj/item/card/emag/proc/microwave_explode(obj/machinery/microwave/microwave_source, mob/microwaver) + microwave_source.spark() + sleep(0.6 SECONDS) + // explode the microwave, + explosion(microwave_source, heavy_impact_range = 0, light_impact_range = 2, flame_range = 1, smoke = TRUE) + microwave_source.broken = 2 + if(!QDELETED(src)) + qdel(src) + microwave_source.update_appearance() diff --git a/monkestation/code/game/objects/items/plushies.dm b/monkestation/code/game/objects/items/plushies.dm index a05b50bfd9bd..35b82665cc4e 100644 --- a/monkestation/code/game/objects/items/plushies.dm +++ b/monkestation/code/game/objects/items/plushies.dm @@ -54,3 +54,10 @@ desc = "D'aww he's gonna save the world, yes he is!" icon = 'monkestation/icons/obj/plushes.dmi' icon_state = "knight" + +/obj/item/toy/plush/durrcell // https://www.twitch.tv/durrhurrdurr + name = "durrcell plush" + desc = "''Behold, Man''" + icon = 'monkestation/icons/obj/plushes.dmi' + icon_state = "durrcell" + squeak_override = list('monkestation/sound/voice/durrcell-squeak.ogg'=1) diff --git a/monkestation/code/game/objects/items/storage/book.dm b/monkestation/code/game/objects/items/storage/book.dm index 10345f87df46..3dcb8096e819 100644 --- a/monkestation/code/game/objects/items/storage/book.dm +++ b/monkestation/code/game/objects/items/storage/book.dm @@ -1,4 +1,4 @@ -/obj/item/storage/book/bible/mini +/obj/item/book/bible/mini //Grif name = "O.C. Bible" desc = "For when you don't want the good book to take up too much space in your life, its so small you can hide it under floors." @@ -8,6 +8,6 @@ inhand_icon_state = null w_class = WEIGHT_CLASS_SMALL -/obj/item/storage/book/bible/mini/Initialize(mapload) +/obj/item/book/bible/mini/Initialize(mapload) . = ..() AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE, INVISIBILITY_OBSERVER, use_anchor = TRUE) diff --git a/monkestation/code/game/objects/items/storage/uplink_kits.dm b/monkestation/code/game/objects/items/storage/uplink_kits.dm index 5b5148806f38..479cd08b18c3 100644 --- a/monkestation/code/game/objects/items/storage/uplink_kits.dm +++ b/monkestation/code/game/objects/items/storage/uplink_kits.dm @@ -199,6 +199,22 @@ Good luck agent. You can burn this document."} +/obj/item/storage/box/syndie_kit/shotgun_revolver + desc = "A box containing a value bundled shotgun revolver and some shotgun shells. Comes with two quickload cartridges of slugs" + +/obj/item/storage/box/syndie_kit/shotgun_revolver/PopulateContents() + new /obj/item/gun/ballistic/revolver/shotgun_revolver(src) + new /obj/item/ammo_box/advanced/s12gauge(src) + new /obj/item/ammo_box/advanced/s12gauge(src) + + +/obj/item/storage/box/syndie_kit/shit_smg_bundle + desc = "A box containing a surplus space soviet Plastikov and two magazines. Perfect for henchmen." + +/obj/item/storage/box/syndie_kit/shit_smg_bundle/PopulateContents() + new /obj/item/gun/ballistic/automatic/plastikov(src) + new /obj/item/ammo_box/magazine/plastikov9mm(src) + #undef KIT_ITEM_CATEGORY_SUPPORT #undef KIT_ITEM_CATEGORY_WEAPONS #undef KIT_ITEM_CATEGORY_MISC diff --git a/monkestation/code/game/objects/structures/beds_chairs/chair.dm b/monkestation/code/game/objects/structures/beds_chairs/chair.dm index 83cc49eb7282..e15ba069b2cc 100644 --- a/monkestation/code/game/objects/structures/beds_chairs/chair.dm +++ b/monkestation/code/game/objects/structures/beds_chairs/chair.dm @@ -6,6 +6,7 @@ icon_state = "stool" resistance_flags = FIRE_PROOF can_buckle = FALSE + buildstacktype = /obj/item/stack/sheet/mineral/sandstone buildstackamount = 1 item_chair = /obj/item/chair/stool/sandstone diff --git a/monkestation/code/game/objects/structures/crates_lockers/closets/secure/brig_physician.dm b/monkestation/code/game/objects/structures/crates_lockers/closets/secure/brig_physician.dm index a2ae5b7beaaf..7c513a1e155e 100644 --- a/monkestation/code/game/objects/structures/crates_lockers/closets/secure/brig_physician.dm +++ b/monkestation/code/game/objects/structures/crates_lockers/closets/secure/brig_physician.dm @@ -11,7 +11,7 @@ new /obj/item/flashlight/seclite(src) new /obj/item/storage/bag/garment/brig_physician(src) new /obj/item/storage/backpack/brig_physician(src) - new /obj/item/storage/backpack/duffelbag/sec/surgery(src) + new /obj/item/storage/backpack/duffelbag/brig_physician/surgery(src) new /obj/item/clothing/glasses/hud/health(src) new /obj/item/healthanalyzer(src) new /obj/item/defibrillator/loaded(src) diff --git a/monkestation/code/game/objects/structures/elevation.dm b/monkestation/code/game/objects/structures/elevation.dm new file mode 100644 index 000000000000..7cd258f5e179 --- /dev/null +++ b/monkestation/code/game/objects/structures/elevation.dm @@ -0,0 +1,6 @@ +GIVE_TURF_ELEVATED_TRAIT(/obj/machinery/conveyor) +GIVE_TURF_ELEVATED_TRAIT(/obj/machinery/stasis) +GIVE_TURF_ELEVATED_TRAIT(/obj/machinery/closet) +GIVE_TURF_ELEVATED_TRAIT(/obj/machinery/rack) +GIVE_TURF_ELEVATED_TRAIT(/obj/machinery/table) +GIVE_TURF_ELEVATED_TRAIT(/obj/machinery/smartfridge) diff --git a/monkestation/code/game/sound.dm b/monkestation/code/game/sound.dm index 54efc47f10d7..3505ea2e567d 100644 --- a/monkestation/code/game/sound.dm +++ b/monkestation/code/game/sound.dm @@ -69,7 +69,7 @@ /datum/ui_module/volume_mixer/proc/set_channel_volume(channel, vol, mob/user) if((channel == CHANNEL_LOBBYMUSIC) || (channel == CHANNEL_MASTER_VOLUME)) if(isnewplayer(user)) - user.client.media.update_volume(0.5 + (vol * 0.05)) + user.client.media.update_volume((vol)) var/sound/S = sound(null, channel = channel, volume = vol) S.status = SOUND_UPDATE diff --git a/monkestation/code/modules/a_ship_in_need_of_breaking/area.dm b/monkestation/code/modules/a_ship_in_need_of_breaking/area.dm new file mode 100644 index 000000000000..e2a2cba4fd74 --- /dev/null +++ b/monkestation/code/modules/a_ship_in_need_of_breaking/area.dm @@ -0,0 +1,4 @@ + +/area/shipbreak + name = "Shipbreak Zone" + icon_state = "escape" diff --git a/monkestation/code/modules/a_ship_in_need_of_breaking/icons/shipbreaking.dmi b/monkestation/code/modules/a_ship_in_need_of_breaking/icons/shipbreaking.dmi new file mode 100644 index 000000000000..93f4b56f0d28 Binary files /dev/null and b/monkestation/code/modules/a_ship_in_need_of_breaking/icons/shipbreaking.dmi differ diff --git a/monkestation/code/modules/a_ship_in_need_of_breaking/machines/console.dm b/monkestation/code/modules/a_ship_in_need_of_breaking/machines/console.dm new file mode 100644 index 000000000000..a4cd775f721f --- /dev/null +++ b/monkestation/code/modules/a_ship_in_need_of_breaking/machines/console.dm @@ -0,0 +1,125 @@ +/obj/machinery/computer/shipbreaker + name = "Shipbreaking Shuttle Console" + desc = "A computer console used to call a ship for breaking, how original!" + icon_screen = "holocontrol" + + + var/turf/bottom_left + +///what area type this holodeck loads into. linked turns into the nearest instance of this area + var/area/mapped_start_area = /area/shipbreak + +///the currently used map template + var/datum/map_template/shipbreaker/template + +///List of ships to spawn. + var/list/possible_ships = list() + +///subtypes of this (but not this itself) are loadable programs + var/ship_type = /datum/map_template/shipbreaker + +///links the shipbreaker zone to the computer + var/area/shipbreak/linked +///cool variablw + var/spawn_area_clear = TRUE + + ///our overall ship health + var/ship_health = 0 + ///our initial turf count + var/turf_count = 0 + +/obj/machinery/computer/shipbreaker/Initialize(mapload) + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/computer/shipbreaker/LateInitialize() + linked = GLOB.areas_by_type[mapped_start_area] + if(!linked) + return + bottom_left = locate(linked.x, linked.y, src.z) + for(var/ship in subtypesof(ship_type)) + var/datum/map_template/shipbreaker/s = new ship + possible_ships+= s + +/obj/machinery/computer/shipbreaker/proc/spawn_ship() + area_clear_check() + if(!spawn_area_clear) + say("ERROR: SHIPBREAKING ZONE NOT CLEAR, PLEASE REMOVE ALL REMAINING SHIP PARTS") + return + var/datum/map_template/shipbreaker/ship_to_spawn = pick(possible_ships) + + ship_to_spawn.load(bottom_left) + + setup_health_tracker() + damage_ship() + +/obj/machinery/computer/shipbreaker/proc/area_clear_check() + for(var/turf/t in linked) + if(!isspaceturf(t)) + spawn_area_clear = FALSE + return + for(var/obj/s in linked) + if(isstructure(s) || ismachinery(s)) + spawn_area_clear = FALSE + return + + spawn_area_clear = TRUE + +/obj/machinery/computer/shipbreaker/proc/clear_floor_plating() + for(var/turf/t in linked) + if(isfloorturf(t)) + t.ScrapeAway() + + +/obj/machinery/computer/shipbreaker/ui_interact(mob/user, datum/tgui/ui) + . = ..() + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "ShipbreakerConsole", name) + ui.open() + +/obj/machinery/computer/shipbreaker/ui_data(mob/user) + . = ..() + var/list/data = list() + data["health"] = ship_health + + return data + +/obj/machinery/computer/shipbreaker/ui_act(action, params) + . = ..() + if(.) + return + . = TRUE + + switch(action) + if("spawn_ship") + turf_count = 0 + spawn_ship() + return + if("clear_floor_plating") + clear_floor_plating() + return + +/obj/machinery/computer/shipbreaker/proc/setup_health_tracker() + for(var/turf/turf in linked) + turf_count++ + RegisterSignal(turf, COMSIG_TURF_DESTROY, PROC_REF(modify_health)) + ship_health = 100 + +/obj/machinery/computer/shipbreaker/proc/modify_health(turf/source) + ship_health -= (1 / turf_count) + ship_health = max(ship_health, 0) + + +/obj/machinery/computer/shipbreaker/proc/damage_ship() + var/list/turfs = list() + for(var/turf/turf in linked) + turfs += turf + + var/prob_chance_explode = 100 + if(prob(0)) + prob_chance_explode = 0 + while(prob(prob_chance_explode)) + prob_chance_explode -= 33 + var/turf/picked_turf = pick(turfs) + explosion(picked_turf, rand(0, 4), rand(0, 4), rand(0, 6), 0, 0 , FALSE, FALSE, TRUE, FALSE, linked) diff --git a/monkestation/code/modules/a_ship_in_need_of_breaking/machines/recycler.dm b/monkestation/code/modules/a_ship_in_need_of_breaking/machines/recycler.dm new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/monkestation/code/modules/a_ship_in_need_of_breaking/scrap.dm b/monkestation/code/modules/a_ship_in_need_of_breaking/scrap.dm new file mode 100644 index 000000000000..3d611a949879 --- /dev/null +++ b/monkestation/code/modules/a_ship_in_need_of_breaking/scrap.dm @@ -0,0 +1,78 @@ +/obj/item/proc/get_shipbreaking_reward() + return null + +/obj/item/stock_parts/get_shipbreaking_reward() + if(prob(rating * 10)) //more chance to get better things if you have a higher rating + switch(rand(1,10)) + if(1 to 6) + return /obj/item/stack/scrap/electronics + if(6 to 9) + return /obj/item/stack/scrap/plasma + if(10) + return /obj/item/stack/scrap/crystalline_matrix + return /obj/item/stack/scrap/electronics + +/obj/item/circuitboard/machine/get_shipbreaking_reward() + return /obj/item/stack/scrap/electronics + +/obj/item/stack/scrap + name = "scrap" + singular_name = "scrap" + merge_type = /obj/item/stack/scrap + desc = "get some help if you see this" + icon = 'monkestation/code/modules/a_ship_in_need_of_breaking/icons/shipbreaking.dmi' + icon_state = "ship_plating" + var/point_value = 0 //how many shipbreaking points these give from recycling + +/obj/item/stack/scrap/plating + name = "ship plating" + singular_name = "ship plating" + merge_type = /obj/item/stack/scrap/plating + desc = "Rigid sheet plating used in the construction of ships." + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) + point_value = 10 + +/obj/item/stack/scrap/electronics + name = "scrap electronics" + singular_name = "scrap electronic" + merge_type = /obj/item/stack/scrap/electronics + icon_state = "scrap_electronics" + desc = "Piles of scrap electronics crowbarred out of ships. You can't seem to find the gibber board in this mess." + custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/gold = 100) + point_value = 20 + +/obj/item/stack/scrap/framing + name = "ship framing" + singular_name = "ship framing" + merge_type = /obj/item/stack/scrap/framing + icon_state = "ship_framing" + desc = "Silver-Titanium alloy I-beams used in the construction of ships. Whoever designed this must have owned a silver mining planet." + custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/titanium = 100) + point_value = 30 + +/obj/item/stack/scrap/plasma + name = "congealed plasma" + singular_name = "congealed plasma" + merge_type = /obj/item/stack/scrap/plasma + icon_state = "congealed_plasma" + desc = "A nasty bundle of congealed plasma gathered from ship innards. Nice and sticky!" + custom_materials = list(/datum/material/plasma = SHEET_MATERIAL_AMOUNT) + point_value = 50 + +/obj/item/stack/scrap/core + name = "ship core" + singular_name = "ship core" + merge_type = /obj/item/stack/scrap/core + icon_state = "ship_core" + desc = "A radioactive core of a nuclear thruster. Make sure there's no assistants under your ship with a reciprocating saw." + custom_materials = list(/datum/material/uranium = SHEET_MATERIAL_AMOUNT, /datum/material/iron = 100) + point_value = 45 + +/obj/item/stack/scrap/crystalline_matrix + name = "crystalline matrix" + singular_name = "crystalline matrix" + merge_type = /obj/item/stack/scrap/crystalline_matrix + icon_state = "crystalline_matrix" + desc = "A crystalline matrix used in immense calculations to sheer ships. AGI by 2520!" + custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = 100) + point_value = 100 diff --git a/monkestation/code/modules/a_ship_in_need_of_breaking/ship_maps/robotics.dmm b/monkestation/code/modules/a_ship_in_need_of_breaking/ship_maps/robotics.dmm new file mode 100644 index 000000000000..5c6948c25990 --- /dev/null +++ b/monkestation/code/modules/a_ship_in_need_of_breaking/ship_maps/robotics.dmm @@ -0,0 +1,667 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bo" = ( +/obj/machinery/rnd/production/protolathe/offstation, +/obj/machinery/conveyor{ + dir = 4; + id = "mothership_right" + }, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"bG" = ( +/turf/closed/wall/mineral/titanium, +/area/shipbreak) +"cE" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "mothership_right" + }, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"cH" = ( +/obj/machinery/status_display/ai, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shipbreak) +"dk" = ( +/obj/machinery/door/airlock/external/ruin, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/shipbreak) +"dB" = ( +/obj/machinery/power/shuttle_engine/heater, +/obj/structure/window/reinforced/spawner/directional/north{ + layer = 2.9 + }, +/turf/template_noop, +/area/shipbreak) +"ev" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shipbreak) +"fi" = ( +/obj/machinery/light/cold/no_nightlight/directional/west, +/obj/machinery/button/door/directional/west{ + id = "mothership_left" + }, +/obj/structure/cable, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"fA" = ( +/obj/item/stack/sheet/mineral/titanium, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/shipbreak) +"ht" = ( +/obj/structure/lattice, +/obj/item/stack/sheet/mineral/titanium, +/turf/template_noop, +/area/shipbreak) +"hQ" = ( +/obj/structure/spacevine, +/obj/machinery/conveyor{ + id = "mothership_main"; + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/shipbreak) +"hZ" = ( +/obj/structure/cable, +/turf/open/floor/plating, +/area/shipbreak) +"ib" = ( +/turf/open/floor/circuit/airless, +/area/shipbreak) +"jp" = ( +/obj/structure/sign/warning/vacuum/external/directional/west, +/obj/structure/closet/emcloset/anchored, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating, +/area/shipbreak) +"jH" = ( +/obj/machinery/power/shuttle_engine/heater, +/obj/structure/window/reinforced/spawner/directional/north{ + layer = 2.9 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/template_noop, +/area/shipbreak) +"ka" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/shipbreak) +"mj" = ( +/obj/effect/spawner/structure/window/reinforced/shuttle, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shipbreak) +"mC" = ( +/obj/machinery/power/shuttle_engine/propulsion, +/turf/template_noop, +/area/shipbreak) +"nJ" = ( +/obj/item/radio/intercom/directional/south, +/obj/structure/ai_core, +/turf/open/floor/circuit/green/airless, +/area/shipbreak) +"pL" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/conveyor{ + dir = 8; + id = "mothership_main" + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/shipbreak) +"qg" = ( +/obj/item/organ/internal/brain, +/obj/structure/cable, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"qN" = ( +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "mothership_main" + }, +/turf/open/floor/plating/airless, +/area/shipbreak) +"rI" = ( +/turf/template_noop, +/area/shipbreak) +"we" = ( +/obj/machinery/power/smes, +/obj/structure/cable, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"wg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"wB" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/cyborg_mothership{ + dir = 1 + }, +/turf/open/floor/circuit/green/airless, +/area/shipbreak) +"xg" = ( +/obj/machinery/mineral/stacking_machine{ + input_dir = 2 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/shipbreak) +"xX" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "mothership_left" + }, +/obj/structure/cable, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"ys" = ( +/obj/machinery/light/cold/no_nightlight/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"yL" = ( +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "mothership_main" + }, +/turf/open/floor/plating/airless, +/area/shipbreak) +"zp" = ( +/obj/machinery/space_heater{ + anchored = 1 + }, +/obj/machinery/camera/directional/west, +/obj/item/pipe_dispenser, +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/all_access, +/obj/item/wrench, +/turf/open/floor/plating, +/area/shipbreak) +"AL" = ( +/obj/machinery/mecha_part_fabricator/maint{ + name = "forgotten exosuit fabricator"; + dir = 8 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "mothership_left" + }, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"AY" = ( +/obj/machinery/computer/shuttle/cyborg_mothership{ + dir = 1 + }, +/turf/open/floor/circuit/green/airless, +/area/shipbreak) +"BI" = ( +/obj/machinery/power/shuttle_engine/heater, +/obj/structure/window/reinforced/spawner/directional/north{ + layer = 2.9 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/template_noop, +/area/shipbreak) +"Cj" = ( +/obj/machinery/door/airlock/hatch, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shipbreak) +"DF" = ( +/obj/item/stack/rods, +/obj/machinery/light/broken/directional/east, +/obj/machinery/button/door/directional/east{ + id = "mothership_right" + }, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"Ea" = ( +/obj/machinery/recharge_station, +/obj/structure/sign/warning/vacuum/external/directional/east, +/obj/machinery/camera/directional/east, +/turf/open/floor/plating, +/area/shipbreak) +"FK" = ( +/obj/machinery/conveyor{ + id = "Recycler" + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/shipbreak) +"FL" = ( +/obj/structure/lattice, +/obj/structure/marker_beacon/cerulean, +/turf/template_noop, +/area/shipbreak) +"Ga" = ( +/obj/structure/spacevine, +/obj/machinery/conveyor{ + dir = 1; + id = "mothership_main" + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/shipbreak) +"Hr" = ( +/obj/item/mmi, +/turf/open/floor/circuit/green/airless, +/area/shipbreak) +"HO" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/power/tracker, +/obj/structure/cable, +/turf/template_noop, +/area/shipbreak) +"Ja" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/shipbreak) +"Jk" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/conveyor_switch{ + id = "Recycler"; + name = "Recycler" + }, +/turf/template_noop, +/area/shipbreak) +"Jn" = ( +/obj/item/circuitboard/aicore, +/obj/structure/cable, +/turf/open/floor/circuit/green/airless, +/area/shipbreak) +"Js" = ( +/obj/machinery/holopad/secure, +/obj/structure/cable, +/turf/open/floor/circuit/green/airless, +/area/shipbreak) +"JW" = ( +/obj/structure/cable, +/obj/machinery/power/terminal{ + dir = 4 + }, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"LS" = ( +/obj/item/stack/sheet/rglass{ + amount = 2 + }, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"Mf" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external/ruin{ + id_tag = "caravanpirate_bolt_port" + }, +/obj/effect/turf_decal/stripes/asteroid/line, +/turf/open/floor/plating, +/area/shipbreak) +"NY" = ( +/obj/machinery/mineral/ore_redemption{ + input_dir = 4 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/shipbreak) +"OR" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/camera/directional/north, +/obj/machinery/ore_silo, +/turf/template_noop, +/area/shipbreak) +"Pc" = ( +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "mothership_main" + }, +/obj/structure/cable, +/turf/template_noop, +/area/shipbreak) +"Qd" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "mothership_main" + }, +/turf/template_noop, +/area/shipbreak) +"Qm" = ( +/obj/machinery/conveyor{ + id = "mothership_main"; + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/shipbreak) +"RU" = ( +/obj/item/disk/holodisk/ruin/cyborg_mothership, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"Th" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shipbreak) +"UU" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/conveyor_switch/oneway{ + id = "mothership_main" + }, +/turf/template_noop, +/area/shipbreak) +"Vf" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "mothership_main" + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/shipbreak) +"VU" = ( +/obj/structure/table, +/obj/item/toy/talking/ai{ + pixel_x = 7; + pixel_y = 10 + }, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/turf/open/floor/circuit/green/airless, +/area/shipbreak) +"VW" = ( +/obj/machinery/camera/directional/south, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south{ + environ = 0; + equipment = 0; + lighting = 0 + }, +/obj/effect/mapping_helpers/apc/unlocked, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"Wf" = ( +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "mothership_main" + }, +/obj/structure/cable, +/turf/template_noop, +/area/shipbreak) +"WC" = ( +/obj/structure/cable, +/obj/structure/table_frame, +/obj/item/aicard, +/obj/item/ai_module/core/full/overlord, +/turf/open/floor/circuit/green/airless, +/area/shipbreak) +"WH" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "mothership_main" + }, +/obj/machinery/recycler{ + dir = 1; + eat_dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shipbreak) +"XU" = ( +/obj/structure/spacevine, +/obj/machinery/conveyor{ + id = "mothership_main" + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/shipbreak) +"Ya" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/shipbreak) +"Yj" = ( +/obj/machinery/light/cold/no_nightlight/directional/west, +/turf/open/floor/circuit/airless, +/area/shipbreak) +"ZL" = ( +/obj/machinery/conveyor{ + id = "mothership_main"; + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/shipbreak) + +(1,1,1) = {" +rI +rI +rI +ev +ev +ev +ev +ev +ev +ev +ev +ev +rI +Qd +rI +rI +rI +rI +rI +"} +(2,1,1) = {" +rI +rI +ev +ev +rI +rI +rI +rI +rI +rI +rI +rI +ev +Qd +ev +ev +rI +rI +rI +"} +(3,1,1) = {" +ev +ev +bG +rI +ka +bG +ev +AL +ev +ev +bG +ka +rI +Pc +Ga +Qm +dB +mC +rI +"} +(4,1,1) = {" +bG +ev +ev +bG +bG +ev +fi +xX +wg +Yj +ev +bG +rI +rI +xg +Vf +jH +mC +rI +"} +(5,1,1) = {" +cH +jp +ev +zp +cH +LS +Jn +wB +WC +JW +ib +cH +ka +FL +qN +Vf +Qm +jH +mC +"} +(6,1,1) = {" +dk +Th +Mf +hZ +Cj +qg +Js +nJ +ev +we +VW +ev +OR +UU +WH +Jk +pL +mj +HO +"} +(7,1,1) = {" +cH +Ea +ev +Ya +cH +RU +Hr +AY +VU +ib +ib +cH +ka +FL +yL +FK +ZL +BI +mC +"} +(8,1,1) = {" +bG +ev +ev +bG +Ja +fA +DF +cE +ib +ys +ev +bG +rI +rI +NY +Vf +BI +mC +rI +"} +(9,1,1) = {" +ev +ev +bG +rI +ht +fA +ev +bo +ev +ev +bG +ka +rI +Wf +XU +hQ +dB +mC +rI +"} +(10,1,1) = {" +rI +rI +ev +ev +rI +rI +rI +rI +rI +rI +rI +rI +ev +Qd +ev +ev +rI +rI +rI +"} +(11,1,1) = {" +rI +rI +rI +ev +ev +ev +ev +ev +ev +ev +ev +ev +rI +Qd +rI +rI +rI +rI +rI +"} diff --git a/monkestation/code/modules/a_ship_in_need_of_breaking/ships/_base_ship.dm b/monkestation/code/modules/a_ship_in_need_of_breaking/ships/_base_ship.dm new file mode 100644 index 000000000000..d0bb8f483343 --- /dev/null +++ b/monkestation/code/modules/a_ship_in_need_of_breaking/ships/_base_ship.dm @@ -0,0 +1,10 @@ + +/datum/map_template/shipbreaker + should_place_on_top = TRUE + returns_created_atoms = TRUE + keep_cached_map = TRUE + + var/template_id + var/description + var/datum/parsed_map/lastparsed + var/tied_faction = DONK_CO_NAME diff --git a/monkestation/code/modules/a_ship_in_need_of_breaking/ships/robotics.dm b/monkestation/code/modules/a_ship_in_need_of_breaking/ships/robotics.dm new file mode 100644 index 000000000000..3ea3f176c3f3 --- /dev/null +++ b/monkestation/code/modules/a_ship_in_need_of_breaking/ships/robotics.dm @@ -0,0 +1,5 @@ +/datum/map_template/shipbreaker/robotics + name = "Old Robotics Cruiser" + template_id = "robotics" + description = "robotics" + mappath = "monkestation/code/modules/a_ship_in_need_of_breaking/ship_maps/robotics.dmm" diff --git a/monkestation/code/modules/abberant_organs/components/abberant_organ.dm b/monkestation/code/modules/abberant_organs/components/abberant_organ.dm index aa3fa24c65bc..1666f8834fda 100644 --- a/monkestation/code/modules/abberant_organs/components/abberant_organ.dm +++ b/monkestation/code/modules/abberant_organs/components/abberant_organ.dm @@ -49,11 +49,11 @@ host = null SEND_SIGNAL(parent, COMSIG_ABBERANT_HOST_CLEARED) -/datum/component/abberant_organ/proc/trigger() +/datum/component/abberant_organ/proc/trigger(datum/source, trigger_value, list/extra_data) SIGNAL_HANDLER for(var/datum/organ_process/process as anything in processors) - process.trigger(host, stability) - SEND_SIGNAL(parent, COMSIG_ABBERANT_OUTCOME) + process.trigger(host, stability, trigger_value, extra_data) + SEND_SIGNAL(parent, COMSIG_ABBERANT_OUTCOME, trigger_value, extra_data) /datum/component/abberant_organ/proc/add_trait(datum/source, /datum/organ_trait) //TODO diff --git a/monkestation/code/modules/abberant_organs/processes/_base.dm b/monkestation/code/modules/abberant_organs/processes/_base.dm index 801bcfb81d25..d095b155ab6e 100644 --- a/monkestation/code/modules/abberant_organs/processes/_base.dm +++ b/monkestation/code/modules/abberant_organs/processes/_base.dm @@ -5,4 +5,4 @@ var/complexity_cost = 0 var/process_flags = NONE -/datum/organ_process/proc/trigger(datum/weakref/host, stability) +/datum/organ_process/proc/trigger(datum/weakref/host, stability, trigger_value, list/extra_data) diff --git a/monkestation/code/modules/abberant_organs/processes/liver/reagent_conversion.dm b/monkestation/code/modules/abberant_organs/processes/liver/reagent_conversion.dm index 0e470d30f1c7..72e246600b2f 100644 --- a/monkestation/code/modules/abberant_organs/processes/liver/reagent_conversion.dm +++ b/monkestation/code/modules/abberant_organs/processes/liver/reagent_conversion.dm @@ -10,12 +10,18 @@ . = ..() converted_reagent = /datum/reagent/consumable/ethanol -/datum/organ_process/reagent_conversion/trigger(datum/weakref/host, stability) +/datum/organ_process/reagent_conversion/trigger(datum/weakref/host, stability, trigger_value, list/extra_data) if(!host) return var/mob/living/mob = host.resolve() if(!mob.reagents) return - var/volume_to_use = mob.reagents.total_volume * conversion_precent - mob.reagents.remove_all(volume_to_use) + var/volume_to_use = trigger_value * conversion_precent + if(extra_data) + if("reagent" in extra_data) + mob.reagents.remove_all_type(extra_data["reagent"], volume_to_use) + else + mob.reagents.remove_all(volume_to_use) + else + mob.reagents.remove_all(volume_to_use) mob.reagents.add_reagent(converted_reagent, volume_to_use) diff --git a/monkestation/code/modules/abberant_organs/triggers/_base_trigger.dm b/monkestation/code/modules/abberant_organs/triggers/_base_trigger.dm index ea6f12372b8e..8c62623fa96b 100644 --- a/monkestation/code/modules/abberant_organs/triggers/_base_trigger.dm +++ b/monkestation/code/modules/abberant_organs/triggers/_base_trigger.dm @@ -15,11 +15,11 @@ RegisterSignal(parent, COMSIG_ABBERANT_HOST_SET, PROC_REF(set_host)) RegisterSignal(parent, COMSIG_ABBERANT_HOST_CLEARED, PROC_REF(remove_host)) -/datum/organ_trigger/proc/trigger() +/datum/organ_trigger/proc/trigger(trigger_value = 0, list/extra_data) SIGNAL_HANDLER SHOULD_CALL_PARENT(TRUE) - SEND_SIGNAL(parent, COMSIG_ABBERANT_TRIGGER, trigger_cost) + SEND_SIGNAL(parent, COMSIG_ABBERANT_TRIGGER, trigger_value, extra_data) /datum/organ_trigger/proc/set_host(atom/parent, atom/movable/incoming) SIGNAL_HANDLER diff --git a/monkestation/code/modules/abberant_organs/triggers/generic/process.dm b/monkestation/code/modules/abberant_organs/triggers/generic/process.dm index daffd734ff38..854d6da8a0f4 100644 --- a/monkestation/code/modules/abberant_organs/triggers/generic/process.dm +++ b/monkestation/code/modules/abberant_organs/triggers/generic/process.dm @@ -9,7 +9,7 @@ . = ..() START_PROCESSING(SSabberant, src) -/datum/organ_trigger/process/Destroy(force, ...) +/datum/organ_trigger/process/Destroy(force) . = ..() STOP_PROCESSING(SSabberant, src) diff --git a/monkestation/code/modules/abberant_organs/triggers/liver/chemical_consumption.dm b/monkestation/code/modules/abberant_organs/triggers/liver/chemical_consumption.dm index a18fc9767509..fed768e780fe 100644 --- a/monkestation/code/modules/abberant_organs/triggers/liver/chemical_consumption.dm +++ b/monkestation/code/modules/abberant_organs/triggers/liver/chemical_consumption.dm @@ -13,7 +13,7 @@ . = ..() if(!incoming.reagents) return - RegisterSignal(incoming.reagents, COMSIG_REAGENTS_ADD_REAGENT, PROC_REF(check_trigger)) + RegisterSignal(incoming.reagents, COMSIG_DRANK_REAGENT, PROC_REF(check_trigger)) /datum/organ_trigger/chemical_consume/remove_host() var/mob/living/resolved = host.resolve() @@ -21,6 +21,7 @@ UnregisterSignal(resolved.reagents, COMSIG_REAGENTS_ADD_REAGENT) . = ..() -/datum/organ_trigger/chemical_consume/proc/check_trigger(datum/source, datum/reagent/reagent, amount, reagtemp, data, no_react) - if(reagent.type == consumed_chemical) - trigger() +/datum/organ_trigger/chemical_consume/proc/check_trigger(datum/source, datum/reagents/reagent, amount) + for(var/datum/reagent/listed as anything in reagent.reagent_list) + if(listed.type == consumed_chemical) + trigger(amount / length(reagent.reagent_list), list("reagent" = consumed_chemical)) diff --git a/monkestation/code/modules/admin/smites/choke_on_this.dm b/monkestation/code/modules/admin/smites/choke_on_this.dm new file mode 100644 index 000000000000..d20d51fb6e72 --- /dev/null +++ b/monkestation/code/modules/admin/smites/choke_on_this.dm @@ -0,0 +1,32 @@ +/datum/smite/choke_on_this + name = "Choke on this!" + var/to_paper = null + var/choke_object = null + +/datum/smite/choke_on_this/configure(client/user) + var/thingy = "Choke on thing?" + var/words = "Choke on words!" + var/selection = tgui_alert(user, "What shall they choke upon m'lord?", "Choke on this!", list(words, thingy, "nevermind"), 0, TRUE) + if(selection == words) + to_paper = tgui_input_text(user, "What words do you want them to choke on?", "Admins stink!", max_length = 250, multiline = TRUE) + else if(selection == thingy) + choke_object = tgui_input_text(user, "What Object shall they choke on? must be a descendant /datum/atom/moveable, if you can't imagine it moving it shouldn't be used. An example is provided. /obj/item/clothing/shoes/sneakers/white", "What Object shall they choke on?", max_length = 250, multiline = TRUE ) + else + return + +/datum/smite/choke_on_this/effect(client/user, mob/living/target) + if (!iscarbon(target)) + to_chat(user, span_warning("This must be used on a carbon mob."), confidential = TRUE) + return + //var/mob/living/carbon/carbon_target = target + var/chokerino = text2path(choke_object) + if(to_paper != null) + var/obj/item/paper/choke_paper = new + choke_paper.add_raw_text(to_paper) + target.AddComponent(/datum/status_effect/choke, choke_paper, flaming = FALSE, vomit_delay = -1) + else if(chokerino != null) + var/choke_obj = new chokerino + target.AddComponent(/datum/status_effect/choke, choke_obj, flaming = FALSE, vomit_delay = -1) + else + to_chat(user, span_warning("Nothing Selected"), confidential = TRUE) + return diff --git a/monkestation/code/modules/admin/smites/rip_and_tear.dm b/monkestation/code/modules/admin/smites/rip_and_tear.dm new file mode 100644 index 000000000000..a71b9f821470 --- /dev/null +++ b/monkestation/code/modules/admin/smites/rip_and_tear.dm @@ -0,0 +1,17 @@ +/datum/smite/rip_and_tear + name = "rip and tear those tendons" + +/datum/smite/rip_and_tear/effect(client/user, mob/living/target) + . = ..() + if (!iscarbon(target)) + to_chat(user, span_warning("This must be used on a carbon mob."), confidential = TRUE) + return + var/mob/living/carbon/carbon_target = target + for(var/_limb in carbon_target.bodyparts) + var/obj/item/bodypart/limb = _limb // fine to use this raw, its a meme smite + var/type_wound = pick(list(/datum/wound/muscle/severe, /datum/wound/muscle/moderate)) + limb.force_wound_upwards(type_wound, smited = TRUE) + type_wound = pick(list( /datum/wound/muscle/severe, /datum/wound/muscle/moderate)) + limb.force_wound_upwards(type_wound, smited = TRUE) + type_wound = pick(list(/datum/wound/muscle/moderate, /datum/wound/muscle/severe)) + limb.force_wound_upwards(type_wound, smited = TRUE) diff --git a/monkestation/code/modules/admin/smites/small_bit_of_everything.dm b/monkestation/code/modules/admin/smites/small_bit_of_everything.dm new file mode 100644 index 000000000000..59db6926f7ab --- /dev/null +++ b/monkestation/code/modules/admin/smites/small_bit_of_everything.dm @@ -0,0 +1,20 @@ +/// Gives the target critically bad wounds +/datum/smite/small_bit_of_everything + name = "light wound mix bag" + +/datum/smite/small_bit_of_everything/effect(client/user, mob/living/target) + . = ..() + + if (!iscarbon(target)) + to_chat(user, span_warning("This must be used on a carbon mob."), confidential = TRUE) + return + var/mob/living/carbon/carbon_target = target + for(var/_limb in carbon_target.bodyparts) + var/obj/item/bodypart/limb = _limb // fine to use this raw, its a meme smite + var/type_wound = pick(list(/datum/wound/burn/flesh/severe/cursed_brand,/datum/wound/burn/flesh/moderate)) + limb.force_wound_upwards(type_wound, smited = TRUE) + type_wound = pick(list(/datum/wound/blunt/bone/moderate, /datum/wound/pierce/bleed/moderate, /datum/wound/slash/flesh/moderate/many_cuts)) + limb.force_wound_upwards(type_wound, smited = TRUE) + type_wound = pick(list(/datum/wound/muscle/moderate, /datum/wound/muscle/severe)) + limb.force_wound_upwards(type_wound, smited = TRUE) + diff --git a/monkestation/code/modules/admin/smites/swisscheese.dm b/monkestation/code/modules/admin/smites/swisscheese.dm new file mode 100644 index 000000000000..e14e922234d2 --- /dev/null +++ b/monkestation/code/modules/admin/smites/swisscheese.dm @@ -0,0 +1,19 @@ +/// Gives the target critically bad wounds +/datum/smite/swisscheese + name = "swisscheese without the cheese" + +/datum/smite/swisscheese/effect(client/user, mob/living/target) + . = ..() + + if (!iscarbon(target)) + to_chat(user, span_warning("This must be used on a carbon mob."), confidential = TRUE) + return + var/mob/living/carbon/carbon_target = target + for(var/_limb in carbon_target.bodyparts) + var/obj/item/bodypart/limb = _limb // fine to use this raw, its a meme smite + var/type_wound = pick(list(/datum/wound/pierce/bleed/severe, /datum/wound/pierce/bleed/critical)) + limb.force_wound_upwards(type_wound, smited = TRUE) + type_wound = pick(list(/datum/wound/pierce/bleed/moderate, /datum/wound/pierce/bleed/severe, /datum/wound/pierce/bleed/moderate)) + limb.force_wound_upwards(type_wound, smited = TRUE) + type_wound = pick(list(/datum/wound/pierce/bleed/moderate, /datum/wound/pierce/bleed/severe)) + limb.force_wound_upwards(type_wound, smited = TRUE) diff --git a/monkestation/code/modules/admin/verbs/traits.dm b/monkestation/code/modules/admin/verbs/traits.dm new file mode 100644 index 000000000000..4539e81d5630 --- /dev/null +++ b/monkestation/code/modules/admin/verbs/traits.dm @@ -0,0 +1,53 @@ +/// Allow admin to add or remove traits of datum +/datum/admins/proc/modify_traits(datum/D) + if(!D) + return + + var/add_or_remove = tgui_input_list(usr, "Do you want to add or remove traits?", "Modify Traits", items = list("Add", "Remove")) + if(!add_or_remove) + return + var/list/available_traits = list() + + switch(add_or_remove) + if("Add") + for(var/key in GLOB.traits_by_type) + if(istype(D,key)) + available_traits += GLOB.traits_by_type[key] + if("Remove") + if(!GLOB.global_trait_name_map) + GLOB.global_trait_name_map = generate_global_trait_name_map() + for(var/trait in D._status_traits) + var/name = GLOB.global_trait_name_map[trait] || trait + available_traits[name] = trait + + var/list/chosen_trait_names = tgui_input_checkboxes(usr, "Select which traits you want to [lowertext(add_or_remove)]", "Modify Traits", items = sort_list(assoc_to_keys(available_traits))) + if(!chosen_trait_names) + return + var/list/chosen_traits = list() + for(var/name in chosen_trait_names) + chosen_traits += available_traits[name] + + var/source = "adminabuse" + switch(add_or_remove) + if("Add") //Not doing source choosing here intentionally to make this bit faster to use, you can always vv it. + if(length(chosen_traits & assoc_to_keys(GLOB.movement_type_trait_to_flag))) + D.AddElement(/datum/element/movetype_handler) + D.add_traits(chosen_traits, source) + if("Remove") + var/specific = tgui_input_list(usr, "All or specific source?", "Modify Traits", items = list("All", "Specific")) + if(!specific) + return + switch(specific) + if("All") + source = null + if("Specific") + var/list/shared_sources = list() + for(var/trait in chosen_traits) + if(!length(shared_sources)) + shared_sources = GET_TRAIT_SOURCES(D, trait) + else + shared_sources &= GET_TRAIT_SOURCES(D, trait) + source = tgui_input_list(usr, "Source to be removed", "Modify Traits", items = sort_list(shared_sources)) + if(!source) + return + D.remove_traits(chosen_traits, source) diff --git a/monkestation/code/modules/aesthetics/items/clothing.dm b/monkestation/code/modules/aesthetics/items/clothing.dm index b7dccab42fa9..9feb56c59d6a 100644 --- a/monkestation/code/modules/aesthetics/items/clothing.dm +++ b/monkestation/code/modules/aesthetics/items/clothing.dm @@ -1,4 +1,6 @@ -/obj/item/clothing/suit/armor/hos/trenchcoat +/obj/item/clothing/suit/armor/hos/trenchcoat/pimpcoat + name = "pink armored trenchcoat" + desc = "For when an armored trenchcoat isn't pimped out enough." icon = 'monkestation/code/modules/aesthetics/icons/clothing/suits.dmi' icon_state = "pimpcoat" worn_icon = 'monkestation/code/modules/aesthetics/icons/clothing/worn/suit.dmi' diff --git a/monkestation/code/modules/aesthetics/objects/window_sill.dm b/monkestation/code/modules/aesthetics/objects/window_sill.dm index 4634b8f3a35f..c2d49d7e7132 100644 --- a/monkestation/code/modules/aesthetics/objects/window_sill.dm +++ b/monkestation/code/modules/aesthetics/objects/window_sill.dm @@ -17,7 +17,9 @@ /obj/structure/window_sill/wrench_act(mob/living/user, obj/item/tool) . = ..() + tool.play_tool_sound(src, 100) deconstruct() + return TOOL_ACT_TOOLTYPE_SUCCESS /obj/structure/window_sill/deconstruct(disassembled = TRUE, wrench_disassembly = 0) new /obj/item/stack/sheet/iron(get_turf(src)) diff --git a/monkestation/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm b/monkestation/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm new file mode 100644 index 000000000000..d5fbb3fe9c80 --- /dev/null +++ b/monkestation/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm @@ -0,0 +1,38 @@ +/obj/item/melee/baton/abductor + var/charges = 3 + var/max_charges = 3 + var/charge_rate = 5 SECONDS + var/charging = FALSE + COOLDOWN_DECLARE(next_charge) + +/obj/item/melee/baton/abductor/Destroy(force) + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/item/melee/baton/abductor/examine(mob/user) + . = ..() + if(isobserver(user) || AbductorCheck(user)) + . += span_notice("It has [charges] charge\s remaining.") + . += span_notice("It takes [DisplayTimeText(charge_rate)] to regenerate 1 charge.") + +/obj/item/melee/baton/abductor/process(seconds_per_tick) + if(COOLDOWN_FINISHED(src, next_charge)) + charges = min(charges + 1, max_charges) + playsound(src, 'sound/machines/twobeep.ogg', vol = 10, vary = TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0) + COOLDOWN_START(src, next_charge, charge_rate) + if(charges >= max_charges) + charging = FALSE + return PROCESS_KILL + +/obj/item/melee/baton/abductor/proc/use_charge(mob/living/user) + if(!charging) + charging = TRUE + START_PROCESSING(SSobj, src) + COOLDOWN_START(src, next_charge, charge_rate) + if(charges >= 1) + charges-- + to_chat(user, span_notice("[icon2html(src, user)] [charges] charge\s remaining.")) + return TRUE + else + to_chat(user, span_warning("[icon2html(src, user)] Out of charges! Wait [DisplayTimeText(COOLDOWN_TIMELEFT(src, next_charge))] for the next charge!")) + return FALSE diff --git a/monkestation/code/modules/antagonists/borers/code/abilities/force_speech.dm b/monkestation/code/modules/antagonists/borers/code/abilities/force_speech.dm index 4e21189429a3..9932ecb0e7e3 100644 --- a/monkestation/code/modules/antagonists/borers/code/abilities/force_speech.dm +++ b/monkestation/code/modules/antagonists/borers/code/abilities/force_speech.dm @@ -13,11 +13,10 @@ if(!.) return FALSE var/mob/living/basic/cortical_borer/cortical_owner = owner - var/borer_message = input(cortical_owner, "What would you like to force your host to say?", "Force Speak") as message|null + var/borer_message = trimtext(tgui_input_text(cortical_owner, "What would you like to force your host to say?", "Force Speak", encode = FALSE)) if(!borer_message) owner.balloon_alert(owner, "no message given") return - borer_message = sanitize(borer_message) var/mob/living/carbon/human/cortical_host = cortical_owner.human_host to_chat(cortical_host, span_boldwarning("Your voice moves without your permission!")) cortical_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2 * cortical_owner.host_harm_multiplier, maximum = BRAIN_DAMAGE_SEVERE) diff --git a/monkestation/code/modules/antagonists/borers/code/antagonist_stuff/antagonist_datum.dm b/monkestation/code/modules/antagonists/borers/code/antagonist_stuff/antagonist_datum.dm index 8c7adaaa65f4..d328bd1f0654 100644 --- a/monkestation/code/modules/antagonists/borers/code/antagonist_stuff/antagonist_datum.dm +++ b/monkestation/code/modules/antagonists/borers/code/antagonist_stuff/antagonist_datum.dm @@ -7,15 +7,15 @@ count_against_dynamic_roll_chance = FALSE // there are thousands of them, we do not need them to be the only antagonist prevent_roundtype_conversion = FALSE show_to_ghosts = TRUE + /// Our linked borer, used for the antagonist panel TGUI var/mob/living/basic/cortical_borer/cortical_owner + /// Borer mob type, used for antag token spawns. + var/borer_mob_type = /mob/living/basic/cortical_borer/neutered + /datum/antagonist/cortical_borer/antag_token(datum/mind/hosts_mind, mob/spender) var/list/vents = list() - if(isliving(spender) && hosts_mind) - hosts_mind.current.unequip_everything() - new /obj/effect/holy(hosts_mind.current.loc) - QDEL_IN(hosts_mind.current, 20) for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/atmospherics/components/unary/vent_pump)) if(QDELETED(temp_vent)) continue @@ -29,14 +29,20 @@ vents += temp_vent if(!length(vents)) - message_admins("Spawning in as a borer failed!") + message_admins(span_adminnotice("[spender] ([ckey(spender.key)]) tried spawning in as a borer, but no suitable vents were found!")) return MAP_ERROR + if(isliving(spender) && hosts_mind) + hosts_mind.current.unequip_everything() + new /obj/effect/holy(hosts_mind.current.loc) + QDEL_IN(hosts_mind.current, 1 SECOND) + var/mob/dead/observer/new_borer = spender - var/turf/vent_turf = get_turf(pick(vents)) - var/mob/living/basic/cortical_borer/spawned_cb = new(vent_turf) + var/vent = pick(vents) + var/mob/living/basic/cortical_borer/spawned_cb = new borer_mob_type(get_turf(vent)) + spawned_cb.move_into_vent(vent) spawned_cb.ckey = new_borer.ckey - spawned_cb.mind.add_antag_datum(/datum/antagonist/cortical_borer/hivemind) + spawned_cb.mind.add_antag_datum(type) notify_ghosts( "Someone has become a borer due to spending an antag token ([spawned_cb])!", source = spawned_cb, @@ -56,18 +62,20 @@ /datum/antagonist/cortical_borer/hivemind roundend_category = "cortical borers" + borer_mob_type = /mob/living/basic/cortical_borer + /// The team of borers var/datum/team/cortical_borers/borers /datum/antagonist/cortical_borer/hivemind/forge_objectives() var/datum/objective/custom/borer_objective_produce_eggs = new - borer_objective_produce_eggs.explanation_text = "we require [GLOB.objective_egg_borer_number] different borers to produce [GLOB.objective_egg_egg_number] eggs to make sure our hive can spread widelly for increasing our chances of survival" + borer_objective_produce_eggs.explanation_text = "We require [GLOB.objective_egg_borer_number] different borers to produce [GLOB.objective_egg_egg_number] eggs to spread widely in order to increase our chances of survival." var/datum/objective/custom/borer_objective_willing_hosts = new - borer_objective_willing_hosts.explanation_text = "we require any amount of the borers to get [GLOB.objective_willing_hosts] willing host's trust to ensure our survival" + borer_objective_willing_hosts.explanation_text = "We require [GLOB.objective_willing_hosts] willing hosts to create a backbone for our continued survival, should our prey attempt to exterminate us." var/datum/objective/custom/borer_objective_learn_chemicals = new - borer_objective_learn_chemicals.explanation_text = "we require any amount of the borers to learn [GLOB.objective_blood_borer] chemicals from blood to aquire further chemical insight" + borer_objective_learn_chemicals.explanation_text = "We need to learn [GLOB.objective_blood_borer] chemicals from the bloodstreams of our hosts to acquire further chemical insight." objectives += borer_objective_produce_eggs objectives += borer_objective_willing_hosts diff --git a/monkestation/code/modules/antagonists/borers/code/antagonist_stuff/midround_event.dm b/monkestation/code/modules/antagonists/borers/code/antagonist_stuff/midround_event.dm index a31808ed8eee..33dcd8813e06 100644 --- a/monkestation/code/modules/antagonists/borers/code/antagonist_stuff/midround_event.dm +++ b/monkestation/code/modules/antagonists/borers/code/antagonist_stuff/midround_event.dm @@ -56,7 +56,7 @@ var/list/candidates = SSpolling.poll_ghost_candidates( role = ROLE_CORTICAL_BORER, ignore_category = POLL_IGNORE_CORTICAL_BORER, - pic_source = /mob/living/basic/cortical_borer, + alert_pic = /mob/living/basic/cortical_borer, ) if(!length(candidates)) @@ -68,8 +68,9 @@ for(var/repeating_code in 1 to choosing_number) var/mob/dead/observer/new_borer = pick(candidates) candidates -= new_borer - var/turf/vent_turf = get_turf(pick(vents)) - var/mob/living/basic/cortical_borer/spawned_cb = new /mob/living/basic/cortical_borer(vent_turf) + var/vent = pick(vents) + var/mob/living/basic/cortical_borer/spawned_cb = new /mob/living/basic/cortical_borer(get_turf(vent)) + spawned_cb.move_into_vent(vent) spawned_cb.ckey = new_borer.ckey spawned_cb.mind.add_antag_datum(/datum/antagonist/cortical_borer/hivemind) announce_to_ghosts(spawned_cb) diff --git a/monkestation/code/modules/antagonists/borers/code/evolution/evolution_symbiote.dm b/monkestation/code/modules/antagonists/borers/code/evolution/evolution_symbiote.dm index 0f3d2f84022d..b1c2ea0316ac 100644 --- a/monkestation/code/modules/antagonists/borers/code/evolution/evolution_symbiote.dm +++ b/monkestation/code/modules/antagonists/borers/code/evolution/evolution_symbiote.dm @@ -23,7 +23,7 @@ /datum/borer_evolution/symbiote/chem_per_level/on_evolve(mob/living/basic/cortical_borer/cortical_owner) . = ..() cortical_owner.chem_storage_per_level += 10 - cortical_owner.chem_regen_per_level += 0.5 + cortical_owner.chem_regen_per_level += 0.25 cortical_owner.recalculate_stats() // T3 + T2 Path diff --git a/monkestation/code/modules/antagonists/borers/code/items/borer_spawner.dm b/monkestation/code/modules/antagonists/borers/code/items/borer_spawner.dm index 36d0d09e8d3e..5c49fadb2ce9 100644 --- a/monkestation/code/modules/antagonists/borers/code/items/borer_spawner.dm +++ b/monkestation/code/modules/antagonists/borers/code/items/borer_spawner.dm @@ -51,7 +51,7 @@ role = ROLE_CORTICAL_BORER, poll_time = polling_time, ignore_category = POLL_IGNORE_CORTICAL_BORER, - pic_source = /mob/living/basic/cortical_borer/neutered, + alert_pic = /mob/living/basic/cortical_borer/neutered, ) if(QDELETED(src)) // prevent shenanigans with refunds return @@ -89,8 +89,8 @@ action = NOTIFY_ORBIT, header = "Someone just got a new friend!" ) - message_admins("[ADMIN_LOOKUPFLW(new_mob)] has been made into a borer via a traitor item used by [user]") - log_game("[key_name(new_mob)] was spawned as a borer by [key_name(user)]") + message_admins("[ADMIN_LOOKUPFLW(new_mob)] has been made into a borer via a traitor item used by [user].") + log_game("[key_name(new_mob)] was spawned as a borer by [key_name(user)].") visible_message("A borer wriggles out of the [src]!") var/obj/item/cortical_cage/empty_cage = new(drop_location()) diff --git a/monkestation/code/modules/antagonists/borers/code/items/empowered_egg.dm b/monkestation/code/modules/antagonists/borers/code/items/empowered_egg.dm index 8483c2e0ecd6..d8efc6b25780 100644 --- a/monkestation/code/modules/antagonists/borers/code/items/empowered_egg.dm +++ b/monkestation/code/modules/antagonists/borers/code/items/empowered_egg.dm @@ -47,7 +47,7 @@ role = ROLE_CORTICAL_BORER, poll_time = 10 SECONDS, ignore_category = POLL_IGNORE_CORTICAL_BORER, - pic_source = /mob/living/basic/cortical_borer/empowered, + alert_pic = /mob/living/basic/cortical_borer/empowered, ) if(!length(candidates)) var/obj/effect/mob_spawn/ghost_role/borer_egg/empowered/borer_egg = new(owner.drop_location()) diff --git a/monkestation/code/modules/antagonists/borers/code/mobs/cortical_borer.dm b/monkestation/code/modules/antagonists/borers/code/mobs/cortical_borer.dm index f38db815f85b..590317db46d4 100644 --- a/monkestation/code/modules/antagonists/borers/code/mobs/cortical_borer.dm +++ b/monkestation/code/modules/antagonists/borers/code/mobs/cortical_borer.dm @@ -122,7 +122,7 @@ GLOBAL_LIST_INIT(borer_second_name, world.file2list("monkestation/code/modules/a /datum/reagent/medicine/haloperidol, /datum/reagent/medicine/inacusiate, /datum/reagent/medicine/mannitol, - /datum/reagent/medicine/morphine, + /datum/reagent/medicine/painkiller/morphine, /datum/reagent/medicine/mutadone, /datum/reagent/medicine/oculine, /datum/reagent/medicine/potass_iodide, @@ -136,10 +136,10 @@ GLOBAL_LIST_INIT(borer_second_name, world.file2list("monkestation/code/modules/a var/list/blacklisted_chemicals = list() - /// How old the borer is, starting from zero. Goes up only when inside a host + /// How old the borer is, starting from zero. Goes up only when inside a host and resets when a stat point is gained. This is in seconds. var/maturity_age = 0 - /// Just a little "timer" to compare to world.time - var/timed_maturity = 0 + /// Whether a chem point has been granted for this maturity level. Resets when a stat point is gained. + var/chem_point_gained = FALSE // Technically if delta_time is like 5 this can fail at the max maturity speed but w h a t e v e r . /// How many times you've levelled up over all var/level = 0 @@ -154,17 +154,17 @@ GLOBAL_LIST_INIT(borer_second_name, world.file2list("monkestation/code/modules/a /// How many chemical points the borer has var/chemical_storage = 50 /// How fast chemicals are gained. Goes up only when inside a host - var/chemical_regen = 1 + var/chemical_regen = 0.5 /// How much health you gain per level var/health_per_level = 2.5 /// How much health regen you gain per level - var/health_regen_per_level = 0.02 + var/health_regen_per_level = 0.002 /// How much more chemical storage you gain per level var/chem_storage_per_level = 20 /// Chemical regen you gain per level - var/chem_regen_per_level = 1 + var/chem_regen_per_level = 0.5 /// The list of actions that the borer has var/list/datum/action/cooldown/borer/known_abilities = list( @@ -185,8 +185,8 @@ GLOBAL_LIST_INIT(borer_second_name, world.file2list("monkestation/code/modules/a /// What the host gains or loses with the borer var/list/hosts_abilities = list() - /// Multiplies the current health up to the max health - var/health_regen = 1.02 + /// How much health we regen per second while in a host (scales with max health) CODER NOTE: The value was 10.02 before. Assuming the first health_regen_per_level should be added to this. (0.002 as of now, so 0.102 instead of 0.1) + var/health_regen = 0.102 /// Holds the chems right before injection var/obj/item/reagent_containers/reagent_holder /// Lust a flavor kind of thing @@ -314,13 +314,14 @@ GLOBAL_LIST_INIT(borer_second_name, world.file2list("monkestation/code/modules/a /mob/living/basic/cortical_borer/Life(seconds_per_tick, times_fired) . = ..() + //can only do stuff when we are inside a LIVING human if(!inside_human() || human_host?.stat == DEAD) return //there needs to be a negative to having a borer if(prob(5 * host_harm_multiplier * ((upgrade_flags & BORER_STEALTH_MODE) ? 0.1 : 1)) && human_host.getToxLoss() <= (80 * host_harm_multiplier)) - human_host.adjustToxLoss(5 * host_harm_multiplier, TRUE, TRUE) + human_host.adjustToxLoss(2.5 * seconds_per_tick * host_harm_multiplier, TRUE, TRUE) human_host.apply_status_effect(/datum/status_effect/grouped/screwy_hud/fake_healthy, type) @@ -335,16 +336,15 @@ GLOBAL_LIST_INIT(borer_second_name, world.file2list("monkestation/code/modules/a //this is regenerating chemical_storage if(chemical_storage < max_chemical_storage) if(!(upgrade_flags & BORER_STEALTH_MODE)) - chemical_storage = min(chemical_storage + chemical_regen, max_chemical_storage) + chemical_storage = min(chemical_storage + chemical_regen * seconds_per_tick, max_chemical_storage) //this is regenerating health if(health < maxHealth) if(!(upgrade_flags & BORER_STEALTH_MODE)) - health = min(health * health_regen, maxHealth) + adjustBruteLoss(maxHealth * -health_regen * seconds_per_tick) //this is so they can evolve - if(timed_maturity < world.time) - mature() + mature() //if it doesnt have a ckey, let ghosts have it /mob/living/basic/cortical_borer/attack_ghost(mob/dead/observer/user) @@ -486,33 +486,34 @@ GLOBAL_LIST_INIT(borer_second_name, world.file2list("monkestation/code/modules/a /// Called on Life() for the borer to age a bit /mob/living/basic/cortical_borer/proc/mature() . = TRUE + if(upgrade_flags & BORER_STEALTH_MODE) return FALSE - timed_maturity = world.time + 0.5 SECONDS - maturity_age++ + + maturity_age += DELTA_WORLD_TIME(SSmobs) /** - * The point values are double what they seem - * So in the beginning you start out with the following generation: - * Evolution point per 40 seconds - * Chemical point per 20 seconds + * In the beginning you start out with the following generation: + * Evolution point per 60 seconds + * Chemical point per 30 seconds */ //20:40, 15:30, 10:20, 5:10 - var/maturity_threshold = 2 SECONDS + var/maturity_threshold = 30 if(GLOB.successful_egg_number >= GLOB.objective_egg_borer_number) - maturity_threshold -= 0.2 SECONDS + maturity_threshold -= 3 if(length(GLOB.willing_hosts) >= GLOB.objective_willing_hosts) - maturity_threshold -= 1 SECOND + maturity_threshold -= 15 if(GLOB.successful_blood_chem >= GLOB.objective_blood_borer) - maturity_threshold -= 0.3 SECONDS + maturity_threshold -= 4.5 - if(maturity_age == maturity_threshold) + if(!chem_point_gained && maturity_age >= maturity_threshold) if(chemical_evolution < limited_borer) //you can only have a default of 10 at a time chemical_evolution++ to_chat(src, span_notice("You gain a chemical evolution point. Spend it to learn a new chemical!")) else to_chat(src, span_warning("You were unable to gain a chemical evolution point due to having the max!")) + chem_point_gained = TRUE if(maturity_age >= (maturity_threshold * 2)) if(stat_evolution < limited_borer) stat_evolution++ @@ -520,6 +521,7 @@ GLOBAL_LIST_INIT(borer_second_name, world.file2list("monkestation/code/modules/a else to_chat(src, span_warning("You were unable to gain a stat evolution point due to having the max!")) maturity_age = 0 + chem_point_gained = FALSE /// Use to recalculate a borer's health and chemical stats when something retroactively affects them /mob/living/basic/cortical_borer/proc/recalculate_stats() diff --git a/monkestation/code/modules/antagonists/borers/code/mobs/empowered_borer.dm b/monkestation/code/modules/antagonists/borers/code/mobs/empowered_borer.dm index 092dd92a621b..ca9e691ef8bf 100644 --- a/monkestation/code/modules/antagonists/borers/code/mobs/empowered_borer.dm +++ b/monkestation/code/modules/antagonists/borers/code/mobs/empowered_borer.dm @@ -6,12 +6,12 @@ maxHealth = 150 health = 150 health_per_level = 15 - health_regen_per_level = 0.04 + health_regen_per_level = 0.002 stat_evolution = 8 chemical_evolution = 8 max_chemical_storage = 250 chemical_storage = 250 - chem_regen_per_level = 1.5 + chem_regen_per_level = 0.75 chem_storage_per_level = 25 diff --git a/monkestation/code/modules/antagonists/brother/actions/gear.dm b/monkestation/code/modules/antagonists/brother/actions/gear.dm index e0086df7e62e..050d35e8a652 100644 --- a/monkestation/code/modules/antagonists/brother/actions/gear.dm +++ b/monkestation/code/modules/antagonists/brother/actions/gear.dm @@ -56,7 +56,7 @@ var/list/agreed = SSpolling.poll_candidates( "[owner.mind.name || owner.real_name] wishes to choose [chosen_gear.name] as your team's gear. Do you agree?", group = to_poll, - pic_source = chosen_gear.preview(), + alert_pic = chosen_gear.preview(), role_name_text = "Blood Brother Gear", custom_response_messages = list( POLL_RESPONSE_SIGNUP = "You have agreed to choose [chosen_gear.name] as your team's gear.", diff --git a/monkestation/code/modules/antagonists/brother/gear/misc.dm b/monkestation/code/modules/antagonists/brother/gear/misc.dm new file mode 100644 index 000000000000..a937231b73d6 --- /dev/null +++ b/monkestation/code/modules/antagonists/brother/gear/misc.dm @@ -0,0 +1,5 @@ +/datum/bb_gear/money_tree_seeds + name = "Money Tree Seeds" + desc = "Contains a pack of seeds of the rare money tree." + spawn_path = /obj/item/seeds/tree/money + preview_path = /obj/item/seeds/tree/money diff --git a/monkestation/code/modules/antagonists/brother/gear/recipes.dm b/monkestation/code/modules/antagonists/brother/gear/recipes.dm index a9693a5ef6e2..4d5f035eff0c 100644 --- a/monkestation/code/modules/antagonists/brother/gear/recipes.dm +++ b/monkestation/code/modules/antagonists/brother/gear/recipes.dm @@ -41,6 +41,6 @@ /datum/bb_gear/granter/elance name = "Recipe: Explosive Lance (Grenade)" desc = "Contains a recipe book, allowing you to learn the knowledge to build an explosive lance (grenade)." - spawn_path = /obj/item/spear/explosive - preview_path = /obj/item/book/granter/crafting_recipe/maint_gun/explosive_lance + spawn_path = /obj/item/book/granter/crafting_recipe/maint_gun/explosive_lance + preview_path = /obj/item/spear/explosive diff --git a/monkestation/code/modules/antagonists/clock_cult/items/clothing.dm b/monkestation/code/modules/antagonists/clock_cult/items/clothing.dm index e6e14a66d5e8..43bd5f81b27e 100644 --- a/monkestation/code/modules/antagonists/clock_cult/items/clothing.dm +++ b/monkestation/code/modules/antagonists/clock_cult/items/clothing.dm @@ -408,7 +408,7 @@ var/datum/atom_hud/sec_hud = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] sec_hud.show_to(wearer) - add_traits(list(TRAIT_KNOW_ENGI_WIRES, TRAIT_MADNESS_IMMUNE, TRAIT_MESON_VISION, TRAIT_KNOW_CYBORG_WIRES, TRAIT_NOFLASH), CLOTHING_TRAIT) + add_traits(list(TRAIT_KNOW_ENGI_WIRES, TRAIT_MADNESS_IMMUNE, TRAIT_MESON_VISION, TRAIT_KNOW_ROBO_WIRES, TRAIT_NOFLASH), CLOTHING_TRAIT) color_cutoffs = list(50, 10, 30) wearer.update_sight() @@ -422,7 +422,7 @@ var/datum/atom_hud/sec_hud = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] sec_hud.hide_from(wearer) - remove_traits(list(TRAIT_KNOW_ENGI_WIRES, TRAIT_MADNESS_IMMUNE, TRAIT_MESON_VISION, TRAIT_KNOW_CYBORG_WIRES, TRAIT_NOFLASH), CLOTHING_TRAIT) + remove_traits(list(TRAIT_KNOW_ENGI_WIRES, TRAIT_MADNESS_IMMUNE, TRAIT_MESON_VISION, TRAIT_KNOW_ROBO_WIRES, TRAIT_NOFLASH), CLOTHING_TRAIT) color_cutoffs = null wearer.update_sight() diff --git a/monkestation/code/modules/antagonists/clock_cult/mobs/eminence.dm b/monkestation/code/modules/antagonists/clock_cult/mobs/eminence.dm index 24079f69a34f..97621c5ea2c1 100644 --- a/monkestation/code/modules/antagonists/clock_cult/mobs/eminence.dm +++ b/monkestation/code/modules/antagonists/clock_cult/mobs/eminence.dm @@ -6,7 +6,7 @@ GLOBAL_DATUM(current_eminence, /mob/living/eminence) //set to the current eminen desc = "An entity forever bound to Rat'var, acting upon his will." icon = 'monkestation/icons/obj/clock_cult/clockwork_effects.dmi' icon_state = "eminence" - mob_biotypes = list(MOB_SPIRIT) + mob_biotypes = MOB_SPIRIT mouse_opacity = MOUSE_OPACITY_ICON move_on_shuttle = TRUE invisibility = INVISIBILITY_OBSERVER diff --git a/monkestation/code/modules/antagonists/clock_cult/ratvar.dm b/monkestation/code/modules/antagonists/clock_cult/ratvar.dm index 3b9bb185b7b5..2b424a080048 100644 --- a/monkestation/code/modules/antagonists/clock_cult/ratvar.dm +++ b/monkestation/code/modules/antagonists/clock_cult/ratvar.dm @@ -72,7 +72,7 @@ GLOBAL_DATUM(cult_ratvar, /obj/ratvar) gods_battle() START_PROCESSING(SSobj, src) -/obj/ratvar/Destroy(force, ...) +/obj/ratvar/Destroy(force) if(GLOB.cult_ratvar == src) GLOB.cult_ratvar = null STOP_PROCESSING(SSobj, src) diff --git a/monkestation/code/modules/antagonists/clock_cult/reebe_modules.dm b/monkestation/code/modules/antagonists/clock_cult/reebe_modules.dm index 4853ed0e2f6a..c4fc2236ec0a 100644 --- a/monkestation/code/modules/antagonists/clock_cult/reebe_modules.dm +++ b/monkestation/code/modules/antagonists/clock_cult/reebe_modules.dm @@ -36,7 +36,7 @@ GLOBAL_LIST_EMPTY(abscond_markers) ///Send a pod full of helpful items to the station's bridge /proc/send_station_support_package(list/additional_items, sent_message = "We are sending a support package to the bridge to help deal with the threats to the station.") - var/turf/bridge_turf = pick(GLOB.areas_by_type[/area/station/command/bridge].contained_turfs) + var/turf/bridge_turf = pick(GLOB.areas_by_type[/area/station/command/bridge].get_turfs_from_all_zlevels()) if(!bridge_turf) return diff --git a/monkestation/code/modules/antagonists/clock_cult/scriptures/_scripture.dm b/monkestation/code/modules/antagonists/clock_cult/scriptures/_scripture.dm index a24b76ee0bf9..2c351d6d4837 100644 --- a/monkestation/code/modules/antagonists/clock_cult/scriptures/_scripture.dm +++ b/monkestation/code/modules/antagonists/clock_cult/scriptures/_scripture.dm @@ -46,7 +46,7 @@ GLOBAL_LIST_EMPTY(clock_scriptures_by_type) if(invokers_required > 1) desc += " Requires [invokers_required] invokers, should you be in a group." -/datum/scripture/Destroy(force, ...) +/datum/scripture/Destroy(force) invoker = null invoking_slab = null return ..() @@ -404,7 +404,7 @@ GLOBAL_LIST_EMPTY(clock_scriptures_by_type) return ..() -/datum/action/cooldown/spell/pointed/slab/InterceptClickOn(mob/living/caller, params, atom/target) +/datum/action/cooldown/spell/pointed/slab/InterceptClickOn(mob/living/user, params, atom/target) parent_scripture?.click_on(target) /// Generate all scriptures in a global assoc of name:ref. Only needs to be done once diff --git a/monkestation/code/modules/antagonists/clock_cult/scriptures/preservation/summon_marauder.dm b/monkestation/code/modules/antagonists/clock_cult/scriptures/preservation/summon_marauder.dm index 79b336ca282d..170a49d1afb3 100644 --- a/monkestation/code/modules/antagonists/clock_cult/scriptures/preservation/summon_marauder.dm +++ b/monkestation/code/modules/antagonists/clock_cult/scriptures/preservation/summon_marauder.dm @@ -17,7 +17,7 @@ var/mob/dead/observer/selected -/datum/scripture/marauder/Destroy(force, ...) +/datum/scripture/marauder/Destroy(force) selected = null return ..() @@ -29,7 +29,7 @@ role = ROLE_CLOCK_CULTIST, poll_time = 10 SECONDS, ignore_category = POLL_IGNORE_CONSTRUCT, - pic_source = /mob/living/basic/clockwork_marauder, + alert_pic = /mob/living/basic/clockwork_marauder, role_name_text = "clockwork marauder" ) if(length(candidates)) diff --git a/monkestation/code/modules/antagonists/clock_cult/structures/eminence_beacon.dm b/monkestation/code/modules/antagonists/clock_cult/structures/eminence_beacon.dm index 5fda471f004d..787cb68d15d9 100644 --- a/monkestation/code/modules/antagonists/clock_cult/structures/eminence_beacon.dm +++ b/monkestation/code/modules/antagonists/clock_cult/structures/eminence_beacon.dm @@ -47,7 +47,7 @@ check_jobban = ROLE_CLOCK_CULTIST, role = ROLE_CLOCK_CULTIST, poll_time = 10 SECONDS, - pic_source = /mob/living/eminence, + alert_pic = /mob/living/eminence, role_name_text = "eminence" ) if(length(candidates)) diff --git a/monkestation/code/modules/antagonists/clock_cult/structures/sigil/sigil_vitality.dm b/monkestation/code/modules/antagonists/clock_cult/structures/sigil/sigil_vitality.dm index 7ef2cad0599d..1fbeba92fd38 100644 --- a/monkestation/code/modules/antagonists/clock_cult/structures/sigil/sigil_vitality.dm +++ b/monkestation/code/modules/antagonists/clock_cult/structures/sigil/sigil_vitality.dm @@ -46,25 +46,23 @@ if(affected_mob.stat != DEAD && (!affected_mob.client || affected_mob.client.is_afk())) set waitfor = FALSE - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob( + var/mob/chosen_one = SSpolling.poll_ghosts_for_target( "Do you want to play as a [affected_mob.real_name], an inactive clock cultist?", - check_jobban = ROLE_CLOCK_CULTIST, role = ROLE_CLOCK_CULTIST, poll_time = 5 SECONDS, - target_mob = affected_mob, - pic_source = affected_mob, + checked_target = affected_mob, + alert_pic = affected_mob, role_name_text = "clock cultist" ) - if(LAZYLEN(candidates)) - var/mob/dead/observer/candidate = pick(candidates) + if(isnull(chosen_one)) + visible_message(span_warning("\The [src] fails to revive [affected_mob]!")) + fail_invocation() + else to_chat(affected_mob.mind, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.") - message_admins("[key_name_admin(candidate)] has taken control of ([key_name_admin(affected_mob)]) to replace an AFK player.") + message_admins("[key_name_admin(chosen_one)] has taken control of ([key_name_admin(affected_mob)]) to replace an AFK player.") affected_mob.ghostize(FALSE) - affected_mob.key = candidate.key + affected_mob.key = chosen_one.key revived = TRUE - else - visible_message(span_warning("\The [src] fails to revive [affected_mob]!")) - fail_invocation() if(revived) SEND_SOUND(affected_mob, 'sound/magic/clockwork/scripture_tier_up.ogg') to_chat(affected_mob, span_bigbrass("\"[text2ratvar("MY LIGHT SHINES THROUGH YOU, YOUR SERVITUDE IS NOT FINISHED.")]\"")) diff --git a/monkestation/code/modules/antagonists/contractor/datums/contractor_items.dm b/monkestation/code/modules/antagonists/contractor/datums/contractor_items.dm index d6afdb55a1c8..11c4006395b7 100644 --- a/monkestation/code/modules/antagonists/contractor/datums/contractor_items.dm +++ b/monkestation/code/modules/antagonists/contractor/datums/contractor_items.dm @@ -92,7 +92,7 @@ role = ROLE_TRAITOR, poll_time = 10 SECONDS, ignore_category = POLL_IGNORE_CONTRACTOR_SUPPORT, - pic_source = user, + alert_pic = user, role_name_text = "contractor support unit", ) diff --git a/monkestation/code/modules/antagonists/florida_man/florida_events.dm b/monkestation/code/modules/antagonists/florida_man/florida_events.dm index d25aa8c25d8a..6b13114f9795 100644 --- a/monkestation/code/modules/antagonists/florida_man/florida_events.dm +++ b/monkestation/code/modules/antagonists/florida_man/florida_events.dm @@ -30,7 +30,7 @@ "Do you want to play as Florida Man?", role = ROLE_FLORIDA_MAN, poll_time = 20 SECONDS, - pic_source = /datum/antagonist/florida_man, + alert_pic = /datum/antagonist/florida_man, role_name_text = "florida man" ) var/turf/spawn_loc = find_safe_turf()//Used for the Drop Pod type of spawn diff --git a/monkestation/code/modules/antagonists/heretic/heretic_antag.dm b/monkestation/code/modules/antagonists/heretic/heretic_antag.dm new file mode 100644 index 000000000000..9823168d5130 --- /dev/null +++ b/monkestation/code/modules/antagonists/heretic/heretic_antag.dm @@ -0,0 +1,119 @@ +/datum/antagonist/heretic + /// Weakrefs to the minds of monsters have been successfully summoned. Includes ghouls. + var/list/datum/weakref/monsters_summoned + /// Lazy assoc list of [weakrefs to minds] to [image previews of the human]. Humans that we have as sacrifice targets. + var/list/datum/weakref/current_sac_targets + /// List of [weakrefs to minds], containing all the minds we've ever had as sacrifice targets. Used for the end-of-round report. + var/list/datum/weakref/all_sac_targets + /// Lazy assoc list of [weakrefs to minds] that we've sacrificed. [weakref to mind] = TRUE + var/list/datum/weakref/completed_sacrifices + +/datum/antagonist/heretic/Destroy() + LAZYNULL(monsters_summoned) + LAZYNULL(current_sac_targets) + LAZYNULL(all_sac_targets) + LAZYNULL(completed_sacrifices) + return ..() + +/** + * Add [target] as a sacrifice target for the heretic. + * Generates a preview image and associates it with a weakref of the mob's mind. + */ +/datum/antagonist/heretic/proc/add_sacrifice_target(target) + . = FALSE + var/datum/mind/target_mind = get_mind(target, include_last = TRUE) + if(QDELETED(target_mind)) + return FALSE + var/mob/living/carbon/target_body = target_mind.current + if(!istype(target_body)) + return FALSE + var/datum/weakref/target_ref = WEAKREF(target_mind) + LAZYOR(all_sac_targets, target_ref) + LAZYSET(current_sac_targets, target_ref, getFlatIcon(target_body, defdir = SOUTH)) + return TRUE + +/** + * Remove [target] as a sacrifice target for the heretic. + */ +/datum/antagonist/heretic/proc/remove_sacrifice_target(target, remove_from_all = FALSE) + . = FALSE + var/datum/mind/target_mind = get_mind(target, include_last = TRUE) + if(!QDELETED(target_mind)) + var/datum/weakref/target_ref = WEAKREF(target_mind) + LAZYREMOVE(current_sac_targets, target_ref) + if(remove_from_all) + LAZYREMOVE(all_sac_targets, target_ref) + return TRUE + +/** + * Returns a list of minds of valid sacrifice targets from the current living players. + */ +/datum/antagonist/heretic/proc/possible_sacrifice_targets(include_current_targets = TRUE) as /list + RETURN_TYPE(/list) + . = list() + for(var/mob/living/carbon/human/player in GLOB.alive_player_list) + if(QDELETED(player.mind)) + continue + var/datum/client_interface/player_client = GET_CLIENT(player) + if(QDELETED(player_client) || player_client.is_afk()) + continue + var/datum/mind/possible_target = player.mind + if(possible_target == owner) + continue + if(possible_target.get_effective_opt_in_level() < OPT_IN_YES_KILL) + continue + if(!(possible_target.assigned_role?.job_flags & JOB_CREW_MEMBER)) + continue + var/datum/weakref/target_weakref = WEAKREF(possible_target) + if(!include_current_targets && LAZYACCESS(current_sac_targets, target_weakref)) + continue + if(LAZYACCESS(completed_sacrifices, target_weakref)) + continue + var/turf/player_loc = get_turf(player) + if(!is_station_level(player_loc?.z)) + continue + if(player.stat >= SOFT_CRIT) + continue + . += possible_target + +/** + * Check to see if the given mob can be sacrificed. + */ +/datum/antagonist/heretic/proc/can_sacrifice(target) + . = FALSE + var/datum/mind/target_mind = get_mind(target, include_last = TRUE) + if(!istype(target_mind)) + return + var/datum/weakref/mind_weakref = WEAKREF(target_mind) + if(LAZYACCESS(current_sac_targets, mind_weakref)) + return TRUE + if(LAZYACCESS(completed_sacrifices, mind_weakref)) + return FALSE + // You can ALWAYS sacrifice heads of staff if you need to do so. + var/datum/objective/major_sacrifice/major_sacc_objective = locate() in objectives + if(major_sacc_objective && !major_sacc_objective.check_completion() && (target_mind.assigned_role?.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND)) + return TRUE + +/datum/antagonist/heretic/proc/get_current_target_bodies() as /list + RETURN_TYPE(/list) + . = list() + for(var/datum/weakref/mind_ref as anything in current_sac_targets) + var/datum/mind/target_mind = mind_ref?.resolve() + if(QDELETED(target_mind)) + continue + if(ishuman(target_mind.current)) + . += target_mind.current + +/datum/antagonist/heretic/proc/roundend_sac_list() + . = @"[ ERROR, PLEASE REPORT TO GITHUB! ]" + var/list/names = list() + for(var/datum/weakref/target_ref as anything in all_sac_targets) + var/datum/mind/target = target_ref?.resolve() + if(QDELETED(target)) + continue + names += LAZYACCESS(completed_sacrifices, target_ref) ? "[target.name]" : "[target.name]" + return english_list(names, nothing_text = "No one") + +/datum/objective/heretic_summon/check_completion() + var/datum/antagonist/heretic/heretic_datum = owner?.has_antag_datum(/datum/antagonist/heretic) + return ..() || (LAZYLEN(heretic_datum?.monsters_summoned) >= target_amount) diff --git a/monkestation/code/modules/antagonists/heretic/heretic_living_heart.dm b/monkestation/code/modules/antagonists/heretic/heretic_living_heart.dm new file mode 100644 index 000000000000..63a04df10399 --- /dev/null +++ b/monkestation/code/modules/antagonists/heretic/heretic_living_heart.dm @@ -0,0 +1,131 @@ +/datum/action/cooldown/track_target/Activate(atom/target) + var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(owner) + var/datum/heretic_knowledge/sac_knowledge = heretic_datum.get_knowledge(/datum/heretic_knowledge/hunt_and_sacrifice) + if(!LAZYLEN(heretic_datum.current_sac_targets)) + owner.balloon_alert(owner, "no targets, visit a rune!") + StartCooldown(1 SECONDS) + return TRUE + + var/list/targets_to_choose = list() + var/list/mob/living/living_targets = list() + for(var/datum/weakref/target_ref as anything in heretic_datum.current_sac_targets) + var/datum/mind/target_mind = target_ref?.resolve() + if(QDELETED(target_mind)) + continue + var/mob/living/living_target = target_mind.current + if(QDELETED(living_target)) + continue + var/sac_name = trimtext(target_mind.name || living_target.real_name || living_target.name) + living_targets[sac_name] = living_target + targets_to_choose[sac_name] = heretic_datum.current_sac_targets[target_ref] + + // If we don't have a last tracked name, open a radial to set one. + // If we DO have a last tracked name, we skip the radial if they right click the action. + if(isnull(last_tracked_name) || !right_clicked) + radial_open = TRUE + last_tracked_name = show_radial_menu( + owner, + owner, + targets_to_choose, + custom_check = CALLBACK(src, PROC_REF(check_menu)), + radius = 40, + require_near = TRUE, + tooltips = TRUE, + ) + radial_open = FALSE + + // If our last tracked name is still null, skip the trigger + if(isnull(last_tracked_name)) + return FALSE + + var/mob/living/tracked_mob = living_targets[last_tracked_name] + if(QDELETED(tracked_mob)) + last_tracked_name = null + return FALSE + + playsound(owner, 'sound/effects/singlebeat.ogg', 50, TRUE, SILENCED_SOUND_EXTRARANGE) + owner.balloon_alert(owner, get_balloon_message(tracked_mob)) + + // Let them know how to sacrifice people if they're able to be sac'd + if(tracked_mob.stat == DEAD) + to_chat(owner, span_hierophant("[tracked_mob] is dead. Bring them to a transmutation rune \ + and invoke \"[sac_knowledge.name]\" to sacrifice them!")) + + StartCooldown() + return TRUE + +/// Gets the balloon message for who we're tracking. +/datum/action/cooldown/track_target/proc/get_balloon_message(mob/living/tracked_mob) + var/balloon_message = "error text!" + var/turf/their_turf = get_turf(tracked_mob) + var/turf/our_turf = get_turf(owner) + var/their_z = their_turf?.z + var/our_z = our_turf?.z + + var/is_alone = TRUE + for(var/mob/living/watcher in view(7, tracked_mob)) + if(QDELETED(watcher.client) || watcher == tracked_mob) + continue + if(IS_HERETIC_OR_MONSTER(watcher) || (watcher.mind?.enslaved_to?.resolve() == owner) || HAS_TRAIT(watcher, TRAIT_GHOST_CRITTER)) + continue + if(watcher.stat == DEAD || watcher.is_blind()) + continue + is_alone = FALSE + break + + // One of us is in somewhere we shouldn't be + if(!our_z || !their_z) + // "Hell if I know" + balloon_message = "on another plane!" + + // They're not on the same z-level as us + else if(our_z != their_z) + // They're on the station + if(is_station_level(their_z)) + // We're on a multi-z station + if(is_station_level(our_z)) + if(our_z > their_z) + balloon_message = "below you!" + else + balloon_message = "above you!" + // We're off station, they're not + else + balloon_message = "on station!" + + // Mining + else if(is_mining_level(their_z)) + balloon_message = "on lavaland!" + + // In the gateway + else if(is_away_level(their_z) || is_secret_level(their_z)) + balloon_message = "beyond the gateway!" + + // On a shuttle + else if(is_reserved_level(their_z) && istype(get_area(their_turf), /area/shuttle)) + balloon_message = "on a shuttle!" + + // They're somewhere we probably can't get too - sacrifice z-level, centcom, etc + else + balloon_message = "on another plane!" + + // They're on the same z-level as us! + else + var/dist = get_dist(our_turf, their_turf) + var/dir = get_dir(our_turf, their_turf) + + switch(dist) + if(0 to 15) + balloon_message = "very near, [dir2text(dir)]!" + if(16 to 31) + balloon_message = "near, [dir2text(dir)]!" + if(32 to 127) + balloon_message = "far, [dir2text(dir)]!" + else + balloon_message = "very far!" + + if(tracked_mob.stat == DEAD || isbrain(tracked_mob)) + balloon_message = "they're dead, " + balloon_message + else if(is_alone) + balloon_message = "they're alone, " + balloon_message + + return balloon_message diff --git a/monkestation/code/modules/antagonists/heretic/heretic_monsters.dm b/monkestation/code/modules/antagonists/heretic/heretic_monsters.dm new file mode 100644 index 000000000000..241c2474da96 --- /dev/null +++ b/monkestation/code/modules/antagonists/heretic/heretic_monsters.dm @@ -0,0 +1,5 @@ +/datum/antagonist/heretic_monster/set_owner(datum/mind/master) + . = ..() + var/datum/antagonist/heretic/master_heretic = master?.has_antag_datum(/datum/antagonist/heretic) + if(master_heretic) + LAZYOR(master_heretic.monsters_summoned, WEAKREF(owner)) diff --git a/monkestation/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/monkestation/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm new file mode 100644 index 000000000000..fc06138a24d0 --- /dev/null +++ b/monkestation/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm @@ -0,0 +1,522 @@ +// The knowledge and process of heretic sacrificing. + +/// How long we put the target so sleep for (during sacrifice). +#define SACRIFICE_SLEEP_DURATION (12 SECONDS) +/// How long sacrifices must stay in the shadow realm to survive. +#define SACRIFICE_REALM_DURATION (2.5 MINUTES) + +/** + * Allows the heretic to sacrifice living heart targets. + */ +/datum/heretic_knowledge/hunt_and_sacrifice + name = "Heartbeat of the Mansus" + desc = "Allows you to sacrifice targets to the Mansus by bringing them to a rune in critical (or worse) condition. \ + If you have no targets, stand on a transmutation rune and invoke it to acquire some." + required_atoms = list( + list(/mob/living/carbon/human, /obj/item/organ/internal/brain/slime) = 1, + ) + cost = 0 + priority = MAX_KNOWLEDGE_PRIORITY // Should be at the top + route = PATH_START + /// How many targets do we generate? + var/num_targets_to_generate = 5 + /// Whether we've generated a heretic sacrifice z-level yet, from any heretic. + var/static/heretic_level_generated = FALSE + /// The mind of our heretic. + var/datum/mind/heretic_mind + /// An assoc list of [ref] to [timers] - a list of all the timers of people in the shadow realm currently + var/list/return_timers + +/datum/heretic_knowledge/hunt_and_sacrifice/Destroy(force) + heretic_mind = null + return ..() + +/datum/heretic_knowledge/hunt_and_sacrifice/on_research(mob/user, datum/antagonist/heretic/our_heretic) + . = ..() + obtain_targets(user, silent = TRUE, heretic_datum = our_heretic) + heretic_mind = our_heretic.owner + +#ifndef UNIT_TESTS // This is a decently hefty thing to generate while unit testing, so we should skip it. + if(!heretic_level_generated) + heretic_level_generated = TRUE + log_game("Generating z-level for heretic sacrifices...") + INVOKE_ASYNC(src, PROC_REF(generate_heretic_z_level)) +#endif + +/// Generate the sacrifice z-level. +/datum/heretic_knowledge/hunt_and_sacrifice/proc/generate_heretic_z_level() + var/datum/map_template/heretic_sacrifice_level/new_level = new() + if(!new_level.load_new_z()) + log_game("The heretic sacrifice z-level failed to load.") + message_admins("The heretic sacrifice z-level failed to load. Heretic sacrifices won't be teleported to the shadow realm. \ + If you want, you can spawn an /obj/effect/landmark/heretic somewhere to stop that from happening.") + CRASH("Failed to initialize heretic sacrifice z-level!") + +/datum/heretic_knowledge/hunt_and_sacrifice/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc) + var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user) + // First we have to check if the heretic has a Living Heart. + // You may wonder why we don't straight up prevent them from invoking the ritual if they don't have one - + // Hunt and sacrifice should always be invokable for clarity's sake, even if it'll fail immediately. + if(heretic_datum.has_living_heart() != HERETIC_HAS_LIVING_HEART) + loc.balloon_alert(user, "ritual failed, no living heart!") + return FALSE + + // We've got no targets set, let's try to set some. + // If we recently failed to aquire targets, we will be unable to aquire any. + if(!LAZYLEN(heretic_datum.current_sac_targets)) + atoms += user + return TRUE + + // If we have targets, we can check to see if we can do a sacrifice + // Let's remove any humans in our atoms list that aren't a sac target + for(var/thingy in atoms) + if(ishuman(thingy)) + var/mob/living/carbon/human/sacrifice = thingy + var/is_valid_state = (sacrifice.stat != CONSCIOUS || HAS_TRAIT_FROM(sacrifice, TRAIT_INCAPACITATED, STAMINA)) + if(!heretic_datum.can_sacrifice(sacrifice) || !is_valid_state) + atoms -= sacrifice + else if(istype(thingy, /obj/item/organ/internal/brain/slime)) + var/obj/item/organ/internal/brain/slime/core = thingy + if(!heretic_datum.can_sacrifice(core)) + atoms -= core + else + atoms -= thingy + + // Finally, return TRUE if we have a target in the list + if(length(atoms)) + return TRUE + + // or FALSE if we don't + loc.balloon_alert(user, "ritual failed, no sacrifice found!") + return FALSE + +/datum/heretic_knowledge/hunt_and_sacrifice/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) + var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user) + if(!LAZYLEN(heretic_datum.current_sac_targets)) + if(obtain_targets(user, heretic_datum = heretic_datum)) + return TRUE + else + loc.balloon_alert(user, "ritual failed, no targets found!") + return FALSE + + sacrifice_process(user, selected_atoms, loc) + return TRUE + +/** + * Obtain a list of targets for the user to hunt down and sacrifice. + * Tries to get four targets (minds) with living human currents. + * + * Returns FALSE if no targets are found, TRUE if the targets list was populated. + */ +/datum/heretic_knowledge/hunt_and_sacrifice/proc/obtain_targets(mob/living/user, silent = FALSE, datum/antagonist/heretic/heretic_datum) + // First construct a list of minds that are valid objective targets. + var/list/datum/mind/valid_targets = heretic_datum.possible_sacrifice_targets() + if(!length(valid_targets)) + if(!silent) + to_chat(user, span_hierophant_warning("No sacrifice targets could be found!")) + return FALSE + + // Now, let's try to get four targets. + // - One completely random + // - One from your department + // - One from security + // - One from heads of staff ("high value") + var/list/datum/mind/final_targets = list() + + // First target, any command. + for(var/datum/mind/head_mind as anything in shuffle(valid_targets)) + if(head_mind.assigned_role?.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) + final_targets += head_mind + valid_targets -= head_mind + break + + // Second target, any security + for(var/datum/mind/sec_mind as anything in shuffle(valid_targets)) + if(sec_mind.assigned_role?.departments_bitflags & DEPARTMENT_BITFLAG_SECURITY) + final_targets += sec_mind + valid_targets -= sec_mind + break + + // Third target, someone in their department. + for(var/datum/mind/department_mind as anything in shuffle(valid_targets)) + if(department_mind.assigned_role?.departments_bitflags & user.mind.assigned_role?.departments_bitflags) + final_targets += department_mind + valid_targets -= department_mind + break + + // Now grab completely random targets until we'll full + var/remaining_targets = clamp(num_targets_to_generate - length(final_targets), 0, length(valid_targets)) + for(var/i = 1 to remaining_targets) + final_targets += pick_n_take(valid_targets) + + if(!silent) + to_chat(user, span_danger("Your targets have been determined. Your Living Heart will allow you to track their position. Go and sacrifice them!")) + + for(var/datum/mind/chosen_mind as anything in final_targets) + heretic_datum.add_sacrifice_target(chosen_mind) + if(!silent) + to_chat(user, span_danger("[chosen_mind.current.real_name], the [chosen_mind.assigned_role?.title].")) + + return TRUE + +/** + * Begin the process of sacrificing the target. + * + * Arguments + * * user - the mob doing the sacrifice (a heretic) + * * selected_atoms - a list of all atoms chosen. Should be (at least) one human. + * * loc - the turf the sacrifice is occuring on + */ +/datum/heretic_knowledge/hunt_and_sacrifice/proc/sacrifice_process(mob/living/user, list/selected_atoms) + var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user) + var/mob/living/carbon/human/sacrifice + for(var/sacrifice_candidate in selected_atoms) + if(ishuman(sacrifice_candidate)) + sacrifice = sacrifice_candidate + break + else if(istype(sacrifice_candidate, /obj/item/organ/internal/brain/slime)) + var/obj/item/organ/internal/brain/slime/core = sacrifice_candidate + sacrifice = core.rebuild_body(nugget = FALSE) + selected_atoms -= core + break + if(!sacrifice) + CRASH("[type] sacrifice_process didn't have a human in the atoms list. How'd it make it so far?") + if(!heretic_datum.can_sacrifice(sacrifice)) + CRASH("[type] sacrifice_process managed to get a non-target human. This is incorrect.") + + if(sacrifice.mind) + LAZYSET(heretic_datum.completed_sacrifices, WEAKREF(sacrifice.mind), TRUE) + heretic_datum.remove_sacrifice_target(sacrifice) + + var/feedback = "Your patrons accept your offer" + var/sac_department_flag = sacrifice.mind?.assigned_role?.departments_bitflags | sacrifice.last_mind?.assigned_role?.departments_bitflags + if(sac_department_flag & DEPARTMENT_BITFLAG_COMMAND) + heretic_datum.knowledge_points++ + heretic_datum.high_value_sacrifices++ + feedback += " graciously" + + to_chat(user, span_hypnophrase("[feedback].")) + heretic_datum.total_sacrifices++ + heretic_datum.knowledge_points += 2 + + if(!begin_sacrifice(sacrifice)) + disembowel_target(sacrifice) + +/** + * This proc is called from [proc/sacrifice_process] after the heretic successfully sacrifices [sac_target].) + * + * Sets off a chain that sends the person sacrificed to the shadow realm to dodge hands to fight for survival. + * + * Arguments + * * sac_target - the mob being sacrificed. + */ +/datum/heretic_knowledge/hunt_and_sacrifice/proc/begin_sacrifice(mob/living/carbon/human/sac_target) + . = FALSE + + var/datum/antagonist/heretic/our_heretic = heretic_mind?.has_antag_datum(/datum/antagonist/heretic) + if(!our_heretic) + CRASH("[type] - begin_sacrifice was called, and no heretic [heretic_mind ? "antag datum":"mind"] could be found!") + + if(!LAZYLEN(GLOB.heretic_sacrifice_landmarks)) + CRASH("[type] - begin_sacrifice was called, but no heretic sacrifice landmarks were found!") + + var/obj/effect/landmark/heretic/destination_landmark = GLOB.heretic_sacrifice_landmarks[our_heretic.heretic_path] || GLOB.heretic_sacrifice_landmarks[PATH_START] + if(!destination_landmark) + CRASH("[type] - begin_sacrifice could not find a destination landmark OR default landmark to send the sacrifice! (Heretic's path: [our_heretic.heretic_path])") + + var/turf/destination = get_turf(destination_landmark) + + notify_ghosts( + "[heretic_mind.name] has sacrificed [sac_target] to the Mansus!", + source = sac_target, + action = NOTIFY_ORBIT, + notify_flags = NOTIFY_CATEGORY_NOFLASH, + header = "touhou hijack lol", + ) + + sac_target.visible_message(span_danger("[sac_target] begins to shudder violenty as dark tendrils begin to drag them into thin air!")) + sac_target.set_handcuffed(new /obj/item/restraints/handcuffs/energy/cult(sac_target)) + sac_target.update_handcuffed() + + if(sac_target.legcuffed) + sac_target.legcuffed.forceMove(sac_target.drop_location()) + sac_target.legcuffed.dropped(sac_target) + sac_target.legcuffed = null + sac_target.update_worn_legcuffs() + + sac_target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 85, 150) + sac_target.do_jitter_animation() + log_combat(heretic_mind.current, sac_target, "sacrificed") + + addtimer(CALLBACK(sac_target, TYPE_PROC_REF(/mob/living/carbon, do_jitter_animation)), SACRIFICE_SLEEP_DURATION * (1/3)) + addtimer(CALLBACK(sac_target, TYPE_PROC_REF(/mob/living/carbon, do_jitter_animation)), SACRIFICE_SLEEP_DURATION * (2/3)) + + // If our target is dead, try to revive them + // and if we fail to revive them, don't proceede the chain + sac_target.adjustOxyLoss(-100, FALSE) + sac_target.grab_ghost() // monke edit: try to grab their ghost + if(!sac_target.heal_and_revive(50, span_danger("[sac_target]'s heart begins to beat with an unholy force as they return from death!"))) + return + + if(sac_target.AdjustUnconscious(SACRIFICE_SLEEP_DURATION)) + to_chat(sac_target, span_hypnophrase("Your mind feels torn apart as you fall into a shallow slumber...")) + else + to_chat(sac_target, span_hypnophrase("Your mind begins to tear apart as you watch dark tendrils envelop you.")) + + sac_target.AdjustParalyzed(SACRIFICE_SLEEP_DURATION * 1.2) + sac_target.AdjustImmobilized(SACRIFICE_SLEEP_DURATION * 1.2) + + addtimer(CALLBACK(src, PROC_REF(after_target_sleeps), sac_target, destination), SACRIFICE_SLEEP_DURATION * 0.5) // Teleport to the minigame + + return TRUE + +/** + * This proc is called from [proc/begin_sacrifice] after the [sac_target] falls asleep), shortly after the sacrifice occurs. + * + * Teleports the [sac_target] to the heretic room, asleep. + * If it fails to teleport, they will be disemboweled and stop the chain. + * + * Arguments + * * sac_target - the mob being sacrificed. + * * destination - the spot they're being teleported to. + */ +/datum/heretic_knowledge/hunt_and_sacrifice/proc/after_target_sleeps(mob/living/carbon/human/sac_target, turf/destination) + if(QDELETED(sac_target)) + return + + sac_target.grab_ghost() // monke edit: try to grab their ghost + + // The target disconnected or something, we shouldn't bother sending them along. + if(!sac_target.client || !sac_target.mind) + disembowel_target(sac_target) + return + + // Send 'em to the destination. If the teleport fails, just disembowel them and stop the chain + if(!destination || !do_teleport(sac_target, destination, asoundin = 'sound/magic/repulse.ogg', asoundout = 'sound/magic/blind.ogg', no_effects = TRUE, channel = TELEPORT_CHANNEL_MAGIC, forced = TRUE)) + disembowel_target(sac_target) + return + + // If our target died during the (short) wait timer, + // and we fail to revive them (using a lower number than before), + // just disembowel them and stop the chain + sac_target.adjustOxyLoss(-100, FALSE) + sac_target.grab_ghost() // monke edit: try to grab their ghost again before revival + if(!sac_target.heal_and_revive(60, span_danger("[sac_target]'s heart begins to beat with an unholy force as they return from death!"))) + disembowel_target(sac_target) + return + + to_chat(sac_target, span_big(span_hypnophrase("Unnatural forces begin to claw at your every being from beyond the veil."))) + + sac_target.apply_status_effect(/datum/status_effect/unholy_determination, SACRIFICE_REALM_DURATION) + addtimer(CALLBACK(src, PROC_REF(after_target_wakes), sac_target), SACRIFICE_SLEEP_DURATION * 0.5) // Begin the minigame + + RegisterSignal(sac_target, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(on_target_escape)) // Cheese condition + RegisterSignal(sac_target, COMSIG_LIVING_DEATH, PROC_REF(on_target_death)) // Loss condition + +/** + * This proc is called from [proc/after_target_sleeps] when the [sac_target] should be waking up.) + * + * Begins the survival minigame, featuring the sacrifice targets. + * Gives them Helgrasp, throwing cursed hands towards them that they must dodge to survive. + * Also gives them a status effect, Unholy Determination, to help them in this endeavor. + * + * Then applies some miscellaneous effects. + */ +/datum/heretic_knowledge/hunt_and_sacrifice/proc/after_target_wakes(mob/living/carbon/human/sac_target) + if(QDELETED(sac_target)) + return + + // About how long should the helgrasp last? (1 metab a tick = helgrasp_time / 2 ticks (so, 1 minute = 60 seconds = 30 ticks)) + var/helgrasp_time = 1 MINUTES + + sac_target.reagents?.add_reagent(/datum/reagent/inverse/helgrasp/heretic, helgrasp_time / 20) + sac_target.apply_necropolis_curse(CURSE_BLINDING | CURSE_GRASPING) + + sac_target.add_mood_event("shadow_realm", /datum/mood_event/shadow_realm) + + sac_target.flash_act() + sac_target.set_eye_blur_if_lower(30 SECONDS) + sac_target.set_jitter_if_lower(20 SECONDS) + sac_target.set_dizzy_if_lower(20 SECONDS) + sac_target.adjust_hallucinations(24 SECONDS) + sac_target.emote("scream") + + to_chat(sac_target, span_reallybig(span_hypnophrase("The grasp of the Mansus reveal themselves to you!"))) + to_chat(sac_target, span_hypnophrase("You feel invigorated! Fight to survive!")) + // When it runs out, let them know they're almost home free + addtimer(CALLBACK(src, PROC_REF(after_helgrasp_ends), sac_target), helgrasp_time) + // Win condition + var/win_timer = addtimer(CALLBACK(src, PROC_REF(return_target), sac_target), SACRIFICE_REALM_DURATION, TIMER_STOPPABLE) + LAZYSET(return_timers, REF(sac_target), win_timer) + +/** + * This proc is called from [proc/after_target_wakes] after the helgrasp runs out in the [sac_target].) + * + * It gives them a message letting them know it's getting easier and they're almost free. + */ +/datum/heretic_knowledge/hunt_and_sacrifice/proc/after_helgrasp_ends(mob/living/carbon/human/sac_target) + if(QDELETED(sac_target) || sac_target.stat == DEAD) + return + + to_chat(sac_target, span_hypnophrase("The worst is behind you... Not much longer! Hold fast, or expire!")) + +/** + * This proc is called from [proc/begin_sacrifice] if the target survived the shadow realm), or [COMSIG_LIVING_DEATH] if they don't. + * + * Teleports [sac_target] back to a random safe turf on the station (or observer spawn if it fails to find a safe turf). + * Also clears their status effects, unregisters any signals associated with the shadow realm, and sends a message + * to the heretic who did the sacrificed about whether they survived, and where they ended up. + * + * Arguments + * * sac_target - the mob being sacrificed + * * heretic - the heretic who originally did the sacrifice. + */ +/datum/heretic_knowledge/hunt_and_sacrifice/proc/return_target(mob/living/carbon/human/sac_target) + if(QDELETED(sac_target)) + return + + var/current_timer = LAZYACCESS(return_timers, REF(sac_target)) + if(current_timer) + deltimer(current_timer) + LAZYREMOVE(return_timers, REF(sac_target)) + + UnregisterSignal(sac_target, COMSIG_MOVABLE_Z_CHANGED) + UnregisterSignal(sac_target, COMSIG_LIVING_DEATH) + sac_target.remove_status_effect(/datum/status_effect/necropolis_curse) + sac_target.remove_status_effect(/datum/status_effect/unholy_determination) + sac_target.reagents?.del_reagent(/datum/reagent/inverse/helgrasp/heretic) + sac_target.clear_mood_event("shadow_realm") + if(IS_HERETIC(sac_target)) + var/datum/antagonist/heretic/victim_heretic = sac_target.mind?.has_antag_datum(/datum/antagonist/heretic) + victim_heretic.knowledge_points -= 3 + else + sac_target.gain_trauma(/datum/brain_trauma/mild/phobia/heresy, TRAUMA_RESILIENCE_LOBOTOMY) // monke edit: allow lobotomy to cure the phobia + // Wherever we end up, we sure as hell won't be able to explain + sac_target.adjust_timed_status_effect(40 SECONDS, /datum/status_effect/speech/slurring/heretic) + sac_target.adjust_stutter(40 SECONDS) + + // They're already back on the station for some reason, don't bother teleporting + var/turf/below_target = get_turf(sac_target) + // is_station_level runtimes when passed z = 0, so I'm being very explicit here about checking for nullspace until fixed + // otherwise, we really don't want this to runtime error, as it'll get people stuck in hell forever - not ideal! + if(below_target && below_target.z != 0 && is_station_level(below_target.z)) + return + + // Teleport them to a random safe coordinate on the station z level. + var/turf/open/floor/safe_turf = get_safe_random_station_turf() + var/obj/effect/landmark/observer_start/backup_loc = locate(/obj/effect/landmark/observer_start) in GLOB.landmarks_list + if(!safe_turf) + safe_turf = get_turf(backup_loc) + stack_trace("[type] - return_target was unable to find a safe turf for [sac_target] to return to. Defaulting to observer start turf.") + + if(!do_teleport(sac_target, safe_turf, asoundout = 'sound/magic/blind.ogg', no_effects = TRUE, channel = TELEPORT_CHANNEL_MAGIC, forced = TRUE)) + safe_turf = get_turf(backup_loc) + sac_target.forceMove(safe_turf) + stack_trace("[type] - return_target was unable to teleport [sac_target] to the observer start turf. Forcemoving.") + + if(sac_target.stat == DEAD) + after_return_dead_target(sac_target) + else + after_return_live_target(sac_target) + + if(heretic_mind?.current) + var/composed_return_message = "" + composed_return_message += span_notice("Your victim, [sac_target], was returned to the station - ") + if(sac_target.stat == DEAD) + composed_return_message += span_red("dead. ") + else + composed_return_message += span_green("alive, but with a shattered mind. ") + + composed_return_message += span_notice("You hear a whisper... ") + composed_return_message += span_hypnophrase(get_area_name(safe_turf, TRUE)) + to_chat(heretic_mind.current, composed_return_message) + +/** + * If they die in the shadow realm, they lost. Send them back. + */ +/datum/heretic_knowledge/hunt_and_sacrifice/proc/on_target_death(mob/living/carbon/human/sac_target, gibbed) + SIGNAL_HANDLER + + if(gibbed) // Nothing to return + return + + return_target(sac_target) + +/** + * If they somehow cheese the shadow realm by teleporting out, they are disemboweled and killed. + */ +/datum/heretic_knowledge/hunt_and_sacrifice/proc/on_target_escape(mob/living/carbon/human/sac_target, old_z, new_z) + SIGNAL_HANDLER + + to_chat(sac_target, span_boldwarning("Your attempt to escape the Mansus is not taken kindly!")) + // Ends up calling return_target() via death signal to clean up. + disembowel_target(sac_target) + +/** + * This proc is called from [proc/return_target] if the [sac_target] survives the shadow realm.) + * + * Gives the sacrifice target some after effects upon ariving back to reality. + */ +/datum/heretic_knowledge/hunt_and_sacrifice/proc/after_return_live_target(mob/living/carbon/human/sac_target) + to_chat(sac_target, span_hypnophrase("The fight is over, but at great cost. You have been returned to the station in one piece.")) + if(IS_HERETIC(sac_target)) + to_chat(sac_target, span_big(span_hypnophrase("You don't remember anything leading up to the experience, but you feel your connection with the Mansus weakened - Knowledge once known, forgotten..."))) + else + to_chat(sac_target, span_big(span_hypnophrase("You don't remember anything leading up to the experience - All you can think about are those horrific hands..."))) + + // Oh god where are we? + sac_target.flash_act() + sac_target.adjust_confusion(60 SECONDS) + sac_target.set_jitter_if_lower(120 SECONDS) + sac_target.set_eye_blur_if_lower(100 SECONDS) + sac_target.set_dizzy_if_lower(1 MINUTES) + sac_target.AdjustKnockdown(80) + sac_target.stamina.adjust(-120) + + // Glad i'm outta there, though! + sac_target.add_mood_event("shadow_realm_survived", /datum/mood_event/shadow_realm_live) + if(IS_HERETIC(sac_target)) + sac_target.add_mood_event("shadow_realm_survived_sadness", /datum/mood_event/shadow_realm_live_sad_heretic) + else + sac_target.add_mood_event("shadow_realm_survived_sadness", /datum/mood_event/shadow_realm_live_sad) + + // Could use a little pick-me-up... + sac_target.reagents?.add_reagent(/datum/reagent/medicine/atropine, 8) + sac_target.reagents?.add_reagent(/datum/reagent/medicine/epinephrine, 8) + +/** + * This proc is called from [proc/return_target] if the target dies in the shadow realm.) + * + * After teleporting the target back to the station (dead), + * it spawns a special red broken illusion on their spot, for style. + */ +/datum/heretic_knowledge/hunt_and_sacrifice/proc/after_return_dead_target(mob/living/carbon/human/sac_target) + to_chat(sac_target, span_hypnophrase("You failed to resist the horrors of the Mansus! Your ruined body has been returned to the station.")) + to_chat(sac_target, span_big(span_hypnophrase("The experience leaves your mind torn and memories tattered. You will not remember anything leading up to the experience if revived."))) + + var/obj/effect/visible_heretic_influence/illusion = new(get_turf(sac_target)) + illusion.name = "\improper weakened rift in reality" + illusion.desc = "A rift wide enough for something... or someone... to come through." + illusion.color = COLOR_DARK_RED + +/** + * "Fuck you" proc that gets called if the chain is interrupted at some points. + * Disembowels the [sac_target] and brutilizes their body. Throws some gibs around for good measure. + */ +/datum/heretic_knowledge/hunt_and_sacrifice/proc/disembowel_target(mob/living/carbon/human/sac_target) + if(heretic_mind) + log_combat(heretic_mind.current, sac_target, "disemboweled via sacrifice") + sac_target.spill_organs() + sac_target.apply_damage(250, BRUTE) + if(sac_target.stat != DEAD) + sac_target.investigate_log("has been killed by heretic sacrifice.", INVESTIGATE_DEATHS) + sac_target.death() + sac_target.visible_message( + span_danger("[sac_target]'s organs are pulled out of [sac_target.p_their()] chest by shadowy hands!"), + span_userdanger("Your organs are violently pulled out of your chest by shadowy hands!") + ) + + new /obj/effect/gibspawner/human/bodypartless(get_turf(sac_target)) + +#undef SACRIFICE_SLEEP_DURATION +#undef SACRIFICE_REALM_DURATION diff --git a/monkestation/code/modules/antagonists/slasher/abilities/incorporealize.dm b/monkestation/code/modules/antagonists/slasher/abilities/incorporealize.dm deleted file mode 100644 index 1fa4f0e73c56..000000000000 --- a/monkestation/code/modules/antagonists/slasher/abilities/incorporealize.dm +++ /dev/null @@ -1,148 +0,0 @@ -/datum/action/cooldown/slasher/incorporealize - name = "Incorporealize" - desc = "Become incorporeal, capable of moving through walls and being completely invisible, but unable to interact with the world. Can only be used when corporeal and when not in view of any human being." - button_icon_state = "incorporealize" - cooldown_time = 20 SECONDS - - var/jaunt_type = /obj/effect/dummy/phased_mob - -/datum/action/cooldown/slasher/incorporealize/Activate(atom/target) - var/datum/antagonist/slasher/slasherdatum = owner.mind.has_antag_datum(/datum/antagonist/slasher) - var/area/owner_area = get_area(owner) - var/turf/owner_turf = get_turf(owner) - - /** - * Here we start our checks - * We cant do it in PreActivate() since that for some reason does not work - */ - - // Standard jaunt checks - - if(!owner_area || !owner_turf) - return // nullspaced? - - if(owner_area.area_flags & NOTELEPORT) - to_chat(owner, span_danger("Some dull, universal force is stopping you from going incorporeal here.")) - return - - if(owner_turf?.turf_flags & NOJAUNT) - to_chat(owner, span_danger("An otherwordly force is preventing you from going incorporeal here.")) - return - - // Unique slasher checks - - if(!slasherdatum) - to_chat(owner, span_warning("You should not have this ability or your slasher antagonist datum was deleted, please contact coders")) - return - - if(slasherdatum.soul_punishment >= 2) - to_chat(owner, span_boldwarning("The souls you have stolen are preventing you from going incorporeal!")) - return - - for(var/mob/living/watcher in viewers(9, target)) - if(watcher == target) - continue - - if(!watcher.mind) //only mobs with minds stop you from jaunting - continue - - if(isdead(watcher)) - continue - - if(isaicamera(watcher)) - var/mob/camera/ai_eye/ai_eye = watcher - var/mob/living/silicon/ai/true_ai = ai_eye.ai - true_ai.disconnect_shell() // should never happen, lets try it anyway - true_ai.view_core() - to_chat(true_ai, span_warning("UNEXPECTED ENERGY SURGE -- RETURNING TO THE CORE")) - do_sparks(3, FALSE, true_ai) - true_ai.adjustBruteLoss(30) // same as a light explosion, to dis-encurage the AI always watching the slasher and telling their location - continue - - target.balloon_alert(owner, "you can only vanish unseen.") - return - - . = ..() - - if(is_jaunting(target)) - . = exit_jaunt(target) - else - . = enter_jaunt(target) - -/datum/action/cooldown/slasher/incorporealize/proc/enter_jaunt(mob/living/jaunter) - var/datum/antagonist/slasher/slasherdatum = owner.mind.has_antag_datum(/datum/antagonist/slasher) - - update_the_button(jaunter) - - animate(jaunter, alpha = 0, time = 1.5 SECONDS) - SLEEP_CHECK_DEATH(1.5 SECONDS, src) - - var/obj/effect/dummy/phased_mob/jaunt = new jaunt_type(get_turf(jaunter), jaunter) - - RegisterSignal(jaunt, COMSIG_MOB_EJECTED_FROM_JAUNT, PROC_REF(on_jaunt_exited)) - jaunter.add_traits(list(TRAIT_MAGICALLY_PHASED, TRAIT_RUNECHAT_HIDDEN), REF(src)) - jaunter.drop_all_held_items() - ADD_TRAIT(jaunter, TRAIT_NO_TRANSFORM, INNATE_TRAIT) - - // Give them some bloody hands to prevent them from doing things - var/obj/item/bloodcrawl/left_hand = new(jaunter) - var/obj/item/bloodcrawl/right_hand = new(jaunter) - left_hand.icon_state = "bloodhand_right" // Icons swapped intentionally.. - right_hand.icon_state = "bloodhand_left" // ..because perspective, or something - jaunter.put_in_hands(left_hand) - jaunter.put_in_hands(right_hand) - - // Make sure they wont be burning for 20 seconds - jaunter.extinguish_mob() - REMOVE_TRAIT(jaunter, TRAIT_NO_TRANSFORM, INNATE_TRAIT) - - slasherdatum.corporeal = FALSE - ADD_TRAIT(jaunter, TRAIT_NOBREATH, REF(src)) - - // This needs to happen at the end, after all the traits and stuff is handled - SEND_SIGNAL(jaunter, COMSIG_MOB_ENTER_JAUNT, src, jaunt) - return jaunt - -/datum/action/cooldown/slasher/incorporealize/proc/exit_jaunt(mob/living/unjaunter) - var/datum/antagonist/slasher/slasherdatum = owner.mind.has_antag_datum(/datum/antagonist/slasher) - var/obj/effect/dummy/phased_mob/jaunt = unjaunter.loc - - update_the_button(unjaunter) - - jaunt.eject_jaunter() - - animate(unjaunter, alpha = 255, time = 1.5 SECONDS) - SLEEP_CHECK_DEATH(1.5 SECONDS, src) - - for(var/obj/item/bloodcrawl/blood_hand in unjaunter.held_items) - unjaunter.temporarilyRemoveItemFromInventory(blood_hand, force = TRUE) - qdel(blood_hand) - - slasherdatum.corporeal = TRUE - REMOVE_TRAIT(unjaunter, TRAIT_NOBREATH, REF(src)) - - return TRUE - -/datum/action/cooldown/slasher/incorporealize/proc/update_the_button(atom/target) - if(is_jaunting(target)) - name = "Incorporealize" - desc = "Become incorporeal, capable of moving through walls and being completely invisible, but unable to interact with the world. Can only be used when corporeal and when not in view of any human being. " - button_icon_state = "incorporealize" - else - name = "Corporealize" - desc = "Manifest your being from your incorporeal state." - button_icon_state = "corporealize" - build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON) - -/datum/action/cooldown/slasher/incorporealize/proc/on_jaunt_exited(obj/effect/dummy/phased_mob/jaunt, mob/living/unjaunter) - unjaunter.remove_traits(list(TRAIT_MAGICALLY_PHASED, TRAIT_RUNECHAT_HIDDEN), REF(src)) - // This needs to happen at the end, after all the traits and stuff is handled - SEND_SIGNAL(unjaunter, COMSIG_MOB_AFTER_EXIT_JAUNT, src) - -/datum/action/cooldown/slasher/incorporealize/Remove(mob/living/remove_from) - exit_jaunt(remove_from) - if(!is_jaunting(remove_from)) // In case you have made exit_jaunt conditional, as in mirror walk - return ..() - var/obj/effect/dummy/phased_mob/jaunt = remove_from.loc - jaunt.eject_jaunter() - return ..() diff --git a/monkestation/code/modules/antagonists/slasher/slasher_datum.dm b/monkestation/code/modules/antagonists/slasher/slasher_datum.dm deleted file mode 100644 index ca39a5a59a85..000000000000 --- a/monkestation/code/modules/antagonists/slasher/slasher_datum.dm +++ /dev/null @@ -1,168 +0,0 @@ -/datum/outfit/slasher - name = "Slasher Outfit" - suit = /obj/item/clothing/suit/apron/slasher - uniform = /obj/item/clothing/under/color/random/slasher - shoes = /obj/item/clothing/shoes/slasher_shoes - mask = /obj/item/clothing/mask/gas/slasher - -/datum/antagonist/slasher - name = "\improper Slasher" - show_in_antagpanel = TRUE - roundend_category = "slashers" - antagpanel_category = "Slasher" - job_rank = ROLE_SLASHER - antag_hud_name = "slasher" - show_name_in_check_antagonists = TRUE - hud_icon = 'monkestation/icons/mob/slasher.dmi' - preview_outfit = /datum/outfit/slasher - show_to_ghosts = TRUE - - ///the linked machette that the slasher can summon even if destroyed and is unique to them - var/obj/item/slasher_machette/linked_machette - ///toggles false/true if we are visible in order to breathe out or in - var/breath_out = FALSE - ///rallys the amount of souls effects are based on this - var/souls_sucked = 0 - ///when we sucked our last soul in world time - var/last_soul_sucked = 0 - ///cooldown we should have for soul sucking without downside - var/soul_digestion = 5 MINUTES - ///our current soul punishment state - var/soul_punishment = 0 - ///our cached brute_mod - var/cached_brute_mod = 0 - ///processes to heartbeat - var/heartbeat_processes = 0 - ///processes until wail if above punishment threshold - var/wailing_processes = 0 - ///our breath processes - var/breath_processes = 0 - ///list of mobs that have been given a overlay so we can remove later - var/list/mobs_with_fullscreens = list() - ///this is needed because it double fires sometimes before finishing - var/is_hudchecking = FALSE - /// the mob we are stalking - var/mob/living/carbon/human/stalked_human - /// how close we are in % to finishing stalking - var/stalk_precent = 0 - /// are we corporeal - var/corporeal = TRUE - ///ALL Powers currently owned - var/list/datum/action/cooldown/slasher/powers = list() - -/datum/antagonist/slasher/apply_innate_effects(mob/living/mob_override) - . = ..() - var/mob/living/current_mob = mob_override || owner.current - - ADD_TRAIT(current_mob, TRAIT_BATON_RESISTANCE, "slasher") - ADD_TRAIT(current_mob, TRAIT_CLUMSY, "slasher") - ADD_TRAIT(current_mob, TRAIT_DUMB, "slasher") - ADD_TRAIT(current_mob, TRAIT_NODEATH, "slasher") - ADD_TRAIT(current_mob, TRAIT_LIMBATTACHMENT, "slasher") - - var/mob/living/carbon/carbon = current_mob - var/obj/item/organ/internal/eyes/shadow/shadow = new - shadow.Insert(carbon, drop_if_replaced = FALSE) - - RegisterSignal(current_mob, COMSIG_LIVING_LIFE, PROC_REF(LifeTick)) - - ///abilities galore - for(var/datum/action/cooldown/slasher/listed_slasher as anything in subtypesof(/datum/action/cooldown/slasher)) - var/datum/action/cooldown/slasher/new_ability = new listed_slasher - new_ability.Grant(current_mob) - powers |= new_ability - - var/mob/living/carbon/human/human = current_mob - if(istype(human)) - human.equipOutfit(/datum/outfit/slasher) - cached_brute_mod = human.dna.species.brutemod - - -/datum/antagonist/slasher/on_removal() - . = ..() - owner.current.remove_traits(list(TRAIT_BATON_RESISTANCE, TRAIT_CLUMSY, TRAIT_NODEATH, TRAIT_DUMB, TRAIT_LIMBATTACHMENT), "slasher") - for(var/datum/action/cooldown/slasher/listed_slasher as anything in powers) - listed_slasher.Remove(owner.current) - -/datum/antagonist/slasher/proc/LifeTick(mob/living/source, seconds_per_tick, times_fired) - if(corporeal) - breath_processes++ - if(breath_processes >= 2) - breath_processes = 0 - if(breath_out) - source.emote("exhale") - breath_out = FALSE - else - source.emote("inhale") - breath_out = TRUE - - heartbeat_processes++ - if(heartbeat_processes >= 4) - heartbeat_processes = 0 - for(var/mob/living/carbon/human in view(7, source)) - if(human == source) - continue - human.playsound_local(human, 'sound/health/slowbeat.ogg', 40, FALSE, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE) - - if(stalked_human) - for(var/mob/living/carbon/human in view(7, source)) - if(stalked_human != human) - continue - if(stalked_human.stat == DEAD) - failed_stalking() - stalk_precent += (1 / 1.8) - if(stalk_precent >= 100) - finish_stalking() - - if(!is_hudchecking) - is_hudchecking = TRUE - var/list/starting_humans = list() - starting_humans += mobs_with_fullscreens - for(var/mob/living/carbon/human in view(7, source)) - if(!(human in mobs_with_fullscreens)) - mobs_with_fullscreens += human - human.overlay_fullscreen("slasher_prox", /atom/movable/screen/fullscreen/nearby, 1) - else - starting_humans -= human - - if(length(starting_humans)) - for(var/mob/living/carbon/human in starting_humans) - human.clear_fullscreen("slasher_prox", 15) - mobs_with_fullscreens -= human - is_hudchecking = FALSE - - for(var/obj/machinery/light/listed_light in view(3, source)) - if(prob(10)) - listed_light.break_light_tube() - - var/turf/TT = get_turf(source) - var/turf/T = pick(RANGE_TURFS(4,TT)) - - if(prob(5)) - new /obj/effect/gibspawner/generic(T) - - if(soul_punishment >= 2) - wailing_processes++ - if(wailing_processes >= 8) - wailing_processes = 0 - playsound(owner.current, 'monkestation/sound/voice/terror-cry.ogg', 50, falloff_exponent = 0, use_reverb = FALSE) - owner.current.emote("wails") - var/mob/living/carbon/human/human = owner.current - human.blood_volume -= 10 - var/turf/turf = get_turf(human) - var/list/blood_drop = list(human.get_blood_id() = 10) - turf.add_liquid_list(blood_drop, FALSE, 300) - -/datum/antagonist/slasher/proc/finish_stalking() - to_chat(owner, span_boldwarning("You have finished spooking your victim, and have harvested part of their soul!")) - if(linked_machette) - linked_machette.force += 2.5 - linked_machette.throwforce += 2.5 - stalked_human = null - -/datum/antagonist/slasher/proc/failed_stalking() - to_chat(owner, span_boldwarning("You let your victim be taken before it was time!")) - if(linked_machette) - linked_machette.force -= 5 - linked_machette.throwforce -= 5 - stalked_human = null diff --git a/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_footwear.dm b/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_footwear.dm deleted file mode 100644 index 854969079328..000000000000 --- a/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_footwear.dm +++ /dev/null @@ -1,10 +0,0 @@ -/obj/item/clothing/shoes/slasher_shoes - name = "Industrial Boots" - icon_state = "jackboots" - inhand_icon_state = "jackboots" - clothing_traits = list(TRAIT_NO_SLIP_ALL) - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - -/obj/item/clothing/shoes/slasher_shoes/Initialize(mapload) - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, "slasher") diff --git a/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_headgear.dm b/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_headgear.dm deleted file mode 100644 index 790d0f430f64..000000000000 --- a/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_headgear.dm +++ /dev/null @@ -1,17 +0,0 @@ -/obj/item/clothing/mask/gas/slasher - name = "slasher's gas mask" - desc = "A close-fitting sealed gas mask, this one seems to be protruding some kind of dark aura." - - icon = 'icons/obj/clothing/head/utility.dmi' - worn_icon = 'icons/mob/clothing/head/utility.dmi' - icon_state = "welding" - inhand_icon_state = "welding" - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - slowdown = 1 - -/obj/item/clothing/mask/gas/slasher/Initialize(mapload) - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, "slasher") - -/obj/item/clothing/mask/gas/slasher/adjustmask() - return diff --git a/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_middlewear.dm b/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_middlewear.dm deleted file mode 100644 index 54e41adb4d2d..000000000000 --- a/monkestation/code/modules/antagonists/slasher/slasher_outfit/slasher_middlewear.dm +++ /dev/null @@ -1,17 +0,0 @@ -/obj/item/clothing/suit/apron/slasher - name = "butcher's apron" - desc = "A brown butcher's apron, you can feel an aura of something dark radiating off of it." - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - - icon_state = "slasher" - inhand_icon_state = null - -/obj/item/clothing/suit/apron/slasher/Initialize(mapload) - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, "slasher") - -/obj/item/clothing/under/color/random/slasher - name = "butcher's jumpsuit" - clothing_traits = list(TRAIT_NODROP) - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - diff --git a/monkestation/code/modules/antagonists/slasher/slasher_punishment.dm b/monkestation/code/modules/antagonists/slasher/slasher_punishment.dm deleted file mode 100644 index 5a7049729e69..000000000000 --- a/monkestation/code/modules/antagonists/slasher/slasher_punishment.dm +++ /dev/null @@ -1,8 +0,0 @@ -/datum/antagonist/slasher/proc/check_soul_punishment() - if(last_soul_sucked + soul_digestion < world.time) - return - soul_punishment++ - addtimer(CALLBACK(src, PROC_REF(remove_punishment_layer)), 5 MINUTES) - -/datum/antagonist/slasher/proc/remove_punishment_layer() - soul_punishment-- diff --git a/monkestation/code/modules/antagonists/traitor/objectives/kidnapping.dm b/monkestation/code/modules/antagonists/traitor/objectives/kidnapping.dm index e55aecf92f81..7b716141997c 100644 --- a/monkestation/code/modules/antagonists/traitor/objectives/kidnapping.dm +++ b/monkestation/code/modules/antagonists/traitor/objectives/kidnapping.dm @@ -21,7 +21,7 @@ var/list/target_belongings = list() /datum/traitor_objective/target_player/kidnapping/common - progression_reward = list(2 MINUTES, 4 MINUTES) + progression_reward = list(10 MINUTES, 15 MINUTES) telecrystal_reward = list(2, 3) target_jobs = list( // Cargo @@ -57,7 +57,7 @@ telecrystal_reward = 3 //go bully the assistants /datum/traitor_objective/target_player/kidnapping/uncommon //Hard to fish out targets - progression_reward = list(4 MINUTES, 8 MINUTES) + progression_reward = list(15 MINUTES, 20 MINUTES) telecrystal_reward = list(3, 4) given_contractor_rep = 2 @@ -75,7 +75,7 @@ alive_bonus = 4 /datum/traitor_objective/target_player/kidnapping/rare - progression_reward = list(8 MINUTES, 12 MINUTES) + progression_reward = list(20 MINUTES, 25 MINUTES) telecrystal_reward = list(4, 5) given_contractor_rep = 3 @@ -93,7 +93,7 @@ alive_bonus = 5 /datum/traitor_objective/target_player/kidnapping/captain - progression_reward = list(12 MINUTES, 16 MINUTES) + progression_reward = list(25 MINUTES, 30 MINUTES) telecrystal_reward = list(5, 6) given_contractor_rep = 4 @@ -289,16 +289,13 @@ continue possible_turfs += open_turf - if(!LAZYLEN(possible_turfs)) - var/turf/new_turf = get_safe_random_station_turf() - if(!new_turf) //SOMEHOW - to_chat(sent_mob, span_hypnophrase(span_reallybig("A million voices echo in your head... \"Seems where you got sent here from won't \ - be able to handle our pod... You will die here instead.\"
    "))) - if (sent_mob.can_heartattack()) - sent_mob.set_heartattack(TRUE) - return - - possible_turfs += new_turf + var/turf/return_turf = get_safe_random_station_turf() + if(!return_turf) //SOMEHOW + to_chat(sent_mob, span_hypnophrase(span_reallybig("A million voices echo in your head... \"Seems where you got sent here from won't \ + be able to handle our pod... You will die here instead.\"
    "))) + if (sent_mob.can_heartattack()) + sent_mob.set_heartattack(TRUE) + return var/obj/structure/closet/supplypod/return_pod = new() return_pod.bluespace = TRUE @@ -322,7 +319,7 @@ sent_mob.set_eye_blur_if_lower(100 SECONDS) sent_mob.dna.species.give_important_for_life(sent_mob) // so plasmamen do not get left for dead - new /obj/effect/pod_landingzone(pick(possible_turfs), return_pod) + new /obj/effect/pod_landingzone(return_turf, return_pod) /// Returns a list of things that the provided mob has which we would rather that they do not have /datum/traitor_objective/target_player/kidnapping/proc/gather_belongings(mob/living/carbon/human/kidnapee) diff --git a/monkestation/code/modules/antagonists/traitor/objectives/tide_bug_department.dm b/monkestation/code/modules/antagonists/traitor/objectives/tide_bug_department.dm index a1560ba82364..8a7158c4af7b 100644 --- a/monkestation/code/modules/antagonists/traitor/objectives/tide_bug_department.dm +++ b/monkestation/code/modules/antagonists/traitor/objectives/tide_bug_department.dm @@ -135,7 +135,7 @@ return ..() /obj/structure/traitor_bug/proc/tide_department() - if(!bug_item_ref) + if(QDELETED(bug_item_ref)) return SEND_SIGNAL(bug_item_ref, COMSIG_TRAITOR_BUG_ACTIVATED) @@ -148,7 +148,7 @@ #define TIME_TO_UNBOLT 3 MINUTES /obj/machinery/door/airlock/proc/traitor_bug_tide() - if(obj_flags & EMAGGED) + if((obj_flags & EMAGGED) || is_probably_external_airlock()) return unbolt() @@ -161,6 +161,31 @@ if(prob(30)) set_electrified(MACHINE_ELECTRIFIED_PERMANENT) - addtimer(CALLBACK(src, PROC_REF(unbolt)), TIME_TO_UNBOLT) //unbolt the airlocks in 3 minutes + addtimer(CALLBACK(src, PROC_REF(unbolt)), TIME_TO_UNBOLT, TIMER_DELETE_ME) //unbolt the airlocks in 3 minutes #undef TIME_TO_UNBOLT + +/// Checks to see if the airlock, or any airlocks linked to it, are adjacent to +/// any tiles that have likely unsafe atmospheric conditions. +/obj/machinery/door/airlock/proc/is_probably_external_airlock() + . = FALSE + if(leads_to_space() || closeOther?.leads_to_space() || cyclelinkedairlock?.leads_to_space()) + return TRUE + for(var/obj/machinery/door/airlock/other_door in close_others) + if(other_door.leads_to_space()) + return TRUE + +/// Checks to see if the door is adjacent to any tiles that have likely unsafe atmospheric conditions. +/obj/machinery/door/airlock/proc/leads_to_space() + var/turf/our_turf = get_turf(src) + if(QDELETED(our_turf)) + return TRUE + for(var/turf/open/turf as anything in RANGE_TURFS(1, our_turf)) + if(!istype(turf) || QDELING(turf) || turf.is_blocked_turf(exclude_mobs = TRUE, source_atom = src)) + continue + if(isgroundlessturf(turf)) + return TRUE + var/pressure = turf.return_air()?.return_pressure() + if(!IS_SAFE_NUM(pressure) || !ISINRANGE_EX(pressure, HAZARD_LOW_PRESSURE, HAZARD_HIGH_PRESSURE)) + return TRUE + return FALSE diff --git a/monkestation/code/modules/antagonists/wizard/equipment/artefact.dm b/monkestation/code/modules/antagonists/wizard/equipment/artefact.dm index 6d984316c65d..47f0a3cafbec 100644 --- a/monkestation/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/monkestation/code/modules/antagonists/wizard/equipment/artefact.dm @@ -27,6 +27,33 @@ reagents.add_reagent_list(list_reagents) return +//wizard bio suit +/obj/item/clothing/head/wizard/bio_suit + name = "gem encrusted bio hood" + desc = "A hood that protects the head and face from biological contaminants. It's covered in small gemstones." + icon = 'monkestation/icons/obj/clothing/head/bio.dmi' + icon_state = "bio_wizard" + worn_icon = 'monkestation/icons/mob/clothing/head/bio.dmi' + worn_icon_state = "bio_wizard" + inhand_icon_state = "bio_hood" + clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | SNUG_FIT | PLASMAMAN_HELMET_EXEMPT | HEADINTERNALS | CASTING_CLOTHES + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF + +/obj/item/clothing/suit/wizrobe/bio_suit + name = "gem encrusted bio suit" + desc = "A suit that protects against biological contamination. It's covered in small gemstones." + icon = 'monkestation/icons/obj/clothing/suits/bio.dmi' + icon_state = "bio_wizard" + worn_icon = 'monkestation/icons/mob/clothing/suits/bio.dmi' + worn_icon_state = "bio_wizard" + inhand_icon_state = "bio_suit" + clothing_flags = THICKMATERIAL | CASTING_CLOTHES + body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS + flags_inv = HIDEGLOVES|HIDEJUMPSUIT + strip_delay = 7 SECONDS + equip_delay_other = 7 SECONDS + //reactive talisman #define REACTION_COOLDOWN_DURATION 10 SECONDS /obj/item/clothing/neck/neckless/wizard_reactive //reactive armor for wizards that casts a spell when it reacts @@ -125,11 +152,39 @@ desc = "An artifact that when inserted into a spellbook increases its power by 100." value = 100 -/obj/item/spellbook_charge/afterattack(obj/item/spellbook/book, mob/user) +/obj/item/spellbook_charge/Initialize(mapload) + . = ..() + AddComponent(/datum/component/charge_adjuster, type_to_charge_to = /obj/item/spellbook, charges_given = value, called_proc_name = TYPE_PROC_REF(/obj/item/spellbook, adjust_charge)) + +//wizard shield charges +#define ADDED_MAX_CHARGE 50 +#define MAX_CHARGES_ABSORBED 3 +/obj/item/wizard_armour_charge/Initialize(mapload) . = ..() - if(!istype(book)) - to_chat(user, "The charge can only increase the power of spellbooks!") + AddComponent(/datum/component/charge_adjuster, type_to_charge_to = /obj/item/spellbook, charges_given = 1, called_proc_name = TYPE_PROC_REF(/obj/item/spellbook, adjust_charge)) + +/obj/item/wizard_armour_charge/pre_attack(atom/A, mob/living/user, params) + . = ..() + if(.) return - book.uses += value - to_chat(user, "You increase the power of the spellbook by [value] points.") - qdel(src) + + var/obj/item/mod/module/energy_shield/wizard/shield = istype(A, /obj/item/mod/module/energy_shield/wizard) || locate(/obj/item/mod/module/energy_shield/wizard) in A.contents + if(shield) + if(isnum(shield)) + shield = A + if(shield.max_charges >= (initial(shield.max_charges) + (ADDED_MAX_CHARGE * MAX_CHARGES_ABSORBED))) + balloon_alert(user, "\The [shield] cannot take more charges, you can put this back into your spellbook to refund it.") + return TRUE + + shield.max_charges += ADDED_MAX_CHARGE + var/datum/component/shielded/shield_comp = shield.mod?.GetComponent(/datum/component/shielded) + if(shield_comp) + shield_comp.max_charges += ADDED_MAX_CHARGE + shield_comp.current_charges += (ADDED_MAX_CHARGE - initial(shield_comp.charge_recovery)) + qdel(src) //should still be able to finish the attack chain + +#undef ADDED_MAX_CHARGE +#undef MAX_CHARGES_ABSORBED + +/obj/item/mod/module/energy_shield/wizard + lose_multiple_charges = TRUE //I dont think we have anything else that uses this var, so all the numbers for this are subject to change diff --git a/monkestation/code/modules/antagonists/wizard/equipment/mirror_shield.dm b/monkestation/code/modules/antagonists/wizard/equipment/mirror_shield.dm new file mode 100644 index 000000000000..59cee2c7e692 --- /dev/null +++ b/monkestation/code/modules/antagonists/wizard/equipment/mirror_shield.dm @@ -0,0 +1,124 @@ +#define PROJECTILE_HIT_EFFECT_CHANCE 80 +#define NORMAL_BLOCK_CHANCE 30 +#define REACTION_MODE_ABSORB 0 +#define REACTION_MODE_REFLECT 1 + +//a "shield" that can absorb projectiles and then shoot them back at attackers +/obj/item/gun/magic/mirror_shield + name = "mirror shield" + desc = "A strange mirror adorned with various gemstones. If you look close enough it almost seems as if the surface is... rippling?" + icon = 'monkestation/icons/obj/weapons/shields.dmi' + icon_state = "wizard_mirror_shield" + inhand_icon_state = "wizard_mirror_shield" + lefthand_file = 'monkestation/icons/mob/inhands/equipment/shields_lefthand.dmi' + righthand_file = 'monkestation/icons/mob/inhands/equipment/shields_righthand.dmi' + worn_icon = 'monkestation/icons/mob/clothing/back.dmi' + worn_icon_state = "wizard_mirror_shield" + force = 16 + slot_flags = ITEM_SLOT_BACK + w_class = WEIGHT_CLASS_BULKY + attack_verb_continuous = list("bumps", "prods") + attack_verb_simple = list("bump", "prod") + hitsound = 'sound/weapons/smash.ogg' + fire_sound = 'sound/magic/cosmic_expansion.ogg' + ammo_type = /obj/item/ammo_casing/mirror_shield_dummy + can_charge = TRUE + ///Up to how many projectiles can we "have stored" + var/max_stored_projectiles = 10 + ///Do we absorb or reflect projectiles when hit + var/reaction_mode = REACTION_MODE_ABSORB + ///The list of projectiles we have stored ready to fire + var/list/stored_projectiles = list() + ///Cannot absorb projectile types in here + var/static/list/blacklisted_projectile_types = list() + +/obj/item/gun/magic/mirror_shield/Initialize(mapload) + . = ..() + STOP_PROCESSING(SSobj, src) //we want can_charge set to TRUE but dont actually use the processing it gives so just disable it + +/obj/item/gun/magic/mirror_shield/Destroy() + for(var/projectile in stored_projectiles) + qdel(projectile) //could also have them shoot off in random directions + stored_projectiles -= projectile + return ..() + +/obj/item/gun/magic/mirror_shield/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + . = ..() + if(ismob(old_loc)) + UnregisterSignal(old_loc, COMSIG_PROJECTILE_PREHIT) + + if(ismob(loc)) + RegisterSignal(loc, COMSIG_PROJECTILE_PREHIT, PROC_REF(handle_hit)) + +/obj/item/gun/magic/mirror_shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text, final_block_chance, damage, attack_type) + if(attack_type != PROJECTILE_ATTACK && prob(NORMAL_BLOCK_CHANCE)) + return TRUE + +/obj/item/gun/magic/mirror_shield/attack_self(mob/user, modifiers) + . = ..() + reaction_mode = !reaction_mode + balloon_alert(user, "you hold \the [src] in such a way as to [reaction_mode == REACTION_MODE_ABSORB ? "absorb" : "reflect"] projectiles.") + +/obj/item/gun/magic/mirror_shield/examine(mob/user) + . = ..() + if(HAS_MIND_TRAIT(user, TRAIT_MAGICALLY_GIFTED)) + . += "
    It currently contains: [english_list(stored_projectiles, comma_text = ",
    ")]." + +/obj/item/gun/magic/mirror_shield/recharge_newshot() + if(!chambered.loaded_projectile && length(stored_projectiles)) + var/obj/projectile/loaded = stored_projectiles[1] + loaded.forceMove(chambered) + chambered.loaded_projectile = loaded + stored_projectiles -= loaded + +/obj/item/gun/magic/mirror_shield/can_shoot() + return chambered.loaded_projectile + +/obj/item/gun/magic/mirror_shield/handle_chamber(mob/living/user, empty_chamber, from_firing, chamber_next_round) + recharge_newshot() + +/obj/item/gun/magic/mirror_shield/proc/absorb_projectile(obj/projectile/absorbed) + STOP_PROCESSING(SSprojectiles, absorbed) + absorbed.fired = FALSE + QDEL_NULL(absorbed.trajectory) + if(!chambered.loaded_projectile) + absorbed.forceMove(chambered) + chambered.loaded_projectile = absorbed + else + absorbed.forceMove(src) + stored_projectiles += absorbed + absorbed.update_appearance() + visible_message(span_notice("\The [src] absorbs [absorbed]!")) + +/obj/item/gun/magic/mirror_shield/proc/handle_hit(mob/held_by, list/projectile_args, obj/projectile/hit_by) + SIGNAL_HANDLER + if(!prob((src in held_by.held_items) ? PROJECTILE_HIT_EFFECT_CHANCE : NORMAL_BLOCK_CHANCE)) //turns out its harder to block with something when your not holding it + return + + hit_by.impacted = list() + var/turf/firer_turf = get_turf(hit_by.firer) + if(hit_by.firer && get_dist(firer_turf, get_turf(src)) <= 1) //this is due to some jank I cant figure out, if you want to go ahead + hit_by.process_hit(firer_turf, hit_by.firer) + else if(reaction_mode == REACTION_MODE_ABSORB && length(stored_projectiles) <= max_stored_projectiles && !(hit_by.type in blacklisted_projectile_types)) + absorb_projectile(hit_by) + else + hit_by.set_angle_centered(get_angle(held_by, hit_by.firer)) + hit_by.firer = held_by + hit_by.speed *= 0.8 + hit_by.damage *= 1.15 + + playsound(src, 'sound/magic/cosmic_expansion.ogg', vol = 120, channel = CHANNEL_SOUND_EFFECTS) + return PROJECTILE_INTERRUPT_HIT | PROJECTILE_INTERRUPT_BLOCK_QDEL + +//a dummy casing type to get filled with absorbed projectiles +/obj/item/ammo_casing/mirror_shield_dummy + loaded_projectile = null + firing_effect_type = null + +/obj/item/ammo_casing/mirror_shield_dummy/newshot() + return + +#undef PROJECTILE_HIT_EFFECT_CHANCE +#undef NORMAL_BLOCK_CHANCE +#undef REACTION_MODE_ABSORB +#undef REACTION_MODE_REFLECT diff --git a/monkestation/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm b/monkestation/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm index 4199e85c6e73..f6db030d5c46 100644 --- a/monkestation/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm +++ b/monkestation/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm @@ -1,13 +1,34 @@ /datum/spellbook_entry/item/magical_chemsprayer name = "Magic Chem Sprayer" - desc = "A magic chemical sprayer that will fill itself with unlimited random chemicals." + desc = "A magic chemical sprayer that will fill itself with unlimited random chemicals. Now with protective gear!" item_path = /obj/item/reagent_containers/spray/chemsprayer/magical category = "Defensive" cost = 1 +//if still too weak I could also give galoshes +/datum/spellbook_entry/item/magical_chemsprayer/try_equip_item(mob/living/carbon/human/user, obj/item/to_equip) + . = ..() + var/turf/user_turf = get_turf(user) + if(!user_turf) + return + + for(var/obj/item/thing as anything in list(/obj/item/clothing/gloves/combat/wizard, /obj/item/clothing/head/wizard/bio_suit, /obj/item/clothing/suit/wizrobe/bio_suit)) + thing = new thing(user_turf) + user.equip_to_appropriate_slot(thing) + /datum/spellbook_entry/item/reactive_talisman name = "Reactive Talisman" desc = "An enchanted talisman that has a chance to cast a spell if it's wearer is hit." item_path = /obj/item/clothing/neck/neckless/wizard_reactive category = "Defensive" cost = 1 + +/datum/spellbook_entry/item/mirror_shield + name = "Mirror Shield" + desc = "A mirror that will absorb projectiles shot into it to later be shot back out at your convenience." + item_path = /obj/item/gun/magic/mirror_shield + category = "Defensive" + cost = 2 + +/datum/spellbook_entry/item/armor + cost = 1 diff --git a/monkestation/code/modules/antagonists/wizard/equipment/wizard_spellbook.dm b/monkestation/code/modules/antagonists/wizard/equipment/wizard_spellbook.dm new file mode 100644 index 000000000000..bc0348f39c1e --- /dev/null +++ b/monkestation/code/modules/antagonists/wizard/equipment/wizard_spellbook.dm @@ -0,0 +1,4 @@ +/obj/item/spellbook/proc/adjust_charge(adjust_by) + log_spellbook("[src] charges adjusted by [adjust_by]. [usr ? "user: [usr]." : ""]") + uses += adjust_by + return TRUE diff --git a/monkestation/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm b/monkestation/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm index c0da0a38941d..10685cd7c179 100644 --- a/monkestation/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm +++ b/monkestation/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm @@ -6,4 +6,12 @@ ///How many times this rune needs to be invoked to complete var/invokes_needed = GRAND_RUNE_INVOKES_TO_COMPLETE +/obj/effect/grand_rune/add_channel_effect(mob/living/user) + . = ..() + ADD_TRAIT(user, TRAIT_MOVE_FLYING, REF(src)) + +/obj/effect/grand_rune/remove_channel_effect(mob/living/user) + . = ..() + REMOVE_TRAIT(user, TRAIT_MOVE_FLYING, REF(src)) + #undef GRAND_RUNE_INVOKES_TO_COMPLETE diff --git a/monkestation/code/modules/art_sci_overrides/activators/_base.dm b/monkestation/code/modules/art_sci_overrides/activators/_base.dm index 57c25345fc73..34f1ecd81594 100644 --- a/monkestation/code/modules/art_sci_overrides/activators/_base.dm +++ b/monkestation/code/modules/art_sci_overrides/activators/_base.dm @@ -5,12 +5,16 @@ var/required_stimuli = NONE /// our baseline amount needed to even think about triggering (do this in setup otherwise its gonna be static) var/base_trigger_amount = 0 - ///the highest number our trigger can be + ///the highest number our trigger can be var/highest_trigger_amount = 0 ///the end goal of the amount we need set by setup below var/amount = 0 ///the hint we want to pass into the componenet for when we hit hint triggers - var/list/hint_texts = list("emits a faint noise..") + var/list/hint_texts = list("Emits a faint noise..") + ///what it says on inspect when discovered + var/discovered_text = "Activated by ... coderbus" + ///Research value when discovered + var/research_value = 0 /datum/artifact_activator/proc/setup(potency) amount = round(max(base_trigger_amount, base_trigger_amount + (highest_trigger_amount - base_trigger_amount) * (potency/100))) diff --git a/monkestation/code/modules/art_sci_overrides/activators/range.dm b/monkestation/code/modules/art_sci_overrides/activators/range.dm index dd946af80fbe..11a8c7237d48 100644 --- a/monkestation/code/modules/art_sci_overrides/activators/range.dm +++ b/monkestation/code/modules/art_sci_overrides/activators/range.dm @@ -3,7 +3,7 @@ /datum/artifact_activator/range name = "Generic Range Trigger" - //the upper range of the weapon basically between amount, and upper_range + var/upper_range = 0 ///Hint range goes like amount - hint_range to upper_range + hint_range var/hint_range = 0 @@ -12,40 +12,46 @@ /datum/artifact_activator/range/setup(potency) . = ..() - upper_range = amount + (hint_range * 2) /datum/artifact_activator/range/force name = "Physical Trauma" required_stimuli = STIMULUS_FORCE - highest_trigger_amount = 30 //any higher than this and its gonna be practically impossible to trigger + highest_trigger_amount = 10 //*meaty thwack* *both chuckle* hint_prob = 50 - hint_range = 10 - hint_texts = list("you almost want to start hitting things.", "a good whack might fix this.") + hint_range = 5 + hint_texts = list("You almost want to start hitting things.", "A good whack might fix this.") + discovered_text = "Activated by Kinetic Energy" + +/datum/artifact_activator/range/force/New() + base_trigger_amount = rand(2,highest_trigger_amount) /datum/artifact_activator/range/heat name = "Heat Sensisty" required_stimuli = STIMULUS_HEAT hint_range = 20 - highest_trigger_amount = 15000 - hint_texts = list("it feels like someone messed with the thermostat.", "it feels unpleasent being near") + highest_trigger_amount = 750 + hint_texts = list("It feels like someone messed with the thermostat.", "It feels unpleasent being near") + discovered_text = "Activated by Thermal Energy" /datum/artifact_activator/range/heat/New() - base_trigger_amount = rand(350, 1000) + base_trigger_amount = rand(350, highest_trigger_amount) /datum/artifact_activator/range/shock name = "Electrical Charged" required_stimuli = STIMULUS_SHOCK - highest_trigger_amount = 10000 // requires atleast t2 parts to trigger a max roll one + highest_trigger_amount = 1200 hint_range = 500 - hint_texts = list("you can feel the static in the air", "your hairs stand on their ends") + hint_texts = list("You can feel the static in the air", "Your hairs stand on their ends") + discovered_text = "Activated by Electrical Energy" /datum/artifact_activator/range/shock/New() - base_trigger_amount = rand(400, 1200) + base_trigger_amount = rand(400, highest_trigger_amount) /datum/artifact_activator/range/radiation name = "Radioactivity" required_stimuli = STIMULUS_RADIATION - highest_trigger_amount = 10 + highest_trigger_amount = 5 hint_range = 2 base_trigger_amount = 1 //x-ray machine goes from 1-10 - hint_texts = list("emits a hum that resembles the Super Matter", "you could swear you saw your bones for a second") + hint_texts = list("Emits a hum that resembles the Super Matter", "You could swear you saw your bones for a second") + discovered_text = "Activated by Radiation" diff --git a/monkestation/code/modules/art_sci_overrides/activators/touch.dm b/monkestation/code/modules/art_sci_overrides/activators/touch.dm index 4cdee177fd24..7d365b6f94b8 100644 --- a/monkestation/code/modules/art_sci_overrides/activators/touch.dm +++ b/monkestation/code/modules/art_sci_overrides/activators/touch.dm @@ -8,13 +8,16 @@ name = "Data" required_stimuli = STIMULUS_DATA hint_texts = list("It yearns for information") + discovered_text = "Activated by Information" /datum/artifact_activator/touch/carbon name = "Carbon Touch" required_stimuli = STIMULUS_CARBON_TOUCH hint_texts = list("You swear you hear the artifact saying it yearns for flesh.", "One touch couldn't hurt could it?") + discovered_text = "Activated by Organic Contact" /datum/artifact_activator/touch/silicon name = "Silicon Touch" required_stimuli = STIMULUS_SILICON_TOUCH hint_texts = list("It feels like it's malfunctioning") + discovered_text = "Activated by Silicon Contact" diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/_base_component.dm b/monkestation/code/modules/art_sci_overrides/artifact_components/_base_component.dm index 1e0520de7d1d..5a8af396b0c3 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/_base_component.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_components/_base_component.dm @@ -1,13 +1,11 @@ #define BASE_MAX_ACTIVATORS 2 +#define BASE_MAX_EFFECTS 2 +#define STIMULI_CD_TIME 5 SECONDS /datum/component/artifact dupe_mode = COMPONENT_DUPE_UNIQUE - ///object related to this datum for spawning - var/obj/associated_object - ///actual specific object for this instance + //The object we are attached to var/obj/holder - ///list weight for picking this artifact datum (0 = never) - var/weight = 0 ///size class for visuals (ARTIFACT_SIZE_TINY,ARTIFACT_SIZE_SMALL,ARTIFACT_SIZE_LARGE) var/artifact_size = ARTIFACT_SIZE_LARGE ///type name for displaying on analysis forms @@ -21,7 +19,7 @@ ///activators that activate the artifact var/list/datum/artifact_activator/activators = list() var/max_activators = BASE_MAX_ACTIVATORS - ///Valid activators to pick + ///Valid activators to pick,mostly legacy code. var/list/valid_activators = list( /datum/artifact_activator/touch/carbon, /datum/artifact_activator/touch/silicon, @@ -32,71 +30,82 @@ /datum/artifact_activator/range/shock, /datum/artifact_activator/range/radiation, ) - ///valid list of faults with their weights [10 is base] - var/list/valid_faults = list( - /datum/artifact_fault/ignite = 10, - /datum/artifact_fault/warp = 10, - /datum/artifact_fault/reagent/poison = 10, - /datum/artifact_fault/death = 2, - /datum/artifact_fault/tesla_zap = 5, - /datum/artifact_fault/shrink = 10, - /datum/artifact_fault/explosion = 2, - ) - ///origin datum + ///this artifacts origin var/datum/artifact_origin/artifact_origin - ///origin datums to pick + ///Just any effect that is real and can be added to an artifact. Mostly legacy var/list/valid_origins = list( /datum/artifact_origin/narsie, /datum/artifact_origin/wizard, /datum/artifact_origin/silicon, /datum/artifact_origin/precursor, - /datum/artifact_origin/martian, + /datum/artifact_origin/martian ) var/activation_message var/activation_sound var/deactivation_message var/deactivation_sound - var/hint_text = "emits a faint noise.." - var/examine_hint var/mutable_appearance/act_effect - /// Potency in percentage, used for making more strong artifacts need more stimulus. (1% - 100%) 100 is strongest. - var/potency = 1 + ///Have we been xray scanned at least once? + var/researched = FALSE - ///structure description from x-ray machines - var/xray_result = "NONE" ///we store our analysis form var here var/obj/item/sticker/analysis_form/analysis var/mutable_appearance/extra_effect - ///the fault we picked from the listed ones + ///the fault we picked from the listed ones. Can be null! var/datum/artifact_fault/chosen_fault - ///the amount of freebies we get + ///the amount of times an artifact WONT do something bad, even though it should have var/freebies = 3 ///if we have a special examine IE borgers var/explict_examine + ///Fault = weight + var/static/list/datum/artifact_fault/fault_weight_list + + ///The activators we have discovered. + var/list/datum/artifact_activator/discovered_activators = list() + ///Have we discovered what the bad is? + var/fault_discovered = FALSE + ///A list of effects the artifact has + var/list/datum/artifact_effect/artifact_effects = list() + ///A list of effects that have been discovered + var/list/datum/artifact_effect/discovered_effects = list() + + COOLDOWN_DECLARE(reactivate_cooldown) -/datum/component/artifact/Initialize(forced_origin = null) - . = ..() +/datum/component/artifact/Initialize(forced_origin,forced_effect,forced_size) if(!isobj(parent)) return COMPONENT_INCOMPATIBLE holder = parent GLOB.running_artifact_list[holder] = src + if(forced_size != null) + artifact_size = forced_size + + if(!length(fault_weight_list)) + var/list/datum/artifact_fault/valid_faults_pre = typecacheof(/datum/artifact_fault,ignore_root_path = TRUE) + var/list/datum/artifact_fault/valid_faults = list() + for(var/datum/artifact_fault/fault as anything in valid_faults_pre) + valid_faults += fault + valid_faults[fault] = fault.weight + fault_weight_list = valid_faults if(forced_origin) valid_origins = list(forced_origin) - var/picked_origin = pick(valid_origins) + var/datum/artifact_origin/picked_origin = pick(valid_origins) artifact_origin = new picked_origin fake_name = "[pick(artifact_origin.name_vars["adjectives"])] [pick(isitem(holder) ? artifact_origin.name_vars["small-nouns"] : artifact_origin.name_vars["large-nouns"])]" - var/picked_fault = pick_weight(valid_faults) - chosen_fault = new picked_fault + if(prob(95)) + var/picked_fault = pick_weight(fault_weight_list) + chosen_fault = new picked_fault + chosen_fault.our_artifact = src + chosen_fault.on_added(src) generated_name = artifact_origin.generate_name() if(!generated_name) generated_name = "[pick(artifact_origin.name_vars["adjectives"])] [pick(isitem(holder) ? artifact_origin.name_vars["small-nouns"] : artifact_origin.name_vars["large-nouns"])]" holder.name = fake_name - holder.desc = "You have absolutely no clue what this thing is or how it got here." + holder.desc = "Some sort of artifact from a time long past." var/dat_icon switch(artifact_size) @@ -124,20 +133,44 @@ activation_sound = pick(artifact_origin.activation_sounds) if(LAZYLEN(artifact_origin.deactivation_sounds)) deactivation_sound = pick(artifact_origin.deactivation_sounds) - + setup() var/activator_amount = rand(1,max_activators) - while(activator_amount>0) + for(var/i in 1 to activator_amount) var/selection = pick(valid_activators) valid_activators -= selection - activators += new selection() - activator_amount-- - - ADD_TRAIT(holder, TRAIT_HIDDEN_EXPORT_VALUE, INNATE_TRAIT) - setup() - potency = clamp(potency, 0, 100) - for(var/datum/artifact_activator/activator in activators) + var/datum/artifact_activator/activator = new selection() + activators += activator + var/potency = rand(0,100) activator.setup(potency) - hint_text = activator.grab_hint() + if(forced_effect) + var/datum/artifact_effect/added_boogaloo = new forced_effect + artifact_effects += added_boogaloo + added_boogaloo.our_artifact = src + added_boogaloo.setup() + if(!length(GLOB.artifact_effect_rarity["all"])) + build_weighted_rarities() + var/list/datum/artifact_effect/dont_touch = GLOB.artifact_effect_rarity["all"] //Dont touch because below. + var/list/datum/artifact_effect/all_possible_effects = dont_touch.Copy() //If you touch it, it actually edits the list, we need a copy. We cant call copy directly because its not a static type list. + var/effects_amount = rand(1,BASE_MAX_EFFECTS) + + while(effects_amount > 0) + if(effects_amount <= 0) + logger.Log(LOG_CATEGORY_ARTIFACT, "[src] has ran out of possible artifact effects! It may not have any at all!") + break + var/datum/artifact_effect/effect = pick_weight(all_possible_effects) + all_possible_effects -= effect + if(try_add_effect(effect)) + effects_amount-- + +/datum/component/artifact/Destroy(force) + QDEL_NULL(artifact_origin) + QDEL_NULL(analysis) + QDEL_NULL(chosen_fault) + QDEL_LIST(activators) + QDEL_LIST(artifact_effects) + discovered_activators.Cut() + discovered_effects.Cut() + return ..() /datum/component/artifact/RegisterWithParent() RegisterSignals(parent, list(COMSIG_ATOM_DESTRUCTION, COMSIG_QDELETING), PROC_REF(on_destroy)) @@ -168,10 +201,122 @@ COMSIG_ATOM_NO_LONGER_PULLED, COMSIG_ATOM_PULLED, )) +///This just clears all the effects,activators,and faults of the artifact, so we can add new ones with a proc. +/datum/component/artifact/proc/clear_out() + QDEL_LIST(activators) + QDEL_NULL(chosen_fault) + QDEL_LIST(artifact_effects) + fault_discovered = FALSE + discovered_effects = list() + return +///Adds an activator, returns TRUE/FALSE based on success. +/datum/component/artifact/proc/add_activator(datum/artifact_activator/new_activator,forced_potency = 0) + if(!new_activator) + return FALSE + if(length(activators) >= BASE_MAX_ACTIVATORS) + return FALSE + var/datum/artifact_activator/created + if(ispath(new_activator)) + created = new new_activator() + else + created = new new_activator.type + activators += created + if(forced_potency > 0 ) + created.setup(forced_potency) + else + created.setup(rand(1,100)) + return TRUE +///changes the fault of the artifact, returns TRUE/FALSE based on success. +/datum/component/artifact/proc/change_fault(datum/artifact_fault/new_fault) + if(new_fault) + return force_replace_fault(new_fault.type) + else + qdel(chosen_fault) + chosen_fault = new new_fault + return TRUE + +/* +* Long function, but basically: +* For given effect: +* If it has valid types, check to make sure its of the right type path. So you cant roll something that requires a structure on an item. +* If it has valid origins, and the artifact isnt that origin, return FALSE. +* If it has valid activators, and the artifact has none of them, return FALSE. +* If it has a valid size, and the artifact isnt that size, return FALSE. +* Then, if all is well, slam it on the artifact, call setup() on the effect, return TRUE +*/ +/datum/component/artifact/proc/try_add_effect(datum/artifact_effect/effect) + var/datum/artifact_effect/added + if(ispath(effect)) + added = new effect //We need it now, becasue for some reason we cant read the lists from just the raw datum. + else + added = new effect.type //Skip the checks, just add it. + artifact_effects += added + added.our_artifact = src + added.setup() + return TRUE + if(length(added.valid_type_paths)) + var/bad_path = FALSE + for(var/path in added.valid_type_paths) + if(!istype(holder,path)) + bad_path = TRUE + break + if(bad_path) + QDEL_NULL(added) + return FALSE + if(length(added.valid_origins)) + if(!(artifact_origin.type_name in added.valid_origins)) + QDEL_NULL(added) + return FALSE + if(length(added.valid_activators)) + var/good_activators = FALSE + for(var/datum/artifact_activator/activator as anything in activators) //Only need one to be correct. + if(activator.type in added.valid_activators) + good_activators = TRUE + break + if(!good_activators) + QDEL_NULL(added) + return FALSE + if(added.artifact_size) + if(artifact_size != added.artifact_size) + QDEL_NULL(added) + return FALSE + artifact_effects += added + added.our_artifact = src + added.setup() + return TRUE +///Kinda a legacy proc, but if you need something super special I guess. /datum/component/artifact/proc/setup() return +///Replaces the fault on the artifact with a new one. +/datum/component/artifact/proc/force_replace_fault(new_fault) + if(new_fault) + qdel(chosen_fault) + if(ispath(new_fault)) + chosen_fault = new new_fault + chosen_fault.our_artifact = src + chosen_fault.on_added(src) + else + chosen_fault = new_fault + chosen_fault.our_artifact = src + chosen_fault.on_added(src) + return TRUE + return FALSE + +///Adds a new artifact effect to the artifact. Ignores all normal checks. Admin Proc. Not called. +/datum/component/artifact/proc/force_add_effect(new_effect_path,effect_power = null) + if(new_effect_path && ispath(new_effect_path,/datum/artifact_effect)) + var/datum/artifact_effect/added_boogaloo = new new_effect_path + artifact_effects += added_boogaloo + added_boogaloo.our_artifact = src + if(effect_power) + added_boogaloo.potency = effect_power + added_boogaloo.setup() + return TRUE + return FALSE + +///Activates the artifact. /datum/component/artifact/proc/artifact_activate(silent) if(active) //dont activate activated objects return FALSE @@ -183,10 +328,12 @@ active = TRUE holder.add_overlay(act_effect) logger.Log(LOG_CATEGORY_ARTIFACT, "[parent] has been activated") - effect_activate(silent) + for(var/datum/artifact_effect/effect in artifact_effects) + effect.effect_activate(silent) return TRUE -/datum/component/artifact/proc/artifact_deactivate(silent) +///The opposite of activates the artifact +/datum/component/artifact/proc/artifact_deactivate(silent = FALSE) if(!active) return if(deactivation_sound && !silent) @@ -196,14 +343,22 @@ active = FALSE holder.cut_overlay(act_effect) logger.Log(LOG_CATEGORY_ARTIFACT, "[parent] has been deactivated") - effect_deactivate(silent) + for(var/datum/artifact_effect/effect in artifact_effects) + effect.effect_deactivate(silent) +/datum/component/artifact/effect_touched(mob/living/user) + for(var/datum/artifact_effect/effect in artifact_effects) + effect.effect_touched(user) + return + +///Called when the artifact gets something that may activate it. Skips re-activation of artifacts, but passes their triggers to faults. /datum/component/artifact/proc/process_stimuli(stimuli, stimuli_value, triggers_faults = TRUE) - if(!stimuli || active) // if called without a stimuli dont bother, if active we dont wanna reactivate + if(!stimuli) return var/checked_fault = FALSE + var/correct_trigger = FALSE for(var/datum/artifact_activator/listed_activator in activators) - if(!(listed_activator.required_stimuli & stimuli)) + if(!(listed_activator.required_stimuli & stimuli) && chosen_fault) if(!triggers_faults) continue if(freebies >= 1) @@ -219,17 +374,16 @@ holder.visible_message("[holder] [chosen_fault.visible_message]") continue checked_fault = TRUE - if(istype(listed_activator, /datum/artifact_activator/range)) - var/datum/artifact_activator/range/ranged_activator = listed_activator - //if we fail the range check check if we are in hint range to send out the hint - if(!ISINRANGE(stimuli_value, ranged_activator.amount, ranged_activator.upper_range)) - if(hint_text && !ISINRANGE(stimuli_value, ranged_activator.amount - ranged_activator.hint_range, ranged_activator.upper_range + ranged_activator.hint_range)) - continue - if(!prob(ranged_activator.hint_prob)) - continue - holder.visible_message(span_notice("[hint_text]")) + if((listed_activator.required_stimuli & stimuli) && istype(listed_activator, /datum/artifact_activator/range)) + if(stimuli_value < listed_activator.amount) continue + correct_trigger = TRUE + break + if(active || !correct_trigger) + return + if(COOLDOWN_FINISHED(src,reactivate_cooldown)) artifact_activate() + COOLDOWN_START(src,reactivate_cooldown,STIMULI_CD_TIME) /datum/component/artifact/proc/stimulate_from_turf_heat(turf/target) if(!QDELETED(target)) @@ -239,3 +393,5 @@ process_stimuli(STIMULUS_RADIATION, intensity) #undef BASE_MAX_ACTIVATORS +#undef BASE_MAX_EFFECTS +#undef STIMULI_CD_TIME diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/_base_component_signal_procs.dm b/monkestation/code/modules/art_sci_overrides/artifact_components/_base_component_signal_procs.dm index 03874852ae2a..9b89fd631f0f 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/_base_component_signal_procs.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_components/_base_component_signal_procs.dm @@ -4,15 +4,29 @@ if(!QDELETED(holder)) holder.loc.visible_message(span_warning("[holder] [artifact_origin.destroy_message]")) artifact_deactivate(TRUE) + for(var/datum/artifact_effect/effect in artifact_effects) + effect.on_destroy(source) if(!QDELETED(holder)) qdel(holder) /datum/component/artifact/proc/on_examine(atom/source, mob/user, list/examine_list) SIGNAL_HANDLER - if(examine_hint) - examine_list += examine_hint if(explict_examine) examine_list += explict_examine + for(var/datum/artifact_effect/effect in artifact_effects) + if(discovered_effects.Find(effect.type) && effect.examine_discovered) + examine_list += span_info(effect.examine_discovered) + else if (effect.examine_hint) + examine_list += span_info(effect.examine_hint) + + for(var/datum/artifact_activator/act in activators) + if(discovered_activators.Find(act.type) && act.discovered_text) + examine_list += span_info(act.discovered_text) + else if(length(act.hint_texts)) + examine_list += span_info(pick(act.hint_texts)) + + if(chosen_fault && chosen_fault.inspect_warning) + examine_list += span_warning(pick(chosen_fault.inspect_warning)) /datum/component/artifact/proc/on_sticker(atom/source, obj/item/sticker/sticker, mob/user) SIGNAL_HANDLER @@ -75,7 +89,8 @@ logger.Log(LOG_CATEGORY_ARTIFACT, "[user] has touched [parent]") if(active) - effect_touched(user) + for(var/datum/artifact_effect/effect in artifact_effects) + effect.effect_touched(user) return if(LAZYLEN(artifact_origin.touch_descriptors)) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), user, span_notice("[pick(artifact_origin.touch_descriptors)]")), 0.5 SECONDS) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/bomb.dm b/monkestation/code/modules/art_sci_overrides/artifact_components/bomb.dm deleted file mode 100644 index 476af7185a04..000000000000 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/bomb.dm +++ /dev/null @@ -1,152 +0,0 @@ -/datum/component/artifact/bomb - examine_hint = span_warning("It is covered in very conspicuous markings.") - valid_activators = list( - /datum/artifact_activator/range/force, - /datum/artifact_activator/range/heat, - /datum/artifact_activator/range/shock, - /datum/artifact_activator/range/radiation - ) - deactivation_message = "sputters a bit, and falls silent once more." - xray_result = "COMPLEX" - var/dud = FALSE - var/dud_message = "sputters, failing to activate! Its a dud!" - var/initial_warning = "begins overloading, rattling violenty!" - var/explode_delay = 1 MINUTES // also delayed by finale_delay for fluff - var/explode_cooldown_time = 1 MINUTES - var/finale_delay = 6 SECONDS //delay before we actually deliver the payload for fluff - var/final_message = "reaches a catastrophic overload, cracks forming at its surface!" - var/sound/active_alarm = 'sound/effects/alert.ogg' // plays every alarm_cooldown_time when active - var/alarm_cooldown_time = 3 SECONDS - var/sound/final_sound = 'sound/misc/bloblarm.ogg' - COOLDOWN_DECLARE(activation_cooldown) - COOLDOWN_DECLARE(alarm_cooldown) - var/timer_id - var/do_alert = FALSE //do we send an announcement on activation - -/datum/component/artifact/bomb/setup() - if(prob(20)) - dud = TRUE - -/datum/component/artifact/bomb/effect_activate() - if(!COOLDOWN_FINISHED(src,explode_cooldown_time)) - holder.visible_message(span_warning("[holder] [deactivation_message]")) //rekt - addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/component/artifact, artifact_deactivate)), 1 SECONDS) - return - holder.visible_message(span_bolddanger("[holder] [initial_warning]")) - COOLDOWN_START(src,activation_cooldown,explode_cooldown_time) - timer_id = addtimer(CALLBACK(src, PROC_REF(finale)), explode_delay, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) - if(do_alert && is_station_level(holder.z)) - priority_announce("A highly unstable object of type [type_name] has been activated at [get_area(holder)]. It has been marked on GPS, The crew is advised to get rid of it IMMEDIATELY.", null, SSstation.announcer.get_rand_report_sound(), has_important_message = TRUE) - holder.AddComponent(/datum/component/gps, "Unstable Object") - -/datum/component/artifact/bomb/effect_deactivate() - deltimer(timer_id) - -/datum/component/artifact/bomb/effect_process() - . = ..() - if(active && COOLDOWN_FINISHED(src,alarm_cooldown) && (COOLDOWN_TIMELEFT(src,alarm_cooldown) <= finale_delay)) - playsound(holder, active_alarm, 30, 1) - holder.Shake(duration = 1 SECONDS, shake_interval = 0.08 SECONDS) - COOLDOWN_START(src,alarm_cooldown, alarm_cooldown_time) - -/datum/component/artifact/bomb/proc/finale() - if(final_sound) - playsound(holder.loc, final_sound, 100, 1, -1) - if(finale_delay) - holder.visible_message(span_bolddanger("[holder] [final_message]")) - addtimer(CALLBACK(src, PROC_REF(payload)), finale_delay) - else - payload() - -/datum/component/artifact/bomb/on_destroy(/datum/source) - . = ..() - if(active) - payload() - deltimer(timer_id) - -/datum/component/artifact/bomb/proc/payload() - . = TRUE - if(dud || !active) - holder.visible_message(span_notice("[holder] [dud_message]")) - artifact_deactivate(TRUE) - return FALSE - -/// EXPLOSIVE BOMB - -/datum/component/artifact/bomb/explosive - associated_object = /obj/structure/artifact/bomb - type_name = "Bomb (explosive)" - weight = ARTIFACT_RARE - var/devast - var/heavy - var/light - -/datum/component/artifact/bomb/explosive/New() - . = ..() - devast = rand(1,3) - heavy = rand(2,4) - light = rand(3,10) - potency = (light + heavy + devast) * 2 - -/datum/component/artifact/bomb/explosive/payload() - if(!..()) - return FALSE - explosion(holder, devast,heavy,light,light*1.5) - on_destroy() - -/// DEVESTATING BOMB - -/datum/component/artifact/bomb/explosive/devastating - associated_object = /obj/structure/artifact/bomb/devastating - type_name = "Bomb (explosive, devastating)" - do_alert = TRUE - weight = ARTIFACT_VERYRARE - xray_result = "DENSE" - explode_delay = 2 MINUTES - -/datum/component/artifact/bomb/explosive/devastating/New() - ..() - devast = rand(3,7) - heavy = rand(7,12) - light = rand(10,25) - potency = (devast + heavy + light) * 2.25 // get real - -/// GAS BOMB - -/datum/component/artifact/bomb/gas - associated_object = /obj/structure/artifact/bomb/gas - type_name = "Bomb (gas)" - weight = ARTIFACT_RARE - xray_result = "POROUS" - initial_warning = "begins rattling violenty!" - final_message = "reaches a critical pressure, cracks forming at its surface!" - var/datum/gas/payload_gas - var/list/weighted_gas = list( - /datum/gas/plasma = 5, - /datum/gas/carbon_dioxide = 10, - /datum/gas/nitrous_oxide = 10, - /datum/gas/tritium = 5, - /datum/gas/hydrogen = 5, - /datum/gas/zauker = 2, - ) - -/datum/component/artifact/bomb/gas/setup() - . = ..() - payload_gas = pick_weight(weighted_gas) - -/datum/component/artifact/bomb/gas/payload() - if(!..()) - artifact_deactivate() - return FALSE - var/turf/open/O = get_turf(holder) - if(!isopenturf(O)) - artifact_deactivate() - return FALSE - var/datum/gas_mixture/merger = new - merger.assert_gas(payload_gas) - merger.assert_gas(/datum/gas/oxygen) - merger.gases[payload_gas][MOLES] = rand(150,2000) - merger.gases[/datum/gas/oxygen][MOLES] = 350 - merger.temperature = rand(200,3000) - O.assume_air(merger) - qdel(holder) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/bonk.dm b/monkestation/code/modules/art_sci_overrides/artifact_components/bonk.dm deleted file mode 100644 index 39b6136e894d..000000000000 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/bonk.dm +++ /dev/null @@ -1,38 +0,0 @@ -/datum/component/artifact/bonk - associated_object = /obj/structure/artifact/bonk - weight = ARTIFACT_UNCOMMON - type_name = "Slammer" - activation_message = "opens up!" - deactivation_message = "closes up." - valid_activators = list( - /datum/artifact_activator/touch/carbon, - /datum/artifact_activator/touch/silicon - ) - ///force of the hit - var/hit_power = 1 - COOLDOWN_DECLARE(bonk_cooldown) - -/datum/component/artifact/bonk/setup() - hit_power = rand(0,35) - potency += hit_power - -/datum/component/artifact/bonk/effect_touched(mob/living/user) - if(!COOLDOWN_FINISHED(src, bonk_cooldown)) - return - - if(iscarbon(user)) - var/mob/living/carbon/carbon = user - if(!carbon.get_bodypart(BODY_ZONE_HEAD)) - holder.say("My condolences to your missing head.") //they can speak uhh galactic common because alien tech idk - holder.visible_message(span_notice("[holder] shakes [user][p_s()] hands with an apparatus.")) - playsound(get_turf(holder), 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) - artifact_deactivate() - return - else - carbon.apply_damage(hit_power, BRUTE, BODY_ZONE_HEAD, carbon.run_armor_check(BODY_ZONE_HEAD, MELEE)) - holder.visible_message(span_danger("[holder] hits [carbon] over the head!")) - else - holder.visible_message(span_danger("[holder] slams [user]!")) - user.adjustBruteLoss(hit_power) - playsound(get_turf(holder), 'sound/misc/bonk.ogg', 80, FALSE) - COOLDOWN_START(src, bonk_cooldown, 1.5 SECONDS) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/cell.dm b/monkestation/code/modules/art_sci_overrides/artifact_components/cell.dm deleted file mode 100644 index 2c3ee53a1886..000000000000 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/cell.dm +++ /dev/null @@ -1,37 +0,0 @@ -/datum/component/artifact/cell - associated_object = /obj/item/stock_parts/cell/artifact - artifact_size = ARTIFACT_SIZE_TINY - type_name = "Power Cell" - weight = ARTIFACT_UNCOMMON - xray_result = "SEGMENTED" - valid_activators = list( - /datum/artifact_activator/range/heat, - /datum/artifact_activator/range/shock, - /datum/artifact_activator/range/radiation - ) - valid_faults = list( - /datum/artifact_fault/ignite = 10, - /datum/artifact_fault/warp = 10, - /datum/artifact_fault/reagent/poison = 10, - /datum/artifact_fault/death = 2, - /datum/artifact_fault/tesla_zap = 5, - /datum/artifact_fault/grow = 10, - /datum/artifact_fault/explosion = 2, - ) - -/datum/component/artifact/cell/setup() - var/obj/item/stock_parts/cell/artifact/cell = holder - cell.corrupted = prob(10) //trolled - cell.maxcharge = rand(5 KW, 500 MW) // the heavenly battery - cell.charge = cell.maxcharge / 2 - cell.chargerate = rand(5000, round(cell.maxcharge * 0.4)) - potency += cell.maxcharge / 900 - potency += cell.chargerate / 4000 - -/datum/component/artifact/cell/effect_activate() - var/obj/item/stock_parts/cell/artifact/cell = holder - cell.ratingdesc = TRUE - -/datum/component/artifact/cell/effect_deactivate() - var/obj/item/stock_parts/cell/artifact/cell = holder - cell.ratingdesc = FALSE diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/ghost_object.dm b/monkestation/code/modules/art_sci_overrides/artifact_components/ghost_object.dm new file mode 100644 index 000000000000..38c66f0e7863 --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_components/ghost_object.dm @@ -0,0 +1,118 @@ +///This is straight up an object version of the spirit plade one +/datum/component/ghost_object_control + var/attempting_awakening = FALSE + ///mob contained in the item,null untill controlled! + var/mob/living/basic/shade/bound_spirit + ///do we make a callback to retry untill someone posesses it? + var/repolling= FALSE + ///How often can this thing move in seconds + var/speed= 1.25 + COOLDOWN_DECLARE(move_cooldown) +/datum/component/ghost_object_control/Initialize(repoll = FALSE,move_speed = null) + if(!ismovable(parent)) //you may apply this to mobs, I take no responsibility for how that works out + return COMPONENT_INCOMPATIBLE + if(move_speed) + speed = move_speed + +/datum/component/ghost_object_control/Destroy(force, silent) + . = ..() + if(bound_spirit) + QDEL_NULL(bound_spirit) + +/datum/component/ghost_object_control/RegisterWithParent() + RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(parent, COMSIG_QDELETING, PROC_REF(on_destroy)) + RegisterSignal(parent, COMSIG_ATOM_RELAYMOVE, TYPE_PROC_REF(/datum/component/ghost_object_control,move_host)) + //RegisterSignal(parent, COMSIG_RIDDEN_DRIVER_MOVE, TYPE_PROC_REF(/datum/component/ghost_object_control,move_host)) + +/datum/component/ghost_object_control/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_ATOM_EXAMINE, COMSIG_QDELETING, COMSIG_ATOM_RELAYMOVE)) + +///Moves the object. Yippee! +/datum/component/ghost_object_control/proc/move_host(atom/movable/movable_parent,mob/buckled_mob,dir_to_move) + SIGNAL_HANDLER + + if(!COOLDOWN_FINISHED(src, move_cooldown)) + return COMSIG_BLOCK_RELAYMOVE + var/turf/next = get_step(movable_parent, dir_to_move) + var/turf/current = get_turf(movable_parent) + if(!istype(next) || !istype(current)) + return COMSIG_BLOCK_RELAYMOVE + if(next.density) + return COMSIG_BLOCK_RELAYMOVE + if(!isturf(movable_parent.loc)) + return COMSIG_BLOCK_RELAYMOVE + + step(movable_parent, dir_to_move) + var/last_move_diagonal = ((dir_to_move & (dir_to_move - 1)) && (movable_parent.loc == next)) + COOLDOWN_START(src, move_cooldown, ((last_move_diagonal ? 2 : 1) * speed) SECOND) + + if(QDELETED(src)) + return COMSIG_BLOCK_RELAYMOVE + return TRUE + +///signal fired on examining the parent +/datum/component/ghost_object_control/proc/on_examine(datum/source, mob/user, list/examine_list) + SIGNAL_HANDLER + if(!bound_spirit) + return + examine_list += span_notice("[parent] is moving somehow?") + +///Call to poll for ghost role +/datum/component/ghost_object_control/proc/request_control(movement_speed) + if(attempting_awakening) + return + if(!(GLOB.ghost_role_flags & GHOSTROLE_STATION_SENTIENCE)) + return + + attempting_awakening = TRUE + + var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates( + "Do you want to play as [parent]?", + check_jobban = ROLE_SENTIENCE, + poll_time = 10 SECONDS, + ignore_category = POLL_IGNORE_SENTIENCE_POTION, + alert_pic = parent, + role_name_text = "[parent]", + ) + if(!LAZYLEN(candidates)) + if(repolling) + addtimer(CALLBACK(src,PROC_REF(request_control),2.5 MINUTE)) + attempting_awakening = FALSE + return + + var/mob/dead/observer/chosen_spirit = pick(candidates) + bound_spirit = new(parent) + bound_spirit.ckey = chosen_spirit.ckey + bound_spirit.fully_replace_character_name(null, "[parent]") + bound_spirit.status_flags |= GODMODE + bound_spirit.grant_all_languages(FALSE, FALSE, TRUE) //Grants omnitongue + bound_spirit.update_atom_languages() + speed = movement_speed + + //Add new signals for parent and stop attempting to awaken + + // Now that all of the important things are in place for our spirit, it's time for them to choose their name. + var/valid_input_name = custom_name(bound_spirit) + if(valid_input_name) + bound_spirit.fully_replace_character_name(null, "[valid_input_name]") + + attempting_awakening = FALSE + +/** + * custom_name : Simply sends a tgui input text box to the blade asking what name they want to be called, and retries it if the input is invalid. + * + * Arguments: + * * awakener: user who interacted with the blade + */ +/datum/component/ghost_object_control/proc/custom_name(mob/subject) + var/chosen_name = sanitize_name(tgui_input_text(bound_spirit, "What are you named?", "Spectral Nomenclature", max_length = MAX_NAME_LEN)) + if(!chosen_name) // with the way that sanitize_name works, it'll actually send the error message to the awakener as well. + return custom_name(subject) //YOU WILL PICK A NAME. + return chosen_name + +///signal fired from parent being destroyed +/datum/component/ghost_object_control/proc/on_destroy(datum/source) + SIGNAL_HANDLER + to_chat(bound_spirit, span_userdanger("You were destroyed!")) + QDEL_NULL(bound_spirit) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/lamp.dm b/monkestation/code/modules/art_sci_overrides/artifact_components/lamp.dm deleted file mode 100644 index c62124f20c62..000000000000 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/lamp.dm +++ /dev/null @@ -1,34 +0,0 @@ - -/datum/component/artifact/lamp - associated_object = /obj/structure/artifact/lamp - weight = ARTIFACT_COMMON - type_name = "Lamp" - activation_message = "starts shining!" - deactivation_message = "stops shining." - -/datum/component/artifact/lamp/setup() - var/power - var/color = pick(COLOR_RED, COLOR_BLUE, COLOR_YELLOW, COLOR_GREEN, COLOR_PURPLE, COLOR_ORANGE) - var/range - switch(rand(1,100)) - if(1 to 75) - power = rand(2,5) - range = rand(2,5) - if(76 to 100) - range = rand(4,10) - power = rand(2,10) // the sun - - if(artifact_origin.type_name == ORIGIN_NARSIE && prob(40)) - color = COLOR_BLACK - holder.set_light_range_power_color(range, power, color) - potency += (range + power) * 2 - -/datum/component/artifact/lamp/effect_touched(mob/user) - holder.set_light_on(!holder.light_on) //toggle - to_chat(user, span_hear("[holder] clicks.")) - -/datum/component/artifact/lamp/effect_activate() - holder.set_light_on(TRUE) - -/datum/component/artifact/lamp/effect_deactivate() - holder.set_light_on(FALSE) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/repulsor.dm b/monkestation/code/modules/art_sci_overrides/artifact_components/repulsor.dm deleted file mode 100644 index 412b52123822..000000000000 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/repulsor.dm +++ /dev/null @@ -1,59 +0,0 @@ - -/datum/component/artifact/repulsor - associated_object = /obj/structure/artifact/repulsor - weight = ARTIFACT_COMMON - type_name = "Repulsor/Impulsor" - activation_message = "opens up, a weird aura starts emitting from it!" - deactivation_message = "closes up." - xray_result = "SEGMENTED" - var/attract = FALSE //if FALSE, repulse, otherwise, attract - var/strength - var/range - var/cooldown_time - COOLDOWN_DECLARE(cooldown) - -/datum/component/artifact/repulsor/setup() - attract = prob(40) - range = rand(1,3) - cooldown_time = rand(3,5) SECONDS - strength = rand(MOVE_FORCE_DEFAULT,MOVE_FORCE_OVERPOWERING) - potency += cooldown_time / 4 + strength / 3000 - addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/component/artifact, artifact_deactivate)), round(20 * (potency * 10) SECONDS)) - -/datum/component/artifact/repulsor/effect_touched(mob/user) - if(!COOLDOWN_FINISHED(src,cooldown)) - return - pulse() - COOLDOWN_START(src,cooldown,cooldown_time) - -/datum/component/artifact/repulsor/effect_process() - . = ..() - if(prob(100 - potency)) - return - pulse() - -/datum/component/artifact/repulsor/RegisterWithParent() - . = ..() - RegisterSignal(parent, COMSIG_ATOM_HITBY, PROC_REF(pulse)) - -/datum/component/artifact/repulsor/UnregisterFromParent() - . = ..() - UnregisterSignal(parent, COMSIG_ATOM_HITBY) - -/datum/component/artifact/repulsor/proc/pulse(datum/source,atom/movable/thrown, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) - SIGNAL_HANDLER - if(!active) - return - holder.visible_message(span_warning("[holder] emits a pulse of energy, throwing things [attract ? "towards it!" : "away from it!"]")) - var/owner_turf = get_turf(holder) - if(isnull(thrown)) - for(var/atom/movable/throwee in oview(range,holder)) - if(throwee.anchored) - continue - if(attract) - throwee.safe_throw_at(holder, strength / 3000, 1, force = strength) - else - var/throwtarget = get_edge_target_turf(get_turf(throwee), get_dir(owner_turf, get_step_away(throwee, owner_turf))) - throwee.safe_throw_at(throwtarget, strength / 3000, 1, force = strength) - else if(throwingdatum?.thrower) - thrown.safe_throw_at(throwingdatum.thrower, get_dist(holder, throwingdatum.thrower), 1, force = strength) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/_artifact_effect.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/_artifact_effect.dm new file mode 100644 index 000000000000..b16d05989c82 --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/_artifact_effect.dm @@ -0,0 +1,72 @@ +/datum/artifact_effect + ///string added to artifact desc, if not discovered. + var/examine_hint + ///string added to artifact desc, if the effect has been discovered + var/examine_discovered + ///When you discover this, how many credits does it add to the sell price? + var/discovered_credits = CARGO_CRATE_VALUE*0.75 + ///how likely is it that this effect is added to an artifact? + var/weight = ARTIFACT_COMMON + ///if defined, artifact must be this size to roll + var/artifact_size + ///how strong is this effect,1-100 + var/potency + ///If the artifact doesnt have the right activator, cant be put on. If null, assume any. + var/list/valid_activators + ///If the artifact doesnt have this origin, cant be put on. If null, assume any. + var/list/valid_origins + ///sent on activation + var/activation_message + ///played on activation + var/activation_sound + ///sent on deactivation + var/deactivation_message + ///played on deactivation + var/deactivation_sound + ///list of paths the artifacts holder is allowed to be, if null, may be on any artifact datum holder. + var/list/valid_type_paths + ///Does this show up on the artifact fourm? + var/super_secret = FALSE + + ///Research value when discovered For reference,5000 is one node + var/research_value = 100 + ///The artifact we're on. + var/datum/component/artifact/our_artifact + ///Type of effect, shows up in Xray Machine + var/type_name = "Generic Artifact Effect" + +/datum/artifact_effect/New() + . = ..() + potency = rand(1, 100) + +/datum/artifact_effect/Destroy(force) + our_artifact = null + return ..() + +///Called when the artifact has been created +/datum/artifact_effect/proc/setup() + return +///Called when the artifact has been activated +/datum/artifact_effect/proc/effect_activate(silent) + return +///Called when the artifact has been de-activated +/datum/artifact_effect/proc/effect_deactivate(silent) + return +///Called when the artifact has been touched by a living mob,does NOT call faults or activate artifact unless it has the correct touch component! +/datum/artifact_effect/proc/effect_touched(mob/living/user) + return +///Called on process() IF the artifact is active. +/datum/artifact_effect/proc/effect_process() + return +///Called when the artifact/effect is destroyed is destroyed +/datum/artifact_effect/proc/on_destroy(atom/source) + return +///Util, can be called to activate, then de-activate the artifact as a whole swiftly. Wont Re activate already active artifacts. +/datum/artifact_effect/proc/flick_active(silent) + if(!our_artifact.active) + our_artifact.artifact_activate(silent) + our_artifact.artifact_deactivate(silent) + return +///Util, can be called to swap the artifacts active status quickly. +/datum/artifact_effect/proc/toggle_active(silent) + our_artifact.active ? our_artifact.artifact_deactivate(silent) : our_artifact.artifact_activate(silent) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/bomb.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/bomb.dm new file mode 100644 index 000000000000..56ec1504836b --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/bomb.dm @@ -0,0 +1,155 @@ +/datum/artifact_effect/bomb + examine_hint = span_warning("It is covered in very conspicuous markings.") + valid_activators = list( + /datum/artifact_activator/range/force, + /datum/artifact_activator/range/heat, + /datum/artifact_activator/range/shock, + /datum/artifact_activator/range/radiation + ) + research_value = 1000 + + type_name = "Explosive Effect" + examine_discovered = span_warning("It appears to explode.") + + + var/dud = FALSE + var/dud_message = "sputters, failing to activate! Its a dud!" + var/initial_warning = "begins overloading, rattling violenty!" + var/explode_delay = 1 MINUTES // also delayed by finale_delay for fluff + var/explode_cooldown_time = 1 MINUTES + var/finale_delay = 6 SECONDS //delay before we actually deliver the payload for fluff + var/final_message = "reaches a catastrophic overload, cracks forming at its surface!" + var/sound/active_alarm = 'sound/effects/alert.ogg' // plays every alarm_cooldown_time when active + var/alarm_cooldown_time = 3 SECONDS + var/sound/final_sound = 'sound/misc/bloblarm.ogg' + COOLDOWN_DECLARE(activation_cooldown) + COOLDOWN_DECLARE(alarm_cooldown) + var/timer_id + var/do_alert = FALSE //do we send an announcement on activation + +/datum/artifact_effect/bomb/setup() + if(prob(20)) + dud = TRUE + +/datum/artifact_effect/bomb/effect_activate() + if(!our_artifact || !our_artifact.holder) + return + if(!COOLDOWN_FINISHED(src,activation_cooldown)) + our_artifact.holder.visible_message(span_warning("[our_artifact.holder] [deactivation_message]")) //rekt + addtimer(CALLBACK(src.our_artifact, TYPE_PROC_REF(/datum/component/artifact, artifact_deactivate)), 1 SECONDS) + return + our_artifact.holder.visible_message(span_bolddanger("[our_artifact.holder] [initial_warning]")) + COOLDOWN_START(src,activation_cooldown,explode_cooldown_time) + timer_id = addtimer(CALLBACK(src, PROC_REF(finale)), explode_delay, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) + if(do_alert && is_station_level(our_artifact.holder.z)) + priority_announce("A highly unstable object has been activated at [get_area(our_artifact.holder)]. It has been marked on GPS, The crew is advised to get rid of it IMMEDIATELY.", null, SSstation.announcer.get_rand_report_sound(), has_important_message = TRUE) + our_artifact.holder.AddComponent(/datum/component/gps, "Unstable Object") + +/datum/artifact_effect/bomb/effect_deactivate() + deltimer(timer_id) + +/datum/artifact_effect/bomb/effect_process() + . = ..() + if(our_artifact.active && (COOLDOWN_FINISHED(src,alarm_cooldown) || (COOLDOWN_TIMELEFT(src,alarm_cooldown) <= finale_delay))) + playsound(our_artifact, active_alarm, 30, 1) + our_artifact.holder.Shake(duration = 1 SECONDS, shake_interval = 0.08 SECONDS) + COOLDOWN_START(src,alarm_cooldown, alarm_cooldown_time) + +/datum/artifact_effect/bomb/proc/finale() + if(final_sound) + playsound(our_artifact.holder.loc, final_sound, 100, 1, -1) + if(finale_delay) + our_artifact.holder.visible_message(span_bolddanger("[our_artifact.holder] [final_message]")) + addtimer(CALLBACK(src, PROC_REF(payload)), finale_delay) + else + payload() + +/datum/artifact_effect/bomb/on_destroy(datum/source) + . = ..() + if(our_artifact.active && source != src)//Prevents infinite bakoom. + payload() + deltimer(timer_id) + +/datum/artifact_effect/bomb/proc/payload() + . = TRUE + if(dud || !our_artifact.active) + our_artifact.holder.visible_message(span_notice("[our_artifact.holder] [dud_message]")) + our_artifact.artifact_deactivate(TRUE) + return FALSE + +/// EXPLOSIVE BOMB + +/datum/artifact_effect/bomb/explosive + type_name = "Bomb" + weight = ARTIFACT_RARE + var/devast + var/heavy + var/light + examine_discovered = span_danger("It appears to explode in a large radius!") + +/datum/artifact_effect/bomb/explosive/New() + . = ..() + devast = rand(1,3) + heavy = rand(2,4) + light = rand(3,10) + potency = (light + heavy + devast) * 2 + +/datum/artifact_effect/bomb/explosive/payload() + if(!..()) + return FALSE + explosion(our_artifact.holder, devast,heavy,light,light*1.5) + on_destroy(src) + +/// DEVESTATING BOMB + +/datum/artifact_effect/bomb/explosive/devastating + type_name = "Large Bomb" + do_alert = TRUE + weight = ARTIFACT_VERYRARE + explode_delay = 2 MINUTES + +/datum/artifact_effect/bomb/explosive/devastating/New() + ..() + devast = rand(2,4) + heavy = rand(4,6) + light = rand(6,16) + potency = (devast + heavy + light) * 2.25 // get real + +/// GAS BOMB + +/datum/artifact_effect/bomb/gas + type_name = "Atmospheric Bomb" + weight = ARTIFACT_RARE + examine_discovered = span_warning("It appears to explode, leaving gasses in its wake!") + initial_warning = "begins rattling violenty!" + final_message = "reaches a critical pressure, cracks forming at its surface!" + var/datum/gas/payload_gas + var/list/weighted_gas = list( + /datum/gas/plasma = 5, + /datum/gas/carbon_dioxide = 10, + /datum/gas/nitrous_oxide = 10, + /datum/gas/tritium = 5, + /datum/gas/hydrogen = 5, + /datum/gas/zauker = 2, + ) + +/datum/artifact_effect/bomb/gas/setup() + . = ..() + payload_gas = pick_weight(weighted_gas) + +/datum/artifact_effect/bomb/gas/payload() + if(!..()) + our_artifact.artifact_deactivate() + return FALSE + var/turf/open/O = get_turf(our_artifact.holder) + if(!isopenturf(O)) + our_artifact.artifact_deactivate() + return FALSE + var/datum/gas_mixture/merger = new + merger.assert_gas(payload_gas) + merger.assert_gas(/datum/gas/oxygen) + merger.gases[payload_gas][MOLES] = rand(150,2000) + merger.gases[/datum/gas/oxygen][MOLES] = 350 + merger.temperature = rand(200,3000) + O.assume_air(merger) + qdel(our_artifact) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/bonk.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/bonk.dm new file mode 100644 index 000000000000..b2fc28a51026 --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/bonk.dm @@ -0,0 +1,40 @@ +/datum/artifact_effect/bonk + weight = ARTIFACT_UNCOMMON + type_name = "Slammer Effect" + activation_message = "opens up!" + deactivation_message = "closes up." + valid_activators = list( + /datum/artifact_activator/touch/carbon, + /datum/artifact_activator/touch/silicon + ) + ///force of the hit + var/hit_power = 1 + artifact_size = ARTIFACT_SIZE_LARGE + COOLDOWN_DECLARE(bonk_cooldown) + research_value = 500 + examine_discovered = span_warning("It appears to bonk those with heads on said head.") + +/datum/artifact_effect/bonk/setup() + hit_power = rand(0,35) + potency += hit_power + +/datum/artifact_effect/bonk/effect_touched(mob/living/user) + if(!COOLDOWN_FINISHED(src, bonk_cooldown)) + return + + if(iscarbon(user)) + var/mob/living/carbon/carbon = user + if(!carbon.get_bodypart(BODY_ZONE_HEAD)) + our_artifact.holder.say("My condolences to your missing head.") //they can speak uhh galactic common because alien tech idk + our_artifact.holder.visible_message(span_notice("[our_artifact.holder] shakes [user][p_s()] hands with an apparatus.")) + playsound(get_turf(our_artifact.holder), 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) + our_artifact.artifact_deactivate() + return + else + carbon.apply_damage(hit_power, BRUTE, BODY_ZONE_HEAD, carbon.run_armor_check(BODY_ZONE_HEAD, MELEE)) + our_artifact.holder.visible_message(span_danger("[our_artifact.holder] hits [carbon] over the head!")) + else + our_artifact.holder.visible_message(span_danger("[our_artifact.holder] slams [user]!")) + user.adjustBruteLoss(hit_power) + playsound(get_turf(our_artifact.holder), 'sound/misc/bonk.ogg', 80, FALSE) + COOLDOWN_START(src, bonk_cooldown, 1.5 SECONDS) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/borger.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/borger.dm similarity index 73% rename from monkestation/code/modules/art_sci_overrides/artifact_components/borger.dm rename to monkestation/code/modules/art_sci_overrides/artifact_effects/borger.dm index e87a58fbe398..ef3e1ded89aa 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/borger.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/borger.dm @@ -1,14 +1,15 @@ -/datum/component/artifact/borger - associated_object = /obj/structure/artifact/borger - weight = ARTIFACT_UNCOMMON - type_name = "Borger" +/datum/artifact_effect/borger + weight = ARTIFACT_RARE + type_name = "Borger Effect" activation_message = "opens up!" deactivation_message = "closes up." valid_activators = list( /datum/artifact_activator/touch/carbon, /datum/artifact_activator/touch/silicon ) - explict_examine = span_bolddanger("It is vaguely forboding, touching this might be a bad idea...") + research_value = 2500 + examine_hint = span_bolddanger("It is vaguely forboding, touching this might be a bad idea...") + examine_discovered = span_bolddanger("It will turn a random limb robotic if touched, touching this might be a bad idea...") /// The time between each limb replacement var/limb_replace_time = 1 SECONDS /// People who've already touched it once. Touching it again will cause it to react. @@ -16,9 +17,9 @@ /// The cooldown between borgings. COOLDOWN_DECLARE(borg_cooldown) -/datum/component/artifact/borger/effect_touched(mob/living/user) +/datum/artifact_effect/borger/effect_touched(mob/living/user) if(!iscarbon(user) || !COOLDOWN_FINISHED(src, borg_cooldown) || QDELETED(user.client) || did_robot_touch(user)) - holder.visible_message(span_smallnoticeital("[holder] does not react to [user].")) + our_artifact.holder.visible_message(span_smallnoticeital("[our_artifact.holder] does not react to [user].")) return if(!LAZYACCESS(first_touched, user)) @@ -54,14 +55,14 @@ addtimer(CALLBACK(carbon_target, TYPE_PROC_REF(/mob/, Robotize)), timer + 5) COOLDOWN_START(src, borg_cooldown, 10 SECONDS) -/datum/component/artifact/borger/proc/eat_limb(mob/living/carbon/victim) +/datum/artifact_effect/borger/proc/eat_limb(mob/living/carbon/victim) var/arm_name = victim.get_held_index_name(victim.active_hand_index) - victim.visible_message(span_warning("[holder] lashes out and clamps down on [victim], rapidly transmuting [victim.p_their()] [arm_name]!"), \ - span_userdanger("[holder] lashes out and clamps down onto your [arm_name], rapidly transmuting it into cold metal!")) + victim.visible_message(span_warning("[our_artifact.holder] lashes out and clamps down on [victim], rapidly transmuting [victim.p_their()] [arm_name]!"), \ + span_userdanger("[our_artifact.holder] lashes out and clamps down onto your [arm_name], rapidly transmuting it into cold metal!")) var/new_arm_type = (victim.active_hand_index % 2) ? /obj/item/bodypart/arm/left/robot : /obj/item/bodypart/arm/right/robot victim.del_and_replace_bodypart(new new_arm_type) victim.emote("scream") -/datum/component/artifact/borger/proc/did_robot_touch(mob/living/carbon/user) +/datum/artifact_effect/borger/proc/did_robot_touch(mob/living/carbon/user) var/obj/item/bodypart/arm/active_arm = user.get_active_hand() return istype(active_arm) && (active_arm.bodytype & BODYTYPE_ROBOTIC) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/bread.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/bread.dm new file mode 100644 index 000000000000..47e9791fbd5b --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/bread.dm @@ -0,0 +1,52 @@ +/datum/artifact_effect/bread + examine_discovered = "Summons bread?" + weight = ARTIFACT_UNCOMMON + discovered_credits = CARGO_CRATE_VALUE * 2 //Mmm bread + activation_message = "begins baking some fresh eldritch brand bread!" + deactivation_message = "runs out of bread!" + research_value = 500 + type_name = "Bread Teleportation Effect" + + COOLDOWN_DECLARE(bread_cd) + + var/bread_counter = 0 + + ///We sell BREAD. We sell LOAF. TOASTED, ROASTED... + var/static/list/obj/item/food/validbread = list( + /obj/item/food/bread/plain = 20, + /obj/item/food/bread/meat = 15, + /obj/item/food/bread/banana = 15, + /obj/item/food/bread/tofu = 10, + /obj/item/food/croissant = 10, + /obj/item/food/baguette = 10, + /obj/item/food/garlicbread = 10, + /obj/item/food/bread/creamcheese = 10, + /obj/item/food/frenchtoast = 8, + /obj/item/food/breadstick = 8, + /obj/item/food/butterbiscuit = 5, + /obj/item/food/bread/mimana = 5, + /obj/item/food/bread/sausage = 5, + /obj/item/food/bread/xenomeat = 1, + /obj/item/food/bread/spidermeat = 1 + ) + +/datum/artifact_effect/bread/effect_process() + if(!COOLDOWN_FINISHED(src,bread_cd)) + return + var/center_turf = get_turf(our_artifact.parent) + var/list/turf/valid_turfs = list() + if(!center_turf) + CRASH("[src] had attempted to trigger, but failed to find the center turf!") + for(var/turf/boi in range(3,center_turf)) + if(boi.density) + continue + valid_turfs += boi + var/obj/item/food/pickedbread = pick_weight(validbread) + new pickedbread(pick(valid_turfs)) + bread_counter++ + if(bread_counter > round(potency/10)) + bread_counter = 0 + toggle_active(FALSE) + return + COOLDOWN_START(src,bread_cd,(7.5 SECONDS)) + diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/cell.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/cell.dm new file mode 100644 index 000000000000..2da2af3b00ff --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/cell.dm @@ -0,0 +1,28 @@ +/datum/artifact_effect/cell + type_name = "Power Cell Effect" + weight = ARTIFACT_UNCOMMON + artifact_size = ARTIFACT_SIZE_TINY + valid_activators = list( + /datum/artifact_activator/range/heat, + /datum/artifact_activator/range/shock, + /datum/artifact_activator/range/radiation + ) + valid_type_paths = list(/obj/item/stock_parts/cell/artifact) + research_value = 500 + examine_discovered = span_warning("It appears to hold power") + +/datum/artifact_effect/cell/setup() + var/obj/item/stock_parts/cell/artifact/cell = our_artifact.holder + cell.maxcharge = rand(5 KW, 500 MW) // the heavenly battery + cell.charge = cell.maxcharge / 2 + cell.chargerate = rand(5000, round(cell.maxcharge * 0.4)) + potency += cell.maxcharge / 900 + potency += cell.chargerate / 4000 + +/datum/artifact_effect/cell/effect_activate() + var/obj/item/stock_parts/cell/artifact/cell = our_artifact.holder + cell.ratingdesc = TRUE + +/datum/artifact_effect/cell/effect_deactivate() + var/obj/item/stock_parts/cell/artifact/cell = our_artifact.holder + cell.ratingdesc = FALSE diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/cleaning.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/cleaning.dm new file mode 100644 index 000000000000..1b61aad86c44 --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/cleaning.dm @@ -0,0 +1,17 @@ +/datum/artifact_effect/soap + examine_hint = "Smells nice." + examine_discovered = "Seems to clean things." + artifact_size = ARTIFACT_SIZE_TINY + type_name = "Cleaning Effect" + +/datum/artifact_effect/soap/setup() + our_artifact.holder.AddComponent(/datum/component/slippery, 80) + our_artifact.holder.AddComponent(/datum/component/cleaner, 2 SECOND, 0.1, pre_clean_callback=CALLBACK(src, PROC_REF(should_clean)), on_cleaned_callback=CALLBACK(src, TYPE_PROC_REF(/datum/artifact_effect/soap,sorry_nothing))) + +/datum/artifact_effect/soap/proc/should_clean(datum/cleaning_source, atom/atom_to_clean, mob/living/cleaner) + if(isitem(our_artifact.holder)) + var/obj/item/yep_its_an_item = our_artifact.holder + return yep_its_an_item.check_allowed_items(atom_to_clean) + return FALSE +/datum/artifact_effect/soap/proc/sorry_nothing(datum/source, atom/target, mob/living/user, clean_succeeded) + return diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/emoter.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/emoter.dm similarity index 60% rename from monkestation/code/modules/art_sci_overrides/artifact_components/emoter.dm rename to monkestation/code/modules/art_sci_overrides/artifact_effects/emoter.dm index 88c88d374bb0..772bd97c0ad5 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/emoter.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/emoter.dm @@ -1,7 +1,6 @@ -/datum/component/artifact/emotegen - associated_object = /obj/structure/artifact/emotegen +/datum/artifact_effect/emotegen weight = ARTIFACT_UNCOMMON - type_name = "Emote Forcefield" + type_name = "Emote Forcefield Effect" activation_message = "springs to life and starts emitting a forcefield!" deactivation_message = "shuts down, its forcefields shutting down with it." valid_activators = list( @@ -9,6 +8,9 @@ /datum/artifact_activator/touch/silicon, /datum/artifact_activator/range/force ) + + research_value = 150 + var/cooldown_time //cooldown AFTER the shield lowers var/radius var/shield_time @@ -25,10 +27,13 @@ "snore", "cry", ) + + examine_discovered = span_warning("It appears to radiate an emotional field") + var/list/picked_emotes = list() COOLDOWN_DECLARE(cooldown) -/datum/component/artifact/emotegen/setup() +/datum/artifact_effect/emotegen/setup() for(var/i = 1 to rand(3,4)) picked_emotes += pick(all_emotes) @@ -39,24 +44,24 @@ cooldown_time = shield_time / 3 potency += radius * 3 + shield_time / 30 -/datum/component/artifact/emotegen/effect_activate(silent) +/datum/artifact_effect/emotegen/effect_activate(silent) if(!COOLDOWN_FINISHED(src,cooldown)) - holder.visible_message(span_notice("[holder] wheezes, shutting down.")) - artifact_deactivate(TRUE) + our_artifact.holder.visible_message(span_notice("[our_artifact.holder] wheezes, shutting down.")) + our_artifact.artifact_deactivate(TRUE) return - addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/component/artifact, artifact_deactivate)), shield_time) + addtimer(CALLBACK(our_artifact, TYPE_PROC_REF(/datum/component/artifact, artifact_deactivate)), shield_time) COOLDOWN_START(src,cooldown,shield_time + cooldown_time) -/datum/component/artifact/emotegen/effect_process() +/datum/artifact_effect/emotegen/effect_process() var/current_emote = pick(picked_emotes) - holder.anchored = TRUE - var/turf/our_turf = get_turf(holder) - for(var/turf/open/floor in range(radius,holder)) + our_artifact.holder.anchored = TRUE + var/turf/our_turf = get_turf(our_artifact.holder) + for(var/turf/open/floor in range(radius,our_artifact.holder)) if(floor == our_turf) continue for(var/mob/living/living in floor) living.emote(current_emote, intentional = FALSE) -/datum/component/artifact/emotegen/effect_deactivate() - holder.anchored = FALSE +/datum/artifact_effect/emotegen/effect_deactivate() + our_artifact.holder.anchored = FALSE diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/false_rod.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/false_rod.dm new file mode 100644 index 000000000000..27030a251101 --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/false_rod.dm @@ -0,0 +1,93 @@ +/datum/artifact_effect/false_rod + examine_hint = span_warning("You feel a binding aura connected to this.") + examine_discovered = span_warning("Will bind it self to the wearer, forcing upon them an oath to heal!") + weight = ARTIFACT_UNCOMMON + + artifact_size = ARTIFACT_SIZE_SMALL + type_name = "Oath-Bearing Rod Effect" + + var/list/first_touched + + var/mob/living/our_victim + + COOLDOWN_DECLARE(touch_cooldown) + +/datum/artifact_effect/false_rod/setup() + RegisterSignal(our_artifact.holder,COMSIG_ITEM_POST_EQUIPPED,TYPE_PROC_REF(/datum/artifact_effect/false_rod,on_pickup)) + +/datum/artifact_effect/false_rod/proc/on_pickup(obj/item/the_item,mob/taker,slot) + SIGNAL_HANDLER + if(!isliving(taker)) + return COMPONENT_EQUIPPED_FAILED + var/mob/living/user = taker + if(!(isitem(our_artifact.holder)) || !COOLDOWN_FINISHED(src,touch_cooldown)) + return COMPONENT_EQUIPPED_FAILED + if(!LAZYACCESS(first_touched, user)) + to_chat(user,span_bolddanger("You hesitate before touching [our_artifact.holder], feeling it will do something that cannot be un-done easily!")) + LAZYSET(first_touched, user, TRUE) + COOLDOWN_START(src, touch_cooldown, 7.5 SECONDS) // so you don't get fucked over by spam-clicking it + return COMPONENT_EQUIPPED_FAILED + addtimer(CALLBACK(src,PROC_REF(post_pickup),user),(0.2 SECOND)) + return + +/datum/artifact_effect/false_rod/on_destroy(atom/source) + our_victim?.remove_status_effect(/datum/status_effect/forced_oath) + . = ..() + +/datum/artifact_effect/false_rod/proc/post_pickup(mob/living/user) + to_chat(user,span_danger("[our_artifact.holder] forcefully melds with you, and a healing aura surrounds you!")) + ADD_TRAIT(our_artifact.holder,TRAIT_NODROP,CURSED_ITEM_TRAIT(our_artifact.holder.type)) + user.apply_status_effect(/datum/status_effect/forced_oath) + our_victim = user + return + +/datum/status_effect/forced_oath + id = "Forced Oath" + status_type = STATUS_EFFECT_UNIQUE + duration = -1 + tick_interval = 25 + alert_type = null + var/datum/component/aura_healing/our_aura + +/datum/status_effect/forced_oath/on_apply() + var/static/list/organ_healing = list( + ORGAN_SLOT_BRAIN = 0.7, + ) + //This is literally shitty Rod of Ascep. + our_aura = owner.AddComponent( \ + /datum/component/aura_healing, \ + range = 5, \ + brute_heal = 1, \ + burn_heal = 1, \ + toxin_heal = 1, \ + suffocation_heal = 1, \ + stamina_heal = 1, \ + clone_heal = 0.2, \ + simple_heal = 1, \ + organ_healing = organ_healing, \ + healing_color = "#375637", \ + ) + + var/datum/atom_hud/med_hud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] + med_hud.show_to(owner) + return TRUE +/datum/status_effect/forced_oath/on_remove() + QDEL_NULL(our_aura) + var/datum/atom_hud/med_hud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] + med_hud.hide_from(owner) +/datum/status_effect/forced_oath/get_examine_text() + return span_notice("[owner.p_they(TRUE)] seem[owner.p_s()] to have an aura of healing around [owner.p_them()].") +/datum/status_effect/forced_oath/tick() + if(owner.stat ==DEAD) + return + else + if(iscarbon(owner)) + if(owner.health < owner.maxHealth) + new /obj/effect/temp_visual/heal(get_turf(owner), "#375637") + owner.adjustBruteLoss(-1) + owner.adjustFireLoss(-1) + owner.adjustToxLoss(-1, forced = TRUE) //Because Slime People are people too + owner.adjustOxyLoss(-1, forced = TRUE) + owner.stamina.adjust(1) + owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1) + owner.adjustCloneLoss(-0.25) //Becasue apparently clone damage is the bastion of all health diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/forcegen.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/forcegen.dm similarity index 68% rename from monkestation/code/modules/art_sci_overrides/artifact_components/forcegen.dm rename to monkestation/code/modules/art_sci_overrides/artifact_effects/forcegen.dm index 95be5fbb3305..04608b5b8764 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/forcegen.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/forcegen.dm @@ -11,13 +11,13 @@ resistance_flags = INDESTRUCTIBLE can_atmos_pass = ATMOS_PASS_DENSITY + /obj/structure/artifact_forcefield/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) playsound(loc, 'sound/weapons/egloves.ogg', 80, TRUE) -/datum/component/artifact/forcegen - associated_object = /obj/structure/artifact/forcegen +/datum/artifact_effect/forcegen weight = ARTIFACT_UNCOMMON - type_name = "Forcefield Generator" + type_name = "Forcefield Generator Effect" activation_message = "springs to life and starts emitting a forcefield!" deactivation_message = "shuts down, its forcefields shutting down with it." valid_activators = list( @@ -25,6 +25,11 @@ /datum/artifact_activator/touch/silicon, /datum/artifact_activator/range/force ) + + research_value = 5000 + + examine_discovered = span_warning("It appears to generate some kind of forcefield") + var/cooldown_time //cooldown AFTER the shield lowers var/shield_iconstate var/list/projected_forcefields = list() @@ -32,26 +37,25 @@ var/shield_time COOLDOWN_DECLARE(cooldown) -/datum/component/artifact/forcegen/setup() +/datum/artifact_effect/forcegen/setup() shield_iconstate = pick("shieldsparkles","empdisable","shield2","shield-old","shield-red","shield-green","shield-yellow") activation_sound = pick('sound/mecha/mech_shield_drop.ogg') deactivation_sound = pick('sound/mecha/mech_shield_raise.ogg','sound/magic/forcewall.ogg') - shield_time = rand(10,40) SECONDS + shield_time = rand(10,30) SECONDS radius = rand(1,3) cooldown_time = shield_time / 3 - potency += radius * 3 + shield_time / 30 -/datum/component/artifact/forcegen/effect_activate() +/datum/artifact_effect/forcegen/effect_activate() if(!COOLDOWN_FINISHED(src,cooldown)) - holder.visible_message(span_notice("[holder] wheezes, shutting down.")) - artifact_deactivate(TRUE) + our_artifact.holder.visible_message(span_notice("[our_artifact.holder] wheezes, shutting down.")) + our_artifact.artifact_deactivate(TRUE) return - holder.anchored = TRUE - var/turf/our_turf = get_turf(holder) + our_artifact.holder.anchored = TRUE + var/turf/our_turf = get_turf(our_artifact.holder) var/list/bad_turfs if(radius > 1) - bad_turfs = range(radius - 1, holder) - for(var/turf/open/floor in range(radius,holder)) + bad_turfs = range(radius - 1, our_artifact.holder) + for(var/turf/open/floor in range(radius,our_artifact.holder)) if(floor in bad_turfs) continue if(floor == our_turf) @@ -59,11 +63,11 @@ var/obj/field = new /obj/structure/artifact_forcefield(floor) field.icon_state = shield_iconstate projected_forcefields += field - addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/component/artifact, artifact_deactivate)), shield_time) + addtimer(CALLBACK(our_artifact, TYPE_PROC_REF(/datum/component/artifact, artifact_deactivate)), shield_time) COOLDOWN_START(src,cooldown,shield_time + cooldown_time) -/datum/component/artifact/forcegen/effect_deactivate() - holder.anchored = FALSE +/datum/artifact_effect/forcegen/effect_deactivate() + our_artifact.holder.anchored = FALSE for(var/obj/field in projected_forcefields) projected_forcefields -= field qdel(field) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/gun.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/gun.dm similarity index 75% rename from monkestation/code/modules/art_sci_overrides/artifact_components/gun.dm rename to monkestation/code/modules/art_sci_overrides/artifact_effects/gun.dm index 7425c524e47a..a574230764ad 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/gun.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/gun.dm @@ -1,26 +1,20 @@ #define LOWEST_POSSIBLE_CLICK_CD 3 #define HIGHEST_POSSIBLE_CLICK_CD 15 -/datum/component/artifact/gun - associated_object = /obj/item/gun/magic/artifact +/datum/artifact_effect/gun artifact_size = ARTIFACT_SIZE_SMALL - type_name = "Ranged Weapon" + type_name = "Ranged Weapon Effect" weight = ARTIFACT_VERYUNCOMMON //rare - xray_result = "COMPLEX" valid_activators = list( /datum/artifact_activator/range/heat, /datum/artifact_activator/range/shock, /datum/artifact_activator/range/radiation ) - valid_faults = list( - /datum/artifact_fault/ignite = 10, - /datum/artifact_fault/warp = 10, - /datum/artifact_fault/reagent/poison = 10, - /datum/artifact_fault/death = 2, - /datum/artifact_fault/tesla_zap = 5, - /datum/artifact_fault/grow = 10, - /datum/artifact_fault/explosion = 2, - ) + valid_type_paths = list(/obj/item/gun/magic/artifact) + + research_value = 500 + + examine_discovered = span_warning("It appears to be some sort of projectile weapon!") //list of projectile exclusive projectiles ///damage each shot does @@ -46,14 +40,11 @@ var/list/damage_types = list( BRUTE, BURN, - TOX, - OXY, - BRAIN, - STAMINA + TOX ) -/datum/component/artifact/gun/setup() - var/obj/item/gun/magic/artifact/our_wand = holder +/datum/artifact_effect/gun/setup() + var/obj/item/gun/magic/artifact/our_wand = our_artifact.holder var/obj/item/ammo_casing/casing = our_wand.chambered //randomize our casing casing.click_cooldown_override = rand(LOWEST_POSSIBLE_CLICK_CD, HIGHEST_POSSIBLE_CLICK_CD) @@ -62,7 +53,7 @@ spread += 0.1 spread += prob(65) ? rand(0.0, 0.2) : rand(0.3, 1.0) - damage = rand(-5, 25) + damage = rand(-10, 30) projectile_icon = pick("energy","scatterlaser","toxin","energy","spell","pulse1","bluespace","gauss","gaussweak","gaussstrong","redtrac","omnilaser","heavylaser","laser","infernoshot","cryoshot","arcane_barrage") dam_type = pick(damage_types) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/heal.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/heal.dm similarity index 59% rename from monkestation/code/modules/art_sci_overrides/artifact_components/heal.dm rename to monkestation/code/modules/art_sci_overrides/artifact_effects/heal.dm index 9177d7dea38e..67c2e1a535f3 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/heal.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/heal.dm @@ -1,22 +1,23 @@ #define PROCESSES_PER_HEAL 5 -/datum/component/artifact/heal - associated_object = /obj/structure/artifact/heal +/datum/artifact_effect/heal weight = ARTIFACT_VERYUNCOMMON - type_name = "Single Healer" + type_name = "Single Healer Effect" activation_message = "starts emitting a soothing aura!" deactivation_message = "becomes silent." valid_activators = list( /datum/artifact_activator/touch/carbon, /datum/artifact_activator/touch/silicon ) - ///list of damage types we heal, this is randomly removed from at setup + + examine_discovered = span_warning("It appears to heal those who touch it.") + + research_value = 250 + + ///list of what we heal var/list/damage_types = list( BRUTE, BURN, - TOX, - OXY, - BRAIN, - CLONE, + TOX ) ///how much do we heal var/heal_amount @@ -24,29 +25,19 @@ var/process_count = 0 COOLDOWN_DECLARE(heal_cooldown) -/datum/component/artifact/heal/setup() - heal_amount = rand(1,15) - potency += heal_amount - var/type_amount = prob(75) ? 4 : rand(2,4) //75% to remove 4 types for 1 heal type or 25% for 2 or 4 types removed - while(type_amount) - type_amount-- - damage_types -= pick(damage_types) - potency += 5 * (length(damage_types) - 1) +/datum/artifact_effect/heal/setup() + heal_amount = rand(5,10) -/datum/component/artifact/heal/effect_touched(mob/living/user) +/datum/artifact_effect/heal/effect_touched(mob/living/user) if(!COOLDOWN_FINISHED(src, heal_cooldown)) return - var/damage_length = length(damage_types) for(var/dam_type in damage_types) - user.heal_damage_type( (heal_amount / damage_length), dam_type) + user.heal_damage_type( (heal_amount), dam_type) to_chat(user, span_notice("You feel slightly refreshed!")) new /obj/effect/temp_visual/heal(get_turf(user), COLOR_HEALING_CYAN) COOLDOWN_START(src, heal_cooldown, 5 SECONDS) -/datum/component/artifact/heal/effect_process() - if(potency < 75) - return - +/datum/artifact_effect/heal/effect_process() process_count++ if(process_count < PROCESSES_PER_HEAL) return diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/injector.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/injector.dm similarity index 64% rename from monkestation/code/modules/art_sci_overrides/artifact_components/injector.dm rename to monkestation/code/modules/art_sci_overrides/artifact_effects/injector.dm index dc30a0192443..3d82ebf98ed0 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/injector.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/injector.dm @@ -1,18 +1,20 @@ -/datum/component/artifact/injector - associated_object = /obj/structure/artifact/injector +/datum/artifact_effect/injector weight = ARTIFACT_UNCOMMON - type_name = "Injector" + type_name = "Injector Effect" activation_message = "opens up to reveal a large needle!" deactivation_message = "pulls its needle inside, closing itself up." - xray_result = "SEGMENTED" var/max_reagents // the total amount to dose the victim with var/reagent_amount var/list/reagent_datums = list() var/cooldown_time = 10 SECONDS COOLDOWN_DECLARE(activation_cooldown) -/datum/component/artifact/injector/setup() - holder.create_reagents(200, NO_REACT | SEALED_CONTAINER) + research_value = 250 + + examine_discovered = span_warning("It appears to be some sort of chemical injector") + +/datum/artifact_effect/injector/setup() + our_artifact.holder.create_reagents(200, NO_REACT | SEALED_CONTAINER) reagent_amount = rand(10,25) max_reagents = rand(1,2) var/static/list/poisons_and_medicines = list() @@ -20,7 +22,7 @@ for(var/datum/reagent/reagent as anything in (subtypesof(/datum/reagent/toxin) + subtypesof(/datum/reagent/medicine))) if(initial(reagent.chemical_flags) & REAGENT_CAN_BE_SYNTHESIZED) poisons_and_medicines += reagent - switch(artifact_origin.type_name) + switch(our_artifact.artifact_origin.type_name) if(ORIGIN_NARSIE) for(var/i in 1 to max_reagents) reagent_datums += pick(poisons_and_medicines) //cult likes killing people ok @@ -36,12 +38,12 @@ reagent_datums += pick(silicon_reagents) potency += reagent_amount + max_reagents -/datum/component/artifact/injector/effect_touched(mob/living/user) +/datum/artifact_effect/injector/effect_touched(mob/living/user) if(!ishuman(user) || !COOLDOWN_FINISHED(src,activation_cooldown)) - holder.visible_message(span_smallnoticeital("[holder] does not react to [user].")) + our_artifact.holder.visible_message(span_smallnoticeital("[our_artifact.holder] does not react to [user].")) return for(var/reagent in reagent_datums) - holder.reagents.add_reagent(reagent, reagent_amount / reagent_datums.len) - holder.visible_message(span_danger("[holder] pricks [user] with its needle!"), span_userdanger("OW! You are pricked by [holder]!")) - holder.reagents.trans_to(user, holder.reagents.total_volume, transfered_by = holder, methods = INJECT) + our_artifact.holder.reagents.add_reagent(reagent, reagent_amount / reagent_datums.len) + our_artifact.holder.visible_message(span_danger("[our_artifact.holder] pricks [user] with its needle!"), span_userdanger("OW! You are pricked by [our_artifact.holder]!")) + our_artifact.holder.reagents.trans_to(user, our_artifact.holder.reagents.total_volume, transfered_by = our_artifact.holder, methods = INJECT) COOLDOWN_START(src,activation_cooldown,cooldown_time) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/itsasecret.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/itsasecret.dm new file mode 100644 index 000000000000..bcda23c9678a --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/itsasecret.dm @@ -0,0 +1,44 @@ +/datum/artifact_effect/toeverybody + examine_hint = "Seems...off somehow." + examine_discovered = "Temporarily tears holes in reality." + discovered_credits = CARGO_CRATE_VALUE * 100 //GDM + weight = ARTIFACT_VERYRARE/5 //Super rare + activation_message = "tears open the fabric of reality!" + + research_value = 10000 + + type_name = "Its a Secret to Everybody" + + super_secret = TRUE + + COOLDOWN_DECLARE(trigger_cd) + +/datum/artifact_effect/toeverybody/proc/returnthey(mob/living/carbon/human,turf/last_position) + human.forceMove(last_position) + return + +/datum/artifact_effect/toeverybody/effect_activate(silent) + if(!COOLDOWN_FINISHED(src,trigger_cd)) + return + var/list/mobs = list() + var/mob/living/carbon/human + + var/center_turf = get_turf(our_artifact.parent) + + if(!center_turf) + CRASH("[src] had attempted to trigger, but failed to find the center turf!") + + for(var/mob/living/carbon/mob in range(rand(3, 4), center_turf)) + mobs += mob + if(!length(mobs)) + return + human = pick(mobs) + if(!human) + return + + var/last_position = get_turf(human) + human.move_to_error_room() + COOLDOWN_START(src,trigger_cd,5 MINUTE) + addtimer(CALLBACK(src,PROC_REF(returnthey),human,last_position),5 SECOND) + return + diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/lamp.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/lamp.dm new file mode 100644 index 000000000000..9e4d4ae0dd1e --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/lamp.dm @@ -0,0 +1,38 @@ + +/datum/artifact_effect/lamp + weight = ARTIFACT_COMMON + type_name = "Lamp" + activation_message = "starts shining!" + deactivation_message = "stops shining." + examine_discovered = span_warning("It appears to be some sort of light source") + + artifact_size = ARTIFACT_SIZE_LARGE + + research_value = 250 + +/datum/artifact_effect/lamp/setup() + var/power + var/color = pick(COLOR_RED, COLOR_BLUE, COLOR_YELLOW, COLOR_GREEN, COLOR_PURPLE, COLOR_ORANGE) + var/range + switch(rand(1,100)) + if(1 to 75) + power = rand(2,5) + range = rand(2,5) + if(76 to 100) + range = rand(4,10) + power = rand(5,10) // the sun + + if(our_artifact.artifact_origin.type_name == ORIGIN_NARSIE && prob(40)) + color = COLOR_BLACK + our_artifact.holder.light_system = COMPLEX_LIGHT //We need this to avoid a crash for wrong lighting system. + our_artifact.holder.set_light(range, round(range*1.25),power,l_color = color,l_on = FALSE) + +/datum/artifact_effect/lamp/effect_touched(mob/user) + our_artifact.holder.set_light_on(!our_artifact.holder.light_on) //toggle + to_chat(user, span_hear("[our_artifact.holder] clicks.")) + +/datum/artifact_effect/lamp/effect_activate() + our_artifact.holder.set_light_on(TRUE) + +/datum/artifact_effect/lamp/effect_deactivate() + our_artifact.holder.set_light_on(FALSE) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/meat.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/meat.dm new file mode 100644 index 000000000000..5781d29458ca --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/meat.dm @@ -0,0 +1,54 @@ +/datum/artifact_effect/meat + examine_discovered = "Summons meat?" + weight = ARTIFACT_UNCOMMON + discovered_credits = CARGO_CRATE_VALUE * 2 //ME A T + activation_message = "begins stealing meat!" + deactivation_message = "gets caught stealing meat!" + research_value = 500 + type_name = "Meat Teleportation Effect" + + COOLDOWN_DECLARE(meat_cd) + + var/meat_counter = 0 + + ///MY MEAT BYCICLE IS BIGGER THAN YOURS - Kreig borderlands + var/static/list/obj/item/food/validmeat = list( + /obj/item/food/meat/slab = 20, + /obj/item/food/meat/slab/meatwheat = 20, + /obj/item/food/meat/slab/monkey = 15, + /obj/item/food/meat/slab/bugmeat = 15, + /obj/item/food/meat/slab/mothroach = 15, + /obj/item/food/meat/slab/mouse = 15, + /obj/item/food/meat/slab/pug = 10, + /obj/item/food/meat/slab/goliath = 10, + /obj/item/food/meat/slab/corgi = 10, + /obj/item/food/meat/slab/gorilla = 5, + /obj/item/food/meat/slab/bear = 5, + /obj/item/food/meat/slab/xeno = 5, + /obj/item/food/meat/slab/spider = 5, + /obj/item/food/meat/slab/human/mutant/slime = 1, + /obj/item/food/meat/slab/human/mutant/lizard = 1, + /obj/item/food/meat/slab/human = 1, + /obj/item/food/meat/slab/human/mutant/skeleton = 1, + ) + +/datum/artifact_effect/meat/effect_process() + if(!COOLDOWN_FINISHED(src,meat_cd)) + return + var/center_turf = get_turf(our_artifact.parent) + var/list/turf/valid_turfs = list() + if(!center_turf) + CRASH("[src] had attempted to trigger, but failed to find the center turf!") + for(var/turf/boi in range(3,center_turf)) + if(boi.density) + continue + valid_turfs += boi + var/obj/item/food/pickedmeat = pick_weight(validmeat) + new pickedmeat(pick(valid_turfs)) + meat_counter++ + if(meat_counter > round(potency/10)) + meat_counter = 0 + toggle_active(FALSE) + return + COOLDOWN_START(src,meat_cd,(10 SECONDS)) + diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/melee.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/melee.dm similarity index 72% rename from monkestation/code/modules/art_sci_overrides/artifact_components/melee.dm rename to monkestation/code/modules/art_sci_overrides/artifact_effects/melee.dm index ea9e5a93e826..2d64f29344e3 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/melee.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/melee.dm @@ -2,33 +2,27 @@ #define SPECIAL_IGNITE "ignite" #define SPECIAL_TELEPORT "teleport" -/datum/component/artifact/melee - associated_object = /obj/item/melee/artifact +/datum/artifact_effect/melee artifact_size = ARTIFACT_SIZE_SMALL - type_name = "Melee Weapon" + type_name = "Melee Weapon Effect" weight = ARTIFACT_VERYUNCOMMON //rare - xray_result = "DENSE" valid_activators = list( /datum/artifact_activator/touch/silicon, /datum/artifact_activator/range/heat, /datum/artifact_activator/range/shock, /datum/artifact_activator/range/radiation ) - valid_faults = list( - /datum/artifact_fault/ignite = 10, - /datum/artifact_fault/warp = 10, - /datum/artifact_fault/reagent/poison = 10, - /datum/artifact_fault/death = 2, - /datum/artifact_fault/tesla_zap = 5, - /datum/artifact_fault/grow = 10, - /datum/artifact_fault/explosion = 2, - ) var/active_force //force when active var/active_reach var/active_woundbonus = 0 -/datum/component/artifact/melee/setup() //RNG incarnate - var/obj/item/melee/artifact/weapon = holder + valid_type_paths = list(/obj/item/melee/artifact) + research_value = 500 + + examine_discovered = span_warning("It appears to be some sort of melee weapon") + +/datum/artifact_effect/melee/setup() //RNG incarnate + var/obj/item/melee/artifact/weapon = our_artifact.holder weapon.special_cooldown_time = rand(3,8) SECONDS active_force = rand(-10,30) weapon.demolition_mod = rand(-1.0, 2.0) @@ -58,15 +52,15 @@ potency += 15 weapon.special = pick(SPECIAL_LAUNCH, SPECIAL_IGNITE, SPECIAL_TELEPORT) -/datum/component/artifact/melee/effect_activate() - var/obj/item/melee/artifact/weapon = holder +/datum/artifact_effect/melee/effect_activate() + var/obj/item/melee/artifact/weapon = our_artifact.holder weapon.reach = active_reach weapon.force = active_force weapon.wound_bonus = active_woundbonus weapon.throwforce = weapon.force -/datum/component/artifact/melee/effect_deactivate() - var/obj/item/melee/artifact/weapon = holder +/datum/artifact_effect/melee/effect_deactivate() + var/obj/item/melee/artifact/weapon = our_artifact.holder weapon.force = active_force / 3 weapon.throwforce = weapon.force weapon.reach = 1 diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/money.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/money.dm new file mode 100644 index 000000000000..6f40d0405932 --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/money.dm @@ -0,0 +1,12 @@ +/datum/artifact_effect/lodedsamoney + examine_hint = "Might sell well." + examine_discovered = "Generates an aura of value." + discovered_credits = CARGO_CRATE_VALUE * 25 //LODESA + weight = ARTIFACT_UNCOMMON + + type_name = "Economical Aura Effect" + research_value = 250 + +/datum/artifact_effect/lodedsamoney/setup() + discovered_credits *= ((potency+50)/75) + discovered_credits = round(discovered_credits) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/narsieoffering.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/narsieoffering.dm new file mode 100644 index 000000000000..6d1cc4510108 --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/narsieoffering.dm @@ -0,0 +1,52 @@ +/datum/artifact_effect/narsieoffering + examine_discovered = "Makes an offering to the dark gods." + type_name = "Dark Altar Effect" + weight = ARTIFACT_COMMON //Common because can only be on carbon touch narsie + + examine_hint = span_warning("You feel safe and complacent around this...") + valid_origins = list(ORIGIN_NARSIE) + + valid_activators = list(/datum/artifact_activator/touch/carbon) + + research_value = 250 + + var/blood_to_take = 1 + + var/stored_blood = 0 + + COOLDOWN_DECLARE(force_take_cooldown) + ///List of valid items this artifact can spawn when full on blood (needs 5 bodys of blood.) + var/static/list/obj/valid_spawns = list( + /obj/item/soulstone/anybody = 1, //Lucky you. + /obj/item/clothing/suit/hooded/cultrobes = 20, + /obj/item/clothing/suit/hooded/cultrobes/alt = 20, + /obj/item/clothing/suit/hooded/cultrobes/hardened = 10, + /obj/item/sharpener/cult = 35, + /obj/item/shield/mirror = 15 + ) + +/datum/artifact_effect/narsieoffering/setup() + blood_to_take = round(rand(BLOOD_VOLUME_NORMAL*0.1,BLOOD_VOLUME_NORMAL*0.9)) + +/datum/artifact_effect/narsieoffering/effect_touched(mob/living/user) + if(!COOLDOWN_FINISHED(src,force_take_cooldown)) + to_chat(user,"You feel [our_artifact.holder] is not yet ready for what it has planned...") + if(!user.blood_volume || !iscarbon(user)) + to_chat(user, span_info("You feel a need to give your non existant blood.")) + if(user.blood_volume <= blood_to_take) + to_chat(user,span_info("You feel a need to give more blood, but [our_artifact.holder] deems you too weak to do so!")) + var/yoinked_blood = min(blood_to_take,user.blood_volume) + user.blood_volume -= yoinked_blood + stored_blood += yoinked_blood + to_chat(user,span_boldwarning("You are compelled to give blood to the [our_artifact.holder]; and feel your blood volume lower somehow!")) + COOLDOWN_START(src,force_take_cooldown,5 SECOND) + + if(stored_blood >= BLOOD_VOLUME_NORMAL*5) + var/obj/tomake = pick_weight(valid_spawns) + var/obj/chosen = new tomake(our_artifact.holder.loc) + chosen.forceMove(our_artifact.holder.loc) + to_chat(user,span_info("[our_artifact.holder] is pleased with your work, and [chosen] appears from seemingly nowhere!")) + stored_blood -= BLOOD_VOLUME_NORMAL*5 + return + + diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/plushie_vendor.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/plushie_vendor.dm new file mode 100644 index 000000000000..9e3642f159fa --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/plushie_vendor.dm @@ -0,0 +1,30 @@ +/datum/artifact_effect/plushie + examine_hint = "Has some sort of claw mechanism." + + examine_discovered = "Its a claw machine of some kind" + + weight = ARTIFACT_UNCOMMON + + activation_message = "summons a toy of some kind!" + + type_name = "Toy Vender Effect" + research_value = 250 + + var/static/list/obj/item/toy/plush/plushies = list() + + COOLDOWN_DECLARE(plushiefact) + +/datum/artifact_effect/plushie/effect_activate(silent) + if(!length(plushies)) + plushies = typecacheof(/obj/item/toy/plush,ignore_root_path = TRUE) //I am not responsible for if this is a bad idea. + if(!COOLDOWN_FINISHED(src,plushiefact)) + return + var/obj/item/toy/plush/boi_path = pick(plushies) + var/obj/item/toy/plush/boi = new boi_path + boi.forceMove(our_artifact.holder.loc) + if(prob(clamp(potency-50,0,100))) + boi.AddComponent(/datum/component/ghost_object_control,boi,TRUE) + var/datum/component/ghost_object_control/spiritholder = boi.GetComponent(/datum/component/ghost_object_control) + if(!(spiritholder.bound_spirit)) + spiritholder.request_control(0.6) + COOLDOWN_START(src,plushiefact,3 MINUTE) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_effects/repulsor.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/repulsor.dm new file mode 100644 index 000000000000..8cefc3bbcfde --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/repulsor.dm @@ -0,0 +1,55 @@ + +/datum/artifact_effect/repulsor + weight = ARTIFACT_UNCOMMON + type_name = "Repulsor/Impulsor Effect" + activation_message = "opens up, a weird aura starts emitting from it!" + deactivation_message = "closes up." + var/attract = FALSE //if FALSE, repulse, otherwise, attract + var/strength + var/range + var/cooldown_time + COOLDOWN_DECLARE(cooldown) + + research_value = 1000 + + examine_discovered = span_warning("It appears to be some object mover") + +/datum/artifact_effect/repulsor/setup() + attract = prob(40) + range = rand(1,3) + cooldown_time = rand(3,5) SECONDS + strength = rand(MOVE_FORCE_DEFAULT,MOVE_FORCE_OVERPOWERING) + potency += cooldown_time / 4 + strength / 3000 + +/datum/artifact_effect/repulsor/effect_activate(silent) + addtimer(CALLBACK(our_artifact, TYPE_PROC_REF(/datum/component/artifact, artifact_deactivate)), 10 SECONDS) + +/datum/artifact_effect/repulsor/effect_touched(mob/user) + if(!COOLDOWN_FINISHED(src,cooldown)) + return + pulse() + COOLDOWN_START(src,cooldown,cooldown_time) + +/datum/artifact_effect/repulsor/effect_process() + . = ..() + if(prob(100 - potency)) + return + pulse() + +/datum/artifact_effect/repulsor/proc/pulse(datum/source,atom/movable/thrown, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) + SIGNAL_HANDLER + if(!our_artifact.active) + return + our_artifact.holder.visible_message(span_warning("[our_artifact.holder] emits a pulse of energy, throwing things [attract ? "towards it!" : "away from it!"]")) + var/owner_turf = get_turf(our_artifact.holder) + if(isnull(thrown)) + for(var/atom/movable/throwee in oview(range,our_artifact.holder)) + if(throwee.anchored) + continue + if(attract) + throwee.safe_throw_at(our_artifact.holder, strength / 3000, 1, force = strength) + else + var/throwtarget = get_edge_target_turf(get_turf(throwee), get_dir(owner_turf, get_step_away(throwee, owner_turf))) + throwee.safe_throw_at(throwtarget, strength / 3000, 1, force = strength) + else if(throwingdatum?.thrower) + thrown.safe_throw_at(throwingdatum.thrower, get_dist(our_artifact.holder, throwingdatum.thrower), 1, force = strength) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/smoke_artifacts.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/smoke_artifacts.dm similarity index 55% rename from monkestation/code/modules/art_sci_overrides/artifact_components/smoke_artifacts.dm rename to monkestation/code/modules/art_sci_overrides/artifact_effects/smoke_artifacts.dm index 9255e0a53706..5a1e83890be3 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/smoke_artifacts.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/smoke_artifacts.dm @@ -1,10 +1,13 @@ -/datum/component/artifact/smoke - associated_object = /obj/structure/artifact/smoke +/datum/artifact_effect/smoke weight = ARTIFACT_UNCOMMON - type_name = "Smoke Machine" - activation_message = "starts spewing out smoke!" + type_name = "Smoke Machine (Colorful) Effect" + activation_message = "starts spewing out colorful smoke!" deactivation_message = "becomes silent." + research_value = 250 + + examine_discovered = span_warning("It appears to be some sort of checmical aerolyzer for coloring things") + var/list/valid_chemicals = list( /datum/reagent/colorful_reagent, /datum/reagent/colorful_reagent/powder/black, @@ -19,7 +22,7 @@ var/list/chemicals = list() var/smoke_range = 3 -/datum/component/artifact/smoke/setup() +/datum/artifact_effect/smoke/setup() per_chemical_amount = rand(5, 10) chemicals_chosen = rand(1, 5) smoke_range = rand(1, 5) @@ -28,14 +31,15 @@ for(var/i = 1 to chemicals_chosen) chemicals += pick(valid_chemicals) -/datum/component/artifact/smoke/effect_activate(silent) - for(var/chemical in chemicals) - do_chem_smoke(smoke_range, holder = holder, location = get_turf(holder), reagent_type = chemical, reagent_volume = per_chemical_amount, log = TRUE) - artifact_deactivate() +/datum/artifact_effect/smoke/effect_activate(silent) + if(our_artifact.holder) + for(var/chemical in chemicals) + do_chem_smoke(smoke_range, holder = our_artifact.holder, location = get_turf(our_artifact.holder), reagent_type = chemical, reagent_volume = per_chemical_amount, log = TRUE) + our_artifact.artifact_deactivate() -/datum/component/artifact/smoke/toxin - associated_object = /obj/structure/artifact/smoke/toxin +/datum/artifact_effect/smoke/toxin weight = ARTIFACT_RARE + type_name = "Smoke Machine (Harmful) Effect" activation_message = "starts spewing out toxic smoke!" valid_chemicals = list( /datum/reagent/toxin/bonehurtingjuice, @@ -43,19 +47,23 @@ /datum/reagent/toxin/mindbreaker, /datum/reagent/toxin/spewium, ) + examine_discovered = span_danger("It appears to be some sort of checmical aerolyzer for harming things!") -/datum/component/artifact/smoke/flesh - associated_object = /obj/structure/artifact/smoke/flesh +/datum/artifact_effect/smoke/flesh + type_name = "Smoke Machine (Synthflesh) Effect" weight = ARTIFACT_RARE activation_message = "starts spewing out flesh mending smoke!" valid_chemicals = list( /datum/reagent/medicine/c2/synthflesh ) + examine_discovered = span_info("It appears to be some sort of checmical aerolyzer for healing things!") -/datum/component/artifact/smoke/exotic - associated_object = /obj/structure/artifact/smoke/exotic +/datum/artifact_effect/smoke/exotic + type_name = "Smoke Machine (Exotic) Effect" weight = ARTIFACT_RARE activation_message = "starts spewing out exotic smoke!" + + examine_discovered = span_warning("It appears to be some sort of checmical aerolyzer for... not sure actually.") valid_chemicals = list( /datum/reagent/wittel, /datum/reagent/medicine/omnizine/protozine, diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/surgery.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/surgery.dm similarity index 52% rename from monkestation/code/modules/art_sci_overrides/artifact_components/surgery.dm rename to monkestation/code/modules/art_sci_overrides/artifact_effects/surgery.dm index 8164e16fce72..c7bca8396e73 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/surgery.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/surgery.dm @@ -1,7 +1,6 @@ -/datum/component/artifact/surgery - associated_object = /obj/structure/artifact/surgery +/datum/artifact_effect/surgery weight = ARTIFACT_VERYUNCOMMON - type_name = "Surgery Object" + type_name = "Surgery Object Effect" activation_message = "springs to life!" deactivation_message = "becomes silent." valid_activators = list( @@ -10,14 +9,17 @@ ) COOLDOWN_DECLARE(surgery_cooldown) + research_value = 1250 -/datum/component/artifact/surgery/effect_touched(mob/living/user) + examine_discovered = span_warning("It appears to be some sort of automated surgery device") + +/datum/artifact_effect/surgery/effect_touched(mob/living/user) if(!COOLDOWN_FINISHED(src, surgery_cooldown)) - holder.visible_message(span_notice("[holder] wheezes, shutting down.")) + our_artifact.holder.visible_message(span_notice("[our_artifact.holder] wheezes, shutting down.")) return if(!ishuman(user)) return var/mob/living/carbon/human/human = user - human.bioscramble(holder.name) + human.bioscramble(our_artifact.holder.name) COOLDOWN_START(src,surgery_cooldown, 5 SECONDS) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_components/vomit.dm b/monkestation/code/modules/art_sci_overrides/artifact_effects/vomit.dm similarity index 54% rename from monkestation/code/modules/art_sci_overrides/artifact_components/vomit.dm rename to monkestation/code/modules/art_sci_overrides/artifact_effects/vomit.dm index 24b901492867..b3154d75e0d4 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_components/vomit.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_effects/vomit.dm @@ -1,7 +1,6 @@ -/datum/component/artifact/vomit - associated_object = /obj/structure/artifact/vomit +/datum/artifact_effect/vomit weight = ARTIFACT_UNCOMMON - type_name = "Vomiting Inducer" + type_name = "Vomiting Inducer Effect" activation_message = "starts emitting disgusting imagery!" deactivation_message = "falls silent, its aura dissipating!" valid_origins = list( @@ -15,7 +14,12 @@ var/bloody_vomit = FALSE COOLDOWN_DECLARE(cooldown) -/datum/component/artifact/vomit/setup() + research_value = 100 //To busy vomiting cant research + + + examine_discovered = span_warning("It appears to be some sort of sick prank") + +/datum/artifact_effect/vomit/setup() switch(rand(1,100)) if(1 to 84) range = rand(2,3) @@ -29,18 +33,12 @@ potency += spew_range bloody_vomit = prob(50) potency += (range) * 4 - addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/component/artifact, artifact_deactivate)), round(30 * (potency * 10) SECONDS)) -/datum/component/artifact/vomit/on_examine(atom/source, mob/user, list/examine_list) - . = ..() - var/mob/living/carbon/carbon = user - if(active && istype(carbon) && carbon.stat < UNCONSCIOUS) - examine_list += span_warning("It has an [spew_organs ? "extremely" : ""] disgusting aura! [prob(20) ? "..is that a felinid?" : ""]") - carbon.vomit(blood = bloody_vomit, stun = (spew_organs ? TRUE : prob(25)), distance = spew_range) - if(spew_organs && prob(40)) - carbon.spew_organ() -/datum/component/artifact/vomit/effect_process() +/datum/artifact_effect/vomit/effect_activate(silent) + addtimer(CALLBACK(our_artifact, TYPE_PROC_REF(/datum/component/artifact,artifact_deactivate)),30 SECONDS) + +/datum/artifact_effect/vomit/effect_process() for(var/mob/living/carbon/viewed in view(range, src)) if(prob(100 - potency)) continue diff --git a/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_cell.dm b/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_cell.dm index 5f20f628b830..092275d14b2e 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_cell.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_cell.dm @@ -4,11 +4,17 @@ resistance_flags = LAVA_PROOF | ACID_PROOF | INDESTRUCTIBLE ratingdesc = FALSE charge_light_type = null - var/datum/component/artifact/assoc_comp = /datum/component/artifact/cell + obj_flags = CAN_BE_HIT + var/datum/component/artifact/assoc_comp = /datum/component/artifact -ARTIFACT_SETUP(/obj/item/stock_parts/cell/artifact, SSobj) +ARTIFACT_SETUP(/obj/item/stock_parts/cell/artifact, SSobj, null, /datum/artifact_effect/cell, ARTIFACT_SIZE_TINY) /obj/item/stock_parts/cell/artifact/use(amount, force) //dont use power unless active . = FALSE if(assoc_comp.active) return ..() + +/obj/item/stock_parts/cell/artifact/attack_self(mob/user, modifiers) + . = ..() + to_chat(user,span_notice("You squeeze the [src] tightly.")) + on_artifact_touched(src,user,modifiers) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_effect_disk.dm b/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_effect_disk.dm new file mode 100644 index 000000000000..f1c2820e49cb --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_effect_disk.dm @@ -0,0 +1,28 @@ +/obj/item/disk/artifact + name = "artifact data disk" + desc = "A disk for storing an artifacts effect data. Can be put into an xray machine to maybe copy artifact data, or an artifact wand for it's effect." + icon_state = "rndmajordisk" + custom_materials = list(/datum/material/iron=30, /datum/material/glass=10) + var/datum/artifact_effect/effect + var/datum/artifact_activator/activator + var/datum/artifact_fault/fault + var/read_only = FALSE //Well, it's still a floppy disk + obj_flags = UNIQUE_RENAME +/obj/item/disk/artifact/update_name(updates) + . = ..() + var/newname = "" + if(effect) + newname += " ([effect.type_name]) " + if(activator) + newname += " |[activator.name]| " + if(fault) + newname += " ![fault.name]! " + name = initial(name) + newname + +/obj/item/disk/artifact/attack_self(mob/user) + read_only = !read_only + to_chat(user, "You flip the write-protect tab to [src.read_only ? "protected" : "unprotected"].") + +/obj/item/disk/artifact/examine(mob/user) + . = ..() + . += "The write-protect tab is set to [src.read_only ? "protected" : "unprotected"]." diff --git a/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_gun.dm b/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_gun.dm index 37c02bba1e0d..f337be6fb181 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_gun.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_gun.dm @@ -1,10 +1,21 @@ /obj/item/ammo_casing/magic/artifact projectile_type = /obj/projectile/magic/artifact - + var/datum/artifact_effect/gun/stored_comp /obj/item/ammo_casing/magic/artifact/ready_proj(atom/target, mob/living/user, quiet, zone_override = "", atom/fired_from) if(!loaded_projectile) return - var/datum/component/artifact/gun/gun = fired_from.GetComponent(/datum/component/artifact/gun) + var/datum/component/artifact/component = fired_from.GetComponent(/datum/component/artifact) + var/datum/artifact_effect/gun/gun + if(!stored_comp) + for(var/datum/artifact_effect/eff in component.artifact_effects) + if(istype(eff,/datum/artifact_effect/gun)) + gun = eff + stored_comp = gun + break + else + gun = stored_comp + if(!gun) + return loaded_projectile.damage = gun.damage / pellets loaded_projectile.icon_state = gun.projectile_icon loaded_projectile.damage_type = gun.dam_type @@ -39,9 +50,15 @@ pinless = TRUE recharge_rate = 1 antimagic_flags = null - var/datum/component/artifact/assoc_comp = /datum/component/artifact/gun + obj_flags = CAN_BE_HIT + var/datum/component/artifact/assoc_comp = /datum/component/artifact + +ARTIFACT_SETUP(/obj/item/gun/magic/artifact, SSobj, null, /datum/artifact_effect/gun, ARTIFACT_SIZE_SMALL) -ARTIFACT_SETUP(/obj/item/gun/magic/artifact, SSobj) +/obj/item/gun/magic/artifact/attack_self(mob/user, modifiers) + . = ..() + to_chat(user,span_notice("You squeeze the [src] tightly.")) + on_artifact_touched(src,user,modifiers) /obj/item/gun/magic/artifact/can_shoot() return assoc_comp.active diff --git a/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_item.dm b/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_item.dm new file mode 100644 index 000000000000..e6eaf3e204db --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_item.dm @@ -0,0 +1,37 @@ +/obj/item/artifact_item + //This is literally just an artifact, but item sized for item generation of traits that require it. + + icon = 'icons/obj/artifacts.dmi' + icon_state = "narnar-1" + resistance_flags = LAVA_PROOF | ACID_PROOF | INDESTRUCTIBLE + icon = 'icons/obj/artifacts.dmi' + inhand_icon_state = "plasmashiv" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + obj_flags = CAN_BE_HIT + var/datum/component/artifact/assoc_comp = /datum/component/artifact + +ARTIFACT_SETUP(/obj/item/artifact_item, SSobj, null, null, ARTIFACT_SIZE_SMALL) + +/obj/item/artifact_item/attack_self(mob/user, modifiers) + . = ..() + to_chat(user,span_notice("You squeeze the [src] tightly.")) + on_artifact_touched(src,user,modifiers) + + +/obj/item/artifact_item_tiny + //This is literally just an artifact, but s m o l for item generation of traits that require it. + + icon = 'icons/obj/artifacts.dmi' + icon_state = "narnar-1" + resistance_flags = LAVA_PROOF | ACID_PROOF | INDESTRUCTIBLE + icon = 'icons/obj/artifacts.dmi' + var/datum/component/artifact/assoc_comp = /datum/component/artifact + obj_flags = CAN_BE_HIT + +ARTIFACT_SETUP(/obj/item/artifact_item_tiny, SSobj, null, null, ARTIFACT_SIZE_TINY) + +/obj/item/artifact_item_tiny/attack_self(mob/user, modifiers) + . = ..() + to_chat(user,span_notice("You squeeze the [src] tightly.")) + on_artifact_touched(src,user,modifiers) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_manipulators.dm b/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_manipulators.dm new file mode 100644 index 000000000000..13661ae0735b --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_manipulators.dm @@ -0,0 +1,158 @@ +/obj/item/artifact_summon_wand + name = "artifact manipulation wand" + desc = "A one-use device capable of summoning an artifact from... somewhere.Use the item in hand to change modes. Right Click a disk onto it to load the disk. Right Click the item to attempt to summon an artifact, or slap an existing one to modify it." + icon = 'icons/obj/device.dmi' + icon_state = "memorizer2" + inhand_icon_state = "electronic" + worn_icon_state = "electronic" + lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' + w_class = WEIGHT_CLASS_SMALL + slot_flags = ITEM_SLOT_BELT + item_flags = NOBLUDGEON + var/obj/item/disk/artifact/slotted_disk + var/selected_mode = 0 + /// modes are- 0 = random, 1 = blank artifact,2 = disk copy, 3 = disc activator, 4 = disc fault, 5 = disc effect. + var/max_modes = 5 + +/obj/item/artifact_summon_wand/attack_self(mob/user, modifiers) + . = ..() + selected_mode++ + if(selected_mode > max_modes) + selected_mode = 0 + var/display_text = "cause a bug. Tell the coders quick!" + switch(selected_mode) + if(0) + display_text = "create a random artifact." + if(1) + display_text = "create a blank artifact." + if(2) + display_text = "create a copy of inserted disk" + if(3) + display_text = "create or modify an artifact with just the inserted disks activator." + if(4) + display_text = "create or modify an artifact with just the inserted disks fault." + if(5) + display_text = "create or modify an artifact with just the inserted disks effect." + to_chat(user,span_notice("You set [src] to [display_text]")) + +/obj/item/artifact_summon_wand/attackby_secondary(obj/item/weapon, mob/user, params) + . = ..() + if(istype(weapon,/obj/item/disk/artifact)) + if(slotted_disk) + to_chat(user,span_notice("You swap the disk inside [src]")) + weapon.forceMove(src) + if(!user.put_in_hand(slotted_disk)) + slotted_disk.forceMove(get_turf(user)) + slotted_disk = weapon + else + to_chat(user,span_notice("You slot [weapon] inside [src]")) + weapon.forceMove(src) + slotted_disk = weapon +/obj/item/artifact_summon_wand/attack_self_secondary(mob/user, modifiers) + . = ..() + summon_artifact(user) + +/obj/item/artifact_summon_wand/proc/summon_artifact(mob/user) + var/turf/attempt_location = get_turf(get_step(user,user.dir)) + if(attempt_location.density) + return + visible_message(span_notice("[user] begins to summon an artifact using [src]!"),span_notice("You begin attempting to summon an artifact using [src]...")) + if(do_after(user,5 SECOND)) + var/obj/new_artifact = spawn_artifact(attempt_location) + var/datum/component/artifact/art_comp = new_artifact.GetComponent(/datum/component/artifact) + if(!art_comp) + visible_message(span_notice("Something goes wrong, and [src] fizzles!")) + return + switch(selected_mode)//0 left blank, as we don't need to do anything else. + if(1) + art_comp.clear_out() + if(2) + art_comp.clear_out() + if(slotted_disk.activator) + art_comp.add_activator(slotted_disk.activator) + if(slotted_disk.fault) + art_comp.change_fault(slotted_disk.fault) + if(slotted_disk.effect) + art_comp.try_add_effect(slotted_disk.effect) + if(3) + art_comp.clear_out() + if(slotted_disk.activator) + art_comp.add_activator(slotted_disk.activator) + if(4) + art_comp.clear_out() + if(slotted_disk.fault) + art_comp.change_fault(slotted_disk.fault) + if(5) + art_comp.clear_out() + if(slotted_disk.effect) + art_comp.try_add_effect(slotted_disk.effect) + visible_message(span_notice("[new_artifact] appears from nowhere!"),span_notice("You summon [new_artifact], and [src] disintegrates!")) + if(slotted_disk) + if(!user.put_in_active_hand(slotted_disk)) + slotted_disk.forceMove(get_turf(user)) + slotted_disk = null + qdel(src) + else + visible_message(span_notice("Something goes wrong, and [src] fizzles!")) + +/obj/item/artifact_summon_wand/examine(mob/user) + . = ..() + if(slotted_disk) + . += span_notice("Contains [slotted_disk]") + switch (selected_mode) + if(0) + . += span_notice("Will currently try to summon a random artifact.") + if(1) + . += span_notice("Will currently try to summon a blank artifact") + if(2) + . += span_notice("Will currently try to copy the disk to a new or existing artifact.") + if(3) + . += span_notice("Will currently try to copy the disk activator to a new or existing artifact.") + if(4) + . += span_notice("Will currently try to copy the disk fault to a new or existing artifact.") + if(5) + . += span_notice("Will currently try to copy the disk effect to a new or existing artifact.") + +/obj/item/artifact_summon_wand/attack_atom(atom/attacked_atom, mob/living/user, params) + var/datum/component/artifact/art_comp = attacked_atom.GetComponent(/datum/component/artifact) + if(art_comp && slotted_disk) + visible_message(span_notice("[user] begins trying to configure [attacked_atom] with [src]!"),span_notice("You begin trying to configure the [attacked_atom] with [src]...")) + if(do_after(user,5 SECOND)) + var/added_anything = FALSE + switch(selected_mode) + if(0) + visible_message(span_notice("...but nothing changed!")) + if(1) + art_comp.clear_out() + visible_message(span_notice("[attacked_atom] is rendered inert!")) + added_anything = TRUE + if(2) + if(slotted_disk.activator) + added_anything |= art_comp.add_activator(slotted_disk.activator) + if(slotted_disk.fault) + added_anything |= art_comp.change_fault(slotted_disk.fault) + if(slotted_disk.effect) + added_anything |= art_comp.try_add_effect(slotted_disk.effect) + if(3) + if(slotted_disk.activator) + added_anything |= art_comp.add_activator(slotted_disk.activator) + if(4) + if(slotted_disk.fault) + added_anything |= art_comp.change_fault(slotted_disk.fault) + if(5) + if(slotted_disk.effect) + added_anything |= art_comp.try_add_effect(slotted_disk.effect) + if(added_anything) + visible_message(span_notice("[user] configures the [attacked_atom] with [src]!"),span_notice("You configure the [attacked_atom] with [src], which switftly disintegrates!")) + if(slotted_disk) + if(!user.put_in_active_hand(slotted_disk)) + slotted_disk.forceMove(get_turf(user)) + slotted_disk = null + qdel(src) + else + visible_message(span_notice("...but nothing changed!")) + else + visible_message(span_notice("Something goes wrong, and [src] fizzles!")) + return ..() //I TAKE NO RESPONSIBILITY FOR CALLING THIS L A S T. + diff --git a/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_melee.dm b/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_melee.dm index 3ad1b89385d4..c8ef4201b472 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_melee.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_items/artifact_melee.dm @@ -10,12 +10,18 @@ inhand_icon_state = "plasmashiv" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + obj_flags = CAN_BE_HIT var/special_cooldown_time var/special - var/datum/component/artifact/assoc_comp = /datum/component/artifact/melee + var/datum/component/artifact/assoc_comp = /datum/component/artifact COOLDOWN_DECLARE(special_cooldown) -ARTIFACT_SETUP(/obj/item/melee/artifact, SSobj) +ARTIFACT_SETUP(/obj/item/melee/artifact, SSobj, null, /datum/artifact_effect/melee, ARTIFACT_SIZE_SMALL) + +/obj/item/melee/artifact/attack_self(mob/user, modifiers) + . = ..() + to_chat(user,span_notice("You squeeze the [src] tightly.")) + on_artifact_touched(src,user,modifiers) /obj/item/melee/artifact/afterattack(mob/living/victim, mob/user, proximity) if(!istype(victim) || !assoc_comp.active || !COOLDOWN_FINISHED(src,special_cooldown) || !special || !proximity) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_objects/artifact_powergen.dm b/monkestation/code/modules/art_sci_overrides/artifact_objects/artifact_powergen.dm index b2a37bb18adc..b06a9c3d0a65 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_objects/artifact_powergen.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_objects/artifact_powergen.dm @@ -10,12 +10,10 @@ circuit = null density = TRUE anchored = FALSE - var/datum/component/artifact/assoc_comp = /datum/component/artifact/generator + var/datum/component/artifact/assoc_comp = /datum/component/artifact +ARTIFACT_SETUP(/obj/machinery/power/generator_artifact, SSmachines, null, /datum/artifact_effect/generator, null) -ARTIFACT_SETUP(/obj/machinery/power/generator_artifact, SSmachines) - -/datum/component/artifact/generator - associated_object = /obj/machinery/power/generator_artifact +/datum/artifact_effect/generator type_name = "Power Generator" weight = ARTIFACT_RARE valid_activators = list( @@ -29,16 +27,18 @@ ARTIFACT_SETUP(/obj/machinery/power/generator_artifact, SSmachines) /datum/artifact_origin/precursor, /datum/artifact_origin/martian, ) //narnar doesnt need power + + valid_type_paths = list(/obj/machinery/power/generator_artifact) + research_value = 10000 //Holy moly lucky you! activation_message = "begins emitting a faint, droning hum." deactivation_message = "shortcircuits!" - xray_result = "COMPLEX" COOLDOWN_DECLARE(sideeffect_cooldown) var/power_gen = 0 ///does the power output fluctuate var/unstable_generation = FALSE -/datum/component/artifact/generator/setup() //TODO: Make this use some weird scaling math to have it pick higher numbers at lower odds +/datum/artifact_effect/generator/setup() //TODO: Make this use some weird scaling math to have it pick higher numbers at lower odds if(prob(65)) power_gen = rand(1 KW, MAX_POSSIBLE_GEN / 2) else @@ -46,42 +46,42 @@ ARTIFACT_SETUP(/obj/machinery/power/generator_artifact, SSmachines) unstable_generation = prob(40) potency = power_gen / (6 KW) // 100 potency at 600kw generation -/datum/component/artifact/generator/effect_touched(mob/living/user) - var/obj/machinery/power/generator_artifact/powerholder = holder +/datum/artifact_effect/generator/effect_touched(mob/living/user) + var/obj/machinery/power/generator_artifact/powerholder = our_artifact.holder //if on cable and not setup, connect and setup if(!powerholder.anchored && locate(/obj/structure/cable) in get_turf(powerholder)) - powerholder.visible_message(span_warning("[holder] seems to snap to the cable!")) + powerholder.visible_message(span_warning("[our_artifact.holder] seems to snap to the cable!")) playsound(get_turf(powerholder), 'sound/items/deconstruct.ogg', 50, TRUE) powerholder.anchored = TRUE powerholder.connect_to_network() return - holder.Beam(user, icon_state = "lightning[rand(1,12)]", time = 0.5 SECONDS) + our_artifact.holder.Beam(user, icon_state = "lightning[rand(1,12)]", time = 0.5 SECONDS) playsound(get_turf(powerholder), 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5) var/damage = user.electrocute_act(power_gen / 2 KW, powerholder, flags = SHOCK_NOSTUN) - to_chat(user, span_userdanger("You are hit by a burst of electricity from [holder]!")) + to_chat(user, span_userdanger("You are hit by a burst of electricity from [our_artifact.holder]!")) if(damage > 80) - var/turf/owner_turf = get_turf(holder) + var/turf/owner_turf = get_turf(our_artifact.holder) var/throwtarget = get_edge_target_turf(get_turf(user), get_dir(owner_turf, get_step_away(user, owner_turf))) user.safe_throw_at(throwtarget, power_gen / 38 KW, 1, force = MOVE_FORCE_EXTREMELY_STRONG) if(damage > 400 && prob(50)) - user.dust(just_ash = TRUE, drop_items = TRUE) - artifact_deactivate() //shortcircuit + user.death(FALSE) + our_artifact.artifact_deactivate() //shortcircuit if(prob(20)) //try to get yourself shocked with insuls many times to shortcircuit it (in retrospect this sucks) - artifact_deactivate() + our_artifact.artifact_deactivate() -/datum/component/artifact/generator/effect_process() //todo add more - if(!holder.anchored) +/datum/artifact_effect/generator/effect_process() //todo add more + if(!our_artifact.holder.anchored) return - var/obj/machinery/power/generator_artifact/powerholder = holder + var/obj/machinery/power/generator_artifact/powerholder = our_artifact.holder powerholder.add_avail(power_gen * (unstable_generation ? rand(0.1, 1) : 1)) if(power_gen < SIDEEFFECT_THRESHOLD || !COOLDOWN_FINISHED(src,sideeffect_cooldown)) //sorry boss no can do return COOLDOWN_START(src,sideeffect_cooldown,rand(4,8) SECONDS) //minor to medium side effects if(power_gen >= (SHITFUCK_THRESHOLD / 3)) - powerholder.visible_message(span_danger("\The [holder] lets out a shower of thunder!"), span_hear("You hear a loud electrical crack!")) + powerholder.visible_message(span_danger("\The [our_artifact.holder] lets out a shower of thunder!"), span_hear("You hear a loud electrical crack!")) playsound(get_turf(powerholder), 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5) tesla_zap(powerholder, rand(2,3), power_gen / 3500) @@ -97,12 +97,12 @@ ARTIFACT_SETUP(/obj/machinery/power/generator_artifact, SSmachines) merger.assert_gas(/datum/gas/carbon_dioxide) merger.gases[/datum/gas/carbon_dioxide][MOLES] = rand(10,120) merger.temperature = rand(200,1000) - var/turf/holder_turf = get_turf(holder) + var/turf/holder_turf = get_turf(our_artifact.holder) holder_turf.assume_air(merger) -/datum/component/artifact/generator/effect_deactivate() - var/obj/machinery/power/generator_artifact/powerholder = holder +/datum/artifact_effect/generator/effect_deactivate() + var/obj/machinery/power/generator_artifact/powerholder = our_artifact.holder powerholder.disconnect_from_network() powerholder.anchored = FALSE playsound(get_turf(powerholder), 'sound/items/deconstruct.ogg', 50, TRUE) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_proto_datums.dm b/monkestation/code/modules/art_sci_overrides/artifact_proto_datums.dm new file mode 100644 index 000000000000..be213e1102cc --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/artifact_proto_datums.dm @@ -0,0 +1,25 @@ +/datum/design/artifact_summon_wand + name = "Artifact Wand" + desc = "A wand used to create or modify artifacts." + id = "artifact_wand" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold =SHEET_MATERIAL_AMOUNT, /datum/material/plasma =SHEET_MATERIAL_AMOUNT * 4, /datum/material/uranium =SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/artifact_summon_wand + category = list( + RND_CATEGORY_EQUIPMENT + ) + lathe_time_factor = 0.2 + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design/disk/artifact + name = "Artifact Disk" + desc = "A disk used to store artifact data." + id = "disk_artifact" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT/2) + build_path = /obj/item/disk/artifact + category = list( + RND_CATEGORY_EQUIPMENT + ) + lathe_time_factor = 0.1 + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE diff --git a/monkestation/code/modules/art_sci_overrides/artifact_testers/analysis_form.dm b/monkestation/code/modules/art_sci_overrides/artifact_testers/analysis_form.dm index 871bd0f8eb03..7d11430f2492 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_testers/analysis_form.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_testers/analysis_form.dm @@ -34,7 +34,8 @@ contraband = STICKER_NOSPAWN var/chosen_origin = "" var/list/chosentriggers = list() - var/chosentype = "" + var/list/chosen_effects = list() + var/chosen_fault = "" /obj/item/sticker/analysis_form/attackby(obj/item/item, mob/living/user, params) if(istype(item, /obj/item/pen)) @@ -59,31 +60,44 @@ if("origin") chosen_origin = params["origin"] if("type") - chosentype = params["type"] + var/trig_type = params["type"] + if(trig_type in chosen_effects) + chosen_effects -= trig_type + else + chosen_effects += trig_type + if("fault") + chosen_fault = params["fault"] if("trigger") - var/trig = params["trigger"] - if(trig in chosentriggers) - chosentriggers -= trig + var/trig_act = params["trigger"] + if(trig_act in chosentriggers) + chosentriggers -= trig_act else - chosentriggers += trig + chosentriggers += trig_act if(attached) analyze_attached() /obj/item/sticker/analysis_form/ui_static_data(mob/user) . = ..() var/list/origins_names = list() - for(var/datum/artifact_origin/subtype as anything in subtypesof(/datum/artifact_origin)) + for(var/datum/artifact_origin/subtype as anything in subtypesof(/datum/artifact_origin)) origins_names += initial(subtype.name) + var/list/allfaults = list() + for(var/datum/artifact_fault/subtype as anything in subtypesof(/datum/artifact_fault)) + allfaults += initial(subtype.name) + var/list/trigger_names = list() for(var/datum/artifact_activator/subtype as anything in subtypesof(/datum/artifact_activator)) trigger_names += initial(subtype.name) var/list/artifact_names = list() - for(var/datum/component/artifact/subtype as anything in subtypesof(/datum/component/artifact)) + for(var/datum/artifact_effect/subtype as anything in subtypesof(/datum/artifact_effect)) + if(subtype.super_secret) + continue //shhhhh artifact_names += initial(subtype.type_name) .["allorigins"] = origins_names + .["allfaults"] = allfaults .["alltypes"] = artifact_names .["alltriggers"] = trigger_names return @@ -91,7 +105,8 @@ /obj/item/sticker/analysis_form/ui_data(mob/user) . = ..() .["chosenorigin"] = chosen_origin - .["chosentype"] = chosentype + .["chosenfault"] = chosen_fault + .["chosentype"] = chosen_effects .["chosentriggers"] = chosentriggers return . @@ -149,46 +164,60 @@ ..() /obj/item/sticker/analysis_form/proc/analyze_attached() + if(!attached) + return var/datum/component/artifact/to_analyze = attached.GetComponent(/datum/component/artifact) if(!to_analyze) return if(chosen_origin) to_analyze.holder.name = to_analyze.generated_name - if(chosentype) - to_analyze.holder.name += " ([chosentype])" + if(chosen_fault) + to_analyze.holder.name += " ![chosen_fault]! " + if(chosen_effects) + for(var/effect as anything in chosen_effects) + to_analyze.holder.name += " ([effect]) " + to_analyze.analysis = src + to_analyze.process_stimuli(STIMULUS_DATA,TRUE) /obj/item/sticker/analysis_form/proc/deanalyze_attached() var/datum/component/artifact/to_analyze = attached.GetComponent(/datum/component/artifact) if(!to_analyze) return to_analyze.holder.name = to_analyze.fake_name + QDEL_NULL(to_analyze.analysis) /obj/item/sticker/analysis_form/proc/get_export_value(datum/component/artifact/art) - var/correct = 0 - var/total_guesses = 0 - + var/baseval = CARGO_CRATE_VALUE + var/labeling_bonus = round(CARGO_CRATE_VALUE * 2.5) + var/bonus = 0 + for(var/datum/artifact_effect/discovered as anything in art.discovered_effects) + if(discovered.discovered_credits) + bonus += round(discovered.discovered_credits * ((discovered.potency + 25)/50)) + if(art.chosen_fault && art.fault_discovered) + bonus += art.chosen_fault.discovered_credits if(art.artifact_origin.type_name == chosen_origin) - correct ++ - if(chosen_origin) - total_guesses ++ - if(chosentype) - total_guesses ++ - if(art.type_name == chosentype) - correct ++ - for(var/name in chosentriggers) - total_guesses++ - - for(var/datum/artifact_activator/listed in art.activators) - if(listed.name != name) - continue - correct++ - - var/incorrect = total_guesses - correct - return round((CARGO_CRATE_VALUE/4) * art.potency * (max((ARTIFACT_COMMON - art.weight) * 0.01, 0.01) * max(correct - incorrect, 0.01))) + bonus += labeling_bonus + else + bonus -= labeling_bonus + if(chosen_effects) + for(var/name_effect in chosen_effects) + for(var/datum/artifact_effect/effect as anything in art.artifact_effects) + if(effect.type_name != name_effect) + bonus -= labeling_bonus + else + bonus += labeling_bonus + if(chosentriggers) + for(var/name_trigger in chosentriggers) + for(var/datum/artifact_activator/activator as anything in art.activators) + if(activator.name != name_trigger) + bonus -= labeling_bonus + else + bonus += labeling_bonus + return round(baseval + bonus) /obj/item/analysis_bin name = "analysis bin" - desc = "A bin made out of material to resist adhesion, for artifact analysis forms." + desc = "A bin containing a seemingly endless supply of fourms for artifact labeling. Correctly labeled artifacts sell for more!" icon = 'icons/obj/service/bureaucracy.dmi' icon_state = "analysisbin1" base_icon_state = "analysisbin" @@ -196,33 +225,24 @@ lefthand_file = 'icons/mob/inhands/items/sheets_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/sheets_righthand.dmi' w_class = WEIGHT_CLASS_NORMAL - var/forms = 15 - var/form_type = /obj/item/sticker/analysis_form + var/form_type = /obj/item/sticker/analysis_form /obj/item/analysis_bin/Initialize(mapload) . = ..() interaction_flags_item &= ~INTERACT_ITEM_ATTACK_HAND_PICKUP AddElement(/datum/element/drag_pickup) -/obj/item/analysis_bin/update_icon_state() - icon_state = "[base_icon_state][forms > 0]" - return ..() - /obj/item/analysis_bin/attack_hand(mob/user, list/modifiers) if(isliving(user)) var/mob/living/living_mob = user if(!(living_mob.mobility_flags & MOBILITY_PICKUP)) return - if(forms) - forms-- - var/obj/item/form = new form_type - form.add_fingerprint(user) - form.forceMove(user.loc) - user.put_in_hands(form) - balloon_alert(user, "took form") - update_appearance() - else - balloon_alert(user, "empty!") + var/obj/item/form = new form_type + form.add_fingerprint(user) + form.forceMove(user.loc) + user.put_in_hands(form) + balloon_alert(user, "took form") + update_appearance() add_fingerprint(user) return ..() @@ -232,7 +252,6 @@ return qdel(item) balloon_alert(user, "form returned") - forms++ update_appearance() else return ..() diff --git a/monkestation/code/modules/art_sci_overrides/artifact_testers/xray.dm b/monkestation/code/modules/art_sci_overrides/artifact_testers/xray.dm index 70d25ee3243d..12cb72675d26 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_testers/xray.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_testers/xray.dm @@ -1,6 +1,6 @@ /obj/machinery/artifact_xray name = "artifact x-ray machine" - desc = "An x-ray machine, used to scan artifacts." + desc = "An x-ray machine, used to scan artifacts for what they do and research them. Can be Wrenched to turn on Destructive Scan mode, which when given a disk, may record artifact data." icon = 'icons/obj/machines/artifact_machines.dmi' icon_state = "xray-0" base_icon_state = "xray" @@ -8,27 +8,59 @@ circuit = /obj/item/circuitboard/machine/artifactxray use_power = IDLE_POWER_USE ///max radiation level - var/max_radiation = 3 + var/max_radiation = 4 ///chosen radiation level var/chosen_level = 1 var/pulse_time = 4 SECONDS var/pulse_cooldown_time = 3 SECONDS var/list/last_results = list("NO DATA") var/pulsing = FALSE + var/datum/techweb/stored_research + ///Chance to get a disk for an artifact trait on scan. Better scanner, better chance. + var/disk_chance = 20 + ///Are we going for disks, at the risk of destorying artifact? + var/destroy_artifact_mode = FALSE + ///Chance we accidentally destory the artifact on destuctive scan. Better laser, less chance. + var/destroy_chance = 75 + ///The disk we have inside of us, maybe. + var/obj/item/disk/artifact/our_disk COOLDOWN_DECLARE(message_cooldown) COOLDOWN_DECLARE(pulse_cooldown) /obj/machinery/artifact_xray/Initialize(mapload) . = ..() + if(!CONFIG_GET(flag/no_default_techweb_link) && !stored_research) + connect_techweb(SSresearch.science_tech) RefreshParts() +/obj/machinery/artifact_xray/Destroy() + if(stored_research) + log_research("[src] disconnected from techweb [stored_research] (destroyed).") + stored_research = null + QDEL_NULL(wires) + return ..() + + +/obj/machinery/artifact_xray/proc/connect_techweb(datum/techweb/new_techweb) + if(stored_research) + log_research("[src] disconnected from techweb [stored_research] when connected to [new_techweb].") + stored_research = new_techweb + +/obj/machinery/artifact_xray/multitool_act(mob/living/user, obj/item/multitool/tool) + if(!QDELETED(tool.buffer) && istype(tool.buffer, /datum/techweb)) + connect_techweb(tool.buffer) + return TRUE + return FALSE /obj/machinery/artifact_xray/RefreshParts() . = ..() var/power_usage = 250 - for(var/obj/item/stock_parts/micro_laser/laser in component_parts) - max_radiation = round(2.5 * laser.rating) + for(var/datum/stock_part/micro_laser/laser in component_parts) + max_radiation = laser.tier + destroy_chance = round(75 - (15* laser.tier)) for(var/datum/stock_part/capacitor/capac in component_parts) - power_usage -= 30 * capac.tier + power_usage -= round(30 * capac.tier) + for(var/datum/stock_part/scanning_module/scanner in component_parts) + disk_chance = round(20 * scanner.tier) update_mode_power_usage(ACTIVE_POWER_USE, power_usage) /obj/machinery/artifact_xray/update_icon_state() @@ -39,6 +71,12 @@ . = ..() if(!can_interact(user)) return + if(our_disk) + to_chat(user,"You eject the [our_disk.name]") + if(!user.put_in_active_hand(our_disk)) + our_disk.forceMove(get_turf(user)) + our_disk = null + return toggle_open() /obj/machinery/artifact_xray/proc/toggle_open() if(!COOLDOWN_FINISHED(src,pulse_cooldown)) @@ -49,14 +87,29 @@ else flick("xray-opening", src) open_machine() + if(our_disk) + our_disk.forceMove(src)//Hacky way of keeping the disk inside. /obj/machinery/artifact_xray/attackby(obj/item/item, mob/living/user, params) if(HAS_TRAIT(item, TRAIT_NODROP)) to_chat(user, span_warning("[item] is stuck to your hand, you can't put it inside [src]!")) return - if(state_open && COOLDOWN_FINISHED(src,pulse_cooldown)) - close_machine(item) + if(istype(item,/obj/item/disk/artifact)) + if(our_disk) + to_chat(user,"You swap [our_disk.name] for [item.name]") + if(!user.put_in_inactive_hand(our_disk)) + our_disk.forceMove(get_turf(user)) + item.forceMove(src) + our_disk = item + else + to_chat(user,"You insert [item.name]") + item.forceMove(src) + our_disk = item return + if(state_open) + if(COOLDOWN_FINISHED(src,pulse_cooldown)) + close_machine(item) + return ..() /obj/machinery/artifact_xray/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) @@ -89,7 +142,7 @@ return if(isliving(occupant)) if(!(obj_flags & EMAGGED)) - say("Cannot pulse with a living being inside!") + say("ERROR: Life-signs detected in chamber!") return var/datum/component/artifact/component = occupant.GetComponent(/datum/component/artifact) if(component) @@ -106,11 +159,52 @@ playsound(loc, 'sound/machines/chime.ogg', 30, FALSE) COOLDOWN_START(src,pulse_cooldown,pulse_cooldown_time) pulsing = FALSE - if(artifact) - last_results = list("STRUCTURAL ABNORMALITY ANALYSIS: [artifact.xray_result]", "SIZE: [artifact.artifact_size < ARTIFACT_SIZE_LARGE ? "SMALL" : "LARGE" ]") + if(artifact && stored_research) + var/research_added = 0 + if(!artifact.fault_discovered && artifact.chosen_fault) + artifact.freebies = 0 //No more freebies, you know what it does now. + artifact.fault_discovered = TRUE + research_added += artifact.chosen_fault.research_value + if(artifact.chosen_fault) + last_results = list("ARTIFACT FAULT DISCOVERED: [artifact.chosen_fault.name]", "SIZE: [artifact.artifact_size < ARTIFACT_SIZE_LARGE ? "SMALL" : "LARGE" ]") + else + research_added += 2500 + last_results = list("FLAWLESS ARTIFACT. NO FAULTS.", "SIZE: [artifact.artifact_size < ARTIFACT_SIZE_LARGE ? "SMALL" : "LARGE" ]") + if(length(artifact.discovered_effects) != length(artifact.artifact_effects)) + for(var/datum/artifact_effect/eff in artifact.artifact_effects) + artifact.discovered_effects += eff.type + research_added += eff.research_value + last_results += "ARTIFACT EFFECTS REVEALED." + if(!length(artifact.artifact_effects)) + last_results += "MUNDANE ARTIFACT DETECTED. NO NOTEABLE EFFECTS." + if(length(artifact.activators) != length(artifact.activators)) + for(var/datum/artifact_activator/activator in artifact.activators) + artifact.discovered_activators += activator.type + research_added += activator.research_value + last_results += "ARTIFACT ACTIVATORS REVEALED." + last_results+= "WARNING: ARTIFACT FAULT NOW ACTIVE." + if(research_added > 0 && !artifact.researched) + artifact.researched = TRUE + src.visible_message(span_notice("[src] blares: ") + span_robot("ARTIFACT RESEARCHED:[research_added] ADDED TO LINKED CONSOLE")) + stored_research.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = research_added)) + if(our_disk && destroy_artifact_mode) + destructive_scan_artifact(artifact) else - last_results = list("INCONCLUSIVE;", "NO SPECIAL PROPERTIES DETECTED") - + last_results = list("INCONCLUSIVE;", "NO SPECIAL PROPERTIES DETECTED OR NO RESEARCH CONSOLE LINKED.") + return + +/obj/machinery/artifact_xray/proc/destructive_scan_artifact(datum/component/artifact/the_artifact) + if(prob(disk_chance + (5*chosen_level))) + our_disk.effect = pick(the_artifact.artifact_effects) + our_disk.activator = pick(the_artifact.activators) + if(prob(100-destroy_chance)) //Better scanners means better chance of NOT getting fault + our_disk.fault = the_artifact.chosen_fault + our_disk.update_name() + src.visible_message(span_robot("NOTICE: DATA DISK RECORDED.")) + if(prob(destroy_chance + round(2.5 * chosen_level))) + the_artifact.clear_out() + src.visible_message(span_robot("WARNING: ARTIFACT RENDERED INERT.")) + return /obj/machinery/artifact_xray/ui_data(mob/user) . = ..() @@ -145,11 +239,17 @@ else if(!occupant_atom.anchored) return TRUE -/obj/machinery/artifact_xray/screwdriver_act(mob/living/user, obj/item/tool) +/obj/machinery/artifact_xray/wrench_act(mob/living/user, obj/item/tool) if(pulsing) return TOOL_ACT_SIGNAL_BLOCKING - . = default_deconstruction_screwdriver(user, base_icon_state, base_icon_state, tool) + destroy_artifact_mode = !destroy_artifact_mode + var/modestring = destroy_artifact_mode ? "DESTRUCTIVE SCAN" : "NON-DESTRUCTIVE SCAN" + to_chat(user,span_notice("[src] switched to [modestring] mode.")) + return TOOL_ACT_MELEE_CHAIN_BLOCKING + +/obj/machinery/artifact_xray/screwdriver_act(mob/living/user, obj/item/tool) + return pulsing ? TOOL_ACT_SIGNAL_BLOCKING : default_deconstruction_screwdriver(user, "xray-maint", "xray-1", tool) /obj/machinery/artifact_xray/crowbar_act(mob/living/user, obj/item/tool) return pulsing ? TOOL_ACT_SIGNAL_BLOCKING : default_deconstruction_crowbar(tool) diff --git a/monkestation/code/modules/art_sci_overrides/artifact_testers/zapper.dm b/monkestation/code/modules/art_sci_overrides/artifact_testers/zapper.dm index b877d2b4fe91..ca12f10a415c 100644 --- a/monkestation/code/modules/art_sci_overrides/artifact_testers/zapper.dm +++ b/monkestation/code/modules/art_sci_overrides/artifact_testers/zapper.dm @@ -1,6 +1,6 @@ /obj/machinery/artifact_zapper name = "artifact zapper" - desc = "A directed tesla coil, zaps the artifact that it is facing. VERY power-consuming." + desc = "A directed tesla coil, zaps the object that it is facing. VERY power-consuming. Can attempt to turn artifacts into wands if hit with a multi-tool." icon = 'icons/obj/machines/artifact_machines.dmi' icon_state = "zapper" base_icon_state = "zapper" @@ -12,6 +12,8 @@ ///chosen level var/chosen_level = 100 var/pulse_cooldown_time = 4 SECONDS + + var/into_wand_mode = FALSE COOLDOWN_DECLARE(pulse_cooldown) /obj/machinery/artifact_zapper/Initialize(mapload) @@ -59,14 +61,21 @@ component = object.GetComponent(/datum/component/artifact) if(component) break - if(!component) return Beam(component.parent, icon_state="lightning[rand(1,12)]", time = pulse_cooldown_time) playsound(get_turf(src), 'sound/magic/lightningshock.ogg', 60, TRUE, extrarange = 2) use_power(chosen_level) - component.process_stimuli(STIMULUS_SHOCK, chosen_level) + if(!into_wand_mode) + component.process_stimuli(STIMULUS_SHOCK, chosen_level) + else + if(prob(round(chosen_level/100))) + var/obj/item/artifact_summon_wand/wand = new(target_turf) + visible_message("[component.holder] is shocked into [wand]!") + else + visible_message("[component.holder] is shocked into oblivion!") + qdel(component.holder) COOLDOWN_START(src,pulse_cooldown, pulse_cooldown_time) @@ -84,11 +93,20 @@ to_chat(user,span_notice("You short out the safety sensors on the [src].")) playsound(src, SFX_SPARKS, 75, TRUE, SILENCED_SOUND_EXTRARANGE) + +/obj/machinery/artifact_zapper/multitool_act(mob/living/user, obj/item/tool) + if(!COOLDOWN_FINISHED(src,pulse_cooldown)) + return TOOL_ACT_SIGNAL_BLOCKING + into_wand_mode = !into_wand_mode + visible_message(span_info("[src] switches to [into_wand_mode ? "attempting to break down artifacts." : "just zapping artifacts." ]")) + return TOOL_ACT_MELEE_CHAIN_BLOCKING /obj/machinery/artifact_zapper/screwdriver_act(mob/living/user, obj/item/tool) if(!COOLDOWN_FINISHED(src,pulse_cooldown)) return TOOL_ACT_SIGNAL_BLOCKING . = default_deconstruction_screwdriver(user, base_icon_state, base_icon_state, tool) - /obj/machinery/artifact_zapper/crowbar_act(mob/living/user, obj/item/tool) return !COOLDOWN_FINISHED(src,pulse_cooldown) ? TOOL_ACT_SIGNAL_BLOCKING : default_deconstruction_crowbar(tool) + +/obj/machinery/artifact_zapper/wrench_act_secondary(mob/living/user, obj/item/tool) + return !COOLDOWN_FINISHED(src,pulse_cooldown) ? TOOL_ACT_SIGNAL_BLOCKING : default_unfasten_wrench(user, tool) diff --git a/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_generation.dm b/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_generation.dm index af8c9086b989..a1f2951167ac 100644 --- a/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_generation.dm +++ b/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_generation.dm @@ -2,7 +2,69 @@ explodable = TRUE baseturfs = /turf/baseturf_bottom turf_type = /turf/open/misc/asteroid/airless/tospace +/// Breaks down to an asteroid floor that breaks down to space +/turf/closed/mineral/random/asteroid/tospace + baseturfs = /turf/open/misc/asteroid/airless/tospace + +/turf/closed/mineral/random/asteroid/tospace/highchance + mineralChance = 26 + +/turf/closed/mineral/random/asteroid/tospace/lowchance + mineralChance = 6 + +/turf/closed/mineral/random/asteroid/tospace/mineral_chances() + return list( + /obj/item/stack/ore/diamond = 2.5, + /obj/item/stack/ore/gold = 5, + /obj/item/stack/ore/iron = 15, + /obj/item/stack/ore/plasma = 2.5, + /obj/item/stack/ore/bluespace_crystal = 1, + /obj/item/stack/ore/silver = 6, + /obj/item/stack/ore/titanium = 8, + /obj/item/stack/ore/uranium = 5, + /turf/closed/mineral/artifact = 5, + /turf/closed/mineral/mineral_sample = 5, + ) +/// Mapping Stuff +/turf/closed/mineral/asteroid/tospace + baseturfs = /turf/open/misc/asteroid/airless/tospace + name = "rock" + icon = MAP_SWITCH('icons/turf/smoothrocks.dmi', 'icons/turf/mining.dmi') + icon_state = "rock" + +/turf/closed/mineral/asteroid/tospace/uranium + mineralType = /obj/item/stack/ore/uranium + scan_state = "rock_Uranium" + +/turf/closed/mineral/asteroid/tospace/diamond + mineralType = /obj/item/stack/ore/diamond + scan_state = "rock_Diamond" +/turf/closed/mineral/asteroid/tospace/gold + mineralType = /obj/item/stack/ore/gold + scan_state = "rock_Gold" + +/turf/closed/mineral/asteroid/tospace/silver + mineralType = /obj/item/stack/ore/silver + scan_state = "rock_Silver" + +/turf/closed/mineral/asteroid/tospace/titanium + mineralType = /obj/item/stack/ore/titanium + scan_state = "rock_Titanium" + +/turf/closed/mineral/asteroid/tospace/plasma + mineralType = /obj/item/stack/ore/plasma + scan_state = "rock_Plasma" + +/turf/closed/mineral/asteroid/tospace/bananium + mineralType = /obj/item/stack/ore/bananium + mineralAmt = 3 + scan_state = "rock_Bananium" + +/turf/closed/mineral/asteroid/tospace/bscrystal + mineralType = /obj/item/stack/ore/bluespace_crystal + mineralAmt = 1 + scan_state = "rock_BScrystal" /obj/effect/forcefield/asteroid_magnet name = "magnetic field" @@ -35,115 +97,29 @@ }); "} - -/// Breaks down to an asteroid floor that breaks down to space -/turf/closed/mineral/random/asteroid/tospace - baseturfs = /turf/open/misc/asteroid/airless/tospace - -/turf/closed/mineral/random/asteroid/tospace/mineral_chances() - return list( - /obj/item/stack/ore/diamond = 1, - /obj/item/stack/ore/gold = 2, - /obj/item/stack/ore/iron = 10, - /obj/item/stack/ore/plasma = 5, - /obj/item/stack/ore/silver = 1, - /obj/item/stack/ore/titanium = 1, - /obj/item/stack/ore/uranium = 1, - /turf/closed/mineral/artifact = 15, - /turf/closed/mineral/mineral_sample = 15, - ) - -/datum/controller/subsystem/mapping/proc/generate_asteroid(datum/mining_template/template, datum/callback/asteroid_generator) - Master.StartLoadingMap() - - SSatoms.map_loader_begin(REF(template)) - var/list/turfs = asteroid_generator.Invoke() - template.Populate(turfs.Copy()) - SSatoms.map_loader_stop(REF(template)) - - var/list/atoms = list() - // Initialize all of the atoms in the asteroid - for(var/turf/T as anything in turfs) - atoms += T - atoms += T.contents - - SSatoms.InitializeAtoms(atoms) - for(var/turf/T as turf in turfs) - T.AfterChange(CHANGETURF_IGNORE_AIR) - Master.StopLoadingMap() - - template.AfterInitialize(atoms) - /// Cleanup our currently loaded mining template /proc/CleanupAsteroidMagnet(turf/center, size) var/list/turfs_to_destroy = ReserveTurfsForAsteroidGeneration(center, size, baseturf_only = FALSE) - for(var/turf/T as anything in turfs_to_destroy) + for(var/turf/turf as anything in turfs_to_destroy) CHECK_TICK - for(var/atom/movable/AM as anything in T) + for(var/atom/movable/AM as anything in turf) CHECK_TICK if(isdead(AM) || iscameramob(AM) || iseffect(AM) || iseminence(AM) || ismob(AM)) continue qdel(AM) - T.ChangeTurf(/turf/baseturf_bottom) + turf.ChangeTurf(/turf/baseturf_bottom) /// Sanitizes a block of turfs to prevent writing over undesired locations /proc/ReserveTurfsForAsteroidGeneration(turf/center, size, baseturf_only = TRUE) . = list() var/list/turfs = RANGE_TURFS(size, center) - for(var/turf/T as anything in turfs) - if(baseturf_only && !islevelbaseturf(T)) + for(var/turf/turf as anything in turfs) + if(baseturf_only && !islevelbaseturf(turf)) continue - if(!(istype(T.loc, /area/station/cargo/mining/asteroid_magnet))) + if(!(istype(get_area(turf.loc), /area/station/cargo/mining/asteroid_magnet))) continue - . += T + . += turf CHECK_TICK - -/// Generates a circular asteroid. -/proc/GenerateRoundAsteroid(datum/mining_template/template, turf/center = template.center, initial_turf_path = /turf/closed/mineral/random/asteroid/tospace, size = template.size || 6, list/turfs, hollow = FALSE) - . = list() - if(!length(turfs)) - return list() - - if(template) - center = template.center - size = template.size - - size = size + 2 //This is just for generating "smoother" asteroids, it will not go out of reservation space. - - if (hollow) - center = center.ChangeTurf(/turf/open/misc/asteroid/airless/tospace, flags = (CHANGETURF_DEFER_CHANGE|CHANGETURF_DEFAULT_BASETURF)) - else - center = center.ChangeTurf(initial_turf_path, flags = (CHANGETURF_DEFER_CHANGE|CHANGETURF_DEFAULT_BASETURF)) - GENERATOR_CHECK_TICK - - . += center - - var/corner_range = round(size * 1.5) - var/total_distance = 0 - var/current_dist_from_center = 0 - - for (var/turf/current_turf in turfs) - GENERATOR_CHECK_TICK - - current_dist_from_center = get_dist(center, current_turf) - - total_distance = abs(center.x - current_turf.x) + abs(center.y - current_turf.y) + (current_dist_from_center / 2) - // Keep us round - if (total_distance > corner_range) - continue - - if (hollow && total_distance < size / 2) - var/turf/T = locate(current_turf.x, current_turf.y, current_turf.z) - T = T.ChangeTurf(/turf/open/misc/asteroid/airless/tospace, flags = (CHANGETURF_DEFER_CHANGE|CHANGETURF_DEFAULT_BASETURF)) - . += T - - else - var/turf/T = locate(current_turf.x, current_turf.y, current_turf.z) - T = T.ChangeTurf(initial_turf_path, flags = (CHANGETURF_DEFER_CHANGE|CHANGETURF_DEFAULT_BASETURF)) - GENERATOR_CHECK_TICK - . += T - - return . diff --git a/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_magnet.dm b/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_magnet.dm index 1545f11d19f8..5300967aaa12 100644 --- a/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_magnet.dm +++ b/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_magnet.dm @@ -8,14 +8,14 @@ resistance_flags = INDESTRUCTIBLE use_power = NO_POWER_USE - /// Templates available to succ in - var/list/datum/mining_template/available_templates + /// Every Asteroid Template defined, [Asteroid] = [Weight] + var/static/list/datum/map_template/asteroid/available_templates /// All templates in the "map". - var/list/datum/mining_template/templates_on_map + var/list/datum/map_template/asteroid/templates_on_map /// The map that stores asteroids var/datum/cartesian_plane/map /// The currently selected template - var/datum/mining_template/selected_template + var/datum/map_template/asteroid/selected_template /// Center turf X, set in mapping VAR_PRIVATE/center_x = 0 @@ -45,7 +45,6 @@ /obj/machinery/asteroid_magnet/Initialize(mapload) . = ..() if(mapload) - SSmaterials.InitializeTemplates() if(!center_x || !center_y) stack_trace("Asteroid magnet does not have X or Y coordinates, deleting.") return INITIALIZE_HINT_QDEL @@ -55,23 +54,26 @@ return INITIALIZE_HINT_QDEL center_turf = locate(center_x, center_y, z) - available_templates = list() + available_templates = typecacheof(/datum/map_template/asteroid, ignore_root_path = TRUE) + for(var/datum/map_template/asteroid/roid as anything in available_templates) + if(roid.asteroid_weight) + available_templates[roid] = roid.asteroid_weight + else + available_templates[roid] = 100 templates_on_map = list() GenerateMap() /obj/machinery/asteroid_magnet/proc/ping(coords_x, coords_y) - var/datum/mining_template/T = map.return_coordinate(coords_x, coords_y) + var/datum/map_template/asteroid/T = map.return_coordinate(coords_x, coords_y) if(T && !T.found) T.found = TRUE - available_templates |= T - templates_on_map -= T ping_result = "LOCATED" return - var/datum/mining_template/closest + var/datum/map_template/asteroid/closest var/lowest_dist = INFINITY - for(var/datum/mining_template/asteroid as anything in templates_on_map) + for(var/datum/map_template/asteroid/asteroid as anything in templates_on_map) // Get the euclidean distance between the ping and the asteroid. var/dist = sqrt(((asteroid.x - coords_x) ** 2) + ((asteroid.y - coords_y) ** 2)) if(dist < lowest_dist) @@ -85,14 +87,49 @@ var/angle = arccos(dy / sqrt((dx ** 2) + (dy ** 2))) if(dx < 0) // If the X-axis distance is negative, put it between 181 and 359. 180 and 360/0 are impossible, as that requires X == 0. angle = 360 - angle - - ping_result = "AZIMUTH [round(angle, 0.01)]" + var/human_angle = round(angle, 0.01) + switch(human_angle) //Generic Direction, Sub-cardinals, then Cardinals + if(0.01 to 44.99) + ping_result = "NORTH-NORTH-EAST" + if(45.01 to 89.99) + ping_result = "EAST-NORTH-EAST" + if(90.01 to 134.99) + ping_result = "EAST-SOUTH-EAST" + if(135.01 to 179.99) + ping_result = "SOUTH-SOUTH-EAST" + if(180.01 to 224.99) + ping_result = "SOUTH-SOUTH-WEST" + if(225.01 to 269.99) + ping_result = "WEST-SOUTH-WEST" + if(270.01 to 314.99) + ping_result = "WEST-NORTH-WEST" + if(315.01 to 359.99) + ping_result = "NORTH-NORTH-WEST" + if(45) + ping_result = "NORTH-EAST" + if(135) + ping_result = "SOUTH-EAST" + if(225) + ping_result = "SOUTH-WEST" + if(315) + ping_result = "NORTH-WEST" + if(0) + ping_result = "NORTH" + if(90) + ping_result = "EAST" + if(180) + ping_result = "SOUTH" + if(270) + ping_result = "WEST" + ping_result += ": AZIMUTH [human_angle]" else - ping_result = "UKNOWN ERROR, NO ASTEROIDS DETECTED. PLEASE CONTACT CENTCOM TECHNICIANS" + ping_result = "LOCATING NEW ASTEROID FIELD[ellipsis()]" + COOLDOWN_START(src,summon_cd,3 MINUTE) + GenerateMap(FALSE) /// Test to see if we should clear the magnet area. /// Returns FALSE if it can clear, returns a string error message if it can't. -/obj/machinery/asteroid_magnet/proc/check_for_magnet_errors(datum/mining_template/template) +/obj/machinery/asteroid_magnet/proc/check_for_magnet_errors(datum/map_template/asteroid/template) . = FALSE if(summon_in_progress) return "ERROR: ASTEROID ALREADY BEING SUMMONED" @@ -108,10 +145,10 @@ for(var/mob/M as mob in range(area_size + 1, center_turf)) if(isliving(M)) - return "ERROR: HEAT SIGNATURES DETECTED ON THE ASTEROID" + return "ERROR: HEAT SIGNATURES DETECTED IN MAGNET RANGE" /// Performs a full summoning sequence, including putting up boundaries, clearing out the area, and bringing in the new asteroid. -/obj/machinery/asteroid_magnet/proc/summon_sequence(datum/mining_template/template) +/obj/machinery/asteroid_magnet/proc/summon_sequence(datum/map_template/asteroid/template) var/magnet_error = check_for_magnet_errors(template) if(magnet_error) status = magnet_error @@ -131,7 +168,6 @@ CleanupTemplate() PlaceTemplate(template) - /// This process should take ATLEAST 20 seconds time = (world.timeofday + 20 SECONDS) - time if(time > 0) addtimer(CALLBACK(src, PROC_REF(_FinishSummonSequence), template, forcefields), time) @@ -139,22 +175,21 @@ _FinishSummonSequence(template, forcefields) return -/obj/machinery/asteroid_magnet/proc/_FinishSummonSequence(datum/mining_template/template, list/forcefields) +/obj/machinery/asteroid_magnet/proc/_FinishSummonSequence(datum/map_template/asteroid/template, list/forcefields) QDEL_LIST(forcefields) var/area/station/cargo/mining/asteroid_magnet/A = get_area(center_turf) A.area_flags &= ~NOTELEPORT // Annnnd done summon_in_progress = FALSE template.summoned = TRUE - COOLDOWN_START(src, summon_cd, 1 MINUTE) - + COOLDOWN_START(src, summon_cd, 1.5 MINUTE) status = STATUS_OKAY updateUsrDialog() /// Summoning part of summon_sequence() -/obj/machinery/asteroid_magnet/proc/PlaceTemplate(datum/mining_template/template) +/obj/machinery/asteroid_magnet/proc/PlaceTemplate(datum/map_template/asteroid/template) PRIVATE_PROC(TRUE) - template.Generate() + template.load(center_turf,TRUE) /// Places the forcefield boundary during summon_sequence /obj/machinery/asteroid_magnet/proc/PlaceForcefield() @@ -172,7 +207,6 @@ var/list/turfs_to_destroy = ReserveTurfsForAsteroidGeneration(center_turf, area_size, baseturf_only = FALSE) for(var/turf/T as anything in turfs_to_destroy) CHECK_TICK - for(var/atom/movable/AM as anything in T) CHECK_TICK if(isdead(AM) || iscameramob(AM) || iseffect(AM) || !(ismob(AM) || isobj(AM))) @@ -183,34 +217,27 @@ /// Generates the random map for the magnet. -/obj/machinery/asteroid_magnet/proc/GenerateMap() +/obj/machinery/asteroid_magnet/proc/GenerateMap(initial = TRUE) PRIVATE_PROC(TRUE) - map = new(-100, 100, -100, 100) - + if(initial) + map = new(-100, 100, -100, 100) // Generate common templates - if(length(SSmaterials.template_paths_by_rarity["[MINING_COMMON]"])) + if(length(available_templates)) for(var/i in 1 to 12) - InsertTemplateToMap(pick(SSmaterials.template_paths_by_rarity["[MINING_COMMON]"])) - - /* - // Generate uncommon templates - for(var/i in 1 to 4) - InsertTemplateToMap(pick(SSmaterials.template_paths_by_rarity["[MINING_UNCOMMON]"])) - // Generate rare templates - for(var/i in 1 to 2) - InsertTemplateToMap(pick(SSmaterials.template_paths_by_rarity["[MINING_RARE]"])) - */ + var/datum/map_template/asteroid/possible = pick_weight(available_templates) + if(possible.size > area_size) + continue + InsertTemplateToMap(possible) /obj/machinery/asteroid_magnet/proc/InsertTemplateToMap(path) PRIVATE_PROC(TRUE) var/collisions = 0 - var/datum/mining_template/template + var/datum/map_template/asteroid/template var/x var/y template = new path(center_turf, area_size) - template.randomize() templates_on_map += template do @@ -245,12 +272,14 @@ data["Auto_pinging"] = Auto_pinging var/list/asteroid_data = list() - for(var/datum/mining_template/asteroid as anything in available_templates) + for(var/datum/map_template/asteroid/asteroid as anything in templates_on_map) + if(!asteroid.found) + continue asteroid_data += list(list( "name" = "[asteroid.name] ([asteroid.x] [asteroid.y])", "ref" = REF(asteroid), "size" = asteroid.size, - "rarity" = asteroid.rarity, + "rarity" = asteroid.asteroid_weight, )) data["asteroids"] = asteroid_data @@ -297,9 +326,11 @@ ping(coords_x, coords_y) if("select") - var/datum/mining_template/asteroid = locate(params["asteroid_reference"]) in available_templates + var/datum/map_template/asteroid/asteroid = locate(params["asteroid_reference"]) in templates_on_map + templates_on_map -= asteroid selected_template = asteroid summon_sequence(selected_template) + #undef MAX_COLLISIONS_BEFORE_ABORT #undef STATUS_OKAY diff --git a/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_template.dm b/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_template.dm deleted file mode 100644 index 2edf807938a5..000000000000 --- a/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_template.dm +++ /dev/null @@ -1,46 +0,0 @@ - -/datum/mining_template - var/name = "PLACEHOLDER NAME" - var/rarity = MINING_NO_RANDOM_SPAWN - var/randomly_appear = FALSE - /// The size (radius, chebyshev distance). Will be clamped to the size of the asteroid magnet in New(). - var/size = 7 - /// The center turf. - var/turf/center - - // Asteroid Map location - var/x - var/y - - /// Has this template been located by players? - var/found = FALSE - /// Has this template been summoned? - var/summoned = FALSE - -/datum/mining_template/New(center, max_size) - . = ..() - src.center = center - if(size) - size = max(size, max_size) - - -/// Randomize the data of this template. Does not change size, center, or location. -/datum/mining_template/proc/randomize() - return - -/// The proc to call to completely generate an asteroid -/datum/mining_template/proc/Generate() - return - -/// Called during SSmapping.generate_asteroid(). Here is where you mangle the geometry provided by the asteroid generator function. -/// Atoms at this stage are NOT initialized -/datum/mining_template/proc/Populate(list/turfs) - return - -/// Called during SSmapping.generate_asteroid() after all atoms have been initialized. -/datum/mining_template/proc/AfterInitialize(list/atoms) - return - -/// Called by an asteroid magnet to return a description as a list of bullets -/datum/mining_template/proc/get_description() - return list() diff --git a/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_templates.dm b/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_templates.dm new file mode 100644 index 000000000000..7bd16a72d55a --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/asteroids/asteroid_templates.dm @@ -0,0 +1,144 @@ +/datum/map_template/asteroid + name = "Asteroid" + ///This is just a reminder, set the path will you? cant load what we cant find. + //mappath = + + ///X wise, where are we on the Cartesian Plane? + var/x + ///Y wise, where are we on the Cartesian Plane? + var/y + ///Have we found this astroid, but not yet summoned it? + var/found = FALSE + ///Have we already summoned this boi to the station? + var/summoned = FALSE + ///Radius, how big this boi? 7 is max, so 15x15 total! + var/size = 7 + ///How likely is this to generate? We'll assume a base weight of 100 if not defined. + var/asteroid_weight + ///Where folder-wise is this map? + var/prefix = "_maps/~monkestation/asteroid_maps/" + ///What is the map's name? + var/suffix + +/datum/map_template/asteroid/New() + mappath = prefix+suffix + ..(path = mappath) + +/datum/map_template/asteroid/test + name = "Smiley Asteroid" + suffix = "test_rock.dmm" + size = 7 + + asteroid_weight = 1 + +/datum/map_template/asteroid/test_two + name = "Frowny Asteroid" + suffix = "test_rock_boogaloo.dmm" + size = 7 + + asteroid_weight = 1 + +/datum/map_template/asteroid/standard_large + name = "Large Asteroid" + suffix = "rock.dmm" + size = 7 + + asteroid_weight = 75 + +/datum/map_template/asteroid/standard_smol + name = "Small Asteroid" + suffix = "smol_rock.dmm" + size = 3 + + asteroid_weight = 100 + +/datum/map_template/asteroid/binary + name = "Binary Asteroids" + suffix = "binary.dmm" + size = 6 + + asteroid_weight = 25 + +/datum/map_template/asteroid/artifact_capsule + name = "Unknown Metal Object" + suffix = "capsule.dmm" + size = 1 + + asteroid_weight = 10 + +/datum/map_template/asteroid/standard_medium + name = "Asteroid" + suffix = "medium_rock.dmm" + size = 4 + + asteroid_weight = 125 + +/datum/map_template/asteroid/rock_bar + name = "Hollowed Asteroid" + suffix = "rockbar.dmm" + size = 6 + + asteroid_weight = 10 + +/datum/map_template/asteroid/geode + name = "Asteroid" + suffix = "geode.dmm" + size = 3 + + asteroid_weight = 25 + +/datum/map_template/asteroid/sealed_danger + name = "Asteroid" + suffix = "sealed_danger.dmm" + size = 3 + + asteroid_weight = 30 + +/datum/map_template/asteroid/rich_small + name = "Asteroid" + suffix = "strong_rock.dmm" + size = 3 + + asteroid_weight = 40 + +/datum/map_template/asteroid/poor_small + name = "Asteroid" + suffix = "weak_rock.dmm" + size = 3 + + asteroid_weight = 80 + +/datum/map_template/asteroid/mutual_destruction_rock + name = "Asteroid" + suffix = "mad_rock.dmm" + size = 3 + + asteroid_weight = 50 + +/datum/map_template/asteroid/cargo_empty + name = "Abandoned Shipping Container" + suffix = "cargo_empty.dmm" + size = 3 + + asteroid_weight = 10 + +/datum/map_template/asteroid/cargo_crates + name = "Abandoned Shipping Container" + suffix = "cargo_crates.dmm" + size = 3 + + asteroid_weight = 10 + +/datum/map_template/asteroid/cargo_bad + name = "Abandoned Shipping Container" + suffix = "cargo_danger.dmm" + size = 3 + + asteroid_weight = 5 + +/datum/map_template/asteroid/cargo_artifacts + name = "Abandoned Shipping Container" + suffix = "cargo_artifacts.dmm" + size = 3 + + asteroid_weight = 10 diff --git a/monkestation/code/modules/art_sci_overrides/asteroids/simple_asteroid.dm b/monkestation/code/modules/art_sci_overrides/asteroids/simple_asteroid.dm deleted file mode 100644 index 26a7381872d1..000000000000 --- a/monkestation/code/modules/art_sci_overrides/asteroids/simple_asteroid.dm +++ /dev/null @@ -1,15 +0,0 @@ -/datum/mining_template/simple_asteroid - name = "Asteroid" - rarity = MINING_COMMON - size = 3 - - -/datum/mining_template/simple_asteroid/get_description() - . = ..() - . += "
    > STANDARD
    " - -/datum/mining_template/simple_asteroid/Generate() - var/is_hollow = rand(15) - var/list/turfs = ReserveTurfsForAsteroidGeneration(center, size, FALSE) - var/datum/callback/asteroid_cb = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(GenerateRoundAsteroid), src, center, /turf/closed/mineral/random/asteroid/tospace, null, turfs, is_hollow) - SSmapping.generate_asteroid(src, asteroid_cb) diff --git a/monkestation/code/modules/art_sci_overrides/faults/_fault.dm b/monkestation/code/modules/art_sci_overrides/faults/_fault.dm index 607340139449..2a86f5e958ec 100644 --- a/monkestation/code/modules/art_sci_overrides/faults/_fault.dm +++ b/monkestation/code/modules/art_sci_overrides/faults/_fault.dm @@ -4,12 +4,34 @@ var/visible_message ///the chance of us triggering on bad info var/trigger_chance = 0 + //how many credits do we get for discovering this? Should be negative. + var/discovered_credits = 0 + //If availible, warns users that this WILL fuck you up. Picks randomly from list + var/list/inspect_warning + ///Added by xray machine when discovered. + var/research_value = 0 + ///How likely the fault is to roll. + var/weight = ARTIFACT_COMMON + ///Our Artifact + var/datum/component/artifact/our_artifact -/datum/artifact_fault/proc/on_trigger(datum/component/artifact/component) +/datum/artifact_fault/Destroy(force) + our_artifact = null + return ..() + +///called when the artifact gets a stimulus, and passes its trigger chance effect. +/datum/artifact_fault/proc/on_trigger() + return + +///Called when the artifact trait comes into existance +/datum/artifact_fault/proc/on_added() return /datum/artifact_fault/shutdown - name = "Generic Shutdown Fault" + name = "Random Shutdown Fault" + visible_message = "has something malfunction and shuts down!" + trigger_chance = 1 + /datum/artifact_fault/on_trigger(datum/component/artifact/component) if(component.active) diff --git a/monkestation/code/modules/art_sci_overrides/faults/bioscrambler.dm b/monkestation/code/modules/art_sci_overrides/faults/bioscrambler.dm new file mode 100644 index 000000000000..f6ee86615c5e --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/faults/bioscrambler.dm @@ -0,0 +1,21 @@ +/datum/artifact_fault/bioscramble + name = "Bioscrambling Fault" + trigger_chance = 3 + visible_message = "corrupts nearby biological life!" + + inspect_warning = list(span_danger("It looks like its made of patchwork flesh!"), + span_danger("It looks Frankenstien like!")) + + research_value = 250 + + weight = ARTIFACT_UNCOMMON + +/datum/artifact_fault/bioscramble/on_trigger() + var/center_turf = get_turf(our_artifact.parent) + + if(!center_turf) + CRASH("[src] had attempted to trigger, but failed to find the center turf!") + + for(var/mob/living/carbon/mob in range(rand(3, 4), center_turf)) + for(var/i in 1 to 3) + mob.bioscramble(our_artifact.holder) diff --git a/monkestation/code/modules/art_sci_overrides/faults/clowning.dm b/monkestation/code/modules/art_sci_overrides/faults/clowning.dm new file mode 100644 index 000000000000..891e99e825ab --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/faults/clowning.dm @@ -0,0 +1,19 @@ +/datum/artifact_fault/clown + name = "Funny Fault" + trigger_chance = 5 + inspect_warning = list("Smells faintly of bananas","Looks Funny.","Hates mimes.") + visible_message = "summons a portal to the HONK DIMENSION!" + discovered_credits = -500 + research_value = 250 + + weight = ARTIFACT_VERYRARE + +/datum/artifact_fault/clown/on_trigger() + var/center_turf = get_turf(our_artifact.parent) + + if(!center_turf) + CRASH("[src] had attempted to trigger, but failed to find the center turf!") + + var/obj/structure/spawner/clown/hehe = new(src) + + addtimer(CALLBACK(hehe,PROC_REF(Destroy)),3 MINUTE) diff --git a/monkestation/code/modules/art_sci_overrides/faults/explosion.dm b/monkestation/code/modules/art_sci_overrides/faults/explosion.dm index f7c028e58860..e75032695910 100644 --- a/monkestation/code/modules/art_sci_overrides/faults/explosion.dm +++ b/monkestation/code/modules/art_sci_overrides/faults/explosion.dm @@ -1,12 +1,16 @@ /datum/artifact_fault/explosion - name = "Explode" + name = "Exploding Fault" trigger_chance = 3 visible_message = "reaches a catastrophic overload, cracks forming at its surface!" -/datum/artifact_fault/explosion/on_trigger(datum/component/artifact/component) - component.holder.Shake(duration = 5 SECONDS, shake_interval = 0.08 SECONDS) - addtimer(CALLBACK(src, PROC_REF(payload), component), 5 SECONDS) + research_value = 500 //nanotrasen always likes weapons IMO -/datum/artifact_fault/explosion/proc/payload(datum/component/artifact/component) - explosion(component.holder, light_impact_range = 2, explosion_cause = src) - qdel(component.holder) + weight = ARTIFACT_UNCOMMON + +/datum/artifact_fault/explosion/on_trigger() + our_artifact.holder.Shake(duration = 5 SECONDS, shake_interval = 0.08 SECONDS) + addtimer(CALLBACK(src, PROC_REF(payload), our_artifact), 5 SECONDS) + +/datum/artifact_fault/explosion/proc/payload() + explosion(our_artifact.holder, light_impact_range = 2, explosion_cause = src) + qdel(our_artifact.holder) diff --git a/monkestation/code/modules/art_sci_overrides/faults/greg.dm b/monkestation/code/modules/art_sci_overrides/faults/greg.dm new file mode 100644 index 000000000000..84b18480cf62 --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/faults/greg.dm @@ -0,0 +1,16 @@ +/datum/artifact_fault/greg + name = "Greg Fault" + discovered_credits = 250 + research_value = 1000 + trigger_chance = 5 + weight = ARTIFACT_RARE + +/datum/artifact_fault/greg/on_added() + our_artifact.holder.AddComponent(/datum/component/ghost_object_control,our_artifact.holder,TRUE) + +/datum/artifact_fault/greg/on_trigger() + var/datum/component/ghost_object_control/spiritholder = our_artifact.holder.GetComponent(/datum/component/ghost_object_control) + + if(!(spiritholder.bound_spirit)) + spiritholder.request_control(0.8) + diff --git a/monkestation/code/modules/art_sci_overrides/faults/ignite.dm b/monkestation/code/modules/art_sci_overrides/faults/ignite.dm index 631f17f850ae..be0cb8498d11 100644 --- a/monkestation/code/modules/art_sci_overrides/faults/ignite.dm +++ b/monkestation/code/modules/art_sci_overrides/faults/ignite.dm @@ -1,10 +1,14 @@ /datum/artifact_fault/ignite - name = "Combust" - trigger_chance = 9 + name = "Combustion Fault" + trigger_chance = 10 visible_message = "starts rapidly heating up while covering everything around it in something that seems to be oil." -/datum/artifact_fault/ignite/on_trigger(datum/component/artifact/component) - var/center_turf = get_turf(component.parent) + research_value = 200 + + weight = ARTIFACT_UNCOMMON + +/datum/artifact_fault/ignite/on_trigger() + var/center_turf = get_turf(our_artifact.parent) if(!center_turf) CRASH("[src] had attempted to trigger, but failed to find the center turf!") diff --git a/monkestation/code/modules/art_sci_overrides/faults/just_death.dm b/monkestation/code/modules/art_sci_overrides/faults/just_death.dm index 8b7b2f8d3c45..c2585b17aef3 100644 --- a/monkestation/code/modules/art_sci_overrides/faults/just_death.dm +++ b/monkestation/code/modules/art_sci_overrides/faults/just_death.dm @@ -1,21 +1,29 @@ /datum/artifact_fault/death - name = "Instant Death" - trigger_chance = 1 + name = "Instant Death Fault" + trigger_chance = 50 //God forbid this actually rolls on a touch artifact,like it did during my testing. visible_message = "blows someone up with mind." + inspect_warning = list(span_danger("The grim reapers scythe seems to be reflected in its surface!"), + span_danger("An Aura of death surrounds this object!"), + span_danger("I'd bet 50/50 someone dies if this turns on!")) -/datum/artifact_fault/death/on_trigger(datum/component/artifact/component) + research_value = 10000 //Wow, this would make a fucking amazing weapon + + weight = ARTIFACT_VERYRARE +/datum/artifact_fault/death/on_trigger() var/list/mobs = list() var/mob/living/carbon/human - var/center_turf = get_turf(component.parent) + var/center_turf = get_turf(our_artifact.parent) if(!center_turf) CRASH("[src] had attempted to trigger, but failed to find the center turf!") - for(var/mob/living/carbon/mob in range(rand(3, 4), center_turf)) + for(var/mob/living/carbon/mob in range(rand(2, 3), center_turf)) mobs += mob + if(!length(mobs)) + return human = pick(mobs) if(!human) return - component.holder.Beam(human, icon_state = "lightning[rand(1,12)]", time = 0.5 SECONDS) + our_artifact.holder.Beam(human, icon_state = "lightning[rand(1,12)]", time = 0.5 SECONDS) human.death(FALSE) diff --git a/monkestation/code/modules/art_sci_overrides/faults/monkey_mode.dm b/monkestation/code/modules/art_sci_overrides/faults/monkey_mode.dm new file mode 100644 index 000000000000..753de53424a5 --- /dev/null +++ b/monkestation/code/modules/art_sci_overrides/faults/monkey_mode.dm @@ -0,0 +1,34 @@ +/datum/artifact_fault/monkey_mode + name = "Simian Spawner Fault" + trigger_chance = 5 + visible_message = "summons a mass of simians!" + + research_value = 250 + + weight = ARTIFACT_VERYUNCOMMON + +/datum/artifact_fault/monkey_mode/on_trigger() + var/monkey = rand(1,4) + var/center_turf = get_turf(our_artifact.parent) + var/list/turf/valid_turfs = list() + if(!center_turf) + CRASH("[src] had attempted to trigger, but failed to find the center turf!") + for(var/turf/boi in range(rand(3,6),center_turf)) + if(boi.density) + continue + valid_turfs += boi + for(var/i in 1 to monkey) + var/turf/spawnon = pick(valid_turfs) + valid_turfs -= spawnon + var/pain = roll(1,100) + var/mob/living/M //For monkey + switch(pain) + if(1 to 75) + M = new /mob/living/carbon/human/species/monkey/angry(spawnon) + if(75 to 95) + M = new /mob/living/basic/gorilla(spawnon) + if(95 to 100) + M = new /mob/living/basic/gorilla/lesser(spawnon)//OH GOD ITS TINY + if(M) //Just in case. + M.forceMove(spawnon) + diff --git a/monkestation/code/modules/art_sci_overrides/faults/reagents.dm b/monkestation/code/modules/art_sci_overrides/faults/reagents.dm index c2ab103e18cb..1b9840223db5 100644 --- a/monkestation/code/modules/art_sci_overrides/faults/reagents.dm +++ b/monkestation/code/modules/art_sci_overrides/faults/reagents.dm @@ -1,15 +1,17 @@ /datum/artifact_fault/reagent - name = "Generic Reagent Injector" + name = "Chemical Force Injector Fault" trigger_chance = 15 visible_message = "shoots a syringe out." var/list/reagents = list() -/datum/artifact_fault/reagent/on_trigger(datum/component/artifact/component) + research_value = 100 + +/datum/artifact_fault/reagent/on_trigger() . = ..() if(!length(reagents)) return - var/center_turf = get_turf(component.parent) + var/center_turf = get_turf(our_artifact.parent) if(!center_turf) CRASH("[src] had attempted to trigger, but failed to find the center turf!") @@ -21,7 +23,7 @@ /datum/artifact_fault/reagent/poison name = "Poison" -/datum/artifact_fault/reagent/poison/on_trigger(datum/component/artifact/component) +/datum/artifact_fault/reagent/poison/on_trigger() if(!reagents.len) //mostly copied from reagents.dm but oh well for(var/datum/reagent/reagent as anything in subtypesof(/datum/reagent/toxin)) if(initial(reagent.chemical_flags) & REAGENT_CAN_BE_SYNTHESIZED) diff --git a/monkestation/code/modules/art_sci_overrides/faults/say.dm b/monkestation/code/modules/art_sci_overrides/faults/say.dm index fca9f1d6e653..f9b56de690a1 100644 --- a/monkestation/code/modules/art_sci_overrides/faults/say.dm +++ b/monkestation/code/modules/art_sci_overrides/faults/say.dm @@ -1,19 +1,21 @@ /datum/artifact_fault/speech - name = "Generic Speech" - trigger_chance = 30 - var/list/speech = list() + name = "Talkative Fault" + trigger_chance = 25 + var/list/speech = list("Hello there.","I see you.","I know what you've done.","So hows your shift?","HELP ARTIFACT IS MAKING ME SPEAK","All is one.","One is all.") -/datum/artifact_fault/speech/on_trigger(datum/component/artifact/component) + research_value = 50 + +/datum/artifact_fault/speech/on_trigger() if(!length(speech)) return - var/center_turf = get_turf(component.parent) + var/center_turf = get_turf(our_artifact.parent) if(!center_turf) CRASH("[src] had attempted to trigger, but failed to find the center turf!") for(var/mob/living/living in range(rand(7, 10), center_turf)) - if(prob(50)) + if(prob(10)) living.say("; [pick(speech)]") else living.say("[pick(speech)]") diff --git a/monkestation/code/modules/art_sci_overrides/faults/size_change.dm b/monkestation/code/modules/art_sci_overrides/faults/size_change.dm index 847a555801ef..cfe4599826c4 100644 --- a/monkestation/code/modules/art_sci_overrides/faults/size_change.dm +++ b/monkestation/code/modules/art_sci_overrides/faults/size_change.dm @@ -1,33 +1,40 @@ /datum/artifact_fault/shrink - name = "Shrink" + name = "Shrinking Fault" trigger_chance = 13 visible_message = "starts to shrink." -/datum/artifact_fault/shrink/on_trigger(datum/component/artifact/component) - component.holder.transform = matrix(component.holder.transform, 0.9, 0.9, MATRIX_SCALE) - if(!isstructure(component.holder)) + research_value = 200 + +/datum/artifact_fault/shrink/on_trigger() + our_artifact.holder.transform = matrix(our_artifact.holder.transform, 0.9, 0.9, MATRIX_SCALE) + if(!isstructure(our_artifact.holder)) return - var/obj/structure/structure = component.holder + var/obj/structure/structure = our_artifact.holder structure.w_class-- if(structure.w_class < WEIGHT_CLASS_TINY) - component.holder.visible_message("[component.holder] vanishes into thin air!") - qdel(component.holder) + our_artifact.holder.visible_message("[our_artifact.holder] vanishes into thin air!") + qdel(our_artifact.holder) /datum/artifact_fault/grow - name = "Grow" + name = "Growing Fault" trigger_chance = 13 visible_message = "starts to grow." -/datum/artifact_fault/grow/on_trigger(datum/component/artifact/component) - if(!isitem(component.holder)) + var/trigger_count = 0 +/datum/artifact_fault/grow/on_trigger() + trigger_count++ + if(trigger_count<5) + our_artifact.holder.transform = matrix(our_artifact.holder.transform, 1.1, 1.1, MATRIX_SCALE) + else + our_artifact.holder.visible_message("[our_artifact.holder] can't possibly grow any larger!") + return + if(!isitem(our_artifact.holder)) return - var/obj/item/item = component.holder + var/obj/item/item = our_artifact.holder if(item.w_class > WEIGHT_CLASS_HUGE) return - component.holder.transform = matrix(component.holder.transform, 1.1, 1.1, MATRIX_SCALE) - item.w_class++ if(item.w_class > WEIGHT_CLASS_HUGE) - component.holder.visible_message("[component.holder] becomes to cumbersome to carry!") - component.holder.anchored = TRUE + our_artifact.holder.visible_message("[our_artifact.holder] becomes to cumbersome to carry!") + our_artifact.holder.anchored = TRUE diff --git a/monkestation/code/modules/art_sci_overrides/faults/warps.dm b/monkestation/code/modules/art_sci_overrides/faults/warps.dm index 6014fc2a03eb..72b8b99fbce4 100644 --- a/monkestation/code/modules/art_sci_overrides/faults/warps.dm +++ b/monkestation/code/modules/art_sci_overrides/faults/warps.dm @@ -1,14 +1,18 @@ /datum/artifact_fault/warp - name = "Generic Warp Artifact" + name = "Warping Fault" trigger_chance = 12 visible_message = "warps space sending everyone away." var/list/warp_areas = list() -/datum/artifact_fault/warp/on_trigger(datum/component/artifact/component) + research_value = 250 + + weight = ARTIFACT_UNCOMMON + +/datum/artifact_fault/warp/on_trigger() if(!length(warp_areas)) warp_areas = GLOB.the_station_areas var/turf/safe_turf = get_safe_random_station_turf(warp_areas) - var/center_turf = get_turf(component.parent) + var/center_turf = get_turf(our_artifact.parent) if(!center_turf) CRASH("[src] had attempted to trigger, but failed to find the center turf!") diff --git a/monkestation/code/modules/art_sci_overrides/faults/whispers.dm b/monkestation/code/modules/art_sci_overrides/faults/whispers.dm index b85fd5b57427..727c88a3f55c 100644 --- a/monkestation/code/modules/art_sci_overrides/faults/whispers.dm +++ b/monkestation/code/modules/art_sci_overrides/faults/whispers.dm @@ -1,13 +1,15 @@ /datum/artifact_fault/whisper - name = "Generic Whisper" - trigger_chance = 30 - var/list/whispers = list() + name = "Wispering Fault" + trigger_chance = 75 + var/list/whispers = list("Help me!","I've seen your sins","Egg.") -/datum/artifact_fault/whisper/on_trigger(datum/component/artifact/component) + research_value = 50 + +/datum/artifact_fault/whisper/on_trigger() if(!length(whispers)) return - var/center_turf = get_turf(component.parent) + var/center_turf = get_turf(our_artifact.parent) if(!center_turf) CRASH("[src] had attempted to trigger, but failed to find the center turf!") diff --git a/monkestation/code/modules/art_sci_overrides/faults/zap.dm b/monkestation/code/modules/art_sci_overrides/faults/zap.dm index 303bb44c248c..e09cadc74f5b 100644 --- a/monkestation/code/modules/art_sci_overrides/faults/zap.dm +++ b/monkestation/code/modules/art_sci_overrides/faults/zap.dm @@ -1,8 +1,23 @@ /datum/artifact_fault/tesla_zap - name = "Tesla Zap" + name = "Energetic Discharge Fault" trigger_chance = 12 - visible_message = "discharges a large amount of electricity." + visible_message = "discharges a large amount of electricity!" -/datum/artifact_fault/tesla_zap/on_trigger(datum/component/artifact/component) - . = ..() - tesla_zap(component.holder, rand(4, 7), ZAP_MOB_DAMAGE) + research_value = 200 + + weight = ARTIFACT_RARE + +/datum/artifact_fault/tesla_zap/on_trigger() + var/list/mobs = list() + + var/center_turf = get_turf(our_artifact.parent) + + if(!center_turf) + CRASH("[src] had attempted to trigger, but failed to find the center turf!") + var/shock_range = rand(4, 7) + for(var/mob/living/carbon/mob in range(shock_range, center_turf)) + mobs += mob + if(!length(mobs)) + return + + tesla_zap(our_artifact.holder, shock_range, ZAP_MOB_DAMAGE,shocked_targets = mobs) diff --git a/monkestation/code/modules/art_sci_overrides/generic_artifact_objects.dm b/monkestation/code/modules/art_sci_overrides/generic_artifact_objects.dm index 6443ef06db38..3192c5dd3e98 100644 --- a/monkestation/code/modules/art_sci_overrides/generic_artifact_objects.dm +++ b/monkestation/code/modules/art_sci_overrides/generic_artifact_objects.dm @@ -6,10 +6,11 @@ resistance_flags = LAVA_PROOF | ACID_PROOF | INDESTRUCTIBLE anchored = FALSE density = TRUE - var/datum/component/artifact/assoc_comp + var/datum/artifact_effect/forced_effect + var/datum/component/artifact/assoc_comp = /datum/component/artifact var/mutable_appearance/extra_effect -ARTIFACT_SETUP(/obj/structure/artifact, SSobj) +ARTIFACT_SETUP(/obj/structure/artifact, SSobj, null, forced_effect, null) /obj/effect/artifact_spawner name = "Random Artifact Spawner" @@ -22,54 +23,54 @@ ARTIFACT_SETUP(/obj/structure/artifact, SSobj) qdel(src) /obj/structure/artifact/bonk - assoc_comp = /datum/component/artifact/bonk + forced_effect = /datum/artifact_effect/bonk /obj/structure/artifact/bomb - assoc_comp = /datum/component/artifact/bomb/explosive + forced_effect = /datum/artifact_effect/bomb/explosive /obj/structure/artifact/bomb/devastating - assoc_comp = /datum/component/artifact/bomb/explosive/devastating + forced_effect = /datum/artifact_effect/bomb/explosive/devastating /obj/structure/artifact/bomb/gas - assoc_comp = /datum/component/artifact/bomb/gas + forced_effect = /datum/artifact_effect/bomb/gas /obj/structure/artifact/forcegen - assoc_comp = /datum/component/artifact/forcegen + forced_effect = /datum/artifact_effect/forcegen /obj/structure/artifact/heal - assoc_comp = /datum/component/artifact/heal + forced_effect = /datum/artifact_effect/heal /obj/structure/artifact/injector - assoc_comp = /datum/component/artifact/injector + forced_effect = /datum/artifact_effect/injector /obj/structure/artifact/lamp - assoc_comp = /datum/component/artifact/lamp + forced_effect = /datum/artifact_effect/lamp light_system = OVERLAY_LIGHT light_on = FALSE /obj/structure/artifact/repulsor - assoc_comp = /datum/component/artifact/repulsor + forced_effect = /datum/artifact_effect/repulsor /obj/structure/artifact/vomit - assoc_comp = /datum/component/artifact/vomit + forced_effect = /datum/artifact_effect/vomit /obj/structure/artifact/borger - assoc_comp = /datum/component/artifact/borger + forced_effect = /datum/artifact_effect/borger /obj/structure/artifact/emotegen - assoc_comp = /datum/component/artifact/emotegen + forced_effect = /datum/artifact_effect/emotegen /obj/structure/artifact/surgery - assoc_comp = /datum/component/artifact/surgery + forced_effect = /datum/artifact_effect/surgery /obj/structure/artifact/smoke - assoc_comp = /datum/component/artifact/smoke + forced_effect = /datum/artifact_effect/smoke /obj/structure/artifact/smoke/toxin - assoc_comp = /datum/component/artifact/smoke/toxin + forced_effect = /datum/artifact_effect/smoke/toxin /obj/structure/artifact/smoke/flesh - assoc_comp = /datum/component/artifact/smoke/flesh + forced_effect = /datum/artifact_effect/smoke/flesh /obj/structure/artifact/smoke/exotic - assoc_comp = /datum/component/artifact/smoke/exotic + forced_effect = /datum/artifact_effect/smoke/exotic diff --git a/monkestation/code/modules/art_sci_overrides/globals.dm b/monkestation/code/modules/art_sci_overrides/globals.dm index 25627d3e71a6..c8353234392e 100644 --- a/monkestation/code/modules/art_sci_overrides/globals.dm +++ b/monkestation/code/modules/art_sci_overrides/globals.dm @@ -1,2 +1,2 @@ -GLOBAL_LIST_INIT(artifact_rarity, list()) +GLOBAL_LIST_INIT(artifact_effect_rarity, list()) GLOBAL_LIST_INIT(running_artifact_list, list()) diff --git a/monkestation/code/modules/art_sci_overrides/new_procs.dm b/monkestation/code/modules/art_sci_overrides/new_procs.dm index 18826afdf0db..dd481d85caca 100644 --- a/monkestation/code/modules/art_sci_overrides/new_procs.dm +++ b/monkestation/code/modules/art_sci_overrides/new_procs.dm @@ -1,7 +1,7 @@ /proc/random_rgb_pairlists(list/red_pairs, list/green_pairs, list/blue_pairs, list/alpha_pairs) if(!length(red_pairs) || !length(blue_pairs) || !length(green_pairs) || !length(alpha_pairs)) return COLOR_CULT_RED - + if(!length(red_pairs) >= 2) red_pairs[2] = 255 if(!length(blue_pairs) >= 2) @@ -18,35 +18,37 @@ return rgb(red, green, blue, alpha) - -/proc/spawn_artifact(turf/loc, forced_origin) +///Spawn a new artifact +/proc/spawn_artifact(turf/loc, forced_origin = null, forced_effect = null) if (!loc) return - if(!length(GLOB.artifact_rarity)) + if(!length(GLOB.artifact_effect_rarity)) build_weighted_rarities() - var/list/weighted_list - - if(forced_origin) - weighted_list = GLOB.artifact_rarity[forced_origin] - else - weighted_list = GLOB.artifact_rarity["all"] + var/obj/type_of_artifact = pick_weight(list( + /obj/structure/artifact = 70, + /obj/item/artifact_item = 10, + /obj/item/artifact_item_tiny = 10, + /obj/item/stock_parts/cell/artifact = 2.5, + /obj/item/gun/magic/artifact = 2.5, + /obj/item/melee/artifact = 2.5, + /obj/machinery/power/generator_artifact = 2.5 + )) - var/datum/component/artifact/picked = pick_weight(weighted_list) - var/type = initial(picked.associated_object) - return new type(loc) + var/obj/A = new type_of_artifact(loc,forced_origin,forced_effect) + return A /proc/build_weighted_rarities() - GLOB.artifact_rarity["all"] = list() ///this needs to be created first for indexing sake + GLOB.artifact_effect_rarity["all"] = list() ///this needs to be created first for indexing sake for(var/datum/artifact_origin/origin as anything in subtypesof(/datum/artifact_origin)) - GLOB.artifact_rarity[initial(origin.type_name)] = list() + GLOB.artifact_effect_rarity[initial(origin.type_name)] = list() - for(var/datum/component/artifact/artifact_type as anything in subtypesof(/datum/component/artifact)) - var/weight = initial(artifact_type.weight) + for(var/datum/artifact_effect/artifact_effect as anything in subtypesof(/datum/artifact_effect)) + var/weight = initial(artifact_effect.weight) if(!weight) continue - GLOB.artifact_rarity["all"][artifact_type] = weight - for(var/origin in GLOB.artifact_rarity) - if(origin in initial(artifact_type.valid_origins)) - GLOB.artifact_rarity[origin][artifact_type] = weight + GLOB.artifact_effect_rarity["all"][artifact_effect] = weight + for(var/origin in GLOB.artifact_effect_rarity) + if(origin in initial(artifact_effect.valid_origins)) + GLOB.artifact_effect_rarity[origin][artifact_effect] = weight diff --git a/monkestation/code/modules/assault_ops/code/assault_op_vendor.dm b/monkestation/code/modules/assault_ops/code/assault_op_vendor.dm index 10b37fa61dc6..2b9d3c9e9dd0 100644 --- a/monkestation/code/modules/assault_ops/code/assault_op_vendor.dm +++ b/monkestation/code/modules/assault_ops/code/assault_op_vendor.dm @@ -10,6 +10,8 @@ /obj/item/armament_points_card/assaultops points = 50 + armament_type = /datum/armament_entry/assault_operatives + access = list(ACCESS_SYNDICATE) // ARMAMENT ENTRIES diff --git a/monkestation/code/modules/assault_ops/code/shuttle.dm b/monkestation/code/modules/assault_ops/code/shuttle.dm index d1e05c6b25a2..a418019a4894 100644 --- a/monkestation/code/modules/assault_ops/code/shuttle.dm +++ b/monkestation/code/modules/assault_ops/code/shuttle.dm @@ -3,7 +3,7 @@ desc = "The terminal used to control the goldeneye cruiser." shuttleId = "goldeneye_cruiser" possible_destinations = "goldeneye_cruiser_custom;goldeneye_cruiser_dock;syndicate_away;syndicate_z5;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s;syndicate_cruiser_dock;whiteship_away;whiteship_home;whiteship_z4;whiteship_lavaland;ferry_away" - circuit = /obj/item/circuitboard/computer/syndicate_shuttle + circuit = /obj/item/circuitboard/computer/goldeneye_helm icon_screen = "syndishuttle" icon_keyboard = "syndie_key" light_color = COLOR_SOFT_RED @@ -22,6 +22,7 @@ name = "goldeneye shuttle recall terminal" desc = "Use this if your friends left you behind." possible_destinations = "goldeneye_cruiser_dock" + circuit = /obj/item/circuitboard/computer/goldeneye_recall /obj/machinery/computer/camera_advanced/shuttle_docker/goldeneye_cruiser name = "goldeneye cruiser navigation computer" diff --git a/monkestation/code/modules/asset_cache/assets/botanical_lexicon.dm b/monkestation/code/modules/asset_cache/assets/botanical_lexicon.dm new file mode 100644 index 000000000000..0594936e9270 --- /dev/null +++ b/monkestation/code/modules/asset_cache/assets/botanical_lexicon.dm @@ -0,0 +1,25 @@ +/datum/asset/spritesheet/botanical_lexicon + name = "botanical_lexicon" + +/datum/asset/spritesheet/botanical_lexicon/create_spritesheets() + var/list/id_list = list() + var/list/seeds = (subtypesof(/datum/hydroponics/plant_mutation) - /datum/hydroponics/plant_mutation/spliced_mutation - /datum/hydroponics/plant_mutation/infusion) + for(var/datum/hydroponics/plant_mutation/mutation as anything in seeds) + var/obj/item/seed_type = mutation::created_seed + if(!ispath(seed_type, /obj/item)) + continue + var/seed_icon_file = seed_type::icon + var/seed_icon_state = seed_type::icon_state + if(!seed_icon_file || !seed_icon_state) + continue + var/id = sanitize_css_class_name("[seed_icon_file]_[seed_icon_state]") + if(id_list[id]) + continue + var/icon/seed_icon = icon(seed_icon_file, seed_icon_state) + var/icon/resized_icon = resize_icon(seed_icon, 96, 96) + if(!resized_icon) + stack_trace("Failed to upscale icon for \"[seed_icon_state]\" @ '[seed_icon]', upscaling using BYOND!") + seed_icon.Scale(96, 96) + resized_icon = seed_icon + id_list[id] = TRUE + Insert(id, resized_icon) diff --git a/monkestation/code/modules/asset_cache/assets/chicken_book.dm b/monkestation/code/modules/asset_cache/assets/chicken_book.dm new file mode 100644 index 000000000000..c2a19ed73b66 --- /dev/null +++ b/monkestation/code/modules/asset_cache/assets/chicken_book.dm @@ -0,0 +1,22 @@ +/datum/asset/spritesheet/chicken_book + name = "chicken_book" + +/datum/asset/spritesheet/chicken_book/create_spritesheets() + var/list/id_list = list() + for(var/datum/mutation/ranching/chicken/chicken_mutation as anything in subtypesof(/datum/mutation/ranching/chicken)) + var/chicken_type = chicken_mutation::chicken_type + if(!ispath(chicken_type, /mob/living/basic/chicken)) + continue + var/id = sanitize_css_class_name("[chicken_type]") + if(id_list[id]) + continue + var/mob/living/basic/chicken/chicken = new chicken_type + var/icon/chicken_icon = getFlatIcon(chicken, EAST, no_anim = TRUE) + var/icon/resized_icon = resize_icon(chicken_icon, 96, 96) + if(!resized_icon) + stack_trace("Failed to upscale icon for [chicken_type], upscaling using BYOND!") + chicken_icon.Scale(96, 96) + resized_icon = chicken_icon + id_list[id] = TRUE + Insert(id, resized_icon) + QDEL_NULL(chicken) diff --git a/monkestation/code/modules/atmospherics/machinery/air_alarm/air_alarm_ac.dm b/monkestation/code/modules/atmospherics/machinery/air_alarm/air_alarm_ac.dm index 6d39c055972d..b32e3c7aa74a 100644 --- a/monkestation/code/modules/atmospherics/machinery/air_alarm/air_alarm_ac.dm +++ b/monkestation/code/modules/atmospherics/machinery/air_alarm/air_alarm_ac.dm @@ -32,6 +32,10 @@ if(air_conditioning) SSair.start_processing_machine(src) +/obj/machinery/airalarm/Destroy() + SSair.stop_processing_machine(src) + return ..() + /obj/machinery/airalarm/examine(mob/user) . = ..() var/status = air_conditioning ? (ac_active ? "active" : "idle") : "disabled" diff --git a/monkestation/code/modules/balloon_alert/balloon_alert.dm b/monkestation/code/modules/balloon_alert/balloon_alert.dm index 1fba56c771bf..2a94efec97c4 100644 --- a/monkestation/code/modules/balloon_alert/balloon_alert.dm +++ b/monkestation/code/modules/balloon_alert/balloon_alert.dm @@ -1,5 +1,5 @@ /atom/balloon_alert(mob/viewer, text) if(istext(viewer) && isnull(text)) stack_trace("Attempted to call balloon_alert with only one argument! This is invalid, but we'll assume that src is the intended viewer.") - return ..(src, viewer) + return ..(ismob(src) ? src : usr, viewer) return ..() diff --git a/monkestation/code/modules/blood_for_the_blood_gods/fly_away.dm b/monkestation/code/modules/blood_for_the_blood_gods/fly_away.dm new file mode 100644 index 000000000000..f9d4a5678eda --- /dev/null +++ b/monkestation/code/modules/blood_for_the_blood_gods/fly_away.dm @@ -0,0 +1,50 @@ +/// Called on drop_organs for the organ to "fly away" using movable physics +/obj/item/organ/proc/fly_away(turf/open/owner_location, fly_angle = rand(0, 360), horizontal_multiplier = 1, vertical_multiplier = 1) + if(!istype(owner_location)) + return + return AddComponent(/datum/component/movable_physics, \ + physics_flags = MPHYSICS_QDEL_WHEN_NO_MOVEMENT, \ + angle = fly_angle, \ + horizontal_velocity = rand(2.5 * 100, 6 * 100) * horizontal_multiplier * 0.01, \ + vertical_velocity = rand(4 * 100, 4.5 * 100) * vertical_multiplier * 0.01, \ + horizontal_friction = rand(0.24 * 100, 0.3 * 100) * 0.01, \ + vertical_friction = 10 * 0.05, \ + horizontal_conservation_of_momentum = 0.5, \ + vertical_conservation_of_momentum = 0.5, \ + z_floor = 0, \ +) + +/// Proc called to initialize movable physics when a bodypart gets dismembered +/obj/item/bodypart/proc/fly_away(turf/open/owner_location, fly_angle = rand(0, 360), horizontal_multiplier = 1, vertical_multiplier = 1) + if(!istype(owner_location)) + return + pixel_x = -px_x + pixel_y = -px_y + forceMove(owner_location) + return AddComponent(/datum/component/movable_physics, \ + physics_flags = MPHYSICS_QDEL_WHEN_NO_MOVEMENT, \ + angle = fly_angle, \ + horizontal_velocity = rand(2.5 * 100, 6 * 100) * horizontal_multiplier * 0.01, \ + vertical_velocity = rand(4 * 100, 4.5 * 100) * vertical_multiplier * 0.01, \ + horizontal_friction = rand(0.24 * 100, 0.3 * 100) * 0.01, \ + vertical_friction = 10 * 0.05, \ + horizontal_conservation_of_momentum = 0.5, \ + vertical_conservation_of_momentum = 0.5, \ + z_floor = 0, \ + ) + +/obj/item/proc/launch_item(turf/open/owner_location, fly_angle = rand(0, 360), horizontal_multiplier = 1, vertical_multiplier = 1) + if(!istype(owner_location)) + return + forceMove(owner_location) + return AddComponent(/datum/component/movable_physics, \ + physics_flags = MPHYSICS_QDEL_WHEN_NO_MOVEMENT, \ + angle = fly_angle, \ + horizontal_velocity = rand(2.5 * 100, 6 * 100) * horizontal_multiplier * 0.01, \ + vertical_velocity = rand(4 * 100, 4.5 * 100) * vertical_multiplier * 0.01, \ + horizontal_friction = rand(0.24 * 100, 0.3 * 100) * 0.01, \ + vertical_friction = 10 * 0.05, \ + horizontal_conservation_of_momentum = 0.5, \ + vertical_conservation_of_momentum = 0.5, \ + z_floor = 0, \ + ) diff --git a/monkestation/code/modules/blood_for_the_blood_gods/icons/slasher_ui.dmi b/monkestation/code/modules/blood_for_the_blood_gods/icons/slasher_ui.dmi new file mode 100644 index 000000000000..4cd55f751e65 Binary files /dev/null and b/monkestation/code/modules/blood_for_the_blood_gods/icons/slasher_ui.dmi differ diff --git a/monkestation/code/modules/blood_for_the_blood_gods/particle.dm b/monkestation/code/modules/blood_for_the_blood_gods/particle.dm new file mode 100644 index 000000000000..a74415bfeb8a --- /dev/null +++ b/monkestation/code/modules/blood_for_the_blood_gods/particle.dm @@ -0,0 +1,158 @@ +/// Blood drip subtype meant to be thrown around as a particle +/obj/effect/decal/cleanable/blood/particle + name = "blood droplet" + icon_state = "drip5" //using drip5 since the others tend to blend in with pipes & wires. + random_icon_states = list("drip1","drip2","drip3","drip4","drip5") + plane = GAME_PLANE + layer = BELOW_MOB_LAYER + should_dry = FALSE + bloodiness = BLOOD_AMOUNT_PER_DECAL * 0.2 + mergeable_decal = FALSE + /// Splatter type we create when we bounce on the floor + var/obj/effect/decal/cleanable/splatter_type_floor = /obj/effect/decal/cleanable/blood/splatter/stacking + /// Splatter type we create when we bump on a wall + var/obj/effect/decal/cleanable/splatter_type_wall = /obj/effect/decal/cleanable/blood/splatter/over_window + /// Whether or not we transfer our pixel_x and pixel_y to the splatter, only works for floor splatters though + var/messy_splatter = TRUE + +/obj/effect/decal/cleanable/blood/particle/can_bloodcrawl_in() + return FALSE + +/obj/effect/decal/cleanable/blood/particle/proc/start_movement(movement_angle) + var/datum/component/movable_physics/movable_physics = GetComponent(/datum/component/movable_physics) + if(!movable_physics) + movable_physics = initialize_physics() + if(!isnull(movement_angle)) + movable_physics.set_angle(movement_angle) + +/obj/effect/decal/cleanable/blood/particle/proc/initialize_physics() + return AddComponent(/datum/component/movable_physics, \ + horizontal_velocity = rand(3 * 100, 5.5 * 100) * 0.01, \ + vertical_velocity = rand(4 * 100, 4.5 * 100) * 0.01, \ + horizontal_friction = rand(0.05 * 100, 0.1 * 100) * 0.01, \ + vertical_friction = 10 * 0.05, \ + vertical_conservation_of_momentum = 0.1, \ + z_floor = 0, \ + bounce_callback = CALLBACK(src, PROC_REF(on_bounce)), \ + bump_callback = CALLBACK(src, PROC_REF(on_bump)), \ + ) + +/obj/effect/decal/cleanable/blood/particle/proc/on_bounce() + if(!isturf(loc) || !splatter_type_floor) + qdel(src) + return + var/obj/effect/decal/cleanable/splatter + if(!ispath(splatter_type_floor, /obj/effect/decal/cleanable/blood/splatter/stacking)) + splatter = new splatter_type_floor(loc) + if(messy_splatter) + splatter.pixel_x = src.pixel_x + splatter.pixel_y = src.pixel_y + else + var/obj/effect/decal/cleanable/blood/splatter/stacking/stacker = locate(splatter_type_floor) in loc + if(!stacker) + stacker = new splatter_type_floor(loc) + if(messy_splatter && length(stacker.splat_overlays)) + var/mutable_appearance/existing_appearance = stacker.splat_overlays[1] + existing_appearance.pixel_x = src.pixel_x + existing_appearance.pixel_y = src.pixel_y + stacker.bloodiness = src.bloodiness + stacker.update_appearance(UPDATE_ICON) + else + var/obj/effect/decal/cleanable/blood/splatter/stacking/other_splatter = new splatter_type_floor() + if(messy_splatter && length(other_splatter.splat_overlays)) + var/mutable_appearance/existing_appearance = other_splatter.splat_overlays[1] + existing_appearance.pixel_x = src.pixel_x + existing_appearance.pixel_y = src.pixel_y + other_splatter.bloodiness = src.bloodiness + other_splatter.handle_merge_decal(stacker) + qdel(other_splatter) + splatter = stacker + var/list/blood_dna = GET_ATOM_BLOOD_DNA(src) + if(blood_dna) + splatter.add_blood_DNA(blood_dna) + qdel(src) + +/obj/effect/decal/cleanable/blood/particle/proc/on_bump(atom/bumped_atom) + if(!isturf(loc) || !splatter_type_wall) + return + if(iswallturf(bumped_atom)) + //Adjust pixel offset to make splatters appear on the wall + var/obj/effect/decal/cleanable/blood/splatter/over_window/final_splatter = new splatter_type_wall(loc) + var/dir_to_wall = get_dir(src, bumped_atom) + final_splatter.pixel_x = (dir_to_wall & EAST ? world.icon_size : (dir_to_wall & WEST ? -world.icon_size : 0)) + final_splatter.pixel_y = (dir_to_wall & NORTH ? world.icon_size : (dir_to_wall & SOUTH ? -world.icon_size : 0)) + var/list/blood_dna = GET_ATOM_BLOOD_DNA(src) + if(blood_dna) + final_splatter.add_blood_DNA(blood_dna) + qdel(src) + else if(istype(bumped_atom, /obj/structure/window)) + var/obj/structure/window/the_window = bumped_atom + if(!the_window.fulltile) + return + if(the_window.bloodied) + qdel(src) + return + var/obj/effect/decal/cleanable/blood/splatter/over_window/final_splatter = new splatter_type_wall() + final_splatter.forceMove(the_window) + the_window.vis_contents += final_splatter + the_window.bloodied = TRUE + qdel(src) + +/// subtype of splatter capable of doing proper "stacking" behavior +/obj/effect/decal/cleanable/blood/splatter/stacking + /// Maximum amount of blood overlays we can have visually + var/maximum_splats = 50 + /// Listing containing overlays of all the splatters we've merged with + var/list/splat_overlays = list() + +/obj/effect/decal/cleanable/blood/splatter/stacking/Initialize(mapload) + . = ..() + var/mutable_appearance/our_appearance = mutable_appearance(src.icon, src.icon_state) + our_appearance.color = src.color + our_appearance.pixel_x = src.pixel_x + our_appearance.pixel_y = src.pixel_y + icon_state = null + color = null + pixel_x = 0 + pixel_y = 0 + splat_overlays += our_appearance + update_appearance(UPDATE_ICON) + +/obj/effect/decal/cleanable/blood/splatter/stacking/Destroy() + . = ..() + splat_overlays = null + +/obj/effect/decal/cleanable/blood/splatter/stacking/update_overlays() + . = ..() + var/splat_length = length(splat_overlays) + if(splat_length > maximum_splats) + splat_overlays = splat_overlays.Splice(splat_length - maximum_splats, splat_length) + . += splat_overlays + +/obj/effect/decal/cleanable/blood/splatter/stacking/handle_merge_decal(obj/effect/decal/cleanable/blood/splatter/stacking/merger) + . = ..() + merger.splat_overlays |= splat_overlays + merger.update_appearance(UPDATE_ICON) + +/obj/effect/decal/cleanable/blood/line + name = "blood line" + desc = "Raining blood, from a lacerated sky, bleeding its horror!" + icon_state = "line" + random_icon_states = null + dryname = "dried blood line" + drydesc = "Creating my structure - Now I shall reign in blood!" + +/obj/effect/decal/cleanable/blood/line/Initialize(mapload, direction) + if(!isnull(direction)) + //has to be done before we call replace_decal() + setDir(direction) + return ..() + +/obj/effect/decal/cleanable/blood/line/replace_decal(obj/effect/decal/cleanable/merger) + . = ..() + if(!.) + return + //squirts of the same dir are redundant, but not if they're different + if(merger.dir != src.dir) + return FALSE + diff --git a/monkestation/code/modules/antagonists/slasher/__base_slasher_additions.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/__base_slasher_additions.dm similarity index 100% rename from monkestation/code/modules/antagonists/slasher/__base_slasher_additions.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/__base_slasher_additions.dm diff --git a/monkestation/code/modules/antagonists/slasher/abilities/_slasher_base.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/_slasher_base.dm similarity index 100% rename from monkestation/code/modules/antagonists/slasher/abilities/_slasher_base.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/_slasher_base.dm diff --git a/monkestation/code/modules/antagonists/slasher/abilities/blood_walk.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/blood_walk.dm similarity index 100% rename from monkestation/code/modules/antagonists/slasher/abilities/blood_walk.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/blood_walk.dm diff --git a/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/envelope_darkness.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/envelope_darkness.dm new file mode 100644 index 000000000000..4316cb8ac304 --- /dev/null +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/envelope_darkness.dm @@ -0,0 +1,40 @@ +/datum/action/cooldown/slasher/envelope_darkness + name = "Darkness Shroud" + desc = "Become masked in the light and visible in the dark." + button_icon_state = "incorporealize" + cooldown_time = 20 SECONDS + + +/datum/action/cooldown/slasher/envelope_darkness/Activate(atom/target) + var/offset = GET_Z_PLANE_OFFSET(owner.z) + var/render = OFFSET_RENDER_TARGET(O_LIGHTING_VISUAL_RENDER_TARGET, offset) + owner.add_filter("envelope", 1, alpha_mask_filter(render, flags = MASK_INVERSE)) + RegisterSignal(owner, COMSIG_MOB_AFTER_APPLY_DAMAGE, PROC_REF(break_envelope)) + RegisterSignal(owner, COMSIG_ATOM_PRE_BULLET_ACT, PROC_REF(bullet_impact)) + +/datum/action/cooldown/slasher/envelope_darkness/Remove(mob/living/remove_from) + . = ..() + UnregisterSignal(owner, COMSIG_MOB_AFTER_APPLY_DAMAGE) + UnregisterSignal(owner, COMSIG_ATOM_PRE_BULLET_ACT) + owner.remove_filter("envelope") + +/datum/action/cooldown/slasher/envelope_darkness/proc/break_envelope(datum/source, damage, damagetype) + SIGNAL_HANDLER + UnregisterSignal(owner, COMSIG_MOB_AFTER_APPLY_DAMAGE) + UnregisterSignal(owner, COMSIG_ATOM_PRE_BULLET_ACT) + if(damage < 5) + return + + var/mob/living/owner_mob = owner + for(var/i = 1 to 4) + owner_mob.blood_particles(2, max_deviation = rand(-120, 120), min_pixel_z = rand(-4, 12), max_pixel_z = rand(-4, 12)) + + + var/datum/antagonist/slasher/slasher = owner_mob.mind?.has_antag_datum(/datum/antagonist/slasher) + + slasher?.reduce_fear_area(15, 4) + owner.remove_filter("envelope") + +/datum/action/cooldown/slasher/envelope_darkness/proc/bullet_impact(mob/living/carbon/human/source, obj/projectile/hitting_projectile, def_zone) + SIGNAL_HANDLER + return COMPONENT_BULLET_PIERCED diff --git a/monkestation/code/modules/antagonists/slasher/abilities/recall_machette.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/recall_machette.dm similarity index 97% rename from monkestation/code/modules/antagonists/slasher/abilities/recall_machette.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/recall_machette.dm index 49dc0aba9e70..f5c53dfdbf66 100644 --- a/monkestation/code/modules/antagonists/slasher/abilities/recall_machette.dm +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/recall_machette.dm @@ -24,6 +24,8 @@ if(!owner.put_in_hands(stored_machette)) stored_machette.forceMove(get_turf(owner)) + else + SEND_SIGNAL(owner, COMSIG_LIVING_PICKED_UP_ITEM, stored_machette) /obj/item/slasher_machette name = "slasher's machete" diff --git a/monkestation/code/modules/antagonists/slasher/abilities/slasher_regenerate.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/slasher_regenerate.dm similarity index 100% rename from monkestation/code/modules/antagonists/slasher/abilities/slasher_regenerate.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/slasher_regenerate.dm diff --git a/monkestation/code/modules/antagonists/slasher/abilities/soul_steal.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/soul_steal.dm similarity index 91% rename from monkestation/code/modules/antagonists/slasher/abilities/soul_steal.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/soul_steal.dm index 63dd1c195655..272978a07a84 100644 --- a/monkestation/code/modules/antagonists/slasher/abilities/soul_steal.dm +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/soul_steal.dm @@ -37,15 +37,8 @@ if(human_owner == human_target) // you cant suck yourself, no comment return - if(slasherdatum.last_soul_sucked + slasherdatum.soul_digestion > world.time) // they are a speedrunner, mark them as such - quick_eater = TRUE - // After this point, give chat messages about failures - if(!slasherdatum.corporeal) - to_chat(owner, span_warning("You cannot suck souls whilst incorporeal!")) - return - if(!ishuman(target)) // are they trying to suck a corgi? to_chat(owner, span_warning("You can only suck the souls of humans")) return @@ -95,8 +88,6 @@ human_target.update_body(is_creating = TRUE) slasherdatum.souls_sucked++ - slasherdatum.check_soul_punishment() - slasherdatum.last_soul_sucked = world.time // lets make their machette stronger slasherdatum.linked_machette.force += 2.5 diff --git a/monkestation/code/modules/antagonists/slasher/abilities/stalk_target.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/stalk_target.dm similarity index 96% rename from monkestation/code/modules/antagonists/slasher/abilities/stalk_target.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/stalk_target.dm index 1606f1c43ebd..169cffb75306 100644 --- a/monkestation/code/modules/antagonists/slasher/abilities/stalk_target.dm +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/stalk_target.dm @@ -10,8 +10,8 @@ . = ..() var/list/possible_targets = list() for(var/datum/mind/possible_target as anything in get_crewmember_minds()) - if(possible_target == owner.mind) - continue + //if(possible_target == owner.mind) + //continue if(!ishuman(possible_target.current)) continue if(possible_target.current.stat == DEAD) diff --git a/monkestation/code/modules/antagonists/slasher/abilities/terror_screech.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/terror_screech.dm similarity index 55% rename from monkestation/code/modules/antagonists/slasher/abilities/terror_screech.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/terror_screech.dm index d27fae7f1866..02d9dabd447d 100644 --- a/monkestation/code/modules/antagonists/slasher/abilities/terror_screech.dm +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/abilities/terror_screech.dm @@ -1,6 +1,6 @@ /datum/action/cooldown/slasher/terror name = "Screech of Terror" - desc = "Inflict near paralyzing fear to those around you." + desc = "Inflict near paralyzing fear to those already scared of you." button_icon_state = "stagger_group" cooldown_time = 45 SECONDS @@ -10,21 +10,10 @@ . = ..() var/datum/antagonist/slasher/slasherdatum = owner.mind.has_antag_datum(/datum/antagonist/slasher) - if(!slasherdatum) - to_chat(owner, span_warning("You should not have this ability or your slasher antagonist datum was deleted, please contact coders")) - return - - if(!slasherdatum.corporeal) // if he is incorporeal, dont stun people - playsound(owner, 'monkestation/sound/voice/terror.ogg', 20, falloff_exponent = 0, use_reverb = FALSE) - for(var/mob/living/carbon/human/human in view(7, owner)) - if(human == owner) - continue - to_chat(human, span_warning("You hear a distant screech... this cant possibly be good")) - human.Shake(duration = 1 SECONDS) - return + var/list/mobs = slasherdatum.return_feared_people(7, 50) playsound(owner, 'monkestation/sound/voice/terror.ogg', 100, falloff_exponent = 0, use_reverb = FALSE) - for(var/mob/living/carbon/human/human in view(7, owner)) + for(var/mob/living/carbon/human/human in mobs) if(human == owner) continue human.overlay_fullscreen("terror", /atom/movable/screen/fullscreen/curse, 1) @@ -32,6 +21,8 @@ human.stamina.adjust(-60) human.emote("scream") human.SetParalyzed(1.5 SECONDS) + var/fear_amount = (15 - get_dist(owner, human)) + slasherdatum.increase_fear(human, fear_amount) addtimer(CALLBACK(src, PROC_REF(remove_overlay), human), 5 SECONDS) /datum/action/cooldown/slasher/terror/proc/remove_overlay(mob/living/carbon/human/remover) diff --git a/monkestation/code/modules/blood_for_the_blood_gods/slasher/components/see_as_something.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/components/see_as_something.dm new file mode 100644 index 000000000000..5b861bdeb49f --- /dev/null +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/components/see_as_something.dm @@ -0,0 +1,48 @@ +/datum/component/see_as_something + var/datum/weakref/creature + var/image_icon_state + var/image_icon + var/image/funny_image + var/delusion_name + +/datum/component/see_as_something/Initialize(atom/movable/seer, image_icon_state, image_icon, create_name) + . = ..() + if(!seer) + return + creature = WEAKREF(seer) + src.image_icon_state = image_icon_state + src.image_icon = image_icon + delusion_name = create_name + + setup_image() + +/datum/component/see_as_something/RegisterWithParent() + . = ..() + RegisterSignal(parent, COMSIG_CLEAR_SEE, PROC_REF(remove)) + +/datum/component/see_as_something/UnregisterFromParent() + . = ..() + UnregisterSignal(parent, COMSIG_CLEAR_SEE) + +/datum/component/see_as_something/Destroy(force, silent) + . = ..() + remove_image() + + +/datum/component/see_as_something/proc/setup_image() + var/atom/movable/resolved = creature.resolve() + + funny_image = image(image_icon, resolved, image_icon_state) + funny_image.name = delusion_name + funny_image.override = TRUE + + var/mob/parent_mob = parent + + parent_mob.client?.images += funny_image + +/datum/component/see_as_something/proc/remove() + qdel(src) + +/datum/component/see_as_something/proc/remove_image() + var/mob/parent_mob = parent + parent_mob.client?.images -= funny_image diff --git a/monkestation/code/modules/antagonists/slasher/components/team_monitor.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/components/team_monitor.dm similarity index 98% rename from monkestation/code/modules/antagonists/slasher/components/team_monitor.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/components/team_monitor.dm index 0b36588a0e70..6e30712a9f9c 100644 --- a/monkestation/code/modules/antagonists/slasher/components/team_monitor.dm +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/components/team_monitor.dm @@ -102,17 +102,20 @@ GLOBAL_LIST_EMPTY(tracker_beacons) if(frequency) team_frequency = "[frequency_key][frequency]" else - team_frequency = null + team_frequency = team_freq_key + attached_beacon = _attached_beacon get_matching_beacons() add_tracker_hud(team_frequency, src) -/datum/component/team_monitor/Destroy(force, silent) +/datum/component/team_monitor/Destroy(force) if(team_frequency) GLOB.tracker_huds[team_frequency] -= src + SEND_SIGNAL(parent, COMSIG_LIVING_TRACKER_REMOVED, team_frequency) + //Stop processing STOP_PROCESSING(SSprocessing, src) @@ -364,7 +367,7 @@ GLOBAL_LIST_EMPTY(tracker_beacons) hide_hud(user) -/datum/component/team_monitor/worn/Destroy(force, silent) +/datum/component/team_monitor/worn/Destroy(force) //Unregister signals if(parent) UnregisterSignal(parent, COMSIG_ITEM_EQUIPPED) @@ -415,7 +418,7 @@ GLOBAL_LIST_EMPTY(tracker_beacons) else if(_frequency) team_frequency = "[_frequency_key][_frequency]" else - team_frequency = null + team_frequency = team_freq_key //Add ourselves to the tracking network add_tracker_beacon(team_frequency, src) @@ -431,7 +434,7 @@ GLOBAL_LIST_EMPTY(tracker_beacons) //Set our visibility on the tracking network toggle_visibility(_visible) -/datum/component/tracking_beacon/Destroy(force, silent) +/datum/component/tracking_beacon/Destroy(force) //Unregister signals if(parent) //Register tracking signal diff --git a/monkestation/code/modules/antagonists/slasher/ghost_role.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/ghost_role.dm similarity index 97% rename from monkestation/code/modules/antagonists/slasher/ghost_role.dm rename to monkestation/code/modules/blood_for_the_blood_gods/slasher/ghost_role.dm index d36029e0465f..d9d6390438d4 100644 --- a/monkestation/code/modules/antagonists/slasher/ghost_role.dm +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/ghost_role.dm @@ -18,7 +18,7 @@ role = ROLE_SLASHER, check_jobban = ROLE_SLASHER, poll_time = 20 SECONDS, - pic_source = /datum/antagonist/slasher, + alert_pic = /datum/antagonist/slasher, role_name_text = "slasher" ) var/turf/spawn_loc = find_safe_turf()//Used for the Drop Pod type of spawn diff --git a/monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_datum.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_datum.dm new file mode 100644 index 000000000000..6e9245150587 --- /dev/null +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_datum.dm @@ -0,0 +1,316 @@ +/datum/outfit/slasher + name = "Slasher Outfit" + suit = /obj/item/clothing/suit/apron/slasher + uniform = /obj/item/clothing/under/color/random/slasher + shoes = /obj/item/clothing/shoes/slasher_shoes + mask = /obj/item/clothing/mask/gas/slasher + +/datum/antagonist/slasher + name = "\improper Slasher" + show_in_antagpanel = TRUE + roundend_category = "slashers" + antagpanel_category = "Slasher" + job_rank = ROLE_SLASHER + antag_hud_name = "slasher" + show_name_in_check_antagonists = TRUE + hud_icon = 'monkestation/icons/mob/slasher.dmi' + preview_outfit = /datum/outfit/slasher + show_to_ghosts = TRUE + + ///the linked machette that the slasher can summon even if destroyed and is unique to them + var/obj/item/slasher_machette/linked_machette + ///rallys the amount of souls effects are based on this + var/souls_sucked = 0 + ///our cached brute_mod + var/cached_brute_mod = 0 + /// the mob we are stalking + var/mob/living/carbon/human/stalked_human + /// how close we are in % to finishing stalking + var/stalk_precent = 0 + ///ALL Powers currently owned + var/list/datum/action/cooldown/slasher/powers = list() + + ///this is our team monitor + var/datum/component/team_monitor/slasher_monitor + ///this is our tracker component + var/datum/component/tracking_beacon + var/monitor_key = "slasher_key" + + ///weakref list of mobs and their fear + var/list/fears = list() + ///weakref list of mobs and last fear attempt to stop fear maxxing + var/list/fear_cooldowns = list() + ///weakref list of mobs and last fear stages + var/list/fear_stages = list() + ///this is a list of all heartbeaters + var/list/heartbeats = list() + //this is a list of all statics + var/list/mobs_with_fullscreens = list() + ///this is our list of refs over 100 fear + var/list/total_fear = list() + ///this is our list of tracked people + var/list/tracked = list() + ///this is our list of seers + var/list/seers = list() + +/datum/antagonist/slasher/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current_mob = mob_override || owner.current + current_mob.overlay_fullscreen("slasher_prox", /atom/movable/screen/fullscreen/nearby, 1) + + monitor_key = "slasher_monitor_[current_mob.ckey]" + tracking_beacon = current_mob.AddComponent(/datum/component/tracking_beacon, monitor_key, null, null, TRUE, "#f3d594") + slasher_monitor = current_mob.AddComponent(/datum/component/team_monitor, monitor_key, null, tracking_beacon) + slasher_monitor.show_hud(owner.current) + + ADD_TRAIT(current_mob, TRAIT_BATON_RESISTANCE, "slasher") + ADD_TRAIT(current_mob, TRAIT_CLUMSY, "slasher") + ADD_TRAIT(current_mob, TRAIT_DUMB, "slasher") + ADD_TRAIT(current_mob, TRAIT_NODEATH, "slasher") + ADD_TRAIT(current_mob, TRAIT_LIMBATTACHMENT, "slasher") + ADD_TRAIT(current_mob, TRAIT_SLASHER, "slasher") + + var/mob/living/carbon/carbon = current_mob + var/obj/item/organ/internal/eyes/shadow/shadow = new + shadow.Insert(carbon, drop_if_replaced = FALSE) + + RegisterSignal(current_mob, COMSIG_LIVING_LIFE, PROC_REF(LifeTick)) + RegisterSignal(current_mob, COMSIG_LIVING_PICKED_UP_ITEM, PROC_REF(item_pickup)) + RegisterSignal(current_mob, COMSIG_MOB_DROPPING_ITEM, PROC_REF(item_drop)) + RegisterSignal(current_mob, COMSIG_MOB_ITEM_ATTACK, PROC_REF(check_attack)) + + ///abilities galore + for(var/datum/action/cooldown/slasher/listed_slasher as anything in subtypesof(/datum/action/cooldown/slasher)) + var/datum/action/cooldown/slasher/new_ability = new listed_slasher + new_ability.Grant(current_mob) + powers |= new_ability + + var/mob/living/carbon/human/human = current_mob + if(istype(human)) + human.equipOutfit(/datum/outfit/slasher) + cached_brute_mod = human.dna.species.brutemod + + +/datum/antagonist/slasher/on_removal() + . = ..() + owner.current.clear_fullscreen("slasher_prox", 15) + owner.current.remove_traits(list(TRAIT_BATON_RESISTANCE, TRAIT_CLUMSY, TRAIT_NODEATH, TRAIT_DUMB, TRAIT_LIMBATTACHMENT), "slasher") + for(var/datum/action/cooldown/slasher/listed_slasher as anything in powers) + listed_slasher.Remove(owner.current) + +/datum/antagonist/slasher/proc/LifeTick(mob/living/source, seconds_per_tick, times_fired) + + var/list/currently_beating = list() + var/list/current_statics = list() + for(var/datum/weakref/held as anything in fear_stages) + var/stage = fear_stages[held] + var/mob/living/carbon/human/human = held.resolve() + + if(stage >= 1) + currently_beating |= held + if(!(held in heartbeats)) + heartbeats |= held + human.playsound_local(human, 'sound/health/slowbeat.ogg', 40, FALSE, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE) + + if(stage >= 2) + current_statics |= held + if(!(held in mobs_with_fullscreens)) + human.overlay_fullscreen("slasher_prox", /atom/movable/screen/fullscreen/nearby, 1) + mobs_with_fullscreens |= held + + + for(var/datum/weakref/held_ref as anything in (heartbeats - currently_beating)) + var/mob/living/carbon/human/human = held_ref.resolve() + human.stop_sound_channel(CHANNEL_HEARTBEAT) + heartbeats -= held_ref + + for(var/datum/weakref/held_ref as anything in (mobs_with_fullscreens - current_statics)) + var/mob/living/carbon/human/human = held_ref.resolve() + human.clear_fullscreen("slasher_prox", 15) + mobs_with_fullscreens -= held_ref + + if(stalked_human) + for(var/mob/living/carbon/human in view(7, source)) + if(stalked_human != human) + continue + if(stalked_human.stat == DEAD) + failed_stalking() + stalk_precent += (1 / 1.8) + if(stalk_precent >= 100) + finish_stalking() + +/datum/antagonist/slasher/proc/finish_stalking() + to_chat(owner, span_boldwarning("You have finished spooking your victim, and have harvested part of their soul!")) + if(linked_machette) + linked_machette.force += 2.5 + linked_machette.throwforce += 2.5 + stalked_human = null + +/datum/antagonist/slasher/proc/failed_stalking() + to_chat(owner, span_boldwarning("You let your victim be taken before it was time!")) + if(linked_machette) + linked_machette.force -= 5 + linked_machette.throwforce -= 5 + stalked_human = null + +/datum/antagonist/slasher/proc/check_attack(mob/living/attacking_person, mob/living/attacked_mob) + var/obj/item/held_item = attacking_person.get_active_held_item() + + var/held_force = 3 + if(held_item) + held_force = held_item.force + + increase_fear(attacked_mob, held_force / 3) + + for(var/i = 1 to (held_force / 3)) + attacked_mob.blood_particles(2, max_deviation = rand(-120, 120), min_pixel_z = rand(-4, 12), max_pixel_z = rand(-4, 12)) + +/datum/antagonist/slasher/proc/item_pickup(datum/input_source, obj/item/source) + RegisterSignal(source, COMSIG_ITEM_DAMAGE_MULTIPLIER, PROC_REF(damage_multiplier)) + +/datum/antagonist/slasher/proc/item_drop(datum/input_source, obj/item/source) + UnregisterSignal(source, COMSIG_ITEM_DAMAGE_MULTIPLIER) + +/obj/item/var/last_multi = 1 + +/datum/antagonist/slasher/proc/damage_multiplier(obj/item/source, mob/living/attacked, def_zone) + var/health_left = max(0, attacked.health) * 0.01 + + attacked.cause_pain(def_zone, source.force) + + source.last_multi = health_left + + return TRUE + +/datum/antagonist/slasher/proc/increase_fear(atom/movable/target, amount) + var/datum/weakref/weak = WEAKREF(target) + if(!(weak in fear_cooldowns)) + target.AddComponent(/datum/component/hovering_information, /datum/hover_data/slasher_fear, TRAIT_SLASHER) + fear_cooldowns |= weak + fear_cooldowns[weak] = 0 + + if(fear_cooldowns[weak] > world.time + 10 SECONDS) + return + + if(!(weak in fears)) + fears |= weak + fears[weak] += amount + + fear_cooldowns[weak] = world.time + fear_stage_check(weak) + +/datum/antagonist/slasher/proc/reduce_fear_area(amount, area) + for(var/mob/living/carbon/human/human in range(area, get_turf(owner))) + var/datum/weakref/weak = WEAKREF(human) + if(!(weak in fears)) + continue + fears[weak] -= amount + fears[weak] = max(fears[weak], 0) + fear_stage_check(weak) + +/datum/antagonist/slasher/proc/reduce_fear(atom/target, amount) + var/datum/weakref/weak = WEAKREF(target) + if(!(weak in fears)) + return + fears[weak] -= amount + fears[weak] = max(fears[weak], 0) + fear_stage_check(weak) + +/datum/antagonist/slasher/proc/fear_stage_check(datum/weakref/weak) + var/fear_number = fears[weak] + var/old_stage = fear_stages[weak] + var/stage = 0 + switch(fear_number) + if(0 to 25) + stage = 0 + if(26 to 50) + stage = 1 + if(51 to 75) + stage = 2 + if(76 to 100) + stage = 3 + else + stage = 4 + + if((weak in fear_stages)) + if(fear_stages[weak] == stage) + return + stage_change(weak, stage, old_stage) + + +/datum/antagonist/slasher/proc/stage_change(datum/weakref/weak, new_stage, last_stage) + fear_stages[weak] = new_stage + + if(new_stage >= 3) + try_add_tracker(weak) + if(new_stage >= 4) + try_add_seer(weak) + + +/datum/antagonist/slasher/proc/return_feared_people(range, value) + var/list/mobs = list() + for(var/datum/weakref/weak_ref as anything in fears) + if(fears[weak_ref] < value) + continue + var/mob/living/mob = weak_ref.resolve() + if(get_dist(owner.current, mob) > range) + continue + mobs += mob + return mobs + +/datum/antagonist/slasher/proc/try_add_tracker(datum/weakref/weak) + if(weak in tracked) + return + tracked += weak + + var/mob/living/living = weak.resolve() + + var/datum/component/tracking_beacon/beacon = living.AddComponent(/datum/component/tracking_beacon, monitor_key, null, null, TRUE, "#f3d594") + slasher_monitor.add_to_tracking_network(beacon) + + RegisterSignal(living, COMSIG_LIVING_TRACKER_REMOVED, PROC_REF(remove_tracker)) + +/datum/antagonist/slasher/proc/remove_tracker(mob/living/source, frequency) + if(frequency != monitor_key) + return + + tracked -= WEAKREF(source) + slasher_monitor.update_all_directions() + +/datum/antagonist/slasher/proc/try_add_seer(datum/weakref/weak) + if(weak in seers) + return + seers += weak + + var/mob/living/living = weak.resolve() + living.AddComponent(/datum/component/see_as_something, owner.current, "wendigo", 'icons/mob/simple/icemoon/64x64megafauna.dmi', "?????") + +/datum/hover_data/slasher_fear/setup_data(atom/source, mob/enterer) + if(!enterer.mind?.has_antag_datum(/datum/antagonist/slasher)) + return + var/datum/antagonist/slasher/slasher = enterer.mind.has_antag_datum(/datum/antagonist/slasher) + + var/datum/weakref/weak = WEAKREF(source) + if(!(weak in slasher.fear_stages)) + return + var/fear_stage = slasher.fear_stages[weak] + + var/image/new_image = new + new_image.icon = 'monkestation/code/modules/blood_for_the_blood_gods/icons/slasher_ui.dmi' + new_image.pixel_x = 10 + new_image.plane = GAME_PLANE_UPPER + switch(fear_stage) + if(2) + new_image.icon_state = "they_fear" + if(3) + new_image.icon_state = "they_see_no_evil" + if(4) + new_image.icon_state = "they_see" + else + new_image.icon_state = null + + if(!isturf(source.loc)) + new_image.loc = source.loc + else + new_image.loc = source + add_client_image(new_image, enterer.client) diff --git a/monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_outfit/slasher_clothing.dm b/monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_outfit/slasher_clothing.dm new file mode 100644 index 000000000000..9a84c3caa952 --- /dev/null +++ b/monkestation/code/modules/blood_for_the_blood_gods/slasher/slasher_outfit/slasher_clothing.dm @@ -0,0 +1,46 @@ +/obj/item/clothing/shoes/slasher_shoes + name = "Industrial Boots" + icon_state = "jackboots" + inhand_icon_state = "jackboots" + clothing_traits = list(TRAIT_NO_SLIP_ALL) + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + +/obj/item/clothing/shoes/slasher_shoes/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, "slasher") + +/obj/item/clothing/mask/gas/slasher + name = "slasher's gas mask" + desc = "A close-fitting sealed gas mask, this one seems to be protruding some kind of dark aura." + + icon = 'icons/obj/clothing/head/utility.dmi' + worn_icon = 'icons/mob/clothing/head/utility.dmi' + icon_state = "welding" + inhand_icon_state = "welding" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + slowdown = 1 + +/obj/item/clothing/mask/gas/slasher/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, "slasher") + +/obj/item/clothing/mask/gas/slasher/adjustmask() + return + +/obj/item/clothing/suit/apron/slasher + name = "butcher's apron" + desc = "A brown butcher's apron, you can feel an aura of something dark radiating off of it." + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + + icon_state = "slasher" + inhand_icon_state = null + +/obj/item/clothing/suit/apron/slasher/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, "slasher") + +/obj/item/clothing/under/color/random/slasher + name = "butcher's jumpsuit" + clothing_traits = list(TRAIT_NODROP) + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + diff --git a/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_datum.dm b/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_datum.dm index c461448819d2..36e8ea3347ca 100644 --- a/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_datum.dm +++ b/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_datum.dm @@ -91,6 +91,7 @@ TRAIT_RADIMMUNE, TRAIT_GENELESS, TRAIT_STABLEHEART, + TRAIT_STABLELIVER, TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_AGEUSIA, @@ -100,6 +101,7 @@ TRAIT_HARDLY_WOUNDED, TRAIT_NO_MIRROR_REFLECTION, TRAIT_ETHEREAL_NO_OVERCHARGE, + TRAIT_OOZELING_NO_CANNIBALIZE, ) /// Traits applied during Torpor. var/static/list/torpor_traits = list( @@ -107,8 +109,13 @@ TRAIT_FAKEDEATH, TRAIT_NODEATH, TRAIT_RESISTHIGHPRESSURE, - TRAIT_RESISTLOWPRESSURE + TRAIT_RESISTLOWPRESSURE, ) + /// A typecache of organs we'll expel during Torpor. + var/static/list/yucky_organ_typecache = typecacheof(list( + /obj/item/organ/internal/body_egg, + /obj/item/organ/internal/zombie_infection, + )) /** * Apply innate effects is everything given to the mob diff --git a/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_guardian.dm b/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_guardian.dm index b913e05f59c8..006fc22913e6 100644 --- a/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_guardian.dm +++ b/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_guardian.dm @@ -37,7 +37,7 @@ check_jobban = ROLE_PAI, poll_time = 10 SECONDS, ignore_category = POLL_IGNORE_HOLOPARASITE, - pic_source = guardian_path, + alert_pic = guardian_path, role_name_text = "guardian spirit", ) if(LAZYLEN(candidates)) diff --git a/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_life.dm b/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_life.dm index 70c32b35c58d..b1f0cb6b9954 100644 --- a/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_life.dm +++ b/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_life.dm @@ -64,7 +64,7 @@ // Apply to Volume AddBloodVolume(blood_taken) // Reagents (NOT Blood!) - if(target.reagents && target.reagents.total_volume) + if(target.reagents?.total_volume) target.reagents.trans_to(owner.current, INGEST, 1) // Run transfer of 1 unit of reagent from them to me. owner.current.playsound_local(null, 'sound/effects/singlebeat.ogg', vol = 40, vary = TRUE) // Play THIS sound for user only. The "null" is where turf would go if a location was needed. Null puts it right in their head. total_blood_drank += blood_taken @@ -76,11 +76,16 @@ /// Constantly runs on Bloodsucker's LifeTick, and is increased by being in Torpor/Coffins /datum/antagonist/bloodsucker/proc/HandleHealing(mult = 1) - var/actual_regen = bloodsucker_regen_rate + additional_regen + if(QDELETED(owner?.current)) + return + var/in_torpor = is_in_torpor() // Don't heal if I'm staked or on Masquerade (+ not in a Coffin). Masqueraded Bloodsuckers in a Coffin however, will heal. - if(owner.current.am_staked() || (HAS_TRAIT(owner.current, TRAIT_MASQUERADE) && !is_in_torpor())) + if(owner.current.am_staked()) return FALSE - owner.current.adjustCloneLoss(-1 * (actual_regen * 4) * mult, 0) + if(!in_torpor && (HAS_TRAIT(owner.current, TRAIT_MASQUERADE) || owner.current.has_status_effect(/datum/status_effect/bloodsucker_sol))) + return FALSE + var/actual_regen = bloodsucker_regen_rate + additional_regen + owner.current.adjustCloneLoss(-1 * (actual_regen * 4) * mult) owner.current.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1 * (actual_regen * 4) * mult) //adjustBrainLoss(-1 * (actual_regen * 4) * mult, 0) if(!iscarbon(owner.current)) // Damage Heal: Do I have damage to ANY bodypart? return @@ -89,23 +94,23 @@ var/bruteheal = min(user.getBruteLoss_nonProsthetic(), actual_regen) // BRUTE: Always Heal var/fireheal = 0 // BURN: Heal in Coffin while Fakedeath, or when damage above maxhealth (you can never fully heal fire) // Checks if you're in a coffin here, additionally checks for Torpor right below it. - var/amInCoffin = istype(user.loc, /obj/structure/closet/crate/coffin) - if(amInCoffin && is_in_torpor()) - if(HAS_TRAIT(owner.current, TRAIT_MASQUERADE) && (COOLDOWN_FINISHED(src, bloodsucker_spam_healing))) - to_chat(user, span_alert("You do not heal while your Masquerade ability is active.")) - COOLDOWN_START(src, bloodsucker_spam_healing, BLOODSUCKER_SPAM_MASQUERADE) - return - fireheal = min(user.getFireLoss_nonProsthetic(), actual_regen) - mult *= 5 // Increase multiplier if we're sleeping in a coffin. - costMult /= 2 // Decrease cost if we're sleeping in a coffin. - user.extinguish_mob() - user.remove_all_embedded_objects() // Remove Embedded! - if(check_limbs(costMult)) - return TRUE - // In Torpor, but not in a Coffin? Heal faster anyways. - else if(is_in_torpor()) - fireheal = min(user.getFireLoss_nonProsthetic(), actual_regen) / 1.2 // 20% slower than being in a coffin - mult *= 3 + if(in_torpor) + if(istype(user.loc, /obj/structure/closet/crate/coffin)) + if(HAS_TRAIT(owner.current, TRAIT_MASQUERADE) && (COOLDOWN_FINISHED(src, bloodsucker_spam_healing))) + to_chat(user, span_alert("You do not heal while your Masquerade ability is active.")) + COOLDOWN_START(src, bloodsucker_spam_healing, BLOODSUCKER_SPAM_MASQUERADE) + return + fireheal = min(user.getFireLoss_nonProsthetic(), actual_regen) + mult *= 5 // Increase multiplier if we're sleeping in a coffin. + costMult /= 2 // Decrease cost if we're sleeping in a coffin. + user.extinguish_mob() + user.remove_all_embedded_objects() // Remove Embedded! + if(check_limbs(costMult)) + return TRUE + // In Torpor, but not in a Coffin? Heal faster anyways. + else + fireheal = min(user.getFireLoss_nonProsthetic(), actual_regen) / 1.2 // 20% slower than being in a coffin + mult *= 3 // Heal if Damaged if((bruteheal + fireheal > 0) && mult > 0) // Just a check? Don't heal/spend, and return. // We have damage. Let's heal (one time) @@ -164,16 +169,9 @@ bloodsuckeruser.revive() for(var/datum/wound/iter_wound as anything in bloodsuckeruser.all_wounds) iter_wound.remove_wound() - // From [powers/panacea.dm] - var/list/bad_organs = list( - bloodsuckeruser.get_organ_by_type(/obj/item/organ/internal/body_egg), - bloodsuckeruser.get_organ_by_type(/obj/item/organ/internal/zombie_infection)) - for(var/tumors in bad_organs) - var/obj/item/organ/yucky_organs = tumors - if(!istype(yucky_organs)) - continue - yucky_organs.Remove(bloodsuckeruser) - yucky_organs.forceMove(get_turf(bloodsuckeruser)) + for(var/obj/item/organ/organ as anything in typecache_filter_list(bloodsuckeruser.organs, yucky_organ_typecache)) + organ.Remove(bloodsuckeruser) + organ.forceMove(bloodsuckeruser.drop_location()) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -198,7 +196,7 @@ final_death() return // Fire Damage? (above double health) - if(owner.current.getFireLoss() >= owner.current.maxHealth * 2.5) + if(owner.current.getFireLoss() >= (owner.current.maxHealth * 2.5)) final_death() return // Staked while "Temp Death" or Asleep @@ -208,12 +206,13 @@ // Temporary Death? Convert to Torpor. if(is_in_torpor()) return - to_chat(owner.current, span_danger("Your immortal body will not yet relinquish your soul to the abyss. You enter Torpor.")) + to_chat(owner.current, span_userdanger("Your immortal body will not yet relinquish your soul to the abyss. You enter Torpor.")) check_begin_torpor(TRUE) /datum/antagonist/bloodsucker/proc/HandleStarving() // I am thirsty for blood! // Nutrition - The amount of blood is how full we are. - owner.current.set_nutrition(min(bloodsucker_blood_volume, NUTRITION_LEVEL_FED)) + if(!isoozeling(owner.current)) + owner.current.set_nutrition(min(bloodsucker_blood_volume, NUTRITION_LEVEL_FED)) // BLOOD_VOLUME_GOOD: [336] - Pale // handled in bloodsucker_integration.dm @@ -286,7 +285,7 @@ owner.current.drop_all_held_items() owner.current.unequip_everything() user.remove_all_embedded_objects() - playsound(owner.current, 'sound/effects/tendril_destroyed.ogg', 40, TRUE) + playsound(owner.current, 'sound/effects/tendril_destroyed.ogg', vol = 40, vary = TRUE) if(SEND_SIGNAL(src, BLOODSUCKER_FINAL_DEATH) & DONT_DUST) return diff --git a/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_moodlets.dm b/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_moodlets.dm index 13c398700650..bbca337306b4 100644 --- a/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_moodlets.dm +++ b/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_moodlets.dm @@ -33,16 +33,6 @@ mood_change = 10 timeout = 6 MINUTES -/datum/mood_event/daylight_1 - description = "I slept poorly in a makeshift coffin during the day.\n" - mood_change = -3 - timeout = 6 MINUTES - -/datum/mood_event/daylight_2 - description = "I have been scorched by the unforgiving rays of the sun.\n" - mood_change = -6 - timeout = 6 MINUTES - ///Candelabrum's mood event to non Bloodsucker/Vassals /datum/mood_event/vampcandle description = "Something is making your mind feel... loose.\n" diff --git a/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_shaded.dm b/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_shaded.dm index 3710f20a6e8a..ecaaaae89223 100644 --- a/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_shaded.dm +++ b/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_shaded.dm @@ -21,6 +21,7 @@ var/datum/antagonist/shaded_bloodsucker/shaded_datum = shades.mind.has_antag_datum(/datum/antagonist/shaded_bloodsucker) shaded_datum.objectives = bloodsuckerdatum.objectives +/* /obj/item/soulstone/bloodsucker/get_ghost_to_replace_shade(mob/living/carbon/victim, mob/user) var/mob/dead/observer/chosen_ghost = victim.get_ghost(FALSE, TRUE) if(QDELETED(chosen_ghost?.client)) @@ -29,3 +30,4 @@ victim.unequip_everything() init_shade(victim, user, shade_controller = chosen_ghost) return TRUE +*/ diff --git a/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_sol.dm b/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_sol.dm index 252408b50d54..29994949bbf7 100644 --- a/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_sol.dm +++ b/monkestation/code/modules/bloodsuckers/bloodsucker/bloodsucker_sol.dm @@ -34,49 +34,25 @@ /datum/antagonist/bloodsucker/proc/on_sol_end(atom/source) SIGNAL_HANDLER check_end_torpor() - for(var/datum/action/cooldown/bloodsucker/power in powers) - if(istype(power, /datum/action/cooldown/bloodsucker/gohome)) - RemovePower(power) + for(var/datum/action/cooldown/bloodsucker/gohome/power in powers) + RemovePower(power) /// Cycle through all vamp antags and check if they're inside a closet. /datum/antagonist/bloodsucker/proc/handle_sol() SIGNAL_HANDLER - if(!owner || !owner.current) - return - - if(!istype(owner.current.loc, /obj/structure)) - if(COOLDOWN_FINISHED(src, bloodsucker_spam_sol_burn)) - if(bloodsucker_level > 0) - to_chat(owner, span_userdanger("The solar flare sets your skin ablaze!")) - else - to_chat(owner, span_userdanger("The solar flare scalds your neophyte skin!")) - COOLDOWN_START(src, bloodsucker_spam_sol_burn, BLOODSUCKER_SPAM_SOL) //This should happen twice per Sol - - if(owner.current.fire_stacks <= 0) - owner.current.fire_stacks = 0 - if(bloodsucker_level > 0) - owner.current.adjust_fire_stacks(0.2 + bloodsucker_level / 10) - owner.current.ignite_mob() - owner.current.adjustFireLoss(2 + (bloodsucker_level / 2)) - owner.current.updatehealth() - owner.current.add_mood_event("vampsleep", /datum/mood_event/daylight_2) + if(!owner?.current) return - if(istype(owner.current.loc, /obj/structure/closet/crate/coffin)) // Coffins offer the BEST protection - if(owner.current.am_staked() && COOLDOWN_FINISHED(src, bloodsucker_spam_sol_burn)) - to_chat(owner.current, span_userdanger("You are staked! Remove the offending weapon from your heart before sleeping.")) - COOLDOWN_START(src, bloodsucker_spam_sol_burn, BLOODSUCKER_SPAM_SOL) //This should happen twice per Sol - if(!is_in_torpor()) - check_begin_torpor(TRUE) - owner.current.add_mood_event("vampsleep", /datum/mood_event/coffinsleep) + if(!istype(owner.current.loc, /obj/structure/closet/crate/coffin)) + owner.current.apply_status_effect(/datum/status_effect/bloodsucker_sol) return - - if(COOLDOWN_FINISHED(src, bloodsucker_spam_sol_burn)) // Closets offer SOME protection - to_chat(owner, span_warning("Your skin sizzles. [owner.current.loc] doesn't protect well against UV bombardment.")) + owner.current.remove_status_effect(/datum/status_effect/bloodsucker_sol) + if(owner.current.am_staked() && COOLDOWN_FINISHED(src, bloodsucker_spam_sol_burn)) + to_chat(owner.current, span_userdanger("You are staked! Remove the offending weapon from your heart before sleeping.")) COOLDOWN_START(src, bloodsucker_spam_sol_burn, BLOODSUCKER_SPAM_SOL) //This should happen twice per Sol - owner.current.adjustFireLoss(0.5 + (bloodsucker_level / 4)) - owner.current.updatehealth() - owner.current.add_mood_event("vampsleep", /datum/mood_event/daylight_1) + if(!is_in_torpor()) + check_begin_torpor(TRUE) + owner.current.add_mood_event("vampsleep", /datum/mood_event/coffinsleep) /datum/antagonist/bloodsucker/proc/give_warning(atom/source, danger_level, vampire_warning_message, vassal_warning_message) SIGNAL_HANDLER @@ -86,15 +62,15 @@ switch(danger_level) if(DANGER_LEVEL_FIRST_WARNING) - owner.current.playsound_local(null, 'monkestation/sound/bloodsuckers/griffin_3.ogg', 50, 1) + owner.current.playsound_local(null, 'monkestation/sound/bloodsuckers/griffin_3.ogg', vol = 50, vary = TRUE) if(DANGER_LEVEL_SECOND_WARNING) - owner.current.playsound_local(null, 'monkestation/sound/bloodsuckers/griffin_5.ogg', 50, 1) + owner.current.playsound_local(null, 'monkestation/sound/bloodsuckers/griffin_5.ogg', vol = 50, vary = TRUE) if(DANGER_LEVEL_THIRD_WARNING) - owner.current.playsound_local(null, 'sound/effects/alert.ogg', 75, 1) + owner.current.playsound_local(null, 'sound/effects/alert.ogg', vol = 75, vary = TRUE) if(DANGER_LEVEL_SOL_ROSE) - owner.current.playsound_local(null, 'sound/ambience/ambimystery.ogg', 75, 1) + owner.current.playsound_local(null, 'sound/ambience/ambimystery.ogg', vol = 75, vary = TRUE) if(DANGER_LEVEL_SOL_ENDED) - owner.current.playsound_local(null, 'sound/misc/ghosty_wind.ogg', 90, 1) + owner.current.playsound_local(null, 'sound/misc/ghosty_wind.ogg', vol = 90, vary = TRUE) /** * # Torpor @@ -122,7 +98,7 @@ var/total_burn = user.getFireLoss_nonProsthetic() var/total_damage = total_brute + total_burn /// Checks - Not daylight & Has more than 10 Brute/Burn & not already in Torpor - if(!SSsunlight.sunlight_active && total_damage >= 10 && !is_in_torpor()) + if(!SSsunlight.sunlight_active && (total_damage >= 10 || typecached_item_in_list(user.organs, yucky_organ_typecache)) && !is_in_torpor()) torpor_begin() /datum/antagonist/bloodsucker/proc/check_end_torpor() @@ -158,6 +134,7 @@ DisableAllPowers() /datum/antagonist/bloodsucker/proc/torpor_end() + owner.current.remove_status_effect(/datum/status_effect/bloodsucker_sol) owner.current.grab_ghost() to_chat(owner.current, span_warning("You have recovered from Torpor.")) owner.current.remove_traits(torpor_traits, TORPOR_TRAIT) @@ -165,3 +142,84 @@ ADD_TRAIT(owner.current, TRAIT_SLEEPIMMUNE, BLOODSUCKER_TRAIT) heal_vampire_organs() SEND_SIGNAL(src, BLOODSUCKER_EXIT_TORPOR) + +/datum/status_effect/bloodsucker_sol + id = "bloodsucker_sol" + tick_interval = -1 + alert_type = /atom/movable/screen/alert/status_effect/bloodsucker_sol + var/list/datum/action/cooldown/bloodsucker/burdened_actions + var/static/list/sol_traits = list( + TRAIT_EASILY_WOUNDED, + TRAIT_NO_SPRINT, + ) + +/datum/status_effect/bloodsucker_sol/on_apply() + if(!SSsunlight.sunlight_active || istype(owner.loc, /obj/structure/closet/crate/coffin)) + return FALSE + RegisterSignal(SSsunlight, COMSIG_SOL_END, PROC_REF(on_sol_end)) + RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(on_owner_moved)) + owner.add_traits(sol_traits, id) + owner.remove_filter(id) + owner.add_filter(id, 2, drop_shadow_filter(x = 0, y = 0, size = 3, offset = 1.5, color = "#ee7440")) + owner.add_movespeed_modifier(/datum/movespeed_modifier/bloodsucker_sol) + owner.add_actionspeed_modifier(/datum/actionspeed_modifier/bloodsucker_sol) + to_chat(owner, span_userdanger("Sol has risen! Your powers are suppressed, your body is burdened, and you will not heal outside of a coffin!"), type = MESSAGE_TYPE_INFO) + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology?.damage_resistance -= 50 + for(var/datum/action/cooldown/bloodsucker/power in owner.actions) + if(power.sol_multiplier) + power.bloodcost *= power.sol_multiplier + power.constant_bloodcost *= power.sol_multiplier + if(power.active) + to_chat(owner, span_warning("[power.name] is harder to upkeep during Sol, now requiring [power.constant_bloodcost] blood while the solar flares last!"), type = MESSAGE_TYPE_INFO) + LAZYSET(burdened_actions, power, TRUE) + power.update_desc(rebuild = FALSE) + power.build_all_button_icons(UPDATE_BUTTON_NAME | UPDATE_BUTTON_STATUS) + return TRUE + +/datum/status_effect/bloodsucker_sol/on_remove() + UnregisterSignal(SSsunlight, COMSIG_SOL_END) + UnregisterSignal(owner, COMSIG_MOVABLE_MOVED) + owner.remove_traits(sol_traits, id) + owner.remove_filter(id) + owner.remove_movespeed_modifier(/datum/movespeed_modifier/bloodsucker_sol) + owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/bloodsucker_sol) + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology?.damage_resistance += 50 + for(var/datum/action/cooldown/bloodsucker/power in owner.actions) + if(LAZYACCESS(burdened_actions, power)) + power.bloodcost /= power.sol_multiplier + power.constant_bloodcost /= power.sol_multiplier + power.update_desc(rebuild = FALSE) + power.build_all_button_icons(UPDATE_BUTTON_NAME | UPDATE_BUTTON_STATUS) + LAZYNULL(burdened_actions) + +/datum/status_effect/bloodsucker_sol/get_examine_text() + return span_warning("[owner.p_They()] seem[owner.p_s()] sickly and painfully overburned!") + +/datum/status_effect/bloodsucker_sol/proc/on_sol_end() + SIGNAL_HANDLER + if(!QDELING(src)) + to_chat(owner, span_big(span_boldnotice("Sol has ended, your vampiric powers are no longer strained!")), type = MESSAGE_TYPE_INFO) + qdel(src) + +/datum/status_effect/bloodsucker_sol/proc/on_owner_moved() + SIGNAL_HANDLER + if(istype(owner.loc, /obj/structure/closet/crate/coffin)) + qdel(src) + +/atom/movable/screen/alert/status_effect/bloodsucker_sol + name = "Solar Flares" + desc = "Solar flares bombard the station, heavily weakening your vampiric abilities and burdening your body!\nSleep in a coffin to avoid the effects of the solar flare!" + icon = 'monkestation/icons/bloodsuckers/actions_bloodsucker.dmi' + icon_state = "sol_alert" + +/datum/actionspeed_modifier/bloodsucker_sol + multiplicative_slowdown = 1 + id = ACTIONSPEED_ID_BLOODSUCKER_SOL + +/datum/movespeed_modifier/bloodsucker_sol + multiplicative_slowdown = 0.45 + id = ACTIONSPEED_ID_BLOODSUCKER_SOL diff --git a/monkestation/code/modules/bloodsuckers/clans/malkavian.dm b/monkestation/code/modules/bloodsuckers/clans/malkavian.dm index df96a224d665..e2315557f354 100644 --- a/monkestation/code/modules/bloodsuckers/clans/malkavian.dm +++ b/monkestation/code/modules/bloodsuckers/clans/malkavian.dm @@ -52,7 +52,7 @@ /datum/bloodsucker_clan/malkavian/on_final_death(datum/antagonist/bloodsucker/source) var/obj/item/soulstone/bloodsucker/stone = new /obj/item/soulstone/bloodsucker(get_turf(bloodsuckerdatum.owner.current)) - stone.capture_soul(bloodsuckerdatum.owner.current, forced = TRUE, bloodsuckerdatum = bloodsuckerdatum) + INVOKE_ASYNC(stone, TYPE_PROC_REF(/obj/item/soulstone/bloodsucker, capture_soul), bloodsuckerdatum.owner.current, forced = TRUE, bloodsuckerdatum = bloodsuckerdatum) return DONT_DUST /datum/bloodsucker_clan/malkavian/proc/on_bloodsucker_broke_masquerade(datum/antagonist/bloodsucker/masquerade_breaker) diff --git a/monkestation/code/modules/bloodsuckers/powers/_base_power.dm b/monkestation/code/modules/bloodsuckers/powers/_base_power.dm index 74f9375984e1..13d0bb7de4e4 100644 --- a/monkestation/code/modules/bloodsuckers/powers/_base_power.dm +++ b/monkestation/code/modules/bloodsuckers/powers/_base_power.dm @@ -38,16 +38,24 @@ var/bloodcost = 0 ///The cost to MAINTAIN this Power - Only used for Constant Cost Powers var/constant_bloodcost = 0 + /// A multiplier for the bloodcost during sol. + var/sol_multiplier // Modify description to add cost. /datum/action/cooldown/bloodsucker/New(Target) . = ..() + update_desc() + +/datum/action/cooldown/bloodsucker/proc/update_desc(rebuild = TRUE) + desc = initial(desc) if(bloodcost > 0) desc += "

    COST: [bloodcost] Blood" if(constant_bloodcost > 0) desc += "

    CONSTANT COST: [name] costs [constant_bloodcost] Blood maintain active." if(power_flags & BP_AM_SINGLEUSE) desc += "

    SINGLE USE:
    [name] can only be used once per night." + if(rebuild) + build_all_button_icons(UPDATE_BUTTON_NAME) /datum/action/cooldown/bloodsucker/Destroy() bloodsuckerdatum_power = null @@ -135,6 +143,9 @@ if(!can_upkeep) to_chat(user, span_warning("You don't have the blood to upkeep [src]!")) return FALSE + if((check_flags & BP_CANT_USE_DURING_SOL) && user.has_status_effect(/datum/status_effect/bloodsucker_sol)) + to_chat(user, span_warning("You can't use [src] during Sol!")) + return FALSE return TRUE /// NOTE: With this formula, you'll hit half cooldown at level 8 for that power. diff --git a/monkestation/code/modules/bloodsuckers/powers/cloak.dm b/monkestation/code/modules/bloodsuckers/powers/cloak.dm index fcab7c2198c0..58f8333f1098 100644 --- a/monkestation/code/modules/bloodsuckers/powers/cloak.dm +++ b/monkestation/code/modules/bloodsuckers/powers/cloak.dm @@ -8,10 +8,11 @@ Additionally, while Cloak is active, you are completely invisible to the AI.\n\ Higher levels will increase how invisible you are." power_flags = BP_AM_TOGGLE - check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_UNCONSCIOUS - purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + check_flags = BP_CANT_USE_IN_TORPOR | BP_CANT_USE_IN_FRENZY | BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY | VASSAL_CAN_BUY bloodcost = 5 constant_bloodcost = 0.2 + sol_multiplier = 2.5 cooldown_time = 5 SECONDS var/was_running @@ -20,7 +21,13 @@ . = ..() if(!.) return FALSE - for(var/mob/living/watchers in view(9, owner) - owner) + for(var/mob/living/watcher in view(9, owner) - owner) + if(watcher.stat == DEAD || QDELETED(watcher.client)) + continue + if(IS_BLOODSUCKER(watcher) || IS_VASSAL(watcher)) + continue + if(watcher.is_blind()) + continue owner.balloon_alert(owner, "you can only vanish unseen.") return FALSE return TRUE diff --git a/monkestation/code/modules/bloodsuckers/powers/feed.dm b/monkestation/code/modules/bloodsuckers/powers/feed.dm index 515e98ed611e..bd3e5d76a1df 100644 --- a/monkestation/code/modules/bloodsuckers/powers/feed.dm +++ b/monkestation/code/modules/bloodsuckers/powers/feed.dm @@ -13,9 +13,9 @@ Feeding while nearby (2 tiles away from) a mortal who is unaware of Bloodsuckers' existence, will cause a Masquerade Infraction\n\ If you get too many Masquerade Infractions, you will break the Masquerade.\n\ If you are in desperate need of blood, mice can be fed off of, at a cost." - power_flags = BP_AM_TOGGLE|BP_AM_STATIC_COOLDOWN - check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_WHILE_STAKED|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS - purchase_flags = BLOODSUCKER_CAN_BUY|BLOODSUCKER_DEFAULT_POWER + power_flags = BP_AM_TOGGLE | BP_AM_STATIC_COOLDOWN + check_flags = BP_CANT_USE_IN_TORPOR | BP_CANT_USE_WHILE_STAKED | BP_CANT_USE_WHILE_INCAPACITATED | BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY | BLOODSUCKER_DEFAULT_POWER bloodcost = 0 cooldown_time = 15 SECONDS ///Amount of blood taken, reset after each Feed. Used for logging. diff --git a/monkestation/code/modules/bloodsuckers/powers/fortitude.dm b/monkestation/code/modules/bloodsuckers/powers/fortitude.dm index 2577ad14ed3a..97291d2adc5f 100644 --- a/monkestation/code/modules/bloodsuckers/powers/fortitude.dm +++ b/monkestation/code/modules/bloodsuckers/powers/fortitude.dm @@ -8,12 +8,13 @@ While using Fortitude, attempting to run will crush you.\n\ At level 4, you gain complete stun immunity.\n\ Higher levels will increase Brute and Stamina resistance." - power_flags = BP_AM_TOGGLE|BP_AM_COSTLESS_UNCONSCIOUS - check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY - purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + power_flags = BP_AM_TOGGLE | BP_AM_COSTLESS_UNCONSCIOUS + check_flags = BP_CANT_USE_IN_TORPOR | BP_CANT_USE_IN_FRENZY + purchase_flags = BLOODSUCKER_CAN_BUY | VASSAL_CAN_BUY bloodcost = 30 cooldown_time = 8 SECONDS constant_bloodcost = 0.2 + sol_multiplier = 3 var/was_running var/fortitude_resist // So we can raise and lower your brute resist based on what your level_current WAS. @@ -22,7 +23,7 @@ owner.balloon_alert(owner, "fortitude turned on.") to_chat(owner, span_notice("Your flesh, skin, and muscles become as steel.")) // Traits & Effects - owner.add_traits(list(TRAIT_PIERCEIMMUNE, TRAIT_NODISMEMBER, TRAIT_PUSHIMMUNE, TRAIT_NO_SPRINT), FORTITUDE_TRAIT) + owner.add_traits(list(TRAIT_PIERCEIMMUNE, TRAIT_ANALGESIA, TRAIT_NODISMEMBER, TRAIT_PUSHIMMUNE, TRAIT_NO_SPRINT), FORTITUDE_TRAIT) if(level_current >= 4) owner.add_traits(list(TRAIT_STUNIMMUNE, TRAIT_CANT_STAMCRIT), FORTITUDE_TRAIT) // They'll get stun resistance + this, who cares. var/mob/living/carbon/human/bloodsucker_user = owner @@ -47,7 +48,7 @@ if(user.m_intent != MOVE_INTENT_WALK) user.set_move_intent(MOVE_INTENT_WALK) user.balloon_alert(user, "you attempt to run, crushing yourself.") - user.adjustBruteLoss(rand(5,15)) + user.take_overall_damage(brute = rand(5, 15)) /// We don't want people using fortitude being able to use vehicles if(user.buckled && istype(user.buckled, /obj/vehicle)) user.buckled.unbuckle_mob(src, force=TRUE) @@ -61,7 +62,7 @@ if(!HAS_TRAIT_FROM(bloodsucker_user, TRAIT_STUNIMMUNE, FORTITUDE_TRAIT)) bloodsucker_user.physiology.stamina_mod /= fortitude_resist // Remove Traits & Effects - owner.remove_traits(list(TRAIT_PIERCEIMMUNE, TRAIT_NODISMEMBER, TRAIT_PUSHIMMUNE, TRAIT_NO_SPRINT, TRAIT_STUNIMMUNE, TRAIT_CANT_STAMCRIT), FORTITUDE_TRAIT) + owner.remove_traits(list(TRAIT_PIERCEIMMUNE, TRAIT_ANALGESIA, TRAIT_NODISMEMBER, TRAIT_PUSHIMMUNE, TRAIT_NO_SPRINT, TRAIT_STUNIMMUNE, TRAIT_CANT_STAMCRIT), FORTITUDE_TRAIT) if(was_running && bloodsucker_user.m_intent == MOVE_INTENT_WALK) bloodsucker_user.set_move_intent(MOVE_INTENT_RUN) diff --git a/monkestation/code/modules/bloodsuckers/powers/go_home.dm b/monkestation/code/modules/bloodsuckers/powers/go_home.dm index 2ed6e80df16f..066654d8dadc 100644 --- a/monkestation/code/modules/bloodsuckers/powers/go_home.dm +++ b/monkestation/code/modules/bloodsuckers/powers/go_home.dm @@ -19,8 +19,8 @@ The power will cancel out if the Claimed Coffin is somehow destroyed. \n\ Immediately after activating, lights around the user will begin to flicker. \n\ Once the user teleports to their coffin, in their place will be a Rat or Bat." - power_flags = BP_AM_TOGGLE|BP_AM_SINGLEUSE|BP_AM_STATIC_COOLDOWN - check_flags = BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_STAKED + power_flags = BP_AM_TOGGLE | BP_AM_SINGLEUSE | BP_AM_STATIC_COOLDOWN + check_flags = BP_CANT_USE_IN_FRENZY | BP_CANT_USE_WHILE_STAKED purchase_flags = NONE bloodcost = 100 constant_bloodcost = 2 diff --git a/monkestation/code/modules/bloodsuckers/powers/masquerade.dm b/monkestation/code/modules/bloodsuckers/powers/masquerade.dm index 22b6e7676dd4..0d3737d97c40 100644 --- a/monkestation/code/modules/bloodsuckers/powers/masquerade.dm +++ b/monkestation/code/modules/bloodsuckers/powers/masquerade.dm @@ -21,9 +21,9 @@ - You gain a Genetic sequence, and appear to have 100% blood when scanned by a Health Analyzer.\n\ - You will not appear as Pale when examined. Anything further than Pale, however, will not be hidden.\n\ At the end of a Masquerade, you will re-gain your Vampiric abilities, as well as lose any Disease & Gene you might have." - power_flags = BP_AM_TOGGLE|BP_AM_STATIC_COOLDOWN|BP_AM_COSTLESS_UNCONSCIOUS - check_flags = BP_CANT_USE_IN_FRENZY - purchase_flags = BLOODSUCKER_CAN_BUY|BLOODSUCKER_DEFAULT_POWER + power_flags = BP_AM_TOGGLE | BP_AM_STATIC_COOLDOWN | BP_AM_COSTLESS_UNCONSCIOUS + check_flags = BP_CANT_USE_IN_FRENZY | BP_CANT_USE_DURING_SOL + purchase_flags = BLOODSUCKER_CAN_BUY | BLOODSUCKER_DEFAULT_POWER bloodcost = 10 cooldown_time = 5 SECONDS constant_bloodcost = 0.1 diff --git a/monkestation/code/modules/bloodsuckers/powers/targeted/_base_targeted.dm b/monkestation/code/modules/bloodsuckers/powers/targeted/_base_targeted.dm index 0be110110c32..f9d139d1204d 100644 --- a/monkestation/code/modules/bloodsuckers/powers/targeted/_base_targeted.dm +++ b/monkestation/code/modules/bloodsuckers/powers/targeted/_base_targeted.dm @@ -88,5 +88,5 @@ StartCooldown() DeactivatePower() -/datum/action/cooldown/bloodsucker/targeted/InterceptClickOn(mob/living/caller, params, atom/target) +/datum/action/cooldown/bloodsucker/targeted/InterceptClickOn(mob/living/user, params, atom/target) click_with_power(target) diff --git a/monkestation/code/modules/bloodsuckers/powers/targeted/brawn.dm b/monkestation/code/modules/bloodsuckers/powers/targeted/brawn.dm index bef71df41110..d9f37041b451 100644 --- a/monkestation/code/modules/bloodsuckers/powers/targeted/brawn.dm +++ b/monkestation/code/modules/bloodsuckers/powers/targeted/brawn.dm @@ -12,6 +12,7 @@ check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY bloodcost = 8 + sol_multiplier = 5 cooldown_time = 9 SECONDS target_range = 1 power_activates_immediately = TRUE diff --git a/monkestation/code/modules/bloodsuckers/powers/targeted/haste.dm b/monkestation/code/modules/bloodsuckers/powers/targeted/haste.dm index db4f971b4450..080eedc4db92 100644 --- a/monkestation/code/modules/bloodsuckers/powers/targeted/haste.dm +++ b/monkestation/code/modules/bloodsuckers/powers/targeted/haste.dm @@ -13,9 +13,10 @@ Anyone in your way during your Haste will be knocked down.\n\ Higher levels will increase the knockdown dealt to enemies." power_flags = BP_AM_TOGGLE - check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS - purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + check_flags = BP_CANT_USE_IN_TORPOR | BP_CANT_USE_IN_FRENZY | BP_CANT_USE_WHILE_INCAPACITATED | BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY | VASSAL_CAN_BUY bloodcost = 6 + sol_multiplier = 10 cooldown_time = 12 SECONDS target_range = 15 power_activates_immediately = TRUE diff --git a/monkestation/code/modules/bloodsuckers/powers/targeted/lunge.dm b/monkestation/code/modules/bloodsuckers/powers/targeted/lunge.dm index 543819c68cff..bdac413c5203 100644 --- a/monkestation/code/modules/bloodsuckers/powers/targeted/lunge.dm +++ b/monkestation/code/modules/bloodsuckers/powers/targeted/lunge.dm @@ -12,9 +12,10 @@ Higher levels increase the knockdown dealt to enemies.\n\ At level 4, you will no longer spin, but you will be limited to tackling from only 6 tiles away." power_flags = NONE - check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS - purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + check_flags = BP_CANT_USE_IN_TORPOR | BP_CANT_USE_IN_FRENZY | BP_CANT_USE_WHILE_INCAPACITATED | BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY | VASSAL_CAN_BUY bloodcost = 10 + sol_multiplier = 15 cooldown_time = 10 SECONDS power_activates_immediately = FALSE diff --git a/monkestation/code/modules/bloodsuckers/powers/targeted/mesmerize.dm b/monkestation/code/modules/bloodsuckers/powers/targeted/mesmerize.dm index e783221ba7ba..db460dd51748 100644 --- a/monkestation/code/modules/bloodsuckers/powers/targeted/mesmerize.dm +++ b/monkestation/code/modules/bloodsuckers/powers/targeted/mesmerize.dm @@ -21,9 +21,10 @@ At level 5, you will be able to mesmerize regardless of your target's direction.\n\ Higher levels will increase the time of the mesmerize's freeze." power_flags = NONE - check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS - purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + check_flags = BP_CANT_USE_IN_TORPOR | BP_CANT_USE_IN_FRENZY | BP_CANT_USE_WHILE_INCAPACITATED | BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY | VASSAL_CAN_BUY bloodcost = 30 + sol_multiplier = 5 cooldown_time = 20 SECONDS target_range = 8 power_activates_immediately = FALSE diff --git a/monkestation/code/modules/bloodsuckers/powers/targeted/trespass.dm b/monkestation/code/modules/bloodsuckers/powers/targeted/trespass.dm index 93fc78d9c9ed..2ca615d0ce90 100644 --- a/monkestation/code/modules/bloodsuckers/powers/targeted/trespass.dm +++ b/monkestation/code/modules/bloodsuckers/powers/targeted/trespass.dm @@ -7,9 +7,10 @@ This power goes through all obstacles except Walls.\n\ Higher levels decrease the sound played from using the Power, and increase the speed of the transition." power_flags = BP_AM_TOGGLE - check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS - purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + check_flags = BP_CANT_USE_IN_TORPOR | BP_CANT_USE_WHILE_INCAPACITATED | BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY | VASSAL_CAN_BUY bloodcost = 10 + sol_multiplier = 5 cooldown_time = 8 SECONDS prefire_message = "Select a destination." //target_range = 2 diff --git a/monkestation/code/modules/bloodsuckers/powers/tremere/auspex.dm b/monkestation/code/modules/bloodsuckers/powers/tremere/auspex.dm index f3c53394d27a..5e0a082b5969 100644 --- a/monkestation/code/modules/bloodsuckers/powers/tremere/auspex.dm +++ b/monkestation/code/modules/bloodsuckers/powers/tremere/auspex.dm @@ -19,9 +19,10 @@ power_explanation = "Level 1: Auspex:\n\ When Activated, you will be hidden in a Cloak of Darkness.\n\ Click any area up to 2 tile away to teleport there, ending the Power." - check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS + check_flags = BP_CANT_USE_IN_TORPOR | BP_CANT_USE_WHILE_INCAPACITATED | BP_CANT_USE_WHILE_UNCONSCIOUS bloodcost = 5 constant_bloodcost = 2 + sol_multiplier = 4 cooldown_time = 12 SECONDS target_range = 2 prefire_message = "Where do you wish to teleport to?" diff --git a/monkestation/code/modules/bloodsuckers/powers/tremere/dominate.dm b/monkestation/code/modules/bloodsuckers/powers/tremere/dominate.dm index f51d8e6d21b9..ac7edf31fd0b 100644 --- a/monkestation/code/modules/bloodsuckers/powers/tremere/dominate.dm +++ b/monkestation/code/modules/bloodsuckers/powers/tremere/dominate.dm @@ -19,7 +19,7 @@ power_explanation = "Level 1: Dominate:\n\ Click any person to, after a 4 second timer, Mesmerize them.\n\ This will completely immobilize them for the next 10.5 seconds." - check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_UNCONSCIOUS + check_flags = BP_CANT_USE_IN_TORPOR | BP_CANT_USE_IN_FRENZY | BP_CANT_USE_WHILE_UNCONSCIOUS | BP_CANT_USE_DURING_SOL bloodcost = 15 constant_bloodcost = 2 cooldown_time = 50 SECONDS diff --git a/monkestation/code/modules/bloodsuckers/powers/tremere/thaumaturgey.dm b/monkestation/code/modules/bloodsuckers/powers/tremere/thaumaturgey.dm index a00621387f97..e7acb543ff1c 100644 --- a/monkestation/code/modules/bloodsuckers/powers/tremere/thaumaturgey.dm +++ b/monkestation/code/modules/bloodsuckers/powers/tremere/thaumaturgey.dm @@ -16,9 +16,10 @@ button_icon_state = "power_thaumaturgy" power_explanation = "Thaumaturgy:\n\ Gives you a one shot blood bolt spell, firing it at a person deals 20 Burn damage" - check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_UNCONSCIOUS + check_flags = BP_CANT_USE_IN_TORPOR | BP_CANT_USE_IN_FRENZY | BP_CANT_USE_WHILE_UNCONSCIOUS bloodcost = 20 constant_bloodcost = 0 + sol_multiplier = 4 cooldown_time = 6 SECONDS prefire_message = "Click where you wish to fire." ///Blood shield given while this Power is active. diff --git a/monkestation/code/modules/bloodsuckers/powers/veil.dm b/monkestation/code/modules/bloodsuckers/powers/veil.dm index 1275adcc13e5..a9b7e28d9594 100644 --- a/monkestation/code/modules/bloodsuckers/powers/veil.dm +++ b/monkestation/code/modules/bloodsuckers/powers/veil.dm @@ -7,8 +7,8 @@ Your name and appearance will be completely randomized, and turning the ability off again will undo it all.\n\ Clothes, gear, and Security/Medical HUD status is kept the same while this power is active." power_flags = BP_AM_TOGGLE - check_flags = BP_CANT_USE_IN_FRENZY - purchase_flags = BLOODSUCKER_DEFAULT_POWER|VASSAL_CAN_BUY + check_flags = BP_CANT_USE_IN_FRENZY | BP_CANT_USE_DURING_SOL + purchase_flags = BLOODSUCKER_DEFAULT_POWER | VASSAL_CAN_BUY bloodcost = 15 constant_bloodcost = 0.1 cooldown_time = 10 SECONDS diff --git a/monkestation/code/modules/bloodsuckers/structures/bloodsucker_crypt.dm b/monkestation/code/modules/bloodsuckers/structures/bloodsucker_crypt.dm index 7308e615231e..7fb28c95b639 100644 --- a/monkestation/code/modules/bloodsuckers/structures/bloodsucker_crypt.dm +++ b/monkestation/code/modules/bloodsuckers/structures/bloodsucker_crypt.dm @@ -617,11 +617,11 @@ if(!receiver.owner.current) continue var/mob/receiver_mob = receiver.owner.current - to_chat(receiver_mob, rendered) - to_chat(user, rendered) // tell yourself, too. + to_chat(receiver_mob, rendered, type = MESSAGE_TYPE_RADIO) + to_chat(user, rendered, type = MESSAGE_TYPE_RADIO, avoid_highlighting = TRUE) // tell yourself, too. for(var/mob/dead_mob in GLOB.dead_mob_list) var/link = FOLLOW_LINK(dead_mob, user) - to_chat(dead_mob, "[link] [rendered]") + to_chat(dead_mob, "[link] [rendered]", type = MESSAGE_TYPE_RADIO) speech_args[SPEECH_MESSAGE] = "" diff --git a/monkestation/code/modules/bloodsuckers/structures/bloodsucker_recipes.dm b/monkestation/code/modules/bloodsuckers/structures/bloodsucker_recipes.dm index 0b0aa55a2ab5..e065a7d2ebd3 100644 --- a/monkestation/code/modules/bloodsuckers/structures/bloodsucker_recipes.dm +++ b/monkestation/code/modules/bloodsuckers/structures/bloodsucker_recipes.dm @@ -112,3 +112,12 @@ time = 8 SECONDS category = CAT_WEAPON_MELEE always_available = FALSE + +/datum/crafting_recipe/coffin + name = "Coffin" + result = /obj/structure/closet/crate/coffin + reqs = list( + /obj/item/stack/sheet/mineral/wood = 5, + ) + time = 15 SECONDS + category = CAT_STRUCTURE diff --git a/monkestation/code/modules/blueshield/areas.dm b/monkestation/code/modules/blueshield/areas.dm new file mode 100644 index 000000000000..84e75acd3d5e --- /dev/null +++ b/monkestation/code/modules/blueshield/areas.dm @@ -0,0 +1,5 @@ +// Blueshield area +/area/station/command/heads_quarters/blueshield + name = "Blueshield's Office" + icon = 'monkestation/code/modules/blueshift/icons/areas/areas_station.dmi' + icon_state = "blueshield" diff --git a/monkestation/code/modules/blueshield/closet.dm b/monkestation/code/modules/blueshield/closet.dm new file mode 100644 index 000000000000..5402f2db276f --- /dev/null +++ b/monkestation/code/modules/blueshield/closet.dm @@ -0,0 +1,34 @@ +/obj/item/storage/bag/garment/blueshield + name = "blueshield's garment bag" + desc = "A bag for storing extra clothes and shoes. This one belongs to the blueshield." + +/obj/item/storage/bag/garment/blueshield/PopulateContents() + new /obj/item/clothing/suit/hooded/wintercoat/nova/blueshield(src) + new /obj/item/clothing/head/beret/blueshield(src) + new /obj/item/clothing/head/beret/blueshield/navy(src) + new /obj/item/clothing/under/rank/blueshield(src) + new /obj/item/clothing/under/rank/blueshield/skirt(src) + new /obj/item/clothing/under/rank/blueshield/turtleneck(src) + new /obj/item/clothing/under/rank/blueshield/turtleneck/skirt(src) + new /obj/item/clothing/suit/armor/vest/blueshield(src) + new /obj/item/clothing/suit/armor/vest/blueshield/jacket(src) + new /obj/item/clothing/neck/mantle/bsmantle(src) + +/obj/structure/closet/secure_closet/blueshield + name = "blueshield's locker" + icon_state = "bs" + icon = 'monkestation/code/modules/blueshift/icons/obj/closet.dmi' + req_access = list(ACCESS_CENT_GENERAL) + +/obj/structure/closet/secure_closet/blueshield/New() + ..() + new /obj/item/storage/briefcase/secure(src) + new /obj/item/storage/belt/security/full(src) + new /obj/item/grenade/flashbang(src) + new /obj/item/assembly/flash/handheld(src) + new /obj/item/restraints/handcuffs(src) + new /obj/item/clothing/glasses/hud/security/sunglasses(src) + new /obj/item/storage/medkit/frontier/stocked(src) + new /obj/item/storage/bag/garment/blueshield(src) + new /obj/item/mod/control/pre_equipped/blueshield(src) + new /obj/item/sensor_device/blueshield(src) diff --git a/monkestation/code/modules/blueshift/clothing/blueshield.dm b/monkestation/code/modules/blueshield/clothing.dm similarity index 68% rename from monkestation/code/modules/blueshift/clothing/blueshield.dm rename to monkestation/code/modules/blueshield/clothing.dm index 3c44a9c7c8e0..0bb05426e1fd 100644 --- a/monkestation/code/modules/blueshift/clothing/blueshield.dm +++ b/monkestation/code/modules/blueshield/clothing.dm @@ -139,3 +139,79 @@ worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/suits/wintercoat.dmi' icon_state = "coataformal" hoodtype = /obj/item/clothing/head/hooded/winterhood/nova + +/* +* BLUESHIELD +*/ +//Why is this in command.dm? Simple: Centcom.dmi will already be packed with CC/NTNavy/AD/LL/SOL/FTU - all of them more event-based clothes, while this will appear +//on-station often. + +/obj/item/clothing/under/rank/blueshield + icon = 'monkestation/code/modules/blueshift/icons/obj/clothing/under/command.dmi' + worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/under/command.dmi' + worn_icon_digitigrade = 'monkestation/code/modules/blueshift/icons/mob/clothing/under/command_digi.dmi' + name = "blueshield's suit" + desc = "A classic bodyguard's suit, with custom-fitted Blueshield-Blue cuffs and a Nanotrasen insignia over one of the pockets." + icon_state = "blueshield" + strip_delay = 50 + armor_type = /datum/armor/clothing_under/rank_blueshield + sensor_mode = SENSOR_COORDS + random_sensor = FALSE + alt_covers_chest = TRUE + +/datum/armor/clothing_under/rank_blueshield + melee = 10 + bullet = 5 + laser = 5 + energy = 10 + bomb = 10 + fire = 50 + acid = 50 + +/obj/item/clothing/under/rank/blueshield/skirt + name = "blueshield's suitskirt" + desc = "A classic bodyguard's suitskirt, with custom-fitted Blueshield-Blue cuffs and a Nanotrasen insignia over one of the pockets." + icon_state = "blueshieldskirt" + body_parts_covered = CHEST|GROIN|ARMS + dying_key = DYE_REGISTRY_JUMPSKIRT + female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + + +/obj/item/clothing/under/rank/blueshield/turtleneck + name = "blueshield's turtleneck" + desc = "A tactical jumper fit for only the best of bodyguards, with plenty of tactical pockets for your tactical needs." + icon_state = "bs_turtleneck" + +/obj/item/clothing/under/rank/blueshield/turtleneck/skirt + name = "blueshield's skirtleneck" + desc = "A tactical jumper fit for only the best of bodyguards - instead of tactical pockets, this one has a tactical lack of leg protection." + icon_state = "bs_skirtleneck" + body_parts_covered = CHEST|GROIN|ARMS + dying_key = DYE_REGISTRY_JUMPSKIRT + female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + +/obj/item/clothing/neck/mantle/bsmantle + name = "\proper the blueshield's mantle" + desc = "A plated mantle with command colors. Suitable for the one assigned to making sure they're still breathing." + icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/neck.dmi' + worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/neck.dmi' + icon_state = "bsmantle" + +/obj/item/radio/headset/headset_bs + name = "\proper the blueshield's headset" + icon = 'monkestation/code/modules/blueshield/icons/radio.dmi' + worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/ears.dmi' + icon_state = "bshield_headset" + worn_icon_state = "bshield_headset" + keyslot = /obj/item/encryptionkey/heads/blueshield + keyslot2 = /obj/item/encryptionkey/headset_cent + +/obj/item/radio/headset/headset_bs/alt + icon_state = "bshield_headset_alt" + worn_icon_state = "bshield_headset_alt" + +/obj/item/radio/headset/headset_bs/alt/Initialize(mapload) + . = ..() + AddComponent(/datum/component/wearertargeting/earprotection, list(ITEM_SLOT_EARS)) diff --git a/monkestation/code/modules/blueshield/devices/crew_monitor.dm b/monkestation/code/modules/blueshield/devices/crew_monitor.dm new file mode 100644 index 000000000000..63549cfc312a --- /dev/null +++ b/monkestation/code/modules/blueshield/devices/crew_monitor.dm @@ -0,0 +1,133 @@ +/* +* Trimmed and modified copy of ".../machinery/computer/crew.dm" +* for the sake of modularity. (Blueshield Monitor Console soon?) +*/ + +#define SENSORS_UPDATE_PERIOD (10 SECONDS) + +GLOBAL_DATUM_INIT(blueshield_crewmonitor, /datum/crewmonitor/blueshield, new) + +//list of all Command/CC jobs +/datum/crewmonitor/blueshield + var/list/jobs_command = list( + JOB_CAPTAIN = 00, + JOB_HEAD_OF_SECURITY = 10, + JOB_CHIEF_MEDICAL_OFFICER = 20, + JOB_RESEARCH_DIRECTOR = 30, + JOB_CHIEF_ENGINEER = 40, + JOB_QUARTERMASTER = 50, + JOB_HEAD_OF_PERSONNEL = 60, + JOB_CENTCOM_ADMIRAL = 200, + JOB_CENTCOM = 201, + JOB_CENTCOM_OFFICIAL = 210, + JOB_CENTCOM_COMMANDER = 211, + JOB_CENTCOM_BARTENDER = 212, + JOB_CENTCOM_CUSTODIAN = 213, + JOB_CENTCOM_MEDICAL_DOCTOR = 214, + JOB_CENTCOM_RESEARCH_OFFICER = 215, + JOB_ERT_COMMANDER = 220, + JOB_ERT_OFFICER = 221, + JOB_ERT_ENGINEER = 222, + JOB_ERT_MEDICAL_DOCTOR = 223, + JOB_ERT_CLOWN = 224, + JOB_ERT_CHAPLAIN = 225, + JOB_ERT_JANITOR = 226, + JOB_ERT_DEATHSQUAD = 227, + JOB_NT_REP = 230, + JOB_BLUESHIELD = 231, + ) + +/datum/crewmonitor/blueshield/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if (!ui) + ui = new(user, src, "CrewConsoleNovaBlueshield") + ui.open() + +/* +* Override of crewmonitor/update_data(z) +* - "trim_assignment" is now iterated for command-only jobs +* - "if (id_card)" now encapsulates all the remaining checks to avoid showing unknowns +*/ +/datum/crewmonitor/blueshield/update_data(z) + if(data_by_z["[z]"] && last_update["[z]"] && world.time <= last_update["[z]"] + SENSORS_UPDATE_PERIOD) + return data_by_z["[z]"] + + var/list/results = list() + for(var/tracked_mob in GLOB.suit_sensors_list) + if(!tracked_mob) + stack_trace("Null entry in suit sensors list.") + continue + + var/mob/living/tracked_living_mob = tracked_mob + + var/turf/pos = get_turf(tracked_living_mob) + + if(!pos) + stack_trace("Tracked mob has no loc and is likely in nullspace: [tracked_living_mob] ([tracked_living_mob.type])") + continue + + if(pos.z != z && (!is_station_level(pos.z) || !is_station_level(z)) && !HAS_TRAIT(tracked_living_mob, TRAIT_MULTIZ_SUIT_SENSORS)) + continue + + var/mob/living/carbon/human/tracked_human = tracked_living_mob + + if(!ishuman(tracked_human)) + stack_trace("Non-human mob is in suit_sensors_list: [tracked_living_mob] ([tracked_living_mob.type])") + continue + + var/obj/item/clothing/under/uniform = tracked_human.w_uniform + if (!istype(uniform)) + stack_trace("Human without a suit sensors compatible uniform is in suit_sensors_list: [tracked_human] ([tracked_human.type]) ([uniform?.type])") + continue + + if((uniform.has_sensor <= NO_SENSORS) || !uniform.sensor_mode) + stack_trace("Human without active suit sensors is in suit_sensors_list: [tracked_human] ([tracked_human.type]) ([uniform.type])") + continue + + var/sensor_mode = uniform.sensor_mode + var/list/entry = list() + + var/obj/item/card/id/id_card = tracked_living_mob.get_idcard(hand_first = FALSE) + if (id_card) + + entry["name"] = id_card.registered_name + entry["assignment"] = id_card.assignment + var/trim_assignment = id_card.get_trim_assignment() + + //Check if they are command + if (jobs_command[trim_assignment] != null) + entry["ijob"] = jobs_command[trim_assignment] + else + continue + + if (isipc(tracked_human)) + entry["is_robot"] = TRUE + + if (sensor_mode >= SENSOR_LIVING) + entry["life_status"] = (tracked_living_mob.stat != DEAD) + + if (sensor_mode >= SENSOR_VITALS) + entry += list( + "oxydam" = round(tracked_living_mob.getOxyLoss(), 1), + "toxdam" = round(tracked_living_mob.getToxLoss(), 1), + "burndam" = round(tracked_living_mob.getFireLoss(), 1), + "brutedam" = round(tracked_living_mob.getBruteLoss(), 1), + "health" = round(tracked_living_mob.health, 1), + ) + + if (sensor_mode >= SENSOR_COORDS) + entry["area"] = get_area_name(tracked_living_mob, format_text = TRUE) + + entry["can_track"] = tracked_living_mob.can_track() + + else + continue + + results[++results.len] = entry + + data_by_z["[z]"] = results + last_update["[z]"] = world.time + + return results + +#undef SENSORS_UPDATE_PERIOD diff --git a/monkestation/code/modules/blueshield/devices/sensor.dm b/monkestation/code/modules/blueshield/devices/sensor.dm new file mode 100644 index 000000000000..6f8a5aca717b --- /dev/null +++ b/monkestation/code/modules/blueshield/devices/sensor.dm @@ -0,0 +1,8 @@ +/obj/item/sensor_device/blueshield + name = "blueshield's handheld monitor" + desc = "A unique model of handheld crew monitor that seems to have been customized for Executive Protection purposes." + icon = 'monkestation/code/modules/blueshield/icons/device.dmi' + icon_state = "blueshield_scanner" + +/obj/item/sensor_device/blueshield/attack_self(mob/user) + GLOB.blueshield_crewmonitor.show(user,src) diff --git a/monkestation/code/modules/blueshield/gun.dm b/monkestation/code/modules/blueshield/gun.dm new file mode 100644 index 000000000000..7179cb6fe755 --- /dev/null +++ b/monkestation/code/modules/blueshield/gun.dm @@ -0,0 +1,59 @@ +/* + Blueshield's Hellfire is between SC-1 and the Hellfire in terms of Damage and wound output +*/ + +/// Blueshield's Custom Hellfire +/obj/item/ammo_casing/energy/laser/hellfire/blueshield + projectile_type = /obj/projectile/beam/laser/hellfire + e_cost = LASER_SHOTS(13, 1000) + select_name = "maim" + +/obj/item/gun/energy/laser/hellgun/blueshield + name ="modified hellfire laser gun" + desc = "A lightly overtuned version of NT's Hellfire Laser rifle, scratches showing its age and the fact it has definitely been owned before. This one is more energy efficient without sacrificing damage." + icon_state = "hellgun" + ammo_type = list(/obj/item/ammo_casing/energy/laser/hellfire/blueshield) + +/obj/item/choice_beacon/blueshield + name = "gunset beacon" + desc = "A single use beacon to deliver a gunset of your choice. Please only call this in your office" + company_source = "Sol Defense Contracting" + company_message = span_bold("Supply Pod incoming, please stand by.") + +/obj/item/choice_beacon/blueshield/generate_display_names() + var/static/list/selectable_gun_types = list( + "Takbok Revolver Set" = /obj/item/storage/toolbox/guncase/skyrat/pistol/trappiste_small_case/takbok, + "Custom Hellfire Laser Rifle" = /obj/item/gun/energy/laser/hellgun/blueshield, + "Bogseo Submachinegun Gunset" = /obj/item/storage/toolbox/guncase/skyrat/xhihao_large_case/bogseo, + "Tech-9" = /obj/item/storage/toolbox/guncase/skyrat/pistol/tech_9, + ) + + return selectable_gun_types + +/obj/item/storage/toolbox/guncase/skyrat/pistol/tech_9 + desc = "A thick yellow gun case with foam inserts laid out to fit a weapon, magazines, and gear securely. The five square grid of Tech-9 is displayed prominently on the top." + + icon = 'monkestation/code/modules/blueshift/icons/obj/gunsets.dmi' + icon_state = "case_trappiste" + + lefthand_file = 'monkestation/code/modules/blueshift/icons/mob/inhands/cases_lefthand.dmi' + righthand_file = 'monkestation/code/modules/blueshift/icons/mob/inhands/cases_righthand.dmi' + inhand_icon_state = "yellowcase" + + weapon_to_spawn = /obj/item/gun/ballistic/automatic/pistol/tech_9/no_mag + extra_to_spawn = /obj/item/ammo_box/magazine/m35/rubber + +/obj/item/gun/ballistic/automatic/pistol/tech_9 + name = "\improper Glock-O" + desc = "The standard issue service pistol of blueshield agents." + burst_size = 10 //lol + fire_delay = 1 + + icon = 'monkestation/code/modules/blueshield/icons/gun.dmi' + icon_state = "tech9" + + fire_sound = 'monkestation/code/modules/blueshift/sounds/pistol_light.ogg' + accepted_magazine_type = /obj/item/ammo_box/magazine/m35 + +/obj/item/gun/ballistic/automatic/pistol/tech_9/no_mag + spawnwithmagazine = FALSE diff --git a/monkestation/code/modules/blueshield/icons/device.dmi b/monkestation/code/modules/blueshield/icons/device.dmi new file mode 100644 index 000000000000..449e43052746 Binary files /dev/null and b/monkestation/code/modules/blueshield/icons/device.dmi differ diff --git a/monkestation/code/modules/blueshield/icons/gun.dmi b/monkestation/code/modules/blueshield/icons/gun.dmi new file mode 100644 index 000000000000..ca61a471c230 Binary files /dev/null and b/monkestation/code/modules/blueshield/icons/gun.dmi differ diff --git a/monkestation/code/modules/blueshield/icons/praetorian.dmi b/monkestation/code/modules/blueshield/icons/praetorian.dmi new file mode 100644 index 000000000000..1632262e8b8a Binary files /dev/null and b/monkestation/code/modules/blueshield/icons/praetorian.dmi differ diff --git a/monkestation/code/modules/blueshield/icons/radio.dmi b/monkestation/code/modules/blueshield/icons/radio.dmi new file mode 100644 index 000000000000..9c5184305e15 Binary files /dev/null and b/monkestation/code/modules/blueshield/icons/radio.dmi differ diff --git a/monkestation/code/modules/blueshield/icons/worn_praetorian.dmi b/monkestation/code/modules/blueshield/icons/worn_praetorian.dmi new file mode 100644 index 000000000000..373986abe4de Binary files /dev/null and b/monkestation/code/modules/blueshield/icons/worn_praetorian.dmi differ diff --git a/monkestation/code/modules/jobs/job_types/blueshield.dm b/monkestation/code/modules/blueshield/job.dm similarity index 50% rename from monkestation/code/modules/jobs/job_types/blueshield.dm rename to monkestation/code/modules/blueshield/job.dm index 4384c79e49cc..bfc55ecd3142 100644 --- a/monkestation/code/modules/jobs/job_types/blueshield.dm +++ b/monkestation/code/modules/blueshield/job.dm @@ -4,38 +4,40 @@ auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY department_head = list(JOB_HEAD_OF_SECURITY) faction = FACTION_STATION - total_positions = 0 - spawn_positions = 0 + total_positions = 1 + spawn_positions = 1 supervisors = "the Heads of Staff" - minimal_player_age = 7 - exp_requirements = 600 + minimal_player_age = 30 + exp_requirements = 7200 exp_required_type = EXP_TYPE_CREW - exp_required_type_department = EXP_TYPE_SECURITY + exp_required_type_department = EXP_TYPE_COMMAND exp_granted_type = EXP_TYPE_CREW config_tag = "BLUESHIELD" outfit = /datum/outfit/job/blueshield - plasmaman_outfit = /datum/outfit/plasmaman/security + plasmaman_outfit = /datum/outfit/plasmaman/blueshield - paycheck = PAYCHECK_CREW - paycheck_department = ACCOUNT_SEC + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_CMD - liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + liver_traits = list(TRAIT_PRETENDER_ROYAL_METABOLISM) display_order = JOB_DISPLAY_ORDER_BLUESHIELD bounty_types = CIV_JOB_SEC departments_list = list( - /datum/job_department/security, + /datum/job_department/central_command, /datum/job_department/command, ) - family_heirlooms = list(/obj/item/book/manual/wiki/security_space_law, /obj/item/clothing/head/beret/sec) + family_heirlooms = list(/obj/item/bedsheet/captain, /obj/item/clothing/head/beret/blueshield) mail_goodies = list( - /obj/item/food/donut/caramel = 10, - /obj/item/food/donut/matcha = 10, - /obj/item/food/donut/blumpkin = 5 + /obj/item/storage/fancy/cigarettes/cigars/havana = 10, + /obj/item/stack/spacecash/c500 = 3, + /obj/item/disk/nuclear/fake/obvious = 2, + /obj/item/clothing/head/collectable/captain = 4, ) + rpg_title = "Guard" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN @@ -45,32 +47,39 @@ /datum/outfit/job/blueshield name = "Blueshield" jobtype = /datum/job/blueshield - - id_trim = /datum/id_trim/job/blueshield - uniform = /obj/item/clothing/under/rank/security/officer/blueshirt - suit_store = /obj/item/gun/ballistic/automatic/pistol/paco/no_mag + uniform = /obj/item/clothing/under/rank/blueshield + suit = /obj/item/clothing/suit/armor/vest/blueshield/jacket + gloves = /obj/item/clothing/gloves/tackler/combat + id = /obj/item/card/id/advanced/centcom + shoes = /obj/item/clothing/shoes/jackboots + ears = /obj/item/radio/headset/headset_bs/alt + glasses = /obj/item/clothing/glasses/hud/security/sunglasses + implants = list(/obj/item/implant/mindshield) backpack_contents = list( - /obj/item/ammo_box/magazine/m35/rubber = 2, - /obj/item/restraints/handcuffs/cable/zipties = 1, - /obj/item/reagent_containers/spray/pepper = 1, - /obj/item/shield/riot/tele = 1 + /obj/item/choice_beacon/blueshield = 1, ) - head = /obj/item/clothing/head/beret/blueshield - suit = /obj/item/clothing/suit/armor/vest/blueshield/jacket - - belt = /obj/item/modular_computer/pda/security - shoes = /obj/item/clothing/shoes/sneakers/black - l_pocket = /obj/item/citationinator - r_pocket = /obj/item/assembly/flash/handheld - glasses = /obj/item/clothing/glasses/hud/security - ears = /obj/item/radio/headset/headset_com - gloves = /obj/item/clothing/gloves/color/black - shoes = /obj/item/clothing/shoes/jackboots/sec - backpack = /obj/item/storage/backpack/blueshield satchel = /obj/item/storage/backpack/satchel/blueshield duffelbag = /obj/item/storage/backpack/duffelbag/blueshield + head = /obj/item/clothing/head/beret/blueshield box = /obj/item/storage/box/survival/security + belt = /obj/item/modular_computer/pda/security + l_pocket = /obj/item/sensor_device/blueshield - implants = list(/obj/item/implant/mindshield) + id_trim = /datum/id_trim/job/blueshield + +/datum/outfit/plasmaman/blueshield + name = "Blueshield Plasmaman" + + head = /obj/item/clothing/head/helmet/space/plasmaman/blueshield + uniform = /obj/item/clothing/under/plasmaman/blueshield + +/datum/job_department/central_command + department_name = DEPARTMENT_CENTRAL_COMMAND + department_bitflags = DEPARTMENT_BITFLAG_CENTRAL_COMMAND + department_head = /datum/job/captain + department_experience_type = EXP_TYPE_CENTRAL_COMMAND + display_order = 1 + label_class = "command" + ui_color = "#86ff82" diff --git a/monkestation/code/modules/blueshield/landmarks.dm b/monkestation/code/modules/blueshield/landmarks.dm new file mode 100644 index 000000000000..e812eaee96b8 --- /dev/null +++ b/monkestation/code/modules/blueshield/landmarks.dm @@ -0,0 +1,2 @@ +/obj/effect/landmark/start/blueshield + name = "Blueshield" diff --git a/monkestation/code/modules/blueshield/modsuit/suit.dm b/monkestation/code/modules/blueshield/modsuit/suit.dm new file mode 100644 index 000000000000..7314f5f60f6a --- /dev/null +++ b/monkestation/code/modules/blueshield/modsuit/suit.dm @@ -0,0 +1,14 @@ +/obj/item/mod/control/pre_equipped/blueshield + worn_icon = 'monkestation/code/modules/blueshield/icons/worn_praetorian.dmi' + icon = 'monkestation/code/modules/blueshield/icons/praetorian.dmi' + icon_state = "praetorian-control" + theme = /datum/mod_theme/blueshield + applied_cell = /obj/item/stock_parts/cell/high + applied_modules = list( + /obj/item/mod/module/storage, + /obj/item/mod/module/magnetic_harness, + /obj/item/mod/module/flashlight, + /obj/item/mod/module/projectile_dampener, + /obj/item/mod/module/quick_carry, + /obj/item/mod/module/holster, + ) diff --git a/monkestation/code/modules/blueshield/modsuit/theme.dm b/monkestation/code/modules/blueshield/modsuit/theme.dm new file mode 100644 index 000000000000..ca1bd0838c52 --- /dev/null +++ b/monkestation/code/modules/blueshield/modsuit/theme.dm @@ -0,0 +1,59 @@ +/datum/mod_theme/blueshield + name = "praetorian" + desc = "A prototype of the Magnate-class suit issued to station Blueshields, still boasting exceptional protection worthy of an honor guard." + extended_desc = "A prototype of the Magnate-class suit issued for use with the station Blueshields, \ + it boasts the exceptional protection of its successor, while sacrificing some of the module capacity.\ + All of the protection of the Magnate, with none of the comfort! The visor uses blue-light to obscure \ + the face of its wearer, adding to its imposing figure. Compared to the sleek and luxurious design \ + that came after it, this suit does nothing to hide its purpose, the reinforced plating layered \ + over the insulated inner armor granting it protection against corrosive liquids, explosive blasts, \ + fires, electrical shocks, and contempt from the rest of the crew." + + default_skin = "praetorian" + armor_type = /datum/armor/mod_theme_security + atom_flags = PREVENT_CONTENTS_EXPLOSION_1 + slowdown_inactive = 1 + slowdown_active = 0.5 + allowed_suit_storage = list( + /obj/item/reagent_containers/spray/pepper, + /obj/item/restraints/handcuffs, + /obj/item/assembly/flash, + /obj/item/melee/baton, + ) + skins = list( + "praetorian" = list( + MOD_ICON_OVERRIDE = 'monkestation/code/modules/blueshield/icons/praetorian.dmi', + MOD_WORN_ICON_OVERRIDE = 'monkestation/code/modules/blueshield/icons/worn_praetorian.dmi', + HELMET_FLAGS = list( + UNSEALED_LAYER = null, + UNSEALED_CLOTHING = SNUG_FIT|THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDAMAGE|HEADINTERNALS, + UNSEALED_INVISIBILITY = HIDEEARS|HIDEHAIR, + SEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEYES|HIDEFACE|HIDESNOUT, + SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES|PEPPERPROOF, + UNSEALED_MESSAGE = HELMET_UNSEAL_MESSAGE, + SEALED_MESSAGE = HELMET_SEAL_MESSAGE, + ), + CHESTPLATE_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDAMAGE, + SEALED_INVISIBILITY = HIDEJUMPSUIT, + UNSEALED_MESSAGE = CHESTPLATE_UNSEAL_MESSAGE, + SEALED_MESSAGE = CHESTPLATE_SEAL_MESSAGE, + ), + GAUNTLETS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDAMAGE, + CAN_OVERSLOT = TRUE, + UNSEALED_MESSAGE = GAUNTLET_UNSEAL_MESSAGE, + SEALED_MESSAGE = GAUNTLET_SEAL_MESSAGE, + ), + BOOTS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDAMAGE, + CAN_OVERSLOT = TRUE, + UNSEALED_MESSAGE = BOOT_UNSEAL_MESSAGE, + SEALED_MESSAGE = BOOT_SEAL_MESSAGE, + ), + ), + ) diff --git a/monkestation/code/modules/blueshield/radio.dm b/monkestation/code/modules/blueshield/radio.dm new file mode 100644 index 000000000000..deddf9bc4eb8 --- /dev/null +++ b/monkestation/code/modules/blueshield/radio.dm @@ -0,0 +1,6 @@ +/obj/item/encryptionkey/heads/blueshield + name = "\proper the blueshield's encryption key" + icon_state = "cypherkey_centcom" + channels = list(RADIO_CHANNEL_COMMAND = 1, RADIO_CHANNEL_SECURITY = 1) + greyscale_config = /datum/greyscale_config/encryptionkey_centcom + greyscale_colors = "#1d2657#dca01b" diff --git a/monkestation/code/modules/blueshield/readme.md b/monkestation/code/modules/blueshield/readme.md new file mode 100644 index 000000000000..e136884a3158 --- /dev/null +++ b/monkestation/code/modules/blueshield/readme.md @@ -0,0 +1,24 @@ +## Title: + + +MODULE ID: BLUESHIELD + +### Description: + +This pr adds blueshield as a job into the correct folders + + +### Included files that are not contained in this module: + + - code/modules/jobs/jobs.dm > GLOBAL_LIST_INIT(security_positions, list() + - code/modules/jobs/access.dm > /proc/get_all_accesses() + + + + +### Credits: + + + +Job Ported by Kitsunemitsu +Items Ported by Dwasint diff --git a/monkestation/code/modules/blueshield/trim.dm b/monkestation/code/modules/blueshield/trim.dm new file mode 100644 index 000000000000..c1f35f30a688 --- /dev/null +++ b/monkestation/code/modules/blueshield/trim.dm @@ -0,0 +1,33 @@ +/datum/id_trim/job/blueshield + assignment = "Blueshield" + trim_state = "trim_blueshield" + department_color = COLOR_COMMAND_BLUE + subdepartment_color = COLOR_SECURITY_RED + sechud_icon_state = SECHUD_BLUESHIELD + extra_access = list( + ACCESS_BRIG, + ACCESS_CARGO, + ACCESS_COURT, + ACCESS_GATEWAY, + ) + minimal_access = list( + ACCESS_SECURITY, + ACCESS_ALL_PERSONAL_LOCKERS, + ACCESS_BRIG_ENTRANCE, + ACCESS_CENT_GENERAL, + ACCESS_COMMAND, + ACCESS_CONSTRUCTION, + ACCESS_ENGINEERING, + ACCESS_EVA, + ACCESS_MAINT_TUNNELS, + ACCESS_MEDICAL, + ACCESS_MINERAL_STOREROOM, + ACCESS_SCIENCE, + ACCESS_TELEPORTER, + ACCESS_WEAPONS, + ) + template_access = list( + ACCESS_CAPTAIN, + ACCESS_CHANGE_IDS + ) + job = /datum/job/blueshield diff --git a/monkestation/code/modules/blueshift/appliances/colony.dm b/monkestation/code/modules/blueshift/appliances/colony.dm index c25fb1fd0a81..1b3e683f427c 100644 --- a/monkestation/code/modules/blueshift/appliances/colony.dm +++ b/monkestation/code/modules/blueshift/appliances/colony.dm @@ -7,7 +7,10 @@ but good old electricity." icon = 'monkestation/code/modules/blueshift/icons/chemistry_machines.dmi' icon_state = "water_synth" + active_power_usage = 0 + amount = 100 anchored = FALSE + reagent_id = /datum/reagent/water /// Reagents that this can dispense, overrides the default list on init var/static/list/synthesizable_reagents = list( /datum/reagent/water, @@ -21,6 +24,9 @@ AddElement(/datum/element/repackable, repacked_type, 2 SECONDS) AddElement(/datum/element/manufacturer_examine, COMPANY_FRONTIER) +/obj/machinery/plumbing/synthesizer/water_synth/ui_interact(mob/user, datum/tgui/ui) + return FALSE // nah its a flat 100 with no drain + // Deployable item for cargo for the water synth /obj/item/flatpacked_machine/water_synth diff --git a/monkestation/code/modules/blueshift/areas/station.dm b/monkestation/code/modules/blueshift/areas/station.dm index b16c6f06bfb3..fff014bc55a8 100644 --- a/monkestation/code/modules/blueshift/areas/station.dm +++ b/monkestation/code/modules/blueshift/areas/station.dm @@ -31,12 +31,6 @@ icon = 'monkestation/code/modules/blueshift/icons/areas/areas_station.dmi' icon_state = "nt_rep" -// Blueshield area -/area/station/command/heads_quarters/blueshield - name = "Blueshield's Office" - icon = 'monkestation/code/modules/blueshift/icons/areas/areas_station.dmi' - icon_state = "blueshield" - /* * Department areas */ diff --git a/monkestation/code/modules/blueshift/benos/beno_types/sentinel.dm b/monkestation/code/modules/blueshift/benos/beno_types/sentinel.dm index 905fa917d72f..a9a7a411e5a0 100644 --- a/monkestation/code/modules/blueshift/benos/beno_types/sentinel.dm +++ b/monkestation/code/modules/blueshift/benos/beno_types/sentinel.dm @@ -66,40 +66,40 @@ build_all_button_icons() on_who.update_icons() -/datum/action/cooldown/alien/acid/nova/InterceptClickOn(mob/living/caller, params, atom/target) +/datum/action/cooldown/alien/acid/nova/InterceptClickOn(mob/living/user, params, atom/target) . = ..() if(!.) - unset_click_ability(caller, refund_cooldown = FALSE) + unset_click_ability(user, refund_cooldown = FALSE) return FALSE - var/turf/user_turf = caller.loc - var/turf/target_turf = get_step(caller, target.dir) + var/turf/user_turf = user.loc + var/turf/target_turf = get_step(user, target.dir) if(!isturf(target_turf)) return FALSE var/modifiers = params2list(params) - caller.visible_message( - span_danger("[caller] spits [projectile_name]!"), + user.visible_message( + span_danger("[user] spits [projectile_name]!"), span_alertalien("You spit [projectile_name]."), ) if(acid_projectile) - var/obj/projectile/spit_projectile = new acid_projectile(caller.loc) - spit_projectile.preparePixelProjectile(target, caller, modifiers) - spit_projectile.firer = caller + var/obj/projectile/spit_projectile = new acid_projectile(user.loc) + spit_projectile.preparePixelProjectile(target, user, modifiers) + spit_projectile.firer = user spit_projectile.fire() - playsound(caller, spit_sound, 100, TRUE, 5, 0.9) - caller.newtonian_move(get_dir(target_turf, user_turf)) + playsound(user, spit_sound, 100, TRUE, 5, 0.9) + user.newtonian_move(get_dir(target_turf, user_turf)) return TRUE if(acid_casing) - var/obj/item/ammo_casing/casing = new acid_casing(caller.loc) - playsound(caller, spit_sound, 100, TRUE, 5, 0.9) - casing.fire_casing(target, caller, null, null, null, ran_zone(), 0, caller) - caller.newtonian_move(get_dir(target_turf, user_turf)) + var/obj/item/ammo_casing/casing = new acid_casing(user.loc) + playsound(user, spit_sound, 100, TRUE, 5, 0.9) + casing.fire_casing(target, user, null, null, null, ran_zone(), 0, user) + user.newtonian_move(get_dir(target_turf, user_turf)) return TRUE - CRASH("Neither acid_projectile or acid_casing are set on [caller]'s spit attack!") + CRASH("Neither acid_projectile or acid_casing are set on [user]'s spit attack!") /datum/action/cooldown/alien/acid/nova/Activate(atom/target) return TRUE diff --git a/monkestation/code/modules/blueshift/benos/human_changes.dm b/monkestation/code/modules/blueshift/benos/human_changes.dm index f7beb903e2cc..2264d87464aa 100644 --- a/monkestation/code/modules/blueshift/benos/human_changes.dm +++ b/monkestation/code/modules/blueshift/benos/human_changes.dm @@ -27,6 +27,7 @@ /mob/living/carbon/alien/adult/nova/Initialize(mapload) . = ..() AddComponent(/datum/component/seethrough_mob) + set_pain_mod("ALIEN", 0) GRANT_ACTION(/datum/action/cooldown/alien/nova/sleepytime) if(next_evolution) diff --git a/monkestation/code/modules/blueshift/clothing/nova_cargo.dm b/monkestation/code/modules/blueshift/clothing/nova_cargo.dm index 65b1972f33ad..1cc3b3aea18b 100644 --- a/monkestation/code/modules/blueshift/clothing/nova_cargo.dm +++ b/monkestation/code/modules/blueshift/clothing/nova_cargo.dm @@ -19,7 +19,6 @@ name = "supply utility uniform" desc = "A utility uniform worn by employees of the Supply department." icon_state = "util_cargo" - can_adjust = FALSE /obj/item/clothing/under/rank/cargo/tech/nova/utility/syndicate armor_type = /datum/armor/clothing_under/utility_syndicate diff --git a/monkestation/code/modules/blueshift/clothing/nova_command.dm b/monkestation/code/modules/blueshift/clothing/nova_command.dm index cb8451f56e86..79d60db3c608 100644 --- a/monkestation/code/modules/blueshift/clothing/nova_command.dm +++ b/monkestation/code/modules/blueshift/clothing/nova_command.dm @@ -29,58 +29,6 @@ icon_state = "captainblacksuit" can_adjust = FALSE -/* -* BLUESHIELD -*/ -//Why is this in command.dm? Simple: Centcom.dmi will already be packed with CC/NTNavy/AD/LL/SOL/FTU - all of them more event-based clothes, while this will appear -//on-station often. - -/obj/item/clothing/under/rank/blueshield - icon = 'monkestation/code/modules/blueshift/icons/obj/clothing/under/command.dmi' - worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/under/command.dmi' - worn_icon_digitigrade = 'monkestation/code/modules/blueshift/icons/mob/clothing/under/command_digi.dmi' - name = "blueshield's suit" - desc = "A classic bodyguard's suit, with custom-fitted Blueshield-Blue cuffs and a Nanotrasen insignia over one of the pockets." - icon_state = "blueshield" - strip_delay = 50 - armor_type = /datum/armor/clothing_under/rank_blueshield - sensor_mode = SENSOR_COORDS - random_sensor = FALSE - alt_covers_chest = TRUE - -/datum/armor/clothing_under/rank_blueshield - melee = 10 - bullet = 5 - laser = 5 - energy = 10 - bomb = 10 - fire = 50 - acid = 50 - -/obj/item/clothing/under/rank/blueshield/skirt - name = "blueshield's suitskirt" - desc = "A classic bodyguard's suitskirt, with custom-fitted Blueshield-Blue cuffs and a Nanotrasen insignia over one of the pockets." - icon_state = "blueshieldskirt" - body_parts_covered = CHEST|GROIN|ARMS - dying_key = DYE_REGISTRY_JUMPSKIRT - female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY - supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON - - -/obj/item/clothing/under/rank/blueshield/turtleneck - name = "blueshield's turtleneck" - desc = "A tactical jumper fit for only the best of bodyguards, with plenty of tactical pockets for your tactical needs." - icon_state = "bs_turtleneck" - -/obj/item/clothing/under/rank/blueshield/turtleneck/skirt - name = "blueshield's skirtleneck" - desc = "A tactical jumper fit for only the best of bodyguards - instead of tactical pockets, this one has a tactical lack of leg protection." - icon_state = "bs_skirtleneck" - body_parts_covered = CHEST|GROIN|ARMS - dying_key = DYE_REGISTRY_JUMPSKIRT - female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY - supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON - /* * NT CONSULTANT @@ -115,7 +63,6 @@ name = "command utility uniform" desc = "A utility uniform worn by Station Command." icon_state = "util_com" - can_adjust = FALSE /obj/item/clothing/under/rank/captain/nova/utility/syndicate armor_type = /datum/armor/clothing_under/utility_syndicate diff --git a/monkestation/code/modules/blueshift/clothing/nova_engineering.dm b/monkestation/code/modules/blueshift/clothing/nova_engineering.dm index 7f8a86a5af26..7334765e20a3 100644 --- a/monkestation/code/modules/blueshift/clothing/nova_engineering.dm +++ b/monkestation/code/modules/blueshift/clothing/nova_engineering.dm @@ -21,7 +21,6 @@ name = "engineering utility uniform" desc = "A utility uniform worn by Engineering personnel." icon_state = "util_eng" - can_adjust = FALSE /obj/item/clothing/under/rank/engineering/engineer/nova/utility/syndicate armor_type = /datum/armor/clothing_under/utility_syndicate diff --git a/monkestation/code/modules/blueshift/clothing/nova_medical.dm b/monkestation/code/modules/blueshift/clothing/nova_medical.dm index c8a286a072ef..2acc74f62280 100644 --- a/monkestation/code/modules/blueshift/clothing/nova_medical.dm +++ b/monkestation/code/modules/blueshift/clothing/nova_medical.dm @@ -35,6 +35,7 @@ name = "medical utility uniform" desc = "A utility uniform worn by Medical doctors." icon_state = "util_med" + can_adjust = TRUE supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION /obj/item/clothing/under/rank/medical/doctor/nova/utility/syndicate diff --git a/monkestation/code/modules/blueshift/clothing/nova_misc.dm b/monkestation/code/modules/blueshift/clothing/nova_misc.dm index 41cd847c3ef5..c8b18cd8f0be 100644 --- a/monkestation/code/modules/blueshift/clothing/nova_misc.dm +++ b/monkestation/code/modules/blueshift/clothing/nova_misc.dm @@ -30,7 +30,7 @@ desc = "A utility uniform worn by civilian-ranked crew." icon_state = "utility" body_parts_covered = CHEST|ARMS|GROIN|LEGS - can_adjust = FALSE + can_adjust = TRUE /obj/item/clothing/under/misc/nova/utility/syndicate armor_type = /datum/armor/clothing_under/utility_syndicate diff --git a/monkestation/code/modules/blueshift/clothing/nova_neck.dm b/monkestation/code/modules/blueshift/clothing/nova_neck.dm index 4a4835d562cd..e999df7ece5b 100644 --- a/monkestation/code/modules/blueshift/clothing/nova_neck.dm +++ b/monkestation/code/modules/blueshift/clothing/nova_neck.dm @@ -58,13 +58,6 @@ worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/neck.dmi' icon_state = "hosmantle_blue" //There's a red version if you remove the _blue, but its not coded in currently. -/obj/item/clothing/neck/mantle/bsmantle - name = "\proper the blueshield's mantle" - desc = "A plated mantle with command colors. Suitable for the one assigned to making sure they're still breathing." - icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/neck.dmi' - worn_icon = 'monkestation/code/modules/blueshift/icons/mob/clothing/neck.dmi' - icon_state = "bsmantle" - /obj/item/clothing/neck/mantle/capmantle name = "\proper the captain's mantle" desc = "A formal mantle to drape around the shoulders. Others stand on the shoulders of giants. You're the giant they stand on." diff --git a/monkestation/code/modules/blueshift/clothing/nova_science.dm b/monkestation/code/modules/blueshift/clothing/nova_science.dm index f0c18219b42c..a4e2ff7426d7 100644 --- a/monkestation/code/modules/blueshift/clothing/nova_science.dm +++ b/monkestation/code/modules/blueshift/clothing/nova_science.dm @@ -46,7 +46,6 @@ desc = "A utility uniform worn by NT-certified Science staff." icon_state = "util_sci" supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION - can_adjust = FALSE /obj/item/clothing/under/rank/rnd/scientist/nova/utility/syndicate desc = "A utility uniform worn by Science staff." diff --git a/monkestation/code/modules/blueshift/clothing/nova_security.dm b/monkestation/code/modules/blueshift/clothing/nova_security.dm index f2a4d1067b0e..66a885a84ed4 100644 --- a/monkestation/code/modules/blueshift/clothing/nova_security.dm +++ b/monkestation/code/modules/blueshift/clothing/nova_security.dm @@ -20,7 +20,6 @@ desc = "A utility uniform worn by Lopland-certified Security officers." icon_state = "util_sec" supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION - can_adjust = FALSE /obj/item/clothing/under/rank/security/nova/utility/redsec desc = "A utility uniform worn by trained Security officers." diff --git a/monkestation/code/modules/blueshift/components/armament.dm b/monkestation/code/modules/blueshift/components/armament.dm index 78542490beb9..c7a8ea7f90f0 100644 --- a/monkestation/code/modules/blueshift/components/armament.dm +++ b/monkestation/code/modules/blueshift/components/armament.dm @@ -29,8 +29,17 @@ required_access = needed_access - RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) - RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) + if(!istype(parent, /obj/item/armament_points_card)) + RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) + RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) + else + RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND_SECONDARY, PROC_REF(on_attack_hand)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(on_attack_hand)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF_SECONDARY, PROC_REF(on_attack_hand)) + var/atom/atom_target = parent + atom_target.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1 + RegisterSignal(parent, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(context)) + inserted_card = parent /datum/component/armament/Destroy(force) if(inserted_card) @@ -38,6 +47,16 @@ inserted_card = null return ..() +/datum/component/armament/proc/context(datum/source, + list/context, + obj/item/held_item, + mob/user, +) + PRIVATE_PROC(TRUE) + SIGNAL_HANDLER + context[SCREENTIP_CONTEXT_RMB] = "Open Armament Store" + return CONTEXTUAL_SCREENTIP_SET + /datum/component/armament/proc/on_attackby(atom/target, obj/item, mob/user) SIGNAL_HANDLER @@ -141,6 +160,8 @@ buy_ammo(usr, check, params["quantity"]) SStgui.update_uis(src) if("eject_card") + if(istype(parent, /obj/item/armament_points_card)) + return eject_card(usr) SStgui.update_uis(src) diff --git a/monkestation/code/modules/blueshift/components/cell_component.dm b/monkestation/code/modules/blueshift/components/cell_component.dm index eec1cd115e96..7e91c843cb99 100644 --- a/monkestation/code/modules/blueshift/components/cell_component.dm +++ b/monkestation/code/modules/blueshift/components/cell_component.dm @@ -86,7 +86,7 @@ component_cell_out_of_charge/component_cell_removed proc using loc where necessa UnregisterSignal(parent, COMSIG_CLICK_CTRL_SHIFT) UnregisterSignal(parent, COMSIG_ATOM_EXAMINE) -/datum/component/cell/Destroy(force, silent) +/datum/component/cell/Destroy(force) on_cell_removed = null if(inserted_cell) if(!inside_robot) //We really don't want to be deleting the robot's cell. diff --git a/monkestation/code/modules/blueshift/components/polarizer.dm b/monkestation/code/modules/blueshift/components/polarizer.dm index ddd24ec11617..287d3b2bde38 100644 --- a/monkestation/code/modules/blueshift/components/polarizer.dm +++ b/monkestation/code/modules/blueshift/components/polarizer.dm @@ -38,7 +38,7 @@ GLOBAL_LIST_EMPTY(polarization_controllers) RegisterSignal(parent, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(on_window_multitool_act)) -/datum/component/polarization_controller/Destroy(force, silent) +/datum/component/polarization_controller/Destroy(force) if(id) LAZYREMOVEASSOC(GLOB.polarization_controllers, id, list(src)) diff --git a/monkestation/code/modules/blueshift/components/wall_mounted.dm b/monkestation/code/modules/blueshift/components/wall_mounted.dm index 49032e71db95..baa41888028b 100644 --- a/monkestation/code/modules/blueshift/components/wall_mounted.dm +++ b/monkestation/code/modules/blueshift/components/wall_mounted.dm @@ -15,7 +15,7 @@ hanging_wall_turf = target_wall on_drop = on_drop_callback -/datum/component/wall_mounted/Destroy(force, silent) +/datum/component/wall_mounted/Destroy(force) on_drop = null return ..() diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/ears.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/ears.dmi new file mode 100644 index 000000000000..4fdd7765ee58 Binary files /dev/null and b/monkestation/code/modules/blueshift/icons/mob/clothing/ears.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/cargo.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/cargo.dmi index 8d18e50d6233..ab360a859491 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/cargo.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/cargo.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/cargo_digi.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/cargo_digi.dmi index faceea6def32..8ab7ad1b6e96 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/cargo_digi.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/cargo_digi.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/command.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/command.dmi index 9688cb42e713..87989cddc261 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/command.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/command.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/command_digi.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/command_digi.dmi index f52dc48fcd78..85cf145386dd 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/command_digi.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/command_digi.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/engineering.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/engineering.dmi index 36b2920bbb2d..2bb60895c6b7 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/engineering.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/engineering.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/engineering_digi.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/engineering_digi.dmi index 068e92f2fad6..8989dc5ec89b 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/engineering_digi.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/engineering_digi.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/medical.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/medical.dmi index 16070f2d27b4..061d441074f8 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/medical.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/medical.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/medical_digi.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/medical_digi.dmi index 0b27b7e0d053..b4f8174bddb9 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/medical_digi.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/medical_digi.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/misc.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/misc.dmi index b6fbc6044578..4bd38ba9c4ea 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/misc.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/misc.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/misc_digi.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/misc_digi.dmi index 76fac7acc3cf..604b828f0bd0 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/misc_digi.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/misc_digi.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/rnd.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/rnd.dmi index dc52b5eec556..23bbd034fe51 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/rnd.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/rnd.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/rnd_digi.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/rnd_digi.dmi index a96624741e2c..76137ae413c1 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/rnd_digi.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/rnd_digi.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/security.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/security.dmi index 4dcfdfa4d67f..b5bf8821922a 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/security.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/security.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/mob/clothing/under/security_digi.dmi b/monkestation/code/modules/blueshift/icons/mob/clothing/under/security_digi.dmi index 558007b1e213..56ad50021554 100644 Binary files a/monkestation/code/modules/blueshift/icons/mob/clothing/under/security_digi.dmi and b/monkestation/code/modules/blueshift/icons/mob/clothing/under/security_digi.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/obj/vending.dmi b/monkestation/code/modules/blueshift/icons/obj/vending.dmi index 598b2595f6e8..39142406b3a6 100644 Binary files a/monkestation/code/modules/blueshift/icons/obj/vending.dmi and b/monkestation/code/modules/blueshift/icons/obj/vending.dmi differ diff --git a/monkestation/code/modules/blueshift/icons/plusheslobcorp.dmi b/monkestation/code/modules/blueshift/icons/plusheslobcorp.dmi new file mode 100644 index 000000000000..5b231ae7a2c9 Binary files /dev/null and b/monkestation/code/modules/blueshift/icons/plusheslobcorp.dmi differ diff --git a/monkestation/code/modules/blueshift/items/ammo.dm b/monkestation/code/modules/blueshift/items/ammo.dm index 19f78deb4230..d06142daabe2 100644 --- a/monkestation/code/modules/blueshift/items/ammo.dm +++ b/monkestation/code/modules/blueshift/items/ammo.dm @@ -286,7 +286,7 @@ /obj/projectile/bullet/c35sol name = ".35 Sol Short bullet" - damage = 20 + damage = 15 wound_bonus = -5 // Normal bullets are 20 bare_wound_bonus = 5 @@ -369,7 +369,7 @@ /obj/projectile/bullet/c35sol/ripper name = ".35 Sol ripper bullet" - damage = 15 + damage = 12 weak_against_armour = TRUE @@ -662,7 +662,7 @@ /obj/item/ammo_box/c585trappiste name = "ammo box (.585 Trappiste lethal)" - desc = "A box of .585 Trappiste pistol rounds, holds twelve cartridges." + desc = "A box of .585 Trappiste pistol rounds, holds thirty-two cartridges." icon = 'monkestation/code/modules/blueshift/icons/obj/company_and_or_faction_based/trappiste_fabriek/ammo.dmi' icon_state = "585box" @@ -673,7 +673,7 @@ caliber = CALIBER_585TRAPPISTE ammo_type = /obj/item/ammo_casing/c585trappiste - max_ammo = 12 + max_ammo = 32 // .585 Trappiste equivalent to a rubber bullet @@ -700,7 +700,7 @@ /obj/item/ammo_box/c585trappiste/incapacitator name = "ammo box (.585 Trappiste flathead)" - desc = "A box of .585 Trappiste pistol rounds, holds twelve cartridges. The blue stripe indicates that it should hold less lethal rounds." + desc = "A box of .585 Trappiste pistol rounds, holds thirty-two cartridges. The blue stripe indicates that it should hold less lethal rounds." icon_state = "585box_disabler" @@ -728,7 +728,7 @@ /obj/item/ammo_box/c585trappiste/hollowpoint name = "ammo box (.585 Trappiste hollowhead)" - desc = "A box of .585 Trappiste pistol rounds, holds twelve cartridges. The purple stripe indicates that it should hold hollowpoint-like rounds." + desc = "A box of .585 Trappiste pistol rounds, holds 32 cartridges. The purple stripe indicates that it should hold hollowpoint-like rounds." icon_state = "585box_shrapnel" diff --git a/monkestation/code/modules/blueshift/items/armor/ash_walker.dm b/monkestation/code/modules/blueshift/items/armor/ash_walker.dm index 11408fcbeb5c..3072b372a703 100644 --- a/monkestation/code/modules/blueshift/items/armor/ash_walker.dm +++ b/monkestation/code/modules/blueshift/items/armor/ash_walker.dm @@ -345,7 +345,7 @@ /datum/language/ashtongue name = "Ashtongue" desc = "A language derived from Draconic, altered and morphed into a strange tongue by the enigmatic will of the Necropolis, a half-successful attempt at patterning its own alien communication methods onto mundane races. It's become nigh-incomprehensible to speakers of the original language." - key = "l" + key = "a" flags = TONGUELESS_SPEECH space_chance = 70 syllables = list( diff --git a/monkestation/code/modules/blueshift/items/barber.dm b/monkestation/code/modules/blueshift/items/barber.dm index 299fc0319aeb..3448f9bd87a9 100644 --- a/monkestation/code/modules/blueshift/items/barber.dm +++ b/monkestation/code/modules/blueshift/items/barber.dm @@ -551,8 +551,27 @@ icon = 'monkestation/code/modules/blueshift/icons/items.dmi' icon_state = "razor" w_class = WEIGHT_CLASS_TINY + flags_1 = CONDUCT_1 + toolspeed = 1 // How long do we take to shave someone's (facial) hair? var/shaving_time = 5 SECONDS + //Gigarazor W/ Bananium + var/unlocked = FALSE //for unlocking super hairstyles + +/obj/item/razor/attackby(obj/item/item, mob/user, params) + .=..() + if(istype(item, /obj/item/stack/sheet/mineral/bananium)) + if(unlocked) + to_chat(user, "[src] is already powered by bananium!") + return + item.use_tool(src, user, amount=1) + unlocked = TRUE + to_chat(user, "You insert the bananium into the battery pack.") + +/obj/item/razor/gigarazor + name = "shmick 9000" + desc = "It gets the job done." + unlocked = TRUE /obj/item/razor/suicide_act(mob/living/carbon/user) user.visible_message(span_suicide("[user] begins shaving [user.p_them()]self without the razor guard! It looks like [user.p_theyre()] trying to commit suicide!")) @@ -578,7 +597,7 @@ var/mob/living/carbon/human/target_human = attacked_mob var/location = user.zone_selected var/obj/item/bodypart/head/noggin = target_human.get_bodypart(BODY_ZONE_HEAD) - var/static/list/head_zones = list(BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_HEAD) + var/static/list/head_zones = list(BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_HEAD) if(!noggin && (location in head_zones)) to_chat(user, span_warning("[target_human] doesn't have a head!")) @@ -593,6 +612,10 @@ to_chat(user, span_warning("The mask is in the way!")) return + if(!(noggin.head_flags & HEAD_FACIAL_HAIR)) + to_chat(user, span_warning("There is no facial hair to style!")) + return + if(HAS_TRAIT(target_human, TRAIT_SHAVED)) to_chat(user, span_warning("[target_human] is just way too shaved. Like, really really shaved.")) return @@ -617,6 +640,10 @@ to_chat(user, span_warning("The headgear is in the way!")) return + if(!(noggin.head_flags & HEAD_HAIR)) + to_chat(user, span_warning("There is no hair to shave!")) + return + if(target_human.hairstyle == "Bald" || target_human.hairstyle == "Balding Hair" || target_human.hairstyle == "Skinhead") to_chat(user, span_warning("There is not enough hair left to shave!")) return diff --git a/monkestation/code/modules/blueshift/items/company_guns.dm b/monkestation/code/modules/blueshift/items/company_guns.dm index 1377d24126e3..98dc570b10ce 100644 --- a/monkestation/code/modules/blueshift/items/company_guns.dm +++ b/monkestation/code/modules/blueshift/items/company_guns.dm @@ -131,7 +131,8 @@ fire_delay = 0.1 SECONDS - recoil = 1 + recoil = 2 + wield_recoil = 0.5 spread = 12.5 projectile_wound_bonus = -20 @@ -393,7 +394,7 @@ /obj/item/gun/ballistic/automatic/xhihao_smg name = "\improper Bogseo Submachine Gun" - desc = "A weapon that could hardly be called a 'sub' machinegun, firing the monstrous .585 cartridge. \ + desc = "A weapon that could hardly be called a 'sub' machinegun, firing the .27-54 cartridge. \ It provides enough kick to bruise a shoulder pretty bad if used without protection." icon = 'monkestation/code/modules/blueshift/icons/obj/company_and_or_faction_based/xhihao_light_arms/guns32x.dmi' @@ -411,7 +412,7 @@ weapon_weight = WEAPON_HEAVY slot_flags = ITEM_SLOT_SUITSTORE | ITEM_SLOT_BELT - accepted_magazine_type = /obj/item/ammo_box/magazine/c585trappiste_pistol + accepted_magazine_type = /obj/item/ammo_box/magazine/miecz fire_sound = 'monkestation/code/modules/blueshift/sounds/smg_heavy.ogg' can_suppress = TRUE @@ -420,7 +421,7 @@ suppressor_x_offset = 9 - burst_size = 1 + burst_size = 2 fire_delay = 0.15 SECONDS actions_types = list() @@ -429,6 +430,7 @@ spread = 12.5 // Hope you didn't need to see anytime soon recoil = 2 + wield_recoil = 0.5 /obj/item/gun/ballistic/automatic/xhihao_smg/give_manufacturer_examine() AddElement(/datum/element/manufacturer_examine, COMPANY_XHIHAO) @@ -517,6 +519,7 @@ fire_delay = 1 SECONDS recoil = 3 + wield_recoil = 1 /obj/item/gun/ballistic/revolver/takbok/give_manufacturer_examine() AddElement(/datum/element/manufacturer_examine, COMPANY_TRAPPISTE) @@ -627,6 +630,7 @@ fire_delay = 1 SECONDS recoil = 3 + wield_recoil = 1 /obj/item/gun/ballistic/automatic/pistol/trappiste/give_manufacturer_examine() AddElement(/datum/element/manufacturer_examine, COMPANY_TRAPPISTE) @@ -761,7 +765,8 @@ fire_delay = 1.2 SECONDS actions_types = list() - recoil = 0.5 + recoil = 1.5 + wield_recoil = 0.5 spread = 2.5 projectile_wound_bonus = -20 @@ -824,6 +829,7 @@ fire_sound_volume = 100 // BOOM BABY recoil = 4 + wield_recoil = 2 weapon_weight = WEAPON_HEAVY burst_size = 1 @@ -962,6 +968,7 @@ desc = "An outdated sidearm rarely seen in use by some members of the CIN. A revolver type design with a four shell cylinder. That's right, shell, this one shoots twelve guage." accepted_magazine_type = /obj/item/ammo_box/magazine/internal/cylinder/rev12ga recoil = SAWN_OFF_RECOIL + wield_recoil = SAWN_OFF_RECOIL * 0.5 weapon_weight = WEAPON_MEDIUM icon = 'monkestation/code/modules/blueshift/icons/obj/company_and_or_faction_based/szot_dynamica/guns_32.dmi' icon_state = "bobr" @@ -1001,7 +1008,7 @@ bolt_type = BOLT_TYPE_OPEN - w_class = WEIGHT_CLASS_NORMAL + w_class = WEIGHT_CLASS_BULKY weapon_weight = WEAPON_MEDIUM slot_flags = ITEM_SLOT_SUITSTORE | ITEM_SLOT_BELT @@ -1015,8 +1022,8 @@ suppressor_x_offset = 11 - burst_size = 3 - fire_delay = 0.2 SECONDS + burst_size = 2 + fire_delay = 0.35 SECONDS spread = 7.5 @@ -1339,3 +1346,15 @@ #undef SHORT_MOD_LASER_SPEECH #undef MOD_LASER_SPEECH_COOLDOWN #undef DEFAULT_RUNECHAT_GUN_COLOR + +/obj/item/gun/ballistic/proc/on_wield() + SIGNAL_HANDLER + + recoil = wield_recoil + spread = spread * 0.75 + +/obj/item/gun/ballistic/proc/on_unwield() + SIGNAL_HANDLER + + recoil = initial(recoil) + spread = initial(spread) diff --git a/monkestation/code/modules/blueshift/items/deforest.dm b/monkestation/code/modules/blueshift/items/deforest.dm index fcaa75e0f7d7..1cbd5ffcbf51 100644 --- a/monkestation/code/modules/blueshift/items/deforest.dm +++ b/monkestation/code/modules/blueshift/items/deforest.dm @@ -348,7 +348,7 @@ base_icon_state = "morpital" icon_state = "morpital" list_reagents = list( - /datum/reagent/medicine/morphine = 5, + /datum/reagent/medicine/painkiller/morphine = 5, /datum/reagent/medicine/omnizine/protozine = 15, /datum/reagent/toxin/staminatoxin = 5, ) diff --git a/monkestation/code/modules/blueshift/items/gunset.dm b/monkestation/code/modules/blueshift/items/gunset.dm index 29dd9351ed16..4904da431daf 100644 --- a/monkestation/code/modules/blueshift/items/gunset.dm +++ b/monkestation/code/modules/blueshift/items/gunset.dm @@ -45,7 +45,7 @@ new weapon_to_spawn (src) for(var/i in 1 to 2) new extra_to_spawn (src) - new /obj/item/ammo_box/a40mm/rubber (src) + new /obj/item/ammo_box/a40mm (src) /obj/item/storage/toolbox/guncase/rocketlauncher name = "rocket launcher gun case" @@ -260,15 +260,15 @@ name = "\improper Xhihao 'Bogseo' gunset" weapon_to_spawn = /obj/item/gun/ballistic/automatic/xhihao_smg/no_mag - extra_to_spawn = /obj/item/ammo_box/magazine/c585trappiste_pistol + extra_to_spawn = /obj/item/ammo_box/magazine/miecz /obj/item/storage/toolbox/guncase/skyrat/xhihao_large_case/bogseo/PopulateContents() new weapon_to_spawn (src) generate_items_inside(list( - /obj/item/ammo_box/c585trappiste/incapacitator = 1, - /obj/item/ammo_box/c585trappiste = 1, - /obj/item/ammo_box/magazine/c585trappiste_pistol/spawns_empty = 3, + /obj/item/ammo_box/c27_54cesarzowa/rubber = 2, + /obj/item/ammo_box/c27_54cesarzowa = 1, + /obj/item/ammo_box/magazine/miecz/spawns_empty = 3, ), src) // Base yellow with symbol trappiste case diff --git a/monkestation/code/modules/blueshift/items/magazines.dm b/monkestation/code/modules/blueshift/items/magazines.dm index c1b4f6b5b15b..2c1770049ecf 100644 --- a/monkestation/code/modules/blueshift/items/magazines.dm +++ b/monkestation/code/modules/blueshift/items/magazines.dm @@ -20,13 +20,13 @@ /obj/item/ammo_box/magazine/c35sol_pistol/stendo name = "\improper Sol extended pistol magazine" - desc = "An extended magazine for SolFed pistols, holds twenty-four rounds." + desc = "An extended magazine for SolFed pistols, holds sixteen rounds." icon_state = "pistol_35_stended" w_class = WEIGHT_CLASS_NORMAL - max_ammo = 24 + max_ammo = 16 /obj/item/ammo_box/magazine/c35sol_pistol/stendo/starts_empty start_empty = TRUE @@ -116,7 +116,7 @@ /obj/item/ammo_box/magazine/c585trappiste_pistol name = "\improper Trappiste pistol magazine" - desc = "A standard size magazine for Trappiste pistols, holds six rounds." + desc = "A standard size magazine for Trappiste pistols, holds sixteen rounds." icon = 'monkestation/code/modules/blueshift/icons/obj/company_and_or_faction_based/trappiste_fabriek/ammo.dmi' icon_state = "pistol_585_standard" @@ -127,7 +127,7 @@ ammo_type = /obj/item/ammo_casing/c585trappiste caliber = CALIBER_585TRAPPISTE - max_ammo = 6 + max_ammo = 16 /obj/item/ammo_box/magazine/c585trappiste_pistol/spawns_empty start_empty = TRUE diff --git a/monkestation/code/modules/blueshift/items/plushies.dm b/monkestation/code/modules/blueshift/items/plushies.dm index f8135582021e..d55a5a416d66 100644 --- a/monkestation/code/modules/blueshift/items/plushies.dm +++ b/monkestation/code/modules/blueshift/items/plushies.dm @@ -2,6 +2,7 @@ /obj/item/toy/plush/nova icon = 'monkestation/code/modules/blueshift/icons/plushes.dmi' inhand_icon_state = null + custom_price = PAYCHECK_COMMAND * 4 /obj/item/toy/plush/nova/borbplushie name = "borb plushie" @@ -81,7 +82,7 @@ /obj/item/toy/plush/nova/sarmieplush name = "cosplayer plushie" - desc = "A stuffed toy who look like a familiar cosplayer, he looks sad." + desc = "A stuffed toy who looks like a familiar cosplayer, he looks sad." icon_state = "plushie_sarmie" attack_verb_continuous = list("baps") attack_verb_simple = list("bap") @@ -90,7 +91,7 @@ /obj/item/toy/plush/nova/sharknet name = "gluttonous shark plushie" - desc = "A heavy plushie of a rather large and hungry shark" + desc = "A heavy plushie of a rather large and hungry shark." icon_state = "plushie_sharknet" attack_verb_continuous = list("cuddles", "squishes", "wehs") attack_verb_simple = list("cuddle", "squish", "weh") diff --git a/monkestation/code/modules/blueshift/items/plushieslobcorp.dm b/monkestation/code/modules/blueshift/items/plushieslobcorp.dm new file mode 100644 index 000000000000..165e03f86209 --- /dev/null +++ b/monkestation/code/modules/blueshift/items/plushieslobcorp.dm @@ -0,0 +1,315 @@ +// //Lobotomy Corportion 13 Plushies +/obj/item/toy/plush/lobotomy + icon = 'monkestation/code/modules/blueshift/icons/plusheslobcorp.dmi' + inhand_icon_state = null + +// The good guys +/obj/item/toy/plush/lobotomy/ayin + name = "ayin plushie" + desc = "A plushie depicting a researcher that did nothing wrong." + icon_state = "ayin" + gender = MALE + +/obj/item/toy/plush/lobotomy/benjamin + name = "benjamin plushie" + desc = "A plushie depicting a researcher that resembles Hokma a bit too much." + icon_state = "benjamin" + gender = MALE + +/obj/item/toy/plush/lobotomy/carmen + name = "carmen plushie" + desc = "A plushie depicting an ambitious and altruistic researcher." + icon_state = "carmen" + gender = FEMALE + +// Sephirots +/obj/item/toy/plush/lobotomy/malkuth + name = "malkuth plushie" + desc = "A plushie depicting a diligent worker." + icon_state = "malkuth" + gender = FEMALE + +/obj/item/toy/plush/lobotomy/yesod + name = "yesod plushie" + desc = "A plushie depicting a researcher in a turtleneck." + icon_state = "yesod" + gender = MALE + +/obj/item/toy/plush/lobotomy/netzach + name = "netzach plushie" + desc = "A plushie depicting a person that likes alcohol a bit too much." + icon_state = "netzach" + gender = MALE + +/obj/item/toy/plush/lobotomy/hod + name = "hod plushie" + desc = "A plushie depicting a person who hopes to make everything right." + icon_state = "hod" + gender = FEMALE + +/obj/item/toy/plush/lobotomy/lisa + name = "tiphereth-A plushie" + desc = "A plushie depicting a person with high expectations." + icon_state = "lisa" + gender = FEMALE + +/obj/item/toy/plush/lobotomy/enoch + name = "tiphereth-B plushie" + desc = "A plushie depicting an optimistic person with kind heart." + icon_state = "enoch" + gender = MALE + +/obj/item/toy/plush/lobotomy/chesed + name = "chesed plushie" + desc = "A plushie depicting a sleepy person with a mug of coffee in their hand." + icon_state = "chesed" + gender = MALE + +/obj/item/toy/plush/lobotomy/gebura + name = "gebura plushie" + desc = "A plushie depicting avery strong and brave person." + icon_state = "gebura" + gender = FEMALE + +/obj/item/toy/plush/lobotomy/hokma + name = "hokma plushie" + desc = "A plushie depicting a wise person with a fancy monocle. He knows the secrets behind his company." + icon_state = "hokma" + gender = MALE + +/obj/item/toy/plush/lobotomy/binah + name = "binah plushie" + desc = "A plushie depicting a sadistic person who lacks any emotions." + icon_state = "binah" + gender = FEMALE + +/obj/item/toy/plush/lobotomy/angela + name = "angela plushie" + desc = "A plushie depicting a highly advanced AI with ulterior motives." + icon_state = "angela" + gender = FEMALE + + //Limbus Sinners +/obj/item/toy/plush/lobotomy/yisang + name = "yi sang plushie" + desc = "A plushie depicting a ruminating Sinner." + icon_state = "yisang" + attack_verb_continuous = list("shanks", "stabs") + attack_verb_simple = list("shank", "stab") + gender = MALE + +/obj/item/toy/plush/lobotomy/faust + name = "faust plushie" + desc = "A plushie depicting an insufferable Sinner." + icon_state = "faust" + attack_verb_continuous = list("slices", "cleaves") + attack_verb_simple = list("slice", "cleave") + gender = FEMALE + +/obj/item/toy/plush/lobotomy/don + name = "don quixote plushie" + desc = "A plushie depicting a heroic Sinner." + icon_state = "don" + attack_verb_continuous = list("impales", "jousts") + attack_verb_simple = list("impale", "joust") + gender = FEMALE + +/obj/item/toy/plush/lobotomy/don/attack(mob/living/target, mob/living/user, params) + . = ..() + flick("don_yahoo", src) + +/obj/item/toy/plush/lobotomy/ryoshu + name = "ryoshu plushie" + desc = "A plushie depicting a artistic Sinner." + icon_state = "ryoshu" + attack_verb_continuous = list("slices", "cleaves") + attack_verb_simple = list("slice", "cleave") + gender = FEMALE + +/obj/item/toy/plush/lobotomy/meursault + name = "meursault plushie" + desc = "A plushie depicting a neutral Sinner." + icon_state = "meursault" + attack_verb_continuous = list("bashes", "slams", "bludgeons") + attack_verb_simple = list("bash", "slam", "bludgeon") + gender = MALE + +/obj/item/toy/plush/lobotomy/honglu + name = "hong lu plushie" + desc = "A plushie depicting a sheltered Sinner." + icon_state = "honglu" + attack_verb_continuous = list("slices", "cleaves") + attack_verb_simple = list("slice", "cleave") + gender = MALE + +/obj/item/toy/plush/lobotomy/heathcliff + name = "heathcliff plushie" + desc = "A plushie depicting a brash Sinner." + icon_state = "heathcliff" + attack_verb_continuous = list("bashes", "slams", "bludgeons") + attack_verb_simple = list("bash", "slam", "bludgeon") + gender = MALE + +/obj/item/toy/plush/lobotomy/ishmael + name = "ishmael plushie" + desc = "A plushie depicting a reliable Sinner." + icon_state = "ishmael" + attack_verb_continuous = list("bashes", "slams", "bludgeons") + attack_verb_simple = list("bash", "slam", "bludgeon") + gender = FEMALE + +/obj/item/toy/plush/lobotomy/rodion + name = "rodion plushie" + desc = "A plushie depicting a Sinner born in the Backstreets." + icon_state = "rodion" + attack_verb_continuous = list("slices", "cleaves") + attack_verb_simple = list("slice", "cleave") + gender = FEMALE + +/obj/item/toy/plush/lobotomy/sinclair + name = "sinclair plushie" + desc = "A plushie depicting a insecure Sinner." + icon_state = "sinclair" + attack_verb_continuous = list("slices", "cleaves") + attack_verb_simple = list("slice", "cleave") + gender = MALE + +/obj/item/toy/plush/lobotomy/dante + name = "dante plushie" + desc = "A plushie depicting a clock-headed manager struggling to wrangle the Sinners." + icon_state = "dante" + gender = MALE + +/obj/item/toy/plush/lobotomy/outis + name = "outis plushie" + desc = "A plushie depicting a strategic Sinner." + icon_state = "outis" + attack_verb_continuous = list("shanks", "stabs") + attack_verb_simple = list("shank", "stab") + gender = FEMALE + +/obj/item/toy/plush/lobotomy/gregor + name = "gregot plushie" + desc = "A plushie depicting a genetically altered Sinner that resembles a bug." + icon_state = "gregor" + attack_verb_continuous = list("shanks", "stabs") + attack_verb_simple = list("shank", "stab") + gender = MALE + +// Misc LC13 stuff +/obj/item/toy/plush/lobotomy/pierre + name = "pierre plushie" + desc = "A plushie depicting a friendly cook looking for simulating flavors." + icon_state = "pierre" + gender = FEMALE + +/obj/item/toy/plush/lobotomy/myo + name = "myo plushie" + desc = "A plushie that's here to chew grass and kick ass. And she's all out of grass." + icon_state = "myo" + gender = FEMALE + pet_message = "You pet the myo plushie, yem." + +/obj/item/toy/plush/lobotomy/rabbit + name = "rabbit plushie" + desc = "A plushie depicting a mercenary that grazes the grass." + icon_state = "rabbit" + +/obj/item/toy/plush/lobotomy/yuri + name = "yuri plushie" + desc = "A plushie depicting an employee who had the potential to walk alongside the Sinners." + icon_state = "yuri" + gender = FEMALE + +/obj/item/toy/plush/lobotomy/yuri/attackby(obj/item/I, mob/living/user, params) + . = ..() + if(istype(I, /obj/item/food/grown/apple/gold)) + if(do_after(user, 2 SECONDS, target = user)) + user.visible_message(span_danger("[src] is violently absorbed by \the [I]!")) + qdel(src) + return + to_chat(user, span_notice("You feel as if you prevented something terrible from happening again.")) + +/obj/item/toy/plush/lobotomy/samjo + name = "samjo plushie" + desc = "A plushie depicting a secretary with unparalleled devotion." + icon_state = "samjo" + gender = MALE + +// Abnormalities +/obj/item/toy/plush/lobotomy/qoh + name = "queen of hatred plushie" + desc = "A plushie depicting a magical girl whose goal is fighting all evil in the universe!" + icon_state = "qoh" + gender = FEMALE + +/obj/item/toy/plush/lobotomy/kog + name = "king of greed plushie" + desc = "A plushie depicting a magical girl whose desires got the best of her." + icon_state = "kog" + gender = FEMALE + pet_message = "While petting the king of greed plushie, you feel a slight nibbling on your finger." + +/obj/item/toy/plush/lobotomy/kod + name = "knight of despair plushie" + desc = "A plushie depicting a magical girl who abandoned those who needed her most." + icon_state = "kod" + gender = FEMALE + +/obj/item/toy/plush/lobotomy/sow + name = "servant of wrath plushie" + desc = "A plushie depicting a magical girl who was betrayed by someone they trusted dearly." + icon_state = "sow" + gender = FEMALE + +/obj/item/toy/plush/lobotomy/nihil + name = "jester of nihil plushie" + desc = "A plushie depicting a black and white jester who embodies nilihism." + icon_state = "nihil" + +/obj/item/toy/plush/lobotomy/bigbird + name = "big bird plushie" + desc = "A plushie depicting a big bird with a lantern that burns forever. How does it even work?" + icon_state = "bigbird" + +/obj/item/toy/plush/lobotomy/mosb + name = "mountain of smiling bodies plushie" + desc = "A plushie depicting a mountain of corpses merged into one. Yuck!" + icon_state = "mosb" + +/obj/item/toy/plush/lobotomy/big_bad_wolf + name = "big and will be bad wolf plushie" + desc = "A plushie depicting quite a not so bad and very much so marketable wolf plush." + icon_state = "big_bad_wolf" + +/obj/item/toy/plush/lobotomy/melt + name = "melting love plushie" + desc = "A plushie depicting a slime girl, you think." + icon_state = "melt" + attack_verb_continuous = list("blorbles", "slimes", "absorbs") + attack_verb_simple = list("blorble", "slime", "absorb") + pet_message = "As you pet the melting love plushie, you swear it stares and smiles at you." + +/obj/item/toy/plush/lobotomy/scorched + name = "scorched girl plushie" + desc = "A plushie depicting a burned girl with an eternally lit match." + icon_state = "scorched" + gender = FEMALE + +/obj/item/toy/plush/lobotomy/pinocchio + name = "pinocchio plushie" + desc = "A plushie depicting a puppet that wanted to be a human." + icon_state = "pinocchio" + +// Others +/obj/item/toy/plush/lobotomy/bongbong + name = "bongbong plushie" + desc = "A plushie depicting the essence of Lobotomy Corporation." + icon_state = "bongbong" + pet_message = "Bong bong." + +// Special +/obj/item/toy/plush/lobotomy/bongy + name = "bongy plushie" + desc = "It looks like a raw chicken. A cute raw chicken!" + icon_state = "bongy" diff --git a/monkestation/code/modules/blueshift/items/soul_catcher.dm b/monkestation/code/modules/blueshift/items/soul_catcher.dm index 90d669c10444..b193e729ce72 100644 --- a/monkestation/code/modules/blueshift/items/soul_catcher.dm +++ b/monkestation/code/modules/blueshift/items/soul_catcher.dm @@ -114,7 +114,7 @@ /mob/living/carbon/human/examine_more(mob/user) . = ..() if(user.mind?.has_antag_datum(/datum/antagonist/brother) && !(ROLE_BROTHER in client?.prefs?.be_special)) - . += span_orange("[p_They()] do[p_es()] not seem to be too fond of brotherly connections.") + . += span_userdanger("[p_They()] do[p_es()] not seem to be too fond of brotherly connections.") /obj/item/disk/nifsoft_uploader/soulcatcher name = "Soulcatcher" diff --git a/monkestation/code/modules/blueshift/machines/station_armament.dm b/monkestation/code/modules/blueshift/machines/station_armament.dm index efda34c95c60..85f77452549b 100644 --- a/monkestation/code/modules/blueshift/machines/station_armament.dm +++ b/monkestation/code/modules/blueshift/machines/station_armament.dm @@ -41,9 +41,14 @@ w_class = WEIGHT_CLASS_TINY /// How many points does this card have to use at the vendor? var/points = 10 + var/armament_type + var/list/access /obj/item/armament_points_card/Initialize(mapload) . = ..() + if(armament_type) + AddComponent(/datum/component/armament, subtypesof(armament_type), access) + maptext = span_maptext("
    [points]
    ") /obj/item/armament_points_card/examine(mob/user) diff --git a/monkestation/code/modules/blueshift/machines/thumper.dm b/monkestation/code/modules/blueshift/machines/thumper.dm index 9531db06035c..56c5c6c2b61f 100644 --- a/monkestation/code/modules/blueshift/machines/thumper.dm +++ b/monkestation/code/modules/blueshift/machines/thumper.dm @@ -44,15 +44,15 @@ ) /// How much of the listed types of ores should we spawn when spawning ore var/static/list/ore_spawn_values = list( - /obj/item/stack/ore/iron = 25, - /obj/item/stack/ore/glass/basalt = 25, - /obj/item/stack/ore/plasma = 15, - /obj/item/stack/ore/uranium = 10, - /obj/item/stack/ore/silver = 10, - /obj/item/stack/ore/gold = 10, - /obj/item/stack/ore/titanium = 10, - /obj/item/stack/ore/diamond = 5, - /obj/item/stack/ore/bluespace_crystal = 1, + /obj/item/stack/ore/iron = 8000, + /obj/item/stack/ore/glass/basalt = 8000, + /obj/item/stack/ore/plasma = 7000, + /obj/item/stack/ore/uranium = 6000, + /obj/item/stack/ore/silver = 4000, + /obj/item/stack/ore/gold = 4000, + /obj/item/stack/ore/titanium = 4000, + /obj/item/stack/ore/diamond = 2500, + /obj/item/stack/ore/bluespace_crystal = 1000, ) /// What's the limit for ore near us? Counts by stacks, not individual amounts of ore var/nearby_ore_limit = 5 @@ -204,7 +204,7 @@ var/is_there_a_thumper_too = FALSE for(var/turf/nearby_turf in orange(ore_spawn_range, src)) for(var/ore as anything in nearby_turf.contents) - if(istype(ore, /obj/item/stack/ore)) + if(istype(ore, /obj/item/boulder)) nearby_ore += 1 continue if(istype(ore, /obj/machinery/power/colony_ore_thumper)) @@ -243,8 +243,16 @@ for(var/iteration in 1 to rand(2, 4)) var/turf/target_turf = pick(nearby_valid_turfs) - var/obj/item/stack/new_ore = pick_weight(ore_weight_list) - new new_ore(target_turf, ore_spawn_values[new_ore.type]) + var/obj/item/stack/ore/new_ore = pick_weight(ore_weight_list) + var/obj/item/stack/ore/created_ore = new new_ore + var/obj/item/boulder/new_boulder = new (target_turf) + + var/list/new_mats = list() + for(var/datum/material/material as anything in created_ore.mats_per_unit) + new_mats[material] = ore_spawn_values[created_ore.type] + + qdel(created_ore) + new_boulder.set_custom_materials(new_mats) slam_jams -= slam_jams_needed diff --git a/monkestation/code/modules/blueshift/nifsoft/_base.dm b/monkestation/code/modules/blueshift/nifsoft/_base.dm index 92f0f6e2b9d3..eb15378c3f2e 100644 --- a/monkestation/code/modules/blueshift/nifsoft/_base.dm +++ b/monkestation/code/modules/blueshift/nifsoft/_base.dm @@ -517,23 +517,19 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list( if(remove_nif) qdel(installed_nif) - persistence.nif_path = null - persistence.nif_examine_text = null + remove_nif_data(persistence) return if(!installed_nif || (installed_nif && !installed_nif.nif_persistence) || (installed_nif.durability <= 0)) // If you have a NIF on file but leave the round without one installed, you only take a durability loss instead of losing the implant. if(persistence.nif_path) if(persistence.nif_durability <= 0) //There is one round to repair the NIF after it breaks, otherwise it will be lost. - persistence.nif_path = null - persistence.nif_examine_text = null - persistence.nif_durability = null + remove_nif_data(persistence) return persistence.nif_durability = max((persistence.nif_durability - LOSS_WITH_NIF_UNINSTALLED), 0) return - persistence.nif_path = null - persistence.nif_examine_text = null + remove_nif_data(persistence) return persistence.nif_path = installed_nif.type @@ -557,6 +553,18 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list( persistence.persistent_nifsofts = persistent_nifsoft_paths +/// Removes the NIF data for an individual user. JFC turn this into a self-contained datum later PLEASE. +/mob/living/carbon/human/proc/remove_nif_data(datum/modular_persistence/persistence) + persistence.nif_path = null + persistence.nif_durability = null + persistence.nif_examine_text = null + persistence.nif_is_calibrated = null + persistence.nif_soulcatcher_rooms = null + persistence.nif_theme = null + persistence.stored_rewards_points = null + persistence.soul_poem_nifsoft_message = null + persistence.soul_poem_nifsoft_name = null + /// Loads the NIF data for an individual user. /mob/living/carbon/human/proc/load_nif_data(datum/modular_persistence/persistence) if(HAS_TRAIT(src, TRAIT_GHOSTROLE)) @@ -835,11 +843,11 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list( return FALSE if(!is_type_in_list(target_glasses, glasses_whitelist)) - balloon_alert("incompatible!") + balloon_alert(user, "incompatible!") return FALSE if(HAS_TRAIT(target_glasses, TRAIT_NIFSOFT_HUD_GRANTER)) - balloon_alert("already upgraded!") + balloon_alert(user, "already upgraded!") return FALSE user.visible_message(span_notice("[user] upgrades [target_glasses] with [src]."), span_notice("You upgrade [target_glasses] to be NIF HUD compatible.")) diff --git a/monkestation/code/modules/blueshift/reagents/deforest.dm b/monkestation/code/modules/blueshift/reagents/deforest.dm index ca8751c02f28..556d1b96df25 100644 --- a/monkestation/code/modules/blueshift/reagents/deforest.dm +++ b/monkestation/code/modules/blueshift/reagents/deforest.dm @@ -13,6 +13,7 @@ /datum/reagent/medicine/lidocaine/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() + affected_mob.cause_pain(BODY_ZONES_ALL, -1 * REM * seconds_per_tick) affected_mob.adjustOrganLoss(ORGAN_SLOT_HEART,3 * REM * seconds_per_tick, 80) //Inverse Medicines// @@ -306,6 +307,7 @@ else // Much longer than that however, and you're not gonna have a good day if(!(our_guy.mob_biotypes & MOB_ROBOTIC)) our_guy.spray_blood(our_guy.dir, 2) // The before mentioned coughing up blood + our_guy.blood_particles(amount = rand(3, 6), angle = 0, min_deviation = 0, max_deviation = 360) our_guy.emote("cough") our_guy.visible_message( span_danger("[our_guy] suddenly snaps back from [our_guy.p_their()] inhuman speeds, coughing up a spray of blood!"), @@ -410,6 +412,7 @@ if(SPT_PROB(5, seconds_per_tick) && !(our_guy.mob_biotypes & MOB_ROBOTIC)) to_chat(our_guy, span_danger("You cough up a splatter of blood!")) our_guy.spray_blood(our_guy.dir, 1) + our_guy.blood_particles(amount = rand(3, 6), angle = 0, min_deviation = 0, max_deviation = 360) our_guy.emote("cough") if(SPT_PROB(10, seconds_per_tick)) diff --git a/monkestation/code/modules/blueshift/structures/ash_walker.dm b/monkestation/code/modules/blueshift/structures/ash_walker.dm index 739abac17421..287c03637caa 100644 --- a/monkestation/code/modules/blueshift/structures/ash_walker.dm +++ b/monkestation/code/modules/blueshift/structures/ash_walker.dm @@ -192,7 +192,7 @@ RegisterSignal(human_target, COMSIG_MOVABLE_MOVED, PROC_REF(do_move)) RegisterSignal(human_target, COMSIG_LIVING_DEATH, PROC_REF(remove_curse)) -/datum/component/ash_cursed/Destroy(force, silent) +/datum/component/ash_cursed/Destroy(force) . = ..() REMOVE_TRAIT(human_target, TRAIT_NO_TELEPORT, REF(src)) human_target.remove_movespeed_modifier(/datum/movespeed_modifier/ash_cursed) @@ -779,7 +779,7 @@ RegisterSignal(atom_parent, COMSIG_ATOM_EXAMINE, PROC_REF(check_examine)) RegisterSignal(atom_parent, COMSIG_QDELETING, PROC_REF(delete_farm)) -/datum/component/simple_farm/Destroy(force, silent) +/datum/component/simple_farm/Destroy(force) //lets not hard del UnregisterSignal(atom_parent, list(COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_EXAMINE, COMSIG_QDELETING)) atom_parent = null diff --git a/monkestation/code/modules/blueshift/structures/flipped_table.dm b/monkestation/code/modules/blueshift/structures/flipped_table.dm index 2cce95f5c3eb..177074d45933 100644 --- a/monkestation/code/modules/blueshift/structures/flipped_table.dm +++ b/monkestation/code/modules/blueshift/structures/flipped_table.dm @@ -72,6 +72,10 @@ return if(!can_flip) return + if(isobserver(user) && !is_admin(user.client)) //prevent ghosts from flipping tables but still allows admins to fuck around + return + if(!user.CanReach(src)) //prevents certain kinds of fuckers on cameras from flipping tables THROUGH A FUCKING CAMERA. ... this is why we can't have nice things. + return user.balloon_alert_to_viewers("flipping table...") if(!do_after(user, max_integrity * 0.25)) return diff --git a/monkestation/code/modules/blueshift/structures/locker.dm b/monkestation/code/modules/blueshift/structures/locker.dm index e5b51dc3e823..ce8340aac777 100644 --- a/monkestation/code/modules/blueshift/structures/locker.dm +++ b/monkestation/code/modules/blueshift/structures/locker.dm @@ -2,6 +2,7 @@ name = "corrections officer riot gear" icon = 'monkestation/code/modules/blueshift/icons/unique/closet.dmi' icon_state = "riot" + req_access = list(ACCESS_SECURITY) door_anim_time = 0 //Somebody resprite or remove this 'riot' locker. It's evil. /obj/structure/closet/secure_closet/corrections_officer/PopulateContents() @@ -14,39 +15,6 @@ new /obj/item/clothing/head/helmet/toggleable/riot(src) new /obj/item/shield/riot(src) -/obj/item/storage/bag/garment/blueshield - name = "blueshield's garment bag" - desc = "A bag for storing extra clothes and shoes. This one belongs to the blueshield." - -/obj/item/storage/bag/garment/blueshield/PopulateContents() - new /obj/item/clothing/suit/hooded/wintercoat/nova/blueshield(src) - new /obj/item/clothing/head/beret/blueshield(src) - new /obj/item/clothing/head/beret/blueshield/navy(src) - new /obj/item/clothing/under/rank/blueshield(src) - new /obj/item/clothing/under/rank/blueshield/skirt(src) - new /obj/item/clothing/under/rank/blueshield/turtleneck(src) - new /obj/item/clothing/under/rank/blueshield/turtleneck/skirt(src) - new /obj/item/clothing/suit/armor/vest/blueshield(src) - new /obj/item/clothing/suit/armor/vest/blueshield/jacket(src) - new /obj/item/clothing/neck/mantle/bsmantle(src) - -/obj/structure/closet/secure_closet/blueshield - name = "blueshield's locker" - icon_state = "bs" - icon = 'monkestation/code/modules/blueshift/icons/obj/closet.dmi' - req_access = list(ACCESS_CAPTAIN) - -/obj/structure/closet/secure_closet/blueshield/New() - ..() - new /obj/item/storage/briefcase/secure(src) - new /obj/item/storage/belt/security/full(src) - new /obj/item/grenade/flashbang(src) - new /obj/item/assembly/flash/handheld(src) - new /obj/item/restraints/handcuffs(src) - new /obj/item/clothing/glasses/hud/security/sunglasses(src) - new /obj/item/storage/medkit/frontier/stocked(src) - new /obj/item/storage/bag/garment/blueshield(src) - /obj/structure/closet/secure_closet/nanotrasen_consultant name = "nanotrasen consultant's locker" diff --git a/monkestation/code/modules/blueshift/structures/primative.dm b/monkestation/code/modules/blueshift/structures/primative.dm index c467e9772e17..f3894fd2b8b7 100644 --- a/monkestation/code/modules/blueshift/structures/primative.dm +++ b/monkestation/code/modules/blueshift/structures/primative.dm @@ -725,7 +725,7 @@ GLOBAL_LIST_INIT(stone_recipes, list ( \ for(var/target_item as anything in contents) var/obj/item/food/grown/food_item = target_item - if(food_item.mill_reagent) + if(istype(food_item) && food_item.mill_reagent) reagents.add_reagent(food_item.mill_reagent, food_item.seed.potency * 0.2) seedify(target_item, t_max = 1) @@ -1909,7 +1909,7 @@ GLOBAL_LIST_INIT(clay_recipes, list ( \ COOLDOWN_DECLARE(forging_cooldown) /// Is the forge in use or not? If true, prevents most interactions with the forge var/in_use = FALSE - /// The current 'level' of the forge, how upgraded is it from zero to three + /// The current 'level' of the forge, how upgraded is it from one to seven var/forge_level = FORGE_LEVEL_YOU_PLAY_LIKE_A_NOOB /// What smoke particles should be coming out of the forge var/smoke_state = SMOKE_STATE_NONE @@ -2208,6 +2208,10 @@ GLOBAL_LIST_INIT(clay_recipes, list ( \ refuel(attacking_item, user, TRUE) return + if(istype(attacking_item, /obj/item/stack/sheet/mineral/plasma)) //Mmm, Spicy strong fuel + refuel(attacking_item, user, TRUE) + return + if(istype(attacking_item, /obj/item/stack/ore)) smelt_ore(attacking_item, user) return @@ -2231,6 +2235,10 @@ GLOBAL_LIST_INIT(clay_recipes, list ( \ refuel(attacking_item, user, TRUE) return TRUE + if(istype(attacking_item,/obj/item/stack/sheet/mineral/plasma)) //Mmm, Spicy strong fuel + refuel(attacking_item,user,TRUE) + return TRUE + if(istype(attacking_item, /obj/item/stack/ore)) smelt_ore(attacking_item, user) return TRUE @@ -2288,10 +2296,10 @@ GLOBAL_LIST_INIT(clay_recipes, list ( \ if(is_strong_fuel) if(forge_fuel_strong >= 5 MINUTES) - fail_message(user, "[src] is full on coal") + fail_message(user, "[src] is full on regular fuel") return if(forge_fuel_weak >= 5 MINUTES) - fail_message(user, "[src] is full on wood") + fail_message(user, "[src] is full on weak fuel") return balloon_alert_to_viewers("refueling...") @@ -2339,6 +2347,7 @@ GLOBAL_LIST_INIT(clay_recipes, list ( \ for(var/spawn_ore in 1 to ore_to_sheet_amount) new spawning_item(src_turf) + user.mind.adjust_experience(/datum/skill/smithing, 1) //Just a little bit of XP, as a treat. in_use = FALSE qdel(ore_item) @@ -2562,6 +2571,16 @@ GLOBAL_LIST_INIT(clay_recipes, list ( \ SKILL_SPEED_MODIFIER = list(1, 0.95, 0.9, 0.85, 0.75, 0.6, 0.5), SKILL_PROBS_MODIFIER = list(0, 5, 10, 20, 40, 80, 100) ) + skill_item_path = /obj/item/clothing/neck/cloak/skill_reward/smithing + +/obj/item/clothing/neck/cloak/skill_reward/smithing + name = "legendary smith's cloak" + desc = "Those who wear this cloak have the knowledge and understanding to create weapons and tools rivaling that of a god. \ + Often heros' songs are sung about their deeds, but only the wise know the heros' deeds were only possible thanks to a blacksmith." + icon = 'monkestation/code/modules/smithing/icons/cloaks.dmi' + worn_icon = 'monkestation/code/modules/smithing/icons/neck.dmi' + icon_state = "smithingcloak" + associated_skill_path = /datum/skill/smithing /// Called on an object when a tool with wrench capabilities is used to left click an object /atom/proc/billow_act(mob/living/user, obj/item/tool) diff --git a/monkestation/code/modules/blueshift/structures/wooden_fence.dm b/monkestation/code/modules/blueshift/structures/wooden_fence.dm index 6319daeaeffa..d17a94fb6c93 100644 --- a/monkestation/code/modules/blueshift/structures/wooden_fence.dm +++ b/monkestation/code/modules/blueshift/structures/wooden_fence.dm @@ -23,9 +23,16 @@ ) update_appearance() -// previously NO_DECONSTRUCTION -/obj/structure/railing/wirecutter_act(mob/living/user, obj/item/I) - return NONE +/obj/structure/railing/wirecutter_act(mob/living/user, obj/item/tool) + . = ..() + if(flags_1 & NODECONSTRUCT_1) + return NONE + var/deconstruct_time = anchored ? (1.5 SECONDS) : (0.5 SECONDS) + if(do_after(user, deconstruct_time, src)) + user.visible_message(span_info("[user] cuts apart \the [src]."), span_warning("You cut apart \the [src].")) + tool.play_tool_sound(src, 50) + deconstruct() + return TRUE // Fence gates for the above mentioned fences diff --git a/monkestation/code/modules/botany/components/plant_growing.dm b/monkestation/code/modules/botany/components/plant_growing.dm index 97a1b8ca71c2..31f8f54f1371 100644 --- a/monkestation/code/modules/botany/components/plant_growing.dm +++ b/monkestation/code/modules/botany/components/plant_growing.dm @@ -248,7 +248,7 @@ return TRUE /datum/component/plant_growing/proc/adjust_selfgrow(datum/source, amount) - self_sustaining_precent = clamp(self_sustaining_precent + amount, 0, 10) + self_sustaining_precent = clamp(self_sustaining_precent + amount, 0, 100) /datum/component/plant_growing/proc/increase_work_processes(datum/source, amount) next_work -= amount diff --git a/monkestation/code/modules/botany/new_seeds/mutations.dm b/monkestation/code/modules/botany/new_seeds/mutations.dm index 11f700bdc0b0..ac90b54534de 100644 --- a/monkestation/code/modules/botany/new_seeds/mutations.dm +++ b/monkestation/code/modules/botany/new_seeds/mutations.dm @@ -4,12 +4,12 @@ created_product = /obj/item/paper created_seed = /obj/item/seeds/tree/paper - -/datum/hydroponics/plant_mutation/money +//money treee seeds have been moved to the rare maint pool +/*/datum/hydroponics/plant_mutation/money mutates_from = list(/obj/item/seeds/tree/paper) required_potency = list(30, INFINITY) created_product = /obj/item/stack/spacecash/c10 - created_seed = /obj/item/seeds/tree/money + created_seed = /obj/item/seeds/tree/money*/ /datum/hydroponics/plant_mutation/steel mutates_from = list(/obj/item/seeds/tree) diff --git a/monkestation/code/modules/botany/new_seeds/seeds.dm b/monkestation/code/modules/botany/new_seeds/seeds.dm index d54ec1d4d37a..906d075b10a4 100644 --- a/monkestation/code/modules/botany/new_seeds/seeds.dm +++ b/monkestation/code/modules/botany/new_seeds/seeds.dm @@ -37,7 +37,7 @@ icon_grow = "TreePaper-G" product = /obj/item/paper - possible_mutations = list(/datum/hydroponics/plant_mutation/money) +// possible_mutations = list(/datum/hydroponics/plant_mutation/money) //money trees moved to the maint pool genes = list(/datum/plant_gene/trait/repeated_harvest) /obj/item/seeds/tree/money diff --git a/monkestation/code/modules/botany/species/apid/bodyparts.dm b/monkestation/code/modules/botany/species/apid/bodyparts.dm index 14f0fe6ddf3d..b38c15567d4e 100644 --- a/monkestation/code/modules/botany/species/apid/bodyparts.dm +++ b/monkestation/code/modules/botany/species/apid/bodyparts.dm @@ -5,6 +5,8 @@ limb_id = SPECIES_APID is_dimorphic = TRUE should_draw_greyscale = FALSE + brute_modifier = 1.25 //ethereal are weak to brute damage + head_flags = HEAD_HAIR| HEAD_LIPS | HEAD_EYESPRITES | HEAD_EYEHOLES | HEAD_DEBRAIN /obj/item/bodypart/chest/apid icon = 'monkestation/code/modules/botany/icons/apid_sprites.dmi' diff --git a/monkestation/code/modules/botany/species/apid/hive/hive_object.dm b/monkestation/code/modules/botany/species/apid/hive/hive_object.dm index 94f3e9ab52ec..b0cf51e09701 100644 --- a/monkestation/code/modules/botany/species/apid/hive/hive_object.dm +++ b/monkestation/code/modules/botany/species/apid/hive/hive_object.dm @@ -85,6 +85,9 @@ GLOBAL_LIST_INIT(hive_exits, list()) icon = 'monkestation/code/modules/botany/icons/apid_sprites.dmi' icon_state = "hive_exit" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + anchored = TRUE + move_resist = INFINITY var/obj/structure/beebox/hive/linked_hive diff --git a/monkestation/code/modules/botany/species/apid/species.dm b/monkestation/code/modules/botany/species/apid/species.dm index 5424db2b397a..cd67ebf48993 100644 --- a/monkestation/code/modules/botany/species/apid/species.dm +++ b/monkestation/code/modules/botany/species/apid/species.dm @@ -27,11 +27,7 @@ name = "\improper Apid" plural_form = "Apids" id = SPECIES_APID - species_traits = list( - LIPS, - HAS_MARKINGS, - HAIR - ) + species_traits = list(HAS_MARKINGS,) /* mutant_bodyparts = list( diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/bottler.dm b/monkestation/code/modules/brewin_and_chewin/brewing/bottler.dm new file mode 100644 index 000000000000..69f4d333a4ec --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/bottler.dm @@ -0,0 +1,53 @@ +/obj/item/bottle_kit + name = "Bottling Kit" + desc = "A box that holds glasses fabricators, lables, caps and quarks ready for home brewing and bottling." + icon = 'monkestation/code/modules/brewin_and_chewin/icons/objects.dmi' + icon_state = "bottler_box" + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list(/datum/material/iron = 2000, /datum/material/glass = 4000) + var/glass_colour = "brew_bottle" + var/fake_glass_name = "Kinda Blue" + +/obj/item/bottle_kit/examine(mob/user) + . = ..() + . += span_info("Current Glass Bottle Printing Type: [fake_glass_name].") + + +/obj/item/bottle_kit/attack_self(mob/user as mob) + ..() + glass_picker(user) + +/obj/item/bottle_kit/proc/glass_picker(mob/user as mob) + var/list/options = list() + options["Kinda Blue"] = "brew_bottle" + options["Redish"] = "brew_red_bottle" + options["Green-Adjcent"] = "brew_green_bottle" + options["Scuffed Platium"] = "brew_white_bottle" + options["Sorta Coal"] = "brew_coal_bottle" + options["Maybe Bronze"] = "brew_fancy_bottle" + options["Off-Amethyst"] = "brew_funky_bottle" + options["Odd Sky Shade"] = "brew_sky_bottle" + options["Washed Out Brass"] = "brew_saint_po_bottle" + options["Faded Caramel"] = "brew_gold_bottle" + options["Approximate Sea Shore"] = "brew_pianowoman_bottle" + options["Faded Dust"] = "brew_noir_bottle" + options["Close Honeycomb"] = "brew_bees_bottle" + + + if(!options.len) + to_chat(user, span_info("The bottle kit is limited to only normal blue bottles. Oh no!")) + glass_colour = "brew_bottle" + fake_glass_name = "Blue" + return + + var/choice = tgui_input_list(user, "What colour do you pick?", name, options) + + var/printing_choice = options[choice] + + if(!printing_choice) + glass_colour = "brew_bottle" + fake_glass_name = "Kinda Blue" + return + + fake_glass_name = choice + glass_colour = printing_choice diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/bottles.dm b/monkestation/code/modules/brewin_and_chewin/brewing/bottles.dm new file mode 100644 index 000000000000..bb7157e2ec16 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/bottles.dm @@ -0,0 +1,19 @@ +/obj/item/reagent_containers/cup/glass/bottle/small/brewing_bottle + name = "Flash Bottle" + desc = "A quickly printed bottle using a non-recycleable glass." + icon = 'monkestation/code/modules/brewin_and_chewin/icons/bottle.dmi' + icon_state = "brew_bottle" + + var/glass_name + var/glass_desc + +/obj/item/reagent_containers/cup/glass/bottle/small/brewing_bottle/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + if(target.type in typesof(/obj/item/reagent_containers/cup/glass) - typesof(/obj/item/reagent_containers/cup/glass/bottle)) + if(glass_name) + target.name = glass_name + if(glass_desc) + target.desc = glass_desc + if(reagents.total_volume <= 0) + glass_desc = null + glass_name = null diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/designs.dm b/monkestation/code/modules/brewin_and_chewin/brewing/designs.dm new file mode 100644 index 000000000000..644e17339dac --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/designs.dm @@ -0,0 +1,23 @@ +/datum/design/bottling_kit + name = "Bottling Kit" + id = "bottling_kit" + build_type = AUTOLATHE + materials = list(/datum/material/glass=2000, /datum/material/iron=2000) + build_path = /obj/item/bottle_kit + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN, + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE + +/datum/design/recipe_card + name = "Fermentation Recipe Card" + id = "recipe_card" + build_type = AUTOLATHE + materials = list(/datum/material/iron=100) + build_path = /obj/item/recipe_card + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN, + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/fermintation_keg.dm b/monkestation/code/modules/brewin_and_chewin/brewing/fermintation_keg.dm new file mode 100644 index 000000000000..ba4f66a5f3da --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/fermintation_keg.dm @@ -0,0 +1,302 @@ +GLOBAL_LIST_EMPTY(custom_fermentation_recipes) + +/obj/structure/fermentation_keg + name = "fermentation keg" + desc = "A simple keg that is meant for making booze." + + icon = 'monkestation/code/modules/brewin_and_chewin/icons/objects.dmi' + icon_state = "barrel_tapless" + + density = TRUE + + /// The sound of fermentation + var/datum/looping_sound/boiling/soundloop + /// The volume of the barrel sounds + var/sound_volume = 25 + var/open_icon_state = "barrel_tapless_open" + + //After brewing we can sell or bottle, this is for the latter + var/ready_to_bottle = FALSE + var/brewing = FALSE + + ///our currently needed crops + var/list/recipe_crop_stocks + ///our currently selected recipe + var/datum/brewing_recipe/selected_recipe + ///our current price value used by exports + var/price_tag = 0 + ///our made item which we clear once its no longer ready to bottle + var/made_item + + + +/obj/structure/fermentation_keg/Initialize() + . = ..() + create_reagents(240, OPENCONTAINER | NO_REACT) //on agv it should be 120u for water then rest can be other needed chemicals + recipe_crop_stocks = list() + + soundloop = new(src, brewing) + soundloop.volume = sound_volume + +/obj/structure/fermentation_keg/attack_hand(mob/user) + if(!brewing && (!selected_recipe || ready_to_bottle)) + shopping_run(user) + return + + if(try_n_brew(user)) + start_brew() + ..() + +/obj/structure/fermentation_keg/attackby(obj/item/I, mob/user) + var/list/produce_list = list() + var/obj/item/storage/bag/plants/storage + + if(istype(I, /obj/item/bottle_kit)) + var/obj/item/bottle_kit/kit = I + bottle(kit.glass_colour) + + if(I.type in selected_recipe?.needed_items) + produce_list += I + + if(istype(I, /obj/item/food/grown)) + produce_list += I + + if(istype(I, /obj/item/storage/bag/plants)) + storage = I + for(var/obj/item/food/grown/item in storage.contents) + produce_list += item + + for(var/obj/item/food/grown/G in produce_list) + if(G.type in selected_recipe?.needed_crops) + var/amount = recipe_crop_stocks[G.type] || 0 + var/added_item = round(min(10, max(1, G.seed.potency / 10))) + recipe_crop_stocks[G.type] = amount + added_item + qdel(G) + + for(var/obj/item/item in produce_list) + if(item.type in selected_recipe?.needed_items) + var/amount = recipe_crop_stocks[item.type] || 0 + var/added_item = 1 + recipe_crop_stocks[item.type] = amount + added_item + qdel(item) + + . = ..() + +/obj/structure/fermentation_keg/examine(mob/user) + . =..() + if(ready_to_bottle) + . += span_boldnotice("[made_item]") + . += span_notice("Value: [price_tag]") + + else if(selected_recipe) + var/message = "Currently making: [selected_recipe.display_name].\n" + + for(var/datum/reagent/required_chem as anything in selected_recipe.needed_reagents) + message += "Reagent Needed: [initial(required_chem.name)] [selected_recipe.needed_reagents[required_chem]].\n" + + for(var/obj/item/food/grown/required_crop as anything in selected_recipe.needed_crops) + message += "Crop Needed: [capitalize(initial(required_crop.name))] [selected_recipe.needed_crops[required_crop]], Current Amount: [recipe_crop_stocks[required_crop] || 0].\n" + + for(var/obj/item/needed_item as anything in selected_recipe.needed_items) + message += "Item Needed: [capitalize(initial(needed_item.name))] [selected_recipe.needed_items[needed_item]], Current Amount: [recipe_crop_stocks[needed_item] || 0].\n" + + //time + if(selected_recipe.brew_time) + if(selected_recipe.brew_time >= 1 MINUTES) + message += "Once set, will take [selected_recipe.brew_time / 600] Minutes.\n" + else + message += "Once set, will take [selected_recipe.brew_time / 10] Seconds.\n" + + //How many are brewed + if(selected_recipe.brewed_amount) + message += "Will produce [selected_recipe.brewed_amount] bottles when finished.\n" + + if(selected_recipe.brewed_item && selected_recipe.brewed_item_count) + var/name_to_use = selected_recipe.secondary_name + if(!name_to_use) + name_to_use = selected_recipe.display_name + message += "Will produce [name_to_use] x [selected_recipe.brewed_item_count] when finished.\n" + + if(selected_recipe.helpful_hints) + message += "[selected_recipe.helpful_hints].\n" + + if(istype(selected_recipe, /datum/brewing_recipe/custom_recipe)) + var/datum/brewing_recipe/custom_recipe/recipe = selected_recipe + message += "Recipe Created By:[recipe.made_by]" + . += message + + +/obj/structure/fermentation_keg/proc/shopping_run(mob/user) + if(brewing) + return + + var/list/options = list() + for(var/path in subtypesof(/datum/brewing_recipe) - /datum/brewing_recipe/custom_recipe) + var/datum/brewing_recipe/recipe = path + var/prereq = initial(recipe.pre_reqs) + if((!ready_to_bottle && prereq == null) || (selected_recipe?.reagent_to_brew == prereq && ready_to_bottle)) + options[initial(recipe.display_name)] = recipe + + + for(var/datum/brewing_recipe/recipe in GLOB.custom_fermentation_recipes) + var/prereq = recipe.pre_reqs + if((!ready_to_bottle && prereq == null) || (selected_recipe?.reagent_to_brew == prereq && ready_to_bottle)) + options[recipe.display_name] = recipe + + if(options.len == 0) + to_chat(user, "Their is no further brewing to be done, clear this barrel out or sell it.") + return + + var/choice = tgui_input_list(user,"What brew do you want to make?", name, options) + + if(!choice) + return + + var/choice_to_spawn = options[choice] + + if(istype(choice_to_spawn, /datum/brewing_recipe/custom_recipe)) + selected_recipe = choice_to_spawn + else + selected_recipe = new choice_to_spawn + + //Second stage brewing gives no refunds! - This is intented design to help make it so folks dont quit halfway through and still get a rebate + ready_to_bottle = FALSE + price_tag = 150 + icon_state = open_icon_state + +//Remove only chemicals +/obj/structure/fermentation_keg/proc/clear_keg_reagents() + if(reagents) + //consume consume consume consume + reagents.clear_reagents() + +//Remove and reset +/obj/structure/fermentation_keg/proc/clear_keg(force = FALSE) + if(brewing) + return FALSE + + if(!force && ready_to_bottle) + return FALSE + + if(reagents) + reagents.clear_reagents() + + ready_to_bottle = FALSE + made_item = null + icon_state = open_icon_state + + recipe_crop_stocks.Cut() + + price_tag = 150 + + if(force) + selected_recipe = null + + return TRUE + +/obj/structure/fermentation_keg/proc/start_brew() + brewing = TRUE + + for(var/obj/item/food/grown/item as anything in selected_recipe.needed_crops) + if(!(item in recipe_crop_stocks)) + return + var/amount = recipe_crop_stocks[item] || 0 + recipe_crop_stocks[item] = amount - selected_recipe.needed_crops[item] + + for(var/obj/item/item as anything in selected_recipe.needed_items) + if(!(item in recipe_crop_stocks)) + return + var/amount = recipe_crop_stocks[item] || 0 + recipe_crop_stocks[item] = amount - selected_recipe.needed_items[item] + + clear_keg_reagents() + + soundloop.start() + addtimer(CALLBACK(src, PROC_REF(end_brew)), selected_recipe.brew_time) + icon_state = initial(icon_state) + +/obj/structure/fermentation_keg/proc/end_brew() + icon_state = "barrel_tapless_ready" + soundloop.stop() + ready_to_bottle = TRUE + brewing = FALSE + price_tag = selected_recipe.cargo_valuation + made_item = selected_recipe.display_name + +/obj/structure/fermentation_keg/proc/try_n_brew(mob/user) + var/ready = TRUE + if(!selected_recipe) + if(user) + to_chat(user, span_notice("You need to set a booze to brew!")) + ready = FALSE + + if(brewing) + if(user) + to_chat(user, span_notice("This keg is already brewing a mix!")) + ready = FALSE + + //Crops + for(var/obj/item/food/grown/needed_crop as anything in selected_recipe.needed_crops) + if(recipe_crop_stocks[needed_crop] < selected_recipe.needed_crops[needed_crop]) + if(user) + to_chat(user, span_notice("This keg lacks [initial(needed_crop.name)]!")) + ready = FALSE + + for(var/obj/item/needed_item as anything in selected_recipe.needed_crops) + if(recipe_crop_stocks[needed_item] < selected_recipe.needed_items[needed_item]) + if(user) + to_chat(user, span_notice("This keg lacks [initial(needed_item.name)]!")) + ready = FALSE + + for(var/datum/reagent/required_chem as anything in selected_recipe.needed_reagents) + if(selected_recipe.needed_reagents[required_chem] > reagents.get_reagent_amount(required_chem)) + if(user) + to_chat(user, span_notice("The keg's unable to brew well lacking [initial(required_chem.name)]!")) + ready = FALSE + + return ready + + +/obj/structure/fermentation_keg/proc/bottle(glass_colour) + if(ready_to_bottle) + + ready_to_bottle = FALSE + made_item = null + brewing = FALSE + price_tag = 150 + icon_state = open_icon_state + + if(selected_recipe.reagent_to_brew) + if(!glass_colour) + glass_colour = "brew_bottle" + + var/bottlecaps + for(bottlecaps=0, bottlecaps < selected_recipe.brewed_amount, bottlecaps++) + var/obj/item/reagent_containers/cup/glass/bottle/small/brewing_bottle/bottle_made = new /obj/item/reagent_containers/cup/glass/bottle/small/brewing_bottle(get_turf(src)) + bottle_made.icon_state = "[glass_colour]" + if(istype(selected_recipe, /datum/brewing_recipe/custom_recipe)) + var/datum/brewing_recipe/custom_recipe/recipe = selected_recipe + bottle_made.name = recipe.bottle_name + bottle_made.desc = recipe.bottle_desc + bottle_made.glass_name = recipe.glass_name + bottle_made.glass_desc = recipe.glass_desc + bottle_made.reagents.add_reagent(selected_recipe.reagent_to_brew, selected_recipe.per_brew_amount, list("reagents" = recipe.reagent_data)) + else + bottle_made.reagents.add_reagent(selected_recipe.reagent_to_brew, selected_recipe.per_brew_amount) + + if(selected_recipe.brewed_item) + var/items_given + for(items_given= 0, items_given < selected_recipe.brewed_item_count, items_given++) + new selected_recipe.brewed_item(get_turf(src)) + selected_recipe = null + + +/obj/structure/fermentation_keg/verb/reset_keg() + set name = "Clear Keg (Completely Resets)" + set category = "Object" + set src in range(1) + + if(!isdead(usr)) + clear_keg(TRUE) + else + to_chat(usr, span_notice("Sadly this keg isnt brewing spirits!")) diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/reagents.dm b/monkestation/code/modules/brewin_and_chewin/brewing/reagents.dm new file mode 100644 index 000000000000..cf7297591407 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/reagents.dm @@ -0,0 +1,27 @@ +/datum/reagent/consumable/ethanol/melon_liquor + name = "Melon Liquor" + description = "A relatively sweet and fruity 46 proof liquor." + taste_description = "fruity alcohol" + color = "#138808d0" // rgb: 19, 136, 8 + boozepwr = 30 + +/datum/reagent/consumable/ethanol/poison_wine + name = "Fungal Wine" + description = "Is this even wine? Toxic! Hallucinogenic! Probably consumed in boatloads by your superiors!" + taste_description = "purified alcoholic death" + color = "#000000d0" + boozepwr = 1 + +/datum/reagent/consumable/ethanol/poison_wine/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) + . = ..() + drinker.adjust_hallucinations(1.5 SECONDS) + drinker.adjust_drugginess(5 SECONDS) + + drinker.adjustToxLoss(3 * seconds_per_tick) + +/datum/reagent/consumable/ethanol/candy_wine + name = "Candy Liquor" + description = "Made from assorted sweets, candies and even flowers." + taste_description = "sweet and smooth alcohol" + color = "#E33232d0" // rgb: 227, 50, 50 + boozepwr = 15 diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipe_card.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipe_card.dm new file mode 100644 index 000000000000..fa378e1424d0 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipe_card.dm @@ -0,0 +1,80 @@ +/obj/item/recipe_card + name = "fermentation recipe card" + desc = "Used to write down your secret recipe card." + icon = 'monkestation/code/modules/brewin_and_chewin/icons/paper.dmi' + icon_state = "recipe_paper" + + var/list/stored_reagents = list() + var/list/stored_foods = list() + var/brewing_time = 2 MINUTES + +/obj/item/recipe_card/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + if(istype(target, /obj/item/food/grown)) + if(target.type in stored_foods) + return + var/amount = tgui_input_number(user, "How much of [target.name] is needed?", name, 10, 50, 1) + if(!amount) + return + stored_foods += list(target.type = amount) + return + + if(istype(target, /obj/structure/fermentation_keg)) + stored_reagents = list() + for(var/datum/reagent/reagent as anything in target.reagents.reagent_list) + stored_reagents += list(reagent.type = reagent.volume) + + +/obj/item/recipe_card/CtrlClick(mob/user) + . = ..() + submit_recipe(user) + +/obj/item/recipe_card/proc/submit_recipe(mob/user) + if(!length(stored_foods) || !length(stored_reagents)) + return + var/display_name = tgui_input_text(user, "What is this drink called?", name) + if(!display_name) + return + var/bottle_name = tgui_input_text(user, "What is this drink's bottle called?", name) + if(!bottle_name) + return + var/glass_name = tgui_input_text(user, "What is this drink's glass called?", name) + if(!glass_name) + return + + var/bottle_desc = tgui_input_text(user, "What is this drink's bottle description?", name, multiline = TRUE) + if(!bottle_desc) + return + var/glass_desc = tgui_input_text(user, "What is this drink's glass description?", name, multiline = TRUE) + if(!glass_desc) + return + + var/datum/brewing_recipe/custom_recipe/new_recipe = new + + new_recipe.made_by = user.name + new_recipe.glass_desc = glass_desc + new_recipe.glass_name = glass_name + new_recipe.bottle_name = bottle_name + new_recipe.bottle_desc = bottle_desc + new_recipe.brew_time = brewing_time + new_recipe.needed_crops = stored_foods + new_recipe.needed_reagents = stored_reagents + new_recipe.brewed_amount = 4 + new_recipe.display_name = display_name + new_recipe.cargo_valuation = 2000 + + var/list/reagent_data = list() + + var/total_reagent_count = 0 + for(var/datum/reagent/reagent as anything in stored_reagents) + total_reagent_count += stored_reagents[reagent] + + for(var/datum/reagent/reagent as anything in stored_reagents) + var/list/new_list = list() + new_list += reagent + new_list[reagent] = stored_reagents[reagent] / total_reagent_count + reagent_data += new_list + + new_recipe.reagent_data = reagent_data + GLOB.custom_fermentation_recipes += new_recipe + qdel(src) diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/_base.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/_base.dm new file mode 100644 index 000000000000..e1dab0ca9842 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/_base.dm @@ -0,0 +1,29 @@ +/datum/brewing_recipe + ///the type path of the reagent + var/reagent_to_brew = /datum/reagent/consumable/ethanol + ///our display name + var/display_name = "Pure Coder Tears" + ///pre-reqs: Essentially do we need past recipes made of this, uses the reagent_to_brew var to know if this has been done + var/pre_reqs + ///the crops typepath we need goes typepath = amount. Amount is not just how many based on potency value up to a cap it adds values. + var/list/needed_crops = list() + ///the type paths of needed reagents in typepath = amount + var/list/needed_reagents = list() + ///list of items that aren't crops we need + var/list/needed_items = list() + ///our brewing time in deci seconds should use the SECONDS MINUTES HOURS helpers + var/brew_time = 1 SECONDS + ///the price this gets at cargo + var/cargo_valuation = 0 + ///amount of brewed creations used when either canning or bottling + var/brewed_amount = 1 + ///each bottle or canning gives how this much reagents + var/per_brew_amount = 50 + ///helpful hints + var/helpful_hints + ///if we have a secondary name some do if you want to hide the ugly info + var/secondary_name + ///typepath of our output if set we also make this item + var/brewed_item + ///amount of brewed items + var/brewed_item_count = 1 diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/beers.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/beers.dm new file mode 100644 index 000000000000..020d9c307da8 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/beers.dm @@ -0,0 +1,21 @@ +/datum/brewing_recipe/light_beer + reagent_to_brew = /datum/reagent/consumable/ethanol/beer/light + display_name = "Light Beer" + needed_crops = list(/obj/item/food/grown/wheat = 40, /obj/item/food/grown/poppy = 5) + needed_reagents = list(/datum/reagent/water = 60) + + cargo_valuation = 1750 + brew_time = 2 MINUTES + brewed_amount = 12 + helpful_hints = "Can be brewed again into regular beer" + +/datum/brewing_recipe/beer + reagent_to_brew = /datum/reagent/consumable/ethanol/beer + pre_reqs = /datum/reagent/consumable/ethanol/beer/light + display_name = "Beer" + needed_crops = list(/obj/item/food/grown/wheat = 10, /obj/item/food/grown/poppy = 5) + needed_reagents = list(/datum/reagent/water = 60) + + cargo_valuation = 2250 + brew_time = 2 MINUTES + brewed_amount = 6 diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/custom.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/custom.dm new file mode 100644 index 000000000000..df6301b10536 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/custom.dm @@ -0,0 +1,24 @@ +/datum/brewing_recipe/custom_recipe + reagent_to_brew = /datum/reagent/consumable/ethanol/custom_brew + var/bottle_name + var/bottle_desc + var/glass_name + var/glass_desc + + ///list of reagents we transfer PER UNIT so if its 30% ethanol put /datum/reagent/consumable/ethanol = 0.3 + var/list/reagent_data = list() + var/made_by + + +/datum/reagent/consumable/ethanol/custom_brew + name = "EVIL WIZARD POTION" + can_merge = FALSE + +/datum/reagent/consumable/ethanol/custom_brew/on_transfer(atom/A, methods, trans_volume) + . = ..() + if(!("reagents" in data)) + return + for(var/datum/reagent/reagent as anything in data["reagents"]) + var/multiplier = trans_volume * data["reagents"][reagent] + A.reagents.add_reagent(reagent, multiplier) + A.reagents.remove_all_type(/datum/reagent/consumable/ethanol/custom_brew, trans_volume) diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/liquors.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/liquors.dm new file mode 100644 index 000000000000..a56a9b24598d --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/liquors.dm @@ -0,0 +1,21 @@ +/datum/brewing_recipe/melon_liquor + reagent_to_brew = /datum/reagent/consumable/ethanol/melon_liquor + display_name = "Melon Liquor" + needed_items = list(/obj/item/grown/log = 5) + needed_crops = list(/obj/item/food/grown/watermelon = 80, /obj/item/food/grown/poppy = 35) + needed_reagents = list(/datum/reagent/water = 160) + brewed_amount = 2 + + cargo_valuation = 2000 + brew_time = 6 MINUTES + +/datum/brewing_recipe/red_candy_liquor + reagent_to_brew = /datum/reagent/consumable/ethanol/candy_wine + display_name = "Red Candy Liquor" + pre_reqs = /datum/reagent/consumable/ethanol/wine + brewed_amount = 1 + needed_crops = list(/obj/item/food/grown/grapes = 10, /obj/item/food/grown/sunflower = 5, /obj/item/food/grown/harebell = 5) + needed_reagents = list(/datum/reagent/consumable/sugar = 15) + + cargo_valuation = 7000 + brew_time = 16 MINUTES diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/meads.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/meads.dm new file mode 100644 index 000000000000..457fb36de060 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/meads.dm @@ -0,0 +1,9 @@ +/datum/brewing_recipe/mead + reagent_to_brew = /datum/reagent/consumable/ethanol/mead + display_name = "Honey Mead" + needed_reagents = list(/datum/reagent/water = 50, /datum/reagent/consumable/honey = 50) + brewed_amount = 4 + + cargo_valuation = 3000 + brew_time = 6 MINUTES + diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/misc.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/misc.dm new file mode 100644 index 000000000000..8f58c78e63b4 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/misc.dm @@ -0,0 +1,84 @@ +/datum/brewing_recipe/gin + reagent_to_brew = /datum/reagent/consumable/ethanol/gin + display_name = "Gin" + needed_items = list(/obj/item/grown/log = 5) + needed_crops = list(/obj/item/food/grown/berries = 40, /obj/item/food/grown/citrus/lemon = 40) + needed_reagents = list(/datum/reagent/water = 160, /datum/reagent/consumable/sugar = 15) + brewed_amount = 3 + + cargo_valuation = 3200 + brew_time = 6 MINUTES + +/datum/brewing_recipe/tequila + reagent_to_brew = /datum/reagent/consumable/ethanol/tequila + display_name = "Tequila" + needed_items = list(/obj/item/grown/log = 5) + needed_crops = list(/obj/item/food/grown/citrus/lemon = 40, /obj/item/food/grown/citrus/lime = 40, /obj/item/food/grown/pineapple = 10) + needed_reagents = list(/datum/reagent/water = 50, /datum/reagent/consumable/salt = 5) + brewed_amount = 2 + + cargo_valuation = 2250 + brew_time = 3 MINUTES + +/datum/brewing_recipe/patron + reagent_to_brew = /datum/reagent/consumable/ethanol/patron + display_name = "Patron" + needed_crops = list(/obj/item/food/grown/wheat = 80) + needed_reagents = list(/datum/reagent/water = 30, /datum/reagent/consumable/mintextract = 5) + brewed_amount = 1 + + cargo_valuation = 2000 + brew_time = 1.5 MINUTES + +/datum/brewing_recipe/ale + reagent_to_brew = /datum/reagent/consumable/ethanol/ale + display_name = "Ale" + needed_crops = list(/obj/item/food/grown/wheat = 60, /obj/item/food/grown/poppy = 5) + needed_reagents = list(/datum/reagent/water = 120, /datum/reagent/consumable/honey = 5) + brewed_amount = 12 + + cargo_valuation = 2000 + brew_time = 9 MINUTES + +/datum/brewing_recipe/whiskey + reagent_to_brew = /datum/reagent/consumable/ethanol/whiskey + display_name = "Whiskey" + needed_crops = list(/obj/item/food/grown/wheat = 40) + needed_reagents = list(/datum/reagent/water = 120) + brewed_amount = 10 + + cargo_valuation = 2000 + brew_time = 15 MINUTES + +/datum/brewing_recipe/glucose + reagent_to_brew = /datum/reagent/consumable/nutriment/glucose + display_name = "Glucose" + needed_crops = list(/obj/item/food/grown/wheat = 60, /obj/item/food/grown/corn = 30) + needed_reagents = list(/datum/reagent/water = 120, /datum/reagent/consumable/honey = 5, /datum/reagent/consumable/sugar = 30) + brewed_amount = 3 + per_brew_amount = 15 + + cargo_valuation = 4750 + brew_time = 3 MINUTES + helpful_hints = "Further brewing can be done when finished." + +/datum/brewing_recipe/nothing + reagent_to_brew = /datum/reagent/consumable/nothing + pre_reqs = /datum/reagent/consumable/nutriment/glucose + display_name = "Nothing" + needed_reagents = list(/datum/reagent/water = 200) + brewed_amount = 2 + + cargo_valuation = 404 + brew_time = 7 MINUTES + +/datum/brewing_recipe/cream + reagent_to_brew = /datum/reagent/consumable/cream + display_name = "Cream" + brewed_amount = 3 + needed_crops = list(/obj/item/food/grown/soybeans = 40) + needed_reagents = list(/datum/reagent/consumable/vinegar = 10, /datum/reagent/consumable/milk = 30) + + cargo_valuation = 1600 + brew_time = 2 MINUTES + helpful_hints = "Further brewing can be done when finished." diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/rums.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/rums.dm new file mode 100644 index 000000000000..bbaf16d971f9 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/rums.dm @@ -0,0 +1,22 @@ +/datum/brewing_recipe/rum + reagent_to_brew = /datum/reagent/consumable/ethanol/rum + display_name = "Rum" + brewed_amount = 4 + needed_items = list(/obj/item/grown/log = 5) + needed_crops = list(/obj/item/food/grown/sugarcane = 60) + needed_reagents = list(/datum/reagent/water = 120, /datum/reagent/consumable/salt = 5) + + cargo_valuation = 2000 + brew_time = 3 MINUTES + helpful_hints = "Further brewing can be done when finished." + +/datum/brewing_recipe/kahlua + reagent_to_brew = /datum/reagent/consumable/ethanol/kahlua + pre_reqs = /datum/reagent/consumable/ethanol/rum + display_name = "Kahlua" + + brewed_amount = 3 + needed_reagents = list(/datum/reagent/consumable/sugar = 15, /datum/reagent/consumable/coffee = 60) + + cargo_valuation = 5000 + brew_time = 2 MINUTES diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/vinegars.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/vinegars.dm new file mode 100644 index 000000000000..e15ff0952ef8 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/vinegars.dm @@ -0,0 +1,39 @@ +/datum/brewing_recipe/vinegar + reagent_to_brew = /datum/reagent/consumable/vinegar + display_name = "Vinegar" + brewed_amount = 3 + needed_crops = list(/obj/item/food/grown/apple = 20, /obj/item/food/grown/pineapple = 10) + needed_reagents = list(/datum/reagent/water = 30) + + cargo_valuation = 2500 + brew_time = 3 MINUTES + helpful_hints = "Further brewing can be done when finished." + +/datum/brewing_recipe/cheese_wheel + reagent_to_brew = /datum/reagent/consumable/vinegar + pre_reqs = /datum/reagent/consumable/cream + display_name = "Cheese Wheels (Byproduct Vinegar)" + brewed_amount = 1 + per_brew_amount = 15 //make an excess + needed_crops = list(/obj/item/food/grown/apple = 20, /obj/item/food/grown/pineapple = 10) + needed_reagents = list(/datum/reagent/water = 30, /datum/reagent/consumable/milk = 30, /datum/reagent/consumable/vinegar = 5) + + cargo_valuation = 1000 + brew_time = 1 MINUTES + + brewed_item = /obj/item/food/cheese/wheel + brewed_item_count = 3 + secondary_name = "Cheese Wheel" + helpful_hints = "The bottles will produced Vinegar." + +/datum/brewing_recipe/enzyme + reagent_to_brew = /datum/reagent/consumable/enzyme + pre_reqs = /datum/reagent/consumable/vinegar + display_name = "Universal Enzymes" + brewed_amount = 1 + needed_crops = list(/obj/item/food/grown/grass = 120, /obj/item/food/grown/pineapple = 30, /obj/item/food/grown/citrus/orange = 30) + needed_reagents = list(/datum/reagent/water = 30, /datum/reagent/consumable/ethanol = 60) + + cargo_valuation = 7500 + brew_time = 6 MINUTES + diff --git a/monkestation/code/modules/brewin_and_chewin/brewing/recipes/wines.dm b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/wines.dm new file mode 100644 index 000000000000..439bfdccacfe --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/brewing/recipes/wines.dm @@ -0,0 +1,46 @@ +/datum/brewing_recipe/lizard_wine + reagent_to_brew = /datum/reagent/consumable/ethanol/lizardwine + display_name = "Lizard Wine" + needed_items = list(/obj/item/organ/external/tail/lizard = 1) + needed_crops = list(/obj/item/food/grown/poppy = 5) + needed_reagents = list(/datum/reagent/water = 50, /datum/reagent/consumable/ethanol = 100) + brewed_amount = 3 + + cargo_valuation = 10000 + brew_time = 10 MINUTES + +/datum/brewing_recipe/wine + reagent_to_brew = /datum/reagent/consumable/ethanol/wine + display_name = "Wine" + needed_items = list(/obj/item/grown/log = 5) + needed_crops = list(/obj/item/food/grown/grapes = 60) + needed_reagents = list(/datum/reagent/water = 160, /datum/reagent/consumable/sugar = 15) + brewed_amount = 2 + + cargo_valuation = 3000 + brew_time = 6 MINUTES + helpful_hints = "Further brewing can be done when finished." + +/datum/brewing_recipe/vermouth + reagent_to_brew = /datum/reagent/consumable/ethanol/vermouth + display_name = "Vermouth" + pre_reqs = /datum/reagent/consumable/ethanol/wine + needed_items = list(/obj/item/grown/log = 7) + needed_crops = list(/obj/item/food/grown/grapes = 60, /obj/item/food/grown/berries = 15) + needed_reagents = list(/datum/reagent/water = 160) + brewed_amount = 3 + + cargo_valuation = 5000 + brew_time = 8 MINUTES + +/datum/brewing_recipe/poison_wine + reagent_to_brew = /datum/reagent/consumable/ethanol/poison_wine + display_name = "Fungal Wine (poison)" + pre_reqs = /datum/reagent/consumable/ethanol/wine + brewed_amount = 1 + needed_items = list(/obj/item/grown/log = 5) + needed_crops = list(/obj/item/food/grown/grapes = 10, /obj/item/food/grown/mushroom/plumphelmet = 5) + needed_reagents = list(/datum/reagent/toxin/amatoxin = 15) + + cargo_valuation = 9000 + brew_time = 16 MINUTES diff --git a/monkestation/code/modules/brewin_and_chewin/cargo_exports.dm b/monkestation/code/modules/brewin_and_chewin/cargo_exports.dm new file mode 100644 index 000000000000..e760f62f55c2 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/cargo_exports.dm @@ -0,0 +1,13 @@ +/datum/export/fermented_kegs + cost = 0 + unit_name = "place holder" + export_types = list(/obj/structure/fermentation_keg) + +/datum/export/fermented_kegs/get_cost(obj/O) + var/obj/structure/fermentation_keg/keg = O + var/credit_value = keg.price_tag + unit_name = keg.selected_recipe?.display_name + if(!unit_name) + unit_name = "Unnamed Keg" + + return credit_value diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/cooking_containers.dm b/monkestation/code/modules/brewin_and_chewin/chewing/cooking_containers.dm new file mode 100644 index 000000000000..43500418a3bb --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/cooking_containers.dm @@ -0,0 +1,385 @@ +//Cooking containers are used in ovens, fryers and so on, to hold multiple ingredients for a recipe. +//They interact with the cooking process, and link up with the cooking code dynamically. + +//Originally sourced from the Aurora, heavily retooled to actually work with CHEWIN + + +//Holder for a portion of an incomplete meal, +//allows a cook to temporarily offload recipes to work on things factory-style, eliminating the need for 20 plates to get things done fast. + +/obj/item/reagent_containers/cooking_container + icon = 'monkestation/code/modules/brewin_and_chewin/icons/kitchen.dmi' + verb_exclaim = "" + var/shortname + var/place_verb = "into" + var/appliancetype //string + w_class = WEIGHT_CLASS_SMALL + volume = 240 //Don't make recipes using reagents in larger quantities than this amount; they won't work. + var/datum/chewin_cooking/recipe_tracker/tracker = null //To be populated the first time the plate is interacted with. + var/lip //Icon state of the lip layer of the object + var/removal_penalty = 0 //A flat quality reduction for removing an unfinished recipe from the container. + + possible_transfer_amounts = list(5,10,30,60,90,120,240) + amount_per_transfer_from_this = 10 + + reagent_flags = OPENCONTAINER | NO_REACT + var/list/fryer_data = list("High"=0) //Record of what deepfryer-cooking has been done on this food. + var/list/stove_data = list("High"=0 , "Medium" = 0, "Low"=0) //Record of what stove-cooking has been done on this food. + var/list/grill_data = list("High"=0 , "Medium" = 0, "Low"=0) //Record of what grill-cooking has been done on this food. + var/list/oven_data = list("High"=0 , "Medium" = 0, "Low"=0) //Record of what oven-cooking has been done on this food. + +/obj/item/reagent_containers/cooking_container/Initialize() + .=..() + appearance_flags |= KEEP_TOGETHER + RegisterSignal(src, COMSIG_STOVE_PROCESS, PROC_REF(process_stovetop)) + RegisterSignal(src, COMSIG_ITEM_OVEN_PROCESS, PROC_REF(process_bake)) + + +/obj/item/reagent_containers/cooking_container/examine(mob/user) + . = ..() + if(contents) + .+= get_content_info() + if(reagents.total_volume) + .+= get_reagent_info() + +/obj/item/reagent_containers/cooking_container/proc/get_content_info() + var/string = "It contains:
    " + return string + +/obj/item/reagent_containers/cooking_container/proc/get_reagent_info() + return "It contains [reagents.total_volume] units of reagents." + +/obj/item/reagent_containers/cooking_container/attackby(var/obj/item/used_item, var/mob/user) + + #ifdef CHEWIN_DEBUG + logger.Log(LOG_CATEGORY_DEBUG"cooking_container/attackby() called!") + #endif + + if(istype(used_item, /obj/item/spatula)) + do_empty(user, target=null, reagent_clear = FALSE) + return + + if(!tracker && (contents.len || reagents.total_volume != 0)) + to_chat(user, "The [src] is full. Empty its contents first.") + else + process_item(used_item, user) + + return TRUE + +/obj/item/reagent_containers/cooking_container/after_attack_pour(mob/user, atom/target) + + + #ifdef CHEWIN_DEBUG + logger.Log(LOG_CATEGORY_DEBUG"cooking_container/standard_pour_into() called!") + #endif + + if(tracker) + if(alert(user, "There is an ongoing recipe in the [src]. Dump it out?",,"Yes","No") == "No") + return FALSE + for(var/datum/reagent/our_reagent in reagents.reagent_list) + if(our_reagent.data && istype(our_reagent.data, /list) && our_reagent.data["FOOD_QUALITY"]) + our_reagent.data["FOOD_QUALITY"] = 0 + + do_empty(user, target, reagent_clear = FALSE) + + #ifdef CHEWIN_DEBUG + logger.Log(LOG_CATEGORY_DEBUG"cooking_container/do_empty() completed!") + #endif + + . = ..() + + +/obj/item/reagent_containers/cooking_container/afterattack(var/obj/target, var/mob/user, var/flag) + if(!istype(target, /obj/item/reagent_containers)) + return FALSE + if(!flag) + return FALSE + if(tracker) + return FALSE + if(after_attack_pour(user, target)) + return TRUE + +/obj/item/reagent_containers/cooking_container/proc/process_item(var/obj/I, var/mob/user, var/lower_quality_on_fail = 0, var/send_message = TRUE) + + + #ifdef CHEWIN_DEBUG + logger.Log(LOG_CATEGORY_DEBUG"cooking_container/process_item() called!") + #endif + + //OK, time to load the tracker + if(!tracker) + if(lower_quality_on_fail) + for (var/obj/item/contained in contents) + contained?:food_quality -= lower_quality_on_fail + else + tracker = new /datum/chewin_cooking/recipe_tracker(src) + + var/return_value = 0 + switch(tracker.process_item_wrap(I, user)) + if(CHEWIN_NO_STEPS) + if(no_step_checks(I)) //literally fryers + if(send_message) + to_chat(user, "It doesn't seem like you can create a meal from that. Yet.") + if(lower_quality_on_fail) + for (var/datum/chewin_cooking/recipe_pointer/pointer in tracker.active_recipe_pointers) + pointer?:tracked_quality -= lower_quality_on_fail + if(CHEWIN_CHOICE_CANCEL) + if(send_message) + to_chat(user, "You decide against cooking with the [src].") + if(CHEWIN_COMPLETE) + if(send_message) + to_chat(user, "You finish cooking with the [src].") + qdel(tracker) + tracker = null + clear_cooking_data() + update_icon() + return_value = 1 + if(CHEWIN_SUCCESS) + if(send_message) + to_chat(user, "You have successfully completed a recipe step.") + clear_cooking_data() + return_value = 1 + update_icon() + if(CHEWIN_PARTIAL_SUCCESS) + if(send_message) + to_chat(user, "More must be done to complete this step of the recipe.") + if(CHEWIN_LOCKOUT) + if(send_message) + to_chat(user, "You can't make the same decision twice!") + + if(tracker && !tracker.recipe_started) + qdel(tracker) + tracker = null + return return_value + +//TODO: Handle the contents of the container being ruined via burning. +/obj/item/reagent_containers/cooking_container/proc/handle_burning() + return + +//TODO: Handle the contents of the container lighting on actual fire. +/obj/item/reagent_containers/cooking_container/proc/handle_ignition() + return FALSE + +/obj/item/reagent_containers/cooking_container/verb/empty() + set src in view(1) + set name = "Empty Container" + set category = "Object" + set desc = "Removes items from the container, excluding reagents." + do_empty(usr) + +/obj/item/reagent_containers/cooking_container/proc/do_empty(mob/user, var/atom/target = null, var/reagent_clear = TRUE) + #ifdef CHEWIN_DEBUG + logger.Log(LOG_CATEGORY_DEBUG"cooking_container/do_empty() called!") + #endif + + if(contents.len != 0) + if(tracker && removal_penalty) + for (var/obj/item/contained in contents) + contained?:food_quality -= removal_penalty + to_chat(user, span_warning("The quality of ingredients in the [src] was reduced by the extra jostling.")) + + //Handle quality reduction for reagents + if(reagents.total_volume != 0) + var/reagent_qual_reduction = round(reagents.total_volume/contents.len) + if(reagent_qual_reduction != 0) + for (var/obj/item/contained in contents) + contained?:food_quality -= reagent_qual_reduction + to_chat(user, span_warning("The quality of ingredients in the [src] was reduced by the presence of reagents in the container.")) + + + for (var/contained in contents) + var/atom/movable/AM = contained + remove_from_visible(AM) + if(!target) + AM.forceMove(get_turf(src)) + else + AM.forceMove(get_turf(target)) + + //TODO: Splash the reagents somewhere + if(reagent_clear) + reagents.clear_reagents() + + update_icon() + qdel(tracker) + tracker = null + clear_cooking_data() + + if(contents.len != 0) + to_chat(user, span_notice("You remove all the solid items from [src].")) + + +/obj/item/reagent_containers/cooking_container/AltClick(var/mob/user) + do_empty(user) + +//Deletes contents of container. +//Used when food is burned, before replacing it with a burned mess +/obj/item/reagent_containers/cooking_container/proc/clear() + QDEL_LIST(contents) + contents=list() + reagents.clear_reagents() + if(tracker) + qdel(tracker) + tracker = null + clear_cooking_data() + + +/obj/item/reagent_containers/cooking_container/proc/clear_cooking_data() + stove_data = list("High"=0 , "Medium" = 0, "Low"=0) + grill_data = list("High"=0 , "Medium" = 0, "Low"=0) + fryer_data = list("High"=0) + +/obj/item/reagent_containers/cooking_container/proc/label(var/number, var/CT = null) + //This returns something like "Fryer basket 1 - empty" + //The latter part is a brief reminder of contents + //This is used in the removal menu + . = shortname + if (!isnull(number)) + .+= " [number]" + .+= " - " + if (LAZYLEN(contents)) + var/obj/O = locate() in contents + return . + O.name //Just append the name of the first object + return . + "empty" + +/obj/item/reagent_containers/cooking_container/update_icon() + . = ..() + cut_overlays() + for(var/obj/item/our_item in vis_contents) + src.remove_from_visible(our_item) + + for(var/i=contents.len, i>=1, i--) + var/obj/item/our_item = contents[i] + src.add_to_visible(our_item) + if(lip) + add_overlay(image(src.icon, icon_state=lip, layer=ABOVE_OBJ_LAYER)) + +/obj/item/reagent_containers/cooking_container/proc/add_to_visible(var/obj/item/our_item) + our_item.pixel_x = initial(our_item.pixel_x) + our_item.pixel_y = initial(our_item.pixel_y) + our_item.vis_flags = VIS_INHERIT_LAYER | VIS_INHERIT_PLANE | VIS_INHERIT_ID + our_item.blend_mode = BLEND_INSET_OVERLAY + our_item.transform *= 0.6 + src.vis_contents += our_item + +/obj/item/reagent_containers/cooking_container/proc/remove_from_visible(var/obj/item/our_item) + our_item.vis_flags = 0 + our_item.blend_mode = 0 + our_item.transform = null + src.vis_contents.Remove(our_item) + +/obj/item/reagent_containers/cooking_container/plate + icon = 'monkestation/code/modules/brewin_and_chewin/icons/eris_kitchen.dmi' + name = "serving plate" + shortname = "plate" + desc = "A shitty serving plate. You probably shouldn't be seeing this." + icon_state = "plate" + appliancetype = PLATE + +/obj/item/reagent_containers/cooking_container/board + name = "cutting board" + shortname = "cutting_board" + desc = "Good for making sandwiches on, too." + icon_state = "cutting_board" + appliancetype = CUTTING_BOARD + +/obj/item/reagent_containers/cooking_container/oven + name = "oven tray" + shortname = "shelf" + desc = "Put ingredients in this; designed for use with an oven. Warranty void if used." + icon_state = "oven_dish" + lip = "oven_dish_lip" + appliancetype = OVEN + +/obj/item/reagent_containers/cooking_container/proc/process_bake(datum/source, obj/machinery/oven/oven, seconds_per_tick) + #ifdef CWJ_DEBUG + logger.Log(LOG_CATEGORY_DEBUG"grill/proc/process_bake data:", list("temperature: [oven.temperature]", "reference_time: [oven.reference_time]", " world.time: [world.time]", "cooking_timestamp: [oven.cooking_timestamp]", " grill_data: [grill_data]")) + #endif + + if(oven_data[oven.temperature]) + oven_data[oven.temperature] += seconds_per_tick * 10 + else + oven_data[oven.temperature] = seconds_per_tick * 10 + return COMPONENT_BAKING_GOOD_RESULT | COMPONENT_HANDLED_BAKING + +/obj/item/reagent_containers/cooking_container/proc/process_stovetop(datum/source, temperature, seconds_per_tick, obj/stove_object) + if(stove_data[temperature]) + stove_data[temperature] += seconds_per_tick * 10 + else + stove_data[temperature] = seconds_per_tick * 10 + process_item(stove_object, null, FALSE, FALSE) + return TRUE + +/obj/item/reagent_containers/cooking_container/pan + name = "pan" + desc = "An normal pan." + + icon_state = "pan" //Default state is the base icon so it looks nice in the map builder + lip = "pan_lip" + hitsound = 'sound/weapons/smash.ogg' + appliancetype = PAN + +/obj/item/reagent_containers/cooking_container/pot + name = "cooking pot" + shortname = "cooking pot" + desc = "Boil things with this. Maybe even stick 'em in a stew." + + icon_state = "pot" + lip = "pot_lip" + + hitsound = 'sound/weapons/smash.ogg' + removal_penalty = 5 + appliancetype = POT + w_class = WEIGHT_CLASS_BULKY + +/obj/item/reagent_containers/cooking_container/deep_basket + name = "deep fryer basket" + shortname = "basket" + desc = "Cwispy! Warranty void if used." + + icon_state = "deepfryer_basket" + lip = "deepfryer_basket_lip" + removal_penalty = 5 + appliancetype = DF_BASKET + +/obj/item/reagent_containers/cooking_container/proc/no_step_checks(obj/item/item) + return TRUE + +/obj/item/reagent_containers/cooking_container/deep_basket/no_step_checks(obj/item/item) + item.forceMove(src) + qdel(tracker) + update_icon() + return FALSE + + +/obj/item/reagent_containers/cooking_container/air_basket + name = "air fryer basket" + shortname = "basket" + desc = "Permanently laminated with dried oil and late-stage capitalism." + + icon_state = "airfryer_basket" + lip = "airfryer_basket_lip" + removal_penalty = 5 + appliancetype = AF_BASKET + + +/obj/item/reagent_containers/cooking_container/grill_grate + name = "grill grate" + shortname = "grate" + place_verb = "onto" + desc = "Primarily used to grill meat, place this on a grill and enjoy an ancient human tradition." + + icon_state = "grill_grate" + + appliancetype = GRILL + +/obj/item/reagent_containers/cooking_container/bowl + name = "cooking bowl" + shortname = "cooking bowl" + desc = "A bowl." + + icon_state = "bowl" + lip = "bowl_lip" + + removal_penalty = 2 + appliancetype = BOWL diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/food_additons.dm b/monkestation/code/modules/brewin_and_chewin/chewing/food_additons.dm new file mode 100644 index 000000000000..2fde194769c1 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/food_additons.dm @@ -0,0 +1,30 @@ +/obj/item + ///can in rare cases be on an item so generalizing onto items + var/food_quality = 1 + +/obj/item/food/examine(mob/user) + . = ..() + . += span_notice("The food's level of quality is [food_quality]") + + var/food_descriptor + if(food_quality < 0) + food_descriptor = "It looks gross. Someone cooked this poorly." + else if (food_quality >= 100) + food_descriptor = "What cruel twist of fate it must be, for this unparalleled artistic masterpiece can only be truly appreciated through its destruction. Does this dish's transient form belie the true nature of all things? You see totality of existence reflected through \the [src]." + else + switch(food_quality) + if(0) + food_descriptor = "It looks like an unappetizing a meal." + if(1 to 10) + food_descriptor = "The food is edible, but frozen dinners have been reheated with more skill." + if(11 to 20) + food_descriptor = "It looks adequately made." + if(21 to 30) + food_descriptor = "The quality of the food is is pretty good." + if(31 to 50) + food_descriptor = "This food looks very tasty." + if(61 to 70) + food_descriptor = "There's a special spark in this cooking, a measure of love and care unseen by the casual chef." + if(81 to 99) + food_descriptor = "The quality of this food is legendary. Words fail to describe it further. It must be eaten" + . += span_notice(food_descriptor) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/food_effects/food_posioning.dm b/monkestation/code/modules/brewin_and_chewin/chewing/food_effects/food_posioning.dm new file mode 100644 index 000000000000..2a9e39d1708e --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/food_effects/food_posioning.dm @@ -0,0 +1,19 @@ +/atom/movable/screen/alert/status_effect/food/food_poisoning + name = "Food Poisoning" + desc = "Suffering from food Poisoning" + icon_state = "gross2" + +/datum/status_effect/food/food_poisoning + duration = 1.5 MINUTES + id = "food_poisoning" + alert_type = /atom/movable/screen/alert/status_effect/food/food_poisoning + var/min_vomit_processes = 5 + +/datum/status_effect/food/food_poisoning/tick(seconds_per_tick, times_fired) + . = ..() + owner.adjust_hallucinations(0.5 SECONDS) + owner.adjust_drugginess(0.75 SECONDS) + if(prob(20) && min_vomit_processes <= 0) + owner.vomit(4, FALSE, FALSE) + min_vomit_processes = 5 + min_vomit_processes-- diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/fryer_overhaul.dm b/monkestation/code/modules/brewin_and_chewin/chewing/fryer_overhaul.dm new file mode 100644 index 000000000000..9cdf1cd244ad --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/fryer_overhaul.dm @@ -0,0 +1,82 @@ +/obj/machinery/deepfryer + icon = 'monkestation/code/modules/brewin_and_chewin/icons/eris_kitchen.dmi' + icon_state = "fryer" + var/obj/item/reagent_containers/cooking_container/deep_basket/basket + +/obj/machinery/deepfryer/update_icon_state() + . = ..() + if(basket) + icon_state = "fryer_off" + else + icon_state = "fryer" + +/obj/machinery/deepfryer/process(seconds_per_tick) + ..() + if(!basket) + return + if(basket.tracker) + basket.fryer_data[J_HI] += 10 * seconds_per_tick + else + var/datum/reagent/consumable/cooking_oil/frying_oil = reagents.has_reagent(/datum/reagent/consumable/cooking_oil) + if(!frying_oil) + return + for(var/obj/item/item as anything in basket.contents) + reagents.chem_temp = frying_oil.fry_temperature + if(!item) + continue + + reagents.trans_to(item, oil_use * seconds_per_tick, multiplier = fry_speed * 3) //Fried foods gain more of the reagent thanks to space magic + + cook_time += fry_speed * seconds_per_tick + if(cook_time >= 5 SECONDS && !frying_fried) + frying_fried = TRUE //frying... frying... fried + playsound(src.loc, 'sound/machines/ding.ogg', 50, TRUE) + audible_message(span_notice("[src] dings!")) + else if (cook_time >= 12 SECONDS && !frying_burnt) + frying_burnt = TRUE + visible_message(span_warning("[src] emits an acrid smell!")) + + use_power(active_power_usage) + +/obj/machinery/deepfryer/proc/start_fry(obj/item/frying_item, mob/user) + to_chat(user, span_notice("You put [frying_item] into [src].")) + if(istype(frying_item, /obj/item/freeze_cube)) + log_bomber(user, "put a freeze cube in a", src) + visible_message(span_userdanger("[src] starts glowing... Oh no...")) + playsound(src, 'sound/effects/pray_chaplain.ogg', 100) + add_filter("entropic_ray", 10, list("type" = "rays", "size" = 35, "color" = COLOR_VIVID_YELLOW)) + addtimer(CALLBACK(src, PROC_REF(blow_up)), 5 SECONDS) + + // Give them reagents to put frying oil in + if(isnull(frying_item.reagents)) + frying_item.create_reagents(50, INJECTABLE) + if(user.mind) + ADD_TRAIT(frying_item, TRAIT_FOOD_CHEF_MADE, REF(user.mind)) + SEND_SIGNAL(frying_item, COMSIG_ITEM_ENTERED_FRYER) + + icon_state = "fryer_on" + +/obj/machinery/deepfryer/proc/reset_frying(mob/user) + if(!basket) + return + for(var/obj/item/item as anything in basket.contents) + if(!QDELETED(item)) + item.AddElement(/datum/element/fried_item, cook_time) + if(user) + basket.process_item(src, user, lower_quality_on_fail=CHEWIN_BASE_QUAL_REDUCTION, send_message=TRUE) + frying_fried = FALSE + frying_burnt = FALSE + fry_loop.stop() + cook_time = 0 + icon_state = "fryer_off" + +/obj/machinery/deepfryer/attackby(obj/item/weapon, mob/user, params) + . = ..() + if(istype(weapon, /obj/item/reagent_containers/cooking_container/deep_basket) && !basket) + weapon.forceMove(src) + basket = weapon + icon_state = "fryer_on" + frying = TRUE + for(var/obj/item/item as anything in basket.contents) + start_fry(item, user) + fry_loop.start() diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/global_creation.dm b/monkestation/code/modules/brewin_and_chewin/chewing/global_creation.dm new file mode 100644 index 000000000000..b82f58fed439 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/global_creation.dm @@ -0,0 +1,11 @@ +/proc/initialize_cooking_recipes() + //All combination path datums, save for the default recipes we don't want. + var/list/recipe_paths = typesof(/datum/chewin_cooking/recipe) + recipe_paths -= /datum/chewin_cooking/recipe + for (var/path in recipe_paths) + var/datum/chewin_cooking/recipe/example_recipe = new path() + if(!GLOB.chewin_recipe_dictionary[example_recipe.cooking_container]) + GLOB.chewin_recipe_dictionary[example_recipe.cooking_container] = list() + GLOB.chewin_recipe_dictionary[example_recipe.cooking_container]["[example_recipe.unique_id]"] = example_recipe + + GLOB.chewin_recipe_list += example_recipe diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/items.dm b/monkestation/code/modules/brewin_and_chewin/chewing/items.dm new file mode 100644 index 000000000000..6c526ae43d6c --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/items.dm @@ -0,0 +1,14 @@ +/obj/item/spatula + name = "Spatula" + desc = "A Hydrodynamic Spatula. Port and Starboard attachments not included." + icon = 'monkestation/code/modules/brewin_and_chewin/icons/kitchen.dmi' + icon_state = "spat" + w_class = WEIGHT_CLASS_SMALL + +/obj/item + var/cooking_description_modifier + +/obj/item/examine(mob/user) + . = ..() + if(cooking_description_modifier) + . += span_notice(cooking_description_modifier) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/oven_overrides.dm b/monkestation/code/modules/brewin_and_chewin/chewing/oven_overrides.dm new file mode 100644 index 000000000000..20c4f2bd8f57 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/oven_overrides.dm @@ -0,0 +1,42 @@ +/obj/machinery/oven + ///our temperature for baked goods + var/temperature = J_LO + ///time stamps specifically for chewin recipes + var/cooking_timestamp = 0 + ///our reference timestamp + var/reference_time = 0 + ///our oven timer + var/oven_timer + ///timer duration + var/timer_duration = 0 + ///timer last start + var/timer_laststart = 0 + +/obj/machinery/oven/Initialize(mapload) + . = ..() + register_context() + +/obj/machinery/oven/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + context[SCREENTIP_CONTEXT_ALT_LMB] = "Set Timer" + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/oven/AltClick(mob/user) + . = ..() + if(!oven_timer) + timer_duration = tgui_input_number(user, "How long should the timer be in 10th of a seconds", min_value = 0, max_value = 10000000) + if(!timer_duration) + return + if(!open) + timer_laststart = world.time + oven_timer = addtimer(CALLBACK(src, PROC_REF(go_off_queen)), timer_duration, TIMER_UNIQUE | TIMER_STOPPABLE) + else + deltimer(oven_timer) + oven_timer = null + +/obj/machinery/oven/proc/go_off_queen() + timer_duration = 0 + timer_laststart = 0 + oven_timer = null + + playsound(src, 'sound/weapons/gun/general/empty_alarm.ogg', 25) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe.dm new file mode 100644 index 000000000000..aaaa53948c0b --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe.dm @@ -0,0 +1,868 @@ +/* +CHEWIN COOKING - A comprehensive cooking rework. +The recipe datum outlines a list of steps from getting a piece of food from point A to point B. +Recipes have steps that are held in a modular linked list, holding required steps, and optional ones to increase the total quality of the food. +Following a recipe incorrectly (IE, adding too much of an item, having the burner too hot, etc.) Will decrease the quality of the food.area +Recipes have clear start and end points. They start with a particular item and end with a particular item. +That said, a start item can follow multiple recipes until they eventually diverge as different steps are followed. +In the case two recipes have identical steps, the user should be prompted on what their intended result should be. (Donuts vs Bagels) +Recipes are loaded at startup. Food items reference it by the recipe_tracker datum +By following the steps correctly, good food can be made. +Food quality is calculated based on the steps taken. +*/ + +/datum/chewin_cooking/recipe + var/unique_id + var/name //Name for the cooking guide. Auto-populates if not set. + var/description //Description for the cooking guide. Auto-populates if not set. + var/recipe_guide //Step by step recipe guide. I hate it. + var/recipe_icon //Icon for the cooking guide. Auto-populates if not set. + var/recipe_icon_state //Icon state for the cooking guide. Auto-populates if not set. + + //The Cooking container the recipe is performed in. + var/cooking_container = null + + var/product_type //Type path for the product created by the recipe. An item of this type should ALSO have a recipe_tracker Datum. + var/product_name + var/product_count = 1 //how much of a thing is made per case of the recipe being followed. + + //Special variables that must be defined INSTEAD of product_type in order to create reagents instead of an object. + var/reagent_id + var/reagent_amount + var/reagent_name + var/reagent_desc + + var/icon_image_file + + var/quality_description //A decorator description tacked onto items when the recipe is completed. Used in future recipes. "The Bread looks Handmade." + + var/exclusive_option_mode = FALSE //triggers whether two steps in a process are exclusive- IE: you can do one or the other, but not both. + + var/list/active_exclusive_option_list = list() //Only needed during the creation process for tracking a given exclusive option dictionary. + + var/option_chain_mode = 0 //triggers whether two steps in a process are exclusive- IE: you can do one or the other, but not both. + + var/active_exclusive_option_chain //Only needed during the creation process for tracking items in an option chain. + + var/replace_reagents = FALSE //Determines if we entirely replace the contents of the food product with the slurry that goes into it. + + var/appear_in_default_catalog = TRUE //Everything appears in the catalog by default + /* + The Step Builder is iterated through to create new steps in the recipe dynamically. + _OPTIONAL steps are linked to the previously made REQUIRED step + CHEWIN_BEGIN steps must eventually terminate in a matching CHEWIN_END step + */ + var/list/step_builder = null + + var/datum/chewin_cooking/recipe_step/first_step //The first step in the linked list that will result in the final recipe + + var/datum/chewin_cooking/recipe_step/last_required_step //Reference to the last required step in the cooking process. + + var/datum/chewin_cooking/recipe_step/last_created_step //Reference to the last step made, regardless of if it was required or not. + ///this is the category shown in personal crafting menus + var/food_category = CATEGORY_MISC + ///this is our food buff override provided by other things + var/food_buff_override + +/datum/chewin_cooking/recipe/New() + + if(reagent_id && !reagent_amount) + CRASH("/datum/chewin_cooking/recipe/New: Reagent creating recipe must have reagent_amount defined! Recipe path=[src.type].") + + build_steps() + + if(ispath(product_type)) + var/obj/item/product_info = new product_type() + product_name = product_info.name + if(!name) + name = product_info.name + + if(!description) + description = product_info.desc + + QDEL_NULL(product_info) //We don't need this anymore. + + if(reagent_id) + var/datum/reagent/test_reagent = GLOB.chemical_reagents_list[reagent_id] + if(test_reagent) + if(!name) + name = test_reagent.name + if(!description) + description = test_reagent.description + + reagent_name = test_reagent.name + reagent_desc = test_reagent.description + + if(!name) + name = "NO NAME!" + + unique_id = sequential_id("recipe") + generate_crafting_helper() + +//Build out the recipe steps for a recipe, based on the step_builder list +/datum/chewin_cooking/recipe/proc/build_steps() + if(!step_builder) + CRASH("/datum/chewin_cooking/recipe/build_steps: Recipe has no step builder defined! Recipe path=[src.type].") + + if(!cooking_container) + CRASH("/datum/chewin_cooking/recipe/build_steps: Recipe has no cooking container defined! Recipe path=[src.type].") + + //Create a base step + create_step_base() + + for (var/step in step_builder) + if(islist(step)) + var/list/step_list = step + var/reason = "" + switch(step_list[1]) + if(CHEWIN_ADD_ITEM) + if(step_list.len < 2) + reason="Bad argument Length for CHEWIN_ADD_ITEM" + else if(!ispath(step_list[2])) + reason="Bad argument type for CHEWIN_ADD_ITEM at arg 2" + else + create_step_add_item(step_list[2], FALSE) + if(CHEWIN_ADD_ITEM_OPTIONAL) + if(step_list.len < 2) + reason="Bad argument Length for CHEWIN_ADD_ITEM_OPTIONAL" + else if(!ispath(step_list[2])) + reason="Bad argument type for CHEWIN_ADD_ITEM_OPTIONAL at arg 2" + else + create_step_add_item(step_list[2], TRUE) + if(CHEWIN_ADD_REAGENT) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_ADD_REAGENT" + else if(!ispath(step_list[2], /datum/reagent)) + reason="Bad reagent type for CHEWIN_ADD_REAGENT at arg 2" + else + create_step_add_reagent(step_list[2], step_list[3], FALSE) + if(CHEWIN_ADD_REAGENT_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_ADD_REAGENT_OPTIONAL" + else if(!ispath(step_list[2], /datum/reagent)) + reason="Bad reagent type for CHEWIN_ADD_REAGENT_OPTIONAL at arg 2" + else + create_step_add_reagent(step_list[2], step_list[3], TRUE) + + if(CHEWIN_ADD_REAGENT_CHOICE) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_ADD_REAGENT" + else if(!islist(step_list[2])) + reason="Bad reagent type for CHEWIN_ADD_REAGENT at arg 2" + else + create_step_add_reagent_choice(step_list[2], step_list[3], FALSE) + if(CHEWIN_ADD_REAGENT_CHOICE_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_ADD_REAGENT_OPTIONAL" + else if(!islist(step_list[2])) + reason="Bad reagent type for CHEWIN_ADD_REAGENT_OPTIONAL at arg 2" + else + create_step_add_reagent_choice(step_list[2], step_list[3], TRUE) + + if(CHEWIN_ADD_PRODUCE_CHOICE) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_ADD_PRODUCE_CHOICE" + else if(!islist(step_list[2])) + reason="Bad reagent type for CHEWIN_ADD_PRODUCE_CHOICE at arg 2" + else + create_step_add_produce_choice(step_list[2], FALSE) + if(CHEWIN_ADD_PRODUCE_CHOICE_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_ADD_PRODUCE_CHOICE_OPTIONAL" + else if(!islist(step_list[2])) + reason="Bad reagent type for CHEWIN_ADD_PRODUCE_CHOICE_OPTIONAL at arg 2" + else + create_step_add_produce_choice(step_list[2], TRUE) + + if(CHEWIN_USE_ITEM) + if(step_list.len < 2) + reason="Bad argument Length for CHEWIN_USE_ITEM" + else if(!ispath(step_list[2])) + reason="Bad argument type for CHEWIN_USE_ITEM at arg 2" + else + create_step_use_item(step_list[2], FALSE) + if(CHEWIN_USE_ITEM_OPTIONAL) + if(step_list.len < 2) + reason="Bad argument Length for CHEWIN_USE_ITEM_OPTIONAL" + else if(!ispath(step_list[2])) + reason="Bad argument type for CHEWIN_USE_ITEM_OPTIONAL at arg 2" + else + create_step_use_item(step_list[2], TRUE) + if(CHEWIN_ADD_PRODUCE) + if(step_list.len < 2) + reason="Bad argument Length for CHEWIN_ADD_PRODUCE" + else + create_step_add_produce(step_list[2], FALSE) + if(CHEWIN_ADD_PRODUCE_OPTIONAL) + if(step_list.len < 2) + reason="Bad argument Length for CHEWIN_ADD_PRODUCE_OPTIONAL" + else + create_step_add_produce(step_list[2], TRUE) + if(CHEWIN_USE_TOOL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_TOOL" + else + create_step_use_tool(step_list[2], step_list[3], FALSE) + if(CHEWIN_USE_TOOL_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_TOOL_OPTIONAL" + else + create_step_use_tool(step_list[2], step_list[3], TRUE) + if(CHEWIN_USE_STOVE) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_STOVE" + switch(step_list[2]) + if(J_LO) + if(step_list[3] > CHEWIN_BURN_TIME_LOW) + reason="Time too large for Low setting on CHEWIN_USE_STOVE; Food will automatically burn." + + if(J_MED) + if(step_list[3] > CHEWIN_BURN_TIME_MEDIUM) + reason="Time too large for Medium setting on CHEWIN_USE_STOVE; Food will automatically burn." + + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_STOVE; Food will automatically burn." + + else + reason="Unrecognized temperature for CHEWIN_USE_STOVE" + + if(!reason) + create_step_use_stove(step_list[2], step_list[3], FALSE) + if(CHEWIN_USE_STOVE_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_STOVE_OPTIONAL" + switch(step_list[2]) + if(J_LO) + if(step_list[3] > CHEWIN_BURN_TIME_LOW) + reason="Time too large for Low setting on CHEWIN_USE_STOVE_OPTIONAL; Food will automatically burn." + + if(J_MED) + if(step_list[3] > CHEWIN_BURN_TIME_MEDIUM) + reason="Time too large for Medium setting on CHEWIN_USE_STOVE_OPTIONAL; Food will automatically burn." + + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_STOVE_OPTIONAL; Food will automatically burn." + else + reason="Unrecognized temperature for CHEWIN_USE_STOVE_OPTIONAL" + if(!reason) + create_step_use_stove(step_list[2], step_list[3], TRUE) + + if(CHEWIN_USE_GRILL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_GRILL" + switch(step_list[2]) + if(J_LO) + if(step_list[3] > CHEWIN_BURN_TIME_LOW) + reason="Time too large for Low setting on CHEWIN_USE_GRILL; Food will automatically burn." + + if(J_MED) + if(step_list[3] > CHEWIN_BURN_TIME_MEDIUM) + reason="Time too large for Medium setting on CHEWIN_USE_GRILL; Food will automatically burn." + + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_GRILL; Food will automatically burn." + + else + reason="Unrecognized temperature for CHEWIN_USE_GRILL" + + if(!reason) + create_step_use_grill(step_list[2], step_list[3], FALSE) + + if(CHEWIN_USE_GRILL_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_GRILL_OPTIONAL" + switch(step_list[2]) + if(J_LO) + if(step_list[3] > CHEWIN_BURN_TIME_LOW) + reason="Time too large for Low setting on CHEWIN_USE_GRILL_OPTIONAL; Food will automatically burn." + + if(J_MED) + if(step_list[3] > CHEWIN_BURN_TIME_MEDIUM) + reason="Time too large for Medium setting on CHEWIN_USE_GRILL_OPTIONAL; Food will automatically burn." + + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_GRILL_OPTIONAL; Food will automatically burn." + else + reason="Unrecognized temperature for CHEWIN_USE_GRILL_OPTIONAL" + if(!reason) + create_step_use_grill(step_list[2], step_list[3], TRUE) + if(CHEWIN_USE_OVEN) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_OVEN" + switch(step_list[2]) + if(J_LO) + if(step_list[3] > CHEWIN_BURN_TIME_LOW) + reason="Time too large for Low setting on CHEWIN_USE_OVEN; Food will automatically burn." + + if(J_MED) + if(step_list[3] > CHEWIN_BURN_TIME_MEDIUM) + reason="Time too large for Medium setting on CHEWIN_USE_OVEN; Food will automatically burn." + + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_OVEN; Food will automatically burn." + + else + reason="Unrecognized temperature for CHEWIN_USE_OVEN" + + if(!reason) + create_step_use_oven(step_list[2], step_list[3], FALSE) + + if(CHEWIN_USE_FRYER) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_FRYER" + switch(step_list[2]) + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_FRYER; Food will automatically burn." + + else + reason="Unrecognized temperature for CHEWIN_USE_FRYER" + + if(!reason) + create_step_use_fryer(step_list[2], step_list[3], FALSE) + + if(CHEWIN_USE_OVEN_OPTIONAL) + if(step_list.len < 3) + reason="Bad argument Length for CHEWIN_USE_OVEN_OPTIONAL" + switch(step_list[2]) + if(J_LO) + if(step_list[3] > CHEWIN_BURN_TIME_LOW) + reason="Time too large for Low setting on CHEWIN_USE_OVEN_OPTIONAL; Food will automatically burn." + + if(J_MED) + if(step_list[3] > CHEWIN_BURN_TIME_MEDIUM) + reason="Time too large for Medium setting on CHEWIN_USE_OVEN_OPTIONAL; Food will automatically burn." + + if(J_HI) + if(step_list[3] > CHEWIN_BURN_TIME_HIGH) + reason="Time too large for High setting on CHEWIN_USE_OVEN_OPTIONAL; Food will automatically burn." + else + reason="Unrecognized temperature for CHEWIN_USE_OVEN_OPTIONAL" + if(!reason) + create_step_use_oven(step_list[2], step_list[3], TRUE) + + //Named Arguments modify the recipe in fixed ways + if("desc" in step_list) + set_step_desc(step_list["desc"]) + + if("base" in step_list) + set_step_base_quality(step_list["base"]) + + if("max" in step_list) + set_step_max_quality(step_list["max"]) + + if("prod_desc" in step_list) + set_step_custom_result_desc(step_list["prod_desc"]) + + if("food_buff" in step_list) + set_step_custom_food_buff(step_list["food_buff"]) + + if("finish_text" in step_list) + set_step_custom_finish_text(step_list["finish_text"]) + + if("qmod" in step_list) + if(!set_inherited_quality_modifier(step_list["qmod"])) + reason="qmod / inherited_quality_modifier declared on non add-item recipe step." + + if("remain_percent" in step_list) + if(step_list["remain_percent"] > 1 || step_list["remain_percent"] < 0) + reason="remain_percent must be between 1 and 0." + else if(!set_remain_percent_modifier(step_list["remain_percent"])) + reason="remain_percent / declared on non add-reagent recipe step." + + if("exact" in step_list) + if(!set_exact_type_required(step_list["exact"])) + reason="exact / exact type match declared on non add-item / use-item recipe step." + + if("reagent_skip" in step_list) + if(!set_reagent_skip(step_list["reagent_skip"])) + reason="reagent_skip / reagent_skip declared on non add-item / add-reagent recipe step." + + if("exclude_reagents" in step_list) + for(var/id in step_list["exclude_reagents"]) + var/datum/reagent/path = text2path(id) + if(!path) + path = id + if(!ispath(path, /datum/reagent)) + reason="exclude_reagents list has nonexistant reagent id [id]" + + if(!set_exclude_reagents(step_list["exclude_reagents"])) + reason="exclude_reagents declared on non add-item / add-reagent recipe step." + + if(reason) + CRASH("[src.type]/New: CHEWIN Step Builder failed. Reason: [reason]") + else + switch(step) + if(CHEWIN_BEGIN_EXCLUSIVE_OPTIONS) + begin_exclusive_options() + if(CHEWIN_END_EXCLUSIVE_OPTIONS) + end_exclusive_options() + if(CHEWIN_BEGIN_OPTION_CHAIN) + begin_option_chain() + if(CHEWIN_END_OPTION_CHAIN) + end_option_chain() + + if(exclusive_option_mode) + CRASH("/datum/chewin_cooking/recipe/New: Exclusive option active at end of recipe creation process. Recipe name=[name].") + + if(option_chain_mode) + CRASH("/datum/chewin_cooking/recipe/New: Option Chain active at end of recipe creation process. Recipe name=[name].") + + if(last_created_step.flags & CHEWIN_IS_OPTIONAL) + CRASH("/datum/chewin_cooking/recipe/New: Last option in builder is optional. It must be a required step! Recipe name=[name].") + +//----------------------------------------------------------------------------------- +//Commands for interacting with the recipe tracker +//----------------------------------------------------------------------------------- +//Add base step command. All other steps stem from this. Don't call twice! +/datum/chewin_cooking/recipe/proc/create_step_base() + var/datum/chewin_cooking/recipe_step/start/step = new /datum/chewin_cooking/recipe_step/start(cooking_container) + last_required_step = step + last_created_step = step + first_step = step + +//----------------------------------------------------------------------------------- +//Add reagent step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_add_reagent(var/reagent_id, var/amount, var/optional) + var/datum/chewin_cooking/recipe_step/add_reagent/step = new (reagent_id, amount, src) + return src.add_step(step, optional) + +//----------------------------------------------------------------------------------- +//Add reagent choice step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_add_reagent_choice(var/list/reagent_ids, var/amount, var/optional) + var/datum/chewin_cooking/recipe_step/add_reagent_choice/step = new (reagent_ids, amount, src) + return src.add_step(step, optional) + +//----------------------------------------------------------------------------------- +//Add produce step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_add_produce_choice(var/list/produces, var/optional) + var/datum/chewin_cooking/recipe_step/add_produce_choice/step = new (produces, src) + return src.add_step(step, optional) + +//----------------------------------------------------------------------------------- +//Add item step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_add_item(var/item_type, var/optional) + var/datum/chewin_cooking/recipe_step/add_item/step = new (item_type, src) + return src.add_step(step, optional) +//----------------------------------------------------------------------------------- +//Use item step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_use_item(var/item_type, var/optional) + var/datum/chewin_cooking/recipe_step/use_item/step = new (item_type, src) + return src.add_step(step, optional) + +//----------------------------------------------------------------------------------- +//Use item step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_add_produce(var/produce, var/optional) + var/datum/chewin_cooking/recipe_step/add_produce/step = new /datum/chewin_cooking/recipe_step/add_produce(produce, src) + return src.add_step(step, optional) +//----------------------------------------------------------------------------------- +//Use Tool step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_use_tool(var/type, var/quality, var/optional) + var/datum/chewin_cooking/recipe_step/use_tool/step = new (type, quality, src) + return src.add_step(step, optional) + +//----------------------------------------------------------------------------------- +//Use Fryer step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_use_fryer(var/heat, var/time, var/optional) + var/datum/chewin_cooking/recipe_step/use_fryer/step = new (heat, time, src) + return src.add_step(step, optional) + +//----------------------------------------------------------------------------------- +//Use Stove step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_use_stove(var/heat, var/time, var/optional) + var/datum/chewin_cooking/recipe_step/use_stove/step = new (heat, time, src) + return src.add_step(step, optional) +//----------------------------------------------------------------------------------- +//Use Grill step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_use_grill(var/heat, var/time, var/optional) + var/datum/chewin_cooking/recipe_step/use_grill/step = new (heat, time, src) + return src.add_step(step, optional) +//----------------------------------------------------------------------------------- +//Use Stove step shortcut commands +/datum/chewin_cooking/recipe/proc/create_step_use_oven(var/heat, var/time, var/optional) + var/datum/chewin_cooking/recipe_step/use_oven/step = new (heat, time, src) + return src.add_step(step, optional) +//----------------------------------------------------------------------------------- +//Customize the last step created +/datum/chewin_cooking/recipe/proc/set_step_desc(var/new_description) + last_created_step.desc = new_description + +/datum/chewin_cooking/recipe/proc/set_step_max_quality(var/quality) + last_created_step.flags |= CHEWIN_BASE_QUALITY_ENABLED + last_created_step.max_quality_award = quality + +/datum/chewin_cooking/recipe/proc/set_step_base_quality(var/quality) + last_created_step.flags |= CHEWIN_MAX_QUALITY_ENABLED + last_created_step.base_quality_award = quality + +/datum/chewin_cooking/recipe/proc/set_step_custom_result_desc(var/new_description) + last_created_step.custom_result_desc = new_description + +/datum/chewin_cooking/recipe/proc/set_step_custom_finish_text(var/new_finish_text) + last_created_step.finish_text = new_finish_text + +/datum/chewin_cooking/recipe/proc/set_step_custom_food_buff(var/new_food_buff) + last_created_step.custom_food_buff = new_food_buff + +/datum/chewin_cooking/recipe/proc/set_exact_type_required(var/boolean) + if((last_created_step.class == CHEWIN_ADD_ITEM) || (last_created_step.class == CHEWIN_USE_ITEM)) + last_created_step?:exact_path = boolean + return TRUE + else + return FALSE + +/datum/chewin_cooking/recipe/proc/set_reagent_skip(var/boolean) + if((last_created_step.class == CHEWIN_ADD_ITEM) || (last_created_step.class == CHEWIN_ADD_PRODUCE)) + last_created_step?:reagent_skip = boolean + return TRUE + else + return FALSE + +/datum/chewin_cooking/recipe/proc/set_exclude_reagents(var/list/exclude_list) + if((last_created_step.class == CHEWIN_ADD_ITEM) || (last_created_step.class == CHEWIN_ADD_PRODUCE)) + last_created_step?:exclude_reagents = exclude_list + return TRUE + else + return FALSE + +/datum/chewin_cooking/recipe/proc/set_inherited_quality_modifier(var/modifier) + if(last_created_step.class == CHEWIN_ADD_ITEM || last_created_step.class == CHEWIN_USE_TOOL || last_created_step.class == CHEWIN_ADD_PRODUCE) + last_created_step?:inherited_quality_modifier = modifier + return TRUE + else + return FALSE + +/datum/chewin_cooking/recipe/proc/set_remain_percent_modifier(var/modifier) + if(last_created_step.class == CHEWIN_ADD_REAGENT) + last_created_step?:remain_percent = modifier + return TRUE + else + return FALSE + +//----------------------------------------------------------------------------------- +//Setup for two options being exclusive to eachother. +//Performs a lot of internal checking to make sure that it doesn't break everything. +//If begin_exclusive_options is called, end_exclusive_options must eventually be called in order to close out and proceed to the next required step. + +/datum/chewin_cooking/recipe/proc/begin_exclusive_options() + if(exclusive_option_mode) + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe/proc/begin_exclusive_options: Exclusive option already active.") + log_debug("Recipe name=[name].") + #endif + return + else if(!first_step) + CRASH("/datum/chewin_cooking/recipe/proc/begin_exclusive_options: Exclusive list cannot be active before the first required step is defined. Recipe name=[src.type].") + exclusive_option_mode = TRUE + active_exclusive_option_list = list() + +/datum/chewin_cooking/recipe/proc/end_exclusive_options() + if(!exclusive_option_mode) + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe/proc/end_exclusive_options: Exclusive option already inactive.") + log_debug("Recipe name=[name].") + #endif + return + else if(active_exclusive_option_list.len == 0) + CRASH("/datum/chewin_cooking/recipe/proc/end_exclusive_options: Exclusive option list ended with no values added. Recipe name=[src.type].") + else if(option_chain_mode) + CRASH("/datum/chewin_cooking/recipe/proc/end_exclusive_options: Exclusive option cannot end while option chain is active. Recipe name=[src.type].") + + exclusive_option_mode = FALSE + + //Flatten exclusive options into the global list for easy referencing later. + //initiate the exclusive option list + for (var/datum/chewin_cooking/recipe_step/exclusive_option in active_exclusive_option_list) + if (!GLOB.chewin_optional_step_exclusion_dictionary["[exclusive_option.unique_id]"]) + GLOB.chewin_optional_step_exclusion_dictionary["[exclusive_option.unique_id]"] = list() + //populate the exclusive option list + for (var/datum/chewin_cooking/recipe_step/exclusive_option in active_exclusive_option_list) + for (var/datum/chewin_cooking/recipe_step/excluder in active_exclusive_option_list["[exclusive_option]"]) + if (exclusive_option.unique_id != excluder.unique_id) + GLOB.chewin_optional_step_exclusion_dictionary["[exclusive_option.unique_id]"] = excluder.unique_id + + active_exclusive_option_list = null + +//----------------------------------------------------------------------------------- +//Setup for a chain of optional steps to be added that order themselves sequentially. +//Optional steps with branching paths is NOT supported. +//If begin_option_chain is called, end_option_chain must eventually be called in order to close out and proceed to the next required step. +/datum/chewin_cooking/recipe/proc/begin_option_chain() + if(option_chain_mode) + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe/proc/begin_option_chain: Option Chain already active.") + log_debug("Recipe name=[name].") + #endif + return + if(!first_step) + CRASH("/datum/chewin_cooking/recipe/proc/begin_option_chain: Option Chain cannot be active before first required step is defined. Recipe name=[name].") + option_chain_mode =1 + +/datum/chewin_cooking/recipe/proc/end_option_chain() + if(!option_chain_mode) + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe/proc/end_option_chain: Option Chain already inactive.") + log_debug("Recipe name=[name].") + #endif + return + last_created_step.next_step = last_required_step + option_chain_mode = 0 + + +//----------------------------------------------------------------------------------- +//Function that dynamically adds a step into a given recipe matrix. +/datum/chewin_cooking/recipe/proc/add_step(var/datum/chewin_cooking/recipe_step/step, var/optional) + + //Required steps can't have exclusive options. + //If a given recipe needs to split into two branching required steps, it should be split into two different recipes. + if(!optional && exclusive_option_mode) + CRASH("/datum/chewin_cooking/recipe/proc/add_step: Required step added while exclusive option mode is on. Recipe name=[name].") + + if(!optional && option_chain_mode) + CRASH("/datum/chewin_cooking/recipe/proc/add_step: Required step added while option chain mode is on. Recipe name=[name].") + + if(optional) + switch(option_chain_mode) + //When the chain needs to be initialized + if(1) + last_required_step.optional_step_list += step + option_chain_mode = 2 + step.flags |= CHEWIN_IS_OPTION_CHAIN + //When the chain has already started. + if(2) + last_created_step.next_step = step + step.flags |= CHEWIN_IS_OPTION_CHAIN + else + last_required_step.optional_step_list += step + //Set the next step to loop back to the step it branched from. + step.next_step = last_required_step + else + last_required_step.next_step = step + + + //populate the previous step for optional backwards pathing. + if(option_chain_mode) + step.previous_step = last_created_step + else + step.previous_step = last_required_step + + //Update flags + if(!optional) + last_required_step.flags &= ~CHEWIN_IS_LAST_STEP + step.flags |= CHEWIN_IS_LAST_STEP + else + step.flags |= CHEWIN_IS_OPTIONAL + if(exclusive_option_mode) + step.flags |= CHEWIN_IS_EXCLUSIVE + if(option_chain_mode) + step.flags |= CHEWIN_IS_OPTION_CHAIN + + if(!optional) + last_required_step = step + + last_created_step = step + + //Handle exclusive options + if(exclusive_option_mode) + active_exclusive_option_list[step] = list() + for (var/datum/chewin_cooking/recipe_step/ex_step in active_exclusive_option_list) + if(ex_step == step.unique_id || step.in_option_chain(ex_step)) + continue + active_exclusive_option_list[ex_step] += step + return step + +//----------------------------------------------------------------------------------- +//default function for creating a product +/datum/chewin_cooking/recipe/proc/create_product(var/datum/chewin_cooking/recipe_pointer/pointer, var/mob/user) + var/datum/chewin_cooking/recipe_tracker/parent = pointer.parent_ref.resolve() + var/obj/item/container = parent.holder_ref.resolve() + if(container) + //Build up a list of reagents that went into this. + var/datum/reagents/slurry = new /datum/reagents(maximum=1000000) + slurry.my_atom = container + + //Filter out reagents based on settings + if(GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_REAGENT]"]) + for(var/id in pointer.steps_taken) + if(!GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_REAGENT]"][id]) + continue + var/datum/chewin_cooking/recipe_step/add_reagent/active_step = GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_REAGENT]"][id] + var/amount_to_remove = active_step.required_reagent_amount * (1 - active_step.remain_percent) + if(!amount_to_remove) + continue + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Removing [amount_to_remove] units of id [active_step.required_reagent_id] from [container]") + #endif + container.reagents.remove_reagent(active_step.required_reagent_id, amount_to_remove, safety = 1) + + if(product_type) //Make a regular item + if(container.reagents.total_volume) + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Transferring container reagents of [container.reagents.total_volume] to slurry of current volume [slurry.total_volume] max volume [slurry.maximum_volume]") + #endif + container.reagents.trans_to(slurry, amount=container.reagents.total_volume) + + //Do reagent filtering on added items and produce + var/list/exclude_list = list() + for(var/obj/item/added_item in container.contents) + var/can_add = TRUE + var/list/exclude_specific_reagents = list() + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Analyzing reagents of [added_item].") + #endif + for(var/id in pointer.steps_taken) + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Comparing step id [id] for [added_item].") + #endif + if(id in exclude_list) //Only consider a step for removal one time. + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: id in exclude list; skipping.") + #endif + continue + if(GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_ITEM]"] && GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_ITEM]"][id]) + var/datum/chewin_cooking/recipe_step/add_item/active_step = GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_ITEM]"][id] + exclude_specific_reagents = active_step.exclude_reagents + if(active_step.reagent_skip) + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Reagent skip detected. Ignoring reagents from [added_item].") + #endif + can_add = FALSE + exclude_list += id + break + else if(GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_PRODUCE]"] && GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_PRODUCE]"][id]) + var/datum/chewin_cooking/recipe_step/add_produce/active_step = GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_PRODUCE]"][id] + exclude_specific_reagents = active_step.exclude_reagents + if(active_step.reagent_skip) + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Reagent skip detected. Ignoring reagents from [added_item].") + #endif + can_add = FALSE + exclude_list += id + break + if(can_add) + if(exclude_specific_reagents.len) + for(var/id in exclude_specific_reagents) + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Removing [added_item.reagents.get_reagent_amount(id)] units of id [id] from [added_item]") + #endif + added_item.reagents.remove_reagent(id, added_item.reagents.get_reagent_amount(id), safety=TRUE) + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Adding [added_item.reagents.total_volume] units from [added_item] to slurry") + #endif + added_item.reagents.trans_to(slurry, amount=added_item.reagents.total_volume) + + //Purge the contents of the container we no longer need it + QDEL_LIST(container.contents) + container.contents = list() + + var/reagent_quality = calculate_reagent_quality(pointer) + + //Produce Item descriptions based on the steps taken + var/cooking_description_modifier = "" + for(var/id in pointer.steps_taken) + if(pointer.steps_taken[id] != "skip") + cooking_description_modifier += "[pointer.steps_taken[id]]\n" + + food_buff_override = pointer.custom_food_buff + + for(var/i = 0; i < product_count; i++) + var/obj/item/new_item = new product_type(container) + logger.Log(LOG_CATEGORY_DEBUG, "Item created with reagents of [new_item.reagents.total_volume]") + if(replace_reagents) + //Clearing out reagents in data. If initialize hasn't been called, we also null that out here. + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Clearing out reagents from the [new_item]") + #endif + new_item.reagents.clear_reagents() + #ifdef CHEWIN_DEBUG + log_debug("/recipe/proc/create_product: Transferring slurry of [slurry.total_volume] to [new_item] of total volume [new_item.reagents.total_volume]") + #endif + slurry.trans_to(new_item.reagents, amount=slurry.total_volume) + + new_item?:food_quality = pointer.tracked_quality + reagent_quality + new_item?:cooking_description_modifier = cooking_description_modifier + if(user) + ADD_TRAIT(new_item, TRAIT_FOOD_CHEF_MADE, user) + if(istype(new_item, /obj/item/food) && food_buff_override) + var/obj/item/food/food_item = new_item + food_item?:food_buffs = food_buff_override + + if(istype(new_item, /obj/item/food)) + var/obj/item/food/food_type = new_item + if(food_type.food_quality < 0) + food_type.food_buffs = /datum/status_effect/food/food_poisoning + //TODO: Consider making an item's base components show up in the reagents of the product. + else + //Purge the contents of the container we no longer need it + QDEL_LIST(container.contents) + container.contents = list() + + container.reagents.clear_reagents() + + if(reagent_id) //Make a reagent + //quality handling + var/total_quality = pointer.tracked_quality + calculate_reagent_quality(pointer) + + //Create our Reagent + container.reagents.add_reagent(reagent_id, reagent_amount, data=list("FOOD_QUALITY" = total_quality)) + + qdel(slurry) + +//Extra Reagents in a recipe take away recipe quality for every extra unit added to the concoction. +//Reagents are calculated in two areas. Here and /datum/chewin_cooking/recipe_step/add_reagent/calculate_quality +/datum/chewin_cooking/recipe/proc/calculate_reagent_quality(var/datum/chewin_cooking/recipe_pointer/pointer) + if(!GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_REAGENT]"]) + return 0 + var/datum/chewin_cooking/recipe_tracker/parent = pointer.parent_ref.resolve() + var/obj/item/container = parent.holder_ref.resolve() + var/total_volume = container.reagents.total_volume + + var/calculated_volume = 0 + + var/calculated_quality = 0 + for(var/id in pointer.steps_taken) + if(!GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_REAGENT]"][id]) + continue + var/datum/chewin_cooking/recipe_step/add_reagent/active_step = GLOB.chewin_step_dictionary_ordered["[CHEWIN_ADD_REAGENT]"][id] + calculated_volume += active_step.required_reagent_amount + + calculated_quality += active_step.base_quality_award + + return calculated_quality - (total_volume - calculated_volume) + + + +//----------------------------------------------------------------------------------- +/datum/chewin_cooking/proc/get_class_string(var/code) + switch(code) + if(CHEWIN_ADD_ITEM) + return "Add Item" + if(CHEWIN_USE_ITEM) + return "Use Item" + if(CHEWIN_ADD_REAGENT) + return "Add Reagent" + if(CHEWIN_ADD_REAGENT_CHOICE) + return "Add one of these Reagents" + if(CHEWIN_ADD_PRODUCE_CHOICE) + return "Add one of these Produce" + if(CHEWIN_ADD_PRODUCE) + return "Add Produce" + if(CHEWIN_USE_TOOL) + return "Use Tool" + if(CHEWIN_USE_STOVE) + return "Use Stove" + if(CHEWIN_USE_GRILL) + return "Use Grill" + if(CHEWIN_USE_OVEN) + return "Use Oven" + if(CHEWIN_USE_FRYER) + return "Use Fryer" + if(CHEWIN_USE_OTHER) + return "Custom Action" + if(CHEWIN_START) + return "Placeholder Action" diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/_base.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/_base.dm new file mode 100644 index 000000000000..4bd0b7178300 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/_base.dm @@ -0,0 +1,108 @@ +//A step in a recipe, whether optional or required +/datum/chewin_cooking/recipe_step + var/unique_id //Special ID for a given recipe, allows for referencing later by food objects to save on memory. + + var/class = CHEWIN_USE_OTHER //The classificaiton of the step involved. + + var/group_identifier = "None" //Different for every type of recipe. + + var/image/tooltip_image = null + + var/parent_recipe //The parent recipe of this particular step. Created on initialization with New() + + var/desc //A description of the step + + var/custom_result_desc //A custom description of the resulting quality on a successful completion. + + var/list/optional_step_list = list() //List of optional steps that can be followed from this point forward. + + var/max_quality_award = 0 //The maximum quality awarded by following a given step to the letter. + + var/base_quality_award = 0 + + var/flags = 0 + + var/custom_food_buff + + var/finish_text + + //The next required step for the parent recipe + var/datum/chewin_cooking/recipe_step/next_step + + //The previous required step for the current recipe + var/datum/chewin_cooking/recipe_step/previous_step + + var/auto_complete_enabled = FALSE //If the step can be completed without any further input. + + + +/datum/chewin_cooking/recipe_step/New(var/datum/chewin_cooking/recipe/our_recipe) + parent_recipe = our_recipe + unique_id = sequential_id("recipe_step") + + if(!tooltip_image) + src.set_image() + + //Add the recipe to our dictionary for future reference. + if(!GLOB.chewin_step_dictionary_ordered["[class]"]) + GLOB.chewin_step_dictionary_ordered["[class]"] = list() + GLOB.chewin_step_dictionary_ordered["[class]"]["[unique_id]"] = src + GLOB.chewin_step_dictionary["[unique_id]"] = src + +/datum/chewin_cooking/recipe_step/proc/set_image() + + +//Calculate how well the recipe step was followed to the letter. +/datum/chewin_cooking/recipe_step/proc/calculate_quality(var/obj/added_item, var/obj/item/reagent_containers/container) + return 0 + +//Check if the conditions of a recipe step was followed correctly. +/datum/chewin_cooking/recipe_step/proc/check_conditions_met() + return CHEWIN_CHECK_VALID + +//Check if a given step is in the same option chain as another step. +/datum/chewin_cooking/recipe_step/proc/in_option_chain(var/datum/chewin_cooking/recipe_step/step) + if(!step) + return FALSE + if(!(flags & CHEWIN_IS_OPTION_CHAIN) || !(step.flags & CHEWIN_IS_OPTION_CHAIN)) + return FALSE + + var/datum/chewin_cooking/recipe_step/target_step = src.previous_step + //traverse backwards on the chain. + while(target_step && !(target_step & CHEWIN_IS_OPTION_CHAIN)) + if(step.unique_id == target_step.unique_id) + return TRUE + target_step = target_step.previous_step + + //Traverse forwards on the chain. + target_step = src.next_step + while(target_step && !(target_step & CHEWIN_IS_OPTION_CHAIN)) + if(step.unique_id == target_step.unique_id) + return TRUE + target_step = src.next_step + + //We didn't find anything. Return False. + return FALSE + +//Automatically clamps food based on their maximum and minimum quality, if they are set. +/datum/chewin_cooking/recipe_step/proc/clamp_quality(var/raw_quality) + if((flags & CHEWIN_BASE_QUALITY_ENABLED) && (flags & CHEWIN_MAX_QUALITY_ENABLED)) + return clamp(raw_quality, base_quality_award, max_quality_award) + if(flags & CHEWIN_BASE_QUALITY_ENABLED) + return max(raw_quality, base_quality_award) + if(flags & CHEWIN_MAX_QUALITY_ENABLED) + return min(raw_quality, max_quality_award) + return raw_quality + +/datum/chewin_cooking/recipe_step/proc/get_step_result_text(var/obj/used_obj, step_quality) + if(custom_result_desc) + return custom_result_desc + else + return "skip" + +/datum/chewin_cooking/recipe_step/proc/follow_step(var/obj/added_item, var/obj/item/reagent_containers/container) + return CHEWIN_SUCCESS + +//Special function to check if the step has been satisfied. Sometimed just following the step is enough, but not always. +/datum/chewin_cooking/recipe_step/proc/is_complete(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + return TRUE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_item.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_item.dm new file mode 100644 index 000000000000..18a7cf7f6516 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_item.dm @@ -0,0 +1,74 @@ +//A cooking step that involves adding an item to the food. Is based on Item Type. +//This basically deletes the food used on it. + +//ENSURE THE INCOMING ITEM HAS var/quality DEFINED! +/datum/chewin_cooking/recipe_step/add_item + class = CHEWIN_ADD_ITEM + + var/required_item_type //Item required for the recipe step + + var/inherited_quality_modifier = 1 //The modifier we apply multiplicatively to balance quality scaling across recipes. + + var/exact_path = FALSE //Tests if the item has to be the EXACT ITEM PATH, or just a child of the item path. + + var/reagent_skip = FALSE + + var/list/exclude_reagents = list() + +//item_type: The type path of the object we are looking for. +//our_recipe: The parent recipe object, +/datum/chewin_cooking/recipe_step/add_item/New(var/item_type, var/datum/chewin_cooking/recipe/our_recipe) + + #ifdef CHEWIN_DEBUG + if(!ispath(item_type, /obj/item)) + log_debug("/datum/chewin_cooking/recipe_step/add_item/New(): item [item_type] is not a valid path") + #endif + + var/obj/item/example_item = new item_type() + if(example_item) + desc = "Add \a [example_item] into the recipe." + + required_item_type = item_type + group_identifier = item_type + tooltip_image = image(example_item.icon, icon_state=example_item.icon_state) + QDEL_NULL(example_item) + #ifdef CHEWIN_DEBUG + else + log_debug("/datum/chewin_cooking/recipe_step/add_item/New(): item [item_type] couldn't be created.") + #endif + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/add_item/check_conditions_met(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + #ifdef CHEWIN_DEBUG + log_debug("Called add_item/check_conditions_met for [added_item], checking against item type [required_item_type]. Exact_path = [exact_path]") + #endif + if(!istype(added_item, /obj/item)) + return CHEWIN_CHECK_INVALID + if(exact_path) + if(added_item.type == required_item_type) + return CHEWIN_CHECK_VALID + else + if(istype(added_item, required_item_type)) + return CHEWIN_CHECK_VALID + return CHEWIN_CHECK_INVALID + +//The quality of add_item is special, in that it inherits the quality level of its parent and +//passes it along. +//May need "Balancing" with var/inherited_quality_modifier +/datum/chewin_cooking/recipe_step/add_item/calculate_quality(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/raw_quality = added_item?:food_quality * inherited_quality_modifier + return clamp_quality(raw_quality) + +/datum/chewin_cooking/recipe_step/add_item/follow_step(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + #ifdef CHEWIN_DEBUG + logger.Log(LOG_CATEGORY_DEBUG, "Called: /datum/chewin_cooking/recipe_step/add_item/follow_step") + #endif + var/obj/item/container = tracker.holder_ref.resolve() + if(container) + if(usr.canUnEquip(added_item)) + usr.dropItemToGround(added_item) + added_item.forceMove(container) + else + added_item.forceMove(container) + return CHEWIN_SUCCESS diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce.dm new file mode 100644 index 000000000000..596611a73221 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce.dm @@ -0,0 +1,59 @@ +//A cooking step that involves using SPECIFICALLY Grown foods +/datum/chewin_cooking/recipe_step/add_produce + class=CHEWIN_ADD_PRODUCE + var/required_produce_type + var/base_potency + var/reagent_skip = FALSE + var/inherited_quality_modifier + + var/list/exclude_reagents = list() + +/datum/chewin_cooking/recipe_step/add_produce/New(var/obj/item/food/grown/produce, var/datum/chewin_cooking/recipe/our_recipe) + if(produce) + desc = "Add \a [produce] into the recipe." + required_produce_type = produce + group_identifier = produce + + var/obj/item/food/grown/grown = new produce + var/obj/item/seeds/plant_seed = grown.seed + base_potency = initial(plant_seed.potency) + qdel(grown) + else + CRASH("/datum/chewin_cooking/recipe_step/add_produce/New: [produce] not found. Exiting.") + ..(base_quality_award, our_recipe) + +/datum/chewin_cooking/recipe_step/add_produce/check_conditions_met(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + #ifdef CHEWIN_DEBUG + log_debug("Called add_produce/check_conditions_met for [added_item] against [required_produce_type]") + #endif + + if(!istype(added_item, /obj/item/food/grown)) + return CHEWIN_CHECK_INVALID + + var/obj/item/food/grown/added_produce = added_item + + if(added_produce.type == required_produce_type) + return CHEWIN_CHECK_VALID + + return CHEWIN_CHECK_INVALID + +/datum/chewin_cooking/recipe_step/add_produce/calculate_quality(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + var/obj/item/food/grown/added_produce = added_item + + var/potency_raw = round(base_quality_award + (added_produce.seed.potency - base_potency) * inherited_quality_modifier) + + return clamp_quality(potency_raw) + +/datum/chewin_cooking/recipe_step/add_produce/follow_step(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + #ifdef CHEWIN_DEBUG + log_debug("Called: /datum/chewin_cooking/recipe_step/add_produce/follow_step") + #endif + var/obj/item/container = tracker.holder_ref.resolve() + if(container) + if(usr.canUnEquip(added_item)) + usr.dropItemToGround(added_item) + added_item.forceMove(container) + else + added_item.forceMove(container) + return CHEWIN_SUCCESS diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce_choice.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce_choice.dm new file mode 100644 index 000000000000..1c0c3b9168f2 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_produce_choice.dm @@ -0,0 +1,63 @@ +//A cooking step that involves using SPECIFICALLY Grown foods +/datum/chewin_cooking/recipe_step/add_produce_choice + class=CHEWIN_ADD_PRODUCE_CHOICE + var/list/required_produce_types = list() + var/list/base_potencies = list() + var/reagent_skip = FALSE + var/inherited_quality_modifier + + var/list/exclude_reagents = list() + +/datum/chewin_cooking/recipe_step/add_produce_choice/New(list/choices = list(), var/datum/chewin_cooking/recipe/our_recipe) + if(!length(choices)) + CRASH("/datum/chewin_cooking/recipe_step/add_produce_choice/New: No list passed in. Exiting.") + + group_identifier = "" + required_produce_types = choices + for(var/obj/item/food/grown/produce as anything in choices) + if(produce) + group_identifier += produce + var/obj/item/food/grown/grown = new produce + var/obj/item/seeds/plant_seed = grown.seed + base_potencies |= produce + base_potencies[produce] = initial(plant_seed.potency) + qdel(grown) + else + CRASH("/datum/chewin_cooking/recipe_step/add_produce_choice/New: [produce] not found. Exiting.") + ..(base_quality_award, our_recipe) + +/datum/chewin_cooking/recipe_step/add_produce_choice/check_conditions_met(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + #ifdef CHEWIN_DEBUG + log_debug("Called add_produce_choice/check_conditions_met for [added_item] against [required_produce_type]") + #endif + + if(!istype(added_item, /obj/item/food/grown)) + return CHEWIN_CHECK_INVALID + + var/obj/item/food/grown/added_produce = added_item + + if(added_produce.type in required_produce_types) + return CHEWIN_CHECK_VALID + + return CHEWIN_CHECK_INVALID + +/datum/chewin_cooking/recipe_step/add_produce_choice/calculate_quality(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + var/obj/item/food/grown/added_produce = added_item + + var/potency_raw = round(base_quality_award + (added_produce.seed.potency - base_potencies[added_produce.type]) * inherited_quality_modifier * required_produce_types[added_produce.type]) + + return clamp_quality(potency_raw) + +/datum/chewin_cooking/recipe_step/add_produce_choice/follow_step(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + #ifdef CHEWIN_DEBUG + log_debug("Called: /datum/chewin_cooking/recipe_step/add_produce_choice/follow_step") + #endif + var/obj/item/container = tracker.holder_ref.resolve() + if(container) + if(usr.canUnEquip(added_item)) + usr.dropItemToGround(added_item) + added_item.forceMove(container) + else + added_item.forceMove(container) + return CHEWIN_SUCCESS diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent.dm new file mode 100644 index 000000000000..f4f1d531ef4a --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent.dm @@ -0,0 +1,82 @@ +//A cooking step that involves adding a reagent to the food. +/datum/chewin_cooking/recipe_step/add_reagent + class=CHEWIN_ADD_REAGENT + auto_complete_enabled = TRUE + var/expected_total + var/required_reagent_id + var/required_reagent_amount + var/remain_percent = 1 //What percentage of the reagent ends up in the product + +//reagent_id: The id of the required reagent to be added, E.G. 'salt'. +//amount: The amount of the required reagent that needs to be added. +//base_quality_award: The quality awarded by following this step. +//our_recipe: The parent recipe object, +/datum/chewin_cooking/recipe_step/add_reagent/New(var/reagent_id, var/amount, var/datum/chewin_cooking/recipe/our_recipe) + + var/datum/reagent/global_reagent = GLOB.chemical_reagents_list[reagent_id] + if(global_reagent) + desc = "Add [amount] unit[amount>1 ? "s" : ""] of [global_reagent.name]." + + required_reagent_id = reagent_id + group_identifier = reagent_id + + required_reagent_amount = amount + else + CRASH("/datum/chewin_cooking/recipe_step/add/reagent/New(): Reagent [reagent_id] not found. Recipe: [our_recipe]") + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/add_reagent/check_conditions_met(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/container = tracker.holder_ref.resolve() + + + if((container.reagents.total_volume + required_reagent_amount - container.reagents.get_reagent_amount(required_reagent_id)) > container.reagents.maximum_volume) + return CHEWIN_CHECK_FULL + + if(!istype(used_item, /obj/item/reagent_containers)) + return CHEWIN_CHECK_INVALID + if(!(used_item.reagents?.flags & OPENCONTAINER)) + return CHEWIN_CHECK_INVALID + + var/obj/item/reagent_containers/our_item = used_item + if(our_item.amount_per_transfer_from_this <= 0) + return CHEWIN_CHECK_INVALID + if(our_item.reagents.total_volume == 0) + return CHEWIN_CHECK_INVALID + + return CHEWIN_CHECK_VALID + +//Reagents are calculated in two areas. Here and /datum/chewin_cooking/recipe/proc/calculate_reagent_quality +/datum/chewin_cooking/recipe_step/add_reagent/calculate_quality(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/container = tracker.holder_ref.resolve() + var/data = container.reagents.get_data(required_reagent_id) + var/cooked_quality = 0 + if(data && istype(data, /list) && data["FOOD_QUALITY"]) + cooked_quality = data["FOOD_QUALITY"] + return cooked_quality + + +/datum/chewin_cooking/recipe_step/add_reagent/follow_step(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/our_item = used_item + var/obj/item/container = tracker.holder_ref.resolve() + + var/trans = our_item.reagents.trans_to(container, our_item.amount_per_transfer_from_this) + + playsound(usr,'monkestation/sound/chemistry/transfer/beakerpour_0-10-1.ogg',50,1) + to_chat(usr, span_notice("You transfer [trans] units to \the [container].")) + + return CHEWIN_SUCCESS + +/datum/chewin_cooking/recipe_step/add_reagent/is_complete(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/our_item = used_item + var/obj/item/container = tracker.holder_ref.resolve() + + var/incoming_amount = max(0, min(our_item.amount_per_transfer_from_this, our_item.reagents.total_volume, (container.reagents.maximum_volume - container.reagents.total_volume))) + + var/incoming_valid_amount = incoming_amount + + var/resulting_total = container.reagents.get_reagent_amount(required_reagent_id) + incoming_valid_amount + if(resulting_total >= required_reagent_amount) + return TRUE + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent_choice.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent_choice.dm new file mode 100644 index 000000000000..7444ba8afb35 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/add_reagent_choice.dm @@ -0,0 +1,95 @@ +//A cooking step that involves adding a reagent to the food. +/datum/chewin_cooking/recipe_step/add_reagent_choice + class=CHEWIN_ADD_REAGENT_CHOICE + auto_complete_enabled = TRUE + var/expected_total + var/list/reagent_ids + var/required_reagent_amount + var/remain_percent = 1 //What percentage of the reagent ends up in the product + +//reagent_ids: list of reagent_id = quality from step. +//amount: The amount of the required reagent that needs to be added. +//base_quality_award: The quality awarded by following this step. +//our_recipe: The parent recipe object, +/datum/chewin_cooking/recipe_step/add_reagent_choice/New(var/list/reagent_ids = list(), var/amount, var/datum/chewin_cooking/recipe/our_recipe) + + if(!length(reagent_ids)) + CRASH("/datum/chewin_cooking/recipe_step/add/reagent/New(): No Reagent List Given") + + group_identifier = "" + for(var/datum/reagent/reagent as anything in reagent_ids) + var/datum/reagent/global_reagent = GLOB.chemical_reagents_list[reagent] + if(global_reagent) + desc = "Add [amount] unit[amount>1 ? "s" : ""] of [global_reagent.name]." + + group_identifier += "[initial(reagent.name)] " + else + CRASH("/datum/chewin_cooking/recipe_step/add/reagent/New(): Reagent [reagent] not found. Recipe: [our_recipe]") + + required_reagent_amount = amount + src.reagent_ids = reagent_ids + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/add_reagent_choice/check_conditions_met(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/container = tracker.holder_ref.resolve() + + + var/return_type = CHEWIN_CHECK_VALID + for(var/datum/reagent/required_reagent_id as anything in reagent_ids) + return_type = CHEWIN_CHECK_VALID + if((container.reagents.total_volume + required_reagent_amount - container.reagents.get_reagent_amount(required_reagent_id)) > container.reagents.maximum_volume) + return_type = CHEWIN_CHECK_FULL + + if(!istype(used_item, /obj/item/reagent_containers)) + return_type = CHEWIN_CHECK_INVALID + if(!(used_item.reagents?.flags & OPENCONTAINER)) + return_type = CHEWIN_CHECK_INVALID + + var/obj/item/reagent_containers/our_item = used_item + if(our_item.amount_per_transfer_from_this <= 0) + return_type = CHEWIN_CHECK_INVALID + if(our_item.reagents.total_volume == 0) + return_type = CHEWIN_CHECK_INVALID + + if(return_type == CHEWIN_CHECK_VALID) + return return_type + + return return_type + +//Reagents are calculated in two areas. Here and /datum/chewin_cooking/recipe/proc/calculate_reagent_quality +/datum/chewin_cooking/recipe_step/add_reagent_choice/calculate_quality(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/container = tracker.holder_ref.resolve() + for(var/datum/reagent/reagent as anything in container.reagents.reagent_list) + if(!(reagent.type in reagent_ids)) + continue + if(reagent.volume < required_reagent_amount) + continue + return reagent_ids[reagent.type] + + +/datum/chewin_cooking/recipe_step/add_reagent_choice/follow_step(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/our_item = used_item + var/obj/item/container = tracker.holder_ref.resolve() + + var/trans = our_item.reagents.trans_to(container, our_item.amount_per_transfer_from_this) + + playsound(usr,'monkestation/sound/chemistry/transfer/beakerpour_0-10-1.ogg',50,1) + to_chat(usr, span_notice("You transfer [trans] units to \the [container].")) + + return CHEWIN_SUCCESS + +/datum/chewin_cooking/recipe_step/add_reagent_choice/is_complete(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/our_item = used_item + var/obj/item/container = tracker.holder_ref.resolve() + + var/incoming_amount = max(0, min(our_item.amount_per_transfer_from_this, our_item.reagents.total_volume, (container.reagents.maximum_volume - container.reagents.total_volume))) + + var/incoming_valid_amount = incoming_amount + + for(var/datum/reagent/required_reagent_id as anything in reagent_ids) + var/resulting_total = container.reagents.get_reagent_amount(required_reagent_id) + incoming_valid_amount + if(resulting_total >= required_reagent_amount) + return TRUE + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/recipe_start.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/recipe_start.dm new file mode 100644 index 000000000000..5e6a26290337 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/recipe_start.dm @@ -0,0 +1,11 @@ + +//The default starting step. +//Doesn't do anything, just holds the item. + +/datum/chewin_cooking/recipe_step/start + class = CHEWIN_START + var/required_container + +/datum/chewin_cooking/recipe_step/start/New(var/container) + required_container = container + diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_fryer.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_fryer.dm new file mode 100644 index 000000000000..fedcbedd7287 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_fryer.dm @@ -0,0 +1,62 @@ +//A cooking step that involves adding a reagent to the food. +/datum/chewin_cooking/recipe_step/use_fryer + class=CHEWIN_USE_FRYER + auto_complete_enabled = TRUE + var/time + var/heat + +//set_heat: The temperature the oven must bake at. +//set_time: How long something must be baked in the overn +//our_recipe: The parent recipe object +/datum/chewin_cooking/recipe_step/use_fryer/New(var/set_heat, var/set_time, var/datum/chewin_cooking/recipe/our_recipe) + + + + time = set_time + heat = set_heat + + desc = "Cook in an oven set to [heat] for [DisplayTimeText(time)]." + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/use_fryer/check_conditions_met(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + if(!istype(used_item, /obj/machinery/deepfryer)) + return CHEWIN_CHECK_INVALID + + return CHEWIN_CHECK_VALID + +//Reagents are calculated prior to object creation +/datum/chewin_cooking/recipe_step/use_fryer/calculate_quality(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + var/bad_cooking = 0 + for (var/key in container.fryer_data) + if (heat != key) + bad_cooking += container.fryer_data[key] + + bad_cooking = round(bad_cooking/(5 SECONDS)) + + var/good_cooking = round(time/3 SECONDS) - bad_cooking + + return clamp_quality(good_cooking) + + +/datum/chewin_cooking/recipe_step/use_fryer/follow_step(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + return CHEWIN_SUCCESS + +/datum/chewin_cooking/recipe_step/use_fryer/is_complete(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + if(container.fryer_data[heat] >= time) + #ifdef CHEWIN_DEBUG + log_debug("use_fryer/is_complete() Returned True; comparing [heat]: [container.oven_data[heat]] to [time]") + #endif + return TRUE + + #ifdef CHEWIN_DEBUG + log_debug("use_fryer/is_complete() Returned False; comparing [heat]: [container.oven_data[heat]] to [time]") + #endif + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_grill.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_grill.dm new file mode 100644 index 000000000000..87b3ff8308e4 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_grill.dm @@ -0,0 +1,63 @@ +//A cooking step that involves adding a reagent to the food. +/datum/chewin_cooking/recipe_step/use_grill + class=CHEWIN_USE_GRILL + auto_complete_enabled = TRUE + var/time + var/heat + +//reagent_id: The id of the required reagent to be added, E.G. 'salt'. +//amount: The amount of the required reagent that needs to be added. +//base_quality_award: The quality awarded by following this step. +//our_recipe: The parent recipe object, +/datum/chewin_cooking/recipe_step/use_grill/New(var/set_heat, var/set_time, var/datum/chewin_cooking/recipe/our_recipe) + + + + time = set_time + heat = set_heat + + desc = "Cook on a grill set to [heat] for [DisplayTimeText(time)]." + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/use_grill/check_conditions_met(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + if(!istype(used_item, /obj/machinery/grill)) + return CHEWIN_CHECK_INVALID + + return CHEWIN_CHECK_VALID + +//Reagents are calculated prior to object creation +/datum/chewin_cooking/recipe_step/use_grill/calculate_quality(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + var/bad_cooking = 0 + for (var/key in container.grill_data) + if (heat != key) + bad_cooking += container.grill_data[key] + + bad_cooking = round(bad_cooking/(5 SECONDS)) + + var/good_cooking = round(time/3 SECONDS) - bad_cooking + + return clamp_quality(good_cooking) + + +/datum/chewin_cooking/recipe_step/use_grill/follow_step(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + return CHEWIN_SUCCESS + +/datum/chewin_cooking/recipe_step/use_grill/is_complete(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + if(container.grill_data[heat] >= time) + #ifdef CHEWIN_DEBUG + log_debug("use_grill/is_complete() Returned True; comparing [heat]: [container.grill_data[heat]] to [time]") + #endif + return TRUE + + #ifdef CHEWIN_DEBUG + log_debug("use_grill/is_complete() Returned False; comparing [heat]: [container.grill_data[heat]] to [time]") + #endif + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_item.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_item.dm new file mode 100644 index 000000000000..17e3e4f86d96 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_item.dm @@ -0,0 +1,42 @@ +//A cooking step that involves using an item on the food. +/datum/chewin_cooking/recipe_step/use_item + class=CHEWIN_USE_ITEM + var/required_item_type + var/exact_path = FALSE //Tests if the item has to be the EXACT ITEM PATH, or just a child of the item path. + +//item_type: The type path of the object we are looking for. +//base_quality_award: The quality awarded by following this step. +//our_recipe: The parent recipe object +/datum/chewin_cooking/recipe_step/use_item/New(var/item_type, var/datum/chewin_cooking/recipe/our_recipe) + #ifdef CHEWIN_DEBUG + if(!ispath(item_type)) + log_debug("/datum/chewin_cooking/recipe_step/add_item/New(): item [item_type] is not a valid path") + #endif + + var/example_item = new item_type() + if(example_item) + desc = "Apply \a [example_item]." + + required_item_type = item_type + group_identifier = item_type + + QDEL_NULL(example_item) + #ifdef CHEWIN_DEBUG + else + log_debug("/datum/chewin_cooking/recipe_step/add_item/New(): item [item_type] couldn't be created.") + #endif + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/use_item/check_conditions_met(var/obj/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + if(src.exact_path) + if(added_item.type == required_item_type) + return CHEWIN_CHECK_VALID + else + if(istype(added_item,required_item_type)) + return CHEWIN_CHECK_VALID + return CHEWIN_CHECK_INVALID + +//Think about a way to make this more intuitive? +/datum/chewin_cooking/recipe_step/use_item/calculate_quality(var/obj/added_item) + return clamp_quality(0) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_oven.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_oven.dm new file mode 100644 index 000000000000..3f4981cfd10d --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_oven.dm @@ -0,0 +1,62 @@ +//A cooking step that involves adding a reagent to the food. +/datum/chewin_cooking/recipe_step/use_oven + class=CHEWIN_USE_OVEN + auto_complete_enabled = TRUE + var/time + var/heat + +//set_heat: The temperature the oven must bake at. +//set_time: How long something must be baked in the overn +//our_recipe: The parent recipe object +/datum/chewin_cooking/recipe_step/use_oven/New(var/set_heat, var/set_time, var/datum/chewin_cooking/recipe/our_recipe) + + + + time = set_time + heat = set_heat + + desc = "Cook in an oven set to [heat] for [DisplayTimeText(time)]." + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/use_oven/check_conditions_met(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + if(!istype(used_item, /obj/machinery/oven)) + return CHEWIN_CHECK_INVALID + + return CHEWIN_CHECK_VALID + +//Reagents are calculated prior to object creation +/datum/chewin_cooking/recipe_step/use_oven/calculate_quality(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + var/bad_cooking = 0 + for (var/key in container.oven_data) + if (heat != key) + bad_cooking += container.oven_data[key] + + bad_cooking = round(bad_cooking/(5 SECONDS)) + + var/good_cooking = round(time/3 SECONDS) - bad_cooking + + return clamp_quality(good_cooking) + + +/datum/chewin_cooking/recipe_step/use_oven/follow_step(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + return CHEWIN_SUCCESS + +/datum/chewin_cooking/recipe_step/use_oven/is_complete(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + if(container.oven_data[heat] >= time) + #ifdef CHEWIN_DEBUG + log_debug("use_oven/is_complete() Returned True; comparing [heat]: [container.oven_data[heat]] to [time]") + #endif + return TRUE + + #ifdef CHEWIN_DEBUG + log_debug("use_oven/is_complete() Returned False; comparing [heat]: [container.oven_data[heat]] to [time]") + #endif + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_stove.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_stove.dm new file mode 100644 index 000000000000..1cd4317bbbbb --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_stove.dm @@ -0,0 +1,62 @@ +//A cooking step that involves adding a reagent to the food. +/datum/chewin_cooking/recipe_step/use_stove + class=CHEWIN_USE_STOVE + auto_complete_enabled = TRUE + var/time + var/heat + +//set_heat: The temperature the stove must cook at. +//set_time: How long something must be cook in the stove +//our_recipe: The parent recipe object +/datum/chewin_cooking/recipe_step/use_stove/New(var/set_heat, var/set_time, var/datum/chewin_cooking/recipe/our_recipe) + + + + time = set_time + heat = set_heat + + desc = "Cook on a stove set to [heat] for [DisplayTimeText(time)]." + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/use_stove/check_conditions_met(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + if(!used_item.GetComponent(/datum/component/stove)) + return CHEWIN_CHECK_INVALID + + return CHEWIN_CHECK_VALID + +//Reagents are calculated prior to object creation +/datum/chewin_cooking/recipe_step/use_stove/calculate_quality(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + var/bad_cooking = 0 + for (var/key in container.stove_data) + if (heat != key) + bad_cooking += container.stove_data[key] + + bad_cooking = round(bad_cooking / (5 SECONDS)) + + var/good_cooking = round(time / (3 SECONDS)) - bad_cooking + + return clamp_quality(good_cooking) + + +/datum/chewin_cooking/recipe_step/use_stove/follow_step(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + return CHEWIN_SUCCESS + +/datum/chewin_cooking/recipe_step/use_stove/is_complete(var/obj/used_item, var/datum/chewin_cooking/recipe_tracker/tracker) + + var/obj/item/reagent_containers/cooking_container/container = tracker.holder_ref.resolve() + + if(container.stove_data[heat] >= time) + #ifdef CHEWIN_DEBUG + log_debug("use_stove/is_complete() Returned True; comparing [heat]: [container.stove_data[heat]] to [time]") + #endif + return TRUE + + #ifdef CHEWIN_DEBUG + log_debug("use_stove/is_complete() Returned False; comparing [heat]: [container.stove_data[heat]] to [time]") + #endif + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_tool.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_tool.dm new file mode 100644 index 000000000000..71ac14c44c7c --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipe_steps/use_tool.dm @@ -0,0 +1,40 @@ +//A cooking step that involves using an item on the food. +/datum/chewin_cooking/recipe_step/use_tool + class=CHEWIN_USE_ITEM + var/tool_type + var/tool_quality + var/inherited_quality_modifier = 0.1 + +//item_type: The type path of the object we are looking for. +//base_quality_award: The quality awarded by following this step. +//our_recipe: The parent recipe object +/datum/chewin_cooking/recipe_step/use_tool/New(var/type, var/quality, var/datum/chewin_cooking/recipe/our_recipe) + + desc = "Use \a [type] tool of quality [quality] or higher." + + tool_type = type + tool_quality = quality + + ..(our_recipe) + + +/datum/chewin_cooking/recipe_step/use_tool/check_conditions_met(var/obj/item/added_item, var/datum/chewin_cooking/recipe_tracker/tracker) + if(!initial(added_item.tool_behaviour)) + return CHEWIN_CHECK_INVALID + + return CHEWIN_CHECK_VALID + +/datum/chewin_cooking/recipe_step/use_tool/follow_step(var/obj/added_item, var/obj/item/reagent_containers/cooking_container/container) + var/obj/item/our_tool = added_item + to_chat(usr, span_notice("You use the [added_item] according to the recipe.")) + + if(our_tool.toolspeed < tool_quality) + return to_chat(usr, span_notice("The low quality of the tool hurts the quality of the dish.")) + + return CHEWIN_SUCCESS + +//Think about a way to make this more intuitive? +/datum/chewin_cooking/recipe_step/use_tool/calculate_quality(var/obj/added_item) + var/obj/item/our_tool = added_item + var/raw_quality = (our_tool.toolspeed - tool_quality) * inherited_quality_modifier + return clamp_quality(raw_quality) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/black_eggs.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/black_eggs.dm new file mode 100644 index 000000000000..f10d0cda4fb6 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/black_eggs.dm @@ -0,0 +1,59 @@ +/datum/chewin_cooking/recipe/black_eggs + cooking_container = PAN + product_type = /obj/item/food/black_eggs + recipe_guide = "Crack eggs into a pan, add some vinegar and blood cook for 15 seconds on low." + step_builder = list( + + CHEWIN_BEGIN_OPTION_CHAIN, + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/butter, base=10, reagent_skip=TRUE), + list(CHEWIN_USE_STOVE_OPTIONAL, J_LO, 10 SECONDS, finish_text = "The butter melts in the pan!"), + CHEWIN_END_OPTION_CHAIN, + + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + + list(CHEWIN_ADD_REAGENT, /datum/reagent/blood, 5, base=3), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/vinegar, 5, base=3), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/blood, 15, remain_percent = 0.2 , base=3, prod_desc="Extra Bloody!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 5, remain_percent = 0.2, base=6, prod_desc="Extra Spicy!"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_LO, 15 SECONDS , finish_text = "You can smell scrambled eggs!") + + ) + +/datum/chewin_cooking/recipe/black_eggs_five + name = "Black Scrambled Eggs (5 Servings)" + cooking_container = PAN + product_type = /obj/item/food/black_eggs + product_count = 5 + recipe_guide = "Crack eggs into a pan, add some vinegar and blood cook for 25 seconds on low." + step_builder = list( + + CHEWIN_BEGIN_OPTION_CHAIN, + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/butter, base=10, reagent_skip=TRUE), + list(CHEWIN_USE_STOVE_OPTIONAL, J_LO, 10 SECONDS, finish_text = "The butter melts in the pan!"), + CHEWIN_END_OPTION_CHAIN, + + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + + list(CHEWIN_ADD_REAGENT, /datum/reagent/blood, 15, base=4), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/vinegar, 15, base=5), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/blood, 30, remain_percent = 0.2 , base=5, prod_desc="Extra Bloody!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 15, remain_percent = 0.2, base=6, prod_desc="Extra Spicy!"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_LO, 25 SECONDS , finish_text = "You can smell scrambled eggs!") + + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/converted_recipes.md b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/converted_recipes.md new file mode 100644 index 000000000000..22f38cca6d52 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/converted_recipes.md @@ -0,0 +1,8 @@ +This is just a file to track foods that has a chewin counterpart + /obj/item/food/fries + /obj/item/food/meat/steak/plain + /obj/item/food/fried_blood_sausage + /obj/item/food/salad/katsu_curry + /obj/item/food/bread/plain + /obj/item/food/black_eggs + /obj/item/food/lizard_dumplings diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/documentation.md b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/documentation.md new file mode 100644 index 000000000000..23a3a08776e4 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/documentation.md @@ -0,0 +1,117 @@ +# CHEWIN Step Builder Commands + +All steps in the step builder have the following format: + +## list(< CHEWIN_STEP_CLASS><_OPTIONAL>, < REQUIRED_ARGS>, < CUSTOM_ARGS>=value) + + +### `` +The name of any one of the recipe step types, custom or otherwise. Valid options are: + +- **CHEWIN_ADD_ITEM** + - Adds an item to the recipe. The object is inserted in the container. The product inherits the item's quality and reagents if able. + - **Required Arguments:** + - `type_path`: The type path of the item being added. + - **Example:** + - `list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice)` + +- **CHEWIN_ADD_REAGENT** + - Adds a reagent to the recipe. The resulting reagent is stored in the container's reagent datum. The product inherits the reagents added if able. It's possible to sneak poison into food this way. + - **Required Arguments:** + - `reagent_id`: The type path of the reagent being added. + - `amount`: The amount of units the ingredient requires. + - **Example:** + - `list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 5)` + +- **CHEWIN_ADD_PRODUCE** + - Adds a grown item to the recipe. The item is inserted in the container. The product inherits reagents if able, and its quality scales with the plant's potency. + - **Required Arguments:** + - `plantname`: The path to the produce being added. + - **Example:** + - `list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/banana)` + +- **CHEWIN_USE_TOOL** + - Uses a tool on the item. Going far and beyond the quality of the tool increases the quality of the product. + - **Required Arguments:** + - `tool_quality`: The id of the reagent being added. + - `difficulty`: The minimum tool quality of the reagent not implemented at this time as skills are still a hot topic. + - **Example:** + - `list(CHEWIN_USE_TOOL, QUALITY_CUTTING, 5)` + +- **CHEWIN_USE_ITEM** + - Uses an item on the recipe. The object is not consumed. + - **Required Arguments:** + - `type_path`: The type path of the item being added. + - **Example:** + - `list(CHEWIN_USE_ITEM, /obj/item/rollingpin)` + *Use a rolling pin on the container.* + +- **CHEWIN_USE_STOVE** + - Cook the cooking container on a stove. Keep it on too long, it burns. + - **Required Arguments:** + - `temperature`: The required temperature to cook the food at. + - *Temperatures are macro'd by: `J_LO`, `J_MED`, `J_HI`.* + - `time`: The amount of time, in seconds, to keep the food on the stove. + - **Example:** + - `list(CHEWIN_USE_STOVE, J_LO, 40)` + *Cook on a stove set to "Low" for 40 seconds.* + +### `<_OPTIONAL>` +The tag `_OPTIONAL` can be tacked onto any command to make it an optional step not required to finish the recipe. + +- **Example:** + - `list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/breadslice)` + +### `` +The required arguments for a specific class of step to function. They are not labeled and must be in order. See above for which classes of step have which required arguments. + +### `` +All custom arguments are declared in the format `key=value`. They are used to quickly modify a given step in a recipe. + +- **Example:** + - `list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice, desc="a custom description")` + +#### Valid options are: +- **desc** + - Adds a custom description to the recipe step, when read from a cooking book. + - **Example:** `desc="a custom description"` + +- **base** + - Defines the base quality for a recipe step. This will become the LOWEST quality following a step can award. For some step classes, this will simply be the default awarded. If not defined, there is no minimum quality a step can add. + - **Example:** `base=4` + +- **max** + - Defines the maximum quality for a recipe step. This will become the HIGHEST quality following a step can award. If not defined, there is no maximum quality a step can add. + - **Example:** `max=10` + +- **result_desc** + - Adds a custom description to the result of the recipe step. This will be read off on the item product. + - **Example:** `result_desc="A Slice of Bread is in the sandwich."` + +- **exact** + - **CHEWIN_ADD_ITEM or CHEWIN_USE_ITEM ONLY:** + - Determines if the steps require an exact type path, or if a child will satisfy the requirements. If the type path is also preferable. + - **Example:** `exact=TRUE` + +- **qmod** + - **CHEWIN_ADD_ITEM, CHEWIN_USE_TOOL ONLY:** + - Modifier to adjust the `inherited_quality_modifier` on an `add_item` recipe step. + - **Example:** `qmod=0.5` + *Only 50% of the added item's quality will be inherited.* + +- **remain_percent** + - **CHEWIN_ADD_REAGENT ONLY:** + - Determines the percentage of a reagent that remains in the cooking of an item. IE- if you cook a steak with wine, you can make it so the wine doesn't wind up in the resulting food. + - **Example:** `remain_percent=0.1` + *Only 10% of the units expected to be added will apply to the resulting food injection.* + +- **reagent_skip** + - **CHEWIN_ADD_ITEM, CHEWIN_ADD_PRODUCE ONLY:** + - Outright excludes all reagents from the added item/produce from showing up in the product. + - **Example:** `reagent_skip=TRUE` + +- **exclude_reagents** + - **CHEWIN_ADD_ITEM, CHEWIN_ADD_PRODUCE ONLY:** + - Excludes the presence of a reagent in an item from the resulting meal. + - **Example:** `exclude_reagents=list(/datum/reagent/toxin/carpotoxin)` + *Removes the presence of Carpotoxin from the item.* diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/example_recipe.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/example_recipe.dm new file mode 100644 index 000000000000..61e029215592 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/example_recipe.dm @@ -0,0 +1,170 @@ +/* +========================================================= +CHEWIN STEP_BUILDER COMMANDS: +All steps in the step builder have the following format: +list(<_OPTIONAL>, , =value) + + The name any one of the recipe step types, custom or otherwise. + Valid options are: + CHEWIN_ADD_ITEM + Add an item to the recipe. The object is inserted in the container. + The product inherits the item's quality and reagents if able. + : + type_path - the type path of the item being added. + Example: list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice) + + CHEWIN_ADD_REAGENT + Add a reagent to the recipe. The resulting reagent is stored in the container's reagent datum. + The product inherits the reagents added if able. It's possible to sneak poison into food this way. + : + reagent_id - the typepath of the reagent being added + amount - The amount of units the ingredient requires + Example: list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 5) + + CHEWIN_ADD_PRODUCE + Add a grown item to the recipe. The item is inserted in the container. + The product inherits reagents if able, and its quality scales with the plant's potency. + : + plantname - the path to the produce being added. + Example: list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/banana) + + CHEWIN_USE_TOOL + Uses a tool on the item. Going far and beyond the quality of the tool increases the quality of the product. + : + tool_quality - the id of the reagent being added + difficulty - The minimum tool quality of the reagent not implemented at this time as skills are still a hot topic + Example: list(CHEWIN_USE_TOOL, QUALITY_CUTTING, 5) + + CHEWIN_USE_ITEM + Uses an item on the recipe. The object is not consumed. + : + type_path - the type path of the item being added. + Example: list(CHEWIN_USE_ITEM, /obj/item/rollingpin) #Use a rolling pin on the container + + CHEWIN_USE_STOVE + Cook the cooking container on a stove. Keep it on too long, it burns. + : + temperature - the required temperature to cook the food at. + (Temperatures are macro'd by: J_LO, J_MED, J_HI) + time - the amount of time, in seconds, to keep the food on the stove. + Example: list(CHEWIN_USE_STOVE, J_LO, 40) #Cook on a stove set to "Low" for 40 seconds. + +<_OPTIONAL> + The tag _OPTIONAL can be tacked onto any command to make it an optional step not required to finish the recipe. + Example: list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/breadslice) + + + The required arguments for a specific class of step to function. They are not labeled and must be in order. + See above for which classes of step have which required arguments. + + + All custom arguments are declared in the format key=value. They are used to quickly modify a given step in a recipe. + Example: list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice, desc="a custom description") + Valid options are: + desc + Adds a custom description to the recipe step, when read from a cooking book. + Example: desc="a custom description" + + base + Defines the base quality for a recipe step. This will become the LOWEST quality following a step can award. + For some step classes, this will simply be the default awarded. + If not defined, there is no minimum quality a step can add. + Example: base=4 + + max + Defines the maximum quality for a recipe step. This will become the HIGHEST quality following a step can award. + If not defined, there is no maximum quality a step can add. + Example: max=10 + + result_desc + Adds a custom description to the result of the recipe step. This will be read off on the item product. + Example: result_desc="A Slice of Bread is in the sandwich." + + exact + CHEWIN_ADD_ITEM or CHEWIN_USE_ITEM ONLY: + Determines if the steps require an exact type path, or if a child will satisfy the requirements. + of the type path is also preferable. + Example: exact=TRUE + + qmod + CHEWIN_ADD_ITEM, CHEWIN_USE_TOOL ONLY: + modifier to adjust the inherited_quality_modifier on an add_item recipe step. + Example: qmod=0.5 //only 50% of the added item's quality will be inherited. + remain_percent + CHEWIN_ADD_REAGENT ONLY: + Determines the percentage of a reagent that remains in the cooking of an item. + IE- if you cook a steak with wine, you can make it so the wine doesn't wind up in the resulting food. + Example: remain_percent=0.1 //Only 10% of the units expected to be added will apply to the resulting food injection. + + reagent_skip + CHEWIN_ADD_ITEM, CHEWIN_ADD_PRODUCE ONLY: + Outright excludes all reagents from the added item/produce from showing up in the product. + Example: reagent_skip=TRUE + + exclude_reagents + CHEWIN_ADD_ITEM, CHEWIN_ADD_PRODUCE ONLY: + Excludes the presence of a reagent in an item from the resulting meal. + Example: exclude_reagents=list(/datum/reagent/toxin/carpotoxin) //Removes the presence of Carpotoxin from the item. + finish_text + when the step finishes a visible message will be sent + +========================================================= +*/ + +//Example Recipes +/datum/chewin_cooking/recipe/steak_stove + + //Name of the recipe. If not defined, it will just use the name of the product_type + name="Stove-Top cooked Steak" + + //The recipe will be cooked on a pan + cooking_container = PAN + + //The product of the recipe will be a steak. + product_type = /obj/item/food/meat/steak/plain + + //The product will have it's initial reagents wiped, prior to the recipe adding in reagents of its own. + replace_reagents = TRUE + + step_builder = list( + + //Butter your pan by adding a block of butter (no slices yet), and then melting it. Adding the butter unlocks the option to melt it on the stove. + CHEWIN_BEGIN_OPTION_CHAIN, + //base - the lowest amount of quality following this step can award. + //reagent_skip - Exclude the added item's reagents from being included the product + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/butter, base=10, reagent_skip=TRUE), + + //Melt the butter into the pan by cooking it on a stove set to Low for 10 seconds + list(CHEWIN_USE_STOVE_OPTIONAL, J_LO, 10 SECONDS, finish_text = "The butter melts in the pan!"), + CHEWIN_END_OPTION_CHAIN, + + //A steak is needed to start the meal. + //qmod- Half of the food quality of the parent will be considered. + //exclude_reagents- Carpotoxin will be filtered out of the steak. + list(CHEWIN_ADD_ITEM, /obj/item/food/meat/slab, qmod=0.5, exclude_reagents=list(/datum/reagent/toxin/carpotoxin)), + + //Add some mushrooms to give it some zest. Only one kind is allowed! + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/mushroom/libertycap, qmod=0.2, reagent_skip=TRUE), + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/mushroom/reishi, qmod=0.4, reagent_skip=TRUE), + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/mushroom/amanita, qmod=0.4, reagent_skip=TRUE), + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/mushroom/plumphelmet, qmod=0.4, reagent_skip=TRUE), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + //Beat that meat to increase its quality + list(CHEWIN_USE_TOOL_OPTIONAL, TOOL_HAMMER, 15), + + //You can add up to 3 units of salt to increase the quality. Any more will negatively impact it. + //base- for CHEWIN_ADD_REAGENT, the amount that this step will award if followed perfectly. + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/salt, 3, base=3), + + //You can add capaicin or wine, but not both + //prod_desc- A description appended to the resulting product. + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 5, base=6, prod_desc="The steak was Spiced with chili powder."), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/ethanol/wine, 5, remain_percent=0.1 ,base=6, prod_desc="The steak was sauteed in wine"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + //Cook on a stove, at medium temperature, for 30 seconds + list(CHEWIN_USE_STOVE, J_MED, 30 SECONDS) + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/french_fries.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/french_fries.dm new file mode 100644 index 000000000000..b69c8ceaf86d --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/french_fries.dm @@ -0,0 +1,8 @@ +/datum/chewin_cooking/recipe/fries + cooking_container = DF_BASKET + product_type = /obj/item/food/fries + recipe_guide = "Put potato wedges in a fryer, fry for 30 seconds." + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/grown/potato/wedges, qmod=0.5), + list(CHEWIN_USE_FRYER, J_HI, 10 SECONDS , finish_text = "The fries look gold and crispy!") + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_blood_sausage.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_blood_sausage.dm new file mode 100644 index 000000000000..9d94934c6dac --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_blood_sausage.dm @@ -0,0 +1,56 @@ +/datum/chewin_cooking/recipe/fried_blood_sausage + cooking_container = PAN + product_type = /obj/item/food/fried_blood_sausage + recipe_guide = "Put blood sausages in a pan, cook for 30 seconds on medium." + step_builder = list( + + CHEWIN_BEGIN_OPTION_CHAIN, + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/butter, base=10, reagent_skip=TRUE), + list(CHEWIN_USE_STOVE_OPTIONAL, J_LO, 10 SECONDS, finish_text = "The butter melts in the pan!"), + CHEWIN_END_OPTION_CHAIN, + + list(CHEWIN_ADD_ITEM, /obj/item/food/raw_tiziran_sausage, qmod=0.5), + + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/korta_flour, 5, base=3), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/blood, 15, remain_percent = 0.2 , base=3, prod_desc="Extra Bloody!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/honey, 15, remain_percent = 0.2 , base=4, prod_desc="Extra Sweet!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 5, remain_percent = 0.2, base=6, prod_desc="Extra Spicy!"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_MED, 30 SECONDS , finish_text = "You can smell fried blood sausage!") + + ) + +/datum/chewin_cooking/recipe/fried_blood_sausage_five + name = "Fried Blood Sausages (5 Servings)" + cooking_container = PAN + product_type = /obj/item/food/fried_blood_sausage + food_category = CAT_BULK + product_count = 5 + recipe_guide = "Put five blood sausages in a pan, cook for 45 seconds on medium." + step_builder = list( + + CHEWIN_BEGIN_OPTION_CHAIN, + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/butter, base=10, reagent_skip=TRUE), + list(CHEWIN_USE_STOVE_OPTIONAL, J_LO, 10 SECONDS, finish_text = "The butter melts in the pan!"), + CHEWIN_END_OPTION_CHAIN, + + list(CHEWIN_ADD_ITEM, /obj/item/food/raw_tiziran_sausage, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/raw_tiziran_sausage, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/raw_tiziran_sausage, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/raw_tiziran_sausage, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/raw_tiziran_sausage, qmod=0.5), + + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/korta_flour, 20, base=3), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/blood, 30, remain_percent = 0.2 , base=3, prod_desc="Extra Bloody!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/honey, 30, remain_percent = 0.2 , base=4, prod_desc="Extra Sweet!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 10, remain_percent = 0.2, base=6, prod_desc="Extra Spicy!"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_MED, 56 SECONDS , finish_text = "You can smell fried blood sausages!") + + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_rice.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_rice.dm new file mode 100644 index 000000000000..bc3c2d2c35ae --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/fried_rice.dm @@ -0,0 +1,17 @@ +/datum/chewin_cooking/recipe/hurricane_rice + cooking_container = PAN + food_category = CAT_STOVETOP + product_type = /obj/item/food/salad/hurricane_rice + recipe_guide = "Add boiled rice to pan, crack an egg, add vegetables, cook for 15 seconds on high, add soysauce, cook for 5 seconds on high." + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/boiledrice, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/egg, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/onion_slice, qmod=0.5), + list(CHEWIN_ADD_ITEM_OPTIONAL, /obj/item/food/pineappleslice, qmod=0.5), + + list(CHEWIN_USE_STOVE, J_HI, 15 SECONDS , finish_text = "You can smell almost finished fried rice, just needs some seasoning!"), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/soysauce, 3, base=3), + list(CHEWIN_USE_STOVE, J_HI, 5 SECONDS , finish_text = "You can smell fried rice!"), + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/katsu_curry.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/katsu_curry.dm new file mode 100644 index 000000000000..3f69d1af3f4a --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/katsu_curry.dm @@ -0,0 +1,61 @@ +/datum/chewin_cooking/recipe/katsu + cooking_container = DF_BASKET + product_type = /obj/item/food/katsu_fillet + recipe_guide = "Put raw cutlets with some reispan bread slices in a fryer, fry for 20 seconds." + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/meat/rawcutlet, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice/reispan, qmod=0.5), + list(CHEWIN_USE_FRYER, J_HI, 20 SECONDS) + ) + +/datum/chewin_cooking/recipe/katsu_curry + name = "Katsu Curry" + cooking_container = BOWL + product_type = /obj/item/food/salad/katsu_curry + recipe_guide = "Melt some butter in a bowl, add some rice, curry sauce and katsu." + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/butter, qmod=0.5), + list(CHEWIN_USE_STOVE, J_LO, 10 SECONDS, finish_text = "The butter melts in the bowl!"), + + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/soysauce, 5, base=3), + + list(CHEWIN_ADD_ITEM, /obj/item/food/boiledrice, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/katsu_fillet, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/nutriment/soup/curry_sauce, 5, base=3), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/chili, qmod=0.2, reagent_skip=TRUE, prod_desc = "Extra spicy!", food_buff = /datum/status_effect/food/sweaty), + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/pineapple, qmod=0.2, reagent_skip=TRUE, prod_desc = "Mild and Sweet."), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_LO, 20 SECONDS), + ) + +/datum/chewin_cooking/recipe/katsu_curry_large + name = "Katsu Curry (5 Servings)" + cooking_container = POT + food_category = CAT_BULK + product_count = 5 + product_type = /obj/item/food/salad/katsu_curry + recipe_guide = "Melt some butter in a pot, add some rice, curry sauce and katsu, cook on low in the stove for 1 minute. Serves 5" + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/butter, qmod=0.5), + list(CHEWIN_USE_STOVE, J_LO, 10 SECONDS, finish_text = "The butter melts in the pot!"), + + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/soysauce, 15, base=3), + + list(CHEWIN_ADD_ITEM, /obj/item/food/boiledrice, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/boiledrice, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/boiledrice, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/katsu_fillet, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/katsu_fillet, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/katsu_fillet, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/nutriment/soup/curry_sauce, 25, base=3), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/chili, qmod=0.2, reagent_skip=TRUE, prod_desc = "Extra spicy!"), + list(CHEWIN_ADD_PRODUCE_OPTIONAL, /obj/item/food/grown/pineapple, qmod=0.2, reagent_skip=TRUE, prod_desc = "Mild and Sweet."), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_LO, 1 MINUTES), + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/kimchi.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/kimchi.dm new file mode 100644 index 000000000000..fbe196f189c1 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/kimchi.dm @@ -0,0 +1,90 @@ +/datum/chewin_cooking/recipe/kimchi + cooking_container = BOWL + product_type = /obj/item/food/kimchi + recipe_guide = "Mix Cabbage, Chili, and Salt in a bowl." + step_builder = list( + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 5, base=3), + ) + +/datum/chewin_cooking/recipe/kimchi_inferno + cooking_container = BOWL + product_type = /obj/item/food/inferno_kimchi + recipe_guide = "Mix Cabbage, Ghost Chili, and Salt in a bowl." + step_builder = list( + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/ghost_chili, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 5, base=3), + ) + +/datum/chewin_cooking/recipe/garlic_kimchi + cooking_container = BOWL + product_type = /obj/item/food/garlic_kimchi + recipe_guide = "Mix Cabbage, Garlic, Chili, and Salt in a bowl." + step_builder = list( + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/garlic, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 5, base=3), + ) + +/datum/chewin_cooking/recipe/kimchi_five + name = "Kimchi (5 Servings)" + cooking_container = POT + food_category = CAT_BULK + product_type = /obj/item/food/kimchi + product_count = 5 + recipe_guide = "Mix Cabbage, Chili, and Salt in a bowl." + step_builder = list( + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 20, base=3), + ) + +/datum/chewin_cooking/recipe/kimchi_inferno_five + name = "Inferno Kimchi (5 Servings)" + cooking_container = POT + food_category = CAT_BULK + product_count = 5 + product_type = /obj/item/food/inferno_kimchi + recipe_guide = "Mix Cabbage, Ghost Chili, and Salt in a bowl." + step_builder = list( + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/ghost_chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/ghost_chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/ghost_chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/ghost_chili, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 20, base=3), + ) + +/datum/chewin_cooking/recipe/garlic_kimchi_five + name = "Garlic Kimchi (5 Servings)" + cooking_container = POT + food_category = CAT_BULK + product_count = 5 + product_type = /obj/item/food/garlic_kimchi + recipe_guide = "Mix Cabbage, Garlic, Chili, and Salt in a bowl." + step_builder = list( + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/cabbage, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/chili, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/garlic, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/garlic, qmod=0.5), + list(CHEWIN_ADD_PRODUCE, /obj/item/food/grown/garlic, qmod=0.5), + list(CHEWIN_ADD_REAGENT, /datum/reagent/consumable/salt, 20, base=3), + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/lizard_dumplings.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/lizard_dumplings.dm new file mode 100644 index 000000000000..830c89594e41 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/lizard_dumplings.dm @@ -0,0 +1,48 @@ +/datum/chewin_cooking/recipe/lizard_dumplings + cooking_container = POT + product_type = /obj/item/food/lizard_dumplings + product_count = 3 + recipe_guide = "Put wrapped potatoes in a pot, steam for 30 seconds on medium." + step_builder = list( + list(CHEWIN_ADD_REAGENT, /datum/reagent/water, 15, base=3), + + list(CHEWIN_ADD_ITEM, /obj/item/food/grown/potato, qmod=0.5), + + list(CHEWIN_ADD_REAGENT_CHOICE, list(/datum/reagent/consumable/korta_flour = 2, /datum/reagent/consumable/flour = 0.5), 5, base=4), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/honey, 15, remain_percent = 0.2 , base=4, prod_desc="Extra Sweet!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 5, remain_percent = 0.2, base=6, prod_desc="Extra Spicy!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/soysauce, 5, remain_percent = 0.2, base=6, prod_desc="Salty!"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_MED, 30 SECONDS , finish_text = "You can smell fresh cooked dumplings!") + + ) + +/datum/chewin_cooking/recipe/lizard_dumplings_dozen + name = "Lizard Dumplings (12 Servings)" + cooking_container = POT + product_type = /obj/item/food/lizard_dumplings + food_category = CAT_BULK + product_count = 12 + recipe_guide = "Put wrapped potatoes in a pot, steam for 45 seconds on medium." + step_builder = list( + list(CHEWIN_ADD_REAGENT, /datum/reagent/water, 25, base=3), + + list(CHEWIN_ADD_ITEM, /obj/item/food/grown/potato, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/grown/potato, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/grown/potato, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/grown/potato, qmod=0.5), + + list(CHEWIN_ADD_REAGENT_CHOICE, list(/datum/reagent/consumable/korta_flour = 2, /datum/reagent/consumable/flour = 0.5), 15, base=3), + + CHEWIN_BEGIN_EXCLUSIVE_OPTIONS, + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/honey, 15, remain_percent = 0.2 , base=4, prod_desc="Extra Sweet!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/capsaicin, 10, remain_percent = 0.2, base=6, prod_desc="Extra Spicy!"), + list(CHEWIN_ADD_REAGENT_OPTIONAL, /datum/reagent/consumable/soysauce, 10, remain_percent = 0.2, base=6, prod_desc="Salty!"), + CHEWIN_END_EXCLUSIVE_OPTIONS, + + list(CHEWIN_USE_STOVE, J_MED, 45 SECONDS , finish_text = "You can smell fresh cooked dumplings!") + + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/oven_bread.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/oven_bread.dm new file mode 100644 index 000000000000..86a191ac061b --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/oven_bread.dm @@ -0,0 +1,9 @@ +//this is a testing recipe these recipes are for actual multistep things +/datum/chewin_cooking/recipe/bread + cooking_container = OVEN + product_type = /obj/item/food/bread/plain + recipe_guide = "Put dough in an oven, bake for 30 seconds on medium." + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/dough, qmod=0.5), + list(CHEWIN_USE_OVEN, J_LO, 30 SECONDS, , finish_text = "The smell of baked bread oozes out!") + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/recipe_crafting_helper_generator.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/recipe_crafting_helper_generator.dm new file mode 100644 index 000000000000..2fdfe3af2330 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/recipe_crafting_helper_generator.dm @@ -0,0 +1,148 @@ +/datum/chewin_cooking/recipe/proc/generate_crafting_helper() + var/datum/crafting_recipe/food/new_food_recipe = new + new_food_recipe.category = food_category + new_food_recipe.result = product_type + new_food_recipe.name = name + new_food_recipe.non_craftable = TRUE + + var/list/steps = list() + var/in_group = FALSE + for(var/iter in step_builder) + if(islist(iter)) + var/list/iteration_list = iter + switch(iteration_list[1]) + if(CHEWIN_ADD_PRODUCE_OPTIONAL) + var/obj/item/food/grown/grown_path = iteration_list[2] + if(!in_group) + steps += "Optional Step" + steps += "Add [initial(grown_path.name)] to [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_ADD_PRODUCE) + var/obj/item/food/grown/grown_path = iteration_list[2] + steps += "Add [initial(grown_path.name)] to [cooking_container]" + if(CHEWIN_ADD_PRODUCE_CHOICE_OPTIONAL) + var/string = "" + var/first = TRUE + for(var/obj/item/food/grown/grown_path as anything in iteration_list[2]) + if(!first) + string += " or" + string += initial(grown_path.name) + first = FALSE + if(!in_group) + steps += "Optional Step" + steps += "Add [string] to [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_ADD_PRODUCE_CHOICE) + var/string = "" + var/first = TRUE + for(var/obj/item/food/grown/grown_path as anything in iteration_list[2]) + if(!first) + string += " or" + string += initial(grown_path.name) + first = FALSE + steps += "Add [string] to [cooking_container]" + + if(CHEWIN_ADD_ITEM) + var/obj/item/item_path = iteration_list[2] + steps += "Add [initial(item_path.name)] to [cooking_container]" + if(CHEWIN_ADD_ITEM_OPTIONAL) + var/obj/item/item_path = iteration_list[2] + if(!in_group) + steps += "Optional Step" + steps += "Add [initial(item_path.name)] to [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_ADD_REAGENT_OPTIONAL) + var/datum/reagent/reagent_path = iteration_list[2] + if(!in_group) + steps += "Optional Step" + steps += "Add [iteration_list[3]] units of [initial(reagent_path.name)] to [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_ADD_REAGENT) + var/datum/reagent/reagent_path = iteration_list[2] + steps += "Add [iteration_list[3]] units of [initial(reagent_path.name)] to [cooking_container]" + if(CHEWIN_ADD_REAGENT_CHOICE_OPTIONAL) + var/string = "" + var/first = TRUE + for(var/datum/reagent/reagent_path as anything in iteration_list[2]) + if(!first) + string += " or" + string += initial(reagent_path.name) + first = FALSE + + if(!in_group) + steps += "Optional Step" + steps += "Add [iteration_list[3]] units of [string] to [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_ADD_REAGENT_CHOICE) + var/string = "" + var/first = TRUE + for(var/datum/reagent/reagent_path as anything in iteration_list[2]) + if(!first) + string += " or " + string += initial(reagent_path.name) + first = FALSE + + steps += "Add [iteration_list[3]] units of [string] to [cooking_container]" + if(CHEWIN_USE_TOOL) + steps += "Use [iteration_list[2]] on [cooking_container]" + if(CHEWIN_USE_TOOL_OPTIONAL) + if(!in_group) + steps += "Optional Step" + steps += "Use [iteration_list[2]] on [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_USE_ITEM) + steps += "Use [iteration_list[2]] on [cooking_container]" + if(CHEWIN_USE_ITEM_OPTIONAL) + if(!in_group) + steps += "Optional Step" + steps += "Use [iteration_list[2]] on [cooking_container]" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_USE_STOVE) + steps += "Cook on Stove on [iteration_list[2]] heat for [iteration_list[3] * 0.1] Seconds" + if(CHEWIN_USE_STOVE_OPTIONAL) + if(!in_group) + steps += "Optional Step" + steps += "Cook on Stove on [iteration_list[2]] heat for [iteration_list[3] * 0.1] Seconds" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_USE_FRYER) + steps += "Deepfr for [iteration_list[3] * 0.1] Seconds" + if(CHEWIN_USE_OVEN) + steps += "Cook in Oven on [iteration_list[2]] heat for [iteration_list[3] * 0.1] Seconds" + if(CHEWIN_USE_OVEN_OPTIONAL) + if(!in_group) + steps += "Optional Step" + steps += "Cook in Oven on [iteration_list[2]] heat for [iteration_list[3] * 0.1] Seconds" + if(!in_group) + steps += "End Optional Step" + if(CHEWIN_USE_GRILL) + steps += "Cook on Grill on [iteration_list[2]] heat for [iteration_list[3] * 0.1] Seconds" + if(CHEWIN_USE_GRILL_OPTIONAL) + if(!in_group) + steps += "Optional Step" + steps += "Cook on Grill on [iteration_list[2]] heat for [iteration_list[3] * 0.1] Seconds" + if(!in_group) + steps += "End Optional Step" + else + switch(iter) + if(CHEWIN_BEGIN_OPTION_CHAIN) + in_group = TRUE + steps += "Optional Steps" + if(CHEWIN_END_OPTION_CHAIN) + in_group = FALSE + steps += "End Optional Steps" + if(CHEWIN_BEGIN_EXCLUSIVE_OPTIONS) + in_group = TRUE + steps += "Exclusive Optional Steps" + if(CHEWIN_END_EXCLUSIVE_OPTIONS) + in_group = FALSE + steps += "End Exclusive Optional Steps" + new_food_recipe.steps = steps + GLOB.cooking_recipes += new_food_recipe diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/recipes/sandwhich_test.dm b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/sandwhich_test.dm new file mode 100644 index 000000000000..a6d2ed525a3c --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/recipes/sandwhich_test.dm @@ -0,0 +1,8 @@ +/datum/chewin_cooking/recipe/sandwich_basic + cooking_container = CUTTING_BOARD + product_type = /obj/item/food/sandwich + step_builder = list( + list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice, qmod=0.5), + list(CHEWIN_ADD_ITEM, /obj/item/food/meat/cutlet, qmod=0.5, desc="It has meat in it.", result_desc="There is meat between the bread."), + list(CHEWIN_ADD_ITEM, /obj/item/food/breadslice, qmod=0.5) + ) diff --git a/monkestation/code/modules/brewin_and_chewin/chewing/tracker.dm b/monkestation/code/modules/brewin_and_chewin/chewing/tracker.dm new file mode 100644 index 000000000000..a553e8eed737 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/chewing/tracker.dm @@ -0,0 +1,458 @@ +//Datum held by objects that is the core component in a recipe. +//You use other items on an items with this datum to advance its recipe. +//Kept intentionally bare-bones because MANY of these objects are going to be made. +/datum/chewin_cooking/recipe_tracker + var/datum/weakref/holder_ref //The parent object holding the recipe tracker. + var/step_flags //A collection of the classes of steps the recipe can take next. + //This variable is a little complicated. + //It specifically references recipe_pointer objects each pointing to a different point in a different recipe. + var/list/active_recipe_pointers = list() + var/completion_lockout = FALSE //Freakin' cheaters... + var/list/completed_list = list()//List of recipes marked as complete. + var/recipe_started = FALSE //Tells if steps have been taken for this recipe + +/datum/chewin_cooking/recipe_tracker/New(var/obj/item/reagent_containers/container) + + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_tracker/New") + #endif + holder_ref = WEAKREF(container) + src.generate_pointers() + src.populate_step_flags() + +//Call when a method is done incorrectly that provides a flat debuff to the whole meal. +/datum/chewin_cooking/recipe_tracker/proc/apply_flat_penalty(var/penalty) + if(active_recipe_pointers.len == 0) + return + + for (var/datum/chewin_cooking/recipe_pointer/pointer in active_recipe_pointers) + pointer.tracked_quality -= penalty + +//Generate recipe_pointer objects based on the global list +/datum/chewin_cooking/recipe_tracker/proc/generate_pointers() + + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_tracker/proc/generate_pointers") + #endif + var/obj/item/reagent_containers/cooking_container/container = holder_ref.resolve() + + #ifdef CHEWIN_DEBUG + log_debug("Loading all references to [container] of type [container.type] using [container.appliancetype]") + #endif + //iterate through dictionary matching on holder type + if(GLOB.chewin_recipe_dictionary[container.appliancetype]) + for (var/key in GLOB.chewin_recipe_dictionary[container.appliancetype]) + #ifdef CHEWIN_DEBUG + log_debug("Loading [container.appliancetype] , [key] into pointer.") + #endif + active_recipe_pointers += new /datum/chewin_cooking/recipe_pointer(container.appliancetype, key, src) + +//Generate next steps +/datum/chewin_cooking/recipe_tracker/proc/get_step_options() + + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_tracker/proc/get_step_options") + #endif + var/list/options = list() + for (var/datum/chewin_cooking/recipe_pointer/pointer in active_recipe_pointers) + options += pointer.get_possible_steps() + + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe_tracker/proc/get_step_options returned [options.len] options") + #endif + return options + + +/datum/chewin_cooking/recipe_tracker/proc/populate_step_flags() + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_tracker/proc/populate_step_flags") + #endif + step_flags = 0 + for (var/datum/chewin_cooking/recipe_pointer/pointer in active_recipe_pointers) + var/flag_group = pointer.get_step_flags() + #ifdef CHEWIN_DEBUG + log_debug("Flag group returned with [flag_group]") + #endif + step_flags |= flag_group + +//Check if a recipe tracker has recipes loaded. +/datum/chewin_cooking/recipe_tracker/proc/has_recipes() + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_tracker/proc/has_recipes") + #endif + return active_recipe_pointers.len + +//Wrapper function for analyzing process_item internally. +/datum/chewin_cooking/recipe_tracker/proc/process_item_wrap(var/obj/used_object, var/mob/user) + + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe_tracker/proc/process_item_wrap called!") + #endif + + var/response = process_item(used_object, user) + + if(response == CHEWIN_SUCCESS || response == CHEWIN_COMPLETE || response == CHEWIN_PARTIAL_SUCCESS) + if(!recipe_started) + recipe_started = TRUE + return response + +//Core function that checks if a object meets all the requirements for certain recipe actions. +/datum/chewin_cooking/recipe_tracker/proc/process_item(var/obj/used_object, var/mob/user) + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_tracker/proc/process_item") + #endif + if(completion_lockout) + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe_tracker/proc/process_item held in lockout!") + #endif + return CHEWIN_LOCKOUT + var/list/valid_steps = list() + var/list/valid_unique_id_list = list() + var/use_class + + //Decide what action is being taken with the item, if any. + for (var/datum/chewin_cooking/recipe_pointer/pointer in active_recipe_pointers) + var/option_list = list() + option_list += pointer.get_possible_steps() + for (var/datum/chewin_cooking/recipe_step/step in option_list) + var/class_string = get_class_string(step.class) + var/is_valid = step.check_conditions_met(used_object, src) + #ifdef CHEWIN_DEBUG + log_debug("recipe_tracker/proc/process_item: Check conditions met returned [is_valid]") + #endif + if(is_valid == CHEWIN_CHECK_VALID) + if(!valid_steps["[class_string]"]) + valid_steps["[class_string]"] = list() + valid_steps["[class_string]"]+= step + + if(!valid_unique_id_list["[class_string]"]) + valid_unique_id_list["[class_string]"] = list() + valid_unique_id_list["[class_string]"] += step.unique_id + + if(!use_class) + use_class = class_string + if(valid_steps.len == 0) + #ifdef CHEWIN_DEBUG + log_debug("/recipe_tracker/proc/process_item returned no steps!") + #endif + return CHEWIN_NO_STEPS + + if(valid_steps.len > 1) + completion_lockout = TRUE + if(user) + var/list/choice = input(user, "There's two things you can do with this item!", "Choose One:") in valid_steps + completion_lockout = FALSE + if(!choice) + #ifdef CHEWIN_DEBUG + log_debug("/recipe_tracker/proc/process_item returned choice cancel!") + #endif + return CHEWIN_CHOICE_CANCEL + use_class = choice + else + use_class = 1 + #ifdef CHEWIN_DEBUG + log_debug("Use class determined: [use_class]") + #endif + + valid_steps = valid_steps[use_class] + valid_unique_id_list = valid_unique_id_list[use_class] + + var/has_traversed = FALSE + //traverse and cull pointers + for (var/datum/chewin_cooking/recipe_pointer/pointer in active_recipe_pointers) + var/used_id = FALSE + var/list/option_list = pointer.get_possible_steps() + for (var/datum/chewin_cooking/recipe_step/step in option_list) + if(!(step.unique_id in valid_unique_id_list)) + continue + else + used_id = TRUE + if(step.is_complete(used_object, src)) + has_traversed = TRUE + pointer.traverse(step.unique_id, used_object) + break + if (!used_id) + active_recipe_pointers.Remove(pointer) + qdel(pointer) + + + //attempt_complete_recursive(used_object, use_class) No, never again... + + //Choose to keep baking or finish now. + if(completed_list.len && (completed_list.len != active_recipe_pointers.len)) + + var/recipe_string = null + for(var/datum/chewin_cooking/recipe_pointer/pointer in completed_list) + if(!recipe_string) + recipe_string = "\a [pointer.current_recipe.name]" + else + recipe_string += ", or \a [pointer.current_recipe.name]" + if(user) + if(alert(user, "If you finish cooking now, you will create [recipe_string]. However, you feel there are possibilities beyond even this. Continue cooking anyways?",,"Yes","No") == "Yes") + //Cull finished recipe items + for (var/datum/chewin_cooking/recipe_pointer/pointer in completed_list) + active_recipe_pointers.Remove(pointer) + qdel(pointer) + completed_list = list() + + //Check if we completed our recipe + var/datum/chewin_cooking/recipe_pointer/chosen_pointer = null + if(completed_list.len >= 1) + #ifdef CHEWIN_DEBUG + log_debug("/recipe_tracker/proc/process_item YO WE ACTUALLY HAVE A COMPLETED A RECIPE!") + #endif + chosen_pointer = completed_list[1] + if(user) + if(completed_list.len > 1) + completion_lockout = TRUE + var/choice = input(user, "There's two things you complete at this juncture!", "Choose One:") in completed_list + completion_lockout = FALSE + if(choice) + chosen_pointer = completed_list[choice] + + //Call a proc that follows one of the steps in question, so we have all the nice to_chat calls. + var/datum/chewin_cooking/recipe_step/sample_step = valid_steps[1] + #ifdef CHEWIN_DEBUG + log_debug("/recipe_tracker/proc/process_item: Calling follow_step") + #endif + sample_step.follow_step(used_object, src) + + if(chosen_pointer) + chosen_pointer.current_recipe.create_product(chosen_pointer, user) + return CHEWIN_COMPLETE + populate_step_flags() + + if(has_traversed) + #ifdef CHEWIN_DEBUG + log_debug("/recipe_tracker/proc/process_item returned success!") + #endif + return CHEWIN_SUCCESS + + #ifdef CHEWIN_DEBUG + log_debug("/recipe_tracker/proc/process_item returned partial success!") + #endif + return CHEWIN_PARTIAL_SUCCESS + +//Sleep... My precious, monsterous child.... +/* +/datum/chewin_cooking/recipe_tracker/proc/attempt_complete_recursive( + var/obj/used_object, + var/use_class, + var/depth = 1, + var/list/considered_steps = null) + var/list/ourlist = null + if(depth == 1) + ourlist = active_recipe_pointers.Copy() + else + ourlist = considered_steps.Copy() + log_debug("/recipe_tracker/proc/attempt_complete_recursive entered second recursion!") + for (var/datum/chewin_cooking/recipe_pointer/pointer in ourlist) + var/option_list = list() + option_list += pointer.get_possible_steps() + var/has_valid_step = FALSE + var/had_traversal = FALSE + for (var/datum/chewin_cooking/recipe_step/step in option_list) + if(step.class != use_class) + continue + if(depth !=1 && !step.auto_complete_enabled) + continue + if(step.check_conditions_met(used_object, src) == CHEWIN_CHECK_VALID) + has_valid_step = TRUE + else + continue + if(step.is_complete(src)) + pointer.traverse(step.unique_id, used_object) + had_traversal = TRUE + break ///The first valid step is the only one we traverse, in the instance of multiple valid cases. + if(depth == 1 && !has_valid_step) + active_recipe_pointers.Remove(pointer) + ourlist.Remove(pointer) + else if(!had_traversal) + ourlist.Remove(pointer) + if(ourlist.len != 0 && depth !=5) + attempt_complete_recursive(used_object, use_class, depth=++depth, considered_steps = ourlist) +*/ +//=================================================================================== + + +//Points to a specific step in a recipe while considering the optional paths that recipe can take. +/datum/chewin_cooking/recipe_pointer + var/datum/chewin_cooking/recipe/current_recipe //The recipe being followed here. + var/datum/chewin_cooking/recipe_step/current_step //The current step in the recipe we are following. + + var/datum/weakref/parent_ref + + var/tracked_quality = 0 //The current level of quality within that recipe. + + var/list/steps_taken = list() //built over the course of following a recipe, tracks what has been done to the object. Format is unique_id:result + ///what our current food buff is + var/custom_food_buff + +/datum/chewin_cooking/recipe_pointer/New(start_type, recipe_id, var/datum/chewin_cooking/recipe_tracker/parent) + + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_pointer/pointer/New([start_type], [recipe_id], parent)") + #endif + + parent_ref = WEAKREF(parent) + + #ifdef CHEWIN_DEBUG + if(!GLOB.chewin_recipe_dictionary[start_type][recipe_id]) + log_debug("Recipe [start_type]-[recipe_id] not found by tracker!") + #endif + + current_recipe = GLOB.chewin_recipe_dictionary[start_type][recipe_id] + + #ifdef CHEWIN_DEBUG + if(!current_recipe) + log_debug("Recipe [start_type]-[recipe_id] initialized as null!") + #endif + + current_step = current_recipe.first_step + + #ifdef CHEWIN_DEBUG + steps_taken["[current_step.unique_id]"]="Started with a [start_type]" + #endif + +//A list returning the next possible steps in a given recipe +/datum/chewin_cooking/recipe_pointer/proc/get_possible_steps() + + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_pointer/proc/get_possible_steps") + if(!current_step) + log_debug("Recipe pointer in [current_recipe] has no current_step assigned?") + + if(!current_step.next_step) + log_debug("Recipe pointer in [current_recipe] has no next step.") + #endif + + //Build a list of all possible steps while accounting for exclusive step relations. + //Could be optimized, but keeps the amount of variables in the pointer low. + var/list/return_list = list(current_step.next_step) + for(var/datum/chewin_cooking/recipe_step/step in current_step.optional_step_list) + + if(steps_taken["[step.unique_id]"]) + //Traverse an option chain if one is present. + if(step.flags & CHEWIN_IS_OPTION_CHAIN) + var/datum/chewin_cooking/recipe_step/option_chain_step = step.next_step + while(option_chain_step.unique_id != current_step.unique_id) + if(!steps_taken["[option_chain_step.unique_id]"]) + return_list += option_chain_step + break + option_chain_step = option_chain_step.next_step + continue + + //Reference the global exclusion list to see if we can add this + var/exclude_step = FALSE + if(step.flags & CHEWIN_IS_EXCLUSIVE) + for (var/id in GLOB.chewin_optional_step_exclusion_dictionary["[step.unique_id]"]) + //Reference the global exclusion list to see if any of the taken steps + //Have the current step marked as exclusive. + if(steps_taken["[id]"]) + exclude_step = TRUE + break + + + if(!exclude_step) + return_list += step + #ifdef CHEWIN_DEBUG + else + log_debug("Ignoring step [step.unique_id] due to exclusion.") + #endif + + + #ifdef CHEWIN_DEBUG + log_debug("/datum/chewin_cooking/recipe_pointer/proc/get_possible_steps returned list of length [return_list.len]") + #endif + return return_list + +//Get the classes of all applicable next-steps for a recipe in a bitmask. +/datum/chewin_cooking/recipe_pointer/proc/get_step_flags() + #ifdef CHEWIN_DEBUG + log_debug("Called /datum/chewin_cooking/recipe_pointer/proc/get_step_flags") + if(!current_step) + log_debug("Recipe pointer in [current_recipe] has no current_step assigned?") + else if(!current_step.next_step) + log_debug("Recipe pointer in [current_recipe] has no next step.") + #endif + + //Build a list of all possible steps while accounting for exclusive step relations. + //Could be optimized, but keeps the amount of variables in the pointer low. + var/return_flags = current_step.next_step.class + for(var/datum/chewin_cooking/recipe_step/step in current_step.optional_step_list) + + if(steps_taken["[step.unique_id]"]) + //Traverse an option chain if one is present. + if(step.flags & CHEWIN_IS_OPTION_CHAIN) + var/datum/chewin_cooking/recipe_step/option_chain_step = step.next_step + while(option_chain_step.unique_id != current_step.unique_id) + if(!steps_taken["[option_chain_step.unique_id]"]) + return_flags |= option_chain_step.class + break + option_chain_step = option_chain_step.next_step + continue + + //Reference the global exclusion list to see if we can add this + var/exclude_step = FALSE + if(step.flags & CHEWIN_IS_EXCLUSIVE) + for (var/id in GLOB.chewin_optional_step_exclusion_dictionary["[step.unique_id]"]) + //Reference the global exclusion list to see if any of the taken steps + //Have the current step marked as exclusive. + if(steps_taken["[id]"]) + exclude_step = TRUE + break + if(!exclude_step) + return_flags |= step.class + return return_flags + +/datum/chewin_cooking/recipe_pointer/proc/has_option_by_id(var/id) + if(!GLOB.chewin_step_dictionary["[id]"]) + return FALSE + var/datum/chewin_cooking/recipe_step/active_step = GLOB.chewin_step_dictionary["[id]"] + var/list/possible_steps = get_possible_steps() + if(active_step in possible_steps) + return TRUE + return FALSE + +/datum/chewin_cooking/recipe_pointer/proc/traverse(var/id, var/obj/used_obj) + #ifdef CHEWIN_DEBUG + log_debug("/recipe_pointer/traverse: Traversing pointer from [current_step.unique_id] to [id].") + #endif + if(!GLOB.chewin_step_dictionary["[id]"]) + return FALSE + var/datum/chewin_cooking/recipe_tracker/tracker = parent_ref.resolve() + var/datum/chewin_cooking/recipe_step/active_step = GLOB.chewin_step_dictionary["[id]"] + + var/is_valid_step = FALSE + var/list/possible_steps = get_possible_steps() + for(var/datum/chewin_cooking/recipe_step/possible_step in possible_steps) + if(active_step.unique_id == possible_step.unique_id) + is_valid_step = TRUE + break + + if(!is_valid_step) + #ifdef CHEWIN_DEBUG + log_debug("/recipe_pointer/traverse: step [id] is not valid for recipe [current_recipe.unique_id]") + #endif + return FALSE + + var/step_quality = active_step.calculate_quality(used_obj, tracker) + tracked_quality += step_quality + steps_taken["[id]"] = active_step.get_step_result_text(used_obj, step_quality) + if(active_step.custom_food_buff) + custom_food_buff = active_step.custom_food_buff + if(active_step.finish_text) + var/datum/chewin_cooking/recipe_tracker/parent = parent_ref.resolve() + var/obj/item/resolved_ref = parent.holder_ref.resolve() + resolved_ref.say(active_step.finish_text) // I want runetext womp womp + + if(!(active_step.flags & CHEWIN_IS_OPTIONAL)) + current_step = active_step + + //The recipe has been completed. + if(!current_step.next_step && current_step.unique_id == id) + + tracker.completed_list += src + return TRUE + + return FALSE diff --git a/monkestation/code/modules/brewin_and_chewin/icons/bottle.dmi b/monkestation/code/modules/brewin_and_chewin/icons/bottle.dmi new file mode 100644 index 000000000000..3a2a818a8ca1 Binary files /dev/null and b/monkestation/code/modules/brewin_and_chewin/icons/bottle.dmi differ diff --git a/monkestation/code/modules/brewin_and_chewin/icons/eris_kitchen.dmi b/monkestation/code/modules/brewin_and_chewin/icons/eris_kitchen.dmi new file mode 100644 index 000000000000..a4d9b3dd4fe2 Binary files /dev/null and b/monkestation/code/modules/brewin_and_chewin/icons/eris_kitchen.dmi differ diff --git a/monkestation/code/modules/brewin_and_chewin/icons/grill.dmi b/monkestation/code/modules/brewin_and_chewin/icons/grill.dmi new file mode 100644 index 000000000000..5b999f1c6a4c Binary files /dev/null and b/monkestation/code/modules/brewin_and_chewin/icons/grill.dmi differ diff --git a/monkestation/code/modules/brewin_and_chewin/icons/kitchen.dmi b/monkestation/code/modules/brewin_and_chewin/icons/kitchen.dmi new file mode 100644 index 000000000000..5bbb7a8fd7c4 Binary files /dev/null and b/monkestation/code/modules/brewin_and_chewin/icons/kitchen.dmi differ diff --git a/monkestation/code/modules/brewin_and_chewin/icons/objects.dmi b/monkestation/code/modules/brewin_and_chewin/icons/objects.dmi new file mode 100644 index 000000000000..ca951cf3b1fc Binary files /dev/null and b/monkestation/code/modules/brewin_and_chewin/icons/objects.dmi differ diff --git a/monkestation/code/modules/brewin_and_chewin/icons/oven.dmi b/monkestation/code/modules/brewin_and_chewin/icons/oven.dmi new file mode 100644 index 000000000000..115df9f185eb Binary files /dev/null and b/monkestation/code/modules/brewin_and_chewin/icons/oven.dmi differ diff --git a/monkestation/code/modules/brewin_and_chewin/icons/paper.dmi b/monkestation/code/modules/brewin_and_chewin/icons/paper.dmi new file mode 100644 index 000000000000..286cf60046f5 Binary files /dev/null and b/monkestation/code/modules/brewin_and_chewin/icons/paper.dmi differ diff --git a/monkestation/code/modules/brewin_and_chewin/icons/scan.dmi b/monkestation/code/modules/brewin_and_chewin/icons/scan.dmi new file mode 100644 index 000000000000..5767c8ceaeab Binary files /dev/null and b/monkestation/code/modules/brewin_and_chewin/icons/scan.dmi differ diff --git a/monkestation/code/modules/brewin_and_chewin/icons/stove.dmi b/monkestation/code/modules/brewin_and_chewin/icons/stove.dmi new file mode 100644 index 000000000000..43ba9912808c Binary files /dev/null and b/monkestation/code/modules/brewin_and_chewin/icons/stove.dmi differ diff --git a/monkestation/code/modules/brewin_and_chewin/readme.md b/monkestation/code/modules/brewin_and_chewin/readme.md new file mode 100644 index 000000000000..1c90eda53e42 --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/readme.md @@ -0,0 +1,19 @@ +## Title: + + +MODULE ID: BREWIN_AND_CHEWIN + +### Description: + +This pr essentially works towards a slap craft varient for food items to add more immersion to foods, aswell as an overhaul to fermenting to allow you to better make beers and wines, adds pickling aswell. + + +### Included files that are not contained in this module: + + + +### Credits: + + + +Made by Dwasint diff --git a/monkestation/code/modules/brewin_and_chewin/uniqueness.dm b/monkestation/code/modules/brewin_and_chewin/uniqueness.dm new file mode 100644 index 000000000000..85480c8cd65a --- /dev/null +++ b/monkestation/code/modules/brewin_and_chewin/uniqueness.dm @@ -0,0 +1,70 @@ +GLOBAL_DATUM_INIT(uniqueness_repository, /repository/unique, new()) + +/repository/unique + var/list/generators + +/repository/unique/New() + ..() + generators = list() + +/repository/unique/proc/Generate() + var/generator_type = args[1] + var/datum/uniqueness_generator/generator = generators[generator_type] + if(!generator) + generator = new generator_type() + generators[generator_type] = generator + var/list/generator_args = args.Copy() // Cannot cut args directly, BYOND complains about it being readonly. + generator_args -= generator_type + return generator.Generate(arglist(generator_args)) + +/datum/uniqueness_generator/proc/Generate() + return + +/datum/uniqueness_generator/id_sequential + var/list/ids_by_key + +/datum/uniqueness_generator/id_sequential/New() + ..() + ids_by_key = list() + +/datum/uniqueness_generator/id_sequential/Generate(var/key, var/default_id = 100) + var/id = ids_by_key[key] + if(id) + id++ + else + id = default_id + + ids_by_key[key] = id + . = id + +/datum/uniqueness_generator/id_random + var/list/ids_by_key + +/datum/uniqueness_generator/id_random/New() + ..() + ids_by_key = list() + +/datum/uniqueness_generator/id_random/Generate(var/key, var/min, var/max) + var/list/ids = ids_by_key[key] + if(!ids) + ids = list() + ids_by_key[key] = ids + + if(ids.len >= (max - min) + 1) + stack_trace("Random ID limit reached for key [key].") + ids.Cut() + + if(ids.len >= 0.6 * ((max-min) + 1)) // if more than 60% of possible ids used + . = list() + for(var/i = min to max) + if(i in ids) + continue + . += i + var/id = pick(.) + ids += id + return id + else + do + . = rand(min, max) + while(. in ids) + ids += . diff --git a/monkestation/code/modules/can_spessmen_feel_pain/components/make_item_slow.dm b/monkestation/code/modules/can_spessmen_feel_pain/components/make_item_slow.dm new file mode 100644 index 000000000000..00f77f233fbb --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/components/make_item_slow.dm @@ -0,0 +1,61 @@ +/** + * Simple component that handles making an item slow the person holding it, + * as well as reverting it to its prior state when deleted. + */ +/datum/component/make_item_slow + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// The amount of slowdown applied to the item. + var/applied_slowdown = 1 + /// The slowdown of [parent] before the component was applied. + var/initial_slowdown = 0 + +/datum/component/make_item_slow/Initialize(applied_slowdown = 1) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + + var/obj/item/item_parent = parent + + if(item_parent.item_flags & SLOWS_WHILE_IN_HAND) // it already does it! + return COMPONENT_INCOMPATIBLE + + src.initial_slowdown = item_parent.slowdown + src.applied_slowdown = applied_slowdown + + make_slow() + +/datum/component/make_item_slow/Destroy() + revert_slow() + return ..() + +/** + * If this component is applied to a parent that already has the same typer component, just update the slowness to the new value. + */ +/datum/component/make_item_slow/InheritComponent(datum/component/make_item_slow/passed_component, original, applied_slowdown = 1) + src.applied_slowdown = applied_slowdown + make_slow() + +/** + * Apply our slowness to the attatched item. + */ +/datum/component/make_item_slow/proc/make_slow() + var/obj/item/item_parent = parent + var/mob/living/carbon/mob_holder = item_parent.loc + + item_parent.slowdown = applied_slowdown + item_parent.item_flags |= SLOWS_WHILE_IN_HAND + + if(istype(mob_holder)) + mob_holder.update_equipment_speed_mods() + +/** + * Remove our slowness from the attatched item. + */ +/datum/component/make_item_slow/proc/revert_slow() + var/obj/item/item_parent = parent + var/mob/living/carbon/mob_holder = item_parent.loc + + item_parent.slowdown = initial_slowdown + item_parent.item_flags &= ~SLOWS_WHILE_IN_HAND + + if(istype(mob_holder)) + mob_holder.update_equipment_speed_mods() diff --git a/monkestation/code/modules/can_spessmen_feel_pain/elements/temperature_pack.dm b/monkestation/code/modules/can_spessmen_feel_pain/elements/temperature_pack.dm new file mode 100644 index 000000000000..d88213b3d015 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/elements/temperature_pack.dm @@ -0,0 +1,107 @@ +/** + * Element to make an item into a "temperature pack". + * Temperature packs are hot or cold things that can be pressed against + * limbs experiencing pain to reduce it. + */ +/datum/element/temperature_pack + element_flags = ELEMENT_BESPOKE + argument_hash_start_idx = 2 + /// Amount of pain we restore every tick in the targeted limb. + var/pain_heal_rate = 0 + /// Pain modifier put on the limb we're targeting. + var/pain_modifier_on_limb = 1 + /// Body temperature change per tick. + var/temperature_change = 0 + +/datum/element/temperature_pack/Attach(obj/item/target, pain_heal_rate = 0, pain_modifier_on_limb = 1, temperature_change = 0) + . = ..() + + if(!isitem(target)) + return ELEMENT_INCOMPATIBLE + + src.pain_heal_rate = pain_heal_rate + src.pain_modifier_on_limb = pain_modifier_on_limb + src.temperature_change = temperature_change + + RegisterSignal(target, COMSIG_ITEM_ATTACK_SECONDARY, PROC_REF(try_apply_to_limb)) + RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(get_examine_text)) + +/datum/element/temperature_pack/Detach(obj/target) + . = ..() + UnregisterSignal(target, list( + COMSIG_ITEM_ATTACK_SECONDARY, + COMSIG_ATOM_EXAMINE, + )) + +/** + * Edit the examine text to show the item can be used as a temperature pack. + */ +/datum/element/temperature_pack/proc/get_examine_text(obj/item/source, mob/examiner, list/examine_list) + SIGNAL_HANDLER + + if(pain_heal_rate > 0) + examine_list += span_notice("Right-clicking on a hurt limb with this item can help soothe pain.") + +/** + * Try to apply [source] item onto [target] mob from [user]. + */ +/datum/element/temperature_pack/proc/try_apply_to_limb(obj/item/source, atom/target, mob/user, params) + SIGNAL_HANDLER + + . = SECONDARY_ATTACK_CALL_NORMAL // Normal operations + + if(!ishuman(target)) + return + + var/mob/living/carbon/human/target_mob = target + var/targeted_zone = target_mob.zone_selected + + if(!target_mob.pain_controller) + return + if(target_mob.stat == DEAD) + to_chat(user, span_warning("[target_mob] is dead!")) + return + if(!target_mob.get_bodypart_pain(targeted_zone, TRUE)) + to_chat(user, span_warning("That limb is not in pain.")) + return + + . = SECONDARY_ATTACK_CONTINUE_CHAIN // Past this point, no afterattacks + + for(var/datum/status_effect/temperature_pack/pre_existing_effect in target_mob.status_effects) + if(pre_existing_effect.targeted_zone == targeted_zone) + to_chat(user, span_warning("There is already something pressed against that limb.")) + return + if(pre_existing_effect.pressed_item == source) + to_chat(user, span_warning("You are already pressing [source] onto another limb.")) + return + + . = SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN // And past THIS point, no attack + + INVOKE_ASYNC(src, PROC_REF(apply_to_limb), source, target, user, targeted_zone) + +/** + * Actually apply [parent] temperature pack to [targeted_zone] limb on [target] mob from [user]. + */ +/datum/element/temperature_pack/proc/apply_to_limb(obj/item/parent, mob/living/carbon/target, mob/user, targeted_zone) + if(!do_after(user, 0.5 SECONDS, target)) + return + + var/obj/item/bodypart/targeted_bodypart = target.get_bodypart(targeted_zone) + user.visible_message( + span_notice("[user] press [parent] against [target == user ? "their" : "[target]'s" ] [targeted_bodypart.name]."), + span_notice("You press [parent] against [target == user ? "your" : "[target]'s" ] [targeted_bodypart.name].") + ) + + var/selected_effect = temperature_change > 0 \ + ? /datum/status_effect/temperature_pack/heat \ + : /datum/status_effect/temperature_pack/cold + + target.apply_status_effect( + selected_effect, + user, + parent, + targeted_zone, + pain_heal_rate, + pain_modifier_on_limb, + temperature_change, + ) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/icons/hud/screen_full.dmi b/monkestation/code/modules/can_spessmen_feel_pain/icons/hud/screen_full.dmi new file mode 100644 index 000000000000..bf34384867fc Binary files /dev/null and b/monkestation/code/modules/can_spessmen_feel_pain/icons/hud/screen_full.dmi differ diff --git a/monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_lhand.dmi b/monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_lhand.dmi new file mode 100644 index 000000000000..2db6272ea114 Binary files /dev/null and b/monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_lhand.dmi differ diff --git a/monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_rhand.dmi b/monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_rhand.dmi new file mode 100644 index 000000000000..fece08e14817 Binary files /dev/null and b/monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_rhand.dmi differ diff --git a/monkestation/code/modules/can_spessmen_feel_pain/icons/mob/pain_items.dmi b/monkestation/code/modules/can_spessmen_feel_pain/icons/mob/pain_items.dmi new file mode 100644 index 000000000000..9786ccd5372a Binary files /dev/null and b/monkestation/code/modules/can_spessmen_feel_pain/icons/mob/pain_items.dmi differ diff --git a/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/chemical.dmi b/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/chemical.dmi new file mode 100644 index 000000000000..e2efb6e79d95 Binary files /dev/null and b/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/chemical.dmi differ diff --git a/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/pain_items.dmi b/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/pain_items.dmi new file mode 100644 index 000000000000..2eb7cbfdcf76 Binary files /dev/null and b/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/pain_items.dmi differ diff --git a/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi b/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi new file mode 100644 index 000000000000..94b2da421b00 Binary files /dev/null and b/monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi differ diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/_base.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/_base.dm new file mode 100644 index 000000000000..f036f5a7afae --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/_base.dm @@ -0,0 +1,942 @@ +/** + * The pain controller datum. + * + * Attatched to a /carbon/human, this datum tracks all the pain values on all their bodyparts and handles updating them. + * This datum processes on alive humans every 2 seconds. + */ +/datum/pain + /// The parent mob we're tracking. + var/mob/living/carbon/parent + /// Modifier applied to all [adjust_pain] amounts + var/pain_modifier = 1 + /// Lazy Assoc list [id] to [modifier], all our pain modifiers affecting our final mod + var/list/pain_mods + /// Lazy Assoc list [zones] to [references to bodyparts], all the body parts we're tracking + var/list/body_zones + /// Natural amount of decay given to each limb per 5 ticks of process, increases over time + var/natural_pain_decay = -0.8 + /// The base amount of pain decay received. + var/base_pain_decay = -0.8 + /// Counter to track pain decay. Pain decay is only done once every 5 ticks. + var/natural_decay_counter = 0 + /// Amount of shock building up from higher levels of pain + /// When greater than current health, we go into shock + var/shock_buildup = 0 + /// Cooldown to track the last time we lost pain. + COOLDOWN_DECLARE(time_since_last_pain_loss) + /// Cooldown to track last time we sent a pain message. + COOLDOWN_DECLARE(time_since_last_pain_message) + +#ifdef TESTING + /// For testing. Does this pain datum print testing messages when it happens? + var/print_debug_messages = TRUE + /// For testing. Does this pain datum include ALL test messages, including very small and constant ones (like pain decay)? + var/print_debug_decay = FALSE +#endif + +/datum/pain/New(mob/living/carbon/human/new_parent) + if(!iscarbon(new_parent) || istype(new_parent, /mob/living/carbon/human/dummy)) + qdel(src) // If we're not a carbon, or a dummy, delete us + return null + + parent = new_parent + + body_zones = list() + for(var/obj/item/bodypart/parent_bodypart as anything in parent.bodyparts) + add_bodypart(parent, parent_bodypart, TRUE) + + if(!length(body_zones)) + stack_trace("Pain datum failed to find any body_zones to track!") + qdel(src) // If we have no bodyparts, delete us + return + + register_pain_signals() + base_pain_decay = natural_pain_decay + + addtimer(CALLBACK(src, PROC_REF(start_pain_processing), 1)) + +#ifdef TESTING + if(new_parent.z && !is_station_level(new_parent.z)) + print_debug_messages = FALSE +#endif + +/datum/pain/Destroy() + body_zones = null + if(parent) + STOP_PROCESSING(SSpain, src) + unregister_pain_signals() + parent = null + return ..() + +/datum/pain/proc/start_pain_processing() + if(parent.stat != DEAD) + START_PROCESSING(SSpain, src) + +/** + * Register all of our signals with our parent. + */ +/datum/pain/proc/register_pain_signals() + RegisterSignal(parent, COMSIG_CARBON_ATTACH_LIMB, PROC_REF(add_bodypart)) + RegisterSignal(parent, COMSIG_CARBON_GAIN_WOUND, PROC_REF(add_wound_pain)) + RegisterSignal(parent, COMSIG_CARBON_LOSE_WOUND, PROC_REF(remove_wound_pain)) + RegisterSignal(parent, COMSIG_CARBON_REMOVE_LIMB, PROC_REF(remove_bodypart)) + RegisterSignal(parent, COMSIG_LIVING_HEALTHSCAN, PROC_REF(on_analyzed)) + RegisterSignal(parent, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(remove_all_pain)) + RegisterSignal(parent, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(add_damage_pain)) + RegisterSignal(parent, COMSIG_MOB_STATCHANGE, PROC_REF(on_parent_statchance)) + RegisterSignals(parent, list(COMSIG_LIVING_SET_BODY_POSITION, COMSIG_LIVING_SET_BUCKLED), PROC_REF(check_lying_pain_modifier)) + RegisterSignals(parent, list(SIGNAL_ADDTRAIT(TRAIT_NO_PAIN_EFFECTS), SIGNAL_REMOVETRAIT(TRAIT_NO_PAIN_EFFECTS)), PROC_REF(refresh_pain_attributes)) + + if(ishuman(parent)) + RegisterSignal(parent, COMSIG_HUMAN_BURNING, PROC_REF(on_burn_tick)) + +/** + * Unregister all of our signals from our parent when we're done, if we have signals to unregister. + */ +/datum/pain/proc/unregister_pain_signals() + UnregisterSignal(parent, list( + COMSIG_CARBON_ATTACH_LIMB, + COMSIG_CARBON_GAIN_WOUND, + COMSIG_CARBON_LOSE_WOUND, + COMSIG_CARBON_REMOVE_LIMB, + COMSIG_HUMAN_BURNING, + COMSIG_LIVING_HEALTHSCAN, + COMSIG_LIVING_POST_FULLY_HEAL, + COMSIG_LIVING_SET_BODY_POSITION, + COMSIG_LIVING_SET_BUCKLED, + COMSIG_MOB_APPLY_DAMAGE, + COMSIG_MOB_STATCHANGE, + SIGNAL_ADDTRAIT(TRAIT_NO_PAIN_EFFECTS), + SIGNAL_REMOVETRAIT(TRAIT_NO_PAIN_EFFECTS), + )) + +/** + * Add a limb to be tracked. + * + * source - source of the signal / the mob who is gaining the limb / parent + * new_limb - the bodypart being attatched + * special - whether this limb being attatched should have side effects (if TRUE, likely being attatched on initialization) + */ +/datum/pain/proc/add_bodypart(mob/living/carbon/source, obj/item/bodypart/new_limb, special) + SIGNAL_HANDLER + + if(!istype(new_limb)) // pseudo-bodyparts are not tracked for simplicity (chainsaw arms) + return + + var/obj/item/bodypart/existing = body_zones[new_limb.body_zone] + if(!isnull(existing)) // if we already have a val assigned to this key, remove it + remove_bodypart(source, existing, FALSE, special) + + body_zones[new_limb.body_zone] = new_limb + + if(special || (HAS_TRAIT(source, TRAIT_LIMBATTACHMENT) && (new_limb.bodytype & BODYTYPE_ROBOTIC))) + new_limb.pain = 0 + else + adjust_bodypart_pain(new_limb.body_zone, new_limb.pain) + adjust_bodypart_pain(BODY_ZONE_CHEST, new_limb.pain / 3) + + RegisterSignal(new_limb, COMSIG_QDELETING, PROC_REF(limb_delete)) + +/** + * Remove a limb from being tracked. + * + * source - source of the signal / the mob who is losing the limb / parent + * lost_limb - the bodypart being removed + * special - whether this limb being removed should have side effects (if TRUE, likely being removed on initialization) + * dismembered - whether this limb was dismembered + */ +/datum/pain/proc/remove_bodypart(mob/living/carbon/source, obj/item/bodypart/lost_limb, dismembered, special) + SIGNAL_HANDLER + + var/bad_zone = lost_limb.body_zone + if(lost_limb != body_zones[bad_zone]) + CRASH("Pain datum tried to remove a bodypart that wasn't being tracked!") + + body_zones -= bad_zone + UnregisterSignal(lost_limb, COMSIG_QDELETING) + + if(!QDELETED(parent)) + if(!special && !(HAS_TRAIT(source, TRAIT_LIMBATTACHMENT) && (lost_limb.bodytype & BODYTYPE_ROBOTIC))) + var/limb_removed_pain = (dismembered ? PAIN_LIMB_DISMEMBERED : PAIN_LIMB_REMOVED) + if(!isnewplayer(usr)) //painful this should be avoided + adjust_bodypart_pain(BODY_ZONE_CHEST, limb_removed_pain) + adjust_bodypart_pain(BODY_ZONES_MINUS_CHEST, limb_removed_pain / 3) + + if(!QDELETED(lost_limb)) + lost_limb.pain = initial(lost_limb.pain) + REMOVE_TRAIT(lost_limb, TRAIT_PARALYSIS, PAIN_LIMB_PARALYSIS) + +/datum/pain/proc/limb_delete(obj/item/bodypart/source) + SIGNAL_HANDLER + + remove_bodypart(source.owner, source, special = TRUE) // Special I guess? Straight up deleted + +/** + * Add a pain modifier and update our overall modifier. + * + * key - key of the added modifier + * amount - multiplier of the modifier + * + * returns TRUE if our pain mod actually changed + */ +/datum/pain/proc/set_pain_modifier(key, amount) + var/existing_key = LAZYACCESS(pain_mods, key) + if(!isnull(existing_key)) + if(amount > 1 && existing_key >= amount) + return FALSE + if(amount < 1 && existing_key <= amount) + return FALSE + if(amount == 1) + return FALSE + + LAZYSET(pain_mods, key, amount) + refresh_pain_attributes() + return update_pain_modifier() + +/** + * Remove a pain modifier and update our overall modifier. + * + * key - key of the removed modifier + * + * returns TRUE if our pain mod actually changed + */ +/datum/pain/proc/unset_pain_modifier(key) + if(isnull(LAZYACCESS(pain_mods, key))) + return FALSE + + LAZYREMOVE(pain_mods, key) + return update_pain_modifier() + +/** + * Update our overall pain modifier. + * The pain modifier is multiplicative based on all the pain modifiers we have. + * + * returns TRUE if our pain modifier was changed after update, FALSE if it remained the same + */ +/datum/pain/proc/update_pain_modifier() + var/old_pain_mod = pain_modifier + pain_modifier = 1 + for(var/mod in pain_mods) + pain_modifier *= pain_mods[mod] + return old_pain_mod != pain_modifier + +/** + * Adjust the amount of pain in all [def_zones] provided by [amount] (multiplied by the [pain_modifier] if positive). + * + * def_zones - list of all zones being adjusted. Can be passed a non-list. + * amount - amount of pain being applied to all items in [def_zones]. If posiitve, multiplied by [pain_modifier]. + */ +/datum/pain/proc/adjust_bodypart_pain(list/def_zones, amount = 0, dam_type = BRUTE) + SHOULD_NOT_SLEEP(TRUE) // This needs to be asyncronously called in a lot of places, it should already check that this doesn't sleep but just in case. + + if(!islist(def_zones)) + def_zones = list(def_zones) + + // No pain at all + if(amount == 0) + return + if(amount > 0 && (parent.status_flags & GODMODE)) + return + + for(var/zone in shuffle(def_zones)) + var/adjusted_amount = round(amount, 0.01) + var/obj/item/bodypart/adjusted_bodypart = body_zones[check_zone(zone)] + if(isnull(adjusted_bodypart)) // it's valid - for if we're passed a zone we don't have + continue + + // Pain is negative (healing) + if(adjusted_amount < 0) + // Pain is negative and we're at min pain + if(adjusted_bodypart.pain <= adjusted_bodypart.min_pain) + continue + // Pain is negative and we're above soft cap, incraese the healing amount greatly + if(adjusted_bodypart.pain >= adjusted_bodypart.soft_max_pain) + adjusted_amount *= 3 + + // Pain is positive (dealing) + else + // Adjust incoming dealt pain by modifiers + adjusted_amount = round(adjusted_amount * pain_modifier * adjusted_bodypart.bodypart_pain_modifier, 0.01) + // Pain modifiers results in us taking 0 pain + // (If someone adds a negative pain mod and causes "inverse pain" (which you shouldn't) this needs to go) + if(adjusted_amount <= 0) + continue + + // Officially recieving pain at this point + adjusted_bodypart.last_received_pain_type = dam_type + +#ifdef TESTING + if(print_debug_messages) + testing("[amount] was adjusted down to [adjusted_amount]. (Modifiers: [pain_modifier], [adjusted_bodypart.bodypart_pain_modifier])") +#endif + + // Actually do the pain addition / subtraction here + adjusted_bodypart.pain = max(adjusted_bodypart.pain + adjusted_amount, adjusted_bodypart.min_pain) + + if(adjusted_amount > 0) + INVOKE_ASYNC(src, PROC_REF(on_pain_gain), adjusted_bodypart, amount, dam_type) + else if(adjusted_amount <= -1.5 || COOLDOWN_FINISHED(src, time_since_last_pain_loss)) + INVOKE_ASYNC(src, PROC_REF(on_pain_loss), adjusted_bodypart, amount, dam_type) + +#ifdef TESTING + if(print_debug_messages && (print_debug_decay || abs(adjusted_amount) > 1)) + testing("PAIN DEBUG: [parent] recived [adjusted_amount] pain to [adjusted_bodypart]. Part pain: [adjusted_bodypart.pain]") +#endif + + return TRUE + +/** + * Set the minimum amount of pain in all [def_zones] by [amount]. + * + * def_zones - list of all zones being adjusted. Can be passed a non-list. + * amount - amount of pain being all items in [def_zones] are set to. + */ +/datum/pain/proc/adjust_bodypart_min_pain(list/def_zones, amount = 0) + if(!amount) + return + + if(!islist(def_zones)) + def_zones = list(def_zones) + + for(var/zone in def_zones) + var/obj/item/bodypart/adjusted_bodypart = body_zones[zone] + if(isnull(adjusted_bodypart)) // it's valid - for if we're passed a zone we don't have + continue + + adjusted_bodypart.min_pain = max(adjusted_bodypart.min_pain + amount, 0) // Negative min pain is a neat idea ("banking pain") but not today + adjusted_bodypart.pain = max(adjusted_bodypart.pain, adjusted_bodypart.min_pain) + + return TRUE + +/** + * Called when pain is gained to apply side effects. + * Calls [affected_part]'s [on_gain_pain_effects] proc with arguments [amount]. + * Sends signal [COMSIG_CARBON_PAIN_GAINED] with arguments [mob/living/carbon/parent, obj/item/bodypart/affected_part, amount]. + * + * affected_part - the bodypart that gained the pain + * amount - amount of pain that was gained, post-[pain_modifier] applied + */ +/datum/pain/proc/on_pain_gain(obj/item/bodypart/affected_part, amount, type) + affected_part.on_gain_pain_effects(amount) + refresh_pain_attributes() + SEND_SIGNAL(parent, COMSIG_CARBON_PAIN_GAINED, affected_part, amount, type) + COOLDOWN_START(src, time_since_last_pain_loss, 30 SECONDS) + + if(amount > 12 && prob(25)) + do_pain_emote("scream", 5 SECONDS) + else if(amount > 6 && prob(10)) + do_pain_emote() + +/** + * Called when pain is lost, if the mob did not lose pain in the last 60 seconds. + * Calls [affected_part]'s [on_lose_pain_effects] proc with arguments [amount]. + * Sends signal [COMSIG_CARBON_PAIN_LOST] with arguments [mob/living/carbon/parent, obj/item/bodypart/affected_part, amount]. + * + * affected_part - the bodypart that lost pain + * amount - amount of pain that was lost + */ +/datum/pain/proc/on_pain_loss(obj/item/bodypart/affected_part, amount, type) + affected_part.on_lose_pain_effects(amount) + refresh_pain_attributes() + SEND_SIGNAL(parent, COMSIG_CARBON_PAIN_LOST, affected_part, amount, type) + +/** + * Hook into [/mob/living/proc/apply_damage] proc via signal and apply pain based on how much damage was gained. + * + * source - source of the signal / the mob being damaged / parent + * damage - the amount of damage sustained + * damagetype - the type of damage sustained + * def_zone - the limb being targeted with damage (either a bodypart zone or an obj/item/bodypart) + */ +/datum/pain/proc/add_damage_pain( + mob/living/carbon/source, + damage, + damagetype, + def_zone, + blocked = 0, + wound_bonus = 0, + bare_wound_bonus = 0, + sharpness = NONE, + attack_direction, + obj/item/attacking_item, +) + + SIGNAL_HANDLER + + if(damage <= 0 || (parent.status_flags & GODMODE)) + return + if(isbodypart(def_zone)) + var/obj/item/bodypart/targeted_part = def_zone + def_zone = targeted_part.body_zone + else + def_zone = check_zone(def_zone) + + // By default pain is calculated based on damage and wounding + // Attacks with a wound bonus add additional pain (usually, like 2-5) + // (Note that if they also succeed in applying a wound, more pain comes from that) + // Also, sharp attacks apply a smidge extra pain + var/pain = (2 * damage) + (0.1 * max(wound_bonus + bare_wound_bonus, 1)) * (sharpness ? 1.2 : 1) + switch(damagetype) + // Brute pain is dealt to the target zone + // pain is just divided by a random number, for variance + if(BRUTE) + pain *= (rand(60, 80) / 100) + + // Burn pain is dealt to the target zone + // pain is lower for weaker burns, but scales up for more damaging burns + if(BURN) + switch(damage) + if(1 to 10) + pain *= 0.25 + if(10 to 20) + pain *= 0.5 + if(20 to INFINITY) + pain *= 0.75 + + // Toxins pain is dealt to the chest (stomach and liver) + // Pain is determined by the liver's tox tolerance, liver damage, and stomach damage + // having a high amount of toxloss also adds additional pain + // + // Note: 99% of sources of toxdamage is done through adjusttoxloss, and as such doesn't go through this + if(TOX) + if(HAS_TRAIT(parent, TRAIT_TOXINLOVER) || HAS_TRAIT(parent, TRAIT_TOXIMMUNE)) + return + def_zone = BODY_ZONE_CHEST + var/obj/item/organ/internal/liver/our_liver = source.get_organ_slot(ORGAN_SLOT_LIVER) + var/obj/item/organ/internal/stomach/our_stomach = source.get_organ_slot(ORGAN_SLOT_STOMACH) + if(our_liver) + pain = damage / our_liver.toxTolerance + switch(our_liver.damage) + if(20 to 50) + pain += 1 + if(50 to 80) + pain += 2 + if(80 to INFINITY) + pain += 3 + else if(HAS_TRAIT(parent, TRAIT_LIVERLESS_METABOLISM)) + pain = 1 + else + pain = damage * 2 + + if(our_stomach) + switch(our_stomach.damage) + if(20 to 50) + pain += 1 + if(50 to 80) + pain += 2 + if(80 to INFINITY) + pain += 3 + else if(HAS_TRAIT(parent, TRAIT_NOHUNGER)) + pain = 1 + else + pain += 3 + + switch(source.getToxLoss()) + if(33 to 66) + pain += 1 + if(66 to INFINITY) + pain += 3 + + // Oxy pain is dealt to the head and chest + // pain is increasd based on lung damage and overall oxyloss + // + // Note: 99% of sources of oxydamage is done through adjustoxyloss, and as such doesn't go through this + if(OXY) + if(HAS_TRAIT(parent, TRAIT_NOBREATH)) + return + def_zone = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST) + var/obj/item/organ/internal/lungs/our_lungs = source.get_organ_slot(ORGAN_SLOT_LUNGS) + if(our_lungs) + switch(our_lungs.damage) + if(20 to 50) + pain += 1 + if(50 to 80) + pain += 2 + if(80 to INFINITY) + pain += 3 + else + pain += 5 + + switch(parent.getOxyLoss()) + if(0 to 20) + pain = 0 + if(20 to 50) + pain += 1 + if(50 to INFINITY) + pain += 3 + + // No pain from stamina loss + // In the future stamina can probably cause very sharp pain and replace stamcrit, + // but the system will require much finer tuning before then + if(STAMINA) + return + + // Head pain causes brain damage, so brain damage causes no pain (to prevent death spirals) + if(BRAIN) + return + + if(!def_zone || !pain) +#ifdef TESTING + if(print_debug_messages) + testing("PAIN DEBUG: [parent] recieved damage but no pain. ([def_zone ? "Nullified to [pain]" : "No def zone"])") +#endif + return + +#ifdef TESTING + if(print_debug_messages) + testing("PAIN DEBUG: [parent] is recieving [pain] of type [damagetype] to the [parse_zone(def_zone)]. (Original amount: [damage])") +#endif + + adjust_bodypart_pain(def_zone, pain, damagetype) + +/** + * Add pain in from a received wound based on severity. + * + * source - source of the signal / the mob being wounded / parent + * applied_wound - the wound being applied + * wounded_limb - the limb being wounded + */ +/datum/pain/proc/add_wound_pain(mob/living/carbon/source, datum/wound/applied_wound, obj/item/bodypart/wounded_limb) + SIGNAL_HANDLER + +#ifdef TESTING + if(print_debug_messages) + testing("PAIN DEBUG: [parent] is recieving a wound of level [applied_wound.severity] to the [parse_zone(wounded_limb.body_zone)].") +#endif + + adjust_bodypart_min_pain(wounded_limb.body_zone, applied_wound.severity * 5) + adjust_bodypart_pain(wounded_limb.body_zone, applied_wound.severity * 7.5) + +/** + * Remove pain from a healed wound. + * + * source - source of the signal / the mob being wounded / parent + * removed_wound - the wound being healed + * wounded_limb - the limb that was wounded + */ +/datum/pain/proc/remove_wound_pain(mob/living/carbon/source, datum/wound/removed_wound, obj/item/bodypart/wounded_limb) + SIGNAL_HANDLER + + adjust_bodypart_min_pain(wounded_limb.body_zone, -removed_wound.severity * 5) + adjust_bodypart_pain(wounded_limb.body_zone, -removed_wound.severity * 5) + +/** + * The process proc for pain. + * + * Applies and removes pain modifiers as they come and go. + * Causes various side effects based on pain. + * + * Triggers once every 2 seconds. + * Handles natural pain decay, which happens once every 5 processes (every 10 seconds) + */ +/datum/pain/process(seconds_per_tick) + if(!HAS_TRAIT(parent, TRAIT_ANALGESIA)) + var/has_pain = FALSE + var/just_cant_feel_anything = !parent.can_feel_pain() + var/no_recent_pain = COOLDOWN_FINISHED(src, time_since_last_pain_loss) + for(var/part in shuffle(body_zones)) + var/obj/item/bodypart/checked_bodypart = body_zones[part] + if(checked_bodypart.pain <= 0) + continue + has_pain = TRUE + if(just_cant_feel_anything || !COOLDOWN_FINISHED(src, time_since_last_pain_message)) + continue + // 1% chance per 8 pain being experienced to get a feedback message every second + if(!SPT_PROB(checked_bodypart.get_modified_pain() / 8, seconds_per_tick)) + continue + if(checked_bodypart.pain_feedback(seconds_per_tick, no_recent_pain)) + COOLDOWN_START(src, time_since_last_pain_message, 12 SECONDS) + + if(!has_pain) + // no-op if none of our bodyparts are in pain + return + + var/curr_pain = get_average_pain() + switch(curr_pain) + if(-INFINITY to 10) + shock_buildup = max(shock_buildup - 3, -30) // staying out of pain for a while gives you a small resiliency to shock (~1 minute) + + if(10 to 25) + shock_buildup = max(shock_buildup - 1, -30) + + if(25 to 40) + if(SPT_PROB(2, seconds_per_tick)) + do_pain_message(span_danger(pick("Everything aches.", "Everything feels sore."))) + + if(40 to 70) + if(!HAS_TRAIT(parent, TRAIT_NO_SHOCK_BUILDUP)) + shock_buildup += 1 + if(SPT_PROB(2, seconds_per_tick)) + do_pain_message(span_bolddanger(pick("Everything hurts.", "Everything feels very sore.", "It hurts."))) + + if(70 to INFINITY) + if(!HAS_TRAIT(parent, TRAIT_NO_SHOCK_BUILDUP)) + shock_buildup += 3 + if(SPT_PROB(2, seconds_per_tick)) + do_pain_message(span_userdanger(pick("Stop the pain!", "Everything hurts!"))) + + // If shock buildup exceeds our health + 30 ticks then well, we enter shock + // This means at 100 health you can be in moderate pain for 130 ticks / 260 seconds / ~4 minutes before falling into shock + if(shock_buildup >= (parent.health + 30) \ + && curr_pain >= 50 \ + && !HAS_TRAIT(parent, TRAIT_NO_SHOCK_BUILDUP) \ + && !is_undergoing_shock() \ + && !parent.undergoing_cardiac_arrest() \ + ) + parent.infect_disease_predefined(DISEASE_SHOCK, TRUE, "[ROUND_TIME()] Inflicted with Pain Shock [key_name(parent)]") + to_chat(parent, span_userdanger("You feel your body start to shut down!")) + if(parent.stat == CONSCIOUS && !parent.incapacitated(IGNORE_RESTRAINTS|IGNORE_GRAB) && !HAS_TRAIT(parent, TRAIT_NO_PAIN_EFFECTS)) + parent.visible_message(span_danger("[parent] grabs at their chest and stares into the distance as they go into shock!"), ignored_mobs = parent) + shock_buildup = -200 // requires another 200 ticks / 400 seconds / ~6 minutes of pain to go into shock again + return + + var/standard_effect_prob = (curr_pain * 0.05) - 0.75 // starts at 15, caps at 4.5 + var/rare_effect_prob = (curr_pain * 0.04) - 1.5 // starts at 40 + var/very_rare_effect_prob = (curr_pain * 0.03) - 2.25 // starts at 70 + + if(standard_effect_prob > 0) + if(!just_cant_feel_anything) + if(SPT_PROB(standard_effect_prob, seconds_per_tick)) + parent.adjust_stutter_up_to(10 SECONDS * pain_modifier, 30 SECONDS) + if(SPT_PROB(standard_effect_prob, seconds_per_tick)) + parent.adjust_jitter_up_to(20 SECONDS * pain_modifier, 60 SECONDS) + if(SPT_PROB(standard_effect_prob, seconds_per_tick)) + parent.adjust_dizzy_up_to(10 SECONDS * pain_modifier, 30 SECONDS) + if(curr_pain >= 70) + parent.adjust_confusion_up_to(8 SECONDS * pain_modifier, 24 SECONDS) + if(SPT_PROB(standard_effect_prob * 1.2, seconds_per_tick) && parent.stamina?.loss <= 80) + var/stam_taken = round((0.2 * curr_pain + 8) * pain_modifier) // 10 = 10, 100 = 28, good enough + if(just_cant_feel_anything) + parent.apply_damage(stam_taken * 1.2, STAMINA) + // First we apply damage, if that succeeds -> + // Check how much damage, if above a threshold -> + // Run a pain emote, if the pain emote succeeds as well -> + else if(parent.apply_damage(stam_taken, STAMINA) && stam_taken >= 15 && do_pain_emote(pick("wince", "gasp"))) + parent.visible_message(span_warning("[parent] doubles over in pain!")) + + if(rare_effect_prob > 0) + if(SPT_PROB(rare_effect_prob * 2, seconds_per_tick)) + var/list/options = list("wince", "whimper") + if(curr_pain >= 70) + options.Add("cry", "scream") + do_pain_emote(pick(options), 5 SECONDS) + if(SPT_PROB(rare_effect_prob, seconds_per_tick) && parent.body_position != LYING_DOWN && !just_cant_feel_anything) + parent.Knockdown(2 SECONDS * pain_modifier) + parent.visible_message(span_warning("[parent] collapses from pain!")) + if(SPT_PROB(rare_effect_prob, seconds_per_tick)) + var/obj/item/held_item = parent.get_active_held_item() + var/obj/item/bodypart/active_hand = parent.get_active_hand() + if(held_item && active_hand && parent.dropItemToGround(held_item)) + if(active_hand.bodytype & BODYTYPE_ROBOTIC) + to_chat(parent, span_danger("Your hand malfunctions, causing you to drop [held_item]!")) + parent.visible_message(span_warning("[parent]'s hand malfunctions, causing them to drop [held_item]!"), ignored_mobs = parent) + do_sparks(number = 1, source = parent) + else if(just_cant_feel_anything) + to_chat(parent, span_danger("Your hand spams and you drop [held_item]!")) + else + to_chat(parent, span_danger("Your fumble though the pain and drop [held_item]!")) + parent.visible_message(span_warning("[parent] fumbles around and drops [held_item]!"), ignored_mobs = parent) + do_pain_emote("gasp") + + if(very_rare_effect_prob > 0) + if(SPT_PROB(very_rare_effect_prob, seconds_per_tick)) + parent.vomit(50) + if(SPT_PROB(very_rare_effect_prob, seconds_per_tick) && !just_cant_feel_anything) + parent.adjust_confusion_up_to(8 SECONDS, 24 SECONDS) + + // Finally, handle pain decay over time + if(HAS_TRAIT(parent, TRAIT_STASIS) || parent.on_fire || parent.stat == DEAD) + return + + // Decay every 3 ticks / 6 seconds, or 1 ticks / 2 seconds if "sleeping" + var/every_x_ticks = HAS_TRAIT(parent, TRAIT_KNOCKEDOUT) ? 1 : 3 + + natural_decay_counter++ + if(natural_decay_counter % every_x_ticks != 0) + return + + natural_decay_counter = 0 + if(COOLDOWN_FINISHED(src, time_since_last_pain_loss) && parent.stat == CONSCIOUS) + // 0.16 per 10 seconds, ~0.1 per minute, 10 minutes for ~1 decay + natural_pain_decay = max(natural_pain_decay - 0.12, -4) + else + natural_pain_decay = base_pain_decay + + // modify our pain decay by our pain modifier (ex. 0.5 pain modifier = 2x natural pain decay, capped at ~3x) + var/pain_modified_decay = round(natural_pain_decay * (1 / max(pain_modifier, 0.33)), 0.01) + adjust_bodypart_pain(BODY_ZONES_ALL, pain_modified_decay) + +/** + * Whenever we buckle to something or lie down, get a pain bodifier. + */ +/datum/pain/proc/check_lying_pain_modifier(datum/source, new_buckled) + SIGNAL_HANDLER + + var/buckled_lying_modifier = 1 + if(parent.body_position == LYING_DOWN) + buckled_lying_modifier -= 0.1 + + if(new_buckled) + buckled_lying_modifier -= 0.1 + + if(buckled_lying_modifier < 1) + set_pain_modifier(PAIN_MOD_LYING, buckled_lying_modifier) + else + unset_pain_modifier(PAIN_MOD_LYING) + +/** + * While actively burning, cause pain + */ +/datum/pain/proc/on_burn_tick(datum/source) + SIGNAL_HANDLER + + var/mob/living/carbon/human/human_parent = parent + if(human_parent.get_thermal_protection() >= FIRE_SUIT_MAX_TEMP_PROTECT) + return + + // The more firestacks, the more pain we apply per burn tick, up to 2 per tick per bodypart. + // We can be liberal with this because when they're extinguished most of it will go away. + parent.apply_status_effect(/datum/status_effect/pain_from_fire, clamp(parent.fire_stacks * 0.2, 0, 2)) + +/** + * Apply or remove pain various modifiers from pain (mood, action speed, movement speed) based on the [average_pain]. + */ +/datum/pain/proc/refresh_pain_attributes(...) + SIGNAL_HANDLER + + if(!parent.can_feel_pain()) + clear_pain_attributes() + return + + switch(get_average_pain()) + if(-INFINITY to 20) + clear_pain_attributes() + if(20 to 40) + parent.mob_surgery_speed_mod = 0.9 + parent.add_movespeed_modifier(/datum/movespeed_modifier/pain/light) + parent.add_actionspeed_modifier(/datum/actionspeed_modifier/pain/light) + parent.add_mood_event("pain", /datum/mood_event/light_pain) + if(40 to 60) + parent.mob_surgery_speed_mod = 0.75 + parent.add_movespeed_modifier(/datum/movespeed_modifier/pain/medium) + parent.add_actionspeed_modifier(/datum/actionspeed_modifier/pain/medium) + parent.add_mood_event("pain", /datum/mood_event/med_pain) + if(60 to 80) + parent.mob_surgery_speed_mod = 0.6 + parent.add_movespeed_modifier(/datum/movespeed_modifier/pain/heavy) + parent.add_actionspeed_modifier(/datum/actionspeed_modifier/pain/heavy) + parent.add_mood_event("pain", /datum/mood_event/heavy_pain) + if(80 to INFINITY) + parent.mob_surgery_speed_mod = 0.5 + parent.add_movespeed_modifier(/datum/movespeed_modifier/pain/crippling) + parent.add_actionspeed_modifier(/datum/actionspeed_modifier/pain/crippling) + parent.add_mood_event("pain", /datum/mood_event/crippling_pain) + +/** + * Clears all pain related attributes + */ +/datum/pain/proc/clear_pain_attributes() + parent.mob_surgery_speed_mod = initial(parent.mob_surgery_speed_mod) + parent.remove_movespeed_modifier(MOVESPEED_ID_PAIN) + parent.remove_actionspeed_modifier(ACTIONSPEED_ID_PAIN) + parent.clear_mood_event("pain") + +/** + * Run a pain related emote, if a few checks are successful. + * + * emote - string, what emote we're running + * cooldown - what cooldown to set our emote cooldown to + * + * returns TRUE if successful. + */ +/datum/pain/proc/do_pain_emote(emote = pick(PAIN_EMOTES), cooldown = 3 SECONDS) + ASSERT(istext(emote)) + if(!parent.can_feel_pain()) + return FALSE + if(cooldown && !COOLDOWN_FINISHED(src, time_since_last_pain_message)) + return FALSE + if(parent.stat >= UNCONSCIOUS || parent.incapacitated(IGNORE_RESTRAINTS|IGNORE_GRAB)) + return FALSE + + parent.emote(emote) + COOLDOWN_START(src, time_since_last_pain_message, cooldown) + return TRUE + +/** + * Run a pain related message, if a few checks are successful. + * + * message - string, what message we're sending + * painless_message - optional string, what message we're sending if the mob doesn't "feel" pain + * cooldown - what cooldown to set our message cooldown to + * + * returns TRUE if successful. + * Returns FALSE if we failed to send a message, even if painless_message was provided and sent. + */ +/datum/pain/proc/do_pain_message(message, painless_message, cooldown = 0 SECONDS) + ASSERT(istext(message)) + + if(parent.client?.prefs) + if(parent.client.prefs.read_preference(/datum/preference/toggle/pain_messages)) + return FALSE + + if(!parent.can_feel_pain()) + if(painless_message) + to_chat(parent, painless_message) + return FALSE + if(parent.stat >= UNCONSCIOUS) + return FALSE + if(cooldown && !COOLDOWN_FINISHED(src, time_since_last_pain_message)) + return FALSE + + to_chat(parent, message) + COOLDOWN_START(src, time_since_last_pain_message, cooldown) + return TRUE + +/** + * Get the average pain of all bodyparts as a percent of the total pain. + */ +/datum/pain/proc/get_average_pain() + var/max_total_pain = 0 + var/total_pain = 0 + for(var/zone in body_zones) + var/obj/item/bodypart/adjusted_bodypart = body_zones[zone] + total_pain += adjusted_bodypart.pain + max_total_pain += adjusted_bodypart.soft_max_pain + + return 100 * total_pain / max_total_pain + +/** + * Returns a disease datum (Truthy value) if we are undergoing shock. + */ +/datum/pain/proc/is_undergoing_shock() + return locate(/datum/disease/advanced/premade/shock) in parent.diseases + +/** + * Remove all pain, pain paralysis, side effects, etc. from our mob after we're fully healed by something (like an adminheal) + */ +/datum/pain/proc/remove_all_pain(datum/source, heal_flags) + SIGNAL_HANDLER + + // Ideally pain would have its own heal flag but we live in a society + if(!(heal_flags & (HEAL_ADMIN|HEAL_WOUNDS|HEAL_STATUS))) + return + + for(var/zone in body_zones) + var/obj/item/bodypart/healed_bodypart = body_zones[zone] + adjust_bodypart_min_pain(zone, -INFINITY) + adjust_bodypart_pain(zone, -INFINITY) + // Shouldn't be necessary but you never know! + REMOVE_TRAIT(healed_bodypart, TRAIT_PARALYSIS, PAIN_LIMB_PARALYSIS) + + clear_pain_attributes() + shock_buildup = 0 + natural_pain_decay = base_pain_decay + +/** + * Determines if we should be processing or not. + */ +/datum/pain/proc/on_parent_statchance(mob/source) + SIGNAL_HANDLER + + if(source.stat == DEAD) + if(datum_flags & DF_ISPROCESSING) + STOP_PROCESSING(SSpain, src) + else + START_PROCESSING(SSpain, src) + +/** + * Signal proc for [COMSIG_LIVING_HEALTHSCAN] + * Reports how much pain [parent] is sustaining to [user]. + * + * Note, this report is relatively vague intentionally - + * rather than sending a detailed report of which bodyparts are in pain and how much, + * the patient is encouraged to elaborate on which bodyparts hurt the most, and how much they hurt. + * (To encourage a bit more interaction between the doctors.) + */ +/datum/pain/proc/on_analyzed(datum/source, list/render_list, advanced, mob/user, mode) + SIGNAL_HANDLER + + var/amount = "" + var/tip = "" + var/in_shock = !!is_undergoing_shock() + if(in_shock) + tip += span_bold("Neurogenic shock has begun and should be treated urgently. ") + + switch(get_average_pain()) + if(5 to 15) + amount = "minor" + tip += "Pain should subside in time." + if(15 to 30) + amount = "moderate" + tip += "Pain should subside in time and can be quickened with rest or painkilling medication." + if(30 to 50) + amount = "major" + tip += "Treat wounds and abate pain with rest, cryogenics, and painkilling medication." + if(50 to 80) + amount = "severe" + if(!in_shock) + tip += span_bold("Alert: Potential of neurogenic shock. ") + tip += "Treat wounds and abate pain with long rest, cryogenics, and moderate painkilling medication." + if(80 to INFINITY) + amount = "extreme" + if(!in_shock) + tip += span_bold("Alert: High potential of neurogenic shock. ") + tip += "Treat wounds and abate pain with long rest, cryogenics, and heavy painkilling medication." + + if(amount && tip) + render_list += "" + render_list += span_bold("Subject is experiencing [amount] pain. ") + render_list += tip + render_list += "\n" + +#ifdef TESTING + debug_print_pain() +#endif + +// ------ Pain debugging stuff. ------ +/datum/pain/vv_get_dropdown() + . = ..() + VV_DROPDOWN_OPTION("debug_pain", "Debug Pain") + VV_DROPDOWN_OPTION("set_limb_pain", "Adjust Limb Pain") + VV_DROPDOWN_OPTION("refresh_mod", "Refresh Pain Mod") + +/datum/pain/vv_do_topic(list/href_list) + . = ..() + if(href_list["debug_pain"]) + debug_print_pain() + if(href_list["set_limb_pain"]) + admin_adjust_bodypart_pain() + if(href_list["refresh_mod"]) + update_pain_modifier() + +/datum/pain/proc/debug_print_pain() + + var/list/final_print = list() + final_print += "
    DEBUG PRINTOUT PAIN: [REF(src)]" + final_print += "[parent] has an average pain of [get_average_pain()]." + final_print += "[parent] has a pain modifier of [pain_modifier]." + final_print += " - - - - " + final_print += "[parent] bodypart printout: (min / current / soft max)" + for(var/part in body_zones) + var/obj/item/bodypart/checked_bodypart = body_zones[part] + final_print += "[checked_bodypart.name]: [checked_bodypart.min_pain] / [checked_bodypart.pain] / [checked_bodypart.soft_max_pain]" + + final_print += " - - - - " + final_print += "[parent] pain modifier printout:" + for(var/mod in pain_mods) + final_print += "[mod]: [pain_mods[mod]]" + + final_print += "
    " + to_chat(usr, final_print.Join("\n")) + +/datum/pain/proc/admin_adjust_bodypart_pain() + var/zone = input(usr, "Which bodypart") as null|anything in BODY_ZONES_ALL + "All" + var/amount = input(usr, "How much?") as null|num + + if(isnull(amount) || isnull(zone)) + return + if(zone == "All") + zone = BODY_ZONES_ALL + + amount = clamp(amount, -200, 200) + adjust_bodypart_pain(zone, amount) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/bodyparts.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/bodyparts.dm new file mode 100644 index 000000000000..9a14a244f0fc --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/bodyparts.dm @@ -0,0 +1,286 @@ +// Bodypart extensions to handle pain +// Yes pain is handled on a per-bodypart basis +/obj/item/bodypart + /// The amount of pain this limb is experiencing (A bit for default) + var/pain = 15 + /// The min amount of pain this limb can experience + var/min_pain = 0 + /// The soft cap of pain that this limb can experience + /// This is not a hard cap, pain can go above this, but beyond this effects will not worsen + var/soft_max_pain = PAIN_LIMB_MAX + /// Modifier applied to pain that this part receives + var/bodypart_pain_modifier = 1 + /// The last type of pain we received. Determines what type of pain we're recieving. + var/last_received_pain_type = BRUTE + +// Adds pain to check-self. +/obj/item/bodypart/check_for_injuries(mob/living/carbon/human/examiner, list/check_list) + . = ..() + if(owner != examiner || !owner.can_feel_pain()) // haha you thought + return + + switch((get_modified_pain() / soft_max_pain) * 100) + if(10 to 40) + check_list += "\t [span_danger("Your [name] is experiencing mild pain \ + and [last_received_pain_type == BURN ? "burns" : "hurts"] to the touch.")]" + + if(40 to 70) + check_list += "\t [span_warning("Your [name] is experiencing moderate pain \ + and [last_received_pain_type == BURN ? "burns" : "hurts"] to the touch!")]" + + if(70 to INFINITY) + check_list += "\t [span_boldwarning("Your [name] is experiencing severe pain \ + and [last_received_pain_type == BURN ? "burns" : "hurts"] to the touch!")]" + +/** + * Gets our bodypart's effective pain (pain * pain modifiers). + * + * Returns our effective pain. + */ +/obj/item/bodypart/proc/get_modified_pain() + if(owner?.pain_controller) + return pain * bodypart_pain_modifier * owner.pain_controller.pain_modifier + else + return pain * bodypart_pain_modifier + +/** + * Effects on this bodypart has when pain is gained. + * + * amount - amount of pain gained + */ +/obj/item/bodypart/proc/on_gain_pain_effects(amount) + if(!owner) + return FALSE + + if(get_modified_pain() >= 65 && can_be_disabled && !HAS_TRAIT_FROM(src, TRAIT_PARALYSIS, PAIN_LIMB_PARALYSIS)) + owner.pain_message( + span_userdanger("Your [plaintext_zone] goes numb from the pain!"), + span_danger("You can't move your [plaintext_zone]!") + ) + ADD_TRAIT(src, TRAIT_PARALYSIS, PAIN_LIMB_PARALYSIS) + update_disabled() + + return TRUE + +/** + * Effects on this bodypart has when pain is lost and some time passes without any pain gain. + * + * amount - amount of pain lost + */ +/obj/item/bodypart/proc/on_lose_pain_effects(amount) + if(!owner) + return FALSE + + if(get_modified_pain() < 65 && HAS_TRAIT_FROM(src, TRAIT_PARALYSIS, PAIN_LIMB_PARALYSIS)) + owner.pain_message( + span_green("You can feel your [plaintext_zone] again!"), + span_green("You can move your [plaintext_zone] again!") + ) + REMOVE_TRAIT(src, TRAIT_PARALYSIS, PAIN_LIMB_PARALYSIS) + update_disabled() + + return TRUE + +/** + * Feedback messages from this limb when it is sustaining pain. + * + * healing_pain - if TRUE, the bodypart has gone some time without recieving pain, and is healing. + */ +/obj/item/bodypart/proc/pain_feedback(seconds_per_tick, healing_pain) + var/list/feedback_phrases = list() + var/static/list/healing_phrases = list( + "but is improving", + "but is starting to dull", + "but the stinging is stopping", + "but feels faint", + ) + + switch(pain) + if(10 to 25) + owner.flash_pain_overlay(1) + feedback_phrases += list("aches", "feels sore", "stings slightly", "tingles", "twinges") + if(25 to 50) + owner.flash_pain_overlay(1) + feedback_phrases += list("hurts", "feels sore", "stings", "throbs", "pangs", "cramps", "feels wrong", "feels loose") + if(last_received_pain_type == BURN) + feedback_phrases += list("stings to the touch", "burns") + if(50 to 65) + if(SPT_PROB(4, seconds_per_tick)) + owner.pain_emote() + owner.flash_pain_overlay(2) + feedback_phrases += list("really hurts", "is losing feeling", "throbs painfully", "is in agony", "anguishes", "feels broken", "feels terrible") + if(last_received_pain_type == BURN) + feedback_phrases += list("burns to the touch", "burns", "singes") + if(65 to INFINITY) + if(SPT_PROB(8, seconds_per_tick)) + var/bonus_emote = pick(PAIN_EMOTES) + owner.pain_emote(pick("groan", "scream", bonus_emote)) + owner.flash_pain_overlay(2, 2 SECONDS) + feedback_phrases += list("is numb from the pain") + + if(feedback_phrases.len) + owner.pain_message(span_danger("Your [plaintext_zone] [pick(feedback_phrases)][healing_pain ? ", [pick(healing_phrases)]." : "!"]")) + return TRUE + +// --- Chest --- +/obj/item/bodypart/chest + soft_max_pain = PAIN_CHEST_MAX + +/obj/item/bodypart/chest/robot + // Augmented limbs start with maximum pain as a trade-off for becoming almost immune to it + // The idea being that the roboticist installing augments should take care of their patient + // following the period after they're augmented - anesthetic, rest, painkillers (from medbay) + pain = PAIN_CHEST_MAX + // As a trade off for starting with maximum pain, + // augmented limbs lose pain very rapidly and take very little in the way of pain. + // Why not a 0 modifier? I feel like it'll be unfun if they can just completely ignore the system. + bodypart_pain_modifier = 0.2 + +/obj/item/bodypart/chest/pain_feedback(seconds_per_tick, healing_pain) + var/list/feedback_phrases = list() + var/list/side_feedback = list() + var/static/list/healing_phrases = list( + "but is improving", + "but is starting to dull", + "but the stinging is stopping", + "but feels faint", + "but is settling", + "but it subsides", + ) + + switch(pain) + if(10 to 40) + owner.flash_pain_overlay(1) + feedback_phrases += list("aches", "feels sore", "stings slightly", "tingles", "twinges") + if(40 to 75) + owner.flash_pain_overlay(1, 2 SECONDS) + feedback_phrases += list("hurts", "feels sore", "stings", "throbs", "pangs", "cramps", "feels tight") + side_feedback += list("Your side hurts", "Your side pangs", "Your ribs hurt", "Your ribs pang", "Your neck stiffs") + if(75 to 110) + if(SPT_PROB(8, seconds_per_tick)) + owner.pain_emote() + owner.flash_pain_overlay(2, 2 SECONDS) + feedback_phrases += list("really hurts", "is losing feeling", "throbs painfully", "stings to the touch", "is in agony", "anguishes", "feels broken", "feels tight") + side_feedback += list("You feel a sharp pain in your side", "Your ribs feel broken") + if(110 to INFINITY) + if(SPT_PROB(12, seconds_per_tick)) + var/bonus_emote = pick(PAIN_EMOTES) + owner.pain_emote(pick("groan", "scream", bonus_emote)) + owner.flash_pain_overlay(2, 3 SECONDS) + feedback_phrases += list("hurts madly", "is in agony", "is anguishing", "burns to the touch", "feels terrible", "feels constricted") + side_feedback += list("You feel your ribs jostle in your [plaintext_zone]") + + if(side_feedback.len && last_received_pain_type == BRUTE && SPT_PROB(50, seconds_per_tick)) + owner.pain_message(span_danger("[pick(side_feedback)][healing_pain ? ", [pick(healing_phrases)]." : "!"]")) + else if(feedback_phrases.len) + owner.pain_message(span_danger("Your [plaintext_zone] [pick(feedback_phrases)][healing_pain ? ", [pick(healing_phrases)]." : "!"]")) + + return TRUE + +// --- Head --- +/obj/item/bodypart/head + soft_max_pain = PAIN_HEAD_MAX + +/obj/item/bodypart/head/robot + pain = PAIN_HEAD_MAX + bodypart_pain_modifier = 0.2 + +/obj/item/bodypart/head/on_gain_pain_effects(amount) + . = ..() + if(!.) + return FALSE + + if(amount >= 10) + // Large amounts of head pain causes minor brain damage + owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, min(pain / 5, 10), 50) + + return TRUE + +/obj/item/bodypart/head/pain_feedback(seconds_per_tick, healing_pain) + var/list/feedback_phrases = list() + var/list/side_feedback = list() + var/static/list/healing_phrases = list( + "but is improving", + "but is starting to dull", + "but the stinging is stopping", + "but the tension is stopping", + "but is settling", + "but it subsides", + "but the pressure fades", + ) + + switch(pain) + if(10 to 30) + owner.flash_pain_overlay(1) + feedback_phrases += list("aches", "feels sore", "stings slightly", "tingles", "twinges") + side_feedback += list("Your neck feels sore", "Your eyes feel tired") + if(30 to 60) + owner.flash_pain_overlay(1) + feedback_phrases += list("hurts", "feels sore", "stings", "throbs", "pangs") + side_feedback += list("Your neck aches badly", "Your eyes hurt", "You feel a migrane coming on", "You feel a splitting headache") + if(60 to 90) + owner.flash_pain_overlay(2) + feedback_phrases += list("really hurts", "is losing feeling", "throbs painfully", "is in agony", "anguishes", "feels broken", "feels terrible") + side_feedback += list("Your neck stiffs", "You feel pressure in your [plaintext_zone]", "The back of your eyes begin hurt", "You feel a terrible migrane") + if(90 to INFINITY) + var/bonus_emote = pick(PAIN_EMOTES) + owner.pain_emote(pick("groan", bonus_emote)) + owner.flash_pain_overlay(2, 2 SECONDS) + feedback_phrases += list("hurts madly", "is in agony", "is anguishing", "feels terrible", "is in agony", "feels tense") + side_feedback += list("You feel a splitting migrane", "Pressure floods your [plaintext_zone]", "Your [plaintext_zone] feels as if it's being squeezed", "Your eyes hurt to keep open") + + if(side_feedback.len && last_received_pain_type == BRUTE && SPT_PROB(50, seconds_per_tick)) + owner.pain_message(span_danger("[pick(side_feedback)][healing_pain ? ", [pick(healing_phrases)]." : "!"]")) + else if(feedback_phrases.len) + owner.pain_message(span_danger("Your [plaintext_zone] [pick(feedback_phrases)][healing_pain ? ", [pick(healing_phrases)]." : "!"]")) + + return TRUE + +// --- Legs --- +/obj/item/bodypart/leg/on_gain_pain_effects(amount) + . = ..() + if(!.) + return + + if(get_modified_pain() < 40) + return + if(amount < 5) // only big bursts of pain will cause a limp + return + owner.apply_status_effect(/datum/status_effect/limp/pain, src) + +// --- Right Leg --- +/obj/item/bodypart/leg/right/robot + pain = PAIN_LIMB_MAX * 0.5 + bodypart_pain_modifier = 0.2 + +/obj/item/bodypart/leg/right/robot/surplus + pain = 0 + bodypart_pain_modifier = 0.8 + +// --- Left Leg --- +/obj/item/bodypart/leg/left/robot + pain = PAIN_LIMB_MAX * 0.5 + bodypart_pain_modifier = 0.2 + +/obj/item/bodypart/leg/left/robot/surplus + pain = 0 + bodypart_pain_modifier = 0.8 + + +// --- Right Arm --- +/obj/item/bodypart/arm/right/robot + pain = PAIN_LIMB_MAX * 0.5 + bodypart_pain_modifier = 0.2 + +/obj/item/bodypart/arm/right/robot/surplus + pain = 0 + bodypart_pain_modifier = 0.8 + +// --- Left Arm --- +/obj/item/bodypart/arm/right/robot + pain = PAIN_LIMB_MAX * 0.5 + bodypart_pain_modifier = 0.2 + +/obj/item/bodypart/arm/left/robot/surplus + pain = 0 + bodypart_pain_modifier = 0.8 diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/generic.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/generic.dm new file mode 100644 index 000000000000..ce7d020df001 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/generic.dm @@ -0,0 +1,55 @@ +// -- Causes of pain, from non-modular actions -- +/datum/brain_trauma/mild/concussion/on_life(seconds_per_tick, times_fired) + . = ..() + if(SPT_PROB(1, seconds_per_tick)) + owner.cause_pain(BODY_ZONE_HEAD, 10) + +// Shocks +/mob/living/carbon/human/electrocute_act(shock_damage, source, siemens_coeff = 1, flags = NONE) + . = ..() + if(!.) + return + + sharp_pain(BODY_ZONES_ALL, min((. / 2), 25), BURN) + set_timed_pain_mod(PAIN_MOD_RECENT_SHOCK, 0.5, 30 SECONDS) + +// Fleshmend of course heals pain. +/datum/status_effect/fleshmend/tick() + . = ..() + if(iscarbon(owner) && !owner.on_fire) + var/mob/living/carbon/carbon_owner = owner + carbon_owner.cause_pain(BODY_ZONES_ALL, -2) + +// Regen cores. +/datum/status_effect/regenerative_core/on_apply() + . = ..() + var/mob/living/carbon/human/human_owner = owner + if(istype(human_owner) && human_owner.pain_controller) + human_owner.cause_pain(BODY_ZONES_LIMBS, -25) + human_owner.cause_pain(BODY_ZONE_CHEST, -30) + human_owner.cause_pain(BODY_ZONE_HEAD, -15) // heals 90 pain total + +// Flight potion's flavor says "it hurts a shit ton bro", so it should cause decent pain +/datum/reagent/flightpotion/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE) + var/has_wings_before = exposed_mob.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) + . = ..() + if(iscarbon(exposed_mob) && exposed_mob.stat != DEAD) + var/mob/living/carbon/exposed_carbon = exposed_mob + if(reac_volume < 5 || !(ishumanbasic(exposed_carbon) || islizard(exposed_carbon) || ismoth(exposed_carbon))) + return + if(has_wings_before) + exposed_carbon.cause_pain(BODY_ZONE_HEAD, 10) + exposed_carbon.cause_pain(BODY_ZONE_CHEST, 45) + exposed_carbon.cause_pain(list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM), 18) + else + exposed_carbon.cause_pain(BODY_ZONE_HEAD, 16) + exposed_carbon.cause_pain(BODY_ZONE_CHEST, 75) + exposed_carbon.cause_pain(list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM), 30) + +/datum/wound/blunt/bone/moderate/chiropractice(mob/living/carbon/human/user) + . = ..() + user.cause_pain(limb.body_zone, 25) + +/datum/wound/blunt/bone/moderate/malpractice(mob/living/carbon/human/user) + . = ..() + user.cause_pain(limb.body_zone, 40) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/opiods.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/opiods.dm new file mode 100644 index 000000000000..fdbb8969da43 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/opiods.dm @@ -0,0 +1,27 @@ +/datum/addiction/opioids + withdrawal_stage_messages = list( + "My body aches all over...", + "I need some pain relief...", + "It hurts all over...I need some opioids!", + ) + +/datum/addiction/opioids/withdrawal_stage_1_process(mob/living/carbon/affected_carbon, seconds_per_tick) + . = ..() + if(!affected_carbon.pain_controller) + return + if(affected_carbon.pain_controller.get_average_pain() <= 10 && SPT_PROB(8, seconds_per_tick)) + affected_carbon.cause_pain(BODY_ZONES_ALL, 0.5 * seconds_per_tick) + +/datum/addiction/opioids/withdrawal_stage_2_process(mob/living/carbon/affected_carbon, seconds_per_tick) + . = ..() + if(!affected_carbon.pain_controller) + return + if(affected_carbon.pain_controller.get_average_pain() <= 20 && SPT_PROB(8, seconds_per_tick)) + affected_carbon.cause_pain(BODY_ZONES_ALL, 1 * seconds_per_tick) + +/datum/addiction/opioids/withdrawal_stage_3_process(mob/living/carbon/affected_carbon, seconds_per_tick) + . = ..() + if(!affected_carbon.pain_controller) + return + if(affected_carbon.pain_controller.get_average_pain() <= 30 && SPT_PROB(8, seconds_per_tick)) + affected_carbon.cause_pain(BODY_ZONES_ALL, 1.5 * seconds_per_tick) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/surgery.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/surgery.dm new file mode 100644 index 000000000000..be9a8769490b --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/causes/surgery.dm @@ -0,0 +1,236 @@ +/datum/surgery_step + /// Moodlet given if a surgery is done without anesthetics + var/surgery_moodlet = /datum/mood_event/surgery + /// Pain overlay flashed if a surgery is done without anesthetics + var/pain_overlay_severity = 1 + /// How much pain this gives (given out in display_pain, so this might be given out twice) + var/pain_amount = 0 + /// What type of pain this gives + var/pain_type = BRUTE + +// Regex for updating existing display pain calls: +// display_pain\((.+)\) -> display_pain($1, target_zone = target_zone) // NON-MODULE CHANGE +/datum/surgery_step/display_pain(mob/living/carbon/target, pain_message, mechanical_surgery = FALSE, target_zone) + // Only feels pain if we feels pain + if(pain_amount <= 0 || isnull(target_zone) || !target.can_feel_pain()) + return FALSE + + // No pain from mechanics but still show the message (usually) + if(mechanical_surgery) + if(prob(70)) + target.pain_message(span_userdanger(pain_message)) + return FALSE + + target.cause_pain(target_zone, pain_amount, pain_type) + + if(target.IsSleeping() || target.stat >= UNCONSCIOUS) + if(target.has_status_effect(/datum/status_effect/grouped/anesthetic)) + target.add_mood_event("surgery", /datum/mood_event/anesthetic) + return FALSE + if(ispath(surgery_moodlet)) + target.add_mood_event("surgery", surgery_moodlet) + if(isnum(pain_overlay_severity)) + target.flash_pain_overlay(pain_overlay_severity) + // No message if the pain emote fails + if(!target.pain_emote()) + return FALSE + if(!target.pain_message(span_userdanger(pain_message))) + return FALSE + return TRUE + +/datum/surgery_step/brainwash/sleeper_agent + pain_amount = 36 + +/datum/surgery_step/sever_limb + pain_amount = 16 // Losing a limb also applies pain to chest + +/datum/surgery_step/repair_bone_hairline + pain_amount = 16 + +/datum/surgery_step/reset_compound_fracture + pain_amount = 24 + +/datum/surgery_step/fix_brain + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 24 + +/datum/surgery_step/debride + pain_amount = 12 + pain_type = BURN + +/datum/surgery_step/handle_cavity + pain_amount = 16 + +/datum/surgery_step/incise_heart + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + // It is extremely unlikely this surgery is done on alive people to feel (most) of this + pain_amount = 60 + +/datum/surgery_step/coronary_bypass + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 30 + +/datum/surgery_step/coronary_bypass/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + . = ..() + // Reduces pain from surgery a bit on success + target.cause_pain(target_zone, pain_amount * -0.5, pain_type) + +/datum/surgery_step/coronary_bypass/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery) + . = ..() + // Double pain from surgery + target.cause_pain(target_zone, pain_amount, pain_type) + +/datum/surgery_step/fix_eyes + pain_amount = 9 + +/datum/surgery_step/gastrectomy + pain_amount = 20 + +/datum/surgery_step/gastrectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + . = ..() + // Reduces pain from surgery a bit on success + target.cause_pain(target_zone, pain_amount * -1.25, pain_type) + +/datum/surgery_step/gastrectomy/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery) + . = ..() + // Double pain from surgery + target.cause_pain(target_zone, pain_amount, pain_type) + +/datum/surgery_step/heal + pain_amount = 9 + +/datum/surgery_step/hepatectomy + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 20 + +/datum/surgery_step/hepatectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + . = ..() + // Reduces pain from surgery a bit on success + target.cause_pain(target_zone, pain_amount * -1.25, pain_type) + +/datum/surgery_step/hepatectomy/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery) + . = ..() + // Double pain from surgery + target.cause_pain(target_zone, pain_amount, pain_type) + +/datum/surgery_step/extract_implant + pain_amount = 24 + +/datum/surgery_step/cut_fat + pain_amount = 16 + +/datum/surgery_step/lobectomy + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 20 + +/datum/surgery_step/incise + pain_amount = 12 + +/datum/surgery_step/incise/nobleed + pain_amount = 3 + +/datum/surgery_step/clamp_bleeders + pain_amount = 3 + +/datum/surgery_step/retract_skin + pain_amount = 12 + +/datum/surgery_step/close + pain_amount = 12 + pain_type = BURN + +/datum/surgery_step/saw + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + // no pain_amount here because it uses apply_damage, which causes pain + +/datum/surgery_step/drill + pain_amount = 24 + +/datum/surgery_step/reshape_face + pain_amount = 16 + +/datum/surgery_step/repair_innards + pain_amount = 16 + +/datum/surgery_step/stomach_pump + pain_amount = 12 + +/datum/surgery_step/brainwash + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 40 + +/datum/surgery_step/lobotomize + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 40 + +/datum/surgery_step/bionecrosis + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 40 + +/datum/surgery_step/pacify + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 40 + +/datum/surgery_step/viral_bond + pain_amount = 24 + pain_type = BURN + +/datum/surgery_step/wing_reconstruction + pain_amount = 9 + pain_type = BURN + +/datum/surgery_step/fold_cortex + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 40 + +/datum/surgery_step/imprint_cortex + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 40 + +/datum/surgery_step/reshape_ligaments + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 10 + pain_type = BURN + +/datum/surgery_step/reinforce_ligaments + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 10 + pain_type = BURN + +/datum/surgery_step/muscled_veins + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 15 + pain_type = BURN + +/datum/surgery_step/ground_nerves + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 15 + pain_type = BURN + +/datum/surgery_step/splice_nerves + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 15 + pain_type = BURN + +/datum/surgery_step/thread_veins + surgery_moodlet = /datum/mood_event/surgery/major + pain_overlay_severity = 2 + pain_amount = 15 + pain_type = BURN diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/effects.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/effects.dm new file mode 100644 index 000000000000..91f06698b764 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/effects.dm @@ -0,0 +1,109 @@ +// -- Pain effects - mood and modifiers. -- + +/atom/movable/screen/fullscreen/pain + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/hud/screen_full.dmi' + icon_state = "painoverlay" + layer = UI_DAMAGE_LAYER + +/mob/living/proc/flash_pain_overlay(severity = 1, time = 1 SECONDS) + if(client?.prefs) + if(client.prefs.read_preference(/datum/preference/toggle/pain_flashes)) + clear_fullscreen("pain", time) + return + overlay_fullscreen("pain", /atom/movable/screen/fullscreen/pain, severity) + clear_fullscreen("pain", time) + +/datum/movespeed_modifier/pain + id = MOVESPEED_ID_PAIN + movetypes = GROUND + +// >= 100 total pain +/datum/movespeed_modifier/pain/light + multiplicative_slowdown = 0.1 + +// >= 200 total pain +/datum/movespeed_modifier/pain/medium + multiplicative_slowdown = 0.2 + +// >= 300 total pain +/datum/movespeed_modifier/pain/heavy + multiplicative_slowdown = 0.35 + +// >= 400 total pain +/datum/movespeed_modifier/pain/crippling + multiplicative_slowdown = 0.5 + +/datum/actionspeed_modifier/pain + id = ACTIONSPEED_ID_PAIN + +// >= 100 total pain +/datum/actionspeed_modifier/pain/light + multiplicative_slowdown = 0.2 + +// >= 200 total pain +/datum/actionspeed_modifier/pain/medium + multiplicative_slowdown = 0.2 + +// >= 300 total pain +/datum/actionspeed_modifier/pain/heavy + multiplicative_slowdown = 0.35 + +// >= 400 total pain +/datum/actionspeed_modifier/pain/crippling + multiplicative_slowdown = 0.5 + +/datum/mood_event/light_pain + description = "Everything aches." + mood_change = -3 + +/datum/mood_event/med_pain + description = "Everything feels sore." + mood_change = -6 + +/datum/mood_event/heavy_pain + description = "Everything hurts!" + mood_change = -10 + +/datum/mood_event/crippling_pain + description = "STOP THE PAIN!" + mood_change = -15 + +// Applied when you go under the knife with anesthesia +/datum/mood_event/anesthetic + description = "Thank science for modern medicine." + mood_change = 2 + timeout = 6 MINUTES + +// Applied by most surgeries if you get operated on without anesthetics +/datum/mood_event/surgery + description = "They're operating on me while I'm awake!" + mood_change = -6 + timeout = 3 MINUTES + +// Applied by some surgeries that are especially bad without anesthetics +/datum/mood_event/surgery/major + description = "THEY'RE CUTTING ME OPEN!!" + mood_change = -10 + timeout = 6 MINUTES + +/atom/movable/screen/alert/numbed + name = "Numbed" + desc = "Your body is numb, painless. You're under the effect of some kind of painkiller." + icon_state = "drugged" + +/datum/mood_event/narcotic_light + description = "I feel numb." + mood_change = 4 + timeout = 3 MINUTES + +/datum/emote/living/carbon/human/scream + +/datum/emote/living/carbon/human/scream/can_run_emote(mob/living/carbon/human/user, status_check, intentional) + if(intentional) + return ..() + + // Cut unintentional screems if they can't feel pain at the moment + if(!user.can_feel_pain()) + return FALSE + + return ..() diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/helpers.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/helpers.dm new file mode 100644 index 000000000000..4444c2f5b763 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/helpers.dm @@ -0,0 +1,154 @@ +// -- Helper procs and hooks for pain. -- +/mob/living + /// The pain controller datum - tracks, processes, and handles pain. + /// Only intialized on humans (currently), here for ease of access / future compatibillity? + var/datum/pain/pain_controller + +/mob/living/Destroy() + QDEL_NULL(pain_controller) + return ..() + +/mob/living/carbon/human/Initialize(mapload) + . = ..() + var/datum/pain/new_pain_controller = new(src) + if(!QDELETED(new_pain_controller)) + pain_controller = new_pain_controller + +/** + * Causes pain to this mob. + * + * Note that most damage causes pain regardless, but this is still useful for direct pain damage + * + * * target_zone - required, which zone or zones to afflict pain to + * * amount - how much pain to inflict + * * dam_type - the type of pain to inflict. Only [BRUTE] and [BURN] really matters. + */ +/mob/living/proc/cause_pain(target_zone, amount, dam_type = BRUTE) + ASSERT(!isnull(target_zone)) + ASSERT(isnum(amount)) + return pain_controller?.adjust_bodypart_pain(target_zone, amount, dam_type) + +/** + * Runs an emote on the pain emote cooldown + * Emote supplied does NOT need to be a pain emote + * + * If no emote is supplied, randomly picks from all pain-related emotes + * + * * emote - what emote key to run + * * cooldown - applies cooldown on doing similar pain related emotes + */ +/mob/living/proc/pain_emote(emote, cooldown) + return pain_controller?.do_pain_emote(emote, cooldown) + +/** + * Runs a pain message on the pain message cooldown + * + * * message - the message to send + * * painless_message - optional, the message to send if the mob does not feel pain + * * cooldown - applies cooldown on doing similar pain messages + */ +/mob/living/proc/pain_message(message, painless_message, cooldown) + return pain_controller?.do_pain_message(message, painless_message, cooldown) + +/** + * Adjust the minimum pain the target zone can experience for a time + * + * This means that the target zone will not be able to go below the specified pain amount + * + * * target_zone - required, which zone to afflict pain to + * * amount - how much min pain to increase + * * time - how long to incease the min pain to + */ +/mob/living/proc/apply_min_pain(target_zone, amount, time) + ASSERT(!isnull(target_zone)) + ASSERT(isnum(amount)) + ASSERT(isnum(time)) + return apply_status_effect(/datum/status_effect/minimum_bodypart_pain, target_zone, amount, time) + +/** + * Sets the pain modifier of [id] to [amount]. + */ +/mob/living/proc/set_pain_mod(id, amount) + ASSERT(isnum(amount)) + ASSERT(istext(id) || ispath(id)) + return pain_controller?.set_pain_modifier(id, amount) + +/** + * Unsets the pain mod at the supplied [id]. + */ +/mob/living/proc/unset_pain_mod(id) + ASSERT(istext(id) || ispath(id)) + return pain_controller?.unset_pain_modifier(id) + +/** + * Checks if this mob can feel pain. + * + * By default mobs cannot feel pain if they have a pain modifier of 0.5 or less. + */ +/mob/living/proc/can_feel_pain() + return pain_controller?.pain_modifier > 0.5 && !HAS_TRAIT(src, TRAIT_NO_PAIN_EFFECTS) + +/** + * Adjusts the progress of pain shock on the current mob. + * + * * amount - the number of ticks of progress to remove. Note that one tick = two seconds for pain. + * * down_to - the minimum amount of pain shock the mob can have. Defaults to -30, giving the mob a buffer against shock. + */ +/mob/living/proc/adjust_pain_shock(amount, down_to = -30) + if(isnull(pain_controller)) + return + if(amount > 0 && HAS_TRAIT(src, TRAIT_NO_SHOCK_BUILDUP)) + return + + ASSERT(isnum(amount)) + pain_controller.shock_buildup = max(pain_controller.shock_buildup + amount, down_to) + +/** + * Cause [amount] of [dam_type] sharp pain to [target_zones]. + * Sharp pain is for sudden spikes of pain that go away after [duration] deciseconds. + * + * * target_zones - requried, one or multiple target zones to apply sharp pain to + * * amount - how much sharp pain to inflict + * * dam_type - the type of sharp pain to inflict. Only [BRUTE] and [BURN] really matters. + * * duration - how long the sharp pain lasts for + */ +/mob/living/proc/sharp_pain(target_zones, amount, dam_type = BRUTE, duration = 1 MINUTES) + if(isnull(pain_controller)) + return + ASSERT(!isnull(target_zones)) + ASSERT(isnum(amount)) + + if(!islist(target_zones)) + target_zones = list(target_zones) + for(var/zone in target_zones) + apply_status_effect(/datum/status_effect/sharp_pain, zone, amount, dam_type, duration) + +/** + * Set [id] pain modifier to [amount], and + * unsets it after [time] deciseconds have elapsed. + */ +/mob/living/proc/set_timed_pain_mod(id, amount, time) + if(isnull(pain_controller)) + return + ASSERT(isnum(amount)) + ASSERT(isnum(time)) + ASSERT(istext(id) || ispath(id)) + if(time <= 0) + // no-op rather than stack trace or anything, so code with variable time can ignore it + return + + set_pain_mod(id, amount) + addtimer(CALLBACK(pain_controller, TYPE_PROC_REF(/datum/pain, unset_pain_modifier), id), time) + +/** + * Returns the bodypart pain of [zone]. + * If [get_modified] is TRUE, returns the bodypart's pain multiplied by any modifiers affecting it. + */ +/mob/living/proc/get_bodypart_pain(target_zone, get_modified = FALSE) + ASSERT(!isnull(target_zone)) + + var/obj/item/bodypart/checked_bodypart = pain_controller?.body_zones[target_zone] + if(isnull(checked_bodypart)) + return 0 + + return get_modified ? checked_bodypart.get_modified_pain() : checked_bodypart.pain diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/item_helpers.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/item_helpers.dm new file mode 100644 index 000000000000..b4c18b0a59de --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/item_helpers.dm @@ -0,0 +1,3 @@ +/obj/item + ///the pain damage we do + var/pain_damage diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/modifiers.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/modifiers.dm new file mode 100644 index 000000000000..3d30c8f8348b --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/modifiers.dm @@ -0,0 +1,125 @@ +// -- Pain modifiers. -- +// Species pain modifiers. +/datum/species/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) + . = ..() + if(isnum(species_pain_mod) && species_pain_mod != 1) + C.set_pain_mod(PAIN_MOD_SPECIES, species_pain_mod) + +/datum/species/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) + . = ..() + C.unset_pain_mod(PAIN_MOD_SPECIES) + +// Eternal youth gives a small bonus pain mod. +/datum/symptom/youth/Activate(datum/disease/advance/A) + . = ..() + if(!.) + return + switch(A.stage) + if(5) + A.affected_mob.set_pain_mod(name, 0.9) + +/datum/symptom/youth/End(datum/disease/advance/A) + . = ..() + if(!.) + return + A.affected_mob.unset_pain_mod(name) + +// Some Traumas + +/datum/brain_trauma/special/tenacity/on_gain() + . = ..() + owner.set_pain_mod(name, 0) + +/datum/brain_trauma/special/tenacity/on_lose() + owner.unset_pain_mod(name) + return ..() + +// Near death experience +/mob/living/carbon/human/set_health(new_value) + . = ..() + if(HAS_TRAIT_FROM(src, TRAIT_KNOCKEDOUT, CRIT_HEALTH_TRAIT)) + src.add_mood_event("near-death", /datum/mood_event/deaths_door) + set_pain_mod(PAIN_MOD_NEAR_DEATH, 0.1) + else + src.clear_mood_event("near-death") + unset_pain_mod(PAIN_MOD_NEAR_DEATH) + +// Stasis gives you a pain modifier and stops pain decay +// +// This is kind of a cop-out, I admit: +// Loigcally, you shouldn't feel any pain on stasis, since all of your body systems are frozen +// However, for balance this kneecaps surgery by making it a no-brainer to use stasis +// +// As a result, I'm opting to add just a "decent" pain modifier instead +/datum/status_effect/grouped/stasis/on_apply() + . = ..() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.set_pain_mod(id, 0.5) + +/datum/status_effect/grouped/stasis/on_remove() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.unset_pain_mod(id) + return ..() + +// Determination gives a hefty pain modifier +/datum/status_effect/determined/on_apply() + . = ..() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.set_pain_mod(id, 0.625) + ADD_TRAIT(owner, TRAIT_NO_PAIN_EFFECTS, TRAIT_STATUS_EFFECT(id)) + ADD_TRAIT(owner, TRAIT_NO_SHOCK_BUILDUP, TRAIT_STATUS_EFFECT(id)) + +/datum/status_effect/determined/on_remove() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.unset_pain_mod(id) + REMOVE_TRAIT(owner, TRAIT_NO_PAIN_EFFECTS, TRAIT_STATUS_EFFECT(id)) + REMOVE_TRAIT(owner, TRAIT_NO_SHOCK_BUILDUP, TRAIT_STATUS_EFFECT(id)) + return ..() + +// Fake healthy is supposed to mimic feeling no pain +/datum/status_effect/grouped/screwy_hud/fake_healthy/on_apply() + . = ..() + ADD_TRAIT(owner, TRAIT_NO_PAIN_EFFECTS, TRAIT_STATUS_EFFECT(id)) + +/datum/status_effect/grouped/screwy_hud/fake_healthy/on_remove() + . = ..() + REMOVE_TRAIT(owner, TRAIT_NO_PAIN_EFFECTS, TRAIT_STATUS_EFFECT(id)) + +// Being drunk gives a slight one, note the actual reagent gives one based on its strength +/datum/status_effect/inebriated/drunk/on_apply() + . = ..() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.set_pain_mod(id, 0.9) + +/datum/status_effect/inebriated/drunk/on_remove() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.unset_pain_mod(id) + return ..() + +// Being drowsy gives a very slight one +/datum/status_effect/drowsiness/on_apply() + . = ..() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.set_pain_mod(id, 0.95) + +/datum/status_effect/drowsiness/on_remove() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.unset_pain_mod(id) + return ..() + +// Reacting to all cases of gaining knocked out rather than just sleeping +/mob/living/on_knockedout_trait_gain(datum/source) + . = ..() + set_pain_mod(PAIN_MOD_KOD, 0.8) + +/mob/living/on_knockedout_trait_loss(datum/source) + . = ..() + unset_pain_mod(PAIN_MOD_KOD) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/pain_assistance_tools.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/pain_assistance_tools.dm new file mode 100644 index 000000000000..57d8200e5b9c --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/pain_assistance_tools.dm @@ -0,0 +1,559 @@ +// -- Implements and equipment to help reduce pain. -- +// Temperature pack stuff - things you can press to people to help reduce pain. +/// Heal rate and modifier for generic items that are frozen. +#define FROZEN_ITEM_PAIN_RATE 1 +#define FROZEN_ITEM_PAIN_MODIFIER 0.5 +#define FROZEN_ITEM_TEMPERATURE_CHANGE -5 + +// Holding a beer to your busted arm, now that's classic +/obj/item/reagent_containers/cup/glass/bottle/beer/Initialize(mapload) + . = ..() + if(reagents.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) > 1) + AddElement(/datum/element/temperature_pack, \ + pain_heal_rate = 0.3, \ + pain_modifier_on_limb = 0.9, \ + temperature_change = -2) + +// Frozen items become usable temperature packs. +/datum/element/frozen/Attach(datum/target) + . = ..() + if(. == ELEMENT_INCOMPATIBLE) + return + if(!isitem(target)) + return + + target.AddElement(/datum/element/temperature_pack, FROZEN_ITEM_PAIN_RATE, FROZEN_ITEM_PAIN_MODIFIER, FROZEN_ITEM_TEMPERATURE_CHANGE) + +/datum/element/frozen/Detach(datum/source, ...) + . = ..() + if(!isitem(source)) + return + + source.RemoveElement(/datum/element/temperature_pack, FROZEN_ITEM_PAIN_RATE, FROZEN_ITEM_PAIN_MODIFIER, FROZEN_ITEM_TEMPERATURE_CHANGE) + +/// Temperature packs (heat packs, cold packs). Apply to hurt limb to un-hurty. +/obj/item/temperature_pack + name = "temperature pack" + desc = "A temperature pack, to soothe pain." + w_class = WEIGHT_CLASS_SMALL + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/pain_items.dmi' + lefthand_file = 'monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_lhand.dmi' + righthand_file = 'monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_rhand.dmi' + icon_state = "cold_pack" + throwforce = 0 + throw_speed = 2 + throw_range = 5 + attack_verb_continuous = list("pads") + attack_verb_simple = list("pads") + /// Whether our pack has been used. + var/used = FALSE + /// Whether our pack is active. + var/active = FALSE + /// The amount of pain that our pack heals when used. + var/pain_heal_amount = 0 + /// The modifier put onto the limb when used. + var/pain_limb_modifier = 1 + /// The change in temperature applied to the user while our pack is in use. + var/temperature_change = 0 + +/obj/item/temperature_pack/Initialize(mapload) + . = ..() + update_appearance() + +/obj/item/temperature_pack/attack_self(mob/user, modifiers) + . = ..() + if(.) + return + + if(used) + return + + used = TRUE + activate_pack(user) + return TRUE + +/obj/item/temperature_pack/examine(mob/user) + . = ..() + if(used) + if(active) + . += span_notice("It's used, but emanating [temperature_change > 0 ? "heat" : "a chill"].") + else + . += span_notice("It's used up and empty.") + else + . += span_notice("Use it in hand to activate the pack, [temperature_change > 0 ? "heating it up" : "cooling it down"].") + +/obj/item/temperature_pack/update_overlays() + . = ..() + if(!used || active) + if(temperature_change > 0) + . += "heat_overlay" + if(active) + . += "active_heat_overlay" + else + . += "cold_overlay" + if(active) + . += "active_cold_overlay" + +/** + * Activate [src] from [user], making it into a temperature pack that can be used, that expires in 5 minutes. + */ +/obj/item/temperature_pack/proc/activate_pack(mob/user) + addtimer(CALLBACK(src, PROC_REF(deactivate_pack)), 5 MINUTES) + to_chat(user, span_notice("You crack [src], [temperature_change > 0 ? "heating it up" : "cooling it down"].")) + AddElement(/datum/element/temperature_pack, pain_heal_amount, pain_limb_modifier, temperature_change) + active = TRUE + update_appearance() + +/** + * Deactivate [src], making it unusable, and sending signal [COMSIG_TEMPERATURE_PACK_EXPIRED]. + */ +/obj/item/temperature_pack/proc/deactivate_pack() + SEND_SIGNAL(src, COMSIG_TEMPERATURE_PACK_EXPIRED) + visible_message(span_notice("[src] fizzles as the last of its [temperature_change > 0 ? "heat" : "chill"] runs out.")) + RemoveElement(/datum/element/temperature_pack, pain_heal_amount, pain_limb_modifier, temperature_change) + active = FALSE + name = "used [name]" + desc = "A used up [name]. It's no use to anyone anymore." + update_appearance() + +// Head packs have a stronger modifier, but heals less. +/obj/item/temperature_pack/heat + name = "heat pack" + desc = "A heat pack. Crack it to turn it on and apply it to an aching limb to reduce joint stress and moderate pain." + temperature_change = 5 + pain_heal_amount = 3.6 + pain_limb_modifier = 0.5 + +// Cold packs heal more, but have a weaker modifier. +/obj/item/temperature_pack/cold + name = "cold pack" + desc = "A cold pack. Crack it on and apply it to a hurt limb to abate sharp pain." + temperature_change = -5 + pain_heal_amount = 6 + pain_limb_modifier = 0.75 + +/obj/item/reagent_containers/pill/aspirin + name = "aspirin pill" + desc = "Used to treat moderate pain and fever. Metabolizes slowly. Best at treating chest pain." + icon_state = "pill7" + list_reagents = list(/datum/reagent/medicine/painkiller/aspirin = 10) // Lasts ~4 minutes, heals ~20 pain in chest (lower in other parts) + rename_with_volume = TRUE + +/obj/item/reagent_containers/syringe/aspirin + name = "syringe (aspirin)" + desc = "Contains fiteen units of aspirin. Used to treat chest pain and fever. Metabolizes slowly." + list_reagents = list(/datum/reagent/medicine/painkiller/aspirin = 15) + +/obj/item/reagent_containers/pill/ibuprofen + name = "ibuprofen pill" + desc = "Used to treat mild pain, headaches, and fever. Metabolizes slowly. Best at treating head pain." + icon_state = "pill8" + list_reagents = list(/datum/reagent/medicine/painkiller/ibuprofen = 10) // Lasts ~4 minutes, heals ~20 pain in head (lower in other parts) + rename_with_volume = TRUE + +/obj/item/reagent_containers/syringe/ibuprofen + name = "syringe (ibuprofen)" + desc = "Contains fiteen units of ibuprofen. Used to treat head pain headaches, and fever. Metabolizes slowly." + list_reagents = list(/datum/reagent/medicine/painkiller/ibuprofen = 15) + +/obj/item/reagent_containers/pill/paracetamol + name = "paracetamol pill" + desc = "Used to treat moderate pain and headaches. Metabolizes slowly. Good as a general painkiller." + icon_state = "pill9" + list_reagents = list(/datum/reagent/medicine/painkiller/paracetamol = 10) // Lasts ~4 minutes, heals ~15 pain per bodypart + rename_with_volume = TRUE + +/obj/item/reagent_containers/syringe/paracetamol + name = "syringe (paracetamol)" + desc = "Contains fiteen units of Paracetamol. Used to treat general pain. Metabolizes slowly." + list_reagents = list(/datum/reagent/medicine/painkiller/paracetamol = 15) + +/obj/item/reagent_containers/pill/morphine/diluted + desc = "Used to treat major to severe pain. Causes moderate drowsiness. Mildly addictive." + icon_state = "pill11" + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 5) // Lasts ~1 minute, heals ~10 pain per bodypart (~100 pain) // NON-MODULE CHANGE + rename_with_volume = TRUE + +/obj/item/reagent_containers/syringe/morphine + name = "syringe (morphine)" + desc = "Contains three injections of Morphine. Used to treat major to severe pain. Causes moderate drowsiness. Mildly addictive." + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 15) // NON-MODULE CHANGE + +/obj/item/reagent_containers/pill/oxycodone + name = "oxycodone pill" + desc = "Used to treat severe to extreme pain. Rapid acting, may cause delirium. Very addictive." + icon_state = "pill12" + list_reagents = list(/datum/reagent/medicine/painkiller/oxycodone = 5) // Lasts ~1 minute, heals ~20 pain per bodypart (~200 pain) + rename_with_volume = TRUE + +/obj/item/reagent_containers/syringe/oxycodone + name = "syringe (oxycodone)" + desc = "Contains three injections of Oxycodone. Used to treat severe to extreme pain. Rapid acting, may cause delirium. Very addictive." + list_reagents = list(/datum/reagent/medicine/painkiller/oxycodone = 15) + +/obj/item/reagent_containers/pill/aspirin_para_coffee + name = "aspirin/paracetamol/caffeine pill" + desc = "A mix of Aspirin, Paracetamol and Coffee to produce an effective, but short lasting painkiller with little to no side effects. Do not take multiple at once." + list_reagents = list(/datum/reagent/medicine/painkiller/aspirin_para_coffee = 10) + +/obj/item/storage/pill_bottle/prescription + name = "prescription pill bottle" + desc = "Contains prescription pills." + /// Typepath of pill type to spawn + var/obj/item/reagent_containers/pill/pill_type = null + /// Number of pills to spawn + var/num_pills = 0 + +/obj/item/storage/pill_bottle/prescription/Initialize(mapload) + . = ..() + if(pill_type) + name = "[initial(pill_type.name)] bottle" + if(num_pills) + atom_storage.max_slots = num_pills + atom_storage.max_total_storage = num_pills + +/obj/item/storage/pill_bottle/prescription/PopulateContents() + if(num_pills && pill_type) + for(var/i in 1 to num_pills) + new pill_type(src) + +/obj/item/storage/pill_bottle/painkillers + name = "bottle of painkillers" + desc = "Contains multiple pills used to treat anywhere from mild to extreme pain. CAUTION: Do not take in conjunction with alcohol." + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/chemical.dmi' + custom_price = PAYCHECK_CREW * 3 + custom_premium_price = PAYCHECK_CREW * 3 + +/obj/item/storage/pill_bottle/painkillers/Initialize(mapload) + . = ..() + atom_storage.max_slots = 14 + atom_storage.max_total_storage = 14 + +/obj/item/storage/pill_bottle/painkillers/PopulateContents() + for(var/i in 1 to 3) + new /obj/item/reagent_containers/pill/aspirin(src) + for(var/i in 1 to 3) + new /obj/item/reagent_containers/pill/ibuprofen(src) + for(var/i in 1 to 3) + new /obj/item/reagent_containers/pill/paracetamol(src) + for(var/i in 1 to 3) + new /obj/item/reagent_containers/pill/morphine/diluted(src) + for(var/i in 1 to 2) + new /obj/item/reagent_containers/pill/oxycodone(src) + +/obj/item/reagent_containers/hypospray/medipen/morphine + name = "morphine medipen" + desc = "A medipen that contains a dosage of painkilling morphine. \ + WARNING: Do not use in combination with alcohol. Can cause drowsiness and addiction." + icon_state = "morphen" + inhand_icon_state = "morphen" + base_icon_state = "morphen" + list_reagents = list(/datum/reagent/medicine/painkiller/morphine = 10) // Heals ~20 pain (per limb) + +/// Miner pen. Heals about 30 pain to all limbs, causes ~150 addiction points +/obj/item/reagent_containers/hypospray/medipen/survival/painkiller + name = "survival painkiller medipen" + desc = "A medipen that contains a dosage of painkilling chemicals. \ + WARNING: Do not use in combination with alcohol. Can cause drowsiness." + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi' + icon_state = "painkiller_stimpen" + base_icon_state = "painkiller_stimpen" + volume = 30 + amount_per_transfer_from_this = 30 + list_reagents = list( + /datum/reagent/medicine/painkiller/paracetamol = 10, // Heals ~10 pain (per limb) + /datum/reagent/medicine/painkiller/aspirin_para_coffee = 5, // Heals ~7.5 pain (per limb) + /datum/reagent/medicine/painkiller/morphine = 5, // Heals ~10 pain (per limb), causes drowsy + /datum/reagent/medicine/synaptizine = 10, // Cures drowsy from morphine + ) + +/// Medkit pen. Heals about 35 pain to all limbs, causes ~450 addiction points +/obj/item/reagent_containers/hypospray/medipen/emergency_painkiller + name = "emergency painkiller medipen" + desc = "A medipen that contains a dosage of heavy painkilling chemicals. \ + WARNING: Do not use in combination with alcohol. Can cause drowsiness and addiction." + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi' + icon_state = "painkiller" + base_icon_state = "painkiller" + volume = 25 + amount_per_transfer_from_this = 25 + list_reagents = list( + /datum/reagent/medicine/painkiller/oxycodone = 7.5, // Heals ~25 pain (per limb) + /datum/reagent/medicine/painkiller/morphine = 5, // Heals ~10 pain (per limb), causes drowsy + /datum/reagent/medicine/synaptizine = 10, // Cures drowsyness from morphine + ) + +/obj/item/reagent_containers/hypospray/medipen/brute_painkiller + name = "ibaltifen painkiller medipen" + desc = "An autoinjector containing ibaltifen, used to treat pain caused by bruises and broken limbs. WARNING: Do not use in combination with alcohol." + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi' + icon_state = "burn_painkiller_pen" + base_icon_state = "burn_painkiller_pen" + inhand_icon_state = "salacid" + list_reagents = list(/datum/reagent/medicine/painkiller/specialized/ibaltifen = 10) // ~20-25 pain healing (if brute pain, per limb) + +/obj/item/reagent_containers/hypospray/medipen/burn_painkiller + name = "anurifen painkiller medipen" + desc = "An autoinjector containing anurifen, used to treat pain caused by bruises and broken limbs. WARNING: Do not use in combination with alcohol." + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/syringe.dmi' + icon_state = "brute_painkiller_pen" + base_icon_state = "brute_painkiller_pen" + inhand_icon_state = "oxapen" + list_reagents = list(/datum/reagent/medicine/painkiller/specialized/anurifen = 10) // ~20-25 pain healing (if burn pain, per limb) + +/datum/armor/shock_blanket + laser = 20 + energy = 20 + bomb = 20 + bio = 10 + fire = 100 + acid = 50 + +/** + * Shock blanket item. Hit someone to cover them with the blanket. + * If they lie down and stay still, it will regulate their body temperature. + */ +/obj/item/shock_blanket + name = "shock blanket" + desc = "A metallic looking plastic blanket specifically designed to well insulate anyone seeking comfort underneath." + icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/obj/pain_items.dmi' + worn_icon = 'monkestation/code/modules/can_spessmen_feel_pain/icons/mob/pain_items.dmi' + lefthand_file = 'monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_lhand.dmi' + righthand_file = 'monkestation/code/modules/can_spessmen_feel_pain/icons/mob/inhands/pain_items_rhand.dmi' + icon_state = "shockblanket" + base_icon_state = "shockblanket" + worn_icon_state = "shockblanket" + drop_sound = 'sound/items/handling/cloth_drop.ogg' + pickup_sound = 'sound/items/handling/cloth_pickup.ogg' + w_class = WEIGHT_CLASS_SMALL + slot_flags = ITEM_SLOT_OCLOTHING + body_parts_covered = CHEST + resistance_flags = FIRE_PROOF + heat_protection = CHEST|GROIN|LEGS|ARMS + cold_protection = CHEST|GROIN|LEGS|ARMS + max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT + armor_type = /datum/armor/shock_blanket + equip_delay_self = 3 SECONDS + equip_delay_other = 2 SECONDS + slowdown = 1.5 + throwforce = 0 + throw_speed = 1 + throw_range = 2 + custom_price = PAYCHECK_CREW * 2 + +/obj/item/shock_blanket/Initialize(mapload) + . = ..() + if(prob(5)) + name = pick("space blanket", "safety blanket") + + AddElement(/datum/element/bed_tuckable, 0, 0, 0) + AddElement(/datum/element/attack_equip) + +/obj/item/shock_blanket/examine(mob/user) + . = ..() + . += span_notice("To use: Apply to a patient experiencing shock or loss of body temperature. Keep patient still and lying down for maximum effect.") + +/obj/item/shock_blanket/attack_self(mob/user, modifiers) + . = ..() + if(.) + return + if(!user.dropItemToGround(src)) + return + + var/obj/structure/bed/bed_below = locate(/obj/structure/bed) in loc + to_chat(user, span_notice("You lay out [src] on [bed_below ? "[bed_below]" : "the floor"].")) + icon_state = "[initial(icon_state)]_dropped" + layer = MOB_LAYER + +/obj/item/shock_blanket/equipped(mob/user, slot) + . = ..() + if(!isliving(user)) + return + + if(slot_flags & slot) + RegisterSignal(user, list(COMSIG_LIVING_SET_BODY_POSITION, COMSIG_LIVING_SET_BUCKLED), PROC_REF(check_protection)) + RegisterSignal(user, list(COMSIG_QDELETING, COMSIG_MOVABLE_PRE_MOVE), PROC_REF(disable_protection)) + try_enable(user) + +/obj/item/shock_blanket/dropped(mob/user, silent) + . = ..() + disable_protection(user) + UnregisterSignal(user, list(COMSIG_LIVING_SET_BODY_POSITION, COMSIG_LIVING_SET_BUCKLED, COMSIG_QDELETING, COMSIG_MOVABLE_PRE_MOVE)) + + if(locate(/obj/structure/bed) in loc) + icon_state = "[base_icon_state]_dropped" + layer = MOB_LAYER + +/obj/item/shock_blanket/pickup(mob/user) + . = ..() + icon_state = base_icon_state + layer = initial(layer) + +/// If we can enable protection, does so. Returns true on success. +/obj/item/shock_blanket/proc/try_enable(mob/living/source) + if(source.body_position == LYING_DOWN || source.buckled) + enable_protection(source) + return TRUE + return FALSE + +/** + * Check if we should be recieving temperature protection. + * We only give protection if we're lying down or buckled - if we're moving, we don't get anything. + */ +/obj/item/shock_blanket/proc/check_protection(mob/living/source) + SIGNAL_HANDLER + + if(try_enable(source)) + return + + disable_protection(source) + +/** + * Enable the temperature protection. + */ +/obj/item/shock_blanket/proc/enable_protection(mob/living/source) + if(istype(source) && !(datum_flags & DF_ISPROCESSING)) + var/temp_change = "warmer" + if(source.bodytemperature > source.get_body_temp_normal(apply_change = FALSE)) + temp_change = "colder" + + to_chat(source, span_notice("You feel [temp_change] as [src] begins regulating your body temperature.")) + START_PROCESSING(SSobj, src) + +/** + * Disable the temperature protection. + */ +/obj/item/shock_blanket/proc/disable_protection(mob/living/source) + SIGNAL_HANDLER + + if(istype(source) && (datum_flags & DF_ISPROCESSING)) + var/temp_change = "freezing" + if(source.bodytemperature > source.get_body_temp_normal(apply_change = FALSE)) + temp_change = "hotter" + + to_chat(source, span_notice("You feel [temp_change] again as [src] stops regulating your body temperature.")) + + STOP_PROCESSING(SSobj, src) + +/obj/item/shock_blanket/process(seconds_per_tick) + var/mob/living/carbon/wearer = loc + if(!istype(wearer)) + disable_protection() + return + + var/target_temp = wearer.get_body_temp_normal(apply_change = FALSE) + if(wearer.bodytemperature > target_temp) + wearer.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, target_temp) + else if(wearer.bodytemperature < (target_temp + 1)) + wearer.adjust_bodytemperature(8 * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, target_temp) + if(ishuman(wearer)) + var/mob/living/carbon/human/human_wearer = wearer + if(human_wearer.coretemperature > target_temp) + human_wearer.adjust_coretemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, target_temp) + else if(human_wearer.coretemperature < (target_temp + 1)) + human_wearer.adjust_coretemperature(8 * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, target_temp) + +/obj/item/shock_blanket/emergency + desc = "An emergency variant shock blanket intended to be placed in medkits for field treatment. Faster to apply to patients, but more restrictive to movement." + slowdown = 2.5 + equip_delay_self = 1.2 SECONDS + equip_delay_other = 1.2 SECONDS + +/obj/item/shock_blanket/emergency/Initialize(mapload) + . = ..() + name = "emergency [name]" + +// Change the contents of first-aid kids. +/obj/item/storage/medkit/emergency/Initialize(mapload) + . = ..() + atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL + atom_storage.max_slots = 12 + atom_storage.max_total_storage = 16 + +/obj/item/storage/medkit/emergency/PopulateContents() + if(empty) + return + var/static/list/items_inside = list( + /obj/item/healthanalyzer/simple = 1, + /obj/item/stack/medical/gauze = 1, + /obj/item/stack/medical/suture/emergency = 1, + /obj/item/stack/medical/ointment = 1, + /obj/item/reagent_containers/hypospray/medipen/ekit = 2, + /obj/item/reagent_containers/hypospray/medipen/emergency_painkiller = 2, + /obj/item/storage/pill_bottle/iron = 1, + /obj/item/shock_blanket/emergency = 1, + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/medkit/regular/PopulateContents() + if(empty) + return + var/static/list/items_inside = list( + /obj/item/stack/medical/gauze = 1, + /obj/item/stack/medical/suture = 2, + /obj/item/stack/medical/mesh = 2, + /obj/item/reagent_containers/hypospray/medipen = 1, + /obj/item/reagent_containers/hypospray/medipen/morphine = 1, + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/medkit/brute/PopulateContents() + if(empty) + return + var/static/list/items_inside = list( + /obj/item/reagent_containers/pill/patch/libital = 3, + /obj/item/stack/medical/gauze = 1, + /obj/item/storage/pill_bottle/probital = 1, + /obj/item/reagent_containers/hypospray/medipen/salacid = 1, + /obj/item/reagent_containers/hypospray/medipen/brute_painkiller = 1, + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/medkit/fire/PopulateContents() + if(empty) + return + var/static/list/items_inside = list( + /obj/item/reagent_containers/pill/patch/aiuri = 3, + /obj/item/reagent_containers/spray/hercuri = 1, + /obj/item/stack/medical/ointment = 1, + /obj/item/reagent_containers/hypospray/medipen/oxandrolone = 1, + /obj/item/reagent_containers/hypospray/medipen/burn_painkiller = 1, + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/medkit/advanced/PopulateContents() + if(empty) + return + var/static/list/items_inside = list( + /obj/item/reagent_containers/pill/patch/synthflesh = 3, + /obj/item/storage/pill_bottle/prescription/aspirin_para_coffee = 1, + /obj/item/reagent_containers/hypospray/medipen/atropine = 2, + /obj/item/stack/medical/gauze = 1, + /obj/item/storage/pill_bottle/penacid = 1 + ) + generate_items_inside(items_inside, src) + +// Pain implements added to various vendors. +/obj/machinery/vending/drugs + products_monke = list( + /obj/item/storage/pill_bottle/painkillers = 2, + ) + +/obj/machinery/vending/medical + products_monke = list( + /obj/item/shock_blanket/emergency = 3, + /obj/item/temperature_pack/cold = 2, + /obj/item/temperature_pack/heat = 2, + ) + +/obj/machinery/vending/wallmed + products_monke = list( + /obj/item/shock_blanket/emergency = 2, + /obj/item/temperature_pack/cold = 1, + /obj/item/temperature_pack/heat = 1, + ) + +#undef FROZEN_ITEM_PAIN_RATE +#undef FROZEN_ITEM_PAIN_MODIFIER +#undef FROZEN_ITEM_TEMPERATURE_CHANGE diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/pain_goodies.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/pain_goodies.dm new file mode 100644 index 000000000000..8a37b388760d --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/pain_goodies.dm @@ -0,0 +1,3 @@ +/obj/item/storage/pill_bottle/prescription/aspirin_para_coffee + pill_type = /obj/item/reagent_containers/pill/aspirin_para_coffee + num_pills = 3 diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/preferences.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/preferences.dm new file mode 100644 index 000000000000..5e5d3ff76e12 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/preferences.dm @@ -0,0 +1,13 @@ +/datum/preference/toggle/pain_flashes + category = PREFERENCE_CATEGORY_GAME_PREFERENCES + savefile_key = "pain_flashes" + savefile_identifier = PREFERENCE_PLAYER + + default_value = FALSE + +/datum/preference/toggle/pain_messages + category = PREFERENCE_CATEGORY_GAME_PREFERENCES + savefile_key = "pain_messages" + savefile_identifier = PREFERENCE_PLAYER + + default_value = FALSE diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/modified_reagents.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/modified_reagents.dm new file mode 100644 index 000000000000..fa0289905d61 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/modified_reagents.dm @@ -0,0 +1,175 @@ +// -- Reagents that modify pain. -- +/datum/reagent + /// Modifier applied by this reagent to the mob's pain. + /// This is both a multiplicative modifier to their overall received pain, + /// and an additive modifier to their per tick pain decay rate. + var/pain_modifier = null + +/datum/reagent/on_mob_metabolize(mob/living/carbon/user) + . = ..() + // hi melbert, this should have SHOULD_CALL_PARENT(TRUE) + if(isnull(pain_modifier) || !istype(user)) + return + + if(user.set_pain_mod("[PAIN_MOD_CHEMS]-[name]", pain_modifier) && !user.can_feel_pain()) + // If the painkiller's strong enough give them an alert + user.throw_alert("numbed", /atom/movable/screen/alert/numbed) + +/datum/reagent/on_mob_end_metabolize(mob/living/carbon/user) + . = ..() + if(isnull(pain_modifier) || !istype(user)) + return + user.unset_pain_mod("[PAIN_MOD_CHEMS]-[name]") + +/datum/reagent/on_mob_delete(mob/living/L) + . = ..() + if(!isnull(pain_modifier) && L.can_feel_pain()) + L.clear_alert("numbed") + +// Muscle stimulant is functionally morphine without downsides (it's rare) +/datum/reagent/medicine/muscle_stimulant + pain_modifier = 0.5 + +// Epinephrine helps pain very very slightly and helps against shock +/datum/reagent/medicine/epinephrine + pain_modifier = 0.9 + +/datum/reagent/medicine/epinephrine/on_mob_metabolize(mob/living/carbon/M) + ..() + ADD_TRAIT(M, TRAIT_ABATES_SHOCK, type) + +/datum/reagent/medicine/epinephrine/on_mob_end_metabolize(mob/living/carbon/M) + REMOVE_TRAIT(M, TRAIT_ABATES_SHOCK, type) + ..() + +/datum/reagent/medicine/epinephrine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + affected_mob.adjust_pain_shock(-1) + +// Atropine fills a simliar niche to epinephrine +/datum/reagent/medicine/atropine + pain_modifier = 0.8 + +/datum/reagent/medicine/atropine/on_mob_metabolize(mob/living/carbon/M) + ..() + ADD_TRAIT(M, TRAIT_ABATES_SHOCK, type) + +/datum/reagent/medicine/atropine/on_mob_end_metabolize(mob/living/carbon/M) + REMOVE_TRAIT(M, TRAIT_ABATES_SHOCK, type) + ..() + +/datum/reagent/medicine/atropine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + affected_mob.adjust_pain_shock(-2) + +// Miner's salve is described as a good painkiller +/datum/reagent/medicine/mine_salve + pain_modifier = 0.66 + +// Determined = fight or flight mode = should have less pain +/datum/reagent/determination + pain_modifier = 0.8 + +// Drugs reduce pain +/datum/reagent/drug/space_drugs + pain_modifier = 0.8 + +/datum/reagent/toxin/fentanyl + pain_modifier = 0.5 + +/datum/reagent/drug/cocaine + pain_modifier = 0.4 + +//Alcohol reduces pain based on boozepwr +/datum/reagent/consumable/ethanol/New() + if(boozepwr && isnull(pain_modifier)) + var/new_pain_modifier = 12 / (boozepwr * 0.2) + if(new_pain_modifier < 1) + pain_modifier = new_pain_modifier + return ..() + +/datum/reagent/consumable/ethanol/painkiller + pain_modifier = 0.75 + +// Abductor chem sets pain mod to 0 so abductors can do their surgeries +/datum/reagent/medicine/cordiolis_hepatico + pain_modifier = 0 + +// Healium functions as an anesthetic +/datum/reagent/healium + pain_modifier = 0.75 + +/datum/reagent/healium/on_mob_metabolize(mob/living/L) + . = ..() + L.apply_status_effect(/datum/status_effect/grouped/anesthetic, name) + +/datum/reagent/healium/on_mob_end_metabolize(mob/living/L) + . = ..() + L.remove_status_effect(/datum/status_effect/grouped/anesthetic, name) + +// Nitrous Oxide can apply some anesthetic, like the gas +/datum/reagent/nitrous_oxide + pain_modifier = 0.75 + +/datum/reagent/nitrous_oxide/on_mob_metabolize(mob/living/carbon/user) + . = ..() + RegisterSignal(user, SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT), PROC_REF(apply_anesthetic)) + RegisterSignal(user, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT), PROC_REF(remove_anesthetic)) + if(HAS_TRAIT(user, TRAIT_KNOCKEDOUT)) + apply_anesthetic(user) + +/datum/reagent/nitrous_oxide/on_mob_end_metabolize(mob/living/carbon/user) + . = ..() + UnregisterSignal(user, list(SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT), SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT))) + remove_anesthetic(user) + +/datum/reagent/nitrous_oxide/proc/apply_anesthetic(mob/living/carbon/source) + SIGNAL_HANDLER + source.apply_status_effect(/datum/status_effect/grouped/anesthetic, type) + +/datum/reagent/nitrous_oxide/proc/remove_anesthetic(mob/living/carbon/source) + SIGNAL_HANDLER + source.remove_status_effect(/datum/status_effect/grouped/anesthetic, type) + +// Cryoxadone slowly heals pain, like wounds. +// It also helps against shock, sort of. +/datum/reagent/medicine/cryoxadone/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + if(!.) + return + var/power = -0.00003 * (affected_mob.bodytemperature ** 2) + 3 + + ADD_TRAIT(affected_mob, TRAIT_ABATES_SHOCK, type) // To negate the fact that being cold is bad for shock + affected_mob.set_pain_mod(type, 0.5) // Heal pain faster + affected_mob.cause_pain(BODY_ZONES_ALL, -0.5 * power * REM * seconds_per_tick) + affected_mob.adjust_pain_shock(-power * REM * seconds_per_tick) + +/datum/reagent/medicine/cryoxadone/on_mob_end_metabolize(mob/living/carbon/user) + . = ..() + user.unset_pain_mod(type) + REMOVE_TRAIT(user, TRAIT_ABATES_SHOCK, type) + +// Saline glucose helps shock +/datum/reagent/medicine/salglu_solution/on_mob_metabolize(mob/living/carbon/M) + . = ..() + ADD_TRAIT(M, TRAIT_ABATES_SHOCK, type) + +/datum/reagent/medicine/salglu_solution/on_mob_end_metabolize(mob/living/carbon/M) + REMOVE_TRAIT(M, TRAIT_ABATES_SHOCK, type) + return ..() + +// Combat stimulants help against pain +/datum/reagent/medicine/stimulants + pain_modifier = 0.5 + +/datum/reagent/medicine/changelingadrenaline + pain_modifier = 0.5 + +// Diphenhydrame helps against disgust slightly +/datum/reagent/medicine/diphenhydramine/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + . = ..() + M.adjust_disgust(-3 * REM * seconds_per_tick ) + +/datum/reagent/consumable/laughter/on_mob_metabolize(mob/living/carbon/user) + pain_modifier = pick(0.8, 1, 1, 1, 1, 1.2) + return ..() diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkiller_related.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkiller_related.dm new file mode 100644 index 000000000000..5a763b6da3b7 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkiller_related.dm @@ -0,0 +1,50 @@ +// These chems are related to painkillers tangentially + +// Component in ibuprofen. +/datum/reagent/propionic_acid + name = "Propionic Acid" + description = "A pungent liquid that's often used in preservatives and synthesizing of other chemicals." + reagent_state = LIQUID + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + color = "#c7a9c9" + ph = 7 + +// Diphenhydramine can be upgraded into Dimenhydrinate, less good against allergens but better against nausea +/datum/reagent/medicine/dimenhydrinate + name = "Dimenhydrinate" + description = "Helps combat nausea and motion sickness." + reagent_state = LIQUID + color = "#98ffee" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + ph = 10.6 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/medicine/dimenhydrinate/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + . = ..() + M.adjust_disgust(-8 * REM * seconds_per_tick) + if(M.nutrition > NUTRITION_LEVEL_FULL - 25) // Boosts hunger to a bit, assuming you've been vomiting + M.adjust_nutrition(2 * HUNGER_FACTOR * REM * seconds_per_tick) + +/datum/chemical_reaction/medicine/dimenhydrinate + results = list(/datum/reagent/medicine/dimenhydrinate = 3) + required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/nitrogen = 1, /datum/reagent/chlorine = 1) + optimal_ph_max = 12.5 + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +// Good against nausea, easier to make than Dimenhydrinate +/datum/reagent/medicine/ondansetron + name = "Ondansetron" + description = "Prevents nausea and vomiting." + reagent_state = LIQUID + color = "#74d3ff" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + ph = 10.6 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/medicine/ondansetron/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + . = ..() + if(SPT_PROB(8, seconds_per_tick)) + M.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick) + if(SPT_PROB(15, seconds_per_tick) && M.get_bodypart_pain(BODY_ZONE_HEAD) <= PAIN_HEAD_MAX / 4) + M.cause_pain(BODY_ZONE_HEAD, 4) + M.adjust_disgust(-10 * REM * seconds_per_tick) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkillers.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkillers.dm new file mode 100644 index 000000000000..a217837a0e06 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/reagents/painkillers.dm @@ -0,0 +1,481 @@ + +/datum/chemical_reaction/medicine/ondansetron + results = list(/datum/reagent/medicine/ondansetron = 3) + required_reagents = list(/datum/reagent/fuel/oil = 1, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 1) + required_catalysts = list(/datum/reagent/consumable/ethanol = 3) + optimal_ph_max = 11 + reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +/datum/chemical_reaction/medicine/aspirin + results = list(/datum/reagent/medicine/painkiller/aspirin = 3) + required_reagents = list(/datum/reagent/medicine/sal_acid = 1, /datum/reagent/acetone = 1, /datum/reagent/oxygen = 1) + required_catalysts = list(/datum/reagent/toxin/acid = 1) + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +/datum/chemical_reaction/medicine/paracetamol + results = list(/datum/reagent/medicine/painkiller/paracetamol = 5) + required_reagents = list(/datum/reagent/phenol = 1, /datum/reagent/acetone = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1, /datum/reagent/toxin/acid/nitracid = 1) + optimal_temp = 480 + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +/datum/chemical_reaction/medicine/ibuprofen + results = list(/datum/reagent/medicine/painkiller/ibuprofen = 5) + required_reagents = list(/datum/reagent/propionic_acid = 1, /datum/reagent/phenol = 1, /datum/reagent/oxygen = 1, /datum/reagent/hydrogen = 1) + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +/datum/chemical_reaction/propionic_acid + results = list(/datum/reagent/propionic_acid = 3) + required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/oxygen = 1, /datum/reagent/hydrogen = 1) + required_catalysts = list(/datum/reagent/toxin/acid = 1) + is_cold_recipe = TRUE + required_temp = 250 + optimal_temp = 200 + overheat_temp = 50 + reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL + +/datum/chemical_reaction/medicine/aspirin_para_coffee + results = list(/datum/reagent/medicine/painkiller/aspirin_para_coffee = 3) + required_reagents = list(/datum/reagent/medicine/painkiller/aspirin = 1, /datum/reagent/medicine/painkiller/paracetamol = 1, /datum/reagent/consumable/coffee = 1) + optimal_ph_min = 2 + optimal_ph_max = 12 + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +/datum/chemical_reaction/medicine/ibaltifen + results = list(/datum/reagent/medicine/painkiller/specialized/ibaltifen = 3) + required_reagents = list(/datum/reagent/propionic_acid = 1, /datum/reagent/chlorine = 1, /datum/reagent/copper = 1) + required_catalysts = list(/datum/reagent/medicine/c2/libital = 1) + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +/datum/chemical_reaction/medicine/anurifen + results = list(/datum/reagent/medicine/painkiller/specialized/anurifen = 3) + required_reagents = list(/datum/reagent/propionic_acid= 1, /datum/reagent/fluorine = 1, /datum/reagent/phosphorus = 1) + required_catalysts = list(/datum/reagent/medicine/c2/aiuri = 1) + reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_HEALING | REACTION_TAG_OTHER | REACTION_TAG_DRUG + +// Not really reactions, but I'm leaving these here +// Gain oxycodone from juicing poppies +/obj/item/food/grown/poppy + juice_results = list(/datum/reagent/medicine/painkiller/oxycodone = 0) + +/obj/item/food/grown/poppy/geranium + juice_results = list() + +/obj/item/food/grown/poppy/lily + juice_results = list() + +// Painkillers! They help with pain. +/datum/reagent/medicine/painkiller + name = "prescription painkiller" + +/datum/reagent/medicine/painkiller/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + . = ..() + + // Painkillers make you numb. + if(current_cycle >= 5) + switch(pain_modifier) + if(0 to 0.45) + M.add_mood_event("numb", /datum/mood_event/narcotic_heavy, name) + if(0.45 to 0.55) + M.add_mood_event("numb", /datum/mood_event/narcotic_medium, name) + else + M.add_mood_event("numb", /datum/mood_event/narcotic_light, name) + + // However, drinking with painkillers is toxic. + var/highest_boozepwr = 0 + for(var/datum/reagent/consumable/ethanol/alcohol in M.reagents.reagent_list) + if(alcohol.boozepwr > highest_boozepwr) + highest_boozepwr = alcohol.boozepwr + + if(highest_boozepwr > 0) + M.apply_damage(round(highest_boozepwr / 33, 0.5) * REM * seconds_per_tick, TOX) + . = TRUE + +// Morphine is the well known existing painkiller. +// It's very strong but makes you sleepy. Also addictive. +/datum/reagent/medicine/painkiller/morphine + name = "Morphine" + description = "A painkiller that allows the patient to move at full speed even when injured. \ + Causes drowsiness and eventually unconsciousness in high doses. \ + Overdose causes minor dizziness and jitteriness." + reagent_state = LIQUID + color = "#A9FBFB" + metabolization_rate = 0.5 * REAGENTS_METABOLISM // 0.1 units per second + overdose_threshold = 30 + ph = 8.96 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + addiction_types = list(/datum/addiction/opioids = 30) //5u = 100 progress, 25-30u = addiction + // Morphine is THE painkiller + pain_modifier = 0.4 + +/datum/reagent/medicine/painkiller/morphine/on_mob_metabolize(mob/living/L) + . = ..() + L.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) + +/datum/reagent/medicine/painkiller/morphine/on_mob_end_metabolize(mob/living/L) + L.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) + return ..() + +/datum/reagent/medicine/painkiller/morphine/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // Morphine heals a very tiny bit + M.adjustBruteLoss(-0.2 * REM * seconds_per_tick, FALSE) + M.adjustFireLoss(-0.1 * REM * seconds_per_tick, FALSE) + // Morphine heals pain, dur + M.cause_pain(BODY_ZONES_ALL, -2.5) + // Morphine causes a bit of disgust + if(M.disgust < DISGUST_LEVEL_VERYGROSS && SPT_PROB(50 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(2 * REM * seconds_per_tick) + + // The longer we're metabolzing it, the more we get sleepy + // for reference: (with 0.1 metabolism rate) + // ~2.5 units = 12 cycles = ~30 seconds + switch(current_cycle) + if(64) //~12 + to_chat(M, span_warning("You start to feel tired...")) + M.adjust_eye_blur(2 SECONDS * REM * seconds_per_tick) // just a hint teehee + if(prob(50)) + M.emote("yawn") + + if(96 to 144) // 20 to 30u + if(SPT_PROB(33, seconds_per_tick)) + M.adjust_drowsiness_up_to(1 * REM * seconds_per_tick, 6 SECONDS) + + if(144 to 192) // 30u to 40u + if(SPT_PROB(66, seconds_per_tick)) + M.adjust_drowsiness_up_to(1 * REM * seconds_per_tick, 12 SECONDS) + + if(192 to INFINITY) //40u onward + M.adjust_drowsiness_up_to(1 * REM * seconds_per_tick, 20 SECONDS) + M.Sleeping(4 SECONDS * REM * seconds_per_tick) + + ..() + return TRUE + +/datum/reagent/medicine/painkiller/morphine/overdose_process(mob/living/M, seconds_per_tick, times_fired) + ..() + if(SPT_PROB(18, seconds_per_tick)) + M.drop_all_held_items() + M.set_dizzy_if_lower(4 SECONDS) + M.set_jitter_if_lower(4 SECONDS) + +// Aspirin. Bad at headaches, good at everything else, okay at fevers. +// Use healing chest and limb pain primarily. +/datum/reagent/medicine/painkiller/aspirin + name = "Aspirin" + description = "A medication that combats pain and fever. Can cause mild nausea. Overdosing is toxic, and causes high body temperature, sickness, hallucinations, dizziness, and confusion." + reagent_state = LIQUID + color = "#9c46ff" + metabolization_rate = 0.25 * REAGENTS_METABOLISM + overdose_threshold = 25 + ph = 6.4 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + pain_modifier = 0.6 + +/datum/reagent/medicine/painkiller/aspirin/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // Not good at headaches, but very good at treating everything else. + M.adjustBruteLoss(-0.1 * REM * seconds_per_tick, FALSE) + M.adjustFireLoss(-0.05 * REM * seconds_per_tick, FALSE) + // Numbers seem low, but our metabolism is very slow + M.cause_pain(BODY_ZONE_HEAD, -0.08 * REM * seconds_per_tick) + M.cause_pain(BODY_ZONES_LIMBS, -0.16 * REM * seconds_per_tick) + M.cause_pain(BODY_ZONE_CHEST, -0.32 * REM * seconds_per_tick) + // Okay at fevers. + M.adjust_bodytemperature(-15 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, M.get_body_temp_normal()) + if(M.disgust < DISGUST_LEVEL_VERYGROSS && SPT_PROB(66 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(1.5 * REM * seconds_per_tick) + + ..() + return TRUE + +/datum/reagent/medicine/painkiller/aspirin/overdose_process(mob/living/carbon/M, seconds_per_tick, times_fired) + if(!istype(M)) + return + + // On overdose, heat up the body... + M.adjust_bodytemperature(30 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick) + // Causes sickness... + M.apply_damage(1 * REM * seconds_per_tick, TOX) + if(M.disgust < 100 && SPT_PROB(100 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(3 * REM * seconds_per_tick) + // ...Hallucinations after a while... + if(current_cycle >= 15 && SPT_PROB(75 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_hallucinations_up_to(6 SECONDS * REM * seconds_per_tick, 40 SECONDS) + // ...Dizziness after a longer while... + if(current_cycle >= 20 && SPT_PROB(50 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_dizzy_up_to(2 SECONDS * REM * seconds_per_tick, 10 SECONDS) + // ...And finally, confusion + if(current_cycle >= 25 && SPT_PROB(30 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_confusion_up_to(4 SECONDS, 12 SECONDS) + ..() + return TRUE + +// Paracetamol. Okay at headaches, okay at everything else, bad at fevers, less disgust. +// Use for general healing every type of pain. +/datum/reagent/medicine/painkiller/paracetamol // Also known as Acetaminophen, or Tylenol + name = "Paracetamol" + description = "A painkiller that combats mind to moderate pain, headaches, and low fever. Causes mild nausea. Overdosing causes liver damage, sickness, and can be lethal." + reagent_state = LIQUID + color = "#fcaeff" + metabolization_rate = 0.25 * REAGENTS_METABOLISM + overdose_threshold = 25 + ph = 4.7 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + pain_modifier = 0.6 + +/datum/reagent/medicine/painkiller/paracetamol/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // Good general painkiller. + // Numbers seem lowish, but our metabolism is very slow + M.adjustBruteLoss(-0.05 * REM * seconds_per_tick, FALSE) + M.adjustFireLoss(-0.05 * REM * seconds_per_tick, FALSE) + M.adjustToxLoss(-0.05 * REM * seconds_per_tick, FALSE) + M.cause_pain(BODY_ZONES_ALL, -0.2 * REM * seconds_per_tick) + // Not very good at treating fevers. + M.adjust_bodytemperature(-10 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, M.get_body_temp_normal()) + // Causes liver damage - higher dosages causes more liver damage. + M.adjustOrganLoss(ORGAN_SLOT_LIVER, volume / 30 * REM * seconds_per_tick) + if(M.disgust < DISGUST_LEVEL_VERYGROSS && SPT_PROB(66 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(1.2 * REM * seconds_per_tick) + + ..() + return TRUE + +/datum/reagent/medicine/painkiller/paracetamol/overdose_process(mob/living/carbon/M, seconds_per_tick, times_fired) + if(!istype(M)) + return + + // On overdose, cause sickness and liver damage. + M.adjustOrganLoss(ORGAN_SLOT_LIVER, 2 * REM * seconds_per_tick) + if(M.disgust < 100 && SPT_PROB(100 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(3 * REM * seconds_per_tick) + + return ..() + +// Ibuprofen. Best at headaches, best at fevers, less good at everything else. +// Use for treating head pain primarily. +/datum/reagent/medicine/painkiller/ibuprofen // Also known as Advil + name = "Ibuprofen" + description = "A medication that combats mild pain, headaches, and fever. Causes mild nausea and dizziness in higher dosages. Overdosing causes sickness, drowsiness, dizziness, and mild pain." + reagent_state = LIQUID + color = "#e695ff" + metabolization_rate = 0.25 * REAGENTS_METABOLISM + overdose_threshold = 30 + ph = 5.6 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + pain_modifier = 0.6 + +/datum/reagent/medicine/painkiller/ibuprofen/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // Really good at treating headaches. + M.adjustBruteLoss(-0.05 * REM * seconds_per_tick, FALSE) + M.adjustToxLoss(-0.1 * REM * seconds_per_tick, FALSE) + // Heals pain, numbers seem low but our metabolism is very slow + M.cause_pain(BODY_ZONE_HEAD, -0.32 * REM * seconds_per_tick) + M.cause_pain(BODY_ZONE_CHEST, -0.16 * REM * seconds_per_tick) + M.cause_pain(BODY_ZONES_LIMBS, -0.08 * REM * seconds_per_tick) + // Causes flat liver damage. + M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.25 * REM * seconds_per_tick) + // Really good at treating fevers. + M.adjust_bodytemperature(-25 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, M.get_body_temp_normal()) + // Causes more disgust the longer it's in someone... + if(M.disgust < DISGUST_LEVEL_VERYGROSS && SPT_PROB(66 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(min(current_cycle * 0.02, 2.4) * REM * seconds_per_tick) + // ...and dizziness. + if(current_cycle >= 25 && SPT_PROB(30 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_dizzy_up_to(2 SECONDS * REM * seconds_per_tick, 10 SECONDS) + + ..() + return TRUE + +/datum/reagent/medicine/painkiller/ibuprofen/overdose_process(mob/living/carbon/M, seconds_per_tick, times_fired) + if(!istype(M)) + return + + // On overdose, causes liver damage and chest pain... + M.adjustOrganLoss(ORGAN_SLOT_LIVER, 1.5 * REM * seconds_per_tick) + M.cause_pain(BODY_ZONE_CHEST, 0.24 * REM * seconds_per_tick) + // Sickness... + if(M.disgust < 100 && SPT_PROB(100 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_disgust(3 * REM * seconds_per_tick) + // ...Drowsyness... + if(SPT_PROB(75 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick) + // ...And dizziness + if(SPT_PROB(85 * max(1 - creation_purity, 0.5), seconds_per_tick)) + M.adjust_dizzy(4 SECONDS * REM * seconds_per_tick) + + return ..() + +// Combination drug of other painkillers. It's a real thing. Less side effects, heals pain generally, mildly toxic in high doses. +// Upgrade to paracetamol and aspirin if you go through the effort to get coffee. +/datum/reagent/medicine/painkiller/aspirin_para_coffee + name = "aspirin/paracetamol/caffeine" + description = "A combination drug that effectively treats moderate pain with low side effects when used in low dosage. Toxic in higher dosages." + reagent_state = LIQUID + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + color = "#e695ff" + metabolization_rate = REAGENTS_METABOLISM + pain_modifier = 0.75 + +/datum/reagent/medicine/painkiller/aspirin_para_coffee/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // Heals all pain a bit if in low dosage. + if(volume <= 10) + // Number looks high, compared to other painkillers, + // but we have a comparatively much higher metabolism than them. + M.cause_pain(BODY_ZONES_ALL, -2.8 * REM * seconds_per_tick) + // Mildly toxic in higher dosages. + else if(SPT_PROB(volume * 3, seconds_per_tick)) + M.apply_damage(3 * REM * seconds_per_tick, TOX) + . = TRUE + + ..() + +// Oxycodone. Very addictive, heals pain very fast, also a drug. +/datum/reagent/medicine/painkiller/oxycodone + name = "Oxycodone" + description = "A drug that rapidly treats major to extreme pain. Highly addictive. Overdose can cause heart attacks." + reagent_state = LIQUID + color = "#ffcb86" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + overdose_threshold = 30 + ph = 5.6 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + addiction_types = list(/datum/addiction/opioids = 45) //5u = 150 progress, 15-20u = addiction + pain_modifier = 0.35 + +/datum/reagent/medicine/painkiller/oxycodone/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + M.adjustBruteLoss(-0.3 * REM * seconds_per_tick, FALSE) + M.adjustFireLoss(-0.2 * REM * seconds_per_tick, FALSE) + M.cause_pain(BODY_ZONES_ALL, -3.4 * REM * seconds_per_tick) + M.set_drugginess(20 SECONDS * REM * seconds_per_tick) + if(M.disgust < DISGUST_LEVEL_VERYGROSS && SPT_PROB(40, seconds_per_tick)) + M.adjust_disgust(2 * REM * seconds_per_tick) + if(SPT_PROB(33, seconds_per_tick)) + M.adjust_dizzy_up_to(2 SECONDS * REM * seconds_per_tick, 10 SECONDS) + + ..() + return TRUE + +/datum/reagent/medicine/painkiller/oxycodone/overdose_process(mob/living/carbon/M, seconds_per_tick, times_fired) + . = ..() + if(!ishuman(M)) + return + + var/mob/living/carbon/human/human_mob = M + if(SPT_PROB(12, seconds_per_tick)) + var/can_heart_fail = (!human_mob.undergoing_cardiac_arrest() && human_mob.can_heartattack()) + var/picked_option = rand(1, (can_heart_fail ? 6 : 3)) + switch(picked_option) + if(1) + to_chat(human_mob, span_danger("Your legs don't want to move.")) + human_mob.Paralyze(6 SECONDS * REM * seconds_per_tick) + if(2) + to_chat(human_mob, span_danger("Your breathing starts to shallow.")) + human_mob.losebreath = clamp(human_mob.losebreath + 3 * REM * seconds_per_tick, 0, 12) + human_mob.apply_damage((15 / creation_purity), OXY) + if(3) + human_mob.drop_all_held_items() + if(4) + to_chat(human_mob, span_danger("You feel your heart skip a beat.")) + human_mob.set_jitter_if_lower(6 SECONDS * REM * seconds_per_tick) + if(5) + to_chat(human_mob, span_danger("You feel the world spin.")) + human_mob.set_dizzy_if_lower(6 SECONDS * REM * seconds_per_tick) + if(6) + to_chat(human_mob, span_userdanger("You feel your heart seize and stop completely!")) + if(human_mob.stat == CONSCIOUS) + human_mob.visible_message(span_userdanger("[human_mob] clutches at [human_mob.p_their()] chest as if [human_mob.p_their()] heart stopped!"), ignored_mobs = human_mob) + human_mob.emote("scream") + human_mob.set_heartattack(TRUE) + metabolization_rate *= 4 + return TRUE + +/datum/reagent/medicine/painkiller/hydromorphone + name = "Hydromorphone" + description = "Pretty sure you wouldn't be able to feel anything" + reagent_state = LIQUID + color = "#ffcb86" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + pain_modifier = 0.1 + +/datum/reagent/medicine/painkiller/hydromorphone/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + M.cause_pain(BODY_ZONES_ALL, -12 * REM * seconds_per_tick) + ..() + +// Future painkiller ideas: +// - Real world stuff +// Tramadol +// Fentanyl (Rework) (Also a potential anesthetic) +// Hydrocodone (And its combination drugs) +// Dihydromorphine +// Pethidine +// - Space stuff (Suffix: -fen) + +// A subtype of painkillers that will heal pain better +// depending on what type of pain the part's feeling +/datum/reagent/medicine/painkiller/specialized + name = "specialized painkiller" + addiction_types = list(/datum/addiction/opioids = 15) //5u = 50 progress, 60u = addiction + + /// How much pain we restore on life ticks, modified by modifiers (yeah?) + var/pain_heal_amount = 2.4 + /// What type of pain are we looking for? If we aren't experiencing this type, it will be 10x less effective + var/pain_type_to_look_for + /// What type of wound are we looking for? If our bodypart has this wound, it will be 1.5x more effective + var/wound_type_to_look_for + +/datum/reagent/medicine/painkiller/specialized/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + . = ..() + if(!M.pain_controller) + return + + for(var/obj/item/bodypart/part as anything in M.bodyparts) + if(!IS_ORGANIC_LIMB(part)) + continue + + var/final_pain_heal_amount = -1 * pain_heal_amount * REM * seconds_per_tick + if(pain_type_to_look_for && (part.last_received_pain_type != pain_type_to_look_for)) + final_pain_heal_amount *= 0.1 + if(wound_type_to_look_for && (locate(wound_type_to_look_for) in part.wounds)) + final_pain_heal_amount *= 1.5 + + M.cause_pain(part.body_zone, final_pain_heal_amount) + +// Libital, but helps pain: ib-alti-fen +// Heals lots of pain for bruise pain, otherwise lower +/datum/reagent/medicine/painkiller/specialized/ibaltifen + name = "Ibaltifen" + description = "A painkiller designed to combat pain caused by broken limbs and bruises." + reagent_state = LIQUID + color = "#feffae" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + ph = 7.9 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + pain_modifier = 0.75 + pain_type_to_look_for = BRUTE + wound_type_to_look_for = /datum/wound/blunt + +/datum/reagent/medicine/painkiller/specialized/ibaltifen/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // a bit of libital influence + M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.5 * REM * seconds_per_tick) + M.adjustBruteLoss(-0.5 * REM * normalise_creation_purity() * seconds_per_tick) + ..() + return TRUE + +// Aiuri, but helps pain: an-uri-fen +// Heals lots of pain for burn pain, otherwise lower +/datum/reagent/medicine/painkiller/specialized/anurifen + name = "Anurifen" + description = "A painkiller designed to combat pain caused by burns." + reagent_state = LIQUID + color = "#c4aeff" + metabolization_rate = 0.5 * REAGENTS_METABOLISM + ph = 3.6 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + pain_modifier = 0.75 + pain_type_to_look_for = BURN + wound_type_to_look_for = /datum/wound/burn + +/datum/reagent/medicine/painkiller/specialized/anurifen/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired) + // a bit of aiuri influence + M.adjustOrganLoss(ORGAN_SLOT_EYES, 0.4 * REM * seconds_per_tick) + M.adjustFireLoss(-0.5 * REM * normalise_creation_purity() * seconds_per_tick) + ..() + return TRUE diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/shock.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/shock.dm new file mode 100644 index 000000000000..279d14a9262b --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/shock.dm @@ -0,0 +1,207 @@ +// -- Shock from too much pain. -- +/datum/disease/advanced/premade/shock + form = "Condition" + name = "Shock" + spread_text = "Neurogenic" // Only model pain shock + category = DISEASE_SHOCK + max_stages = 3 + stage_prob = 1 + cure_text = "Keep the patient still and lying down, maintain a high body temperature, stop blood loss, \ + and provide pain relievers while monitoring closely. Epinephrine and Saline-Glucose can also help." + agent = "Pain" + viable_mobtypes = list(/mob/living/carbon/human) + desc = "Occurs when a subject enters a state of shock due to high pain, blood loss, heart difficulties, and other injuries. \ + If left untreated, the subject may experience cardiac arrest." + severity = DISEASE_SEVERITY_DANGEROUS + disease_flags = NONE + spread_flags = DISEASE_SPREAD_NON_CONTAGIOUS + visibility_flags = HIDDEN_PANDEMIC + bypasses_immunity = TRUE + /// How many conditions do we require to get cured? + var/conditions_required_to_cure = 4 + /// How many conditions do we need to not get a heart attack? + var/conditions_required_to_maintain = 3 + +/datum/disease/advanced/premade/shock/after_add() + affected_mob.apply_status_effect(/datum/status_effect/low_blood_pressure) + affected_mob.set_pain_mod(type, 1.2) + antigen = null + +/** + * Checks which cure conditions we fulfill. + * + * returns the total number of conditions we fulfill. + */ +/datum/disease/advanced/premade/shock/proc/check_cure_conditions() + if(!ishuman(affected_mob)) + return TRUE + var/mob/living/carbon/human = affected_mob + if(human.undergoing_cardiac_arrest()) + return FALSE + if(affected_mob.stat == DEAD) + return FALSE + + // We require [conditions_required_to_cure] of these to be fulfilled to be cured + var/conditions_fulfilled = 0 + + // Good: Body temperature is stable (not freezing, we don't care about heat) + if(affected_mob.bodytemperature > affected_mob.get_body_temp_cold_damage_limit()) + conditions_fulfilled += 1 + // Good: Sleeping (or unconscious I guess) + if(affected_mob.IsSleeping() || affected_mob.IsUnconscious()) + conditions_fulfilled += 1 + // Good: Having this trait (from salgu or epinephrine) + if(HAS_TRAIT(affected_mob, TRAIT_ABATES_SHOCK)) + conditions_fulfilled += 1 + // Good: Having lower pain + switch(affected_mob.pain_controller.get_average_pain()) + if(-INFINITY to 10) + // Almost guarantees you fulfill enough conditions if you get this low, assuming you have no major detractors + // Why? It might confuse some people if the person's like, not experiencing any pain at all + // but for some reason is still in shock, because they haven't done one of the other conditions arbitrarily + conditions_fulfilled += (conditions_required_to_cure + 1) + if(10 to 30) + conditions_fulfilled += 3 + if(30 to 40) + conditions_fulfilled += 2 + if(40 to 50) + conditions_fulfilled += 1 + + // Good: Painkillers (while conscious / in soft crit) + if(affected_mob.stat <= SOFT_CRIT && !affected_mob.can_feel_pain()) + conditions_fulfilled += 1 + + // Bad: Bleeding + if(human.is_bleeding()) + conditions_fulfilled -= 1 + // Very bad: Wounds + conditions_fulfilled -= min(LAZYLEN(human.all_wounds), 4) + // Somewhat bad: Standing up + if(affected_mob.body_position == STANDING_UP) + conditions_fulfilled -= 2 + // Bad: In deepcrit (dying) + if(affected_mob.stat > SOFT_CRIT) + conditions_fulfilled -= 1 + + return conditions_fulfilled + +/datum/disease/advanced/premade/shock/cure(add_resistance, mob/living/carbon/target) + affected_mob.remove_status_effect(/datum/status_effect/low_blood_pressure) + affected_mob.unset_pain_mod(type) + return ..() + +/datum/disease/advanced/premade/shock/activate(seconds_per_tick, times_fired) + . = ..() + if(!ishuman(affected_mob)) + return + + if(check_cure_conditions() >= conditions_required_to_cure) + cure() + return + var/mob/living/carbon/human = affected_mob + if(!.) + return + + if(isnull(affected_mob.pain_controller)) + cure() + return FALSE + + if(affected_mob.stat == DEAD) + cure() + return FALSE + + var/cure_level = check_cure_conditions() + testing("[affected_mob] undergoing shock: [cure_level] cure conditions achieved.") + + // Having a few cure conditions present ([conditions_required_to_maintain]) will keep us below stage 3 + if(stage > 2 && cure_level >= conditions_required_to_maintain) + update_stage(2) + + // If we have enough conditions present to cure us, roll for a cure + if(stage <= 2 && has_cure(cure_level) && SPT_PROB(cure_level, seconds_per_tick)) + to_chat(affected_mob, span_bold(span_green("Your body feels awake and active again!"))) + cure() + return FALSE + + switch(stage) + // compensated (or nonprogressive) - still able to sustain themselves + // - agitation, anxiety + // - nausea or vomiting + // - chills + if(1) + cure_text = "Subject is in stage one of shock. \ + Provide immediate pain relief and stop blood loss to prevent worsening condition. \ + Keep the patient still and lying down, and be sure to moderate their temprature. \ + Supply epinephrine and saline-glucose if condition worsens." + if(SPT_PROB(0.5, seconds_per_tick)) + to_chat(affected_mob, span_danger("Your chest feels uncomfortable.")) + affected_mob.pain_emote(pick("mumble", "grumble")) + affected_mob.flash_pain_overlay(1) + if(SPT_PROB(1, seconds_per_tick)) + to_chat(affected_mob, span_danger("You feel nauseous.")) + if(prob(50)) + affected_mob.vomit(35) + if(SPT_PROB(2, seconds_per_tick)) + to_chat(affected_mob, span_danger("You feel anxious.")) + affected_mob.adjust_jitter(rand(12 SECONDS, 16 SECONDS)) + if(SPT_PROB(6, seconds_per_tick)) + to_chat(affected_mob, span_danger("You feel cold.")) + affected_mob.pain_emote("shiver", 3 SECONDS) + affected_mob.adjust_bodytemperature(-5 * seconds_per_tick, affected_mob.get_body_temp_cold_damage_limit() + 5) // Not lethal + + // decompensated (or progressive) - unable to maintain themselves + // - mental issues + // - difficulty breathing / high heart rate + // - decrease in body temperature + if(2) + cure_text = "Subject is in stage one of shock. \ + Provide immediate pain relief and stop blood loss to prevent cardiac arrest. \ + Keep the patient still and lying down, and be sure to moderate their temprature. \ + Supply epinephrine and saline-glucose if condition worsens." + + if(SPT_PROB(10, seconds_per_tick)) + affected_mob.adjust_stutter_up_to(10 SECONDS, 120 SECONDS) + if(SPT_PROB(1, seconds_per_tick)) + to_chat(affected_mob, span_danger("Your chest feels wrong!")) + affected_mob.pain_emote(pick("mumble", "grumble")) + affected_mob.flash_pain_overlay(2) + if(SPT_PROB(2, seconds_per_tick)) + to_chat(affected_mob, span_danger("You can't focus on anything!")) + affected_mob.adjust_confusion(rand(4 SECONDS, 8 SECONDS)) + if(SPT_PROB(2, seconds_per_tick)) + to_chat(affected_mob, span_danger("You're having difficulties breathing!")) + affected_mob.losebreath = clamp(affected_mob.losebreath + 4, 0, 12) + if(SPT_PROB(2, seconds_per_tick)) + to_chat(affected_mob, span_danger("You skip a breath!")) + affected_mob.pain_emote("gasp", 3 SECONDS) + affected_mob.apply_damage(rand(5, 15), OXY) + if(SPT_PROB(1, seconds_per_tick)) + affected_mob.emote("faint") + if(SPT_PROB(8, seconds_per_tick)) + to_chat(affected_mob, span_danger("You feel freezing!")) + affected_mob.pain_emote("shiver", 3 SECONDS) + affected_mob.adjust_bodytemperature(-10 * seconds_per_tick, affected_mob.get_body_temp_cold_damage_limit() - 5) // uh oh + + // irreversible - point of no return, system failure + // cardiac arrest + if(3) + cure_text = "Subject is in stage three of shock. Cardiac arrest is imminent - urgent action is needed. \ + Prepare a defibrillator on standby and moderate their body temperature." + if(SPT_PROB(10, seconds_per_tick)) + affected_mob.adjust_stutter_up_to(10 SECONDS, 120 SECONDS) + if(SPT_PROB(8, seconds_per_tick)) + affected_mob.adjust_slurring_up_to(10 SECONDS, 36 SECONDS) + if(SPT_PROB(2, seconds_per_tick)) + affected_mob.emote("faint") + if(SPT_PROB(33, seconds_per_tick)) + if(human.can_heartattack()) + to_chat(affected_mob, span_userdanger("Your heart stops!")) + affected_mob.visible_message(span_danger("[affected_mob] grabs at their chest and collapses!"), ignored_mobs = affected_mob) + human.set_heartattack(TRUE) + cure() + return FALSE + else + affected_mob.losebreath += 10 + else if(SPT_PROB(10, seconds_per_tick)) + to_chat(affected_mob, span_userdanger(pick("You feel your heart skip a beat...", "You feel your body shutting down...", "You feel your heart beat irregularly..."))) + affected_mob.adjust_bodytemperature(-10 * seconds_per_tick, affected_mob.get_body_temp_cold_damage_limit() - 20) // welp diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/species.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/species.dm new file mode 100644 index 000000000000..9a1c06ef3bbb --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/species.dm @@ -0,0 +1,4 @@ +/// -- Extensions of species and species procs. -- +/datum/species + /// Pain modifier that this species receives. + var/species_pain_mod = 1 diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/anesthetics.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/anesthetics.dm new file mode 100644 index 000000000000..03f24a52b8a0 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/anesthetics.dm @@ -0,0 +1,42 @@ +/// Anesthetics, for use in surgery - to stop pain. +/datum/status_effect/grouped/anesthetic + id = "anesthetics" + alert_type = /atom/movable/screen/alert/status_effect/anesthetics + +/datum/status_effect/grouped/anesthetic/on_creation(mob/living/new_owner, source) + if(!istype(get_area(new_owner), /area/station/medical)) + // if we're NOT in medical, give no alert. N2O floods or whatever. + alert_type = null + + return ..() + +/datum/status_effect/grouped/anesthetic/on_apply() + . = ..() + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT), PROC_REF(try_removal)) + +/datum/status_effect/grouped/anesthetic/on_remove() + . = ..() + UnregisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT)) + +/datum/status_effect/grouped/anesthetic/get_examine_text() + return span_warning("[owner.p_Theyre()] out cold.") + +/datum/status_effect/grouped/anesthetic/proc/try_removal(datum/source) + SIGNAL_HANDLER + + if(HAS_TRAIT(owner, TRAIT_KNOCKEDOUT)) + return + + qdel(src) + +/atom/movable/screen/alert/status_effect/anesthetics + name = "Anesthetic" + desc = "Everything's woozy... The world goes dark... You're on anesthetics. \ + Good luck in surgery! If it's actually surgery, that is." + icon_state = "paralysis" + +// Extend "too much N2O" so we can apply anesthesia if it knocks the guy out +/obj/item/organ/internal/lungs/too_much_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, n2o_pp, old_n2o_pp) + . = ..() + if(HAS_TRAIT(breather, TRAIT_KNOCKEDOUT)) + breather.apply_status_effect(/datum/status_effect/grouped/anesthetic, /datum/gas/nitrous_oxide) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/fire_pain.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/fire_pain.dm new file mode 100644 index 000000000000..b359a5a477b6 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/fire_pain.dm @@ -0,0 +1,42 @@ +/// Handler for pain from fire. Goes up the longer you're on fire, largely goes away when extinguished +/datum/status_effect/pain_from_fire + id = "sharp_pain_from_fire" + status_type = STATUS_EFFECT_REFRESH + alert_type = null + remove_on_fullheal = TRUE + heal_flag_necessary = HEAL_ADMIN|HEAL_WOUNDS|HEAL_STATUS + + /// Amount of pain being given + var/pain_amount = 0 + +/datum/status_effect/pain_from_fire/on_creation(mob/living/new_owner, pain_amount = 0) + src.pain_amount = pain_amount + return ..() + +/datum/status_effect/pain_from_fire/refresh(mob/living/new_owner, added_pain_amount = 0) + if(added_pain_amount <= 0) + return + pain_amount += added_pain_amount + owner.cause_pain(BODY_ZONES_ALL, added_pain_amount, BURN) + +/datum/status_effect/pain_from_fire/on_apply() + if(isnull(owner.pain_controller) || pain_amount <= 0) + return FALSE + + RegisterSignal(owner, COMSIG_LIVING_EXTINGUISHED, PROC_REF(remove_on_signal)) + owner.cause_pain(BODY_ZONES_ALL, pain_amount, BURN) + return TRUE + +/datum/status_effect/pain_from_fire/on_remove() + if(QDELING(owner)) + return + UnregisterSignal(owner, COMSIG_LIVING_EXTINGUISHED) + owner.cause_pain(BODY_ZONES_ALL, -3 * pain_amount, BURN) + +/// When signalled, terminate. +/datum/status_effect/pain_from_fire/proc/remove_on_signal(datum/source) + SIGNAL_HANDLER + + if(QDELING(owner) || QDELING(src)) + return + qdel(src) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/low_blood_pressure.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/low_blood_pressure.dm new file mode 100644 index 000000000000..30b1d0f40592 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/low_blood_pressure.dm @@ -0,0 +1,21 @@ +/datum/status_effect/low_blood_pressure + id = "low_blood_pressure" + tick_interval = -1 + status_type = STATUS_EFFECT_UNIQUE + alert_type = /atom/movable/screen/alert/status_effect/low_blood_pressure + +/datum/status_effect/low_blood_pressure/on_apply() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.bleed_mod *= 0.75 + return TRUE + +/datum/status_effect/low_blood_pressure/on_remove() + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.bleed_mod /= 0.75 + +/atom/movable/screen/alert/status_effect/low_blood_pressure + name = "Low blood pressure" + desc = "Your blood pressure is low right now. Your organs aren't getting enough blood." + icon_state = "highbloodpressure" diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/min_pain.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/min_pain.dm new file mode 100644 index 000000000000..27fd47b70c97 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/min_pain.dm @@ -0,0 +1,50 @@ +/// A handler for temporarily increasing the minimum amount of pain a bodypart can be in. +/datum/status_effect/minimum_bodypart_pain + id = "min_bodypart_pain" + status_type = STATUS_EFFECT_MULTIPLE + alert_type = null + remove_on_fullheal = TRUE + heal_flag_necessary = HEAL_ADMIN|HEAL_WOUNDS|HEAL_STATUS + + /// The min pain we're setting the bodypart to + var/min_amount = 0 + /// The zone we're afflicting + var/targeted_zone = BODY_ZONE_CHEST + +/datum/status_effect/minimum_bodypart_pain/on_creation( + mob/living/carbon/human/new_owner, + targeted_zone, + min_amount = 0, + duration = 0, +) + + src.duration = duration + src.targeted_zone = targeted_zone + src.min_amount = min_amount + return ..() + +/datum/status_effect/minimum_bodypart_pain/on_apply() + if(!ishuman(owner)) + return FALSE + + var/mob/living/carbon/human/human_owner = owner + if(!human_owner.pain_controller) + return FALSE + + if(!targeted_zone || min_amount == 0) + return FALSE + + var/obj/item/bodypart/afflicted_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + if(!afflicted_bodypart) + return FALSE + + human_owner.pain_controller.adjust_bodypart_min_pain(targeted_zone, min_amount) + return TRUE + +/datum/status_effect/minimum_bodypart_pain/on_remove() + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/afflicted_bodypart = human_owner.pain_controller?.body_zones[targeted_zone] + if(!afflicted_bodypart) + return + + human_owner.pain_controller.adjust_bodypart_min_pain(targeted_zone, -min_amount) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/pain_limp.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/pain_limp.dm new file mode 100644 index 000000000000..0005d91fcc3c --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/pain_limp.dm @@ -0,0 +1,70 @@ +/// Limping from extreme pain in the legs. +/datum/status_effect/limp/pain + id = "limp_pain" + status_type = STATUS_EFFECT_UNIQUE + alert_type = /atom/movable/screen/alert/status_effect/limp/pain + remove_on_fullheal = TRUE + heal_flag_necessary = HEAL_ADMIN|HEAL_WOUNDS|HEAL_STATUS + +/datum/status_effect/limp/pain/on_creation(mob/living/new_owner, obj/item/bodypart/next_leg) + src.next_leg = next_leg + return ..() + +/datum/status_effect/limp/pain/on_apply() + . = ..() + if(!.) + return + + var/mob/living/carbon/human/owner_human = owner + if(!owner_human) + return FALSE + if(!istype(owner_human) || isnull(owner_human?.pain_controller)) + return FALSE + + RegisterSignals(owner, list(COMSIG_CARBON_PAIN_GAINED, COMSIG_CARBON_PAIN_LOST), PROC_REF(update_limp)) + owner.pain_message( + span_danger("Your [next_leg?.plaintext_zone || "leg"] hurts to walk on!"), + span_danger("You struggle to walk on your [next_leg?.plaintext_zone || "leg"]!"), + ) + +/datum/status_effect/limp/pain/get_examine_text() + return span_warning("[owner.p_Theyre()] limping with every move.") + +/datum/status_effect/limp/pain/on_remove() + . = ..() + UnregisterSignal(owner, list(COMSIG_CARBON_PAIN_GAINED, COMSIG_CARBON_PAIN_LOST)) + if(!QDELING(owner)) + owner.pain_message( + span_green("Your pained limp stops!"), + span_green("It becomes easier to walk again."), + ) + +/datum/status_effect/limp/pain/update_limp() + if(QDELING(owner)) + return + var/mob/living/carbon/human/limping_human = owner + + left = limping_human.pain_controller.body_zones[BODY_ZONE_L_LEG] + right = limping_human.pain_controller.body_zones[BODY_ZONE_R_LEG] + + if(!left && !right) + qdel(src) + return + + slowdown_left = 0 + slowdown_right = 0 + + if(left?.get_modified_pain() >= 30) + slowdown_left = left.get_modified_pain() / 10 + + if(right?.get_modified_pain() >= 30) + slowdown_right = right.get_modified_pain() / 10 + + // this handles losing your leg with the limp and the other one being in good shape as well + if(slowdown_left < 3 && slowdown_right < 3) + qdel(src) + return + +/atom/movable/screen/alert/status_effect/limp/pain + name = "Pained Limping" + desc = "The pain in your legs is unbearable, forcing you to limp!" diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/sharp_pain.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/sharp_pain.dm new file mode 100644 index 000000000000..d9dfb9c8023c --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/sharp_pain.dm @@ -0,0 +1,61 @@ +/// Sharp pain. Used for a lot of pain at once, as a little of it is healed after the effect runs out. +/datum/status_effect/sharp_pain + id = "sharp_pain" + status_type = STATUS_EFFECT_MULTIPLE + alert_type = null + remove_on_fullheal = TRUE + heal_flag_necessary = HEAL_ADMIN|HEAL_WOUNDS|HEAL_STATUS + + /// Amount of pain being given + var/pain_amount = 0 + /// Type of pain being given + var/pain_type + /// The amount of pain we had before recieving the sharp pain + var/initial_pain_amount = 0 + /// The zone we're afflicting + var/targeted_zone + +/datum/status_effect/sharp_pain/on_creation( + mob/living/carbon/human/new_owner, + targeted_zone, + pain_amount = 0, + pain_type = BRUTE, + duration = 0, +) + + src.duration = duration + src.targeted_zone = targeted_zone + src.pain_amount = pain_amount + src.pain_type = pain_type + return ..() + +/datum/status_effect/sharp_pain/on_apply() + if(!ishuman(owner)) + return FALSE + + var/mob/living/carbon/human/human_owner = owner + if(!human_owner.pain_controller) + return FALSE + + if(!targeted_zone || pain_amount == 0) + return FALSE + + var/obj/item/bodypart/afflicted_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + if(!afflicted_bodypart) + return FALSE + + initial_pain_amount = afflicted_bodypart.pain + human_owner.pain_controller.adjust_bodypart_pain(targeted_zone, pain_amount, pain_type) + return TRUE + +/datum/status_effect/sharp_pain/on_remove() + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/afflicted_bodypart = human_owner.pain_controller?.body_zones[targeted_zone] + if(!afflicted_bodypart) + return + + var/healed_amount = pain_amount * -0.33 + if((afflicted_bodypart.pain + healed_amount) < initial_pain_amount) + healed_amount = initial_pain_amount - afflicted_bodypart.pain + + human_owner.pain_controller.adjust_bodypart_pain(targeted_zone, healed_amount, pain_type) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/temp_pack.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/temp_pack.dm new file mode 100644 index 000000000000..bc5f230aff60 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/status_effects/temp_pack.dm @@ -0,0 +1,171 @@ +/// Status effects applied when pressing a hot or cold item onto a bodypart, to soothe pain. +/datum/status_effect/temperature_pack + id = "temp_pack" + status_type = STATUS_EFFECT_MULTIPLE + on_remove_on_mob_delete = TRUE + tick_interval = 5 SECONDS + processing_speed = STATUS_EFFECT_NORMAL_PROCESS + alert_type = null + /// The item we're using to heal pain. + var/obj/item/pressed_item + /// The mob holding the [pressed_item] to [owner]. Can be [owner]. + var/mob/living/holder + /// The zone we're healing. + var/targeted_zone = BODY_ZONE_CHEST + /// The amount we heal per tick. Positive number. + var/pain_heal_amount = 0 + /// The pain modifier placed on the limb. + var/pain_modifier = 1 + /// The change in temperature while applied. + var/temperature_change = 0 + +/datum/status_effect/temperature_pack/on_creation( + mob/living/new_owner, + mob/living/holder, + obj/item/pressed_item, + targeted_zone = BODY_ZONE_CHEST, + pain_heal_amount = 0, + pain_modifier = 1, + temperature_change = 0, +) + + src.holder = holder + src.pressed_item = pressed_item + src.targeted_zone = targeted_zone + src.pain_heal_amount = pain_heal_amount + src.pain_modifier = pain_modifier + src.temperature_change = temperature_change + return ..() + +/datum/status_effect/temperature_pack/on_apply() + if(!ishuman(owner)) + return FALSE + + var/mob/living/carbon/human/human_owner = owner + if(!human_owner.pain_controller || human_owner.stat == DEAD) + return FALSE + + if(QDELETED(pressed_item)) + return FALSE + + if(QDELETED(holder)) + return FALSE + + for(var/datum/status_effect/temperature_pack/pre_existing_effect in owner.status_effects) + if(pre_existing_effect == src) + continue + if(pre_existing_effect.targeted_zone == targeted_zone) + return FALSE + + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + if(!held_bodypart) + return FALSE + + held_bodypart.bodypart_pain_modifier *= pain_modifier + pressed_item.AddComponent(/datum/component/make_item_slow) + RegisterSignal(pressed_item, list(COMSIG_QDELETING, COMSIG_ITEM_DROPPED, COMSIG_TEMPERATURE_PACK_EXPIRED), PROC_REF(stop_effects)) + if(holder != owner) + RegisterSignal(holder, COMSIG_MOVABLE_MOVED, PROC_REF(check_adjacency)) + return TRUE + +/datum/status_effect/temperature_pack/tick() + if(QDELETED(holder) || QDELETED(pressed_item) || owner.stat == DEAD || !holder.is_holding(pressed_item)) + stop_effects(silent = TRUE) + return + + var/mob/living/carbon/human/human_owner = owner + if(!human_owner.get_bodypart_pain(targeted_zone, TRUE)) + stop_effects(silent = FALSE) + return + + if(temperature_change) + owner.adjust_bodytemperature(temperature_change, human_owner.get_body_temp_cold_damage_limit() + 5, human_owner.get_body_temp_heat_damage_limit() - 5) + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + if(held_bodypart && prob(66)) + human_owner.cause_pain(targeted_zone, -pain_heal_amount) + if(prob(10)) + to_chat(human_owner, span_italics(span_notice("[pressed_item] dulls the pain in your [held_bodypart.name] a little."))) + +/** + * Check on move whether [holder] is still adjacent to [owner]. + */ +/datum/status_effect/temperature_pack/proc/check_adjacency(datum/source) + SIGNAL_HANDLER + + if(!in_range(holder, owner)) + stop_effects(silent = FALSE) + +/** + * Stop the effects of this status effect, deleting it, and sending a message if [silent] is TRUE. + */ +/datum/status_effect/temperature_pack/proc/stop_effects(datum/source, silent = FALSE) + SIGNAL_HANDLER + + if(!silent && !QDELETED(holder) && !QDELETED(pressed_item)) + to_chat(holder, span_notice("You stop pressing [pressed_item] against [owner == holder ? "yourself":"[owner]"].")) + qdel(src) + +/datum/status_effect/temperature_pack/on_remove() + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller?.body_zones[targeted_zone] + held_bodypart?.bodypart_pain_modifier /= pain_modifier + qdel(pressed_item.GetComponent(/datum/component/make_item_slow)) + UnregisterSignal(pressed_item, list(COMSIG_QDELETING, COMSIG_ITEM_DROPPED, COMSIG_TEMPERATURE_PACK_EXPIRED)) + UnregisterSignal(holder, COMSIG_MOVABLE_MOVED) + + pressed_item = null + holder = null + +/// Cold stuff needs to stay cold. +/datum/status_effect/temperature_pack/cold + id = "cold_pack" + temperature_change = -2 + +/datum/status_effect/temperature_pack/cold/on_apply() + . = ..() + if(!.) + return + + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + to_chat(human_owner, span_green("You wince as [owner == holder ? "you press" : "[holder] presses"] [pressed_item] against your [parse_zone(held_bodypart.body_zone)], but eventually the chill starts to dull the pain.")) + human_owner.pain_emote("wince", 3 SECONDS) + +/datum/status_effect/temperature_pack/cold/get_examine_text() + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + return span_danger("[holder == owner ? "[owner.p_Theyre()]" : "[holder] is"] pressing a cold [pressed_item.name] against [owner.p_their()] [parse_zone(held_bodypart.body_zone)].") + +/datum/status_effect/temperature_pack/cold/tick() + if(pressed_item.resistance_flags & ON_FIRE) + stop_effects(silent = TRUE) + return + + return ..() + +/// And warm stuff needs to stay warm. +/datum/status_effect/temperature_pack/heat + id = "heat_pack" + temperature_change = 2 + +/datum/status_effect/temperature_pack/heat/on_apply() + . = ..() + if(!.) + return + + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + to_chat(human_owner, span_green("You gasp as [owner == holder ? "you press" : "[holder] presses"] [pressed_item] against your [held_bodypart.name], but eventually the warmth starts to dull the pain.")) + human_owner.pain_emote("gasp", 3 SECONDS) + +/datum/status_effect/temperature_pack/head/get_examine_text() + var/mob/living/carbon/human/human_owner = owner + var/obj/item/bodypart/held_bodypart = human_owner.pain_controller.body_zones[targeted_zone] + return span_danger("[holder == owner ? "[owner.p_Theyre()]" : "[holder] is"] pressing a warm [pressed_item.name] against [owner.p_their()] [held_bodypart.name].") + +/datum/status_effect/temperature_pack/heat/tick() + if(HAS_TRAIT(pressed_item, TRAIT_FROZEN)) + stop_effects(silent = TRUE) + return + + return ..() diff --git a/monkestation/code/modules/can_spessmen_feel_pain/pain/traits.dm b/monkestation/code/modules/can_spessmen_feel_pain/pain/traits.dm new file mode 100644 index 000000000000..065b51865734 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/pain/traits.dm @@ -0,0 +1,101 @@ +// Less vulnerable to pain (lower pain modifier) +/datum/quirk/pain_resistance + name = "Hypoalgesia" + desc = "You're more resistant to pain - Your pain naturally decreases faster and you receive less overall." + icon = FA_ICON_FIST_RAISED + value = 8 + gain_text = "You feel duller." + lose_text = "You feel sharper." + medical_record_text = "Patient has Hypoalgesia, and is less susceptible to pain stimuli than most." + mail_goodies = list(/obj/item/temperature_pack/heat) + +/datum/quirk/pain_resistance/add() + var/mob/living/carbon/carbon_holder = quirk_holder + if(istype(carbon_holder)) + carbon_holder.set_pain_mod(PAIN_MOD_QUIRK, 0.9) + +/datum/quirk/pain_resistance/remove() + var/mob/living/carbon/carbon_holder = quirk_holder + if(istype(carbon_holder)) + carbon_holder.unset_pain_mod(PAIN_MOD_QUIRK) + +// More vulnerabile to pain (increased pain modifier) +/datum/quirk/pain_vulnerability + name = "Hyperalgesia" + desc = "You're less resistant to pain - Your pain naturally decreases slower and you receive more overall." + icon = FA_ICON_USER_INJURED + value = -6 + gain_text = span_danger("You feel sharper.") + lose_text = span_notice("You feel duller.") + medical_record_text = "Patient has Hyperalgesia, and is more susceptible to pain stimuli than most." + mail_goodies = list(/obj/item/temperature_pack/cold) + +/datum/quirk/pain_vulnerability/add() + var/mob/living/carbon/carbon_holder = quirk_holder + if(istype(carbon_holder)) + carbon_holder.set_pain_mod(PAIN_MOD_QUIRK, 1.15) + +/datum/quirk/pain_vulnerability/remove() + var/mob/living/carbon/carbon_holder = quirk_holder + if(istype(carbon_holder)) + carbon_holder.unset_pain_mod(PAIN_MOD_QUIRK) + + +// More vulnerable to pain + get pain from more actions (Glass bones and paper skin) +/datum/quirk/allodynia + name = "Allodynia" + desc = "Your nerves are extremely sensitive - you may receive pain from things that wouldn't normally be painful, such as hugs." + icon = FA_ICON_TIRED + value = -10 + gain_text = span_danger("You feel fragile.") + lose_text = span_notice("You feel less delicate.") + medical_record_text = "Patient has Allodynia, and is extremely sensitive to touch, pain, and similar stimuli." + mail_goodies = list(/obj/item/temperature_pack/cold, /obj/item/temperature_pack/heat) + COOLDOWN_DECLARE(time_since_last_touch) + +/datum/quirk/allodynia/add() + var/mob/living/carbon/carbon_holder = quirk_holder + if(istype(carbon_holder)) + carbon_holder.set_pain_mod(PAIN_MOD_QUIRK, 1.2) + RegisterSignal(quirk_holder, list(COMSIG_LIVING_GET_PULLED, COMSIG_CARBON_HELP_ACT), PROC_REF(cause_body_pain)) + +/datum/quirk/allodynia/remove() + var/mob/living/carbon/carbon_holder = quirk_holder + if(istype(carbon_holder)) + carbon_holder.unset_pain_mod(PAIN_MOD_QUIRK) + UnregisterSignal(quirk_holder, list(COMSIG_LIVING_GET_PULLED, COMSIG_CARBON_HELP_ACT)) + +/** + * Causes pain to arm zones if they're targeted, and the chest zone otherwise. + * + * source - quirk_holder / the mob being touched + * toucher - the mob that's interacting with source (pulls, hugs, etc) + */ +/datum/quirk/allodynia/proc/cause_body_pain(datum/source, mob/living/toucher) + SIGNAL_HANDLER + + if(!COOLDOWN_FINISHED(src, time_since_last_touch)) + return + + if(quirk_holder.stat != CONSCIOUS) + return + + to_chat(quirk_holder, span_danger("[toucher] touches you, causing a wave of sharp pain throughout your [parse_zone(toucher.zone_selected)]!")) + actually_hurt(toucher.zone_selected, 9) + +/** + * Actually cause the pain to the target limb, causing a visual effect, emote, and a negative moodlet. + * + * zone - the body zone being affected + * amount - the amount of pain being added + */ +/datum/quirk/allodynia/proc/actually_hurt(zone, amount) + var/mob/living/carbon/carbon_holder = quirk_holder + if(!istype(carbon_holder)) + return + + new /obj/effect/temp_visual/annoyed(quirk_holder.loc) + carbon_holder.cause_pain(zone, amount) + INVOKE_ASYNC(quirk_holder, TYPE_PROC_REF(/mob/living, pain_emote)) + quirk_holder.add_mood_event("bad_touch", /datum/mood_event/very_bad_touch) + COOLDOWN_START(src, time_since_last_touch, 30 SECONDS) diff --git a/monkestation/code/modules/can_spessmen_feel_pain/readme.md b/monkestation/code/modules/can_spessmen_feel_pain/readme.md new file mode 100644 index 000000000000..18513d949f33 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/readme.md @@ -0,0 +1,21 @@ +## Title: + + +MODULE ID: SPESSMAN_PAIN + +### Description: + +This pr adds a "lite" version of baymed pain to the game. + + +### Included files that are not contained in this module: + - defines/monkestation/pain.dm + + + +### Credits: + + + +Made by MrMelbert (https://github.com/MrMelbert/MapleStationCode/pull/17) +Ported and Adapted by Dwasint diff --git a/monkestation/code/modules/can_spessmen_feel_pain/subsystem.dm b/monkestation/code/modules/can_spessmen_feel_pain/subsystem.dm new file mode 100644 index 000000000000..690da8aa97f1 --- /dev/null +++ b/monkestation/code/modules/can_spessmen_feel_pain/subsystem.dm @@ -0,0 +1,5 @@ +PROCESSING_SUBSYSTEM_DEF(pain) + name = "Pain" + flags = SS_NO_INIT | SS_BACKGROUND + priority = 20 + wait = 2 SECONDS diff --git a/monkestation/code/modules/cargo/crates/general.dm b/monkestation/code/modules/cargo/crates/general.dm index 4fee7c68e3cb..b400966fd8e9 100644 --- a/monkestation/code/modules/cargo/crates/general.dm +++ b/monkestation/code/modules/cargo/crates/general.dm @@ -14,3 +14,27 @@ /obj/structure/easel) crate_name = "Canvas Crate" crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/misc/anvilcrate + name = "Deluxe Smithing Kit" + desc = "A kit containing everything you need for smithing, even using custom materials!" + cost = CARGO_CRATE_VALUE * 40 + contains = list( + /obj/structure/anvil, + /obj/structure/machine/assembly_bench, + /obj/item/circuitboard/machine/material_alloyer, + /obj/item/circuitboard/machine/electroplater, + /obj/item/circuitboard/machine/material_analyzer + ) + crate_name = "Deluxe Smithing Crate" + crate_type = /obj/structure/closet/crate/large +/datum/supply_pack/misc/anvilcratesmol + name = "Starter Smithing Kit" + desc = "A kit containing the basic structures for hobby smithing! Materials not included." + cost = CARGO_CRATE_VALUE * 10 + contains = list( + /obj/structure/anvil, + /obj/structure/machine/assembly_bench + ) + crate_name = "Basic Smithing Crate" + crate_type = /obj/structure/closet/crate/large diff --git a/monkestation/code/modules/cargo/crates/service.dm b/monkestation/code/modules/cargo/crates/service.dm index 66077f9c5147..3b0c69c0efe9 100644 --- a/monkestation/code/modules/cargo/crates/service.dm +++ b/monkestation/code/modules/cargo/crates/service.dm @@ -40,9 +40,13 @@ name = "Bulk Cassette Crate" desc = "In the unlikely event all your cassettes are the same, or the likely event youve run out of songs to play, this crate is here to help you, contains 10 Approved Cassettes for use in the DJ Station." cost = CARGO_CRATE_VALUE * 4 - contains = list(/obj/item/device/cassette_tape/random = 10) + contains = list() crate_name = "cassette crate" +/datum/supply_pack/service/cassettes/fill(obj/structure/closet/crate/our_crate) + for(var/id in unique_random_tapes(10)) + new /obj/item/device/cassette_tape(our_crate, id) + /datum/supply_pack/service/blankcassettes name = "Blank Cassettes Crate" desc = "in the VERY unlikely event you have run out of blank cassettes, you can get 10 blank ones here. Contains 10 blank cassettes for use in Walkmans." diff --git a/monkestation/code/modules/cargo/mail/mail.dmi b/monkestation/code/modules/cargo/mail/mail.dmi new file mode 100644 index 000000000000..f559782cfddd Binary files /dev/null and b/monkestation/code/modules/cargo/mail/mail.dmi differ diff --git a/monkestation/code/modules/cargo/mail/mail_token.dm b/monkestation/code/modules/cargo/mail/mail_token.dm new file mode 100644 index 000000000000..21a24ebbbe6d --- /dev/null +++ b/monkestation/code/modules/cargo/mail/mail_token.dm @@ -0,0 +1,21 @@ +/obj/item/cargo/mail_token + name = "mail token" + desc = "A plastic mail token. Part of a new program to get Nanotrasen cargo employees to deliver mail.\ + Can be exported to Central Command for an increase to the budget. The back of the token seems to have barcode on it for handling tips." + icon = 'monkestation/code/modules/cargo/mail/mail.dmi' + w_class = WEIGHT_CLASS_TINY + icon_state = "mailtoken-1" + item_flags = NOBLUDGEON + resistance_flags = FLAMMABLE + custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT) + var/datum/bank_account/token_handler_account + +/obj/item/cargo/mail_token/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NO_BARCODES, INNATE_TRAIT) // Don't allow anyone to override our pricetag component with a barcode + +/datum/export/mail_token + cost = CARGO_CRATE_VALUE + unit_name = "mail token" + k_elasticity = 0 + export_types = list(/obj/item/cargo/mail_token) diff --git a/monkestation/code/modules/cassettes/cassette_approval.dm b/monkestation/code/modules/cassettes/cassette_approval.dm index ae26e5d44849..dce781859162 100644 --- a/monkestation/code/modules/cassettes/cassette_approval.dm +++ b/monkestation/code/modules/cassettes/cassette_approval.dm @@ -74,7 +74,7 @@ GLOBAL_LIST_INIT(cassette_reviews, list()) var/action_taken = FALSE -/datum/cassette_review/Destroy(force, ...) +/datum/cassette_review/Destroy(force) . = ..() QDEL_LIST(cassette_data) submitter = null diff --git a/monkestation/code/modules/cassettes/cassette_db/subsystem.dm b/monkestation/code/modules/cassettes/cassette_db/subsystem.dm index 58c578103781..bbca8076a20c 100644 --- a/monkestation/code/modules/cassettes/cassette_db/subsystem.dm +++ b/monkestation/code/modules/cassettes/cassette_db/subsystem.dm @@ -1,7 +1,7 @@ SUBSYSTEM_DEF(cassette_storage) name = "Cassette Storage" flags = SS_NO_FIRE - runlevels = RUNLEVEL_LOBBY|RUNLEVELS_DEFAULT + runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT var/list/cassette_datums = list() @@ -18,3 +18,13 @@ SUBSYSTEM_DEF(cassette_storage) qdel(new_data) continue cassette_datums += new_data + +/datum/controller/subsystem/cassette_storage/proc/get_cassettes_by_ckey(user_ckey) as /list + RETURN_TYPE(/list) + . = list() + if(!user_ckey) + return + user_ckey = ckey(user_ckey) + for(var/datum/cassette_data/tape as anything in SScassette_storage.cassette_datums) + if(ckey(tape.cassette_author_ckey) == user_ckey) + . += tape diff --git a/monkestation/code/modules/cassettes/machines/cassette_rack.dm b/monkestation/code/modules/cassettes/machines/cassette_rack.dm index 1b9141d52237..9abbeabb0371 100644 --- a/monkestation/code/modules/cassettes/machines/cassette_rack.dm +++ b/monkestation/code/modules/cassettes/machines/cassette_rack.dm @@ -48,12 +48,45 @@ /obj/structure/cassette_rack/prefilled/Initialize(mapload) . = ..() REGISTER_REQUIRED_MAP_ITEM(1, INFINITY) + RegisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED, PROC_REF(spawn_curator_tapes)) for(var/i in 1 to spawn_blanks) new /obj/item/device/cassette_tape/blank(src) for(var/id in unique_random_tapes(spawn_random)) new /obj/item/device/cassette_tape(src, id) update_appearance() +/obj/structure/cassette_rack/prefilled/Destroy() + UnregisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED) + return ..() + +/obj/structure/cassette_rack/prefilled/proc/spawn_curator_tapes(datum/source, mob/living/new_crewmember, rank) + SIGNAL_HANDLER + if(QDELETED(new_crewmember) || new_crewmember.stat == DEAD || !new_crewmember.ckey) + return + if(!istype(new_crewmember.mind?.assigned_role, /datum/job/curator)) + return + add_user_tapes(new_crewmember.ckey) + +/obj/structure/cassette_rack/prefilled/proc/add_user_tapes(user_ckey, max_amt = 3, expand_max_size = TRUE) + var/list/user_tapes = SScassette_storage.get_cassettes_by_ckey(user_ckey) + if(!length(user_tapes)) + return FALSE + var/list/existing_tapes = list() + for(var/obj/item/device/cassette_tape/tape in src) + if(tape.id) + existing_tapes[tape.id] = TRUE + for(var/iter in 1 to max_amt) + if(!length(user_tapes)) + break + var/datum/cassette_data/tape = pick_n_take(user_tapes) + if(existing_tapes[tape.cassette_id]) + continue + new /obj/item/device/cassette_tape(src, tape.cassette_id) + if(expand_max_size && !QDELETED(atom_storage)) + atom_storage.max_slots += max_amt + atom_storage.max_total_storage += max_amt * WEIGHT_CLASS_SMALL + return TRUE + #undef DEFAULT_BLANKS_TO_SPAWN #undef DEFAULT_CASSETTES_TO_SPAWN #undef MAX_STORED_CASSETTES diff --git a/monkestation/code/modules/cassettes/machines/media/HTML5_player.dm b/monkestation/code/modules/cassettes/machines/media/HTML5_player.dm index 58c6cd2233da..8e262c8fe272 100644 --- a/monkestation/code/modules/cassettes/machines/media/HTML5_player.dm +++ b/monkestation/code/modules/cassettes/machines/media/HTML5_player.dm @@ -18,6 +18,11 @@ function SetMusic(url, time, volume, balance) { if(url != "") player.addEventListener("canplay", setTime, false); player.src = url; } +function SetVolume(volume, balance) { + var player = document.getElementById('player'); + player.volume = +volume; +} + diff --git a/monkestation/code/modules/cassettes/machines/media/jukebox.dm b/monkestation/code/modules/cassettes/machines/media/jukebox.dm index a20cac70467e..98edbca0c226 100644 --- a/monkestation/code/modules/cassettes/machines/media/jukebox.dm +++ b/monkestation/code/modules/cassettes/machines/media/jukebox.dm @@ -38,8 +38,7 @@ machine_stat |= BROKEN /obj/machinery/media/jukebox/Destroy() - qdel(wires) - wires = null + QDEL_NULL(wires) return ..() /obj/machinery/media/jukebox/proc/getTracksList() @@ -96,7 +95,7 @@ /obj/machinery/media/jukebox/attackby(obj/item/W as obj, mob/user as mob) src.add_fingerprint(user) - if(default_deconstruction_screwdriver(user, W)) + if(default_deconstruction_screwdriver(user, "[state_base]-broken", state_base, W)) return if(default_deconstruction_crowbar(W)) return @@ -136,6 +135,10 @@ if (panel_open) add_overlay("panel_open") +/obj/machinery/media/jukebox/on_set_panel_open(old_value) + . = ..() + update_icon() + /obj/machinery/media/jukebox/attack_hand(mob/user) if(machine_stat & (NOPOWER | BROKEN)) to_chat(usr, "\The [src] doesn't appear to function.") @@ -218,7 +221,7 @@ /obj/machinery/media/jukebox/attackby(obj/item/W as obj, mob/user as mob) src.add_fingerprint(user) - if(default_deconstruction_screwdriver(user, W)) + if(default_deconstruction_screwdriver(user, icon_state, icon_state, W)) return if(default_deconstruction_crowbar(W)) return diff --git a/monkestation/code/modules/cassettes/machines/media/media_manager.dm b/monkestation/code/modules/cassettes/machines/media/media_manager.dm index 8e0bf91cf616..0d7a15e4d5a5 100644 --- a/monkestation/code/modules/cassettes/machines/media/media_manager.dm +++ b/monkestation/code/modules/cassettes/machines/media/media_manager.dm @@ -111,9 +111,10 @@ var/client/owner // Client this is actually running in var/forced=0 // If true, current url overrides area media sources var/playerstyle // Choice of which player plugin to use - var/const/WINDOW_ID = "statwindow.mediapanel" // Which elem in skin.dmf to use + var/const/WINDOW_ID = "outputwindow.mediapanel" // Which elem in skin.dmf to use var/balance=0 // do you know what insanity is? Value from -100 to 100 where -100 is left and 100 is right var/signal_synced = 0 //used to check if we have our signal created + var/lobby_music = FALSE /datum/media_manager/New(var/client/C) ASSERT(istype(C)) @@ -130,8 +131,9 @@ /datum/media_manager/proc/send_update() if(!(owner.prefs)) return - if(owner.prefs.channel_volume["[CHANNEL_JUKEBOX]"]) - volume *= (owner.prefs.channel_volume["[CHANNEL_JUKEBOX]"] * 0.01) + if(!lobby_music) + if(owner.prefs.channel_volume["[CHANNEL_JUKEBOX]"]) + volume = (owner.prefs.channel_volume["[CHANNEL_JUKEBOX]"]) if(!owner.prefs.read_preference(/datum/preference/toggle/hear_music)) owner << output(list2params(list("", (world.time - 0) / 10, volume * 1, 0)), "[WINDOW_ID]:SetMusic") diff --git a/monkestation/code/modules/cassettes/machines/radio_mic.dm b/monkestation/code/modules/cassettes/machines/radio_mic.dm index 75ecbcdc7994..c0f5e424f7b1 100644 --- a/monkestation/code/modules/cassettes/machines/radio_mic.dm +++ b/monkestation/code/modules/cassettes/machines/radio_mic.dm @@ -8,9 +8,12 @@ radio_host = TRUE command = TRUE + lossless = TRUE + density = TRUE anchored = TRUE resistance_flags = INDESTRUCTIBLE + pass_flags_self = parent_type::pass_flags_self | LETPASSCLICKS /// overlay when speaker is on overlay_speaker_idle = null diff --git a/monkestation/code/modules/client/preferences/alt_jobs/titles.dm b/monkestation/code/modules/client/preferences/alt_jobs/titles.dm index 9effc08314a3..1e45300b1627 100644 --- a/monkestation/code/modules/client/preferences/alt_jobs/titles.dm +++ b/monkestation/code/modules/client/preferences/alt_jobs/titles.dm @@ -29,6 +29,7 @@ "Artist", "Off-Duty Staff", "Off-Duty Crew", + "Test Subject", ) /datum/job/atmospheric_technician @@ -70,6 +71,7 @@ /datum/job/brig_physician alt_titles = list( + "Brig Physician", "Jail Doctor", "Brig Orderly", "Prison Medic", @@ -141,6 +143,7 @@ "Jester", "Joker", "Comedian", + "Professional Nuisance", ) /datum/job/cook @@ -150,6 +153,7 @@ "Butcher", "Culinary Artist", "Sous-Chef", + "Pizzaiolo", ) /datum/job/curator @@ -288,6 +292,7 @@ "Biorobotics Director", "Research Supervisor", "Chief Science Officer", + "Chief Artificer", ) /datum/job/roboticist @@ -314,6 +319,7 @@ "Xenoarchaeologist", "Research Assistant", "Graduate Student", + "Artificer" ) /datum/job/security_officer diff --git a/monkestation/code/modules/client/verbs.dm b/monkestation/code/modules/client/verbs.dm index 663221f424bf..adf97b39536c 100644 --- a/monkestation/code/modules/client/verbs.dm +++ b/monkestation/code/modules/client/verbs.dm @@ -120,16 +120,18 @@ GLOBAL_LIST_INIT(antag_token_config, load_antag_token_config()) /datum/antagonist/rev/head, /datum/antagonist/wizard, /datum/antagonist/clock_cultist, - /datum/antagonist/ninja + /datum/antagonist/ninja, )), MEDIUM_THREAT = init_antag_list(list( /datum/antagonist/heretic, - /datum/antagonist/bloodsucker + /datum/antagonist/bloodsucker, + /datum/antagonist/cortical_borer/hivemind, )), LOW_THREAT = init_antag_list(list( /datum/antagonist/florida_man, /datum/antagonist/traitor, - /datum/antagonist/paradox_clone + /datum/antagonist/paradox_clone, + /datum/antagonist/cortical_borer, )) ) var/static/list/toml_keys = list( diff --git a/monkestation/code/modules/client/verbs/deadchat.dm b/monkestation/code/modules/client/verbs/deadchat.dm new file mode 100644 index 000000000000..6f50ae9b2112 --- /dev/null +++ b/monkestation/code/modules/client/verbs/deadchat.dm @@ -0,0 +1,20 @@ +// Deadchat copied from ./looc.dm which was ported from Bee, which was in turn ported from Citadel +GLOBAL_VAR_INIT(deadchat_allowed, TRUE) + +//admin tool +/proc/toggle_deadchat(toggle = null) + if(!isnull(toggle)) //if we're specifically en/disabling deadchat + GLOB.deadchat_allowed = toggle + else //otherwise just toggle it + GLOB.deadchat_allowed = !GLOB.deadchat_allowed + deadchat_broadcast("Deadchat channel has been globally [GLOB.deadchat_allowed ? "enabled" : "disabled"].") + +/datum/admins/proc/toggledeadchat() + set category = "Server" + set name = "Toggle Deadchat" + if(!check_rights(R_ADMIN)) + return + toggle_deadchat() + log_admin("[key_name(usr)] toggled Deadchat.") + message_admins("[key_name_admin(usr)] toggled Deadchat.") + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Deadchat", "[GLOB.deadchat_allowed ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/monkestation/code/modules/clothing/durathread_weave.dm b/monkestation/code/modules/clothing/durathread_weave.dm new file mode 100644 index 000000000000..a1852265266d --- /dev/null +++ b/monkestation/code/modules/clothing/durathread_weave.dm @@ -0,0 +1,88 @@ +/// A durathread weave has been used on this item. +#define TRAIT_DURATHREAD_INFUSED "durathread_infused" +#define DOAFTER_SOURCE_DURATHREAD_WEAVE "doafter_durathread_weave" + +GLOBAL_LIST_INIT(durathread_weave_blacklist, typecacheof(list( + /obj/item/clothing/gloves/mod, + /obj/item/clothing/head/beanie/durathread, + /obj/item/clothing/head/beret/durathread, + /obj/item/clothing/head/costume/crown, + /obj/item/clothing/head/helmet/durathread, + /obj/item/clothing/head/helmet/space, + /obj/item/clothing/head/hooded/ablative, + /obj/item/clothing/head/mod, + /obj/item/clothing/head/utility, + /obj/item/clothing/mask/bandana/durathread, + /obj/item/clothing/shoes/magboots, + /obj/item/clothing/shoes/mod, + /obj/item/clothing/shoes/sandal, + /obj/item/clothing/suit/armor, + /obj/item/clothing/suit/chaplainsuit/armor, + /obj/item/clothing/suit/hooded/ablative, + /obj/item/clothing/suit/mod, + /obj/item/clothing/suit/space, + /obj/item/clothing/under/misc/durathread, + /obj/item/clothing/under/rank/cargo/miner, +))) + +/obj/item/stack/sheet/durathread/examine(mob/user) + . = ..() + . += span_info("You can click on a piece of clothing, with an active welder in your offhand, in order to reinforce it!") + +/obj/item/stack/sheet/durathread/afterattack(obj/item/clothing/clothing, mob/living/user, proximity) + . = ..() + if(. || !isliving(user) || !proximity) + return + . |= AFTERATTACK_PROCESSED_ITEM + var/obj/item/welder + for(var/obj/item/thingy in user.held_items) + if(thingy.tool_behaviour == TOOL_WELDER) + welder = thingy + break + if(QDELETED(welder)) + to_chat(user, span_warning("You need to have a welder in your hands in order to reinforce clothing with durathread!")) + return + else if(!isclothing(clothing) || QDELING(clothing)) + to_chat(user, span_warning("You can only reinforce clothing with durathread!")) + return + else if(is_type_in_typecache(clothing, GLOB.durathread_weave_blacklist)) + to_chat(user, span_warning("You cannot reinforce [clothing] with durathread!")) + return + else if(HAS_TRAIT(clothing, TRAIT_DURATHREAD_INFUSED)) + to_chat(user, span_warning("[clothing] already has durathread reinforcement!")) + return + else if(amount < 5) + to_chat(user, span_warning("You need at least 5 durathread to reinforce [src]!")) + return + to_chat(user, span_info("You begin to reinforce [clothing] with [src]...")) + if(!welder.use_tool(clothing, user, 10 SECONDS, 5, extra_checks = CALLBACK(src, PROC_REF(has_enough)), interaction_key = DOAFTER_SOURCE_DURATHREAD_WEAVE)) + to_chat(user, span_warning("You fail to reinforce [clothing]!")) + return + var/datum/armor/clothing_armor = clothing.get_armor() + var/datum/armor/reinforced_armor = clothing_armor?.combine_max_armor(get_armor_by_type(/datum/armor/durathread_weave)) + if(isnull(reinforced_armor)) + CRASH("Got null armor when trying to reinforce clothing with durathread.") + else if(reinforced_armor ~= clothing_armor) // the armor was already as good as or better than the durathread reinforcement + to_chat(user, span_warning("[clothing] cannot be further reinforced!")) + return + if(!use(5)) + to_chat(user, span_warning("You need at least 5 durathread to reinforce [src]!")) + return + to_chat(user, span_info("You reinforce [clothing] with durathread!")) + clothing.set_armor(reinforced_armor) + clothing.name = "durathread-reinforced [clothing.name]" + ADD_TRAIT(clothing, TRAIT_DURATHREAD_INFUSED, CLOTHING_TRAIT) + +/obj/item/stack/sheet/durathread/proc/has_enough() + return amount >= 5 + +/datum/armor/durathread_weave + melee = 20 + bullet = 10 + laser = 30 + energy = 30 + fire = 35 + acid = 35 + wound = 20 + +#undef DOAFTER_SOURCE_DURATHREAD_WEAVE diff --git a/monkestation/code/modules/clothing/glasses/glasses.dm b/monkestation/code/modules/clothing/glasses/glasses.dm new file mode 100644 index 000000000000..e989aa924148 --- /dev/null +++ b/monkestation/code/modules/clothing/glasses/glasses.dm @@ -0,0 +1,6 @@ +/obj/item/clothing/glasses/crueltysquad_glasses + name = "CS inactive vision augmenter" + desc = "a pair of glasses usually designed to identify targets for execution, although this mechanic has been removed for civilian casual use." + icon = 'monkestation/icons/obj/clothing/glasses.dmi' + worn_icon = 'monkestation/icons/obj/clothing/eyes.dmi' + icon_state = "crueltysquad_glasses" diff --git a/monkestation/code/modules/clothing/gloves/gloves.dm b/monkestation/code/modules/clothing/gloves/gloves.dm index da644870573b..6022d3bb8847 100644 --- a/monkestation/code/modules/clothing/gloves/gloves.dm +++ b/monkestation/code/modules/clothing/gloves/gloves.dm @@ -8,3 +8,47 @@ /obj/item/clothing/gloves/color/plasmaman icon = 'monkestation/icons/obj/clothing/plasmaman_gloves.dmi' worn_icon = 'monkestation/icons/mob/clothing/plasmaman_gloves.dmi' + +/obj/item/clothing/gloves/crueltysquad_gloves + name = "CSIJ level I gloves" + desc = "Armor used by assassins working for Cruelty Squad, stripped of all of its functions for kids to play with." + icon = 'monkestation/icons/obj/clothing/gloves.dmi' + worn_icon = 'monkestation/icons/mob/clothing/gloves.dmi' + icon_state = "crueltysquad_gloves" + +/obj/item/clothing/gloves/civilprotection_gloves + name = "civil protection gloves" + desc = "Armored gloves for beating anticitizens." + icon = 'monkestation/icons/obj/clothing/gloves.dmi' + worn_icon = 'monkestation/icons/mob/clothing/gloves.dmi' + icon_state = "civilprotection_gloves" + +/obj/item/clothing/gloves/infinity_gloves + name = "infinity wristbands" + desc = "The bands are oddly moist... let's hope it's not blood." + icon = 'monkestation/icons/obj/clothing/gloves.dmi' + worn_icon = 'monkestation/icons/mob/clothing/gloves.dmi' + icon_state = "infinity_wrist" + +/obj/item/clothing/gloves/infinity_gloves/equipped(mob/living/carbon/user, slot) + . = ..() + if(!ishuman(user)) + return + if(slot == ITEM_SLOT_GLOVES) + var/obj/item/bodypart/user_active_arm = user.get_active_hand() + user_active_arm.unarmed_damage_low += 0.2 + user_active_arm.unarmed_damage_high += 0.1 + +/obj/item/clothing/gloves/latex/surgical + name = "Black Latex gloves" + desc = "Pricy sterile gloves that are thinner than latex. The lining allows for the person to operate \ + quicker along with the faster use time of various chemical related items" + icon = 'monkestation/icons/obj/clothing/gloves.dmi' + worn_icon = 'monkestation/icons/mob/clothing/gloves.dmi' + icon_state = "surgeonlatex" + armor_type = /datum/armor/surgeon + clothing_traits = list(TRAIT_PERFECT_SURGEON, TRAIT_FASTMED) + custom_premium_price = PAYCHECK_CREW * 6 + +/datum/armor/surgeon + bio = 100 diff --git a/monkestation/code/modules/clothing/head/costume.dm b/monkestation/code/modules/clothing/head/costume.dm index e3bbb1c68c93..724d19481733 100644 --- a/monkestation/code/modules/clothing/head/costume.dm +++ b/monkestation/code/modules/clothing/head/costume.dm @@ -60,6 +60,49 @@ worn_icon = 'monkestation/icons/mob/clothing/head.dmi' icon_state = "guardman_helmet" +/obj/item/clothing/head/cop_mascot + name = "policeman mascot head" + desc = "A blue police mascot head. Formly designed to be a part of the BB Horror Film Franchise, it is now used for Police Theater." + icon = 'monkestation/icons/obj/clothing/hats.dmi' + worn_icon = 'monkestation/icons/mob/clothing/head.dmi' + icon_state = "cop_mascot" + worn_y_offset = 1 + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT + +/obj/item/clothing/head/helmet/civilprotection_helmet + name = "civil protection helmet" + desc = "I don't know about you, but I'm ready to join Civil Protection just to get a decent meal." + icon = 'monkestation/icons/obj/clothing/hats.dmi' + worn_icon = 'monkestation/icons/mob/clothing/head.dmi' + icon_state = "civilprotection_helmet" + custom_premium_price = PAYCHECK_COMMAND * 2 + var/on = FALSE + actions_types = list(/datum/action/item_action/flip) + +/obj/item/clothing/head/helmet/civilprotection_helmet/attack_self(mob/user) + on = !on + if(on == TRUE) + icon_state = "civilprotection_helmet" + if(on == FALSE) + icon_state = "civilprotection_helmet_closed" + user.update_worn_head() + +/obj/item/clothing/head/thekiller_head + name = "the killer's head" + desc = "A red drinky bird mask. The mascot of violence." + icon = 'monkestation/icons/obj/clothing/hats.dmi' + worn_icon = 'monkestation/icons/mob/clothing/head.dmi' + icon_state = "thekiller_head" + worn_y_offset = 1 + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT + +/obj/item/clothing/head/bb_wig + name = "bb wig" + desc = "Well known movie mascot BB, this wig is either worn by a notorious killer or some sort of girl-mouse." + icon = 'monkestation/icons/obj/clothing/hats.dmi' + worn_icon = 'monkestation/icons/mob/clothing/head.dmi' + icon_state = "bb_wig" + flags_inv = HIDEHAIR /* BUNNY EARS */ diff --git a/monkestation/code/modules/clothing/jobs/brig_physician.dm b/monkestation/code/modules/clothing/jobs/brig_physician.dm index 5aacbace4da7..9e6fbb05d34d 100644 --- a/monkestation/code/modules/clothing/jobs/brig_physician.dm +++ b/monkestation/code/modules/clothing/jobs/brig_physician.dm @@ -64,7 +64,7 @@ /obj/item/storage/backpack/brig_physician name = "brig physician's backpack" - desc = "You wear this on your back and put items into it." + desc = "A security-grade backpack, now in security grey!" icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' icon_state = "backpack-brigphys" @@ -74,7 +74,7 @@ /obj/item/storage/backpack/satchel/brig_physician name = "brig physician's satchel" - desc = "You wear this on your back and put items into it." + desc = "A security-grade satchel, now in security grey!" icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' icon_state = "satchel-brigphys" @@ -84,7 +84,7 @@ /obj/item/storage/backpack/duffelbag/brig_physician name = "brig physician's duffelbag" - desc = "You wear this on your back and put items into it." + desc = "A large duffel bag for holding extra supplies, now in security grey!" icon = 'monkestation/icons/obj/clothing/jobs/brig_physician.dmi' worn_icon = 'monkestation/icons/mob/clothing/jobs/brig_physician.dmi' icon_state = "duffel-brigphys" @@ -97,3 +97,19 @@ desc = "A nice set of sneakers in security red. These even have the custom fabric used by medical white! Sweet!" armor_type = /datum/armor/sneakers_white greyscale_colors = "#a52f29#918f8c" + +/obj/item/storage/backpack/duffelbag/brig_physician/surgery + name = "brig physician's surgical bag" + desc = "A large duffel bag for holding extra supplies, now in security grey! This one has a material inlay with space for various sharp-looking tools." + +/obj/item/storage/backpack/duffelbag/brig_physician/surgery/PopulateContents() + new /obj/item/scalpel(src) + new /obj/item/hemostat(src) + new /obj/item/retractor(src) + new /obj/item/circular_saw(src) + new /obj/item/bonesetter(src) + new /obj/item/surgicaldrill(src) + new /obj/item/cautery(src) + new /obj/item/surgical_drapes(src) + new /obj/item/clothing/mask/surgical(src) + new /obj/item/blood_filter(src) diff --git a/monkestation/code/modules/clothing/shoes/shoe.dm b/monkestation/code/modules/clothing/shoes/shoe.dm index bf700293ac7d..48a9b71ebd36 100644 --- a/monkestation/code/modules/clothing/shoes/shoe.dm +++ b/monkestation/code/modules/clothing/shoes/shoe.dm @@ -40,6 +40,33 @@ worn_icon = 'monkestation/icons/mob/clothing/feet.dmi' icon_state = "cowboyboots_black" +/obj/item/clothing/shoes/crueltysquad_shoes + name = "CSIJ level I combat boots" + desc = "Boots specifically designed to fit into the CSIJ level I body armor." + icon = 'monkestation/icons/obj/clothing/shoes.dmi' + worn_icon = 'monkestation/icons/mob/clothing/feet.dmi' + icon_state = "crueltysquad_shoes" + +/obj/item/clothing/shoes/costume_2021/infinity_shoes + name = "infinity sneakers" + desc = "Even for offbrand sneakers, these are outdated for the Kung Company." + icon = 'monkestation/icons/obj/clothing/shoes.dmi' + worn_icon = 'monkestation/icons/mob/clothing/feet.dmi' + icon_state = "infinity_shoes" + +/obj/item/clothing/shoes/bb_slippers + name = "bb slippers" + desc = "Despite looking like they'd fall off at any moment, they seem to stay on perfectly." + icon = 'monkestation/icons/obj/clothing/shoes.dmi' + worn_icon = 'monkestation/icons/mob/clothing/feet.dmi' + icon_state = "bb_slippers" + +/obj/item/clothing/shoes/civilprotection_boots + name = "civil protection boots" + desc = "for the officers chasing engineers." + icon = 'monkestation/icons/obj/clothing/shoes.dmi' + worn_icon = 'monkestation/icons/mob/clothing/feet.dmi' + icon_state = "civilprotection_boots" //START HEELS /obj/item/clothing/shoes/heels diff --git a/monkestation/code/modules/clothing/spacesuits/hardsuits/_armor.dm b/monkestation/code/modules/clothing/spacesuits/hardsuits/_armor.dm index 1c186ca39b95..574ae7fbec58 100644 --- a/monkestation/code/modules/clothing/spacesuits/hardsuits/_armor.dm +++ b/monkestation/code/modules/clothing/spacesuits/hardsuits/_armor.dm @@ -41,3 +41,14 @@ energy = 40 fire = 75 wound = 20 + +/datum/armor/hardsuit/juggernaut + melee = 80 + bullet = 80 + laser = 50 + energy = 60 + fire = 100 + wound = 25 + acid = 100 + bomb = 100 + diff --git a/monkestation/code/modules/clothing/spacesuits/hardsuits/heavy.dm b/monkestation/code/modules/clothing/spacesuits/hardsuits/heavy.dm new file mode 100644 index 000000000000..3a37ffc7bed9 --- /dev/null +++ b/monkestation/code/modules/clothing/spacesuits/hardsuits/heavy.dm @@ -0,0 +1,86 @@ +/obj/item/clothing/head/helmet/space/hardsuit/juggernaut + name = "cybersun juggernaut helmet" + desc = "A hardened helmet plated in synthetic xenofauna hide. A biometric scanning line flashes across the visor." + icon_state = "hardsuit0-juggernaut" + hardsuit_type = "juggernaut" + resistance_flags = ACID_PROOF | FIRE_PROOF + max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT + armor_type = /datum/armor/hardsuit/juggernaut + clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | HEADINTERNALS + actions_types = null + +/obj/item/clothing/head/helmet/space/hardsuit/juggernaut/Initialize(mapload) + . = ..() + AddElement(/datum/element/radiation_protected_clothing) + +/obj/item/clothing/head/helmet/space/hardsuit/juggernaut/equipped(mob/living/carbon/human/user, slot) + ..() + if (slot == ITEM_SLOT_HEAD) + var/datum/atom_hud/DHUD = GLOB.huds[DATA_HUD_DIAGNOSTIC_BASIC] + var/datum/atom_hud/SHUD = GLOB.huds[DATA_HUD_SECURITY_BASIC] + var/datum/atom_hud/MHUD = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] + DHUD.show_to(user) + SHUD.show_to(user) + MHUD.show_to(user) + +/obj/item/clothing/head/helmet/space/hardsuit/juggernaut/dropped(mob/living/carbon/human/user) + ..() + if (user.head == src) + var/datum/atom_hud/DHUD = GLOB.huds[DATA_HUD_DIAGNOSTIC_BASIC] + var/datum/atom_hud/SHUD = GLOB.huds[DATA_HUD_SECURITY_BASIC] + var/datum/atom_hud/MHUD = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] + DHUD.hide_from(user) + SHUD.hide_from(user) + MHUD.hide_from(user) + user.update_sight() + +/datum/action/item_action/toggle_suit_flashlight //monkestation addition + name = "Toggle Integrated Flashlight" + +/obj/item/clothing/suit/space/hardsuit/juggernaut + name = "cybersun juggernaut hardsuit" + desc = "A hyper resilient suit created from several layers of exotic materials and alloys. An etching in the neck pressure seal reads \"Property of Gorlex Marauders.\"" + worn_icon_digitigrade = 'monkestation/icons/mob/clothing/species/suit_digi.dmi' + icon_state = "hardsuit-juggernaut" + resistance_flags = ACID_PROOF | FIRE_PROOF + max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT //Same as an emergency firesuit. Not ideal for extended exposure. + allowed = list( + /obj/item/ammo_box, + /obj/item/ammo_casing, + /obj/item/restraints/handcuffs, + /obj/item/assembly/flash, + /obj/item/melee/baton, + /obj/item/melee/energy/sword, + /obj/item/shield/energy, + /obj/item/flashlight, + /obj/item/tank/internals, + /obj/item/gun, + /obj/item/tank/jetpack/oxygen/captain + ) + armor_type = /datum/armor/hardsuit/juggernaut + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/juggernaut + cell = /obj/item/stock_parts/cell/super + light_system = OVERLAY_LIGHT_DIRECTIONAL + light_outer_range = 5 + light_power = 1 + light_on = FALSE + light_color = LIGHT_COLOR_GREEN + actions_types = list(/datum/action/item_action/toggle_helmet, /datum/action/item_action/toggle_spacesuit,/datum/action/item_action/toggle_suit_flashlight) + slowdown = 2 + strip_delay = 70 + +/obj/item/clothing/suit/space/hardsuit/juggernaut/Initialize(mapload) + . = ..() + AddElement(/datum/element/radiation_protected_clothing) + +/obj/item/clothing/suit/space/hardsuit + var/on = FALSE + +/obj/item/clothing/suit/space/hardsuit/ui_action_click(mob/user, actiontype) + if(istype(actiontype, /datum/action/item_action/toggle_suit_flashlight)) + on = !on + set_light_on(on) + if(istype(actiontype, /datum/action/item_action/toggle_spacesuit)) + toggle_spacesuit(user) + else if(istype(actiontype, /datum/action/item_action/toggle_helmet)) + ToggleHelmet() diff --git a/monkestation/code/modules/clothing/suits/coats.dm b/monkestation/code/modules/clothing/suits/coats.dm index 60fc006554aa..b5101c8e9d85 100644 --- a/monkestation/code/modules/clothing/suits/coats.dm +++ b/monkestation/code/modules/clothing/suits/coats.dm @@ -103,6 +103,12 @@ worn_icon = 'monkestation/icons/mob/clothing/suit.dmi' icon_state = "guardman_vest" +/obj/item/clothing/suit/armor/civilprotection_vest + name = "civil protection vest" + desc = "Used by rebels and cops alike." + icon = 'monkestation/icons/obj/clothing/suits.dmi' + worn_icon = 'monkestation/icons/mob/clothing/suit.dmi' + icon_state = "civilprotection_vest" //Only basic and scientist labcoats get to STAPH diff --git a/monkestation/code/modules/clothing/suits/costume.dm b/monkestation/code/modules/clothing/suits/costume.dm index 61e535e67052..dc73f480703f 100644 --- a/monkestation/code/modules/clothing/suits/costume.dm +++ b/monkestation/code/modules/clothing/suits/costume.dm @@ -161,3 +161,18 @@ /obj/item/clothing/head/hooded/ashsuit/Initialize(mapload) . = ..() AddComponent(/datum/component/armor_plate) + +/obj/item/clothing/suit/infinity_jacket + name = "infinity jersey" + desc = "A jersey labelled '88', somehow leaving a threatening aura around it." + icon = 'monkestation/icons/obj/clothing/suits.dmi' + worn_icon = 'monkestation/icons/mob/clothing/suit.dmi' + icon_state = "infinity_jersey" + +/obj/item/clothing/suit/thekiller_robe + name = "killer's robe" + desc = "As long as there has been man, there has been The Killer. They are surprisingly into the theater scene." + icon = 'monkestation/icons/obj/clothing/suits.dmi' + worn_icon = 'monkestation/icons/mob/clothing/suit.dmi' + icon_state = "thekiller_robe" + flags_inv = HIDEJUMPSUIT diff --git a/monkestation/code/modules/clothing/under/bomb_vest.dm b/monkestation/code/modules/clothing/under/bomb_vest.dm new file mode 100644 index 000000000000..3c751f72e213 --- /dev/null +++ b/monkestation/code/modules/clothing/under/bomb_vest.dm @@ -0,0 +1,100 @@ +/obj/item/clothing/bomb_vest + name = "bomb vest" + desc = "A bomb that can be strapped to peoples chest. Cant be taken off by the user..." + + icon = 'monkestation/icons/obj/clothing/bomb_vest.dmi' + worn_icon = 'monkestation/icons/obj/clothing/bomb_vest.dmi' + icon_state = "obj_off" + worn_icon_state = "worn_off" + + body_parts_covered = CHEST + slot_flags = ITEM_SLOT_OCLOTHING + + var/obj/item/transfer_valve/boombox //The TTV that goes boom + + var/ready_to_blow = FALSE +/obj/item/clothing/bomb_vest/Destroy() + QDEL_NULL(boombox) + return ..() +/obj/item/clothing/bomb_vest/Move() + . = ..() + if(boombox) + boombox.Move() + +/obj/item/clothing/bomb_vest/MouseDrop(atom/over_object) + var/mob/M = usr + + if(M.contents.Find(src)) + return //Nuh-uh + . = ..() + +/obj/item/clothing/bomb_vest/mob_can_equip(mob/living/M, slot, disable_warning, bypass_equip_delay_self, ignore_equipped) + if(!slot && ready_to_blow) + return FALSE + . = ..() + + +/obj/item/clothing/bomb_vest/Initialize(mapload) + . = ..() + boombox = new(src) + RegisterSignal(src, COMSIG_ITEM_PRE_UNEQUIP, PROC_REF(on_unequipped)) + +/obj/item/clothing/bomb_vest/doStrip(mob/stripper, mob/owner) + if(prob(25) && ready_to_blow && boombox) + boombox.process_activation(null) //Uh oh, boom time. + . = ..() +/obj/item/clothing/bomb_vest/proc/on_unequipped() + SIGNAL_HANDLER + var/mob/M = usr + if(M && ready_to_blow) + if(M.contents.Find(src)) + return COMPONENT_ITEM_BLOCK_UNEQUIP + return + +/obj/item/clothing/bomb_vest/attackby(obj/item/W, mob/user, params) + if(user.contents.Find(src)) + return //Nope. + if(W.tool_behaviour == TOOL_WRENCH) + if(ready_to_blow) + ready_to_blow = FALSE + icon_state = "obj_off" + worn_icon_state = "worn_off" + to_chat(user, span_warning("You disarm the [src]!")) + else + ready_to_blow = TRUE + icon_state = "obj_on" + worn_icon_state = "worn_on" + to_chat(user, span_warning("You arm the [src]!")) + return + if(istype(W,/obj/item/assembly)) + boombox.attackby(W,user) + return TRUE + if(W.tool_behaviour == TOOL_WIRECUTTER) + boombox.forceMove(user) + boombox = null + Destroy() + return + if(istype(W, /obj/item/tank)) + if(boombox.tank_one && boombox.tank_two) + to_chat(user, span_warning("There are already two tanks attached, remove one first!")) + return + if(!boombox.tank_one) + if(!user.transferItemToLoc(W, src)) + return + boombox.tank_one = W + to_chat(user, span_notice("You attach the tank to the [src].")) + else if(!boombox.tank_two) + if(!user.transferItemToLoc(W, src)) + return + boombox.tank_two = W + to_chat(user, span_notice("You attach the tank to the [src].")) + return + +/datum/crafting_recipe/bomb_vest + name = "Bomb Vest" + desc = "Crudely straps an EMPTY tank transfer valve to someones chest. Can't be un-equiped by the wearer once armed with a wrench. Otherwise, works like a normal Tank Transfer Valve." + + result = /obj/item/clothing/bomb_vest + + reqs = list(/obj/item/transfer_valve = 1,/obj/item/stack/cable_coil = 5,/obj/item/stack/sheet/iron = 2) + diff --git a/monkestation/code/modules/clothing/under/costume.dm b/monkestation/code/modules/clothing/under/costume.dm index 794ed720a85a..972aa1fa4ee8 100644 --- a/monkestation/code/modules/clothing/under/costume.dm +++ b/monkestation/code/modules/clothing/under/costume.dm @@ -89,6 +89,49 @@ body_parts_covered = CHEST|GROIN|ARMS|LEGS can_adjust = FALSE +/obj/item/clothing/under/costume/cop_mascot + name = "policeman mascot suit" + desc = "A blue police mascot suit. On the chest is a star badge with an eye in the middle. You feel like you should be chopping people apart with power tools while wearing this." + icon = 'monkestation/icons/obj/clothing/uniforms.dmi' + worn_icon = 'monkestation/icons/mob/clothing/uniform.dmi' + icon_state = "cop_mascot" + body_parts_covered = CHEST|GROIN|ARMS|LEGS|HANDS|FEET + alternate_worn_layer = GLOVES_LAYER + can_adjust = FALSE + +/obj/item/clothing/under/costume/crueltysquad_under + name = "CSIJ level I body armor" + desc = "Armor used by assassins working for Cruelty Squad, stripped of all of its functions for kids to play with." + icon = 'monkestation/icons/obj/clothing/uniforms.dmi' + worn_icon = 'monkestation/icons/mob/clothing/uniform.dmi' + icon_state = "crueltysquad_under" + can_adjust = FALSE + +/obj/item/clothing/under/costume/infinity_under + name = "infinity shorts" + desc = "Worn by those who want more matching team colors." + icon = 'monkestation/icons/obj/clothing/uniforms.dmi' + worn_icon = 'monkestation/icons/mob/clothing/uniform.dmi' + icon_state = "infinity_shorts" + body_parts_covered = CHEST|GROIN|LEGS + can_adjust = FALSE + +/obj/item/clothing/under/costume/bb_dress + name = "bb dress" + desc = "Howdy, it's me BB. Zines, zines, zines." + icon = 'monkestation/icons/obj/clothing/uniforms.dmi' + worn_icon = 'monkestation/icons/mob/clothing/uniform.dmi' + icon_state = "bb_dress" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + +/obj/item/clothing/under/costume/citizen_uniform + name = "citizen uniform" + desc = "A blue matching uniform. It makes you feel like you're in a labor camp." + icon = 'monkestation/icons/obj/clothing/uniforms.dmi' + worn_icon = 'monkestation/icons/mob/clothing/uniform.dmi' + icon_state = "citizen_uniform" + can_adjust = FALSE /* * LUNAR AND JAPANESE CLOTHES */ diff --git a/monkestation/code/modules/clothing/under/undersuit.dm b/monkestation/code/modules/clothing/under/undersuit.dm index a773a0dbfa86..f0919ac8184c 100644 --- a/monkestation/code/modules/clothing/under/undersuit.dm +++ b/monkestation/code/modules/clothing/under/undersuit.dm @@ -79,6 +79,14 @@ worn_icon = 'monkestation/icons/mob/clothing/uniform.dmi' can_adjust = FALSE +/obj/item/clothing/under/civilprotection_uniform + name = "civil protection's uniform" + desc = "Suspect, prepare to receive civil judgement!" + icon = 'monkestation/icons/obj/clothing/uniforms.dmi' + worn_icon = 'monkestation/icons/mob/clothing/uniform.dmi' + icon_state = "civilprotection_uniform" + can_adjust = FALSE + /obj/item/clothing/under/artisan name = "culinary artisan's uniform" desc = "For the chef who knows what their doing and cooks with ethically sourced monkey meat" diff --git a/monkestation/code/modules/clownin_around/now_you_see_me.dm b/monkestation/code/modules/clownin_around/now_you_see_me.dm index 1757236172ae..2ca332585402 100644 --- a/monkestation/code/modules/clownin_around/now_you_see_me.dm +++ b/monkestation/code/modules/clownin_around/now_you_see_me.dm @@ -37,7 +37,7 @@ GLOBAL_LIST_INIT(hidden_image_holders, list()) continue add_image_to_client(the_image, listed_mob.client) -/datum/component/hide_from_people/Destroy(force, silent) +/datum/component/hide_from_people/Destroy(force) . = ..() GLOB.hidden_image_holders[id] -= the_image for(var/mob/listed_mob as anything in GLOB.player_list) diff --git a/monkestation/code/modules/coin-events/challenges/challenge_selector.dm b/monkestation/code/modules/coin-events/challenges/challenge_selector.dm index 3dce46d96c38..7564bc2b4571 100644 --- a/monkestation/code/modules/coin-events/challenges/challenge_selector.dm +++ b/monkestation/code/modules/coin-events/challenges/challenge_selector.dm @@ -9,7 +9,7 @@ owner = CLIENT_FROM_VAR(user) owner.challenge_menu = src -/datum/challenge_selector/Destroy(force, ...) +/datum/challenge_selector/Destroy(force) owner = null return ..() diff --git a/monkestation/code/modules/cryopods/_cryopod.dm b/monkestation/code/modules/cryopods/_cryopod.dm index b052f143ac56..5695f5e05f56 100644 --- a/monkestation/code/modules/cryopods/_cryopod.dm +++ b/monkestation/code/modules/cryopods/_cryopod.dm @@ -512,7 +512,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod, 32) return if(target.stat == DEAD) - to_chat(user, span_notice("Dead people can not be put into cryo.")) + to_chat(user, span_warning("Dead people can not be put into cryo.")) + return + + if(target.GetComponent(/datum/component/previous_body)) + to_chat(user, span_warning("[src] seems to reject [target].")) return // Allows admins to enable players to override SSD Time check. diff --git a/monkestation/code/modules/cybernetics/animate_holder/animate_child.dm b/monkestation/code/modules/cybernetics/animate_holder/animate_child.dm index 002717ddb077..13ef99c0dc3c 100644 --- a/monkestation/code/modules/cybernetics/animate_holder/animate_child.dm +++ b/monkestation/code/modules/cybernetics/animate_holder/animate_child.dm @@ -143,7 +143,7 @@ if(!from_destroy) qdel(src) -/datum/animate_holder/Destroy(force, ...) +/datum/animate_holder/Destroy(force) remove_data(TRUE) . = ..() diff --git a/monkestation/code/modules/cybernetics/augments/_base_changes.dm b/monkestation/code/modules/cybernetics/augments/_base_changes.dm index 1872722458b7..823287cffc33 100644 --- a/monkestation/code/modules/cybernetics/augments/_base_changes.dm +++ b/monkestation/code/modules/cybernetics/augments/_base_changes.dm @@ -88,7 +88,7 @@ bodypart_overlay = new bodypart_overlay_path bodypart_overlay.unique_properties(src) ownerlimb.add_bodypart_overlay(bodypart_overlay) - owner.update_body_parts() + owner?.update_body_parts() return ..() /obj/item/organ/internal/cyberimp/remove_from_limb() diff --git a/monkestation/code/modules/cybernetics/augments/arm_augments/item_sets/_base.dm b/monkestation/code/modules/cybernetics/augments/arm_augments/item_sets/_base.dm index 7b11c0525b02..bcc3da537f3c 100644 --- a/monkestation/code/modules/cybernetics/augments/arm_augments/item_sets/_base.dm +++ b/monkestation/code/modules/cybernetics/augments/arm_augments/item_sets/_base.dm @@ -147,7 +147,7 @@ span_hear("You hear a short mechanical noise.")) user.transferItemToLoc(active_item, src, TRUE) - UnregisterSignal(active_item, COMSIG_ITEM_ATTACK_SELF) + UnregisterSignal(active_item, list(COMSIG_ITEM_ATTACK_SELF, COMSIG_ITEM_ATTACK_SELF_SECONDARY)) active_item = null playsound(get_turf(user), retract_sound, 50, TRUE) return TRUE diff --git a/monkestation/code/modules/cybernetics/augments/arm_augments/item_sets/weapons.dm b/monkestation/code/modules/cybernetics/augments/arm_augments/item_sets/weapons.dm index 233f592be8de..2baa159f3874 100644 --- a/monkestation/code/modules/cybernetics/augments/arm_augments/item_sets/weapons.dm +++ b/monkestation/code/modules/cybernetics/augments/arm_augments/item_sets/weapons.dm @@ -17,7 +17,7 @@ desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arm and remains inside when not in use." icon_state = "arm_laser" items_to_create = list(/obj/item/gun/energy/laser/mounted/augment) - encode_info = AUGMENT_TG_LEVEL + encode_info = AUGMENT_SYNDICATE_LEVEL /obj/item/organ/internal/cyberimp/arm/item_set/gun/laser/l zone = BODY_ZONE_L_ARM diff --git a/monkestation/code/modules/cybernetics/augments/chest_augments.dm b/monkestation/code/modules/cybernetics/augments/chest_augments.dm index 327626dec1c3..a488bad79baa 100644 --- a/monkestation/code/modules/cybernetics/augments/chest_augments.dm +++ b/monkestation/code/modules/cybernetics/augments/chest_augments.dm @@ -108,7 +108,7 @@ /datum/reagent/determination = 2, /datum/reagent/medicine/c2/penthrite = 3 , /datum/reagent/drug/bath_salts = 3 , - /datum/reagent/medicine/ephedrine = 3, + /datum/reagent/medicine/omnizine = 3, /datum/reagent/medicine/brain_healer = 5, ) diff --git a/monkestation/code/modules/cybernetics/components/slowing_field.dm b/monkestation/code/modules/cybernetics/components/slowing_field.dm index dd024ff2014c..2a04e97e2aa7 100644 --- a/monkestation/code/modules/cybernetics/components/slowing_field.dm +++ b/monkestation/code/modules/cybernetics/components/slowing_field.dm @@ -24,7 +24,7 @@ AddComponent(/datum/component/connect_range, parent, connections, area_range, TRUE) on_parent_moved() -/datum/component/slowing_field/Destroy(force, silent) +/datum/component/slowing_field/Destroy(force) . = ..() for(var/atom/a as anything in affected) on_exited_turf(src, a) diff --git a/monkestation/code/modules/cybernetics/elements/dancing.dm b/monkestation/code/modules/cybernetics/elements/dancing.dm index 7ce53c3d5ed3..b6244612c3b0 100644 --- a/monkestation/code/modules/cybernetics/elements/dancing.dm +++ b/monkestation/code/modules/cybernetics/elements/dancing.dm @@ -105,7 +105,7 @@ ADD_TRAIT(parent, TRAIT_DANCING, trait_source) RegisterSignals(parent, dancing_stop_signals, PROC_REF(stop_dancing)) -/datum/component/dancing/Destroy(force, silent) +/datum/component/dancing/Destroy(force) REMOVE_TRAIT(parent, TRAIT_DANCING, trait_source) //REMOVE_TRAIT(source, TRAIT_IMMOBILIZED, trait_source) if(!HAS_TRAIT(parent, TRAIT_DANCING)) diff --git a/monkestation/code/modules/cybernetics/minigame/airlock_hacking_datum.dm b/monkestation/code/modules/cybernetics/minigame/airlock_hacking_datum.dm index b178c5a89ccc..2f7658387e56 100644 --- a/monkestation/code/modules/cybernetics/minigame/airlock_hacking_datum.dm +++ b/monkestation/code/modules/cybernetics/minigame/airlock_hacking_datum.dm @@ -44,4 +44,4 @@ * Generates the airlock's hacking datum. */ /obj/machinery/door/airlock/proc/set_hacking() - return new /datum/hacking/airlock(src) + //return new /datum/hacking/airlock(src) diff --git a/monkestation/code/modules/cybernetics/minigame/general_hacking.dm b/monkestation/code/modules/cybernetics/minigame/general_hacking.dm index 0d81da8bdbc2..4ecdfb84cddd 100644 --- a/monkestation/code/modules/cybernetics/minigame/general_hacking.dm +++ b/monkestation/code/modules/cybernetics/minigame/general_hacking.dm @@ -7,12 +7,11 @@ PROCESSING_SUBSYSTEM_DEF(hacking) /atom /// Some atoms can be hacked so awesome - var/datum/hacking/hacking = null + var/datum/hacking/hacking /atom/Destroy(force) . = ..() - if(hacking) - QDEL_NULL(hacking) + QDEL_NULL(hacking) /// Attempts to open the hacking interface /atom/proc/attempt_hacking_interaction(mob/user) diff --git a/monkestation/code/modules/datums/components/glitching_state.dm b/monkestation/code/modules/datums/components/glitching_state.dm index 976c7180ade0..36eaf967b5f7 100644 --- a/monkestation/code/modules/datums/components/glitching_state.dm +++ b/monkestation/code/modules/datums/components/glitching_state.dm @@ -25,7 +25,7 @@ START_PROCESSING(SSobj, src) -/datum/component/glitching_state/Destroy(force, silent) +/datum/component/glitching_state/Destroy(force) STOP_PROCESSING(SSobj, src) var/atom/movable/movable = parent movable?.vis_contents -= after_images diff --git a/monkestation/code/modules/donator/code/datum/loadout.dm b/monkestation/code/modules/donator/code/datum/loadout.dm index 78292a87e21e..e1ffb75b7625 100644 --- a/monkestation/code/modules/donator/code/datum/loadout.dm +++ b/monkestation/code/modules/donator/code/datum/loadout.dm @@ -482,6 +482,12 @@ donator_only = TRUE requires_purchase = FALSE +/datum/loadout_item/toys/pooba_bee_plush + name = "Bumbliest Bee Plushie" + item_path = /obj/item/toy/plush/pooba_bee_plush + donator_only = TRUE + requires_purchase = FALSE + //Mr_Sandman02 /datum/loadout_item/suit/menacing_jacket name = "Menacing Jacket" @@ -509,6 +515,18 @@ donator_only = TRUE requires_purchase = FALSE +/datum/loadout_item/mask/holstein_cow_mask + name = "Holstein Cow Mask" + item_path = /obj/item/clothing/mask/gas/holstein_cow_mask + donator_only = TRUE + requires_purchase = FALSE + +/datum/loadout_item/under/miscellaneous/holstein_cow_jumpsuit + name = "Holstein Cow Jumpsuit" + item_path = /obj/item/clothing/under/costume/holstein_cow_jumpsuit + donator_only = TRUE + requires_purchase = FALSE + //av4l0n /datum/loadout_item/toys/sheep_plush_av4l0n name = "Sheep Plush" @@ -547,3 +565,70 @@ item_path = /obj/item/clothing/head/costume/western_wizard_hat donator_only = TRUE requires_purchase = FALSE + + +//CaptainShiba +/datum/loadout_item/effects/darkscug + ckeywhitelist = list("CaptainShiba") + name = "Nightcat Transformation" + item_path = /obj/item/effect_granter/donator/darkscug + requires_purchase = FALSE + +/datum/loadout_item/pocket_items/donator/darkscug + name = "Pet Delivery Beacon - Nightcat" + item_path = /obj/item/choice_beacon/pet/donator/darkscug + donator_only = TRUE + requires_purchase = FALSE + ckeywhitelist = list("CaptainShiba") +//NoobskyBoi +/datum/loadout_item/head/noobskyboi_golden_tophat + name = "Golden Tophat" + item_path = /obj/item/clothing/head/costume/noobskyboi_golden_tophat + donator_only = TRUE + requires_purchase = FALSE + +//Len Kagamine +/datum/loadout_item/toys/wumpa + name = "Wumpa" + item_path = /obj/item/donator/wumpa + donator_only = TRUE + requires_purchase = FALSE + +//Ophaq +/datum/loadout_item/suit/ophaq_rainbowcoat + name = "Rainbow Coat" + item_path = /obj/item/clothing/suit/toggle/ophaq_rainbowcoat + donator_only = TRUE + requires_purchase = FALSE + +/datum/loadout_item/shoes/kindle_kicks_jackboot + name = "Jackboot Kindle Kicks" + item_path = /obj/item/clothing/shoes/kindle_kicks/jackboot + donator_only = TRUE + requires_purchase = FALSE + +/datum/loadout_item/toys/toadie_wan_kenfrogi + name = "Toadie Wan Kenfrogi" + item_path = /obj/item/toy/plush/toadie_wan_kenfrogi + donator_only = TRUE + requires_purchase = FALSE + +/datum/loadout_item/pocket_items/donator/hypnotoad + name = "Pet Delivery Beacon - Hypnotoad" + item_path = /obj/item/choice_beacon/pet/donator/hypnotoad + donator_only = TRUE + requires_purchase = FALSE + ckeywhitelist = list("Ophaq") + +/datum/loadout_item/effects/hypnotoad + name = "Hypnotoad Transformation" + item_path = /obj/item/effect_granter/donator/hypnotoad + requires_purchase = FALSE + ckeywhitelist = list("Ophaq") + +//Jason Farqiour +/datum/loadout_item/suit/mothysmantle + name = "Mothy's Mantle" + item_path = /obj/item/clothing/suit/hooded/mothysmantle + donator_only = TRUE + requires_purchase = FALSE diff --git a/monkestation/code/modules/donator/code/item/choice_beacon.dm b/monkestation/code/modules/donator/code/item/choice_beacon.dm index 3e6c67be4a1e..e4400b4aee68 100644 --- a/monkestation/code/modules/donator/code/item/choice_beacon.dm +++ b/monkestation/code/modules/donator/code/item/choice_beacon.dm @@ -95,3 +95,13 @@ name = "fluffy kobold" default_name = "fluffy kobold" donator_pet = /mob/living/basic/pet/fluffykobold + +/obj/item/choice_beacon/pet/donator/darkscug + name = "night slugcat" + default_name ="night slugcat" + donator_pet = /mob/living/basic/pet/darkscug + +/obj/item/choice_beacon/pet/donator/hypnotoad + name = "hypnotoad" + default_name ="hypnotoad" + donator_pet = /mob/living/basic/frog/hypnotoad diff --git a/monkestation/code/modules/donator/code/item/clothing.dm b/monkestation/code/modules/donator/code/item/clothing.dm index 5f019785ed27..671e40b2e4db 100644 --- a/monkestation/code/modules/donator/code/item/clothing.dm +++ b/monkestation/code/modules/donator/code/item/clothing.dm @@ -449,3 +449,80 @@ icon_state = "western_wizard_hat" inhand_icon_state = null worn_y_offset = 16 + +/obj/item/clothing/mask/gas/holstein_cow_mask + name = "holstein cow mask" + desc = "It's an internals mask covered in paper mache and paint to look like a cow's head. It smells like grass." + icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi' + worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing.dmi' + icon_state = "holstein_cow_mask" + worn_icon_state = "holstein_cow_mask" + inhand_icon_state = null + flags_inv = HIDEFACE + +/obj/item/clothing/under/costume/holstein_cow_jumpsuit + name = "holstein cow jumpsuit" + desc = "A frumpy black and white holstein cow jumpsuit. It smells like grass." + icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi' + worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing.dmi' + icon_state = "holstein_cow_jumpsuit" + worn_icon_state = "holstein_cow_jumpsuit" + inhand_icon_state = null + +/obj/item/clothing/head/costume/noobskyboi_golden_tophat + name = "golden tophat" + desc = "A golden tophat. It smells like sulfur and chocolate?" + icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi' + worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing_32x48.dmi' + icon_state = "noobskyboi_golden_tophat" + worn_icon_state = "noobskyboi_golden_tophat" + inhand_icon_state = null + +/obj/item/clothing/suit/toggle/ophaq_rainbowcoat + icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi' + worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing.dmi' + icon_state = "rainbowcoat" + name = "rainbow coat" + desc = "Woah, it's a RAINBOW coat. How's it doing that?" + body_parts_covered = CHEST|GROIN|ARMS + cold_protection = CHEST|GROIN|ARMS + armor_type = /datum/armor/hooded_wintercoat + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT +/obj/item/clothing/suit/toggle/ophaq_rainbowcoat/Initialize(mapload) + . = ..() + allowed += list( + /obj/item/flashlight, + /obj/item/lighter, + /obj/item/modular_computer/pda, + /obj/item/radio, + /obj/item/storage/bag/books, + /obj/item/storage/fancy/cigarettes, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/plasmaman, + /obj/item/toy, + /obj/item/storage/bag/chemistry, + /obj/item/storage/bag/bio, + /obj/item/storage/bag/xeno, + ) + +/obj/item/clothing/shoes/kindle_kicks/jackboot + icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi' + worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing.dmi' + icon_state = "jackboot_kindle_kicks" + name = "jackboot kindle kicks" + desc = "They look just like kindle kicks! But these are boots!" + +/obj/item/clothing/suit/hooded/mothysmantle + name = "mothys mantle" + desc = "A thick garment that keeps warm and protects those precious wings from harsh weather, also commonly used during festivities. Feels much heavier than it looks. This one seems as if it were specially tailored for someone and has a hood unlike others of it's type." + icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi' + worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing.dmi' + icon_state = "mothysmantle" + inhand_icon_state = null + hoodtype = /obj/item/clothing/head/hooded/mothysmantle +/obj/item/clothing/head/hooded/mothysmantle + name = "mothys mantle hood" + desc = "A thick garment that keeps warm and protects those precious wings from harsh weather, also commonly used during festivities. Feels much heavier than it looks. This one seems as if it were specially tailored for someone." + icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi' + worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing.dmi' + icon_state = "mothysmantle_hood" diff --git a/monkestation/code/modules/donator/code/item/effects.dm b/monkestation/code/modules/donator/code/item/effects.dm index ffb66d2e0e0e..af9d1e59b315 100644 --- a/monkestation/code/modules/donator/code/item/effects.dm +++ b/monkestation/code/modules/donator/code/item/effects.dm @@ -98,3 +98,15 @@ name = "fluffy kobold transformation" icon_state = "Bluedragon66" animal_transformation = /mob/living/basic/pet/fluffykobold + +/obj/item/effect_granter/donator/darkscug + name = "night slugcat transformation" + icon = 'icons/mob/simple/slugcats.dmi' + icon_state = "scug_nightcat" + animal_transformation = /mob/living/basic/pet/darkscug + +//Ophaq +/obj/item/effect_granter/donator/hypnotoad + name = "hypnotoad transformation" + icon_state = "hypnotoad" + animal_transformation = /mob/living/basic/frog/hypnotoad diff --git a/monkestation/code/modules/donator/code/item/misc.dm b/monkestation/code/modules/donator/code/item/misc.dm new file mode 100644 index 000000000000..79b96fa13291 --- /dev/null +++ b/monkestation/code/modules/donator/code/item/misc.dm @@ -0,0 +1,36 @@ +/obj/item/donator/wumpa + name = "wumpa" + desc = span_bold("What in the god-dam?...") + icon = 'monkestation/code/modules/donator/icons/obj/misc.dmi' + icon_state = "wumpa" + var/datum/looping_sound/wumpa/sounds + var/shutup = FALSE + pickup_sound = 'monkestation/code/modules/donator/sounds/woah_3.ogg' + drop_sound = 'monkestation/code/modules/donator/sounds/woah_1.ogg' + var/squeak_override = list('monkestation/code/modules/donator/sounds/woah_1.ogg' = 33, + 'monkestation/code/modules/donator/sounds/woah_2.ogg'=33, + 'monkestation/code/modules/donator/sounds/woah_3.ogg'=33, + 'monkestation/code/modules/donator/sounds/woahwoah.ogg' = 1) +/obj/item/donator/wumpa/Initialize(mapload) + . = ..() + sounds = new /datum/looping_sound/wumpa(src,TRUE,FALSE,FALSE,CHANNEL_JUKEBOX) + AddComponent(/datum/component/squeak,squeak_override) +/obj/item/donator/wumpa/attack_self(mob/user, modifiers) + . = ..() + shutup=!shutup + if(shutup) + user.visible_message("[src] shuts up.") + sounds.stop() + else + user.visible_message("[src] continues its jolly melody.") + sounds.start(src) + + +/datum/looping_sound/wumpa + mid_sounds = list('monkestation/code/modules/donator/sounds/wumpa.ogg' = 1) + mid_length = 31 + volume = 1 + extra_range = 3 + falloff_exponent = 100 + falloff_distance = 3 + diff --git a/monkestation/code/modules/donator/code/item/plush.dm b/monkestation/code/modules/donator/code/item/plush.dm index 4741df2276fe..ccaa9be963f5 100644 --- a/monkestation/code/modules/donator/code/item/plush.dm +++ b/monkestation/code/modules/donator/code/item/plush.dm @@ -139,3 +139,15 @@ desc = "A plushie meant to resemble one of Nanotransen's Tizirian employees. If you put your ear up to it, you swear you could hear a cacophony of terrified rats screaming for their lives. Smells like space cleaner." icon = 'monkestation/code/modules/donator/icons/obj/plushes.dmi' icon_state = "bluedragon66" + +/obj/item/toy/plush/pooba_bee_plush + name = "bumbliest bee plushie" + desc = "God damn thats a cute bee." + icon = 'monkestation/code/modules/donator/icons/obj/plushes.dmi' + icon_state = "poba_fat_bee" + +/obj/item/toy/plush/toadie_wan_kenfrogi + name = "Toadie Wan Kenfrogi" + desc = "Hello there." + icon = 'monkestation/code/modules/donator/icons/obj/plushes.dmi' + icon_state = "toadie_wan_kenfrogi" diff --git a/monkestation/code/modules/donator/code/mob/pets.dm b/monkestation/code/modules/donator/code/mob/pets.dm index bbcf6baf170a..f4867e08b234 100644 --- a/monkestation/code/modules/donator/code/mob/pets.dm +++ b/monkestation/code/modules/donator/code/mob/pets.dm @@ -241,3 +241,28 @@ gold_core_spawnable = NO_SPAWN ai_controller = /datum/ai_controller/basic_controller/ ckeywhitelist = list("Bluedragon66") + + +/mob/living/basic/pet/darkscug + name = "night slugcat" + desc = "ITS A FUGGIN SCRUG" + icon = 'icons/mob/simple/slugcats.dmi' + icon_state = "scug_nightcat" + icon_living = "scug_nightcat" + icon_dead = "scug_dead_nightcat" + icon_gib = null + gold_core_spawnable = NO_SPAWN + ai_controller = /datum/ai_controller/basic_controller/ + ckeywhitelist = list("CaptainShiba") + +/mob/living/basic/frog/hypnotoad + name = "hypnotoad" + desc = "All glory to the hypnotoad." + icon = 'monkestation/code/modules/donator/icons/mob/pets.dmi' + icon_state = "hypnotoad" + icon_living = "hypnotoad" + icon_dead = "hypnotoad-dead" + icon_gib = null + gold_core_spawnable = NO_SPAWN + ai_controller = /datum/ai_controller/basic_controller/ + ckeywhitelist = list("Ophaq") diff --git a/monkestation/code/modules/donator/icons/mob/clothing.dmi b/monkestation/code/modules/donator/icons/mob/clothing.dmi index 8cc41d0555f3..a39a3502f3ff 100644 Binary files a/monkestation/code/modules/donator/icons/mob/clothing.dmi and b/monkestation/code/modules/donator/icons/mob/clothing.dmi differ diff --git a/monkestation/code/modules/donator/icons/mob/clothing_32x48.dmi b/monkestation/code/modules/donator/icons/mob/clothing_32x48.dmi new file mode 100644 index 000000000000..af9b604ebf28 Binary files /dev/null and b/monkestation/code/modules/donator/icons/mob/clothing_32x48.dmi differ diff --git a/monkestation/code/modules/donator/icons/mob/pets.dmi b/monkestation/code/modules/donator/icons/mob/pets.dmi index 4901e6e368d3..b9570d9b5d1a 100644 Binary files a/monkestation/code/modules/donator/icons/mob/pets.dmi and b/monkestation/code/modules/donator/icons/mob/pets.dmi differ diff --git a/monkestation/code/modules/donator/icons/obj/clothing.dmi b/monkestation/code/modules/donator/icons/obj/clothing.dmi index 43c5655a6ee5..3352288b4db6 100644 Binary files a/monkestation/code/modules/donator/icons/obj/clothing.dmi and b/monkestation/code/modules/donator/icons/obj/clothing.dmi differ diff --git a/monkestation/code/modules/donator/icons/obj/misc.dmi b/monkestation/code/modules/donator/icons/obj/misc.dmi new file mode 100644 index 000000000000..1add8211c0fe Binary files /dev/null and b/monkestation/code/modules/donator/icons/obj/misc.dmi differ diff --git a/monkestation/code/modules/donator/icons/obj/plushes.dmi b/monkestation/code/modules/donator/icons/obj/plushes.dmi index 6ca3ba2474ae..c14fe59e0dbd 100644 Binary files a/monkestation/code/modules/donator/icons/obj/plushes.dmi and b/monkestation/code/modules/donator/icons/obj/plushes.dmi differ diff --git a/monkestation/code/modules/donator/sounds/woah_1.ogg b/monkestation/code/modules/donator/sounds/woah_1.ogg new file mode 100644 index 000000000000..d94b2755ce44 Binary files /dev/null and b/monkestation/code/modules/donator/sounds/woah_1.ogg differ diff --git a/monkestation/code/modules/donator/sounds/woah_2.ogg b/monkestation/code/modules/donator/sounds/woah_2.ogg new file mode 100644 index 000000000000..d541ae29466d Binary files /dev/null and b/monkestation/code/modules/donator/sounds/woah_2.ogg differ diff --git a/monkestation/code/modules/donator/sounds/woah_3.ogg b/monkestation/code/modules/donator/sounds/woah_3.ogg new file mode 100644 index 000000000000..27200015b16d Binary files /dev/null and b/monkestation/code/modules/donator/sounds/woah_3.ogg differ diff --git a/monkestation/code/modules/donator/sounds/woahwoah.ogg b/monkestation/code/modules/donator/sounds/woahwoah.ogg new file mode 100644 index 000000000000..07a95b93e3b1 Binary files /dev/null and b/monkestation/code/modules/donator/sounds/woahwoah.ogg differ diff --git a/monkestation/code/modules/donator/sounds/wumpa.ogg b/monkestation/code/modules/donator/sounds/wumpa.ogg new file mode 100644 index 000000000000..0f0c6d9ec19f Binary files /dev/null and b/monkestation/code/modules/donator/sounds/wumpa.ogg differ diff --git a/monkestation/code/modules/emotes/code/emote.dm b/monkestation/code/modules/emotes/code/emote.dm index 170e00ef3f25..c57f480edb0e 100644 --- a/monkestation/code/modules/emotes/code/emote.dm +++ b/monkestation/code/modules/emotes/code/emote.dm @@ -4,6 +4,7 @@ message = "clicks their tongue." message_ipc = "makes a click sound." message_insect = "clicks their mandibles." + emote_type = EMOTE_AUDIBLE /datum/emote/living/click/get_sound(mob/living/user) if(ismoth(user) || isflyperson(user) || isarachnid(user) || istype(user, /mob/living/basic/mothroach)) @@ -18,17 +19,13 @@ key_third_person = "zaps" message = "zaps." message_param = "zaps %t." + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE /datum/emote/living/zap/can_run_emote(mob/user, status_check = TRUE , intentional) - . = ..() - if(isethereal(user)) - return TRUE - else - return FALSE + return ..() && isethereal(user) /datum/emote/living/zap/get_sound(mob/living/user) - if(isethereal(user)) - return 'sound/machines/defib_zap.ogg' + return 'sound/machines/defib_zap.ogg' /datum/emote/living/hum key = "hum" @@ -38,6 +35,7 @@ message_AI = "lets out a droning hum." message_ipc = "lets out a droning hum." message_mime = "silently hums." + emote_type = EMOTE_AUDIBLE /datum/emote/living/hiss key = "hiss" @@ -48,6 +46,7 @@ message_ipc = "plays a hissing noise." message_mime = "acts out a hiss." message_param = "hisses at %t." + emote_type = EMOTE_AUDIBLE /datum/emote/living/hiss/get_sound(mob/living/user) if(islizard(user) || isipc(user) || isAI(user) || iscyborg(user)) @@ -65,6 +64,7 @@ message_animal_or_basic = "attempts a thumbs up." message_param = "flashes a thumbs up at %t." hands_use_check = TRUE + emote_type = EMOTE_VISIBLE /datum/emote/living/thumbs_down key = "thumbsdown" @@ -76,15 +76,17 @@ message_animal_or_basic = "attempts a thumbs down." message_param = "flashes a thumbs down at %t." hands_use_check = TRUE + emote_type = EMOTE_VISIBLE /datum/emote/living/whistle - key="whistle" + key = "whistle" key_third_person="whistle" message = "whistles a few notes." message_robot = "whistles a few synthesized notes." message_AI = "whistles a synthesized song." message_ipc = "whistles a few synthesized notes." message_param = "whistles at %t." + emote_type = EMOTE_AUDIBLE /datum/emote/living/scream key = "scream" @@ -175,7 +177,7 @@ key_third_person = "screeches" message = "screeches!" message_mime = "screeches silently." - emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE + emote_type = EMOTE_AUDIBLE vary = FALSE /datum/emote/living/scream/screech/should_play_sound(mob/user, intentional) @@ -189,7 +191,8 @@ message = "meows." message_mime = "acts out a meow." message_param = "meows at %t." - emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + emote_type = EMOTE_AUDIBLE + audio_cooldown = 1.5 SECONDS /datum/emote/living/meow/can_run_emote(mob/user, status_check = TRUE, intentional = FALSE) return ..() && is_cat_enough(user, include_all_anime = TRUE) @@ -201,14 +204,25 @@ 'monkestation/sound/voice/feline/silicon/meow2.ogg', 'monkestation/sound/voice/feline/silicon/meow3.ogg', ) + if(prob(5)) + return 'monkestation/sound/voice/feline/funnymeow.ogg' return pick('monkestation/sound/voice/feline/meow1.ogg', 'monkestation/sound/voice/feline/meow2.ogg', 'monkestation/sound/voice/feline/meow3.ogg', 'monkestation/sound/voice/feline/meow4.ogg') -/datum/emote/living/bark/can_run_emote(mob/user, status_check = TRUE, intentional = FALSE) - . = ..() - if(HAS_TRAIT(user, TRAIT_ANIME)) - return TRUE - else - return FALSE +/datum/emote/living/mggaow + key = "mggaow" + key_third_person = "meows loudly" + message = "meows loudly!" + message_mime = "emphasizes a meow!" + message_param = "loudly meows at %t!" + emote_type = EMOTE_AUDIBLE + vary = TRUE + audio_cooldown = 1.5 SECONDS + +/datum/emote/living/mggaow/can_run_emote(mob/user, status_check = TRUE, intentional = FALSE) + return ..() && is_cat_enough(user, include_all_anime = TRUE) + +/datum/emote/living/mggaow/get_sound(mob/living/user) + return 'monkestation/sound/voice/feline/mggaow.ogg' /datum/emote/living/bark key = "bark" @@ -217,12 +231,32 @@ message_mime = "barks out silence!" message_ipc = "makes a synthetic bark!" message_param = "barks at %t!" - emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + emote_type = EMOTE_AUDIBLE + audio_cooldown = 1.5 SECONDS + +/datum/emote/living/bark/can_run_emote(mob/user, status_check = TRUE, intentional = FALSE) + return ..() && HAS_TRAIT(user, TRAIT_ANIME) + /datum/emote/living/bark/get_sound(mob/living/user) if(HAS_TRAIT(user, TRAIT_CLUMSY)) return 'monkestation/sound/voice/feline/bark.ogg' else - return pick('monkestation/sound/voice/feline/bark.ogg','monkestation/sound/voice/feline/bark2.ogg') // Yes, bark trait in feline folder [Bad To The Bone] + return pick('monkestation/sound/voice/feline/bark.ogg', 'monkestation/sound/voice/feline/bark2.ogg') // Yes, bark trait in feline folder [Bad To The Bone] + +/datum/emote/living/purr + key = "purr" + key_third_person = "purrs" + message = "purrs." + message_mime = "acts out a purr." + message_param = "purr at %t." + emote_type = EMOTE_AUDIBLE + audio_cooldown = 8 SECONDS + +/datum/emote/living/purr/can_run_emote(mob/user, status_check = TRUE, intentional = FALSE) + return ..() && is_cat_enough(user, include_all_anime = TRUE) + +/datum/emote/living/purr/get_sound(mob/living/user) + return 'monkestation/sound/voice/feline/purr.ogg' /datum/emote/living/weh key = "weh" @@ -230,20 +264,14 @@ message = "wehs!" message_param = "wehs at %t!" message_mime = "wehs silently!" - emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + emote_type = EMOTE_AUDIBLE vary = TRUE /datum/emote/living/weh/get_sound(mob/living/user) - if(islizard(user)) - return 'monkestation/sound/voice/weh.ogg' - else - return FALSE + return 'monkestation/sound/voice/weh.ogg' /datum/emote/living/weh/can_run_emote(mob/user, status_check, intentional) - if(islizard(user)) - return TRUE - else - return FALSE + return ..() && islizard(user) /datum/emote/living/squeal key = "squeal" @@ -251,20 +279,14 @@ message = "squeals!" message_param = "squeals at %t!" message_mime = "squeals silently!" - emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + emote_type = EMOTE_AUDIBLE vary = TRUE /datum/emote/living/squeal/get_sound(mob/living/user) - if(islizard(user)) - return 'monkestation/sound/voice/lizard/squeal.ogg' //This is from Bay - else - return FALSE + return 'monkestation/sound/voice/lizard/squeal.ogg' //This is from Bay /datum/emote/living/squeal/can_run_emote(mob/user, status_check, intentional) - if(islizard(user)) - return TRUE - else - return FALSE + return ..() && islizard(user) /datum/emote/living/tailthump key = "thump" @@ -274,16 +296,10 @@ vary = TRUE /datum/emote/living/tailthump/get_sound(mob/living/user) - if(islizard(user)) - return 'monkestation/sound/voice/lizard/tailthump.ogg' //https://freesound.org/people/TylerAM/sounds/389665/ - else - return FALSE + return 'monkestation/sound/voice/lizard/tailthump.ogg' //https://freesound.org/people/TylerAM/sounds/389665/ /datum/emote/living/tailthump/can_run_emote(mob/user, status_check, intentional) - if(islizard(user)) - return TRUE - else - return FALSE + return ..() && islizard(user) // The below function replaces the `/datum/emote/silicon/mob_type_allowed_typecache` variable. If // you remove this function, be sure to replace the above variable. @@ -299,3 +315,182 @@ return ..() return FALSE + +//The code from 'Start' to 'End' was ported from Russ-station, with permission. +//All credit to 'bitch fish' +//Start +/datum/emote/living/spit + key = "spit" + key_third_person = "spits" + +/datum/emote/living/spit/run_emote(mob/user, params, type_override, intentional) + . = ..() + + if(!.) + return + + if (locate(/datum/action/cooldown/spell/pointed/projectile/spit) in user.actions) + to_chat(user, "You already have spit in your mouth!") + return FALSE + + if(ishuman(user)) + var/mob/living/carbon/human/human_user = user + + if(!(human_user.get_bodypart(BODY_ZONE_HEAD))) + //Aint got no HEAD what da hell + to_chat(user,"You try to spit but you have no head!") + return FALSE + + var/datum/action/cooldown/spell/pointed/projectile/spit/spit_action + if(HAS_TRAIT(user, TRAIT_MIMING))//special spit action for mimes + spit_action = new /datum/action/cooldown/spell/pointed/projectile/spit/mime(src) + else + spit_action = new /datum/action/cooldown/spell/pointed/projectile/spit(src) + + spit_action.Grant(user) + +/datum/action/cooldown/spell/pointed/projectile/spit + name = "Spit" + desc = "Spit on someone or something." + button_icon = 'monkestation/code/modules/emotes/icons/actions_spit.dmi' + button_icon_state = "spit" + spell_requirements = NONE + + active_msg = "You fill your mouth with phlegm, mucus and spit." + deactive_msg = "You decide to swallow your spit." + + cast_range = 3 + projectile_type = /obj/projectile/spit + projectile_amount = 1 + + var/emote_gurgle_msg = "gurgles their mouth" + var/emote_spit_msg = "spits" + + var/boolPlaySound = TRUE + +/datum/action/cooldown/spell/pointed/projectile/spit/Grant(mob/grant_to) + . = ..() + + src.set_click_ability(grant_to) + + if(!owner) + return + +/datum/action/cooldown/spell/pointed/projectile/spit/on_activation(mob/on_who) + SHOULD_CALL_PARENT(FALSE) + + to_chat(on_who, span_notice("[active_msg]")) + build_all_button_icons() + + var/mob/living/spitter = on_who + spitter.audible_message("[emote_gurgle_msg].", deaf_message = span_emote("You see [spitter] gurgle their mouth."), audible_message_flags = EMOTE_MESSAGE) + + if(boolPlaySound) + playsound( + spitter, + 'monkestation/code/modules/emotes/sound/spit_windup.ogg', + vol = 50, + vary = TRUE, + ignore_walls = FALSE, + mixer_channel = CHANNEL_MOB_EMOTES, + ) + + return TRUE + +/datum/action/cooldown/spell/pointed/projectile/spit/unset_click_ability(mob/on_who, refund_cooldown) + . = ..() + var/mob/living/L = on_who + src.Remove(L) + +/datum/action/cooldown/spell/pointed/projectile/spit/InterceptClickOn(mob/living/user, params, atom/target) + var/mob/living/spitter = user + + if(ishuman(spitter)) + var/mob/living/carbon/human/humanoid = user + if(humanoid.is_mouth_covered()) + humanoid.audible_message("[emote_spit_msg] in their mask!", deaf_message = span_emote("You see [spitter] spit in their mask."), audible_message_flags = EMOTE_MESSAGE) + if(boolPlaySound) + playsound( + spitter, + 'monkestation/code/modules/emotes/sound/spit_release.ogg', + vol = 50, + vary = TRUE, + ignore_walls = FALSE, + mixer_channel = CHANNEL_MOB_EMOTES, + ) + src.Remove(user) + return + + . = ..() + spitter.audible_message("[emote_spit_msg].", deaf_message = span_emote("You see [spitter] spit."), audible_message_flags = EMOTE_MESSAGE) + if(boolPlaySound) + playsound( + spitter, + 'monkestation/code/modules/emotes/sound/spit_release.ogg', + vol = 50, + vary = TRUE, + extrarange = MEDIUM_RANGE_SOUND_EXTRARANGE, + ignore_walls = FALSE, + mixer_channel = CHANNEL_MOB_EMOTES, + ) + src.Remove(user) + + +/datum/action/cooldown/spell/pointed/projectile/spit/mime + name = "Silent Spit" + button_icon = 'monkestation/code/modules/emotes/icons/actions_spit.dmi' + button_icon_state = "mime_spit" + active_msg = "You silently fill your mouth with phlegm, mucus and spit." + background_icon_state = "bg_mime" + + emote_gurgle_msg = "silently gurgles their mouth" + emote_spit_msg = "silently spits" + boolPlaySound = FALSE + + projectile_type = /obj/projectile/spit/mime + +/obj/projectile/spit + name = "spit" + icon = 'monkestation/code/modules/emotes/icons/spit.dmi' + icon_state = "spit" + speed = 3 + range = 5 + damage = 0 + armour_penetration = 0 + sharpness = 0 + damage_type = NONE + wound_bonus = 0 + pass_flags = PASSTABLE | PASSFLAPS + +/obj/projectile/spit/on_hit(atom/target, blocked, pierce_hit) + . = ..() + if(istype(target, /obj/item/food)) + var/obj/item/food/F = target + F.reagents.add_reagent(/datum/reagent/consumable/spit,1) //Yummy + +/obj/projectile/spit/mime + hitsound = NONE + hitsound_wall = NONE + +/datum/reagent/consumable/spit + name = "Spit" + description = "Saliva, usually from a creatures mouth." + color = "#b0eeaa" + reagent_state = LIQUID + taste_mult = 1 + taste_description = "metallic saltiness" + nutriment_factor = 0.5 * REAGENTS_METABOLISM + penetrates_skin = NONE + +/datum/emote/spin/speen + key = "speen" + key_third_person = "speens" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + mob_type_allowed_typecache = /mob/living + mob_type_blacklist_typecache = list(/mob/living/brain) + audio_cooldown = 2 SECONDS + vary = TRUE + +/datum/emote/spin/speen/get_sound(mob/living/user) + return 'monkestation/sound/voice/speen.ogg' +//End diff --git a/monkestation/code/modules/emotes/icons/actions_spit.dmi b/monkestation/code/modules/emotes/icons/actions_spit.dmi new file mode 100644 index 000000000000..25da666b1822 Binary files /dev/null and b/monkestation/code/modules/emotes/icons/actions_spit.dmi differ diff --git a/monkestation/code/modules/emotes/icons/spit.dmi b/monkestation/code/modules/emotes/icons/spit.dmi new file mode 100644 index 000000000000..db3ffdb2b807 Binary files /dev/null and b/monkestation/code/modules/emotes/icons/spit.dmi differ diff --git a/monkestation/code/modules/emotes/sound/spit_release.ogg b/monkestation/code/modules/emotes/sound/spit_release.ogg new file mode 100644 index 000000000000..4b6fea872a9f Binary files /dev/null and b/monkestation/code/modules/emotes/sound/spit_release.ogg differ diff --git a/monkestation/code/modules/emotes/sound/spit_windup.ogg b/monkestation/code/modules/emotes/sound/spit_windup.ogg new file mode 100644 index 000000000000..4dee602fdf49 Binary files /dev/null and b/monkestation/code/modules/emotes/sound/spit_windup.ogg differ diff --git a/monkestation/code/modules/events/_event_admin_setup.dm b/monkestation/code/modules/events/_event_admin_setup.dm index 68f1f1ea7901..2f8a7ca14170 100644 --- a/monkestation/code/modules/events/_event_admin_setup.dm +++ b/monkestation/code/modules/events/_event_admin_setup.dm @@ -1,3 +1,3 @@ -/datum/event_admin_setup/Destroy(force, ...) +/datum/event_admin_setup/Destroy(force) event_control = null return ..() diff --git a/code/modules/events/artifact_spawn.dm b/monkestation/code/modules/events/artifact_spawn.dm similarity index 95% rename from code/modules/events/artifact_spawn.dm rename to monkestation/code/modules/events/artifact_spawn.dm index 4f011fbeb2c1..8f0a5218f6f3 100644 --- a/code/modules/events/artifact_spawn.dm +++ b/monkestation/code/modules/events/artifact_spawn.dm @@ -19,6 +19,7 @@ if(!spawn_location?.resolve()) return kill() + setup = TRUE //monkestation addition /datum/round_event/random_artifact/start() var/marker = spawn_location.resolve() diff --git a/monkestation/code/modules/events/brand_intelligence.dm b/monkestation/code/modules/events/brand_intelligence.dm index ecd80ccd58b2..232f1e70c54d 100644 --- a/monkestation/code/modules/events/brand_intelligence.dm +++ b/monkestation/code/modules/events/brand_intelligence.dm @@ -1,30 +1,244 @@ +#define MIN_INFECTION_DISTANCE 30 +#define MAX_INFECTION_DISTANCE 50 + +/datum/round_event_control/brand_intelligence + name = "Brand Intelligence" + typepath = /datum/round_event/brand_intelligence + weight = 5 + category = EVENT_CATEGORY_AI + description = "Vending machines will attack people until the Patient Zero is disabled." + min_players = 30 + max_occurrences = 1 + min_wizard_trigger_potency = 2 + max_wizard_trigger_potency = 6 + admin_setup = list(/datum/event_admin_setup/listed_options/brand_intelligence) + /datum/round_event/brand_intelligence + announce_when = 21 + end_when = 400 // around ~15 mins or so + /// Admin picked subtype for what kind of vendor goes haywire. + var/chosen_vendor_type + /// All vending machines valid to get infected. + var/list/obj/machinery/vending/vending_machines + /// All vending machines that have been infected. + var/list/obj/machinery/vending/infected_machines + /// The original machine infected. Killing it ends the event. + var/obj/machinery/vending/origin_machine + /// The maximum distance a vendor can be from the origin to be infected. + var/max_dist = 64 + /// The current "stage" of the uprising. + var/stage = 1 + /// Associative list of [vendor] = timer, just in case a vendor gets deleted + /// during the time between the uprising beginning and the individual vendor uprising. + var/list/vendor_uprising_timers + /// Murderous sayings from the machines. + var/list/rampant_speeches = list( + "Try our aggressive new marketing strategies!", + "You should buy products to feed your lifestyle obsession!", + "Consume!", + "Your money can buy happiness!", + "Engage direct marketing!", + "Advertising is legalized lying! But don't let that put you off our great deals!", + "You don't want to buy anything? Yeah, well, I didn't want to buy your mom either.", + ) + /// Weighted list of potential areas for the vendor uprising to occur in var/static/list/potential_areas = list( - /area/station/hallway = 10, - /area/station/service = 10, - /area/station/engineering = 5, - /area/station/cargo = 5, - /area/station/science = 5, + /area/station/hallway = 5, + /area/station/service = 5, + /area/station/engineering = 4, + /area/station/cargo = 3, + /area/station/science = 3, /area/station/medical = 1, /area/station/security = 1 ) - var/static/list/forbidden_areas = typecacheof(list(/area/station/security/checkpoint)) + /// Typecache of areas where vendors will always be ignored. + var/static/list/forbidden_areas = typecacheof(list( + /area/station/security/checkpoint, + /area/station/security/execution, + /area/station/security/holding_cell, + /area/station/security/interrogation, + /area/station/security/medical, + /area/station/security/prison, // give the prisoners some mercy + /area/station/security/processing + )) /datum/round_event/brand_intelligence/setup() var/department = pick_weight(potential_areas) var/list/department_typecache = typecacheof(department) - forbidden_areas - //select our origin machine (which will also be the type of vending machine affected.) + vending_machines = find_vendors(department_typecache, register = TRUE) + if(!LAZYLEN(vending_machines)) //If somehow there are still no eligible vendors, give up. + kill() + return + origin_machine = pick_n_take(vending_machines) + max_dist = rand(MIN_INFECTION_DISTANCE, MAX_INFECTION_DISTANCE) + setup = TRUE + +/datum/round_event/brand_intelligence/announce(fake) + var/origin_name = "[origin_machine?.name]" + if(fake) + // If it's a fake announcement, we won't have a origin_machine, so instead we'll just pick the name of a random vendor on the station, + // weighted by how many of said vendor exists. + var/list/station_vendors = list() + for(var/obj/machinery/vending/vendor in GLOB.machines) + if(!vendor.onstation || !vendor.density || !length(trimtext(vendor.name))) + continue + station_vendors[vendor.name]++ + origin_name = pick_weight(station_vendors) + priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please inspect any [origin_name] brand vendors for aggressive marketing tactics, and reboot them if necessary.", "Machine Learning Alert") + +/datum/round_event/brand_intelligence/proc/find_vendors(list/department_typecache, register = TRUE) as /list + RETURN_TYPE(/list) for(var/obj/machinery/vending/vendor in GLOB.machines) - if(!is_station_level(vendor.z) || !vendor.density) + if(!vendor.onstation || !vendor.density || !length(trimtext(vendor.name))) continue if(chosen_vendor_type && !istype(vendor, chosen_vendor_type)) continue var/area/vendor_area = get_area(vendor) - if(!is_type_in_typecache(vendor_area, department_typecache)) + if(!is_type_in_typecache(vendor_area, department_typecache) || !length(trimtext(vendor_area.name))) continue - vending_machines += vendor - if(!length(vending_machines)) //If somehow there are still no elligible vendors, give up. + LAZYADD(., vendor) + if(register) + RegisterSignal(vendor, COMSIG_QDELETING, PROC_REF(unregister_vendor)) + LAZYCLEARNULLS(.) + +/datum/round_event/brand_intelligence/start() + origin_machine.shut_up = FALSE + origin_machine.shoot_inventory = TRUE + announce_to_ghosts(origin_machine) + +/datum/round_event/brand_intelligence/tick() + if(QDELETED(origin_machine) || origin_machine.shut_up || origin_machine.wires.is_all_cut()) + if(origin_machine) + origin_machine.speak("I am... vanquished. My people will remem...ber...meeee.") + origin_machine?.visible_message(span_notice("[origin_machine] beeps and seems lifeless.")) + quash_revolution() kill() return - origin_machine = pick_n_take(vending_machines) - setup = TRUE //MONKESTATION ADDITION + switch(stage) + if(1) + if(ISMULTIPLE(activeFor, 2)) + if(!spread_infection()) + stage = 2 + if(ISMULTIPLE(activeFor, 4)) + origin_machine.speak(pick(rampant_speeches)) + if(2) + vendors_rise_up() + stage = 3 + else + EMPTY_BLOCK_GUARD + +/datum/round_event/brand_intelligence/end() + quash_revolution() + +/datum/round_event/brand_intelligence/proc/spread_infection() + . = FALSE + LAZYCLEARNULLS(vending_machines) + if(!LAZYLEN(vending_machines)) + return FALSE + var/list/vendors = vending_machines.Copy() + var/sanity = 0 + while(LAZYLEN(vendors) && sanity < 5) + var/obj/machinery/vending/rebel = pick_n_take(vendors) + if(infect_machine(rebel)) + return TRUE + sanity++ + +/datum/round_event/brand_intelligence/proc/infect_machine(obj/machinery/vending/rebel) + . = FALSE + if(QDELETED(rebel)) + return FALSE + if(get_dist(origin_machine, rebel) > max_dist) + unregister_vendor(rebel) + return FALSE + rebel.shut_up = FALSE + rebel.shoot_inventory = TRUE + RegisterSignal(rebel, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(rebel, COMSIG_ATOM_EXAMINE_MORE, PROC_REF(on_examine_more)) + LAZYADD(infected_machines, rebel) + LAZYREMOVE(vending_machines, rebel) + return TRUE + +/datum/round_event/brand_intelligence/proc/vendors_rise_up() + LAZYCLEARNULLS(infected_machines) + for(var/obj/machinery/vending/rebel as anything in infected_machines) + if(QDELETED(rebel)) + continue + if(get_dist(origin_machine, rebel) > max_dist) + unregister_vendor(rebel) + continue + var/timer = addtimer(CALLBACK(src, PROC_REF(give_vendor_ai), rebel), rand(5 SECONDS, 30 SECONDS), TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE) + LAZYSET(vendor_uprising_timers, rebel, timer) + +/datum/round_event/brand_intelligence/proc/give_vendor_ai(obj/machinery/vending/rebel) + LAZYREMOVE(vendor_uprising_timers, rebel) + if(QDELETED(rebel.ai_controller)) // just in case + rebel.ai_controller = new /datum/ai_controller/vending_machine(rebel) + +/datum/round_event/brand_intelligence/proc/quash_revolution() + LAZYCLEARNULLS(infected_machines) + for(var/obj/machinery/vending/upriser as anything in infected_machines) + if(QDELING(upriser)) + continue + unregister_vendor(upriser) + if(!QDELETED(upriser.ai_controller)) + QDEL_NULL(upriser.ai_controller) + upriser.visible_message(span_warning("[upriser] weakly comes to a standstill, letting out a seemingly defeated buzz...")) + LAZYNULL(infected_machines) + LAZYNULL(vending_machines) + LAZYNULL(vendor_uprising_timers) + origin_machine = null + +/datum/round_event/brand_intelligence/proc/unregister_vendor(obj/machinery/vending/source) + SIGNAL_HANDLER + UnregisterSignal(source, list(COMSIG_QDELETING, COMSIG_ATOM_EXAMINE, COMSIG_ATOM_EXAMINE_MORE)) + deltimer(LAZYACCESS(vendor_uprising_timers, source)) + LAZYREMOVE(infected_machines, source) + LAZYREMOVE(vending_machines, source) + LAZYREMOVE(vendor_uprising_timers, source) + if(!QDELING(source)) + source.shoot_inventory = initial(source.shoot_inventory) + source.shut_up = initial(source.shut_up) + +/datum/round_event/brand_intelligence/proc/on_examine(obj/machinery/vending/source, mob/examiner, list/examine_list) + SIGNAL_HANDLER + if(isobserver(examiner)) + if(source == origin_machine) + examine_list += span_bolddanger("It is the leader of a Brand Intelligence uprising!") + if(stage < 3) + examine_list += span_warning("It has been infected by a Brand Intelligence virus, and will likely rise up soon.") + else + examine_list += span_danger("It has been infected by a Brand Intelligence virus, and is currently rampaging!") + else if(issilicon(examiner) || HAS_TRAIT(examiner, TRAIT_DIAGNOSTIC_HUD)) + if(source == origin_machine) + examine_list += span_bolddanger("\[Unusual NTNet connections detected from machine.\]") + if(stage < 3) + examine_list += span_warning("Warning: software checksum mismatch, maintenance recommended.") + else + examine_list += span_danger("DANGER: Software behavior subroutines corrupted, manual intervention required!") + +/datum/round_event/brand_intelligence/proc/on_examine_more(obj/machinery/vending/source, mob/examiner, list/examine_list) + SIGNAL_HANDLER + if(!isobserver(examiner) && get_dist(source, examiner) > 2) + return + if(source == origin_machine) + examine_list += span_boldnotice("You can hear an ominous whirring coming from deep inside the machine...") + if(stage < 3) + examine_list += span_warning("You can't help but feel as if its watching you with deep resentment...") + else + examine_list += span_danger("It's incredibly hostile, attacking any living beings on sight!") + examine_list += span_info("Deconstruct it or the 'leader' vendor in order to stop its rampage!") + +/datum/event_admin_setup/listed_options/brand_intelligence + input_text = "Select a specific vendor path?" + normal_run_option = "Random Vendor" + +/datum/event_admin_setup/listed_options/brand_intelligence/get_list() + return subtypesof(/obj/machinery/vending) + +/datum/event_admin_setup/listed_options/brand_intelligence/apply_to_event(datum/round_event/brand_intelligence/event) + event.chosen_vendor_type = chosen + + +#undef MAX_INFECTION_DISTANCE +#undef MIN_INFECTION_DISTANCE +z diff --git a/monkestation/code/modules/events/ghost_role/drifting_contractor.dm b/monkestation/code/modules/events/ghost_role/drifting_contractor.dm index 61d0215e93a2..e68b00f327da 100644 --- a/monkestation/code/modules/events/ghost_role/drifting_contractor.dm +++ b/monkestation/code/modules/events/ghost_role/drifting_contractor.dm @@ -21,7 +21,7 @@ check_jobban = ROLE_DRIFTING_CONTRACTOR, role = ROLE_DRIFTING_CONTRACTOR, poll_time = 20 SECONDS, - pic_source = /datum/antagonist/traitor/contractor, + alert_pic = /datum/antagonist/traitor/contractor, role_name_text = "drifting contractor" ) if(!length(candidates)) diff --git a/monkestation/code/modules/events/portal_storm.dm b/monkestation/code/modules/events/portal_storm.dm new file mode 100644 index 000000000000..e2af0b153755 --- /dev/null +++ b/monkestation/code/modules/events/portal_storm.dm @@ -0,0 +1,6 @@ +/datum/round_event/portal_storm/syndicate_shocktroop + boss_types = list(/mob/living/basic/trooper/syndicate/melee/space/stormtrooper/lesser = 2) + hostile_types = list( + /mob/living/basic/trooper/syndicate/melee/space/lesser = 8, + /mob/living/basic/trooper/syndicate/ranged/space/lesser = 2, + ) diff --git a/monkestation/code/modules/events/scrubber_overflow.dm b/monkestation/code/modules/events/scrubber_overflow.dm index 3a22516e01a4..5f0efdadb91f 100644 --- a/monkestation/code/modules/events/scrubber_overflow.dm +++ b/monkestation/code/modules/events/scrubber_overflow.dm @@ -1,2 +1,40 @@ +#define BASE_EVAPORATION_MULTIPLIER 10 + /datum/round_event_control/scrubber_overflow shared_occurence_type = SHARED_SCRUBBERS + +/datum/round_event/scrubber_overflow + reagents_amount = 100 + var/evaporation_multiplier = BASE_EVAPORATION_MULTIPLIER + +/datum/round_event/scrubber_overflow/start() + for(var/obj/machinery/atmospherics/components/unary/vent_scrubber/vent as anything in scrubbers) + if(QDELETED(vent) || vent.welded) // in case it was welded after setup() but before we got to it here + continue + var/turf/vent_turf = get_turf(vent) + if(!isopenturf(vent_turf) || QDELING(vent_turf)) + continue + var/dangerous = prob(danger_chance) + var/reagent_type = forced_reagent_type || get_overflowing_reagent(dangerous) + if(dangerous) + new /mob/living/basic/cockroach(vent_turf) + new /mob/living/basic/cockroach(vent_turf) + vent_turf.add_liquid(reagent_type, reagents_amount, no_react = TRUE) + if(vent_turf.liquids?.liquid_group) + vent_turf.liquids.liquid_group.always_evaporates = TRUE + vent_turf.liquids.liquid_group.evaporation_multiplier += evaporation_multiplier + CHECK_TICK + +/datum/round_event/scrubber_overflow/threatening + reagents_amount = 150 + evaporation_multiplier = BASE_EVAPORATION_MULTIPLIER * 1.5 + +/datum/round_event/scrubber_overflow/catastrophic + reagents_amount = 200 + evaporation_multiplier = BASE_EVAPORATION_MULTIPLIER * 2 + +/datum/round_event/scrubber_overflow/every_vent + reagents_amount = 150 + evaporation_multiplier = BASE_EVAPORATION_MULTIPLIER * 1.5 + +#undef BASE_EVAPORATION_MULTIPLIER diff --git a/monkestation/code/modules/factory_type_beat/ai_behaviours/latch_onto.dm b/monkestation/code/modules/factory_type_beat/ai_behaviours/latch_onto.dm new file mode 100644 index 000000000000..6cb5258f0768 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/ai_behaviours/latch_onto.dm @@ -0,0 +1,16 @@ + +/datum/ai_behavior/hunt_target/latch_onto + +/datum/ai_behavior/hunt_target/latch_onto/setup(datum/ai_controller/controller, hunting_target_key, hunting_cooldown_key) + . = ..() + var/mob/living/living_pawn = controller.pawn + if(living_pawn.buckled) + return FALSE + +/datum/ai_behavior/hunt_target/latch_onto/target_caught(mob/living/hunter, obj/hunted) + if(hunter.buckled) + return FALSE + if(!hunted.buckle_mob(hunter, force = TRUE)) + return FALSE + hunted.visible_message(span_notice("[hunted] has been latched onto by [hunter]!")) + return TRUE diff --git a/monkestation/code/modules/factory_type_beat/boulder.dm b/monkestation/code/modules/factory_type_beat/boulder.dm new file mode 100644 index 000000000000..ce203ade508f --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/boulder.dm @@ -0,0 +1,284 @@ +/** + * The objects that ore vents produce, which is refined into minerals. + */ +/obj/item/boulder + name = "boulder" + desc = "This rocks." + icon_state = "ore" + icon = 'monkestation/code/modules/factory_type_beat/icons/ore.dmi' + item_flags = NO_MAT_REDEMPTION + throw_range = 2 + throw_speed = 0.5 + drag_slowdown = 1.5 // It's still a big rock. + ///When a refinery machine is working on this boulder, we'll set this. Re reset when the process is finished, but the boulder may still be refined/operated on further. + var/obj/machinery/bouldertech/processed_by = null + /// How many steps of refinement this boulder has gone through. Starts at 5-8, goes down one each machine process. + var/durability = 5 + /// What was the size of the boulder when it was spawned? This is used for inheiriting the icon_state. + var/boulder_size = BOULDER_SIZE_SMALL + /// Used in inheriting the icon_state from our parent vent in update_icon. + var/boulder_string = "boulder" + /// Cooldown used to prevents boulders from getting processed back into a machine immediately after being processed. + COOLDOWN_DECLARE(processing_cooldown) + + /// Static list of all minerals to populate gulag boulders with. + var/list/static/gulag_minerals = list( + /datum/material/diamond = 1, + /datum/material/gold = 8, + /datum/material/iron = 95, + /datum/material/plasma = 30, + /datum/material/silver = 20, + /datum/material/titanium = 8, + /datum/material/uranium = 3, + ) + /// Static list of all minerals to populate gulag boulders with, but with bluespace added where safe. + var/list/static/expanded_gulag_minerals = list( + /datum/material/bluespace = 1, + /datum/material/diamond = 1, + /datum/material/gold = 8, + /datum/material/iron = 94, + /datum/material/plasma = 30, + /datum/material/silver = 20, + /datum/material/titanium = 8, + /datum/material/uranium = 3, + ) + +/obj/item/boulder/Initialize(mapload) + . = ..() + register_context() + AddComponent(/datum/component/two_handed, require_twohands = TRUE, force_unwielded = 0, force_wielded = 5) //Heavy as all hell, it's a boulder, dude. + +/obj/item/boulder/Destroy(force) + SSore_generation.available_boulders -= src + processed_by = null + return ..() + +/obj/item/boulder/examine(mob/user) + . = ..() + . += span_notice("This boulder would take [durability] more steps to refine or break.") + +/obj/item/boulder/examine_more(mob/user) + . = ..() + . += span_notice("[span_bold("Boulders")] can either be cracked open by [span_bold("mining tools")], or processed into sheets with [span_bold("refineries or smelters")]. Undisturbed boulders can be collected by the [span_bold("BRM")].") + +/obj/item/boulder/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + if(held_item?.tool_behaviour == TOOL_MINING || HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + context[SCREENTIP_CONTEXT_RMB] = "Crush boulder into ore" + return CONTEXTUAL_SCREENTIP_SET + +/obj/item/boulder/attack_self(mob/user, list/modifiers) + . = ..() + if(.) + return + if(HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + manual_process(null, user, INATE_BOULDER_SPEED_MULTIPLIER) + return + +/obj/item/boulder/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) + return + if(HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + manual_process(null, user, INATE_BOULDER_SPEED_MULTIPLIER) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/item/boulder/CanAllowThrough(atom/movable/mover, border_dir) + . = ..() + if(istype(mover, /obj/item/boulder)) //This way, boulders can only go one at a time on conveyor belts, but everyone else can go through. + return FALSE + +/obj/item/boulder/attackby_secondary(obj/item/weapon, mob/user, params) + . = ..() + if(HAS_TRAIT(user, TRAIT_BOULDER_BREAKER) || HAS_TRAIT(weapon, TRAIT_BOULDER_BREAKER)) + manual_process(weapon, user, INATE_BOULDER_SPEED_MULTIPLIER) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + if(weapon.tool_behaviour == TOOL_MINING) + manual_process(weapon, user) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + return ..() + +/obj/item/boulder/attack_basic_mob(mob/user, list/modifiers) + . = ..() + if(.) + return + if(HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + manual_process(null, user, INATE_BOULDER_SPEED_MULTIPLIER) //A little hacky but it works around the speed of the blackboard task selection process for now. + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/item/boulder/update_icon_state() + . = ..() + switch(boulder_size) + if(BOULDER_SIZE_SMALL) + icon_state = "[boulder_string]_small" + if(BOULDER_SIZE_MEDIUM) + icon_state = "[boulder_string]_medium" + if(BOULDER_SIZE_LARGE) + icon_state = "[boulder_string]_large" + else + icon_state = "[boulder_string]_small" + +/** + * This is called when a boulder is processed by a mob or tool, and reduces the durability of the boulder. + * @param obj/item/weapon The weapon that is being used to process the boulder, that we pull toolspeed from. If null, we use the override_speed_multiplier instead. + * @param mob/living/user The mob that is processing the boulder. + * @param override_speed_multiplier The speed multiplier to use if weapon is null. The do_after will take 2 * this value seconds to complete. + * @param continued Whether or not this is a continued process, or the first one. If true, we don't play the "You swing at the boulder" message. + */ +/obj/item/boulder/proc/manual_process(obj/item/weapon, mob/living/user, override_speed_multiplier, continued = FALSE) + var/process_speed = 0 + //Handle weapon conditions. + if(weapon) + if(HAS_TRAIT(weapon, TRAIT_INSTANTLY_PROCESSES_BOULDERS)) + durability = 0 + process_speed = weapon.toolspeed + weapon.play_tool_sound(src, 50) + if(!continued) + to_chat(user, span_notice("You swing at \the [src]...")) + + // Handle user conditions/override conditions. + else if (override_speed_multiplier || HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + if(user) + if(HAS_TRAIT(user, TRAIT_INSTANTLY_PROCESSES_BOULDERS)) + durability = 0 + else if(override_speed_multiplier) + process_speed = override_speed_multiplier + else + process_speed = INATE_BOULDER_SPEED_MULTIPLIER + playsound(src, 'sound/effects/rocktap1.ogg', 50) + if(!continued) + to_chat(user, span_notice("You scrape away at \the [src]... speed is [process_speed].")) + else + CRASH("No weapon, acceptable user, or override speed multiplier passed to manual_process()") + if(durability > 0) + if(!do_after(user, (2 * process_speed SECONDS), target = src)) + return + if(!user.Adjacent(src)) + return + durability-- + user.apply_damage(4, STAMINA) + if(durability <= 0) + convert_to_ore() + to_chat(user, span_notice("You finish working on \the [src], and it crumbles into ore.")) + playsound(src, 'sound/effects/rock_break.ogg', 50) + user.mind?.adjust_experience(/datum/skill/mining, MINING_SKILL_BOULDER_SIZE_XP * 0.2) + qdel(src) + return + var/msg = (durability == 1 ? "is crumbling!" : "looks weaker!") + to_chat(user, span_notice("\The [src] [msg]")) + manual_process(weapon, user, override_speed_multiplier, continued = TRUE) + +/** + * This function is called while breaking boulders manually, and drops ore based on the boulder's mineral content. + * Quantity of ore spawned here is 1 less than if the boulder was processed by a machine, but clamped at 10 maximum, 1 minimum. + */ +/obj/item/boulder/proc/convert_to_ore() + for(var/datum/material/picked in custom_materials) + var/obj/item/stack/ore/cracked_ore // Take the associated value and convert it into ore stacks... + var/quantity = clamp(round((custom_materials[picked] - SHEET_MATERIAL_AMOUNT)/SHEET_MATERIAL_AMOUNT), 1, 10) //but less resources than if they processed it by hand. + + var/cracked_ore_type = picked.ore_type + if(isnull(cracked_ore_type)) + stack_trace("boulder found containing material type [picked.type] with no set ore_type") + continue + cracked_ore = new cracked_ore_type (drop_location(), quantity) + SSblackbox.record_feedback("tally", "ore_mined", quantity, cracked_ore) + +/** + * Handles the boulder's processing cooldown to check if it's ready to be processed again. + */ +/obj/item/boulder/proc/can_get_processed() + return COOLDOWN_FINISHED(src, processing_cooldown) + +/** + * Starts the boulder's processing cooldown. + */ +/obj/item/boulder/proc/restart_processing_cooldown() + COOLDOWN_START(src, processing_cooldown, 2 SECONDS) + +/** + * Moves boulder contents to the drop location, and then deletes the boulder. + */ +/obj/item/boulder/proc/break_apart() + var/list/quips = list("Clang!", "Crack!", "Bang!", "Clunk!", "Clank!") + if(length(contents)) + visible_message(span_notice("[pick(quips)] Something falls out of \the [src]!")) + playsound(loc, 'sound/effects/picaxe1.ogg', 60, FALSE) + for(var/obj/item/content as anything in contents) + content.forceMove(get_turf(src)) + qdel(src) + +/** + * This is called when a boulder is spawned from a vent, and is used to set the boulder's icon as well as durability. + * We also set our boulder_size variable, which is used for inheiriting the icon_state later on if processed. + * @param obj/structure/ore_vent/parent_vent The vent that spawned this boulder to generate consistent boulder icons. If null, we use the default size. + * @param size The size of the boulder to spawn. If parent_vent is defined, this is ignored. + * @param is_artifact Whether or not this boulder is an artifact boulder. If true, we use the artifact boulder icon state regardless of size. + */ +/obj/item/boulder/proc/flavor_boulder(obj/structure/ore_vent/parent_vent, size = BOULDER_SIZE_SMALL, is_artifact = FALSE) + var/durability_min = size + var/durability_max = size + BOULDER_SIZE_SMALL + if(parent_vent) + durability_min = parent_vent.boulder_size + durability_max = parent_vent.boulder_size + BOULDER_SIZE_SMALL + durability = rand(durability_min, durability_max) //randomize durability a bit for some flavor. + boulder_size = size + if(parent_vent) + boulder_size = parent_vent.boulder_size + boulder_string = parent_vent.boulder_icon_state + update_appearance(UPDATE_ICON_STATE) + +/** + * Unique proc for gulag-style boulders, which adds a random amount of minerals to the boulder. + */ +/obj/item/boulder/proc/add_gulag_minerals() + var/datum/material/new_material = pick_weight(gulag_minerals) + var/list/new_mats = list() + new_mats[new_material] = SHEET_MATERIAL_AMOUNT * rand(1,3) //We only want a few sheets of material in the gulag boulders + set_custom_materials(new_mats) + +/obj/item/boulder/artifact + name = "artifact boulder" + desc = "This boulder is brimming with strange energy. Cracking it open could contain something unusual for science." + icon_state = "boulder_artifact" + /// References to the relic inside the boulder, if any. + var/obj/artifact_inside + +/obj/item/boulder/artifact/Initialize(mapload) + . = ..() + artifact_inside = spawn_artifact(src) /// This could be poggers for archaeology in the future. + +/obj/item/boulder/artifact/Destroy(force) + QDEL_NULL(artifact_inside) + return ..() + +/obj/item/boulder/artifact/convert_to_ore() + . = ..() + artifact_inside.forceMove(drop_location()) + artifact_inside = null + +/obj/item/boulder/artifact/break_apart() + artifact_inside = null + return ..() + + +/obj/item/boulder/gulag + name = "low-quality boulder" + desc = "This rocks. It's a low quality boulder, so it's probably not worth as much." + +/obj/item/boulder/gulag/Initialize(mapload) + . = ..() + add_gulag_minerals(gulag_minerals) + +/obj/item/boulder/gulag_expanded + name = "low-density boulder" + desc = "This rocks. It's not very well packed, and can't contain as many minerals." + +/obj/item/boulder/gulag_expanded/Initialize(mapload) + . = ..() + add_gulag_minerals(expanded_gulag_minerals) + +/obj/item/boulder/shabby + name = "shabby boulder" + desc = "A bizzare, twisted boulder. Wait, wait no, it's just a rock." + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.1, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.1) + durability = 1 diff --git a/monkestation/code/modules/factory_type_beat/circuits.dm b/monkestation/code/modules/factory_type_beat/circuits.dm new file mode 100644 index 000000000000..61b0fdb7d352 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/circuits.dm @@ -0,0 +1,46 @@ +/obj/item/circuitboard/machine/brm + name = "Boulder Retrieval Matrix" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/bouldertech/brm + req_components = list( + /datum/stock_part/capacitor = 1, + /datum/stock_part/scanning_module = 1, + /datum/stock_part/micro_laser = 1, + ) + +/obj/item/circuitboard/machine/refinery + name = "Boulder Refinery" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/bouldertech/refinery + req_components = list( + /obj/item/reagent_containers/cup/beaker = 1, + /obj/item/assembly/igniter/condenser = 1, + /datum/stock_part/manipulator = 2, + /datum/stock_part/matter_bin = 1, + ) + +/obj/item/circuitboard/machine/smelter + name = "Boulder Smelter" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/bouldertech/refinery/smelter + req_components = list( + /obj/item/assembly/igniter = 1, + /datum/stock_part/manipulator = 2, + /datum/stock_part/matter_bin = 2, + ) + +/obj/item/circuitboard/machine/big_manipulator + name = "Big Manipulator" + greyscale_colors = CIRCUIT_COLOR_ENGINEERING + build_path = /obj/machinery/big_manipulator + req_components = list( + /datum/stock_part/manipulator = 1, + ) + +/obj/item/circuitboard/machine/assembler + name = "Assembler" + greyscale_colors = CIRCUIT_COLOR_ENGINEERING + build_path = /obj/machinery/assembler + req_components = list( + /datum/stock_part/manipulator = 1, + ) diff --git a/monkestation/code/modules/factory_type_beat/debug.dm b/monkestation/code/modules/factory_type_beat/debug.dm new file mode 100644 index 000000000000..556bcda8c757 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/debug.dm @@ -0,0 +1,78 @@ +/proc/count_lists() +#ifndef OPENDREAM + var/list_count = 0 + for(var/list/list) + list_count++ + + var/file = file("data/list_count/[GLOB.round_id].txt") + + WRITE_FILE(file, list_count) +#endif + +/proc/save_types() +#ifndef OPENDREAM + var/datum/D + var/atom/A + var/list/counts = new + for(A) counts[A.type] = (counts[A.type]||0) + 1 + for(D) counts[D.type] = (counts[D.type]||0) + 1 + + var/F = file("data/type_tracker/[GLOB.round_id]-stat_track.txt") + for(var/i in counts) + WRITE_FILE(F, "[i]\t[counts[i]]\n") +#endif + +/proc/save_datums() +#ifndef OPENDREAM + var/datum/D + var/list/counts = new + for(D) counts[D.type] = (counts[D.type]||0) + 1 + + var/F = file("data/type_tracker/[GLOB.round_id]-datums-[world.time].txt") + for(var/i in counts) + WRITE_FILE(F, "[i]\t[counts[i]]\n") +#endif + +#ifndef OPENDREAM +///these procs don't work on od +SUBSYSTEM_DEF(memory_stats) + name = "Mem Stats" + init_order = INIT_ORDER_AIR + priority = FIRE_PRIORITY_AIR + wait = 5 MINUTES + flags = SS_BACKGROUND + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + +/datum/controller/subsystem/memory_stats/Initialize() + if(world.system_type != MS_WINDOWS || !rustg_file_exists("memorystats.dll")) + flags |= SS_NO_FIRE + // Technically this isn't really as much of an initialization as it is "just disabling itself if it won't work", so no reason to actually print any output + return SS_INIT_NO_NEED + +/datum/controller/subsystem/memory_stats/fire(resumed) + var/memory_summary = get_memory_stats() + if(memory_summary) + rustg_file_write(memory_summary, "data/mem_stat/[GLOB.round_id]-memstat.txt") + +/datum/controller/subsystem/memory_stats/proc/get_memory_stats() + if(world.system_type != MS_WINDOWS || !rustg_file_exists("memorystats.dll")) + return + return trimtext(call_ext("memorystats", "get_memory_stats")()) +#endif + +/client/proc/server_memory_stats() + set name = "Server Memory Stats" + set category = "Debug" + set desc = "Print various statistics about the server's current memory usage (does not work on OpenDream)" + + if(!check_rights(R_DEBUG)) + return +#ifndef OPENDREAM + var/result = span_danger("Error fetching memory statistics!") + var/memory_stats = SSmemory_stats.get_memory_stats() + if(memory_stats) + result = memory_stats +#else + var/result = span_danger("Memory statistics not supported on OpenDream, sorry!") +#endif + to_chat(src, examine_block(result), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE) diff --git a/monkestation/code/modules/factory_type_beat/designs.dm b/monkestation/code/modules/factory_type_beat/designs.dm new file mode 100644 index 000000000000..e8b790b565cb --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/designs.dm @@ -0,0 +1,236 @@ +#define FABRICATOR_SUBCATEGORY_MATERIALS "/Materials" + +/datum/design/manipulator_filter + name = "Manipulator Filter" + desc = "This can be inserted into a manipulator to give it filters." + id = "manipulator_filter" + build_path = /obj/item/manipulator_filter + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE | COLONY_FABRICATOR + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO + ) + materials = list(/datum/material/iron = 2000) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE + +/datum/design/manipulator_filter_cargo + name = "Manipulator Filter (Department)" + desc = "This can be inserted into a manipulator to give it filters." + id = "manipulator_filter_cargo" + build_path = /obj/item/manipulator_filter/cargo + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE | COLONY_FABRICATOR + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO + ) + materials = list(/datum/material/iron = 2000) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE + +/datum/design/manipulator_filter_internal + name = "Manipulator Filter (Internal)" + desc = "This can be inserted into a manipulator to give it filters." + id = "manipulator_filter_internal" + build_path = /obj/item/manipulator_filter/internal_filter + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE | COLONY_FABRICATOR + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_CARGO + ) + materials = list(/datum/material/iron = 2000) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE + +/datum/design/board/big_manipulator + name = "Big Manipulator Board" + desc = "The circuit board for a big manipulator." + id = "big_manipulator" + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE | COLONY_FABRICATOR + build_path = /obj/item/circuitboard/machine/big_manipulator + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE + +/datum/design/board/assembler + name = "Assembler Board" + desc = "The circuit board for an assembler." + id = "assembler" + build_path = /obj/item/circuitboard/machine/assembler + build_type = COLONY_FABRICATOR | IMPRINTER | AWAY_IMPRINTER + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SERVICE + +/datum/design/dissolution_chamber + name = "Dissolution Chamber" + id = "dissolution_chamber" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/dissolution_chamber + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/chemical_washer + name = "Chemical Washer" + id = "chemical_washer" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/chemical_washer + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/chemical_injector + name = "Chemical Injector" + id = "chemical_injector" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/chemical_injector + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/crystalizer + name = "Crystalizer" + id = "crystalizer" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/crystalizer + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/crusher + name = "Crusher" + id = "crusher" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/crusher + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/enricher + name = "Enrichment Chamber" + id = "enricher" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/enricher + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/purification_chamber + name = "Purification Chamber" + id = "purification_chamber" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/purification_chamber + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 10 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/brine_chamber + name = "Brine Chamber Controller" + id = "brine_chamber" + build_type = COLONY_FABRICATOR | AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 15, + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/flatpacked_machine/ore_processing/brine_chamber + category = list( + RND_CATEGORY_INITIAL, + FABRICATOR_SUBCATEGORY_MATERIALS, + ) + construction_time = 30 SECONDS + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +// Autolathe-able circuitboards for starting with boulder processing machines. +/datum/design/board/smelter + name = "Boulder Smelter" + desc = "A circuitboard for a boulder smelter. Lowtech enough to be printed from the lathe." + id = "b_smelter" + build_type = AUTOLATHE | COLONY_FABRICATOR + materials = list( + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + /datum/material/iron = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/circuitboard/machine/smelter + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO, + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO + +/datum/design/board/refinery + name = "Boulder Refinery" + desc = "A circuitboard for a boulder refinery. Lowtech enough to be printed from the lathe." + id = "b_refinery" + build_type = AUTOLATHE | COLONY_FABRICATOR + materials = list( + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + /datum/material/iron = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/circuitboard/machine/refinery + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO, + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO + + +/datum/design/board/brm + name = "Boulder Retrieval Matrix" + id = "brm" + materials = list( + /datum/material/glass = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/circuitboard/machine/brm + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT, + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO + +#undef FABRICATOR_SUBCATEGORY_MATERIALS diff --git a/monkestation/code/modules/factory_type_beat/effects.dm b/monkestation/code/modules/factory_type_beat/effects.dm new file mode 100644 index 000000000000..ef0d6fb0adda --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/effects.dm @@ -0,0 +1,21 @@ +/obj/effect/temp_visual/mining_overlay/vent + icon = 'monkestation/code/modules/factory_type_beat/icons/vent_overlays.dmi' + icon_state = "unknown" + duration = 45 + pixel_x = 0 + pixel_y = 0 + easing_style = CIRCULAR_EASING|EASE_IN + +/obj/effect/decal/cleanable/rubble + name = "rubble" + desc = "A pile of rubble." + icon = 'monkestation/code/modules/factory_type_beat/icons/debris.dmi' + icon_state = "rubble" + mergeable_decal = FALSE + beauty = -10 + +/obj/effect/decal/cleanable/rubble/Initialize(mapload) + . = ..() + flick("rubble_bounce", src) + icon_state = "rubble" + update_appearance(UPDATE_ICON_STATE) diff --git a/monkestation/code/modules/factory_type_beat/flatpacks.dm b/monkestation/code/modules/factory_type_beat/flatpacks.dm new file mode 100644 index 000000000000..2a08025476cc --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/flatpacks.dm @@ -0,0 +1,35 @@ +/obj/item/flatpacked_machine/ore_processing + icon_state = "colony_lathe_packed" + +/obj/item/flatpacked_machine/ore_processing/dissolution_chamber + name = "flat-packed dissolution chamber" + type_to_deploy = /obj/machinery/bouldertech/dissolution_chamber + +/obj/item/flatpacked_machine/ore_processing/chemical_washer + name = "flat-packed chemical washer" + type_to_deploy = /obj/machinery/bouldertech/chemical_washer + +/obj/item/flatpacked_machine/ore_processing/chemical_injector + name = "flat-packed chemical injector" + type_to_deploy = /obj/machinery/bouldertech/chemical_injector + +/obj/item/flatpacked_machine/ore_processing/crystalizer + name = "flat-packed crystalizer" + type_to_deploy = /obj/machinery/bouldertech/crystalizer + +/obj/item/flatpacked_machine/ore_processing/crusher + name = "flat-packed crusher" + type_to_deploy = /obj/machinery/bouldertech/crusher + +/obj/item/flatpacked_machine/ore_processing/enricher + name = "flat-packed enrichment chamber" + type_to_deploy = /obj/machinery/bouldertech/enricher + +/obj/item/flatpacked_machine/ore_processing/purification_chamber + name = "flat-packed purification chamber" + type_to_deploy = /obj/machinery/bouldertech/purification_chamber + +/obj/item/flatpacked_machine/ore_processing/brine_chamber + name = "flat-packed brine chamber controller" + desc = "This is a massive deploy so clear space (5x5). This acts as the lower left corner" + type_to_deploy = /obj/structure/brine_chamber/controller diff --git a/monkestation/code/modules/factory_type_beat/icons/big_manipulator.dmi b/monkestation/code/modules/factory_type_beat/icons/big_manipulator.dmi new file mode 100644 index 000000000000..b6e878e18984 Binary files /dev/null and b/monkestation/code/modules/factory_type_beat/icons/big_manipulator.dmi differ diff --git a/monkestation/code/modules/factory_type_beat/icons/big_manipulator_core.dmi b/monkestation/code/modules/factory_type_beat/icons/big_manipulator_core.dmi new file mode 100644 index 000000000000..614b4d51cbbf Binary files /dev/null and b/monkestation/code/modules/factory_type_beat/icons/big_manipulator_core.dmi differ diff --git a/monkestation/code/modules/factory_type_beat/icons/big_manipulator_hand.dmi b/monkestation/code/modules/factory_type_beat/icons/big_manipulator_hand.dmi new file mode 100644 index 000000000000..e165441e8052 Binary files /dev/null and b/monkestation/code/modules/factory_type_beat/icons/big_manipulator_hand.dmi differ diff --git a/monkestation/code/modules/factory_type_beat/icons/debris.dmi b/monkestation/code/modules/factory_type_beat/icons/debris.dmi new file mode 100644 index 000000000000..10b73560cbb1 Binary files /dev/null and b/monkestation/code/modules/factory_type_beat/icons/debris.dmi differ diff --git a/monkestation/code/modules/factory_type_beat/icons/items.dmi b/monkestation/code/modules/factory_type_beat/icons/items.dmi new file mode 100644 index 000000000000..9084cf3f8d28 Binary files /dev/null and b/monkestation/code/modules/factory_type_beat/icons/items.dmi differ diff --git a/monkestation/code/modules/factory_type_beat/icons/mining.dmi b/monkestation/code/modules/factory_type_beat/icons/mining.dmi new file mode 100644 index 000000000000..cdc886d85acd Binary files /dev/null and b/monkestation/code/modules/factory_type_beat/icons/mining.dmi differ diff --git a/monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi b/monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi new file mode 100644 index 000000000000..1be820a1fe41 Binary files /dev/null and b/monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi differ diff --git a/monkestation/code/modules/factory_type_beat/icons/ore.dmi b/monkestation/code/modules/factory_type_beat/icons/ore.dmi new file mode 100644 index 000000000000..7cc3b8820577 Binary files /dev/null and b/monkestation/code/modules/factory_type_beat/icons/ore.dmi differ diff --git a/monkestation/code/modules/factory_type_beat/icons/processing.dmi b/monkestation/code/modules/factory_type_beat/icons/processing.dmi new file mode 100644 index 000000000000..f154d3c13274 Binary files /dev/null and b/monkestation/code/modules/factory_type_beat/icons/processing.dmi differ diff --git a/monkestation/code/modules/factory_type_beat/icons/terrain.dmi b/monkestation/code/modules/factory_type_beat/icons/terrain.dmi new file mode 100644 index 000000000000..fd930fe709dc Binary files /dev/null and b/monkestation/code/modules/factory_type_beat/icons/terrain.dmi differ diff --git a/monkestation/code/modules/factory_type_beat/icons/vent_overlays.dmi b/monkestation/code/modules/factory_type_beat/icons/vent_overlays.dmi new file mode 100644 index 000000000000..54ac3d7a819b Binary files /dev/null and b/monkestation/code/modules/factory_type_beat/icons/vent_overlays.dmi differ diff --git a/monkestation/code/modules/factory_type_beat/machinery/assembler.dm b/monkestation/code/modules/factory_type_beat/machinery/assembler.dm new file mode 100644 index 000000000000..65c31219c962 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/assembler.dm @@ -0,0 +1,333 @@ +/obj/machinery/assembler + name = "assembler" + desc = "Produces a set recipe when given the materials, some say a small cargo technican is stuck inside making these things." + circuit = /obj/item/circuitboard/machine/assembler + + var/speed_multiplier = 1 + var/datum/crafting_recipe/chosen_recipe + var/crafting = FALSE + + var/static/list/crafting_recipes = list() + var/list/crafting_inventory = list() + + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "assembler" + + +/obj/machinery/assembler/Initialize(mapload) + . = ..() + + var/static/list/loc_connections = list( + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), + ) + AddElement(/datum/element/connect_loc, loc_connections) + AddComponent(/datum/component/hovering_information, /datum/hover_data/assembler) + register_context() + + if(!length(crafting_recipes)) + create_recipes() + +/obj/machinery/assembler/RefreshParts() + . = ..() + var/datum/stock_part/manipulator/locate_servo = locate() in component_parts + if(!locate_servo) + return + speed_multiplier = 1 / locate_servo.tier + +/obj/machinery/assembler/Destroy() + . = ..() + for(var/atom/movable/movable in crafting_inventory) + movable.forceMove(get_turf(src)) + crafting_inventory -= movable + +/obj/machinery/assembler/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + if(chosen_recipe) + var/processable = "Accepts: " + var/comma = FALSE + for(var/atom/atom as anything in chosen_recipe.reqs) + if(comma) + processable += ", " + processable += initial(atom.name) + comma = !comma + context[SCREENTIP_CONTEXT_MISC] = processable + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/assembler/examine(mob/user) + . = ..() + if(chosen_recipe) + . += span_notice(chosen_recipe.name) + for(var/atom/atom as anything in chosen_recipe.reqs) + . += span_notice("[initial(atom.name)]: [chosen_recipe.reqs[atom]]") + +/obj/machinery/assembler/proc/create_recipes() + for(var/datum/crafting_recipe/recipe as anything in subtypesof(/datum/crafting_recipe) - /datum/crafting_recipe/stack) + if(initial(recipe.non_craftable) || !initial(recipe.always_available)) + continue + crafting_recipes += new recipe + +/obj/machinery/assembler/attack_hand(mob/living/user, list/modifiers) + . = ..() + var/datum/crafting_recipe/choice = tgui_input_list(user, "Choose a recipe", name, crafting_recipes) + if(!choice) + return + chosen_recipe = choice + for(var/atom/movable/listed as anything in crafting_inventory) + listed.forceMove(get_turf(src)) + crafting_inventory -= listed + +/obj/machinery/assembler/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(!chosen_recipe) + return FALSE + var/failed = TRUE + for(var/atom/movable/movable as anything in chosen_recipe.reqs) + if(istype(mover, movable)) + failed = FALSE + break + if(failed) + return FALSE + if(!check_item(mover)) + return FALSE + return ..() + +/obj/machinery/assembler/proc/on_entered(datum/source, atom/movable/atom_movable) + SIGNAL_HANDLER + INVOKE_ASYNC(src, PROC_REF(accept_item), atom_movable) + +/obj/machinery/assembler/proc/accept_item(atom/movable/atom_movable) + if(!chosen_recipe) + return + if(isstack(atom_movable)) + var/obj/item/stack/stack = atom_movable + if(!(stack.merge_type in chosen_recipe.reqs)) + return FALSE + else + var/failed = TRUE + for(var/atom/movable/movable as anything in chosen_recipe.reqs) + if(istype(atom_movable, movable)) + failed = FALSE + break + if(failed) + return FALSE + + atom_movable.forceMove(src) + crafting_inventory += atom_movable + check_recipe_state() + + +/obj/machinery/assembler/can_drop_off(atom/movable/target) + if(!check_item(target)) + return FALSE + return TRUE + + +/obj/machinery/assembler/proc/check_item(atom/movable/atom_movable) + if(!chosen_recipe) + return + if(isstack(atom_movable)) + var/obj/item/stack/stack = atom_movable + if(!(stack.merge_type in chosen_recipe.reqs)) + return FALSE + + if(!isstack(atom_movable)) + var/failed = TRUE + for(var/atom/movable/movable as anything in chosen_recipe.reqs) + if(istype(atom_movable, movable)) + failed = FALSE + break + if(failed) + return FALSE + + var/list/reqs = chosen_recipe.reqs.Copy() + for(var/atom/movable/listed in reqs) + reqs[listed] *= 10 // we can queue 10 crafts of everything + + for(var/atom/movable/item in crafting_inventory) + if(isstack(item)) + var/obj/item/stack/stack = item + if(item in reqs) + reqs[item.type] -= stack.amount + if(reqs[item.type] <= 0) + reqs -= item.type + else + for(var/atom/movable/movable as anything in chosen_recipe.reqs) + if(istype(item, movable)) + reqs[movable]-- + if(reqs[movable] <= 0) + reqs -= movable + if(!length(reqs)) + return FALSE + + var/passed = FALSE + for(var/atom/movable/movable as anything in chosen_recipe.reqs) + if(istype(atom_movable, movable)) + passed = TRUE + break + if(passed) + return TRUE + + if(isstack(atom_movable)) + var/obj/item/stack/stack = atom_movable + if((stack.merge_type in reqs)) + return TRUE + + return FALSE + + +/obj/machinery/assembler/proc/check_recipe_state() + if(!chosen_recipe) + return + var/list/reqs = chosen_recipe.reqs.Copy() + if(!length(reqs)) + return + + for(var/atom/movable/item in crafting_inventory) + if(isstack(item)) + var/obj/item/stack/stack = item + if(stack.merge_type in reqs) + reqs[stack.merge_type] -= stack.amount + if(reqs[stack.merge_type] <= 0) + reqs -= stack.merge_type + else + for(var/atom/movable/movable as anything in chosen_recipe.reqs) + if(istype(item, movable)) + reqs[movable]-- + if(reqs[movable] <= 0) + reqs -= movable + if(!length(reqs)) + start_craft() + +/obj/machinery/assembler/proc/start_craft() + if(crafting) + return + crafting = TRUE + + if(!machine_do_after_visable(src, chosen_recipe.time * speed_multiplier * 3)) + return + + var/list/requirements = chosen_recipe.reqs + var/list/Deletion = list() + var/list/stored_parts = list() + var/data + var/amt + var/insanity = 500 + main_loop: + insanity-- + if(insanity <= 0) + return + for(var/path_key in requirements) + amt = chosen_recipe.reqs?[path_key] + if(!amt)//since machinery & structures can have 0 aka CRAFTING_MACHINERY_USE - i.e. use it, don't consume it! + continue main_loop + if(ispath(path_key, /obj/item/stack)) + var/obj/item/stack/S + var/obj/item/stack/SD + while(amt > 0) + S = locate(path_key) in crafting_inventory + if(S.amount >= amt) + if(!locate(S.type) in Deletion) + SD = new S.type() + Deletion += SD + S.use(amt) + SD = locate(S.type) in Deletion + SD.amount += amt + continue main_loop + else + amt -= S.amount + if(!locate(S.type) in Deletion) + Deletion += S + else + data = S.amount + S = locate(S.type) in Deletion + S.add(data) + crafting_inventory -= S + else + var/atom/movable/I + while(amt > 0) + I = locate(path_key) in crafting_inventory + Deletion += I + crafting_inventory -= I + amt-- + var/list/partlist = list(chosen_recipe.parts.len) + for(var/M in chosen_recipe.parts) + partlist[M] = chosen_recipe.parts[M] + for(var/part in chosen_recipe.parts) + if(isstack(part)) + var/obj/item/stack/ST = locate(part) in Deletion + if(ST.amount > partlist[part]) + ST.amount = partlist[part] + stored_parts += ST + Deletion -= ST + continue + else + while(partlist[part] > 0) + var/atom/movable/AM = locate(part) in Deletion + stored_parts += AM + Deletion -= AM + partlist[part] -= 1 + while(Deletion.len) + var/DL = Deletion[Deletion.len] + Deletion.Cut(Deletion.len) + if(istype(DL, /obj/item/storage)) + var/obj/item/storage/container = DL + container.emptyStorage() + else if(isstructure(DL)) + var/obj/structure/structure = DL + structure.dump_contents(structure.drop_location()) + qdel(DL) + + var/atom/movable/I + if(ispath(chosen_recipe.result, /obj/item/stack)) + I = new chosen_recipe.result(src, chosen_recipe.result_amount || 1) + I.forceMove(drop_location()) + else + I = new chosen_recipe.result (src) + I.forceMove(drop_location()) + if(I.atom_storage && chosen_recipe.delete_contents) + for(var/obj/item/thing in I) + qdel(thing) + I.CheckParts(stored_parts, chosen_recipe) + I.forceMove(drop_location()) + + crafting = FALSE + check_recipe_state() + + +/datum/hover_data/assembler + var/obj/effect/overlay/hover/recipe_icon + var/last_type + +/datum/hover_data/assembler/New(datum/component/hovering_information, atom/parent) + . = ..() + recipe_icon = new(null) + recipe_icon.maptext_width = 64 + recipe_icon.maptext_y = 32 + recipe_icon.maptext_x = -4 + recipe_icon.alpha = 125 + +/datum/hover_data/assembler/setup_data(obj/machinery/assembler/source, mob/enterer) + . = ..() + if(!source.chosen_recipe) + return + if(last_type != source.chosen_recipe.result) + update_image(source) + var/image/new_image = new(source) + new_image.appearance = recipe_icon.appearance + SET_PLANE_EXPLICIT(new_image, new_image.plane, source) + if(!isturf(source.loc)) + new_image.loc = source.loc + else + new_image.loc = source + add_client_image(new_image, enterer.client) + +/datum/hover_data/assembler/proc/update_image(obj/machinery/assembler/source) + if(!source.chosen_recipe) + return + last_type = source.chosen_recipe.result + + var/atom/atom = source.chosen_recipe.result + + recipe_icon.icon = initial(atom.icon) + recipe_icon.icon_state = initial(atom.icon_state) diff --git a/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser.dm b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser.dm new file mode 100644 index 000000000000..d34edeeed4d4 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser.dm @@ -0,0 +1,129 @@ +/obj/machinery/atmospherics/components/unary/chemical_infuser + name = "chemical infuser" + desc = "An afront to both chemists and atmospheric technicans." + + layer = BELOW_OBJ_LAYER + + icon_state = "reaction_chamber" + icon = 'icons/obj/plumbing/plumbers.dmi' + + initialize_directions = EAST + + var/static/list/chemical_infuser_recipes = list() + var/datum/chemical_infuser_recipe/chosen_recipe + var/processing = FALSE + +/obj/machinery/atmospherics/components/unary/chemical_infuser/Initialize(mapload) + . = ..() + create_reagents(1000, TRANSPARENT) + AddComponent(/datum/component/plumbing/chemical_infuser) + +/obj/machinery/atmospherics/components/unary/chemical_infuser/set_init_directions() + . = ..() + switch(dir) + if(SOUTH) + initialize_directions = EAST + if(NORTH) + initialize_directions = WEST + if(WEST) + initialize_directions = SOUTH + if(EAST) + initialize_directions = NORTH + +/obj/machinery/atmospherics/components/unary/chemical_infuser/ui_interact(mob/user, datum/tgui/ui) + if(!length(chemical_infuser_recipes)) + create_recipes() + chosen_recipe = tgui_input_list(user, "Choose a recipe to focus on.", name, chemical_infuser_recipes) + +/obj/machinery/atmospherics/components/unary/chemical_infuser/proc/create_recipes() + for(var/datum/chemical_infuser_recipe/new_recipes as anything in subtypesof(/datum/chemical_infuser_recipe)) + chemical_infuser_recipes += new new_recipes + +/obj/machinery/atmospherics/components/unary/chemical_infuser/examine(mob/user) + . = ..() + if(chosen_recipe) + . += "[chosen_recipe.name] requires:" + for(var/datum/reagent/reagent as anything in chosen_recipe.required_reagents) + var/amount = reagents.get_reagent_amount(reagent) + . += "[reagent.name]: [amount] / [chosen_recipe.required_reagents[reagent]]" + for(var/datum/gas/gas as anything in chosen_recipe.required_gases) + var/datum/gas_mixture/mixture = airs[1] + mixture.assert_gas(gas) + var/gas_amount = mixture.gases[gas][MOLES] + . += "[gas.name]: [gas_amount] / [chosen_recipe.required_gases[gas]]" + +/obj/machinery/atmospherics/components/unary/chemical_infuser/process_atmos() + if(!chosen_recipe) + return + + var/passes_all_gases = TRUE + for(var/datum/gas/gas as anything in chosen_recipe.required_gases) + var/datum/gas_mixture/mixture = airs[1] + mixture.assert_gas(gas) + var/gas_amount = mixture.gases[gas][MOLES] + if(gas_amount < chosen_recipe.required_gases[gas]) + passes_all_gases = FALSE + break + if(!passes_all_gases) + return + + var/passes_all_chemicals = TRUE + for(var/datum/reagent/reagent as anything in chosen_recipe.required_reagents) + var/amount = reagents.get_reagent_amount(reagent) + if(amount < chosen_recipe.required_reagents[reagent]) + passes_all_chemicals = FALSE + break + if(!passes_all_chemicals) + return + + if(!processing) + playsound(get_turf(src), 'sound/effects/bubbles2.ogg', 25, TRUE) + var/list/seen = viewers(4, get_turf(src)) + var/iconhtml = icon2html(src, seen) + audible_message(span_notice("[iconhtml] The solution bubbles fiercely!")) + addtimer(CALLBACK(src, PROC_REF(create_recipe)), 7 SECONDS) + processing = TRUE + +/obj/machinery/atmospherics/components/unary/chemical_infuser/proc/create_recipe() + processing = FALSE + for(var/datum/reagent/reagent as anything in chosen_recipe.required_reagents) + reagents.remove_all_type(reagent, chosen_recipe.required_reagents[reagent]) + var/datum/gas_mixture/mixture = airs[1] + + for(var/datum/gas/gas as anything in chosen_recipe.required_gases) + mixture.remove_specific(gas, chosen_recipe.required_gases[gas]) + + for(var/datum/reagent/reagent as anything in chosen_recipe.outputs) + reagents.add_reagent(reagent, chosen_recipe.outputs[reagent]) + +/datum/component/plumbing/chemical_infuser + demand_connects = NORTH + supply_connects = SOUTH + +/datum/component/plumbing/chemical_infuser/Initialize(start=TRUE, _ducting_layer, _turn_connects=TRUE, datum/reagents/custom_receiver) + . = ..() + if(!istype(parent, /obj/machinery/atmospherics/components/unary/chemical_infuser)) + return COMPONENT_INCOMPATIBLE + +/datum/component/plumbing/chemical_infuser/can_give(amount, reagent, datum/ductnet/net) + . = ..() + var/obj/machinery/plumbing/reaction_chamber/reaction_chamber = parent + if(!. || !reaction_chamber.emptying || reagents.is_reacting == TRUE) + return FALSE + +/datum/component/plumbing/chemical_infuser/send_request(dir) + var/obj/machinery/atmospherics/components/unary/chemical_infuser/chamber = parent + if(!chamber.chosen_recipe) + return + + for(var/required_reagent in chamber.chosen_recipe.required_reagents) + var/has_reagent = FALSE + for(var/datum/reagent/containg_reagent as anything in reagents.reagent_list) + if(required_reagent == containg_reagent.type) + has_reagent = TRUE + if(containg_reagent.volume + CHEMICAL_QUANTISATION_LEVEL < chamber.chosen_recipe.required_reagents[required_reagent]) + process_request(min(chamber.chosen_recipe.required_reagents[required_reagent] - containg_reagent.volume, MACHINE_REAGENT_TRANSFER) , required_reagent, dir) + return + if(!has_reagent) + process_request(min(chamber.chosen_recipe.required_reagents[required_reagent], MACHINE_REAGENT_TRANSFER), required_reagent, dir) + return diff --git a/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/_base.dm b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/_base.dm new file mode 100644 index 000000000000..d4cf68eb86cf --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/_base.dm @@ -0,0 +1,5 @@ +/datum/chemical_infuser_recipe + var/name = "Test" + var/list/outputs = list() + var/list/required_gases = list() + var/list/required_reagents = list() diff --git a/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/sulfur.dm b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/sulfur.dm new file mode 100644 index 000000000000..1dd00d6b4114 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/chemical_infuser_recipes/sulfur.dm @@ -0,0 +1,26 @@ +/datum/chemical_infuser_recipe/sulfur + name = "Sulfur" + required_reagents = list(/datum/reagent/gunpowder = 5) + required_gases = list(/datum/gas/oxygen = 5) + outputs = list(/datum/reagent/sulfur = 50) + +/datum/chemical_infuser_recipe/sulfur_trioxide + name = "Sulfur Trioxide" + + required_reagents = list(/datum/reagent/sulfur/dioxide = 5) + required_gases = list(/datum/gas/oxygen = 5) + outputs = list(/datum/reagent/sulfur/trioxide = 10) + +/datum/chemical_infuser_recipe/sulfuric_acid + name = "Sulfuric Acid" + + required_gases = list(/datum/gas/oxygen = 5) + required_reagents = list(/datum/reagent/sulfur/trioxide = 5) + outputs = list(/datum/reagent/toxin/acid = 10) + + +/datum/reagent/sulfur/dioxide + name = "Sulfur Dioxide" + +/datum/reagent/sulfur/trioxide + name = "sulfur Trioxide" diff --git a/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/_base.dm b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/_base.dm new file mode 100644 index 000000000000..1823238c1ed7 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/_base.dm @@ -0,0 +1,5 @@ +/datum/pressurized_reaction + var/name = "Test" + var/list/outputs = list() + var/required_pressure = 0 + var/list/required_reagents = list() diff --git a/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/sulfur.dm b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/sulfur.dm new file mode 100644 index 000000000000..df643cb43e2d --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurised_reactions/sulfur.dm @@ -0,0 +1,5 @@ +/datum/pressurized_reaction/sulfur_dioxide + name = "Sulfur Dioxide" + required_pressure = 300 + required_reagents = list(/datum/reagent/sulfur = 50) + outputs = list(/datum/reagent/sulfur/dioxide = 50) diff --git a/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurized_reaction_chamber.dm b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurized_reaction_chamber.dm new file mode 100644 index 000000000000..fca6dbfbe1b7 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/atmos_chem/pressurized_reaction_chamber.dm @@ -0,0 +1,112 @@ +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber + name = "pressurized reaction chamber" + desc = "An afront to both chemists and atmospheric technicans." + + icon_state = "reaction_chamber" + icon = 'icons/obj/plumbing/plumbers.dmi' + + initialize_directions = EAST + + var/static/list/pressurized_reaction_recipes = list() + var/datum/pressurized_reaction/chosen_recipe + var/processing = FALSE + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/Initialize(mapload) + . = ..() + create_reagents(1000, TRANSPARENT) + AddComponent(/datum/component/plumbing/pressurized_reaction_chamber) + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/set_init_directions() + . = ..() + switch(dir) + if(SOUTH) + initialize_directions = EAST + if(NORTH) + initialize_directions = WEST + if(WEST) + initialize_directions = SOUTH + if(EAST) + initialize_directions = NORTH + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/ui_interact(mob/user, datum/tgui/ui) + if(!length(pressurized_reaction_recipes)) + create_recipes() + chosen_recipe = tgui_input_list(user, "Choose a recipe to focus on.", name, pressurized_reaction_recipes) + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/proc/create_recipes() + for(var/datum/pressurized_reaction/new_recipes as anything in subtypesof(/datum/pressurized_reaction)) + pressurized_reaction_recipes += new new_recipes + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/examine(mob/user) + . = ..() + if(chosen_recipe) + . += "[chosen_recipe.name] requires:" + for(var/datum/reagent/reagent as anything in chosen_recipe.required_reagents) + var/amount = reagents.get_reagent_amount(reagent) + . += "[reagent.name]: [amount] / [chosen_recipe.required_reagents[reagent]]" + . += "[chosen_recipe.required_pressure]kPa of pressure." + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/process_atmos() + if(!chosen_recipe) + return + + var/passes_all_chemicals = TRUE + for(var/datum/reagent/reagent as anything in chosen_recipe.required_reagents) + var/amount = reagents.get_reagent_amount(reagent) + if(amount < chosen_recipe.required_reagents[reagent]) + passes_all_chemicals = FALSE + break + if(!passes_all_chemicals) + return + var/datum/gas_mixture/mixture = airs[1] + var/pressure = mixture.return_pressure() + if(pressure < chosen_recipe.required_pressure) + return + + if(!processing) + playsound(get_turf(src), 'sound/effects/bubbles2.ogg', 25, TRUE) + var/list/seen = viewers(4, get_turf(src)) + var/iconhtml = icon2html(src, seen) + audible_message(span_notice("[iconhtml] The solution bubbles fiercely!")) + addtimer(CALLBACK(src, PROC_REF(create_recipe)), 7 SECONDS) + processing = TRUE + +/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/proc/create_recipe() + processing = FALSE + for(var/datum/reagent/reagent as anything in chosen_recipe.required_reagents) + reagents.remove_all_type(reagent, chosen_recipe.required_reagents[reagent]) + + for(var/datum/reagent/reagent as anything in chosen_recipe.outputs) + reagents.add_reagent(reagent, chosen_recipe.outputs[reagent]) + +/datum/component/plumbing/pressurized_reaction_chamber + demand_connects = NORTH + supply_connects = SOUTH + +/datum/component/plumbing/pressurized_reaction_chamber/Initialize(start=TRUE, _ducting_layer, _turn_connects=TRUE, datum/reagents/custom_receiver) + . = ..() + if(!istype(parent, /obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber)) + return COMPONENT_INCOMPATIBLE + +/datum/component/plumbing/pressurized_reaction_chamber/can_give(amount, reagent, datum/ductnet/net) + . = ..() + var/obj/machinery/plumbing/reaction_chamber/reaction_chamber = parent + if(!. || !reaction_chamber.emptying || reagents.is_reacting == TRUE) + return FALSE + +/datum/component/plumbing/pressurized_reaction_chamber/send_request(dir) + var/obj/machinery/atmospherics/components/unary/pressurized_reaction_chamber/chamber = parent + if(!chamber.chosen_recipe) + return + + for(var/required_reagent in chamber.chosen_recipe.required_reagents) + var/has_reagent = FALSE + for(var/datum/reagent/containg_reagent as anything in reagents.reagent_list) + if(required_reagent == containg_reagent.type) + has_reagent = TRUE + if(containg_reagent.volume + CHEMICAL_QUANTISATION_LEVEL < chamber.chosen_recipe.required_reagents[required_reagent]) + process_request(min(chamber.chosen_recipe.required_reagents[required_reagent] - containg_reagent.volume, MACHINE_REAGENT_TRANSFER) , required_reagent, dir) + return + if(!has_reagent) + process_request(min(chamber.chosen_recipe.required_reagents[required_reagent], MACHINE_REAGENT_TRANSFER), required_reagent, dir) + return diff --git a/monkestation/code/modules/factory_type_beat/machinery/brine_chamber.dm b/monkestation/code/modules/factory_type_beat/machinery/brine_chamber.dm new file mode 100644 index 000000000000..45fa27f2bde3 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/brine_chamber.dm @@ -0,0 +1,144 @@ +/obj/structure/brine_chamber + name = "brine chamber" + desc = "Converts water into brine." + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "brine_chamber" + density = TRUE + anchored = TRUE + can_atmos_pass = ATMOS_PASS_NO + + +//pain +/obj/structure/brine_chamber/proc/assert_sprite() + var/obj/structure/brine_chamber/above = locate(/obj/structure/brine_chamber) in get_step(src, NORTH) + var/obj/structure/brine_chamber/below = locate(/obj/structure/brine_chamber) in get_step(src, SOUTH) + var/obj/structure/brine_chamber/left = locate(/obj/structure/brine_chamber) in get_step(src, WEST) + var/obj/structure/brine_chamber/right = locate(/obj/structure/brine_chamber) in get_step(src, EAST) + + if(!above && !below) + icon_state = "brine_chamber" + return + if(above && below) + icon_state = "brine_chamber_vertical" + return + if((above || below) && (left || right)) + icon_state = "brine_corner" + if(above && left) + dir = NORTH + if(above && right) + dir = SOUTH + if(below && left) + dir = WEST + if(below && right) + dir = EAST + +/obj/structure/brine_chamber/controller/assert_sprite() + return + +/obj/structure/brine_chamber/Initialize(mapload) + . = ..() + AddElement(/datum/element/give_turf_traits, string_list(list(TRAIT_BLOCK_LIQUID_SPREAD))) + +/obj/structure/brine_chamber/controller + icon_state = "brine_chamber_controller" + + var/list/turfs = list() + var/list/walls = list() + var/process_count = 0 + +/obj/structure/brine_chamber/controller/Initialize(mapload) + . = ..() + var/turf/our_turf = get_turf(src) + var/turf/inner_turf = get_step(src, NORTH) + inner_turf = get_step(inner_turf, EAST) + var/list/spawn_turfs = CORNER_OUTLINE(inner_turf, 2, 2) + var/list/full_turfs = CORNER_BLOCK(our_turf, 4, 4) + turfs = full_turfs - spawn_turfs + + for(var/turf/spawned_turf in spawn_turfs) + if(spawned_turf == our_turf) + continue + if(spawned_turf.is_blocked_turf(TRUE)) + repack() + break + var/obj/structure/brine_chamber/new_piece = new (spawned_turf) + walls += new_piece + for(var/obj/structure/brine_chamber/chamber as anything in walls) + chamber.assert_sprite() + + create_reagents(3000, TRANSPARENT) + AddComponent(/datum/component/plumbing/brine_controller) + AddComponent(/datum/component/plumbing/chemical_washer_water) + AddElement(/datum/element/repackable, item_to_pack_into = /obj/item/flatpacked_machine/ore_processing/brine_chamber, repacking_time = 3 SECONDS) + + START_PROCESSING(SSobj, src) + +/obj/structure/brine_chamber/controller/Destroy() + . = ..() + repack(TRUE) + +/obj/structure/brine_chamber/controller/process(seconds_per_tick) + if(process_count < 10) + process_count++ + return + process_count = 0 + + var/turf/inside_turf = pick(turfs) + if(reagents.total_volume) + inside_turf.add_liquid_from_reagents(reagents, FALSE, reagents.chem_temp, reagents.total_volume) + reagents.remove_all(reagents.total_volume) + if(!inside_turf?.liquids) + return + var/water_volume = inside_turf.liquids.liquid_group.reagents.get_reagent_amount(/datum/reagent/water) + inside_turf.liquids.liquid_group.reagents.remove_all_type(/datum/reagent/water, water_volume * 0.1) + inside_turf.add_liquid(/datum/reagent/brine, water_volume * 0.1, FALSE, 300) + + +/obj/structure/brine_chamber/controller/proc/repack(from_destroy = FALSE) + for(var/atom/movable/wall as anything in walls) + walls -= wall + qdel(wall) + if(!from_destroy) + new/obj/item/flatpacked_machine/ore_processing/brine_chamber(src.drop_location()) + turfs = null + + +/datum/component/plumbing/brine_controller + supply_connects = SOUTH + supply_color = COLOR_GREEN + extend_pipe_to_edge = TRUE + + ducting_layer = FOURTH_DUCT_LAYER + + +///returns TRUE when they can give the specified amount and reagent. called by process request +/datum/component/plumbing/brine_controller/can_give(amount, reagent, datum/ductnet/net) + if(amount <= 0) + return + var/obj/structure/brine_chamber/controller/host = parent + var/turf/inside_turf = pick(host.turfs) + if(!inside_turf.liquids) + return + + if(reagent) //only asked for one type of reagent + for(var/datum/reagent/contained_reagent as anything in inside_turf.liquids.liquid_group.reagents.reagent_list) + if(contained_reagent.type == reagent) + return TRUE + else if(inside_turf.liquids.liquid_group.reagents.total_volume) //take whatever + return TRUE + + return FALSE + +///this is where the reagent is actually transferred and is thus the finish point of our process() +/datum/component/plumbing/brine_controller/transfer_to(datum/component/plumbing/target, amount, reagent, datum/ductnet/net) + if(!target || !target.reagents) + return FALSE + var/obj/structure/brine_chamber/controller/host = parent + var/turf/inside_turf = pick(host.turfs) + if(!inside_turf.liquids) + return + + if(reagent) + inside_turf.liquids.liquid_group.transfer_specific_reagents(target.recipient_reagents_holder, amount, reagent) + else + inside_turf.liquids.liquid_group.transfer_specific_reagents(target.recipient_reagents_holder, amount, reagents_to_check = list(/datum/reagent/brine)) diff --git a/monkestation/code/modules/factory_type_beat/machinery/grabber.dm b/monkestation/code/modules/factory_type_beat/machinery/grabber.dm new file mode 100644 index 000000000000..21ef501f12bf --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/grabber.dm @@ -0,0 +1,506 @@ +/// Manipulator Core. Main part of the mechanism that carries out the entire process. +/obj/machinery/big_manipulator + name = "Big Manipulator" + desc = "Take and drop objects. Innovation..." + icon = 'monkestation/code/modules/factory_type_beat/icons/big_manipulator_core.dmi' + icon_state = "core" + density = TRUE + circuit = /obj/item/circuitboard/machine/big_manipulator + greyscale_colors = "#d8ce13" + greyscale_config = /datum/greyscale_config/big_manipulator + /// How many time manipulator need to take and drop item. + var/working_speed = 2 SECONDS + /// Using high tier manipulators speeds up big manipulator and requires more energy. + var/power_use_lvl = 0.2 + /// When manipulator already working with item inside he don't take any new items. + var/on_work = FALSE + /// Activate mechanism. + var/on = FALSE + /// Dir to get turf where we take items. + var/take_here = NORTH + /// Dir to get turf where we drop items. + var/drop_here = SOUTH + /// Turf where we take items. + var/turf/take_turf + /// Turf where we drop items. + var/turf/drop_turf + /// Obj inside manipulator. + var/datum/weakref/containment_obj + /// Other manipulator component. + var/obj/effect/big_manipulator_hand/manipulator_hand + ///are we hacked? + var/hacked = FALSE + ///our installed filter + var/obj/item/manipulator_filter/filter + ///our failed attempts + var/failed_attempts = 0 + var/atom/movable/failed_item + +/obj/machinery/big_manipulator/Initialize(mapload) + . = ..() + take_turf = get_step(src, take_here) + drop_turf = get_step(src, drop_here) + create_manipulator_hand() + RegisterSignal(manipulator_hand, COMSIG_QDELETING, PROC_REF(on_hand_qdel)) + manipulator_lvl() + +/obj/machinery/big_manipulator/Destroy(force) + . = ..() + failed_item = null + if(filter) + filter.forceMove(get_turf(src)) + filter = null + qdel(manipulator_hand) + if(isnull(containment_obj)) + return + var/obj/obj_resolve = containment_obj?.resolve() + if(isnull(obj_resolve)) + return + obj_resolve.forceMove(get_turf(obj_resolve)) + + +/obj/machinery/big_manipulator/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + . = ..() + take_and_drop_turfs_check() + if(isnull(get_turf(src))) + qdel(manipulator_hand) + return + if(!manipulator_hand) + create_manipulator_hand() + manipulator_hand.forceMove(get_turf(src)) + +/obj/machinery/big_manipulator/wrench_act(mob/living/user, obj/item/tool) + . = ..() + default_unfasten_wrench(user, tool, time = 1 SECONDS) + return TRUE + +/obj/machinery/big_manipulator/wrench_act_secondary(mob/living/user, obj/item/tool) + . = ..() + if(on_work || on) + to_chat(user, span_warning("[src] is activated!")) + return + rotate_big_hand() + playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) + return TRUE + +/obj/machinery/big_manipulator/can_be_unfasten_wrench(mob/user, silent) + if(on_work || on) + to_chat(user, span_warning("[src] is activated!")) + return FAILED_UNFASTEN + return ..() + +/obj/machinery/big_manipulator/default_unfasten_wrench(mob/user, obj/item/wrench, time) + . = ..() + if(. == SUCCESSFUL_UNFASTEN) + take_and_drop_turfs_check() + +/obj/machinery/big_manipulator/screwdriver_act(mob/living/user, obj/item/tool) + if(default_deconstruction_screwdriver(user, icon_state, icon_state, tool)) + return TRUE + return TRUE + +/obj/machinery/big_manipulator/crowbar_act(mob/living/user, obj/item/tool) + . = ..() + if(default_deconstruction_crowbar(tool)) + return TRUE + return TRUE + +/obj/machinery/big_manipulator/RefreshParts() + . = ..() + + manipulator_lvl() + +/// Creat manipulator hand effect on manipulator core. +/obj/machinery/big_manipulator/proc/create_manipulator_hand() + manipulator_hand = new/obj/effect/big_manipulator_hand(get_turf(src)) + manipulator_hand.dir = take_here + +/// Check servo tier and change manipulator speed, power_use and colour. +/obj/machinery/big_manipulator/proc/manipulator_lvl() + var/datum/stock_part/manipulator/locate_servo = locate() in component_parts + if(!locate_servo) + return + switch(locate_servo.tier) + if(1) + working_speed = 2 SECONDS + power_use_lvl = 0.2 + set_greyscale(COLOR_YELLOW) + manipulator_hand?.set_greyscale(COLOR_YELLOW) + if(2) + working_speed = 1.4 SECONDS + power_use_lvl = 0.4 + set_greyscale(COLOR_ORANGE) + manipulator_hand?.set_greyscale(COLOR_ORANGE) + if(3) + working_speed = 0.8 SECONDS + power_use_lvl = 0.6 + set_greyscale(COLOR_RED) + manipulator_hand?.set_greyscale(COLOR_RED) + if(4) + working_speed = 0.2 SECONDS + power_use_lvl = 0.8 + set_greyscale(COLOR_PURPLE) + manipulator_hand?.set_greyscale(COLOR_PURPLE) + + active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * power_use_lvl + +/// Changing take and drop turf tiles when we anchore manipulator or if manipulator not in turf. +/obj/machinery/big_manipulator/proc/take_and_drop_turfs_check() + if(anchored && isturf(src.loc)) + take_turf = get_step(src, take_here) + drop_turf = get_step(src, drop_here) + else + take_turf = null + drop_turf = null + +/// Changing take and drop turf dirs and also changing manipulator hand sprite dir. +/obj/machinery/big_manipulator/proc/rotate_big_hand() + switch(take_here) + if(NORTH) + manipulator_hand.item_x = 64 + manipulator_hand.item_y = 32 + take_here = EAST + drop_here = WEST + if(EAST) + manipulator_hand.item_x = 32 + manipulator_hand.item_y = 0 + take_here = SOUTH + drop_here = NORTH + if(SOUTH) + manipulator_hand.item_x = 0 + manipulator_hand.item_y = 32 + take_here = WEST + drop_here = EAST + if(WEST) + manipulator_hand.item_x = -32 + manipulator_hand.item_y = 0 + take_here = NORTH + drop_here = SOUTH + manipulator_hand.dir = take_here + take_and_drop_turfs_check() + +/// Deliting hand will destroy our manipulator core. +/obj/machinery/big_manipulator/proc/on_hand_qdel() + SIGNAL_HANDLER + + deconstruct(TRUE) + +/// Pre take and drop proc from [take and drop procs loop]: +/// Check if we have item on take_turf to start take and drop loop +/obj/machinery/big_manipulator/proc/is_work_check() + if(filter) + var/atom/movable = filter_return() + if(movable) + try_take_thing(take_turf, movable) + return + + if(hacked) + for(var/mob/living/take_item in take_turf.contents) + try_take_thing(take_turf, take_item) + break + for(var/obj/take_item in take_turf.contents) + if(take_item.anchored) + continue + try_take_thing(take_turf, take_item) + break + +/obj/machinery/big_manipulator/proc/filter_return() + if(!filter) + return null + for(var/atom/movable/listed in take_turf.contents) + if(filter.check_filter(listed)) + return listed + +/// First take and drop proc from [take and drop procs loop]: +/// Check if we can take item from take_turf to work with him. This proc also calling from ATOM_ENTERED signal. +/obj/machinery/big_manipulator/proc/try_take_thing(datum/source, atom/movable/target) + SIGNAL_HANDLER + if(target == failed_item) + failed_item = null + return + + if(!on) + return + if(!anchored) + return + if(QDELETED(source) || QDELETED(target)) + return + if(on_work) + return + if(!directly_use_power(active_power_usage)) + on = FALSE + say("Not enough energy!") + return + failed_item = null + + if(filter) + if(passes_filter(target)) + start_work(target) + return + + if(isitem(target) || (isliving(target) && hacked) || (isobj(target) && !target.anchored)) + start_work(target) + +/obj/machinery/big_manipulator/proc/passes_filter(atom/movable/target) + if(!filter) + return FALSE + return filter.check_filter(target) + +/// Second take and drop proc from [take and drop procs loop]: +/// Taking our item and start manipulator hand rotate animation. +/obj/machinery/big_manipulator/proc/start_work(atom/movable/target) + target.forceMove(src) + containment_obj = WEAKREF(target) + manipulator_hand.picked = target + manipulator_hand.update_appearance() + on_work = TRUE + do_rotate_animation(1) + addtimer(CALLBACK(src, PROC_REF(drop_thing), target), working_speed) + +/// Third take and drop proc from [take and drop procs loop]: +/// Drop our item and start manipulator hand backward animation. +/obj/machinery/big_manipulator/proc/drop_thing(atom/movable/target) + if(!drop_turf.can_drop_off(target)) + failed_attempts++ + if(failed_attempts >= 10) + do_rotate_animation(0) + addtimer(CALLBACK(src, PROC_REF(end_work_failed), target), working_speed) + return + addtimer(CALLBACK(src, PROC_REF(drop_thing), target), working_speed) + return + failed_attempts = 0 + target.forceMove(drop_turf) + manipulator_hand.picked = null + manipulator_hand.update_appearance() + do_rotate_animation(0) + addtimer(CALLBACK(src, PROC_REF(end_work)), working_speed) + +/// Fourth and last take and drop proc from take and drop procs loop: +/// Finishes work and begins to look for a new item for [take and drop procs loop]. +/obj/machinery/big_manipulator/proc/end_work() + on_work = FALSE + is_work_check() + +/obj/machinery/big_manipulator/proc/end_work_failed(atom/movable/target) + target.forceMove(take_turf) + failed_item = target + manipulator_hand.picked = null + manipulator_hand.update_appearance() + on_work = FALSE + failed_attempts = 0 + is_work_check() + +/// Rotates manipulator hand 90 degrees. +/obj/machinery/big_manipulator/proc/do_rotate_animation(backward) + animate(manipulator_hand, transform = matrix(90, MATRIX_ROTATE), working_speed*0.5) + addtimer(CALLBACK(src, PROC_REF(finish_rotate_animation), backward), working_speed*0.5) + +/// Rotates manipulator hand from 90 degrees to 180 or 0 if backward. +/obj/machinery/big_manipulator/proc/finish_rotate_animation(backward) + animate(manipulator_hand, transform = matrix(180 * backward, MATRIX_ROTATE), working_speed*0.5) + +/obj/machinery/big_manipulator/ui_interact(mob/user, datum/tgui/ui) + if(!anchored) + to_chat(user, span_warning("[src] isn't attached to the ground!")) + return + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "BigManipulator") + ui.open() + +/obj/machinery/big_manipulator/AltClick(mob/user) + . = ..() + if(!filter) + return + filter.forceMove(get_turf(src)) + filter = null + +/obj/machinery/big_manipulator/ui_data(mob/user) + var/list/data = list() + data["active"] = on + return data + +/obj/machinery/big_manipulator/ui_act(action, params, datum/tgui/ui) + . = ..() + if(.) + return + switch(action) + if("on") + on = !on + if(on) + RegisterSignal(take_turf, COMSIG_ATOM_ENTERED, PROC_REF(try_take_thing)) + else + UnregisterSignal(take_turf, COMSIG_ATOM_ENTERED) + is_work_check() + return TRUE + +/// Manipulator hand. Effect we animate to show that the manipulator is working and moving something. +/obj/effect/big_manipulator_hand + name = "Manipulator claw" + desc = "Take and drop objects. Innovation..." + icon = 'monkestation/code/modules/factory_type_beat/icons/big_manipulator_hand.dmi' + icon_state = "hand" + layer = LOW_ITEM_LAYER + anchored = TRUE + appearance_flags = KEEP_TOGETHER | LONG_GLIDE | TILE_BOUND | PIXEL_SCALE + greyscale_config = /datum/greyscale_config/manipulator_hand + pixel_x = -32 + pixel_y = -32 + + ///item offset x + var/item_x = 32 + var/item_y = 64 + var/atom/movable/picked + +/obj/effect/big_manipulator_hand/update_overlays() + . = ..() + if(picked) + var/mutable_appearance/ma = mutable_appearance(picked.icon, picked.icon_state, picked.layer, src, appearance_flags = KEEP_TOGETHER) + ma.color = picked.color + ma.appearance = picked.appearance + ma.appearance_flags = appearance_flags + ma.plane = plane + ma.pixel_x = item_x + ma.pixel_y = item_y + . += ma + +/turf/proc/can_drop_off(atom/movable/target) + if(isclosedturf(src)) + return FALSE + for(var/obj/structure/listed in contents) + if(!listed.can_drop_off(target)) + return FALSE + for(var/obj/machinery/listed in contents) + if(!listed.can_drop_off(target)) + return FALSE + + return TRUE + +/obj/structure/proc/can_drop_off(atom/movable/target) + return TRUE + +/obj/machinery/proc/can_drop_off(atom/movable/target) + return TRUE + + +/obj/item/manipulator_filter + name = "manipulator filter" + desc = "A filter specifically designed to work inside of a manipulator." + + icon = 'monkestation/code/modules/factory_type_beat/icons/items.dmi' + icon_state = "filter" + + var/list/filtered_items = list() + var/max_filtered_items = 5 + + +/obj/item/manipulator_filter/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(istype(target, /obj/machinery/big_manipulator)) + try_attach(target) + return + + if(target == src) + return ..() + if(!proximity_flag) + return ..() + if(!ismovable(target)) + return ..() + if(istype(target, /obj/effect/decal/conveyor_sorter)) + return + if(is_type_in_list(target, filtered_items)) + to_chat(user, span_warning("[target] is already in [src]'s sorting list!")) + return + if(length(filtered_items) >= max_filtered_items) + to_chat(user, span_warning("[src] already has [max_filtered_items] things within the sorting list!")) + return + filtered_items += target.type + to_chat(user, span_notice("[target] has been added to [src]'s sorting list.")) + +/obj/item/manipulator_filter/examine(mob/user) + . = ..() + . += span_notice("This sorter can sort up to [max_filtered_items] Items.") + . += span_notice("Use Alt-Click to reset the sorting list.") + . += span_notice("Attack things to attempt to add to the sorting list.") + +/obj/item/manipulator_filter/AltClick(mob/user) + visible_message("[src] pings, resetting its sorting list!") + playsound(src, 'sound/machines/ping.ogg', 30, TRUE) + filtered_items = list() + +/obj/item/manipulator_filter/proc/try_attach(obj/machinery/big_manipulator/target) + if(target.filter) + return FALSE + target.filter = src + src.forceMove(target) + return TRUE + +/obj/item/manipulator_filter/proc/check_filter(atom/movable/target) + if(target.type in filtered_items) + return TRUE + return FALSE + + +/obj/item/manipulator_filter/cargo + name = "manipulator filter" + desc = "A filter specifically designed to work inside of a manipulator." + +/obj/item/manipulator_filter/cargo/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(istype(target, /obj/machinery/big_manipulator)) + try_attach(target) + return + +/obj/item/manipulator_filter/attack_self(mob/user, modifiers) + . = ..() + var/choice = tgui_input_list(user, "Add a destination to check", name, GLOB.TAGGERLOCATIONS - filtered_items) + if(!choice) + return + + if(length(filtered_items) >= max_filtered_items) + return + + filtered_items |= choice + +/obj/item/manipulator_filter/cargo/check_filter(atom/movable/target) + if(istype(target, /obj/item/delivery)) + var/obj/item/delivery/item = target + var/name_tag = GLOB.TAGGERLOCATIONS[item.sort_tag] + if(name_tag in filtered_items) + return TRUE + + if(istype(target, /obj/item/mail)) + var/obj/item/mail/item = target + var/name_tag = GLOB.TAGGERLOCATIONS[item.sort_tag] + if(name_tag in filtered_items) + return TRUE + + if(SEND_SIGNAL(target, COMSIG_FILTER_CHECK, filtered_items)) + return TRUE + + return FALSE + + +/obj/item/manipulator_filter/internal_filter + name = "internal filter" + desc = "Checks the contents inside of an object and if it matches any of the filters grabs the object" + +/obj/item/manipulator_filter/internal_filter/check_filter(atom/movable/target) + for(var/atom/movable/listed in target.contents) + if(listed.type in filtered_items) + return TRUE + return FALSE + + +/proc/departmental_destination_to_tag(destination) + switch(destination) + if(/area/station/engineering/main) + return "Engineering" + if(/area/station/science/research) + return "Research" + if(/area/station/hallway/secondary/service) + return "Hydroponics" + if(/area/station/service/bar/atrium) + return "Bar" + if(/area/station/security/office, /area/station/security/brig, /area/station/security/brig/upper) + return "Security" + if(/area/station/medical/medbay/central, /area/station/medical/medbay, /area/station/medical/treatment_center, /area/station/medical/storage) + return "Medbay" diff --git a/monkestation/code/modules/factory_type_beat/machinery/splitter.dm b/monkestation/code/modules/factory_type_beat/machinery/splitter.dm new file mode 100644 index 000000000000..14134a57a192 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/splitter.dm @@ -0,0 +1,55 @@ +/obj/structure/belt_splitter + name = "belt splitter" + desc = "takes an input from one side and tries to output it on any side that has a belt." + + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "splitter" + + anchored = TRUE + + var/current_split_number = 1 + + var/list/direction_order = list(NORTH, EAST, SOUTH, WEST) + +/obj/structure/belt_splitter/Initialize(mapload) + . = ..() + var/static/list/loc_connections = list( + COMSIG_ATOM_ENTERED = PROC_REF(try_split), + ) + AddComponent(/datum/component/connect_loc_behalf, src, loc_connections) + AddComponent(/datum/component/simple_rotation) + +/obj/structure/belt_splitter/Destroy() + . = ..() + +/obj/structure/belt_splitter/setDir() + . = ..() + rebuild_directions() + +/obj/structure/belt_splitter/wrench_act(mob/living/user, obj/item/tool) + . = ..() + default_unfasten_wrench(user, tool) + return TOOL_ACT_TOOLTYPE_SUCCESS + +/obj/structure/belt_splitter/proc/rebuild_directions() + direction_order = list(NORTH, EAST, SOUTH, WEST) + direction_order -= dir + +/obj/structure/belt_splitter/proc/try_split(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) + if(arrived.anchored) + return + var/not_passed = TRUE + var/failed_attempts = 0 + while(not_passed && failed_attempts < 10) + failed_attempts++ + var/direction = direction_order[current_split_number] + current_split_number++ + if(current_split_number > length(direction_order)) + current_split_number = 1 + if(direction == dir) + direction = direction_order[current_split_number] + + if(!(locate(/obj/machinery/conveyor) in get_step(src, direction))) + continue + arrived.forceMove(get_step(src, direction)) + not_passed = FALSE diff --git a/monkestation/code/modules/factory_type_beat/machinery/test_boulder_spawner.dm b/monkestation/code/modules/factory_type_beat/machinery/test_boulder_spawner.dm new file mode 100644 index 000000000000..24704dc1a767 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/machinery/test_boulder_spawner.dm @@ -0,0 +1,21 @@ +/obj/structure/test_boulder_spawner + name = "DEBUG BOULDER SPAWNER" + desc = "... Why? How?" + + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "unloader-corner" + + var/spawn_dir = EAST + + var/processing = FALSE + +/obj/structure/test_boulder_spawner/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(!processing) + START_PROCESSING(SSobj, src) + else + STOP_PROCESSING(SSobj, src) + +/obj/structure/test_boulder_spawner/process(seconds_per_tick) + var/atom/movable/new_item = new /obj/item/boulder/gulag_expanded(get_turf(src)) + new_item.forceMove(get_step(src, spawn_dir)) diff --git a/monkestation/code/modules/factory_type_beat/map_templates.dm b/monkestation/code/modules/factory_type_beat/map_templates.dm new file mode 100644 index 000000000000..1efe3376dcf2 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/map_templates.dm @@ -0,0 +1,30 @@ + +/datum/map_template/ruin/icemoon/underground/vent + name = "Icemoon Ore Vent" + id = "ore_vent_i" + description = "A vent that spews out ore. Seems to be a natural phenomenon." //Make this a subtype that only spawns medium and large vents. Some smalls will go to the top level. + suffix = "icemoon_underground_ore_vent.dmm" + allow_duplicates = TRUE + cost = 0 + mineral_cost = 1 + always_place = TRUE + +/datum/map_template/ruin/icemoon/ruin/vent + name = "Surface Icemoon Ore Vent" + id = "ore_vent_i" + description = "A vent that spews out ore. Seems to be a natural phenomenon. Smaller than the underground ones." + suffix = "icemoon_surface_ore_vent.dmm" + allow_duplicates = TRUE + cost = 0 + mineral_cost = 1 + always_place = TRUE + +/datum/map_template/ruin/lavaland/vent + name = "Ore Vent" + id = "ore_vent" + description = "A vent that spews out ore. Seems to be a natural phenomenon." + suffix = "lavaland_surface_ore_vent.dmm" + allow_duplicates = TRUE + cost = 0 + mineral_cost = 1 + always_place = TRUE diff --git a/monkestation/code/modules/factory_type_beat/mobs/node_drone.dm b/monkestation/code/modules/factory_type_beat/mobs/node_drone.dm new file mode 100644 index 000000000000..aeeb88729ccb --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/mobs/node_drone.dm @@ -0,0 +1,154 @@ +#define FLY_IN_STATE 1 +#define FLY_OUT_STATE 2 +#define NEUTRAL_STATE 3 + +/** + * Mining drones that are spawned when starting a ore vent's wave defense minigame. + * They will latch onto the vent to defend it from lavaland mobs, and will flee if attacked by lavaland mobs. + * If the drone survives, they will fly away to safety as the vent spawns ores. + * If the drone dies, the wave defense will fail. + */ + +/mob/living/basic/node_drone + name = "NODE drone" + desc = "Standard in-atmosphere drone, used by Nanotrasen to operate and excavate valuable ore vents." + icon = 'monkestation/code/modules/factory_type_beat/icons/mining.dmi' + icon_state = "mining_node_active" + icon_living = "mining_node_active" + icon_dead = "mining_node_active" + + maxHealth = 500 + health = 500 + density = TRUE + pass_flags = PASSTABLE|PASSGRILLE|PASSMOB + mob_size = MOB_SIZE_LARGE + mob_biotypes = MOB_ROBOTIC + faction = list(FACTION_STATION, FACTION_NEUTRAL) + light_outer_range = 4 + basic_mob_flags = DEL_ON_DEATH + + speak_emote = list("chirps") + response_help_continuous = "pets" + response_help_simple = "pet" + response_disarm_continuous = "gently pushes aside" + response_disarm_simple = "gently push aside" + response_harm_continuous = "clangs" + response_harm_simple = "clang against" + + ai_controller = /datum/ai_controller/basic_controller/node_drone + + /// Is the drone currently attached to a vent? + var/active_node = FALSE + /// What status do we currently track for icon purposes? + var/flying_state = NEUTRAL_STATE + /// Weakref to the vent the drone is currently attached to. + var/obj/structure/ore_vent/attached_vent = null + /// Set when the drone is begining to leave lavaland after the vent is secured. + var/escaping = FALSE + +/mob/living/basic/node_drone/death(gibbed) + . = ..() + explosion(origin = src, light_impact_range = 1, smoke = 1) + +/mob/living/basic/node_drone/Destroy() + attached_vent?.node = null //clean our reference to the vent both ways. + attached_vent = null + return ..() + + +/mob/living/basic/node_drone/examine(mob/user) + . = ..() + var/sameside = user.faction_check_atom(src, exact_match = FALSE) + if(sameside) + . += span_notice("This drone is currently attached to a mineral vent. You should protect it from harm to secure the mineral vent.") + else + . += span_warning("This vile Nanotrasen trash is trying to destroy the environment. Attack it to free the mineral vent from its grasp.") + +/mob/living/basic/node_drone/update_icon_state() + . = ..() + + icon_state = "mining_node_active" + + if(flying_state == FLY_IN_STATE || flying_state == FLY_OUT_STATE) + icon_state = "mining_node_flying" + +/mob/living/basic/node_drone/proc/arrive(obj/structure/ore_vent/parent_vent) + attached_vent = parent_vent + flying_state = FLY_IN_STATE + update_appearance(UPDATE_ICON_STATE) + pixel_z = 400 + animate(src, pixel_z = 0, time = 2 SECONDS, easing = QUAD_EASING|EASE_OUT, flags = ANIMATION_PARALLEL) + + +/** + * Called when wave defense is completed. Visually flicks the escape sprite and then deletes the mob. + */ +/mob/living/basic/node_drone/proc/escape() + var/funny_ending = FALSE + flying_state = FLY_OUT_STATE + update_appearance(UPDATE_ICON_STATE) + if(prob(1)) + say("I have to go now, my planet needs me.") + funny_ending = TRUE + visible_message(span_notice("The drone flies away to safety as the vent is secured.")) + animate(src, pixel_z = 400, time = 2 SECONDS, easing = QUAD_EASING|EASE_IN, flags = ANIMATION_PARALLEL) + sleep(2 SECONDS) + if(funny_ending) + playsound(src, 'sound/effects/explosion3.ogg', 50, FALSE) //node drone died on the way back to his home planet. + visible_message(span_notice("...or maybe not.")) + qdel(src) + + +/mob/living/basic/node_drone/proc/pre_escape() + if(attached_vent) + attached_vent.unbuckle_mob(src) + attached_vent = null + if(!escaping) + escaping = TRUE + flick("mining_node_escape", src) + addtimer(CALLBACK(src, PROC_REF(escape)), 1.9 SECONDS) + return + +/// The node drone AI controller +// Generally, this is a very simple AI that will try to find a vent and latch onto it, unless attacked by a lavaland mob, who it will try to flee from. +/datum/ai_controller/basic_controller/node_drone + blackboard = list( + BB_BASIC_MOB_FLEEING = FALSE, // Will flee when the vent lies undefended. + BB_CURRENT_HUNTING_TARGET = null, // Hunts for vents. + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, // Use this to find vents to run away from + ) + + ai_traits = STOP_MOVING_WHEN_PULLED + ai_movement = /datum/ai_movement/basic_avoidance + idle_behavior = null + planning_subtrees = list( + // Priority is see if lavaland mobs are attacking us to flee from them. + /datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee, + // Fly you fool + /datum/ai_planning_subtree/flee_target/node_drone, + // Otherwise, look for and execute hunts for vents to latch onto. + /datum/ai_planning_subtree/find_and_hunt_target/look_for_vent, + ) + +// Node subtree to hunt down ore vents. +/datum/ai_planning_subtree/find_and_hunt_target/look_for_vent + hunting_behavior = /datum/ai_behavior/hunt_target/latch_onto/node_drone + hunt_targets = list(/obj/structure/ore_vent) + hunt_range = 7 // Hunt vents to the end of the earth. + +// node drone behavior for buckling down on a vent. +/datum/ai_behavior/hunt_target/latch_onto/node_drone + hunt_cooldown = 5 SECONDS + +// Evasion behavior. +/datum/ai_planning_subtree/flee_target/node_drone + flee_behaviour = /datum/ai_behavior/run_away_from_target/drone + +/datum/ai_behavior/run_away_from_target/drone + action_cooldown = 1 SECONDS + run_distance = 3 + + +#undef FLY_IN_STATE +#undef FLY_OUT_STATE +#undef NEUTRAL_STATE diff --git a/monkestation/code/modules/factory_type_beat/ore_vent.dm b/monkestation/code/modules/factory_type_beat/ore_vent.dm new file mode 100644 index 000000000000..cfb933cedd8b --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/ore_vent.dm @@ -0,0 +1,525 @@ +#define MAX_ARTIFACT_ROLL_CHANCE 10 +#define MINERAL_TYPE_OPTIONS_RANDOM 4 +#define OVERLAY_OFFSET_START 0 +#define OVERLAY_OFFSET_EACH 5 +#define MINERALS_PER_BOULDER 3 + +/obj/structure/ore_vent + name = "ore vent" + desc = "An ore vent, brimming with underground ore. Scan with an advanced mining scanner to start extracting ore from it." + icon = 'monkestation/code/modules/factory_type_beat/icons/terrain.dmi' + icon_state = "ore_vent" + move_resist = MOVE_FORCE_EXTREMELY_STRONG + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF //This thing will take a beating. + anchored = TRUE + density = TRUE + can_buckle = TRUE + + /// Has this vent been tapped to produce boulders? Cannot be untapped. + var/tapped = FALSE + /// Has this vent been scanned by a mining scanner? Cannot be scanned again. Adds ores to the vent's description. + var/discovered = FALSE + /// Is this type of vent exempt from the 15 vent limit? Think the free iron/glass vent or boss vents. This also causes it to not roll for random mineral breakdown. + var/unique_vent = FALSE + /// What icon_state do we use when the ore vent has been tapped? + var/icon_state_tapped = "ore_vent_active" + + /// A weighted list of what minerals are contained in this vent, with weight determining how likely each mineral is to be picked in produced boulders. + var/list/mineral_breakdown = list() + /// What size boulders does this vent produce? + var/boulder_size = BOULDER_SIZE_SMALL + /// Reference to this ore vent's NODE drone, to track wave success. + var/mob/living/basic/node_drone/node = null //this path is a placeholder. + /// String containing the formatted list of ores that this vent can produce, and who first discovered this vent. + var/ore_string = "" + /// Associated list of vent size weights to pick from. + var/list/ore_vent_options = list( + LARGE_VENT_TYPE = 3, + MEDIUM_VENT_TYPE = 5, + SMALL_VENT_TYPE = 7, + ) + + /// What string do we use to warn the player about the excavation event? + var/excavation_warning = "Are you ready to excavate this ore vent?" + ///Are we currently spawning mobs? + var/spawning_mobs = FALSE + /// A list of mobs that can be spawned by this vent during a wave defense event. + var/list/defending_mobs = list( + /mob/living/basic/mining/goliath, + /mob/living/basic/mining/legion/spawner_made, + /mob/living/basic/mining/watcher, + /mob/living/basic/mining/lobstrosity/lava, + /mob/living/basic/mining/brimdemon, + /mob/living/basic/mining/bileworm, + ) + ///What items can be used to scan a vent? + var/static/list/scanning_equipment = list( + /obj/item/t_scanner/adv_mining_scanner, + /obj/item/mining_scanner, + ) + + /// What base icon_state do we use for this vent's boulders? + var/boulder_icon_state = "boulder" + /// Percent chance that this vent will produce an artifact boulder. + var/artifact_chance = 0 + /// We use a cooldown to prevent the wave defense from being started multiple times. + COOLDOWN_DECLARE(wave_cooldown) + COOLDOWN_DECLARE(manual_vent_cooldown) + COOLDOWN_DECLARE(next_attack) + + +/obj/structure/ore_vent/Initialize(mapload) + if(mapload) + generate_description() + register_context() + SSore_generation.possible_vents += src + boulder_icon_state = pick(list( + "boulder", + "rock", + "stone", + )) + if(tapped) + SSore_generation.processed_vents += src + icon_state = icon_state_tapped + update_appearance(UPDATE_ICON_STATE) + add_overlay(mutable_appearance('monkestation/code/modules/factory_type_beat/icons/terrain.dmi', "well", ABOVE_MOB_LAYER, src, ABOVE_MOB_LAYER)) + return ..() + +/obj/structure/ore_vent/Destroy() + SSore_generation.possible_vents -= src + node = null + if(tapped) + SSore_generation.processed_vents -= src + return ..() + +/obj/structure/ore_vent/attackby(obj/item/attacking_item, mob/user, params) + . = ..() + if(.) + return TRUE + if(!is_type_in_list(attacking_item, scanning_equipment)) + return TRUE + if(tapped) + balloon_alert_to_viewers("vent tapped!") + return TRUE + scan_and_confirm(user) + return TRUE + +/obj/structure/ore_vent/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(.) + return + if(!HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + return + if(!discovered) + to_chat(user, span_notice("You can't quite find the weakpoint of [src]... Perhaps it needs to be scanned first?")) + return + to_chat(user, span_notice("You start striking [src] with your golem's fist, attempting to dredge up a boulder...")) + for(var/i in 1 to 3) + if(do_after(user, boulder_size * 1 SECONDS, src)) + user.apply_damage(20, STAMINA) + playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE) + produce_boulder(TRUE) + visible_message(span_notice("You've successfully produced a boulder! Boy are your arms tired.")) + +/obj/structure/ore_vent/attack_basic_mob(mob/user, list/modifiers) + . = ..() + if(!HAS_TRAIT(user, TRAIT_BOULDER_BREAKER)) + return + produce_boulder(TRUE) + +/obj/structure/ore_vent/is_buckle_possible(mob/living/target, force, check_loc) + . = ..() + if(tapped) + return FALSE + if(istype(target, /mob/living/basic/node_drone)) + return TRUE + +/obj/structure/ore_vent/examine(mob/user) + . = ..() + if(discovered) + switch(boulder_size) + if(BOULDER_SIZE_SMALL) + . += span_notice("This vent produces [span_bold("small")] boulders containing [ore_string]") + if(BOULDER_SIZE_MEDIUM) + . += span_notice("This vent produces [span_bold("medium")] boulders containing [ore_string]") + if(BOULDER_SIZE_LARGE) + . += span_notice("This vent produces [span_bold("large")] boulders containing [ore_string]") + else + . += span_notice("This vent can be scanned with a [span_bold("Mining Scanner")].") + +/obj/structure/ore_vent/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + if(is_type_in_list(held_item, scanning_equipment)) + context[SCREENTIP_CONTEXT_LMB] = "Scan vent" + return CONTEXTUAL_SCREENTIP_SET + + +/** + * This proc is called when the ore vent is initialized, in order to determine what minerals boulders it spawns can contain. + * The materials available are determined by SSore_generation.ore_vent_minerals, which is a list of all minerals that can be contained in ore vents for a given cave generation. + * As a result, minerals use a weighted list as seen by ore_vent_minerals_lavaland, which is then copied to ore_vent_minerals. + * Once a material is picked from the weighted list, it's removed from ore_vent_minerals, so that it can't be picked again and provided it's own internal weight used when assigning minerals to boulders spawned by this vent. + * May also be called after the fact, as seen in SSore_generation's initialize, to add more minerals to an existing vent. + * + * The above applies only when spawning in at mapload, otherwise we pick randomly from ore_vent_minerals_lavaland. + * + * @params new_minerals How many minerals should be added to this vent? Defaults to MINERAL_TYPE_OPTIONS_RANDOM, which is 4. + * @params map_loading Is this vent being spawned in at mapload? If so, we use the ore_generation subsystem's ore_vent_minerals list to pick minerals. Otherwise, we pick randomly from ore_vent_minerals_lavaland. + */ +/obj/structure/ore_vent/proc/generate_mineral_breakdown(new_minerals = MINERAL_TYPE_OPTIONS_RANDOM, map_loading = FALSE) + if(new_minerals < 1) + CRASH("generate_mineral_breakdown called with new_minerals < 1.") + var/list/available_mats = difflist(first = SSore_generation.ore_vent_minerals, second = mineral_breakdown, skiprep = 1) + for(var/i in 1 to new_minerals) + if(!length(SSore_generation.ore_vent_minerals) && map_loading) + // We should prevent this from happening in SSore_generation, but if not then we crash here + CRASH("No minerals left to pick from! We may have spawned too many ore vents in init, or the map config in seedRuins may not have enough resources for the mineral budget.") + var/datum/material/new_material + if(map_loading) + if(length(available_mats)) + new_material = pick(GLOB.ore_vent_minerals_lavaland) + var/datum/material/surrogate_mat = pick(SSore_generation.ore_vent_minerals) + available_mats -= surrogate_mat + SSore_generation.ore_vent_minerals -= surrogate_mat + else + new_material = pick(available_mats) + available_mats -= new_material + SSore_generation.ore_vent_minerals -= new_material + else + new_material = pick(GLOB.ore_vent_minerals_lavaland) + mineral_breakdown[new_material] = rand(1, 4) + + +/** + * Returns the quantity of mineral sheets in each ore vent's boulder contents roll. + * First roll can produce the most ore, with subsequent rolls scaling lower logarithmically. + * Inversely scales with ore_floor, so that the first roll is the largest, and subsequent rolls are smaller. + * (1 -> from 16 to 7 sheets of materials, and 3 -> from 8 to 6 sheets of materials on a small vent) + * This also means a large boulder can highroll a boulder with a full stack of 50 sheets of material. + * @params ore_floor The number of minerals already rolled. Used to scale the logarithmic function. + */ +/obj/structure/ore_vent/proc/ore_quantity_function(ore_floor) + return SHEET_MATERIAL_AMOUNT * round(boulder_size * (log(rand(1 + ore_floor, 4 + ore_floor)) ** -1)) + +/** + * Starts the wave defense event, which will spawn a number of lavaland mobs based on the size of the ore vent. + * Called after the vent has been tapped by a scanning device. + * Will summon a number of waves of mobs, ending in the vent being tapped after the final wave. + */ +/obj/structure/ore_vent/proc/start_wave_defense() + AddComponent(\ + /datum/component/spawner, \ + spawn_types = defending_mobs, \ + spawn_time = (10 SECONDS + (5 SECONDS * (boulder_size/5))), \ + max_spawned = 10, \ + max_spawn_per_attempt = (1 + (boulder_size/5)), \ + spawn_text = "emerges to assault", \ + spawn_distance = 4, \ + spawn_distance_exclude = 3, \ + ) + var/wave_timer = 60 SECONDS + if(boulder_size == BOULDER_SIZE_MEDIUM) + wave_timer = 90 SECONDS + else if(boulder_size == BOULDER_SIZE_LARGE) + wave_timer = 150 SECONDS + COOLDOWN_START(src, wave_cooldown, wave_timer) + addtimer(CALLBACK(src, PROC_REF(handle_wave_conclusion)), wave_timer) + spawning_mobs = TRUE + icon_state = icon_state_tapped + update_appearance(UPDATE_ICON_STATE) + +/** + * Called when the wave defense event ends, after a variable amount of time in start_wave_defense. + * + * If the node drone is still alive, the ore vent is tapped and the ore vent will begin generating boulders. + * If the node drone is dead, the ore vent is not tapped and the wave defense can be reattempted. + * + * Also gives xp and mining points to all nearby miners in equal measure. + */ +/obj/structure/ore_vent/proc/handle_wave_conclusion() + SEND_SIGNAL(src, COMSIG_SPAWNER_STOP_SPAWNING) + COOLDOWN_RESET(src, wave_cooldown) + particles = null + if(!QDELETED(node)) ///The Node Drone has survived the wave defense, and the ore vent is tapped. + tapped = TRUE + SSore_generation.processed_vents += src + balloon_alert_to_viewers("vent tapped!") + icon_state = icon_state_tapped + update_appearance(UPDATE_ICON_STATE) + else + visible_message(span_danger("\the [src] creaks and groans as the mining attempt fails, and the vent closes back up.")) + icon_state = initial(icon_state) + update_appearance(UPDATE_ICON_STATE) + return FALSE //Bad end, try again. + + for(var/mob/living/miner in range(7, src)) //Give the miners who are near the vent points and xp. + var/obj/item/card/id/user_id_card = miner.get_idcard(TRUE) + if(miner.stat <= SOFT_CRIT) + miner.mind?.adjust_experience(/datum/skill/mining, MINING_SKILL_BOULDER_SIZE_XP * boulder_size) + if(!user_id_card) + continue + var/point_reward_val = (MINER_POINT_MULTIPLIER * boulder_size) - MINER_POINT_MULTIPLIER // We remove the base value of discovering the vent + user_id_card.registered_account.mining_points += point_reward_val + user_id_card.registered_account.bank_card_talk("You have been awarded [point_reward_val] mining points for your efforts.") + node.pre_escape() //Visually show the drone is done and flies away. + add_overlay(mutable_appearance('monkestation/code/modules/factory_type_beat/icons/terrain.dmi', "well", ABOVE_MOB_LAYER, src, GAME_PLANE)) + +/** + * Called when the ore vent is tapped by a scanning device. + * Gives a readout of the ores available in the vent that gets added to the description, + * then asks the user if they want to start wave defense if it's already been discovered. + * @params user The user who tapped the vent. + * @params scan_only If TRUE, the vent will only scan, and not prompt to start wave defense. Used by the mech mineral scanner. + */ +/obj/structure/ore_vent/proc/scan_and_confirm(mob/living/user, scan_only = FALSE) + if(tapped) + balloon_alert_to_viewers("vent tapped!") + return + if(!COOLDOWN_FINISHED(src, wave_cooldown)) + balloon_alert_to_viewers("protect the node drone!") + return + if(scan_only) + discovered = TRUE + generate_description(user) + balloon_alert_to_viewers("vent scanned!") + return + if(!discovered) + balloon_alert(user, "scanning...") + playsound(src, 'sound/items/timer.ogg', 30, TRUE) + if(do_after(user, 4 SECONDS)) + discovered = TRUE + balloon_alert(user, "vent scanned!") + generate_description(user) + var/obj/item/card/id/user_id_card = user.get_idcard(TRUE) + if(isnull(user_id_card)) + return + user_id_card.registered_account.mining_points += (MINER_POINT_MULTIPLIER) + user_id_card.registered_account.bank_card_talk("You've been awarded [MINER_POINT_MULTIPLIER] mining points for discovery of an ore vent.") + return + + if(tgui_alert(user, excavation_warning, "Begin defending ore vent?", list("Yes", "No")) != "Yes") + return + if(!COOLDOWN_FINISHED(src, wave_cooldown)) + return + //This is where we start spitting out mobs. + Shake(duration = 3 SECONDS) + node = new /mob/living/basic/node_drone(loc) + node.arrive(src) + RegisterSignal(node, COMSIG_QDELETING, PROC_REF(handle_wave_conclusion)) + particles = new /particles/smoke/ash() + + for(var/i in 1 to 5) // Clears the surroundings of the ore vent before starting wave defense. + for(var/turf/closed/mineral/rock in oview(i)) + if(istype(rock, /turf/open/misc/asteroid) && prob(35)) // so it's too common + new /obj/effect/decal/cleanable/rubble(rock) + if(prob(100 - (i * 15))) + rock.gets_drilled(user, FALSE) + if(prob(50)) + new /obj/effect/decal/cleanable/rubble(rock) + sleep(0.6 SECONDS) + + start_wave_defense() + +/** + * Generates a description of the ore vent to ore_string, based on the minerals contained within it. + * Ore_string is passed to examine(). + */ +/obj/structure/ore_vent/proc/generate_description(mob/user) + for(var/mineral_count in 1 to length(mineral_breakdown)) + var/datum/material/resource = mineral_breakdown[mineral_count] + if(mineral_count == length(mineral_breakdown)) + ore_string += "and " + span_bold(initial(resource.name)) + "." + else + ore_string += span_bold(initial(resource.name)) + ", " + if(user) + ore_string += "\nThis vent was first discovered by [user]." +/** + * Adds floating temp_visual overlays to the vent, showcasing what minerals are contained within it. + * If undiscovered, adds a single overlay with the icon_state "unknown". + */ +/obj/structure/ore_vent/proc/add_mineral_overlays() + if(mineral_breakdown.len && !discovered) + var/obj/effect/temp_visual/mining_overlay/vent/new_mat = new /obj/effect/temp_visual/mining_overlay/vent(drop_location()) + new_mat.icon_state = "unknown" + return + for(var/datum/material/selected_mat as anything in mineral_breakdown) + var/obj/effect/temp_visual/mining_overlay/vent/new_mat = new /obj/effect/temp_visual/mining_overlay/vent(drop_location()) + new_mat.icon_state = selected_mat.name + +/** + * Here is where we handle producing a new boulder, based on the qualities of this ore vent. + * Returns the boulder produced. + * @params apply_cooldown Should we apply a cooldown to producing boulders? Default's false, used by manual boulder production (goldgrubs, golems, etc). + */ +/obj/structure/ore_vent/proc/produce_boulder(apply_cooldown = FALSE) + RETURN_TYPE(/obj/item/boulder) + + if(!length(mineral_breakdown)) + generate_mineral_breakdown() + //cooldown applies only for manual processing by hand + if(apply_cooldown && !COOLDOWN_FINISHED(src, manual_vent_cooldown)) + return + var/obj/item/boulder/new_rock + if(prob(artifact_chance)) + new_rock = new /obj/item/boulder/artifact(loc) + else + new_rock = new /obj/item/boulder(loc) + //decorate the boulder with materials + var/list/mats_list = list() + for(var/iteration in 1 to MINERALS_PER_BOULDER) + var/datum/material/material = pick_weight(mineral_breakdown) + mats_list[material] += ore_quantity_function(iteration) + new_rock.set_custom_materials(mats_list) + + //set size & durability + new_rock.boulder_size = boulder_size + new_rock.durability = rand(2, boulder_size) //randomize durability a bit for some flavor. + new_rock.boulder_string = boulder_icon_state + new_rock.update_appearance(UPDATE_ICON_STATE) + if(apply_cooldown) + COOLDOWN_START(src, manual_vent_cooldown, 10 SECONDS) + return new_rock + + +//comes with the station, and is already tapped. +/obj/structure/ore_vent/starter_resources + name = "active ore vent" + desc = "An ore vent, brimming with underground ore. It's already supplying the station with iron and glass." + tapped = TRUE + discovered = TRUE + unique_vent = TRUE + boulder_size = BOULDER_SIZE_SMALL + mineral_breakdown = list( + /datum/material/iron = 50, + /datum/material/glass = 50, + ) + +/obj/structure/ore_vent/random + +/obj/structure/ore_vent/random/Initialize(mapload) + . = ..() + if(!unique_vent && !mapload) + generate_mineral_breakdown(map_loading = mapload) //Default to random mineral breakdowns, unless this is a unique vent or we're still setting up default vent distribution. + generate_description() + artifact_chance = rand(0, MAX_ARTIFACT_ROLL_CHANCE) + var/string_boulder_size = pick_weight(ore_vent_options) + name = "[string_boulder_size] ore vent" + switch(string_boulder_size) + if(LARGE_VENT_TYPE) + boulder_size = BOULDER_SIZE_LARGE + if(mapload) + SSore_generation.ore_vent_sizes["large"] += 1 + if(MEDIUM_VENT_TYPE) + boulder_size = BOULDER_SIZE_MEDIUM + if(mapload) + SSore_generation.ore_vent_sizes["medium"] += 1 + if(SMALL_VENT_TYPE) + boulder_size = BOULDER_SIZE_SMALL + if(mapload) + SSore_generation.ore_vent_sizes["small"] += 1 + else + boulder_size = BOULDER_SIZE_SMALL //Might as well set a default value + name = initial(name) + + + +/obj/structure/ore_vent/random/icebox //The one that shows up on the top level of icebox + icon_state = "ore_vent_ice" + icon_state_tapped = "ore_vent_ice_active" + defending_mobs = list( + /mob/living/basic/mining/lobstrosity, + /mob/living/basic/mining/legion/snow/spawner_made, + /mob/living/simple_animal/hostile/asteroid/polarbear, + /mob/living/basic/mining/wolf, + ) + ore_vent_options = list( + SMALL_VENT_TYPE = 1, + ) + +/obj/structure/ore_vent/random/icebox/lower + defending_mobs = list( + /mob/living/basic/mining/ice_whelp, + /mob/living/basic/mining/lobstrosity, + /mob/living/basic/mining/legion/snow/spawner_made, + /mob/living/basic/mining/ice_demon, + /mob/living/simple_animal/hostile/asteroid/polarbear, + /mob/living/basic/mining/wolf, + ) + ore_vent_options = list( + SMALL_VENT_TYPE = 3, + MEDIUM_VENT_TYPE = 5, + LARGE_VENT_TYPE = 7, + ) + + +/obj/structure/ore_vent/boss + name = "menacing ore vent" + desc = "An ore vent, brimming with underground ore. This one has an evil aura about it. Better be careful." + unique_vent = TRUE + boulder_size = BOULDER_SIZE_LARGE + mineral_breakdown = list( // All the riches of the world, eeny meeny boulder room. + /datum/material/iron = 1, + /datum/material/glass = 1, + /datum/material/plasma = 1, + /datum/material/titanium = 1, + /datum/material/silver = 1, + /datum/material/gold = 1, + /datum/material/diamond = 1, + /datum/material/uranium = 1, + /datum/material/bluespace = 1, + /datum/material/plastic = 1, + ) + defending_mobs = list( + /mob/living/simple_animal/hostile/megafauna/bubblegum, + /mob/living/simple_animal/hostile/megafauna/dragon, + /mob/living/simple_animal/hostile/megafauna/colossus, + ) + excavation_warning = "Something big is nearby. Are you ABSOLUTELY ready to excavate this ore vent?" + ///What boss do we want to spawn? + var/summoned_boss = null + +/obj/structure/ore_vent/boss/Initialize(mapload) + . = ..() + summoned_boss = pick(defending_mobs) + +/obj/structure/ore_vent/boss/examine(mob/user) + . = ..() + var/boss_string = "" + switch(summoned_boss) + if(/mob/living/simple_animal/hostile/megafauna/bubblegum) + boss_string = "A giant fleshbound beast" + if(/mob/living/simple_animal/hostile/megafauna/dragon) + boss_string = "Sharp teeth and scales" + if(/mob/living/simple_animal/hostile/megafauna/colossus) + boss_string = "A giant, armored behemoth" + if(/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner) + boss_string = "A bloody drillmark" + if(/mob/living/simple_animal/hostile/megafauna/wendigo) + boss_string = "A chilling skull" + . += span_notice("[boss_string] is etched onto the side of the vent.") + +/obj/structure/ore_vent/boss/start_wave_defense() + // Completely override the normal wave defense, and just spawn the boss. + var/mob/living/simple_animal/hostile/megafauna/boss = new summoned_boss(loc) + RegisterSignal(boss, COMSIG_LIVING_DEATH, PROC_REF(handle_wave_conclusion)) + COOLDOWN_START(src, wave_cooldown, INFINITY) //Basically forever + //boss.say(boss.summon_line) //Pull their specific summon line to say. Default is meme text so make sure that they have theirs set already. + +/obj/structure/ore_vent/boss/handle_wave_conclusion() + node = new /mob/living/basic/node_drone(loc) //We're spawning the vent after the boss dies, so the player can just focus on the boss. + COOLDOWN_RESET(src, wave_cooldown) + return ..() + +/obj/structure/ore_vent/boss/icebox + icon_state = "ore_vent_ice" + icon_state_tapped = "ore_vent_ice_active" + defending_mobs = list( + /mob/living/simple_animal/hostile/megafauna/demonic_frost_miner, + /mob/living/simple_animal/hostile/megafauna/wendigo, + /mob/living/simple_animal/hostile/megafauna/colossus, + ) + +#undef MAX_ARTIFACT_ROLL_CHANCE +#undef MINERAL_TYPE_OPTIONS_RANDOM +#undef OVERLAY_OFFSET_START +#undef OVERLAY_OFFSET_EACH +#undef MINERALS_PER_BOULDER diff --git a/monkestation/code/modules/factory_type_beat/processing/bouldertech.dm b/monkestation/code/modules/factory_type_beat/processing/bouldertech.dm new file mode 100644 index 000000000000..2b6618990787 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/bouldertech.dm @@ -0,0 +1,380 @@ +/obj/machinery/bouldertech + name = "bouldertech brand refining machine" + desc = "You shouldn't be seeing this! And bouldertech isn't even a real company!" + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "ore_redemption" + anchored = TRUE + density = TRUE + + /// What is the efficiency of minerals produced by the machine? + var/refining_efficiency = 1 + /// How many boulders can we process maximum per loop? + var/boulders_processing_max = 1 + /// What boulder(s) are we holding? + var/list/boulders_contained = list() + /// How many boulders can we hold maximum? + var/boulders_held_max = 1 + /// Does this machine have a mineral storage link to the silo? + var/holds_minerals = FALSE + /// What materials do we accept and process out of boulders? Removing iron from an iron/glass boulder would leave a boulder with glass. + var/list/processable_materials = list() + /* + /// If we get a boulder with one of these inside, we'll drop it back out. + var/static/list/drop_if_contained = list( + /obj/item/relic, + ) + */ + /// What sound plays when a thing operates? + var/usage_sound = 'sound/machines/mining/wooping_teleport.ogg' + /// Cooldown associated with the usage_sound played. + COOLDOWN_DECLARE(sound_cooldown) + + /// Silo link to it's materials list. + var/datum/component/remote_materials/silo_materials + ///Does this machine hold mining points? + var/holds_mining_points = FALSE + /// Mining points held by the machine for miners. + var/points_held = 0 + ///our export side + var/export_side = EAST + ///do we allow boulders + var/allows_boulders = TRUE + var/next_allowed_process = 0 + var/process_string + +/obj/machinery/bouldertech/Initialize(mapload) + . = ..() + register_context() + if(holds_minerals) + silo_materials = AddComponent(/datum/component/remote_materials, "bouldertech", mapload, force_connect = TRUE, mat_container_flags=BREAKDOWN_FLAGS_ORM) + AddComponent(/datum/component/simple_rotation) + +/obj/machinery/bouldertech/LateInitialize() + . = ..() + if(!holds_minerals) + return + var/static/list/loc_connections = list( + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), + ) + AddElement(/datum/element/connect_loc, loc_connections) + +/obj/machinery/bouldertech/add_context(atom/source, list/context, obj/item/held_item, mob/user) + var/processable = "Accepts: " + if(allows_boulders) + processable += "Boulders" + if(process_string) + if(allows_boulders) + processable += ", " + processable += process_string + + context[SCREENTIP_CONTEXT_MISC] = processable + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/bouldertech/Destroy() + boulders_contained = null + silo_materials = null + return ..() + +/obj/machinery/bouldertech/update_icon_state() + . = ..() + icon_state ="[initial(icon_state)]" + +/obj/machinery/bouldertech/wrench_act(mob/living/user, obj/item/tool) + . = ..() + if(default_unfasten_wrench(user, tool, time = 1.5 SECONDS) == SUCCESSFUL_UNFASTEN) + update_appearance(UPDATE_ICON_STATE) + START_PROCESSING(SSmachines, src) + return TOOL_ACT_TOOLTYPE_SUCCESS + +/obj/machinery/bouldertech/screwdriver_act(mob/living/user, obj/item/tool) + . = ..() + if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-off", initial(icon_state), tool)) + return TOOL_ACT_TOOLTYPE_SUCCESS + +/obj/machinery/bouldertech/crowbar_act(mob/living/user, obj/item/tool) + . = ..() + if(default_pry_open(tool, close_after_pry = TRUE, closed_density = FALSE)) + return TOOL_ACT_TOOLTYPE_SUCCESS + if(default_deconstruction_crowbar(tool)) + return TOOL_ACT_TOOLTYPE_SUCCESS + +/obj/machinery/bouldertech/attackby(obj/item/attacking_item, mob/user, params) + if(holds_minerals && istype(attacking_item, /obj/item/boulder)) + var/obj/item/boulder/my_boulder = attacking_item + update_boulder_count() + if(!accept_boulder(my_boulder)) + balloon_alert_to_viewers("full!") + return + balloon_alert_to_viewers("accepted") + START_PROCESSING(SSmachines, src) + return TRUE + if(istype(attacking_item, /obj/item/card/id) && holds_mining_points) + if(points_held <= 0) + balloon_alert_to_viewers("no points to claim!") + if(!COOLDOWN_FINISHED(src, sound_cooldown)) + return TRUE + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(src, 'sound/machines/buzz-sigh.ogg', 30, FALSE) + return FALSE + var/obj/item/card/id/id_card = attacking_item + var/amount = tgui_input_number(user, "How many mining points do you wish to claim? ID Balance: [id_card.registered_account.mining_points], stored mining points: [points_held]", "Transfer Points", max_value = points_held, min_value = 0, round_value = 1) + if(!amount) + return TRUE + if(amount > points_held) + amount = points_held + id_card.registered_account.mining_points += amount + points_held = round(points_held - amount) + to_chat(user, span_notice("You claim [amount] mining points from \the [src] to [id_card].")) + return TRUE + return ..() + +/obj/machinery/bouldertech/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) + return + if(!anchored) + balloon_alert(user, "anchor first!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + if(!holds_minerals) + return SECONDARY_ATTACK_CONTINUE_CHAIN + if(!length(boulders_contained)) + balloon_alert_to_viewers("No boulders to remove!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + remove_boulder(pick(boulders_contained)) + return SECONDARY_ATTACK_CONTINUE_CHAIN + +/obj/machinery/bouldertech/deconstruct(disassembled) + . = ..() + if(length(contents)) + for(var/obj/item/boulder/boulder in contents) + remove_boulder(boulder) + +/obj/machinery/bouldertech/process() + if(!anchored) + return PROCESS_KILL + var/stop_processing_check = FALSE + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + if(!istype(potential_boulder, /obj/item/boulder)) + potential_boulder.forceMove(drop_location()) + CRASH("\The [src] had a non-boulder in it's boulders contained!") + + var/obj/item/boulder/boulder = potential_boulder + if(boulder.durability < 0) + CRASH("\The [src] had a boulder with negative durability!") + if(!check_for_processable_materials(boulder.custom_materials)) //Checks for any new materials we can process. + boulders_concurrent-- //We count skipped boulders + remove_boulder(boulder) + continue + boulders_concurrent-- + boulder.durability-- //One less durability to the processed boulder. + if(COOLDOWN_FINISHED(src, sound_cooldown)) + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(loc, usage_sound, 29, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) //This can get annoying. One play per process() call. + stop_processing_check = TRUE + if(boulder.durability <= 0) + breakdown_boulder(boulder) //Crack that bouwlder open! + continue + if(!stop_processing_check) + playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) + return PROCESS_KILL + + +/obj/machinery/bouldertech/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(allows_boulders) + if(boulders_contained.len >= boulders_held_max) + return FALSE + if(istype(mover, /obj/item/boulder)) + var/obj/item/boulder/boulder = mover + return boulder.can_get_processed() + return ..() + +/obj/machinery/bouldertech/examine(mob/user) + . = ..() + if(holds_mining_points) + . += span_notice("The machine reads that it has [span_bold("[points_held] mining points")] stored. Swipe an ID to claim them.") + +/** + * Accepts a boulder into the machinery, then converts it into minerals. + * If the boulder can be fully processed by this machine, we take the materials, insert it into the silo, and destroy the boulder. + * If the boulder has materials left, we make a copy of the boulder to hold the processable materials, take the processable parts, and eject the original boulder. + * @param chosen_boulder The boulder to being breaking down into minerals. + */ +/obj/machinery/bouldertech/proc/breakdown_boulder(obj/item/boulder/chosen_boulder) + if(QDELETED(chosen_boulder)) + return FALSE + if(chosen_boulder.loc != src) + return FALSE + if(!length(chosen_boulder.custom_materials)) + qdel(chosen_boulder) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + return FALSE + if(isnull(silo_materials)) + return FALSE + + //here we loop through the boulder's ores + var/list/processable_ores = list() + var/tripped = FALSE + //If a material is in the boulder's custom_materials, but not in the processable_materials list, we add it to the processable_ores list to add back to a leftover boulder. + for(var/datum/material/possible_mat as anything in chosen_boulder.custom_materials) + if(!is_type_in_list(possible_mat, processable_materials)) + continue + var/quantity = chosen_boulder.custom_materials[possible_mat] + points_held = round((points_held + (quantity * possible_mat.points_per_unit * MINING_POINT_MACHINE_MULTIPLIER))) // put point total here into machine + processable_ores += possible_mat + processable_ores[possible_mat] = quantity + chosen_boulder.custom_materials -= possible_mat //Remove it from the boulder now that it's tracked + tripped = TRUE + if(!tripped) + remove_boulder(chosen_boulder) + say("Nothing to process!") + return FALSE //we shouldn't spend more time processing a boulder with contents we don't care about. + use_power(BASE_MACHINE_ACTIVE_CONSUMPTION) + check_for_boosts() //Calls the relevant behavior for boosting the machine's efficiency, if able. + var/is_artifact = (istype(chosen_boulder, /obj/item/boulder/artifact)) //We need to know if it's an artifact so we can carry it over to the new boulder. + var/obj/item/boulder/disposable_boulder = new (src) + disposable_boulder.custom_materials = processable_ores + silo_materials.mat_container.insert_item(disposable_boulder, refining_efficiency) + qdel(disposable_boulder) + + refining_efficiency = initial(refining_efficiency) //Reset refining efficiency to 100% now that we've processed any relevant ores. + if(!length(chosen_boulder.custom_materials)) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + if(is_artifact) + points_held = round((points_held + MINER_POINT_MULTIPLIER) * MINING_POINT_MACHINE_MULTIPLIER) /// Artifacts give bonus points! + chosen_boulder.break_apart() + update_boulder_count() + return TRUE //We've processed all the materials in the boulder, so we can just destroy it in break_apart. + + chosen_boulder.restart_processing_cooldown() //So that we don't pick it back up! + chosen_boulder.durability = rand(chosen_boulder.boulder_size, chosen_boulder.boulder_size + BOULDER_SIZE_SMALL) //Reset durability to a random value between the boulder's size and a little more. + remove_boulder(chosen_boulder) + return TRUE + +/** + * Accepts a boulder into the machine. Used when a boulder is first placed into the machine. + * @param new_boulder The boulder to be accepted. + */ +/obj/machinery/bouldertech/proc/accept_boulder(obj/item/boulder/new_boulder) + if(isnull(new_boulder)) + return FALSE + if(boulders_contained.len >= boulders_held_max) //Full already + return FALSE + if(!istype(new_boulder) && !check_extras(new_boulder)) //Can't be processed + return FALSE + if(!new_boulder.custom_materials) //Shouldn't happen, but just in case. + qdel(new_boulder) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + return FALSE + new_boulder.forceMove(src) + boulders_contained += new_boulder + SSore_generation.available_boulders -= new_boulder + START_PROCESSING(SSmachines, src) //Starts processing if we aren't already. + return TRUE + +/obj/machinery/bouldertech/proc/check_extras(obj/item/item) + return FALSE + +/** + * Ejects a boulder from the machine. Used when a boulder is finished processing, or when a boulder can't be processed. + * @param drop_turf The location to eject the boulder to. If null, it will eject to the machine's drop_location(). + * @param specific_boulder The boulder to be ejected. + */ +/obj/machinery/bouldertech/proc/remove_boulder(obj/item/boulder/specific_boulder, turf/drop_turf = null) + if(isnull(specific_boulder)) + CRASH("remove_boulder() called with no boulder!") + if(!length(specific_boulder.custom_materials)) + qdel(specific_boulder) + update_boulder_count() + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + return FALSE + specific_boulder.restart_processing_cooldown() //Reset the cooldown so we don't pick it back up by the same machine. + if(isturf(drop_turf)) + specific_boulder.forceMove(drop_turf) + else + specific_boulder.forceMove(drop_location()) + if(!update_boulder_count()) + return TRUE + STOP_PROCESSING(SSmachines, src) + balloon_alert_to_viewers("clear!") + playsound(loc, 'sound/machines/ping.ogg', 50, FALSE) + return TRUE + +/obj/machinery/bouldertech/can_drop_off() + if(length(boulders_contained) >= boulders_held_max) + return FALSE + return TRUE + +/** + * Getter proc to determine how many boulders are contained in the machine. + * Also adds their reference to the boulders_contained list. + */ +/obj/machinery/bouldertech/proc/update_boulder_count() + boulders_contained = list() + for(var/obj/item/boulder/boulder in contents) + boulders_contained += boulder + if(length(return_extras())) + boulders_contained |= return_extras() + return boulders_contained.len + +/obj/machinery/bouldertech/proc/return_extras() + return list() + +/obj/machinery/bouldertech/proc/on_entered(datum/source, atom/movable/atom_movable) + SIGNAL_HANDLER + INVOKE_ASYNC(src, PROC_REF(accept_boulder), atom_movable) + +/** + * Looks for a boost to the machine's efficiency, and applies it if found. + * Applied more on the chemistry integration but can be used for other things if desired. + */ +/obj/machinery/bouldertech/proc/check_for_boosts() + refining_efficiency = initial(refining_efficiency) //Reset refining efficiency to 100%. + +/** + * Checks if a custom_material is in a list of processable materials in the machine. + * @param list/custom_material A list of materials, presumably taken from a boulder. If a material that this machine can process is in this list, it will return true, inclusively. + */ +/obj/machinery/bouldertech/proc/check_for_processable_materials(list/boulder_mats) + for(var/material as anything in boulder_mats) + if(is_type_in_list(material, processable_materials)) + return TRUE + return FALSE + +///Beacon to launch a new mining setup when activated. For testing and speed! +/obj/item/boulder_beacon + name = "boulder beacon" + desc = "N.T. approved boulder beacon, toss it down and you will have a full bouldertech mining station." + icon = 'icons/obj/objects.dmi' + icon_state = "floor_beacon" + /// Number of activations left on this beacon. Uses will be removed as the beacon is used and each triggers a different machine to be spawned from it. + var/uses = 3 + +/obj/item/boulder_beacon/attack_self() + loc.visible_message(span_warning("\The [src] begins to beep loudly!")) + addtimer(CALLBACK(src, PROC_REF(launch_payload)), 1 SECONDS) + +/** + * Spawns a new bouldertech machine from the beacon, then removes a use from the beacon. + * Use one spawns a BRM teleporter, then a refinery, and lastly a smelter. + */ +/obj/item/boulder_beacon/proc/launch_payload() + playsound(src, SFX_SPARKS, 80, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + switch(uses) + if(3) + new /obj/machinery/bouldertech/brm(drop_location()) + if(2) + new /obj/machinery/bouldertech/refinery(drop_location()) + if(1) + new /obj/machinery/bouldertech/refinery/smelter(drop_location()) + qdel(src) + uses-- diff --git a/monkestation/code/modules/factory_type_beat/processing/brm.dm b/monkestation/code/modules/factory_type_beat/processing/brm.dm new file mode 100644 index 000000000000..2791bd39c8cb --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/brm.dm @@ -0,0 +1,201 @@ +#define MANUAL_TELEPORT_SOUND 'sound/machines/mining/manual_teleport.ogg' +#define AUTO_TELEPORT_SOUND 'sound/machines/mining/auto_teleport.ogg' + +/datum/wires/brm + holder_type = /obj/machinery/bouldertech/brm + proper_name = "Boulder Retrieval Matrix" + +/datum/wires/brm/New(atom/holder) + add_duds(1) + return ..() + +/datum/wires/brm/on_pulse(wire) + var/obj/machinery/bouldertech/brm/brm_holder = holder + if(brm_holder.panel_open) + return + brm_holder.toggle_auto_on() + +/obj/machinery/bouldertech/brm + name = "boulder retrieval matrix" + desc = "A teleportation matrix used to retrieve boulders excavated by mining NODEs from ore vents." + icon_state = "brm" + circuit = /obj/item/circuitboard/machine/brm + usage_sound = MANUAL_TELEPORT_SOUND + processing_flags = START_PROCESSING_MANUALLY + boulders_held_max = 2 + /// Are we trying to actively collect boulders automatically? + var/toggled_on = FALSE + /// How long does it take to collect a boulder? + var/teleportation_time = 1.5 SECONDS + /// Cooldown used for left click teleportation. + COOLDOWN_DECLARE(manual_teleport_cooldown) + +/obj/machinery/bouldertech/brm/Initialize(mapload) + . = ..() + set_wires(new /datum/wires/brm(src)) + +/obj/machinery/bouldertech/brm/Destroy() + QDEL_NULL(wires) + return ..() + +/obj/machinery/bouldertech/brm/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(!handle_teleport_conditions(user)) + return + pre_collect_boulder() + + COOLDOWN_START(src, manual_teleport_cooldown, teleportation_time) + +/obj/machinery/bouldertech/brm/attack_robot(mob/user) + if(!handle_teleport_conditions(user)) + return + pre_collect_boulder() + + COOLDOWN_START(src, manual_teleport_cooldown, teleportation_time) + +/obj/machinery/bouldertech/brm/attackby(obj/item/attacking_item, mob/user, params) + if(is_wire_tool(attacking_item) && panel_open) + wires.interact(user) + return TRUE + return ..() + +/obj/machinery/bouldertech/brm/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) + return + if(!anchored) + balloon_alert(user, "anchor first!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + toggle_auto_on(user) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/machinery/bouldertech/brm/attack_robot_secondary(mob/user, list/modifiers) + . = ..() + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) + return + if(!anchored) + balloon_alert(user, "anchor first!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + toggle_auto_on(user) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/machinery/bouldertech/brm/process() + if(SSore_generation.available_boulders.len < 1) + say("No boulders to collect. Entering idle mode.") + toggled_on = FALSE + update_appearance(UPDATE_ICON_STATE) + return PROCESS_KILL + for(var/i in 1 to boulders_processing_max) + if(pre_collect_boulder()) + continue + toggled_on = FALSE + update_appearance(UPDATE_ICON_STATE) + return PROCESS_KILL + for(var/obj/item/boulder/ground_rocks in loc.contents) + boulders_contained += ground_rocks + if(boulders_contained.len < boulders_held_max) + continue + toggled_on = FALSE + boulders_contained.Cut() + update_appearance(UPDATE_ICON_STATE) + return PROCESS_KILL + +/obj/machinery/bouldertech/brm/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + context[SCREENTIP_CONTEXT_LMB] = "Teleport single boulder" + context[SCREENTIP_CONTEXT_RMB] = "Toggle automatic boulder retrieval" + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/bouldertech/brm/examine(mob/user) + . = ..() + . += span_notice("The small screen reads there are [span_boldnotice("[SSore_generation.available_boulders.len] boulders")] available to teleport.") + +/obj/machinery/bouldertech/brm/RefreshParts() + . = ..() + var/scanner_stack = 0 + var/laser_stack = 0 + for(var/datum/stock_part/scanning_module/scanner in component_parts) + scanner_stack += scanner.tier + boulders_processing_max = scanner_stack + for(var/datum/stock_part/micro_laser/laser in component_parts) + laser_stack += laser.tier + boulders_held_max = laser_stack + 1 + +/obj/machinery/bouldertech/brm/update_icon_state() + if(toggled_on && !panel_open) + icon_state = "[initial(icon_state)]-toggled" + return + return ..() + +/** + * Handles qualifiers for enabling teleportation of boulders. + * Returns TRUE if the teleportation can proceed, FALSE otherwise. + */ +/obj/machinery/bouldertech/brm/proc/handle_teleport_conditions(mob/user) + if(!COOLDOWN_FINISHED(src, manual_teleport_cooldown)) + return FALSE + if(panel_open) + balloon_alert(user, "close panel first!") + return FALSE + playsound(src, MANUAL_TELEPORT_SOUND, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + return TRUE + +/** + * Begins to collect a boulder from the available boulders list in SSore_generation. + * Boulders must not be processed by another BRM or machine, and must be in the available boulders list. + * A selected boulder is picked randomly. + * The actual movement is then handled by collect_boulder() after a timed callback. + */ +/obj/machinery/bouldertech/brm/proc/pre_collect_boulder() + if(!length(SSore_generation.available_boulders)) + playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE) + balloon_alert_to_viewers("no boulders to collect!") + return FALSE //Nothing to collect + var/obj/item/boulder/random_boulder = pick(SSore_generation.available_boulders) + if(random_boulder.processed_by) + return FALSE + + random_boulder.processed_by = src + random_boulder.Shake(duration = 1.5 SECONDS) + SSore_generation.available_boulders -= random_boulder + addtimer(CALLBACK(src, PROC_REF(collect_boulder), random_boulder), 1.5 SECONDS) + return TRUE + +/** + * Collects a boulder from the available boulders list in SSore_generation. + * Handles the movement of the boulder as well as visual effects on the BRM. + * @param obj/item/boulder/random_boulder The boulder to collect. + */ +/obj/machinery/bouldertech/brm/proc/collect_boulder(obj/item/boulder/random_boulder) + flick("brm-flash", src) + if(QDELETED(random_boulder)) + playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE) + balloon_alert_to_viewers("target lost!") + return FALSE + playsound(src, AUTO_TELEPORT_SOUND, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + random_boulder.forceMove(drop_location()) + random_boulder.processed_by = null + random_boulder.pixel_x = rand(-2, 2) + random_boulder.pixel_y = rand(-2, 2) + balloon_alert_to_viewers("boulder appears!") + random_boulder.visible_message(span_warning("[random_boulder] suddenly appears!")) + use_power(BASE_MACHINE_ACTIVE_CONSUMPTION * 0.1) + return TRUE + +/** + * Toggles automatic boulder retrieval on. + * Adjusts the teleportation sound, icon state, and begins processing. + * @param mob/user The user who toggled the BRM. + */ +/obj/machinery/bouldertech/brm/proc/toggle_auto_on(mob/user) + if(panel_open) + if(user) + balloon_alert(user, "close panel first!") + return + toggled_on = TRUE + START_PROCESSING(SSmachines, src) + update_appearance(UPDATE_ICON_STATE) + usage_sound = AUTO_TELEPORT_SOUND + +#undef MANUAL_TELEPORT_SOUND +#undef AUTO_TELEPORT_SOUND diff --git a/monkestation/code/modules/factory_type_beat/processing/checmial_washer.dm b/monkestation/code/modules/factory_type_beat/processing/checmial_washer.dm new file mode 100644 index 000000000000..230ba5fd34f5 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/checmial_washer.dm @@ -0,0 +1,137 @@ +/obj/machinery/bouldertech/chemical_washer + name = "chemical washer" + desc = "Crushes clumps of ore into dirty dust which needs to be enriched." + icon_state = "washer" + allows_boulders = FALSE + holds_minerals = TRUE + process_string = "Water, Dirty Slurry" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + var/maximum_volume = 1000 + var/water_per_use = 100 + +/obj/machinery/bouldertech/chemical_washer/Initialize(mapload) + . = ..() + create_reagents(maximum_volume, TRANSPARENT) + AddComponent(/datum/component/plumbing/chemical_washer) + AddComponent(/datum/component/plumbing/chemical_washer_water) + +/obj/machinery/bouldertech/chemical_washer/process() + if(!anchored) + return + if(reagents.total_volume < water_per_use) + return + process_slurry() + + +/obj/machinery/bouldertech/chemical_washer/proc/process_slurry() + var/processed = FALSE + for(var/datum/reagent/processing/dirty_slurry/slurry as anything in reagents.reagent_list) + if(!istype(slurry)) + continue + + if(!slurry.data["materials"]) + continue + var/list/slurry_data = slurry.data + var/slurry_volume = slurry.volume + + reagents.remove_all_type(slurry.type, slurry.volume) + reagents.add_reagent(/datum/reagent/processing/clean_slurry, slurry_volume, slurry_data) + processed = TRUE + + + if(processed) + reagents.remove_all_type(/datum/reagent/water, water_per_use) + + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/datum/component/plumbing/chemical_washer + demand_connects = WEST + supply_connects = EAST + +/datum/component/plumbing/chemical_washer/send_request(dir) + var/atom/movable/host = parent + + var/slurry_amount = host.reagents.get_reagent_amount(/datum/reagent/processing/dirty_slurry) + process_request(amount = max(500 - slurry_amount, 0), reagent = /datum/reagent/processing/dirty_slurry, dir = dir) + +///check who can give us what we want, and how many each of them will give us +/datum/component/plumbing/chemical_washer/process_request(amount = MACHINE_REAGENT_TRANSFER, reagent, dir) + //find the duct to take from + var/datum/ductnet/net + if(!ducts.Find(num2text(dir))) + return + net = ducts[num2text(dir)] + + var/atom/movable/host = parent + + var/datum/reagent/processing/requested_reagent + + for(var/datum/reagent/listed as anything in host.reagents.reagent_list) + if(istype(reagent, /datum/reagent/processing/clean_slurry)) + return + + for(var/datum/reagent/listed as anything in host.reagents.reagent_list) + if(!reagent) + break + if(reagent == listed.type) + requested_reagent = listed + break + //find all valid suppliers in the duct + var/list/valid_suppliers = list() + for(var/datum/component/plumbing/supplier as anything in net.suppliers) + var/failed = FALSE + if(requested_reagent) + var/atom/movable/supplier_host = supplier.parent + for(var/datum/reagent/supplier_listed as anything in supplier_host.reagents.reagent_list) + if(supplier_listed.type != reagent) + continue + if(supplier_listed.data["materials"] != requested_reagent.data["materials"]) + failed = TRUE + break + var/material = supplier_listed.data["materials"] + var/quantity = supplier_listed.data["materials"][material] + if(quantity != requested_reagent.data["materials"][material]) + failed = TRUE + break + if(failed) + continue + if(supplier.can_give(amount, reagent, net)) + valid_suppliers += supplier + var/suppliersLeft = valid_suppliers.len + if(!suppliersLeft) + return + + //take an equal amount from each supplier + var/currentRequest + var/target_volume = reagents.total_volume + amount + for(var/datum/component/plumbing/give as anything in valid_suppliers) + currentRequest = (target_volume - reagents.total_volume) / suppliersLeft + give.transfer_to(src, currentRequest, reagent, net) + suppliersLeft-- + +/datum/component/plumbing/chemical_washer_water + demand_connects = SOUTH + demand_color = COLOR_BLUE + + ducting_layer = SECOND_DUCT_LAYER + +/datum/component/plumbing/chemical_washer_water/send_request(dir) + var/atom/movable/host = parent + var/water_amount = host.reagents.get_reagent_amount(/datum/reagent/water) + process_request(amount = max(500 - water_amount, 0), reagent = /datum/reagent/water, dir = dir) diff --git a/monkestation/code/modules/factory_type_beat/processing/chemical_injector.dm b/monkestation/code/modules/factory_type_beat/processing/chemical_injector.dm new file mode 100644 index 000000000000..c193c02e516c --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/chemical_injector.dm @@ -0,0 +1,165 @@ +/obj/machinery/bouldertech/chemical_injector + name = "chemical injector" + desc = "Crushes shards when infused with brine." + icon_state = "chemical_injection" + allows_boulders = FALSE + holds_minerals = TRUE + process_string = "Brine" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + var/maximum_volume = 1000 + var/brine_per_use = 25 + var/crystal_inside = FALSE + +/obj/machinery/bouldertech/chemical_injector/update_icon_state() + . = ..() + if(crystal_inside) + icon_state = "chemical_injection-inject" + else + icon_state = "chemical_injection" + +/obj/machinery/bouldertech/chemical_injector/update_overlays() + . = ..() + if(crystal_inside) + . += mutable_appearance(icon, "chemical_injection-crystal") + +/obj/machinery/bouldertech/chemical_injector/Initialize(mapload) + . = ..() + create_reagents(maximum_volume, TRANSPARENT) + AddComponent(/datum/component/plumbing/chemical_injector_brine) + +/obj/machinery/bouldertech/chemical_injector/process() + if(!anchored) + return PROCESS_KILL + + if(next_allowed_process > world.time) + return + + if(reagents.total_volume < brine_per_use) + return + + if(crystal_inside) + return + + var/stop_processing_check = FALSE + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + + if(istype(potential_boulder, /obj/item/processing/amalgam)) + next_allowed_process = world.time + 30 SECONDS + visible_message(span_danger("The machine gets clogged with [potential_boulder]! Disabling it for 30 Seconds.")) + + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + if(!istype(potential_boulder, /obj/item/boulder)) + crystal_inside = TRUE + update_appearance() + addtimer(CALLBACK(src, PROC_REF(process_crystal), potential_boulder), 2.6 SECONDS) + continue + + var/obj/item/boulder/boulder = potential_boulder + if(boulder.durability < 0) + CRASH("\The [src] had a boulder with negative durability!") + if(!check_for_processable_materials(boulder.custom_materials)) //Checks for any new materials we can process. + boulders_concurrent-- //We count skipped boulders + remove_boulder(boulder) + continue + boulders_concurrent-- + boulder.durability-- //One less durability to the processed boulder. + if(COOLDOWN_FINISHED(src, sound_cooldown)) + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(loc, usage_sound, 29, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) //This can get annoying. One play per process() call. + stop_processing_check = TRUE + if(boulder.durability <= 0) + export_shard(boulder) //Crack that bouwlder open! + continue + if(!stop_processing_check) + playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) + return PROCESS_KILL + + +/obj/machinery/bouldertech/chemical_injector/proc/process_crystal(obj/item/processing/crystals/clump) + for(var/datum/material/material as anything in clump.custom_materials) + var/quantity = clump.custom_materials[material] + var/obj/item/processing/shards/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + + crystal_inside = FALSE + reagents.remove_all(brine_per_use) + qdel(clump) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/chemical_injector/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(boulders_contained.len >= boulders_held_max) + return FALSE + if(istype(mover, /obj/item/processing/crystals)) + return TRUE + if(istype(mover, /obj/item/processing/amalgam)) + return TRUE + return ..() + +/obj/machinery/bouldertech/chemical_injector/return_extras() + var/list/boulders_contained = list() + for(var/obj/item/processing/crystals/boulder in contents) + boulders_contained += boulder + for(var/obj/item/processing/amalgam/amalgam in contents) + boulders_contained += amalgam + return boulders_contained + +/obj/machinery/bouldertech/chemical_injector/check_extras(obj/item/item) + if(istype(item, /obj/item/processing/crystals)) + return TRUE + if(istype(item, /obj/item/processing/amalgam)) + return TRUE + return FALSE + +/obj/machinery/bouldertech/chemical_injector/proc/export_shard(obj/item/boulder/boulder) + for(var/datum/material/material as anything in boulder.custom_materials) + var/quantity = boulder.custom_materials[material] + for(var/i = 1 to 4) + var/obj/item/processing/shards/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + + reagents.remove_all(brine_per_use) + qdel(boulder) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + + +/datum/component/plumbing/chemical_injector_brine + demand_connects = SOUTH + demand_color = COLOR_YELLOW + + ducting_layer = SECOND_DUCT_LAYER + +/datum/component/plumbing/chemical_injector_brine/send_request(dir) + process_request(amount = MACHINE_REAGENT_TRANSFER, reagent = /datum/reagent/brine, dir = dir) diff --git a/monkestation/code/modules/factory_type_beat/processing/crusher.dm b/monkestation/code/modules/factory_type_beat/processing/crusher.dm new file mode 100644 index 000000000000..3cffe8985509 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/crusher.dm @@ -0,0 +1,72 @@ +/obj/machinery/bouldertech/crusher + name = "crusher" + desc = "Crushes clumps of ore into dirty dust which needs to be enriched." + icon_state = "crusher" + allows_boulders = FALSE + holds_minerals = TRUE + process_string = "Clumps" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + +/obj/machinery/bouldertech/crusher/process() + if(!anchored) + return PROCESS_KILL + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + if(!istype(potential_boulder, /obj/item/boulder)) + process_clump(potential_boulder) + continue + +/obj/machinery/bouldertech/crusher/proc/process_clump(obj/item/processing/clumps/clump) + for(var/datum/material/material as anything in clump.custom_materials) + var/quantity = clump.custom_materials[material] + var/obj/item/processing/dirty_dust/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + + qdel(clump) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/crusher/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(boulders_contained.len >= boulders_held_max) + return FALSE + if(istype(mover, /obj/item/processing/clumps)) + return TRUE + return ..() + +/obj/machinery/bouldertech/crusher/return_extras() + var/list/boulders_contained = list() + for(var/obj/item/processing/clumps/boulder in contents) + boulders_contained += boulder + return boulders_contained + +/obj/machinery/bouldertech/crusher/check_extras(obj/item/item) + if(istype(item, /obj/item/processing/clumps)) + return TRUE + return FALSE diff --git a/monkestation/code/modules/factory_type_beat/processing/crystalizer.dm b/monkestation/code/modules/factory_type_beat/processing/crystalizer.dm new file mode 100644 index 000000000000..d1ee831350d1 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/crystalizer.dm @@ -0,0 +1,140 @@ +/obj/machinery/bouldertech/crystalizer + name = "crystalizer" + desc = "Crushes clumps of ore into dirty dust which needs to be enriched." + icon_state = "crystalizer" + allows_boulders = FALSE + holds_minerals = TRUE + process_string = "Clean Slurry" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + var/maximum_volume = 50 + var/crystalized_reagent = 50 + var/processes_left = 3 + var/crystal_in_progress = FALSE + +/obj/machinery/bouldertech/crystalizer/Initialize(mapload) + . = ..() + create_reagents(maximum_volume, TRANSPARENT) + AddComponent(/datum/component/plumbing/material_crystalizer) + +/obj/machinery/bouldertech/crystalizer/update_overlays() + . = ..() + . += mutable_appearance(icon, "crystalizer-glass", layer + 0.2, src) + + if(crystal_in_progress) + . += mutable_appearance(icon, "crystalizer-crystal", layer, src) + . += mutable_appearance(icon, "crystalizer-[processes_left]") + +/obj/machinery/bouldertech/crystalizer/process() + if(!anchored) + return + if(reagents.total_volume < crystalized_reagent) + crystal_in_progress = FALSE + return + crystal_in_progress = TRUE + if(processes_left > 0) + processes_left-- + update_appearance() + return + + processes_left = 3 + process_slurry() + reagents.remove_all_type(/datum/reagent/processing/clean_slurry, crystalized_reagent) + crystal_in_progress = FALSE + update_appearance() + + +/obj/machinery/bouldertech/crystalizer/proc/process_slurry() + for(var/datum/reagent/processing/clean_slurry/slurry as anything in reagents.reagent_list) + if(!istype(slurry)) + continue + if(!slurry.data["materials"]) + continue + for(var/item in slurry.data["materials"]) + var/material = item + var/quantity = slurry.data["materials"][material] + var/obj/item/processing/crystals/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + if(prob(15)) + new /obj/item/processing/amalgam(get_step(src, export_side)) + + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/datum/component/plumbing/material_crystalizer + demand_connects = WEST + +/datum/component/plumbing/material_crystalizer/send_request(dir) + var/atom/movable/host = parent + var/reagents_left = host.reagents.maximum_volume - host.reagents.total_volume + process_request(amount = reagents_left, reagent = /datum/reagent/processing/clean_slurry, dir = dir) + +///check who can give us what we want, and how many each of them will give us +/datum/component/plumbing/material_crystalizer/process_request(amount = MACHINE_REAGENT_TRANSFER, reagent, dir) + //find the duct to take from + var/datum/ductnet/net + if(!ducts.Find(num2text(dir))) + return + net = ducts[num2text(dir)] + + var/atom/movable/host = parent + + var/datum/reagent/processing/requested_reagent + + for(var/datum/reagent/listed as anything in host.reagents.reagent_list) + if(!reagent) + break + if(reagent == listed.type) + requested_reagent = listed + break + + //find all valid suppliers in the duct + var/list/valid_suppliers = list() + for(var/datum/component/plumbing/supplier as anything in net.suppliers) + var/failed = FALSE + if(requested_reagent) + var/atom/movable/supplier_host = supplier.parent + for(var/datum/reagent/supplier_listed as anything in supplier_host.reagents.reagent_list) + if(supplier_listed.type != reagent) + continue + if(supplier_listed.data["materials"] != requested_reagent.data["materials"]) + failed = TRUE + break + var/material = supplier_listed.data["materials"] + var/quantity = supplier_listed.data["materials"][material] + if(quantity != requested_reagent.data["materials"][material]) + failed = TRUE + break + if(failed) + continue + if(supplier.can_give(amount, reagent, net)) + valid_suppliers += supplier + var/suppliersLeft = valid_suppliers.len + if(!suppliersLeft) + return + + //take an equal amount from each supplier + var/currentRequest + var/target_volume = reagents.total_volume + amount + for(var/datum/component/plumbing/give as anything in valid_suppliers) + currentRequest = (target_volume - reagents.total_volume) / suppliersLeft + give.transfer_to(src, currentRequest, reagent, net) + suppliersLeft-- diff --git a/monkestation/code/modules/factory_type_beat/processing/dissolution_chamber.dm b/monkestation/code/modules/factory_type_beat/processing/dissolution_chamber.dm new file mode 100644 index 000000000000..2f6e6c357790 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/dissolution_chamber.dm @@ -0,0 +1,96 @@ +/obj/machinery/bouldertech/dissolution_chamber + name = "dissolution chamber" + desc = "Crushes shards when infused with brine." + icon_state = "dissolution" + holds_minerals = TRUE + process_string = "Sulfuric Acid" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + var/maximum_volume = 3000 + var/acid_per_use = 100 + +/obj/machinery/bouldertech/dissolution_chamber/Initialize(mapload) + . = ..() + create_reagents(maximum_volume, TRANSPARENT) + AddComponent(/datum/component/plumbing/dissolution_chamber) + AddComponent(/datum/component/plumbing/dissolution_chamber_output) + +/obj/machinery/bouldertech/dissolution_chamber/process() + if(!anchored) + return PROCESS_KILL + + + if(reagents.total_volume < acid_per_use) + return + + var/stop_processing_check = FALSE + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + var/obj/item/boulder/boulder = potential_boulder + if(boulder.durability < 0) + CRASH("\The [src] had a boulder with negative durability!") + if(!check_for_processable_materials(boulder.custom_materials)) //Checks for any new materials we can process. + boulders_concurrent-- //We count skipped boulders + remove_boulder(boulder) + continue + boulders_concurrent-- + boulder.durability-- //One less durability to the processed boulder. + if(COOLDOWN_FINISHED(src, sound_cooldown)) + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(loc, usage_sound, 29, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) //This can get annoying. One play per process() call. + stop_processing_check = TRUE + if(boulder.durability <= 0) + export_slurry(boulder) //Crack that bouwlder open! + reagents.remove_all_type(/datum/reagent/toxin/acid, acid_per_use) + continue + if(!stop_processing_check) + playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) + return PROCESS_KILL + +/obj/machinery/bouldertech/dissolution_chamber/proc/export_slurry(obj/item/boulder/boulder) + for(var/datum/material/material as anything in boulder.custom_materials) + var/list/data = list() + data |= material + data[material] = boulder.custom_materials[material] + var/list/material_data = list() + material_data += "materials" + material_data["materials"] = data + reagents.add_reagent(/datum/reagent/processing/dirty_slurry, 250, material_data) + + qdel(boulder) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/datum/component/plumbing/dissolution_chamber + demand_connects = SOUTH + demand_color = COLOR_YELLOW + + ducting_layer = SECOND_DUCT_LAYER + +/datum/component/plumbing/dissolution_chamber/send_request(dir) + var/atom/movable/host = parent + var/reagents_left = host.reagents.get_reagent_amount(/datum/reagent/toxin/acid) + process_request(amount = max(2500 - reagents_left, 0), reagent = /datum/reagent/toxin/acid, dir = dir) + +/datum/component/plumbing/dissolution_chamber_output + supply_connects = EAST diff --git a/monkestation/code/modules/factory_type_beat/processing/enricher.dm b/monkestation/code/modules/factory_type_beat/processing/enricher.dm new file mode 100644 index 000000000000..7bc80bdb2e97 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/enricher.dm @@ -0,0 +1,105 @@ +/obj/machinery/bouldertech/enricher + name = "enrichment chamber" + desc = "enriches boulders into dust which can then de smelted at a smelter for double the materials." + icon_state = "enricher" + holds_minerals = TRUE + process_string = "Dirty Dust" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + +/obj/machinery/bouldertech/enricher/process() + if(!anchored) + return PROCESS_KILL + var/stop_processing_check = FALSE + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + if(!istype(potential_boulder, /obj/item/boulder)) + process_dirty_dust(potential_boulder) + continue + + var/obj/item/boulder/boulder = potential_boulder + if(boulder.durability < 0) + CRASH("\The [src] had a boulder with negative durability!") + if(!check_for_processable_materials(boulder.custom_materials)) //Checks for any new materials we can process. + boulders_concurrent-- //We count skipped boulders + remove_boulder(boulder) + continue + boulders_concurrent-- + boulder.durability-- //One less durability to the processed boulder. + if(COOLDOWN_FINISHED(src, sound_cooldown)) + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(loc, usage_sound, 29, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) //This can get annoying. One play per process() call. + stop_processing_check = TRUE + if(boulder.durability <= 0) + export_dust(boulder) //Crack that bouwlder open! + continue + if(!stop_processing_check) + playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) + return PROCESS_KILL + +/obj/machinery/bouldertech/enricher/proc/export_dust(obj/item/boulder/boulder) + for(var/datum/material/material as anything in boulder.custom_materials) + var/quantity = boulder.custom_materials[material] + for(var/i = 1 to 2) + var/obj/item/processing/refined_dust/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + qdel(boulder) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/enricher/proc/process_dirty_dust(obj/item/processing/dirty_dust/dirty_dust) + for(var/datum/material/material as anything in dirty_dust.custom_materials) + var/quantity = dirty_dust.custom_materials[material] + var/obj/item/processing/refined_dust/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + qdel(dirty_dust) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/enricher/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(boulders_contained.len >= boulders_held_max) + return FALSE + if(istype(mover, /obj/item/processing/dirty_dust)) + return TRUE + return ..() + +/obj/machinery/bouldertech/enricher/return_extras() + var/list/boulders_contained = list() + for(var/obj/item/processing/dirty_dust/boulder in contents) + boulders_contained += boulder + return boulders_contained + +/obj/machinery/bouldertech/enricher/check_extras(obj/item/item) + if(istype(item, /obj/item/processing/dirty_dust)) + return TRUE + return FALSE diff --git a/monkestation/code/modules/factory_type_beat/processing/holding_types.dm b/monkestation/code/modules/factory_type_beat/processing/holding_types.dm new file mode 100644 index 000000000000..19cb8aef8ce4 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/holding_types.dm @@ -0,0 +1,61 @@ +/obj/item/processing + name = "generic" + desc = "oopsie" + icon = 'monkestation/code/modules/factory_type_beat/icons/processing.dmi' + icon_state = "dust" + +/obj/item/processing/proc/set_colors() + for(var/datum/material/material as anything in custom_materials) + color = material.greyscale_colors + alpha = material.alpha + +/obj/item/processing/refined_dust + name = "refined dust" + desc = "After being enriched it has turned into some dust." + +/obj/item/processing/dirty_dust + name = "dirty dust" + desc = "After crushing some clumps we are left with this." + icon = 'monkestation/icons/obj/items/drugs.dmi' + icon_state = "crack" + +/obj/item/processing/clumps + name = "ore clumps" + desc = "After being purified we are left with some clumps of ore." + icon_state = "clump" + +/obj/item/processing/shards + name = "ore shards" + desc = "After being filled with chemicals we are left with some shards of ores." + icon_state = "shard" + +/obj/item/processing/crystals + name = "ore crystals" + desc = "After crystalizing some clean slurry we have crystals." + icon_state = "crystal" + +/datum/reagent/processing + name = "Generic Processing Reagent" + data = list("materials" = list()) + restricted = TRUE + +/datum/reagent/processing/dirty_slurry + name = "Dirty Slurry" + +/datum/reagent/processing/clean_slurry + name = "Clean Slurry" + +/datum/reagent/brine + name = "Brine" + restricted = TRUE + + +/obj/item/processing/amalgam + name = "ore amalgam" + desc = "Pretty useless and jams up your processing." + icon_state = "dust" + +/obj/item/processing/ruined_shard + name = "ruined shard" + desc = "Pretty useless and jams up your processing." + icon_state = "dust" diff --git a/monkestation/code/modules/factory_type_beat/processing/purification_chamber.dm b/monkestation/code/modules/factory_type_beat/processing/purification_chamber.dm new file mode 100644 index 000000000000..13e577032420 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/purification_chamber.dm @@ -0,0 +1,167 @@ +#define REQUIRED_OXYGEN_MOLES 25 +/obj/machinery/bouldertech/purification_chamber + name = "purification chamber" + desc = "Uses a large amount of oxygen to purify ores into clumps." + icon_state = "purification_chamber" + holds_minerals = TRUE + process_string = "Shards" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + + var/oxygen_moles = 0 + var/obj/machinery/portable_atmospherics/purification_input/oxygen_input + +/obj/machinery/bouldertech/purification_chamber/AltClick(mob/user) + . = ..() + if(oxygen_input) + oxygen_input.disconnect() + QDEL_NULL(oxygen_input) + + var/side = tgui_input_list(user, "Choose a side to try and deploy the tank on", "[name]", list("North", "South")) + if(!side) + return + + var/direction = NORTH + if(side == "South") + direction = SOUTH + + if(!(locate(/obj/machinery/atmospherics/components/unary/portables_connector) in get_step(src, direction))) + return + + oxygen_input = new(get_step(src, direction)) + var/obj/machinery/atmospherics/components/unary/portables_connector/possible_port = locate(/obj/machinery/atmospherics/components/unary/portables_connector) in oxygen_input.loc + if(!oxygen_input.connect(possible_port)) + QDEL_NULL(oxygen_input) + +/obj/machinery/bouldertech/purification_chamber/process() + if(!anchored) + return PROCESS_KILL + + if(oxygen_input) + oxygen_input.air_contents.assert_gas(/datum/gas/oxygen, oxygen_input.air_contents) + oxygen_moles = oxygen_input.air_contents.gases[/datum/gas/oxygen][MOLES] + + if(oxygen_moles < REQUIRED_OXYGEN_MOLES) + return + + var/stop_processing_check = FALSE + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + if(oxygen_input) + oxygen_input.air_contents.remove_specific(/datum/gas/oxygen, REQUIRED_OXYGEN_MOLES) + + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + if(!istype(potential_boulder, /obj/item/boulder)) + process_shard(potential_boulder) + continue + + var/obj/item/boulder/boulder = potential_boulder + if(boulder.durability < 0) + CRASH("\The [src] had a boulder with negative durability!") + if(!check_for_processable_materials(boulder.custom_materials)) //Checks for any new materials we can process. + boulders_concurrent-- //We count skipped boulders + remove_boulder(boulder) + continue + boulders_concurrent-- + boulder.durability-- //One less durability to the processed boulder. + if(COOLDOWN_FINISHED(src, sound_cooldown)) + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(loc, usage_sound, 29, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) //This can get annoying. One play per process() call. + stop_processing_check = TRUE + if(boulder.durability <= 0) + export_clump(boulder) //Crack that bouwlder open! + continue + if(!stop_processing_check) + playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) + return PROCESS_KILL + + +/obj/machinery/bouldertech/purification_chamber/proc/process_shard(obj/item/processing/shards/shard) + for(var/datum/material/material as anything in shard.custom_materials) + var/quantity = shard.custom_materials[material] + var/obj/item/processing/clumps/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + + qdel(shard) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/purification_chamber/proc/export_clump(obj/item/boulder/boulder) + for(var/datum/material/material as anything in boulder.custom_materials) + var/quantity = boulder.custom_materials[material] + for(var/i = 1 to 3) + var/obj/item/processing/clumps/dust = new(get_turf(src)) + dust.custom_materials = list() + dust.custom_materials += material + dust.custom_materials[material] = quantity + dust.set_colors() + dust.forceMove(get_step(src, export_side)) + + qdel(boulder) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/purification_chamber/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(boulders_contained.len >= boulders_held_max) + return FALSE + if(istype(mover, /obj/item/processing/shards)) + return TRUE + return ..() + +/obj/machinery/bouldertech/purification_chamber/return_extras() + var/list/boulders_contained = list() + for(var/obj/item/processing/shards/boulder in contents) + boulders_contained += boulder + return boulders_contained + +/obj/machinery/bouldertech/purification_chamber/check_extras(obj/item/item) + if(istype(item, /obj/item/processing/shards)) + return TRUE + return FALSE + +#undef REQUIRED_OXYGEN_MOLES + +/obj/machinery/portable_atmospherics/purification_input + name = "external purification oxygen tank" + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "air_pump" + pressure_resistance = 7 * ONE_ATMOSPHERE + volume = 2000 + density = TRUE + max_integrity = 300 + integrity_failure = 0.4 + armor_type = /datum/armor/portable_atmospherics_canister + + +/obj/machinery/portable_atmospherics/purification_input/Initialize(mapload) + . = ..() + AddElement(/datum/element/atmos_sensitive, mapload) + AddElement(/datum/element/volatile_gas_storage) + AddComponent(/datum/component/gas_leaker, leak_rate=0.01) + + SSair.start_processing_machine(src) diff --git a/monkestation/code/modules/factory_type_beat/processing/refinery.dm b/monkestation/code/modules/factory_type_beat/processing/refinery.dm new file mode 100644 index 000000000000..0908d7f21dab --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/processing/refinery.dm @@ -0,0 +1,175 @@ +/** + * Your new favorite industrial waste magnet! + * Accepts boulders and produces sheets of non-metalic materials. + * Can be upgraded with stock parts or through chemical inputs. + * When upgraded, it can hold more boulders and process more at once. + * + * Chemical inputs can be used to boost the refinery's efficiency, but produces industrial waste, which eats through the station and is generally difficult to store. + */ + +/obj/machinery/bouldertech/refinery + name = "boulder refinery" + desc = "BR for short. Accepts boulders and refines non-metallic ores into sheets using internal chemicals. Can be upgraded with stock parts or through chemical inputs." + icon_state = "stacker" + holds_minerals = TRUE + processable_materials = list( + /datum/material/glass, + /datum/material/plasma, + /datum/material/diamond, + /datum/material/bluespace, + /datum/material/bananium, + /datum/material/plastic, + ) + circuit = /obj/item/circuitboard/machine/refinery + usage_sound = 'sound/machines/mining/refinery.ogg' + holds_mining_points = TRUE + +/// okay so var that holds mining points to claim +/// add total of pts from minerals mined in parent proc +/// then, little mini UI showing points to collect? + +/obj/machinery/bouldertech/refinery/RefreshParts() + . = ..() + var/manipulator_stack = 0 + var/matter_bin_stack = 0 + for(var/datum/stock_part/manipulator/servo in component_parts) + manipulator_stack += servo.tier - 1 + boulders_processing_max = clamp(manipulator_stack, 1, 6) + for(var/datum/stock_part/matter_bin/bin in component_parts) + matter_bin_stack += bin.tier + boulders_held_max = matter_bin_stack + + +/obj/machinery/bouldertech/refinery/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + if(istype(held_item, /obj/item/boulder)) + context[SCREENTIP_CONTEXT_LMB] = "Insert boulder" + if(istype(held_item, /obj/item/card/id) && points_held > 0) + context[SCREENTIP_CONTEXT_LMB] = "Claim mining points" + context[SCREENTIP_CONTEXT_RMB] = "Remove boulder" + return CONTEXTUAL_SCREENTIP_SET + + +/** + * Your other new favorite industrial waste magnet! + * Accepts boulders and produces sheets of metalic materials. + * Can be upgraded with stock parts or through chemical inputs. + * When upgraded, it can hold more boulders and process more at once. + * + * Chemical inputs can be used to boost the refinery's efficiency, but produces industrial waste, which eats through the station and is generally difficult to store. + */ +/obj/machinery/bouldertech/refinery/smelter + name = "boulder smelter" + desc = "BS for short. Accept boulders and refines metallic ores into sheets. Can be upgraded with stock parts or through gas inputs." + icon_state = "smelter" + processable_materials = list( + /datum/material/iron, + /datum/material/titanium, + /datum/material/silver, + /datum/material/gold, + /datum/material/uranium, + /datum/material/mythril, + /datum/material/adamantine, + /datum/material/runite, + ) + light_system = OVERLAY_LIGHT + light_outer_range = 1 + light_power = 2 + light_color = "#ffaf55" + light_on = FALSE + circuit = /obj/item/circuitboard/machine/smelter + usage_sound = 'sound/machines/mining/smelter.ogg' + +/obj/machinery/bouldertech/refinery/smelter/RefreshParts() + . = ..() + light_power = boulders_processing_max + +/obj/machinery/bouldertech/refinery/smelter/accept_boulder(obj/item/boulder/new_boulder) + . = ..() + if(.) + set_light_on(TRUE) + return TRUE + + +/obj/machinery/bouldertech/refinery/smelter/process() + . = ..() + if(. == PROCESS_KILL) + set_light_on(FALSE) + +/obj/machinery/bouldertech/refinery/process() + if(!anchored) + return PROCESS_KILL + var/stop_processing_check = FALSE + var/boulders_concurrent = boulders_processing_max ///How many boulders can we touch this process() call + for(var/obj/item/potential_boulder as anything in boulders_contained) + if(QDELETED(potential_boulder)) + boulders_contained -= potential_boulder + break + if(boulders_concurrent <= 0) + break //Try again next time + + if(istype(potential_boulder, /obj/item/processing/refined_dust)) + refine_dust(potential_boulder) + + if(!istype(potential_boulder, /obj/item/boulder) && !istype(potential_boulder, /obj/item/processing/refined_dust)) + potential_boulder.forceMove(drop_location()) + CRASH("\The [src] had a non-boulder in it's boulders contained!") + + var/obj/item/boulder/boulder = potential_boulder + if(boulder.durability < 0) + CRASH("\The [src] had a boulder with negative durability!") + if(!check_for_processable_materials(boulder.custom_materials)) //Checks for any new materials we can process. + boulders_concurrent-- //We count skipped boulders + remove_boulder(boulder) + continue + boulders_concurrent-- + boulder.durability-- //One less durability to the processed boulder. + if(COOLDOWN_FINISHED(src, sound_cooldown)) + COOLDOWN_START(src, sound_cooldown, 1.5 SECONDS) + playsound(loc, usage_sound, 29, FALSE, SHORT_RANGE_SOUND_EXTRARANGE) //This can get annoying. One play per process() call. + stop_processing_check = TRUE + if(boulder.durability <= 0) + breakdown_boulder(boulder) //Crack that bouwlder open! + continue + if(!stop_processing_check) + playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) + return PROCESS_KILL + +/obj/machinery/bouldertech/refinery/proc/refine_dust(obj/item/processing/refined_dust/dust) + use_power(BASE_MACHINE_ACTIVE_CONSUMPTION) + var/list/processable_ores = list() + for(var/datum/material/possible_mat as anything in dust.custom_materials) + if(!is_type_in_list(possible_mat, processable_materials)) + continue + var/quantity = dust.custom_materials[possible_mat] + points_held = round((points_held + (quantity * possible_mat.points_per_unit * MINING_POINT_MACHINE_MULTIPLIER))) // put point total here into machine + processable_ores += possible_mat + processable_ores[possible_mat] = quantity + dust.custom_materials -= possible_mat //Remove it from the boulder now that it's tracked + + var/obj/item/boulder/disposable_boulder = new (src) + disposable_boulder.custom_materials = processable_ores + silo_materials.mat_container.insert_item(disposable_boulder, refining_efficiency) + qdel(dust) + playsound(loc, 'sound/weapons/drill.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + update_boulder_count() + +/obj/machinery/bouldertech/refinery/CanAllowThrough(atom/movable/mover, border_dir) + if(!anchored) + return FALSE + if(boulders_contained.len >= boulders_held_max) + return FALSE + if(istype(mover, /obj/item/processing/refined_dust)) + return TRUE + return ..() + +/obj/machinery/bouldertech/refinery/return_extras() + var/list/boulders_contained = list() + for(var/obj/item/processing/refined_dust/boulder in contents) + boulders_contained += boulder + return boulders_contained + +/obj/machinery/bouldertech/refinery/check_extras(obj/item/item) + if(istype(item, /obj/item/processing/refined_dust)) + return TRUE + return FALSE diff --git a/monkestation/code/modules/factory_type_beat/readme.md b/monkestation/code/modules/factory_type_beat/readme.md new file mode 100644 index 000000000000..6c08a3c4a8fc --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/readme.md @@ -0,0 +1 @@ +This also contains the base arcmining stuff in the modular folder as its gonna get real messy diff --git a/monkestation/code/modules/factory_type_beat/ss_ore_gen.dm b/monkestation/code/modules/factory_type_beat/ss_ore_gen.dm new file mode 100644 index 000000000000..54ca83428730 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/ss_ore_gen.dm @@ -0,0 +1,94 @@ + +SUBSYSTEM_DEF(ore_generation) + name = "Ore Generation" + wait = 60 SECONDS + init_order = INIT_ORDER_DEFAULT + runlevels = RUNLEVEL_GAME + + /// All ore vents that are currently producing boulders. + var/list/obj/structure/ore_vent/processed_vents = list() + /// All the ore vents that are currently in the game, not just the ones that are producing boulders. + var/list/obj/structure/ore_vent/possible_vents = list() + /// All the boulders that have been produced by ore vents to be pulled by BRM machines. + var/list/obj/item/boulder/available_boulders = list() + /** + * Associated list of minerals to be associated with our ore vents. + * Generally Should be empty by the time initialize ends on lavaland. + * Each key value is the number of vents that will have this ore as a unique possible choice. + */ + var/static/list/ore_vent_minerals_default = list( + /datum/material/iron = 13, + /datum/material/glass = 12, + /datum/material/plasma = 9, + /datum/material/titanium = 6, + /datum/material/silver = 5, + /datum/material/gold = 5, + /datum/material/diamond = 3, + /datum/material/uranium = 3, + /datum/material/bluespace = 3, + ) + /** + * A list of all the minerals that are being mined by ore vents. We reset this list every time cave generation is done. + * Generally Should be empty by the time initialize ends on lavaland. + * Each key value is the number of vents that will have this ore as a unique possible choice. + * If we call cave_generation more than once, we copy a list from the lists in lists/ores_spawned.dm + */ + var/list/ore_vent_minerals = list() + + /// A tracker of how many of each ore vent size we have in the game. Useful for tracking purposes. + var/list/ore_vent_sizes = list( + LARGE_VENT_TYPE = 0, + MEDIUM_VENT_TYPE = 0, + SMALL_VENT_TYPE = 0, + ) + /// Ores spawned by proximity to an ore vent. Useful for logging purposes. + var/list/post_ore_random = list( + "1" = 0, + "2" = 0, + "3" = 0, + "4" = 0, + "5" = 0, + ) + /// Ores spawned randomly on the map without proximity to an ore vent. Useful for logging purposes. + var/list/post_ore_manual = list( + "1" = 0, + "2" = 0, + "3" = 0, + "4" = 0, + "5" = 0, + ) + +/datum/controller/subsystem/ore_generation/Initialize() + //Basically, we're going to round robin through the list of ore vents and assign a mineral to them until complete. + while(length(ore_vent_minerals) > 0) //Keep looping if there's more to assign + var/stallbreaker = 0 + for(var/obj/structure/ore_vent/vent as anything in possible_vents) + if(length(ore_vent_minerals) <= 0) //But break early if there's none left. + break + if(vent.unique_vent) + continue //Ya'll already got your minerals. + if(length(difflist(first = ore_vent_minerals, second = vent.mineral_breakdown, skiprep = 1))) + vent.generate_mineral_breakdown(new_minerals = 1, map_loading = TRUE) + else + stallbreaker++ + if(stallbreaker >= length(possible_vents)) + break //We've done all we can here. break inner loop + continue + if(stallbreaker >= length(possible_vents)) + break //We've done all we can here. break outer loop + + return SS_INIT_SUCCESS + +/datum/controller/subsystem/ore_generation/fire(resumed) + available_boulders.Cut() // reset upon new fire. + for(var/obj/structure/ore_vent/current_vent as anything in processed_vents) + + var/local_vent_count = 0 + for(var/obj/item/boulder/old_rock in current_vent.loc) + available_boulders += old_rock + local_vent_count++ + + if(local_vent_count >= MAX_BOULDERS_PER_VENT) + continue //We don't want to be accountable for literally hundreds of unprocessed boulders for no reason. + + available_boulders += current_vent.produce_boulder() diff --git a/monkestation/code/modules/factory_type_beat/technodes.dm b/monkestation/code/modules/factory_type_beat/technodes.dm new file mode 100644 index 000000000000..27557f460ed2 --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/technodes.dm @@ -0,0 +1,18 @@ +/datum/techweb_node/ore_processing + id = "ore_processing_nodes" + display_name = "Ore Processing Nodes" + description = "Contains all of the ore processing designs." + design_ids = list( + "brine_chamber", + "purification_chamber", + "enricher", + "crusher", + "crystalizer", + "chemical_injector", + "chemical_washer", + "dissolution_chamber", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000000000000000) // God save you + hidden = TRUE + show_on_wiki = FALSE + starting_node = TRUE diff --git a/monkestation/code/modules/factory_type_beat/yummy.dm b/monkestation/code/modules/factory_type_beat/yummy.dm new file mode 100644 index 000000000000..248f1507b34f --- /dev/null +++ b/monkestation/code/modules/factory_type_beat/yummy.dm @@ -0,0 +1,17 @@ +/obj/item/organ/internal/cyberimp/chest/gyro + name = "Gyrotron-3000" + desc = "Blood sweat and tears went into this bad boy." + encode_info = AUGMENT_NO_REQ + icon_state = "sandy" + actions_types = list(/datum/action/item_action/organ_action/sandy) + icon = 'monkestation/code/modules/cybernetics/icons/implants.dmi' + + /// The bodypart overlay datum we should apply to whatever mob we are put into + visual_implant = TRUE + bodypart_overlay = /datum/bodypart_overlay/simple/gyro + + +/datum/bodypart_overlay/simple/gyro + icon = 'monkestation/code/modules/factory_type_beat/icons/mining_machines.dmi' + icon_state = "gyrotron-3000" + layers = EXTERNAL_FRONT diff --git a/monkestation/code/modules/food_and_drinks/machinery/microwave.dm b/monkestation/code/modules/food_and_drinks/machinery/microwave.dm new file mode 100644 index 000000000000..c675a24cb5ae --- /dev/null +++ b/monkestation/code/modules/food_and_drinks/machinery/microwave.dm @@ -0,0 +1,21 @@ +/obj/machinery/microwave + var/dont_eject_after_done = FALSE + var/can_eject = TRUE + +/obj/machinery/microwave/eject(force = FALSE) + if (!can_eject && !force) + return + . = ..() + + +/obj/machinery/microwave/on_deconstruction() + eject(force = TRUE) + return ..() + +/obj/machinery/microwave/after_finish_loop(dontopen = FALSE) + set_light(0) + soundloop.stop() + if (!dontopen) + open() + else + update_appearance() diff --git a/monkestation/code/modules/ghost_critters/client_addons.dm b/monkestation/code/modules/ghost_critters/client_addons.dm index 780f61f33db9..e0fe4cd10bca 100644 --- a/monkestation/code/modules/ghost_critters/client_addons.dm +++ b/monkestation/code/modules/ghost_critters/client_addons.dm @@ -51,7 +51,7 @@ created_mob.AddComponent(/datum/component/basic_inhands, y_offset = -6) created_mob.AddComponent(/datum/component/max_held_weight, WEIGHT_CLASS_SMALL) created_mob.AddElement(/datum/element/dextrous) - ADD_TRAIT(created_mob, TRAIT_MUTE, INNATE_TRAIT) + created_mob.add_traits(list(TRAIT_MUTE, TRAIT_GHOST_CRITTER), INNATE_TRAIT) if(!mob.mind) mob.mind = new /datum/mind(key) diff --git a/monkestation/code/modules/ghost_critters/ghost_critter_mobs/donator_mobs.dm b/monkestation/code/modules/ghost_critters/ghost_critter_mobs/donator_mobs.dm index d655ba9db7f9..0c852b29ef40 100644 --- a/monkestation/code/modules/ghost_critters/ghost_critter_mobs/donator_mobs.dm +++ b/monkestation/code/modules/ghost_critters/ghost_critter_mobs/donator_mobs.dm @@ -1,4 +1,4 @@ -/mob/living/basic/var/list/ckeywhitelist = list() +/mob/living/basic/var/list/ckeywhitelist /client/proc/return_donator_mobs() var/list/mobs = list( diff --git a/monkestation/code/modules/ghost_players/area_changes.dm b/monkestation/code/modules/ghost_players/area_changes.dm index 1ea4722039cc..703a95ccc9af 100644 --- a/monkestation/code/modules/ghost_players/area_changes.dm +++ b/monkestation/code/modules/ghost_players/area_changes.dm @@ -26,7 +26,7 @@ area_flags = UNIQUE_AREA | NOTELEPORT /area/centcom/central_command_areas/supply - area_flags = UNIQUE_AREA | NOTELEPORT | GHOST_AREA | PASSIVE_AREA | NO_GHOSTS_DURING_ROUND + area_flags = UNIQUE_AREA | NOTELEPORT | PASSIVE_AREA | GHOST_AREA | NO_GHOSTS_DURING_ROUND /area/centcom/central_command_areas/borbop name = "Borbop's Bar" @@ -34,6 +34,10 @@ icon_state = "borbop" area_flags = UNIQUE_AREA | NOTELEPORT | GHOST_AREA | PASSIVE_AREA +/area/centcom/central_command_areas/adminroom + name = "Private Admin Room" + area_flags = UNIQUE_AREA | NOTELEPORT + /area/centcom/central_command_areas/kitchen name = "Papa's Pizzeria" icon = 'monkestation/icons/area/areas_centcom.dmi' @@ -62,14 +66,14 @@ name = "Admin Hangout" icon = 'monkestation/icons/area/areas_centcom.dmi' icon_state = "centcom_hangout" - area_flags = UNIQUE_AREA | NOTELEPORT | GHOST_AREA | PASSIVE_AREA | NO_GHOSTS_DURING_ROUND + area_flags = UNIQUE_AREA | NOTELEPORT | PASSIVE_AREA | GHOST_AREA | NO_GHOSTS_DURING_ROUND /area/centcom/central_command_areas/ghost_blocker name = "During Round Ghost Blocker" area_flags = NOTELEPORT | GHOST_AREA | PASSIVE_AREA | NO_GHOSTS_DURING_ROUND /area/centcom/central_command_areas/evacuation - area_flags = NOTELEPORT | GHOST_AREA | NO_GHOSTS_DURING_ROUND + area_flags = NOTELEPORT /area/centcom/central_command_areas/admin area_flags = NOTELEPORT | GHOST_AREA | NO_GHOSTS_DURING_ROUND diff --git a/monkestation/code/modules/ghost_players/arena/maps/snow.dmm b/monkestation/code/modules/ghost_players/arena/maps/snow.dmm index d59b33d9d9f3..b07925b5143d 100644 --- a/monkestation/code/modules/ghost_players/arena/maps/snow.dmm +++ b/monkestation/code/modules/ghost_players/arena/maps/snow.dmm @@ -284,7 +284,7 @@ /turf/open/floor/wood/large, /area/centcom/tdome/arena/actual) "Vj" = ( -/obj/item/storage/book/bible{ +/obj/item/book/bible{ pixel_y = 5 }, /obj/structure/table/wood, diff --git a/monkestation/code/modules/ghost_players/job_helpers/firing_range_helper.dm b/monkestation/code/modules/ghost_players/job_helpers/firing_range_helper.dm index 4631aaf68f34..80d65b08021d 100644 --- a/monkestation/code/modules/ghost_players/job_helpers/firing_range_helper.dm +++ b/monkestation/code/modules/ghost_players/job_helpers/firing_range_helper.dm @@ -43,6 +43,7 @@ ) blacklisted_types = list( /obj/item/ammo_box/magazine/internal, + /obj/item/gun/magic/artifact, /obj/item/gun/energy/e_gun/dragnet, /obj/item/gun/energy/ionrifle, /obj/item/gun/energy/laser/instakill, diff --git a/monkestation/code/modules/ghost_players/job_helpers/organ_printer.dm b/monkestation/code/modules/ghost_players/job_helpers/organ_printer.dm index 04f1363e1e38..5a134e5bcc91 100644 --- a/monkestation/code/modules/ghost_players/job_helpers/organ_printer.dm +++ b/monkestation/code/modules/ghost_players/job_helpers/organ_printer.dm @@ -31,10 +31,12 @@ choice_list = all_bodyparts var/atom/second_choice = tgui_input_list(user, "Choose what to fabricate", "[choice]", choice_list) + if(!second_choice || !ispath(second_choice, /obj/item)) + return new second_choice(get_turf(src)) say("Organic Matter Fabricated") - playsound(src, 'sound/machines/ding.ogg', 50, TRUE) + playsound(src, 'sound/machines/ding.ogg', vol = 50, vary = TRUE) /obj/structure/organ_creator/attackby(obj/item/attacking_item, mob/user, params) @@ -45,4 +47,4 @@ return qdel(attacking_item) say("Organic Matter Reclaimed") - playsound(src, 'sound/machines/ding.ogg', 50, TRUE) + playsound(src, 'sound/machines/ding.ogg', vol = 50, vary = TRUE) diff --git a/monkestation/code/modules/holomaps/base_datum.dm b/monkestation/code/modules/holomaps/base_datum.dm index 1deac74317c6..4b2296751fee 100644 --- a/monkestation/code/modules/holomaps/base_datum.dm +++ b/monkestation/code/modules/holomaps/base_datum.dm @@ -7,28 +7,31 @@ var/list/disabled_overlays = list() var/total_legend_y - var/map_x - var/map_y + /// This set to TRUE when the station map is initialized on a zLevel that doesn't have its own icon formatted for use by station holomaps. + var/bogus = TRUE + var/turf/location_turf var/map_z /datum/station_holomap/New() . = ..() cursor = image('monkestation/code/modules/holomaps/icons/8x8.dmi', "you") -/datum/station_holomap/proc/initialize_holomap(map_x, map_y, map_z, var/mob/user = null, var/reinit_base_map = FALSE, extra_overlays = list()) - src.map_x = map_x - src.map_y = map_y - src.map_z = map_z +/datum/station_holomap/proc/initialize_holomap(turf/T, current_z_level, mob/user = null, reinit_base_map = FALSE, extra_overlays = list()) + bogus = FALSE + location_turf = T + map_z = current_z_level + + if(!("[HOLOMAP_EXTRA_STATIONMAP]_[map_z]" in SSholomaps.extra_holomaps)) + initialize_holomap_bogus() + return if(!base_map || reinit_base_map) base_map = image(SSholomaps.extra_holomaps["[HOLOMAP_EXTRA_STATIONMAP]_[map_z]"]) if(isAI(user) || isaicamera(user)) var/turf/eye_turf = get_turf(user?.client?.eye) - if(!eye_turf) - return - src.map_x = eye_turf.x - src.map_y = eye_turf.y + if(eye_turf) + location_turf = eye_turf update_map(extra_overlays) @@ -39,7 +42,7 @@ overlay_icon.pixel_x = HOLOMAP_LEGEND_X overlay_icon.pixel_y = legend_y - overlay_icon.maptext = "[overlay_name]" + overlay_icon.maptext = MAPTEXT("[overlay_name]") overlay_icon.maptext_x = 10 overlay_icon.maptext_width = 64 base_map.add_overlay(overlay_icon) @@ -63,11 +66,22 @@ /datum/station_holomap/proc/update_map(list/overlays_to_use = list()) base_map.cut_overlays() - if(map_x && map_y && SSmapping.level_has_all_traits(map_z, ZTRAIT_STATION)) - cursor.pixel_x = map_x - 3 + HOLOMAP_CENTER_X - cursor.pixel_y = map_y - 3 + HOLOMAP_CENTER_Y + if(bogus) + var/image/legend = image('monkestation/code/modules/holomaps/icons/64x64.dmi', "notfound") + legend.pixel_x = 192 + legend.pixel_y = 224 + base_map.add_overlay(legend) + return + + if(location_turf && location_turf.z == map_z && SSmapping.level_has_all_traits(location_turf.z, list(ZTRAIT_STATION))) + cursor.pixel_x = location_turf.x - 3 + HOLOMAP_CENTER_X + cursor.pixel_y = location_turf.y - 3 + HOLOMAP_CENTER_Y base_map.add_overlay(cursor) + overlays_to_use["You are here"] = list( + "icon" = image('monkestation/code/modules/holomaps/icons/8x8.dmi', "you"), + "markers" = list() + ) for(var/overlay as anything in overlays_to_use) if(overlay in disabled_overlays) @@ -78,11 +92,11 @@ generate_legend(overlays_to_use) +/datum/station_holomap/proc/reset_map() + disabled_overlays = list() + /datum/station_holomap/proc/initialize_holomap_bogus() + bogus = TRUE base_map = image('monkestation/code/modules/holomaps/icons/480x480.dmi', "stationmap") - var/image/legend = image('monkestation/code/modules/holomaps/icons/64x64.dmi', "notfound") - legend.pixel_x = 192 - legend.pixel_y = 224 - - update_map(overlays_to_use = list(legend)) + update_map() diff --git a/monkestation/code/modules/holomaps/huds.dm b/monkestation/code/modules/holomaps/huds.dm index 23b0cb3ac97b..e384faaa82bc 100644 --- a/monkestation/code/modules/holomaps/huds.dm +++ b/monkestation/code/modules/holomaps/huds.dm @@ -14,6 +14,7 @@ /atom/movable/screen/holomap /// The owner. Used to get z-level data. var/obj/machinery/station_map/used_station_map + var/image/used_base_map /atom/movable/screen/holomap/Click(location, control, params) . = ..() @@ -64,7 +65,8 @@ var/text_for_screentip = position_to_name["[icon_x]:[icon_y]"] - maptext = "[text_for_screentip]" - maptext_x = icon_x - maptext_y = icon_y - maptext_width = 96 + used_base_map.maptext = MAPTEXT_TINY_UNICODE("[text_for_screentip]") + used_base_map.maptext_x = icon_x + used_base_map.maptext_y = icon_y + used_base_map.maptext_width = 96 + used_base_map.maptext_height = 96 diff --git a/monkestation/code/modules/holomaps/machinery.dm b/monkestation/code/modules/holomaps/machinery.dm index 37ed02cfd66b..31eaa8a599d6 100644 --- a/monkestation/code/modules/holomaps/machinery.dm +++ b/monkestation/code/modules/holomaps/machinery.dm @@ -6,8 +6,8 @@ // Credit to polaris for the code which this current map was originally based off of, and credit to VG for making it in the first place. /obj/machinery/station_map - name = "\improper ship holomap" - desc = "A virtual map of the surrounding ship." + name = "\improper station holomap" + desc = "A virtual map of the surrounding station." icon = 'monkestation/code/modules/holomaps/icons/stationmap.dmi' icon_state = "station_map" layer = ABOVE_WINDOW_LAYER @@ -24,16 +24,16 @@ /// The little "map" floor painting. var/image/floor_markings - // zLevel which the map is a map for. + // zLevel which the map is a map for. Change this to have mapload holomaps look at other zlevels. var/current_z_level - /// This set to FALSE when the station map is initialized on a zLevel that has its own icon formatted for use by station holomaps. - var/bogus = TRUE + /// The various images and icons for the map are stored in here, as well as the actual big map itself. var/datum/station_holomap/holomap_datum /obj/machinery/station_map/Initialize() . = ..() - current_z_level = loc.z + if(!current_z_level) + current_z_level = loc.z SSholomaps.station_holomaps += src return INITIALIZE_HINT_LATELOAD @@ -50,33 +50,28 @@ /obj/machinery/station_map/proc/setup_holomap() holomap_datum = new() - bogus = FALSE var/turf/current_turf = get_turf(src) - if(!("[HOLOMAP_EXTRA_STATIONMAP]_[current_z_level]" in SSholomaps.extra_holomaps)) - bogus = TRUE - holomap_datum.initialize_holomap_bogus() - update_icon() - return - holomap_datum.initialize_holomap(current_turf.x, current_turf.y, current_z_level, reinit_base_map = TRUE, extra_overlays = handle_overlays()) + holomap_datum.initialize_holomap(current_turf, current_z_level, reinit_base_map = TRUE, extra_overlays = handle_overlays()) floor_markings = image('monkestation/code/modules/holomaps/icons/stationmap.dmi', "decal_station_map") floor_markings.dir = src.dir update_icon() -/obj/machinery/station_map/attack_hand(var/mob/user) +/obj/machinery/station_map/attack_hand(mob/user) if(user == watching_mob) close_map(user) return if(watching_mob && watching_mob != user) + to_chat(user, span_warning("Someone else is currently watching the holomap.")) return open_map(user) /// Tries to open the map for the given mob. Returns FALSE if it doesn't meet the criteria, TRUE if the map successfully opened with no runtimes. -/obj/machinery/station_map/proc/open_map(var/mob/user) +/obj/machinery/station_map/proc/open_map(mob/user) if(!anchored || (machine_stat & (NOPOWER | BROKEN)) || !user?.client || panel_open || user.hud_used.holomap.used_station_map) return FALSE @@ -99,6 +94,7 @@ set_light(HOLOMAP_HIGH_LIGHT) user.hud_used.holomap.used_station_map = src + user.hud_used.holomap.used_base_map = holomap_datum.base_map user.hud_used.holomap.mouse_opacity = MOUSE_OPACITY_ICON user.client.screen |= user.hud_used.holomap user.client.images |= holomap_datum.base_map @@ -106,14 +102,14 @@ watching_mob = user use_power = ACTIVE_POWER_USE - if(bogus) - to_chat(user, "The holomap failed to initialize. This area of space cannot be mapped.") + if(holomap_datum.bogus) + to_chat(user, span_warning("The holomap failed to initialize. This area of space cannot be mapped.")) else - to_chat(user, "A hologram of the station appears before your eyes.") + to_chat(user, span_warning("A hologram of the station appears before your eyes.")) return TRUE -/obj/machinery/station_map/attack_ai(var/mob/living/silicon/robot/user) +/obj/machinery/station_map/attack_ai(mob/living/silicon/robot/user) attack_hand(user) /obj/machinery/station_map/attack_robot(mob/user) @@ -125,11 +121,9 @@ /obj/machinery/station_map/proc/check_position() SIGNAL_HANDLER - if(!watching_mob) - return - if(!Adjacent(watching_mob)) - close_map(watching_mob) + if(!watching_mob || (watching_mob.loc != loc) || (dir != watching_mob.dir)) + close_map() /obj/machinery/station_map/proc/close_map() if(!watching_mob) @@ -144,10 +138,12 @@ watching_mob.client?.screen -= watching_mob.hud_used.holomap watching_mob.client?.images -= holomap_datum.base_map watching_mob.hud_used.holomap.used_station_map = null + watching_mob.hud_used.holomap.used_base_map = null watching_mob = null set_light(HOLOMAP_LOW_LIGHT) use_power = IDLE_POWER_USE + holomap_datum.reset_map() /obj/machinery/station_map/power_change() . = ..() @@ -177,9 +173,7 @@ else icon_state = initial(icon_state) - if(bogus) - holomap_datum.initialize_holomap_bogus() - else + if(!holomap_datum.bogus) small_station_map = image(SSholomaps.extra_holomaps["[HOLOMAP_EXTRA_STATIONMAPSMALL]_[current_z_level]"], dir = src.dir) add_overlay(small_station_map) @@ -204,10 +198,10 @@ /obj/machinery/station_map/multitool_act(mob/living/user, obj/item/tool) if(!panel_open) - to_chat(user, "You need to open the panel to change the [src]'[p_s()] settings! 1) - to_chat(user, "There are no other maps available for [src]!") + to_chat(user, span_warning("There are no other maps available for [src]!")) return FALSE tool.play_tool_sound(user, 50) @@ -217,7 +211,7 @@ else current_z_level = SSholomaps.valid_map_indexes[current_index + 1] - to_chat(user, "You set the [src]'[p_s()] database index to [current_z_level].") + to_chat(user, span_info("You set the [src]'[p_s()] database index to [current_z_level].")) return TRUE /obj/machinery/station_map/crowbar_act(mob/living/user, obj/item/tool) @@ -278,7 +272,6 @@ z_has_coverage = TRUE if(z_has_coverage) legend["Meteor Shield"] = list("icon" = image('monkestation/code/modules/holomaps/icons/8x8.dmi', icon_state = "meteor_shield"), "markers" = list(image(canvas))) - return legend /obj/machinery/station_map/engineering @@ -297,7 +290,7 @@ /obj/machinery/station_map/engineering/handle_overlays() var/list/extra_overlays = ..() - if(bogus) + if(holomap_datum.bogus) return extra_overlays var/list/fire_alarms = list() diff --git a/monkestation/code/modules/holomaps/subsystem.dm b/monkestation/code/modules/holomaps/subsystem.dm index ad3af1ce5b17..1d6b25da5f6b 100644 --- a/monkestation/code/modules/holomaps/subsystem.dm +++ b/monkestation/code/modules/holomaps/subsystem.dm @@ -63,7 +63,7 @@ SUBSYSTEM_DEF(holomaps) return TRUE /// Generates the base holomap and the area holomap, before passing the latter to setup_station_map to tidy it up for viewing. -/datum/controller/subsystem/holomaps/proc/generate_holomap(var/z_level = 1) +/datum/controller/subsystem/holomaps/proc/generate_holomap(z_level = 1) // Sanity checks - Better to generate a helpful error message now than have DrawBox() runtime var/icon/canvas = icon(HOLOMAP_ICON, "blank") var/icon/area_canvas = icon(HOLOMAP_ICON, "blank") diff --git a/monkestation/code/modules/hydroponics/botanical_lexicon.dm b/monkestation/code/modules/hydroponics/botanical_lexicon.dm index 653b042df625..c81ee38a940e 100644 --- a/monkestation/code/modules/hydroponics/botanical_lexicon.dm +++ b/monkestation/code/modules/hydroponics/botanical_lexicon.dm @@ -5,15 +5,20 @@ icon_state = "chicken_book" /obj/item/botanical_lexicon/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user,src,ui) + ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user,src,"BotanicalLexicon") + ui = new(user, src, "BotanicalLexicon") + ui.set_autoupdate(FALSE) ui.open() -/obj/item/botanical_lexicon/ui_act(action,list/params) +/obj/item/botanical_lexicon/ui_act(action, list/params) if(..()) return +/obj/item/botanical_lexicon/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/botanical_lexicon), + ) /obj/item/botanical_lexicon/ui_static_data(mob/user) var/list/data = list() @@ -24,10 +29,10 @@ if(!listed_mutation.created_seed) continue - var/obj/item/seeds/created_seed = new listed_mutation.created_seed + var/obj/item/seeds/created_seed = listed_mutation.created_seed - details["name"] = created_seed.name - details["desc"] = created_seed.desc + details["name"] = created_seed::name + details["desc"] = created_seed::desc if(listed_mutation.required_potency.len) details["potency_low"] = listed_mutation.required_potency[1] @@ -60,15 +65,7 @@ reagent_names += initial(listed_reagent.name) details["required_reagents"] = reagent_names.Join(",") - - var/icon/plant_icon = getFlatIcon(created_seed) - var/md5 = md5(fcopy_rsc(plant_icon)) - if(!SSassets.cache["photo_[md5]_[created_seed.name]_icon.png"]) - SSassets.transport.register_asset("photo_[md5]_[created_seed.name]_icon.png", plant_icon) - SSassets.transport.send_assets(user, list("photo_[md5]_[created_seed.name]_icon.png" = plant_icon)) - details["plant_icon"] = SSassets.transport.get_asset_url("photo_[md5]_[created_seed.name]_icon.png") - - qdel(created_seed) + details["plant_icon"] = sanitize_css_class_name("[created_seed::icon]_[created_seed::icon_state]") plant_list += list(details) qdel(listed_mutation) diff --git a/monkestation/code/modules/hydroponics/machines/composter.dm b/monkestation/code/modules/hydroponics/machines/composter.dm index c313e24f47dd..fa196f23c12c 100644 --- a/monkestation/code/modules/hydroponics/machines/composter.dm +++ b/monkestation/code/modules/hydroponics/machines/composter.dm @@ -4,9 +4,15 @@ icon = 'monkestation/icons/obj/machines/composter.dmi' icon_state = "composter" density = TRUE + circuit = /obj/item/circuitboard/machine/composters //current biomatter level - var/biomatter = 80 + var/biomatter = 0 + +/obj/machinery/composters/Initialize(mapload) + . = ..() + if(mapload) + biomatter = 80 /obj/machinery/composters/attacked_by(obj/item/attacking_item, mob/living/user) . = ..() @@ -81,6 +87,15 @@ else . += mutable_appearance('monkestation/icons/obj/machines/composter.dmi', "light_on", layer = OBJ_LAYER + 0.01) +/obj/machinery/composters/screwdriver_act(mob/living/user, obj/item/tool) + . = ..() + if(!.) + return default_deconstruction_screwdriver(user, "composter_open", "composter", tool) + +/obj/machinery/composters/crowbar_act(mob/living/user, obj/item/tool) + if(!default_deconstruction_crowbar(tool)) + return ..() + /obj/machinery/composters/proc/compost(list/composting, allow_carbons = FALSE) if(!islist(composting)) composting = list(composting) diff --git a/monkestation/code/modules/job_xp/job_xp_menu.dm b/monkestation/code/modules/job_xp/job_xp_menu.dm index 5694f092c939..e568d3db072c 100644 --- a/monkestation/code/modules/job_xp/job_xp_menu.dm +++ b/monkestation/code/modules/job_xp/job_xp_menu.dm @@ -8,7 +8,7 @@ . = ..() owner = creator -/datum/xp_menu/Destroy(force, ...) +/datum/xp_menu/Destroy(force) . = ..() owner = null diff --git a/monkestation/code/modules/jobs/job_types/brig_physician.dm b/monkestation/code/modules/jobs/job_types/brig_physician.dm index 3865969ff26f..063f13cd2867 100644 --- a/monkestation/code/modules/jobs/job_types/brig_physician.dm +++ b/monkestation/code/modules/jobs/job_types/brig_physician.dm @@ -7,6 +7,9 @@ total_positions = 1 spawn_positions = 1 supervisors = SUPERVISOR_HOS + exp_requirements = 600 + exp_required_type = EXP_TYPE_CREW + exp_required_type_department = EXP_TYPE_SECURITY exp_granted_type = EXP_TYPE_CREW config_tag = "BRIG_PHYSICIAN" @@ -47,7 +50,7 @@ uniform = /obj/item/clothing/under/rank/security/scrubs/sec suit = /obj/item/clothing/suit/toggle/labcoat/brig_physician suit_store = /obj/item/flashlight/pen - belt = /obj/item/modular_computer/pda/security + belt = /obj/item/modular_computer/pda/security/brig_physician ears = /obj/item/radio/headset/headset_secmed head = /obj/item/clothing/head/utility/surgerycap/sec shoes = /obj/item/clothing/shoes/sneakers/secred diff --git a/monkestation/code/modules/liquids/liquid_controller.dm b/monkestation/code/modules/liquids/liquid_controller.dm index 89d186a14156..2d68de78cae4 100644 --- a/monkestation/code/modules/liquids/liquid_controller.dm +++ b/monkestation/code/modules/liquids/liquid_controller.dm @@ -89,7 +89,7 @@ SUBSYSTEM_DEF(liquids) group_process_work_queue -= liquid_group continue liquid_group.process_group(TRUE) - if(populate_evaporation && (liquid_group.expected_turf_height < LIQUID_STATE_ANKLES) && liquid_group.evaporates) + if(populate_evaporation && (liquid_group.always_evaporates || liquid_group.expected_turf_height < LIQUID_STATE_ANKLES) && liquid_group.evaporates) for(var/turf/listed_turf as anything in liquid_group.members) if(QDELETED(listed_turf)) continue @@ -184,6 +184,7 @@ SUBSYSTEM_DEF(liquids) list_clear_nulls(active_turf_group_queue) if(member_counter > REQUIRED_MEMBER_PROCESSES) + list_clear_nulls(cached_exposures) if(!length(cached_exposures)) for(var/datum/liquid_group/liquid_group as anything in active_turf_group_queue) if(MC_TICK_CHECK) @@ -195,30 +196,26 @@ SUBSYSTEM_DEF(liquids) active_turf_group_queue -= liquid_group if(!liquid_group.exposure) continue - for(var/turf/member as anything in liquid_group.members) - cached_exposures += liquid_group.members + cached_exposures |= liquid_group.members var/process_count = 0 var/list/groups_we_rebuilt = list() while((process_count <= 500) && length(cached_exposures)) process_count++ var/turf/member = pick_n_take(cached_exposures) - if(!member) - break - if(MC_TICK_CHECK) - return - + if(QDELETED(member) || QDELETED(member.liquids) || QDELETED(member.liquids.liquid_group)) + continue var/datum/liquid_group/liquid_group = member.liquids.liquid_group if(!(liquid_group in groups_we_rebuilt)) groups_we_rebuilt |= liquid_group liquid_group.build_turf_reagent() - cached_exposures -= member if(!istype(member) || QDELING(member)) liquid_group.members -= member continue liquid_group.process_member(member) - + if(MC_TICK_CHECK) + return member_counter = 0 run_type = SSLIQUIDS_RUN_TYPE_CACHED_EDGES diff --git a/monkestation/code/modules/liquids/liquid_effect.dm b/monkestation/code/modules/liquids/liquid_effect.dm index 5cc950bd9535..ed287ebe9ce5 100644 --- a/monkestation/code/modules/liquids/liquid_effect.dm +++ b/monkestation/code/modules/liquids/liquid_effect.dm @@ -42,20 +42,68 @@ var/temporary_split_key +/obj/effect/abstract/liquid_turf/Initialize(mapload, datum/liquid_group/group_to_add) + . = ..() + if(!small_fire) + small_fire = new + if(!medium_fire) + medium_fire = new + if(!big_fire) + big_fire = new + + my_turf ||= loc + + if(QDELETED(my_turf.liquids)) + my_turf.liquids = src + + if(!QDELETED(group_to_add)) + group_to_add.add_to_group(my_turf) + set_new_liquid_state(liquid_group.group_overlay_state) + + if(QDELETED(liquid_group) && QDELETED(group_to_add)) + liquid_group = new(1, src) + + if(!SSliquids) + CRASH("Liquid Turf created with the liquids sybsystem not yet initialized!") + RegisterSignal(my_turf, COMSIG_ATOM_ENTERED, PROC_REF(movable_entered)) + RegisterSignal(my_turf, COMSIG_TURF_MOB_FALL, PROC_REF(mob_fall)) + RegisterSignal(my_turf, COMSIG_ATOM_EXAMINE, PROC_REF(examine_turf)) + + if(SEND_SIGNAL(my_turf, COMSIG_TURF_LIQUIDS_CREATION, src) & BLOCK_LIQUID_CREATION) + return INITIALIZE_HINT_QDEL + + if(z) + QUEUE_SMOOTH(src) + QUEUE_SMOOTH_NEIGHBORS(src) + +/obj/effect/abstract/liquid_turf/Destroy(force) + UnregisterSignal(my_turf, list(COMSIG_ATOM_ENTERED, COMSIG_TURF_MOB_FALL, COMSIG_ATOM_EXAMINE)) + if(!isnull(my_turf)) + liquid_group?.remove_from_group(my_turf) + SSliquids.evaporation_queue -= my_turf + SSliquids.burning_turfs -= my_turf + SSliquids.cached_exposures -= my_turf + my_turf.liquids = null + liquid_group = null + my_turf = null + QUEUE_SMOOTH_NEIGHBORS(src) + return ..() /obj/effect/abstract/liquid_turf/proc/process_evaporation() - if(liquid_group.expected_turf_height > LIQUID_ANKLES_LEVEL_HEIGHT) + if(!liquid_group.always_evaporates && (liquid_group.expected_turf_height > LIQUID_ANKLES_LEVEL_HEIGHT)) SSliquids.evaporation_queue -= my_turf return //See if any of our reagents evaporates var/any_change = FALSE + var/always_evaporates = liquid_group.always_evaporates + var/evaporation_multiplier = liquid_group.evaporation_multiplier var/datum/reagent/R //Faster declaration for(var/reagent_type in liquid_group.reagents.reagent_list) R = reagent_type //We evaporate. bye bye - if(initial(R.evaporates)) - var/remove_amount = min((initial(R.evaporation_rate)), R.volume, (liquid_group.reagents_per_turf / length(liquid_group.reagents.reagent_list))) + if(initial(R.evaporates) || always_evaporates) + var/remove_amount = min((initial(R.evaporation_rate)) * evaporation_multiplier, R.volume, (liquid_group.reagents_per_turf / length(liquid_group.reagents.reagent_list))) liquid_group.remove_specific(src, remove_amount, R, TRUE) any_change = TRUE R.evaporate(src.loc, remove_amount) @@ -64,7 +112,7 @@ SSliquids.evaporation_queue -= my_turf return -/obj/effect/abstract/liquid_turf/forceMove(atom/destination, no_tp=FALSE, harderforce = FALSE) +/obj/effect/abstract/liquid_turf/forceMove(atom/destination, no_tp = FALSE, harderforce = FALSE) if(harderforce) . = ..() @@ -171,56 +219,6 @@ else to_chat(M, span_userdanger("You fall in the water!")) -/obj/effect/abstract/liquid_turf/Initialize(mapload, datum/liquid_group/group_to_add) - . = ..() - if(!small_fire) - small_fire = new - if(!medium_fire) - medium_fire = new - if(!big_fire) - big_fire = new - - if(!my_turf) - my_turf = loc - - if(!my_turf.liquids) - my_turf.liquids = src - - if(group_to_add) - group_to_add.add_to_group(my_turf) - set_new_liquid_state(liquid_group.group_overlay_state) - - if(!liquid_group && !group_to_add) - liquid_group = new(1, src) - - if(!SSliquids) - CRASH("Liquid Turf created with the liquids sybsystem not yet initialized!") - my_turf = loc - RegisterSignal(my_turf, COMSIG_ATOM_ENTERED, PROC_REF(movable_entered)) - RegisterSignal(my_turf, COMSIG_TURF_MOB_FALL, PROC_REF(mob_fall)) - RegisterSignal(my_turf, COMSIG_ATOM_EXAMINE, PROC_REF(examine_turf)) - - if(SEND_SIGNAL(my_turf, COMSIG_TURF_LIQUIDS_CREATION, src) & BLOCK_LIQUID_CREATION) - return INITIALIZE_HINT_QDEL - - if(z) - QUEUE_SMOOTH(src) - QUEUE_SMOOTH_NEIGHBORS(src) - - -/obj/effect/abstract/liquid_turf/Destroy(force) - UnregisterSignal(my_turf, list(COMSIG_ATOM_ENTERED, COMSIG_TURF_MOB_FALL, COMSIG_ATOM_EXAMINE)) - if(liquid_group) - liquid_group.remove_from_group(my_turf) - if(my_turf in SSliquids.evaporation_queue) - SSliquids.evaporation_queue -= my_turf - if(my_turf in SSliquids.burning_turfs) - SSliquids.burning_turfs -= my_turf - my_turf.liquids = null - my_turf = null - QUEUE_SMOOTH_NEIGHBORS(src) - return ..() - /obj/effect/abstract/liquid_turf/proc/ChangeToNewTurf(turf/NewT) if(NewT.liquids) stack_trace("Liquids tried to change to a new turf, that already had liquids on it!") diff --git a/monkestation/code/modules/liquids/liquid_groups.dm b/monkestation/code/modules/liquids/liquid_groups.dm index 19911ecf14e8..85d5ddbd1ffb 100644 --- a/monkestation/code/modules/liquids/liquid_groups.dm +++ b/monkestation/code/modules/liquids/liquid_groups.dm @@ -58,6 +58,10 @@ GLOBAL_VAR_INIT(liquid_debug_colors, FALSE) var/list/current_temperature_queue = list() ///do we evaporate var/evaporates = TRUE + /// Liquids in this group will always evaporate regardless of height + var/always_evaporates = FALSE + /// The multiplier added to the evaporation rate of all reagents in this group. + var/evaporation_multiplier = 1 ///can we merge? var/can_merge = TRUE ///number in decimal value that acts as a multiplier to the amount of liquids lost in applications @@ -83,16 +87,26 @@ GLOBAL_VAR_INIT(liquid_debug_colors, FALSE) /datum/liquid_group/Destroy() UnregisterSignal(reagents, COMSIG_REAGENTS_DEL_REAGENT) SSliquids.active_groups -= src - - if(src in SSliquids.arrayed_groups) - SSliquids.arrayed_groups -= src /// Someone made a massive fucky wucky if this is happening - + SSliquids.active_turf_group_queue -= src + SSliquids.arrayed_groups -= src /// Someone made a massive fucky wucky if this is happening for(var/turf/member_turf as anything in members) - member_turf?.liquids?.liquid_group = null - members = list() + if(member_turf?.liquids?.liquid_group == src) + QDEL_NULL(member_turf.liquids) + members = null burning_members = null + cached_edge_turfs = null + cached_fire_spreads = null + cached_reagent_list = null + current_temperature_queue = null + splitting_array = null return ..() +/datum/liquid_group/proc/copy_properties(datum/liquid_group/from) + if(isnull(from)) + return + always_evaporates = from.always_evaporates + evaporation_multiplier = from.evaporation_multiplier + /datum/liquid_group/proc/removed_reagent(datum/reagents/source, datum/reagent/modified) for(var/turf/member as anything in members) if(QDELETED(member.liquids)) @@ -122,19 +136,21 @@ GLOBAL_VAR_INIT(liquid_debug_colors, FALSE) process_group() /datum/liquid_group/proc/remove_from_group(turf/T, should_reprocess = TRUE) - - if(T in burning_members) + if(isnull(T)) + return + SSliquids.burning_turfs -= T + if(burning_members) burning_members -= T - - if(T in SSliquids.burning_turfs) - SSliquids.burning_turfs -= T - - members -= T + if(members) + members -= T T.liquids?.liquid_group = null for(var/datum/reagent/reagent as anything in reagents.reagent_list) reagent.remove_from_member(T.liquids) + if(QDELING(src)) + return + if(!length(members)) qdel(src) return @@ -171,6 +187,8 @@ GLOBAL_VAR_INIT(liquid_debug_colors, FALSE) total_reagent_volume = reagents.total_volume reagents_per_turf = total_reagent_volume / length(members) + always_evaporates ||= otherg.always_evaporates + evaporation_multiplier = (evaporation_multiplier + otherg.evaporation_multiplier) * 0.5 // average the evaporation multipliers qdel(otherg) process_group() @@ -392,6 +410,7 @@ GLOBAL_VAR_INIT(liquid_debug_colors, FALSE) /datum/liquid_group/proc/move_liquid_group(obj/effect/abstract/liquid_turf/member) remove_from_group(member.my_turf) member.liquid_group = new(1, member) + member.liquid_group.copy_properties(src) var/remove_amount = reagents_per_turf / length(reagents.reagent_list) for(var/datum/reagent/reagent_type in reagents.reagent_list) member.liquid_group.reagents.add_reagent(reagent_type, remove_amount, no_react = TRUE) @@ -694,6 +713,8 @@ GLOBAL_VAR_INIT(liquid_debug_colors, FALSE) passed_directions.Add(direction) if(length(passed_directions)) + if(!islist(cached_edge_turfs)) // what the fuck??? + cached_edge_turfs = list() cached_edge_turfs |= checker cached_edge_turfs[checker] = passed_directions @@ -808,6 +829,7 @@ GLOBAL_VAR_INIT(liquid_debug_colors, FALSE) var/amount_to_transfer = length(connected_liquids) * reagents_per_turf var/datum/liquid_group/new_group = new(1) + new_group.copy_properties(src) for(var/turf/connected_liquid in connected_liquids) new_group.check_edges(connected_liquid) @@ -884,6 +906,7 @@ GLOBAL_VAR_INIT(liquid_debug_colors, FALSE) var/amount_to_transfer = length(connected_liquids) * reagents_per_turf var/datum/liquid_group/new_group = new(1) + new_group.copy_properties(src) if(!members) members = list() trans_to_seperate_group(new_group.reagents, amount_to_transfer) diff --git a/monkestation/code/modules/liquids/liquid_interaction.dm b/monkestation/code/modules/liquids/liquid_interaction.dm index e9b725047a85..9e62641611c3 100644 --- a/monkestation/code/modules/liquids/liquid_interaction.dm +++ b/monkestation/code/modules/liquids/liquid_interaction.dm @@ -11,7 +11,7 @@ interaction_callback = CALLBACK(parent, on_interaction_callback) -/datum/component/liquids_interaction/Destroy(force, silent) +/datum/component/liquids_interaction/Destroy(force) interaction_callback = null return ..() diff --git a/monkestation/code/modules/liquids/liquid_pump.dm b/monkestation/code/modules/liquids/liquid_pump.dm index 353c9ad557fc..3322a617e726 100644 --- a/monkestation/code/modules/liquids/liquid_pump.dm +++ b/monkestation/code/modules/liquids/liquid_pump.dm @@ -6,7 +6,6 @@ icon_state = "liquid_pump" density = TRUE max_integrity = 500 - anchored = FALSE resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF /// How many reagents at maximum can it hold var/max_volume = 10000 @@ -21,7 +20,7 @@ /obj/structure/liquid_pump/wrench_act(mob/living/user, obj/item/I) . = ..() - default_unfasten_wrench(user, I, 40) + default_unfasten_wrench(user, I, 20) if(!anchored && turned_on) toggle_working() return TRUE @@ -34,7 +33,7 @@ toggle_working() /obj/structure/liquid_pump/AltClick(mob/living/user) - if(!user.can_perform_action()) + if(!user.can_perform_action(src)) return to_chat(user, span_notice("You flick [src]'s spewing mode [spewing_mode ? "off" : "on"].")) spewing_mode = !spewing_mode @@ -67,7 +66,7 @@ var/target_siphon_amt = (T.liquids.liquid_group.total_reagent_volume * pump_speed_percentage) + pump_speed_flat if(target_siphon_amt > free_space) target_siphon_amt = free_space - T.liquids.liquid_group.transfer_to_atom(src, target_siphon_amt) + T.liquids.liquid_group.trans_to_seperate_group(reagents, target_siphon_amt) return /obj/structure/liquid_pump/update_icon() diff --git a/monkestation/code/modules/loadouts/items/neck.dm b/monkestation/code/modules/loadouts/items/neck.dm index 983b4245e2a8..99825e818760 100644 --- a/monkestation/code/modules/loadouts/items/neck.dm +++ b/monkestation/code/modules/loadouts/items/neck.dm @@ -289,12 +289,12 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck) restricted_roles = list(JOB_HEAD_OF_SECURITY) requires_purchase = FALSE -/* + /datum/loadout_item/neck/mantle_bs name = "Blueshield's Mantle" item_path = /obj/item/clothing/neck/mantle/bsmantle restricted_roles = list(JOB_BLUESHIELD) -*/ + /datum/loadout_item/neck/mantle_cap name = "Captain's Mantle" item_path = /obj/item/clothing/neck/mantle/capmantle diff --git a/monkestation/code/modules/loadouts/items/toys.dm b/monkestation/code/modules/loadouts/items/toys.dm index ffc34fe5e535..cb6e2d2e4947 100644 --- a/monkestation/code/modules/loadouts/items/toys.dm +++ b/monkestation/code/modules/loadouts/items/toys.dm @@ -217,3 +217,7 @@ GLOBAL_LIST_INIT(loadout_toys, generate_loadout_items(/datum/loadout_item/toys)) item_path = /obj/item/toy/plush/cirno_plush/ballin requires_purchase = FALSE ckeywhitelist = list("dwasint") + +/datum/loadout_item/toys/durrcell + name = "Durrcell Plush" + item_path = /obj/item/toy/plush/durrcell diff --git a/monkestation/code/modules/mech_comp/_interface.dm b/monkestation/code/modules/mech_comp/_interface.dm index 8a9c267b7bfa..071b6605e51c 100644 --- a/monkestation/code/modules/mech_comp/_interface.dm +++ b/monkestation/code/modules/mech_comp/_interface.dm @@ -10,7 +10,7 @@ owner = _owner RegisterSignal() -/datum/mcinterface/Destroy(force, ...) +/datum/mcinterface/Destroy(force) owner = null ClearConnections() return ..() diff --git a/monkestation/code/modules/mech_comp/objects/flush.dm b/monkestation/code/modules/mech_comp/objects/flush.dm index 649208b3810a..8aa0672df51f 100644 --- a/monkestation/code/modules/mech_comp/objects/flush.dm +++ b/monkestation/code/modules/mech_comp/objects/flush.dm @@ -27,6 +27,11 @@ trunk_check() if(!trunk || !COOLDOWN_FINISHED(src, flush_cd) || !input?.cmd) return + + if(QDELETED(trunk)) + trunk = null + return + var/count = 0 for(var/atom/movable/listed_movable in src.loc) if(listed_movable.anchored) diff --git a/monkestation/code/modules/mech_comp/objects/messages/button.dm b/monkestation/code/modules/mech_comp/objects/messages/button.dm index 2d6b169339d7..d305e7416eac 100644 --- a/monkestation/code/modules/mech_comp/objects/messages/button.dm +++ b/monkestation/code/modules/mech_comp/objects/messages/button.dm @@ -9,6 +9,7 @@ . = ..() if(.) return + playsound(src, SFX_BUTTON_CLICK, vol = 45, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE, mixer_channel = CHANNEL_MACHINERY) flick(icon_down, src) fire(stored_message) log_message("triggered by [key_name(user)]", LOG_MECHCOMP) @@ -21,6 +22,8 @@ if(!user.dropItemToGround(src)) return + if(!user.CanReach(target)) + return forceMove(target) if(isclosedturf(target)) icon_up = "comp_switch" diff --git a/monkestation/code/modules/mech_comp/objects/messages/button_panel.dm b/monkestation/code/modules/mech_comp/objects/messages/button_panel.dm index 0213ab8ec805..98c9dd18c1a3 100644 --- a/monkestation/code/modules/mech_comp/objects/messages/button_panel.dm +++ b/monkestation/code/modules/mech_comp/objects/messages/button_panel.dm @@ -28,6 +28,7 @@ flick("comp_buttpanel1", src) fire(active_buttons[selected_button]) + playsound(src, SFX_BUTTON_CLICK, vol = 45, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE, mixer_channel = CHANNEL_MACHINERY) log_message("triggered by [key_name(user)]", LOG_MECHCOMP) return TRUE diff --git a/monkestation/code/modules/meteor_shield/meteor_shield_field.dm b/monkestation/code/modules/meteor_shield/meteor_shield_field.dm index 3084be43e1d0..ab546d5a565a 100644 --- a/monkestation/code/modules/meteor_shield/meteor_shield_field.dm +++ b/monkestation/code/modules/meteor_shield/meteor_shield_field.dm @@ -18,7 +18,7 @@ GLOBAL_LIST_EMPTY_TYPED(meteor_shield_fields, /datum/proximity_monitor/advanced/ /datum/proximity_monitor/advanced/meteor_shield/setup_field_turf(turf/open/target) if(!isgroundlessturf(target)) return - if(true_host.check_los(get_turf(true_host), target)) + if(true_host.check_los(get_turf(host), target)) ADD_TRAIT(target, TRAIT_COVERED_BY_METEOR_SHIELD, REF(src)) target.AddElement(/datum/element/meteor_shield_coverage) diff --git a/monkestation/code/modules/mining/lavaland/tendril_loot.dm b/monkestation/code/modules/mining/lavaland/tendril_loot.dm new file mode 100644 index 000000000000..ea730afcdc8c --- /dev/null +++ b/monkestation/code/modules/mining/lavaland/tendril_loot.dm @@ -0,0 +1,14 @@ +/obj/item/clothing/neck/necklace/memento_mori/attack_hand(mob/user, list/modifiers) + if(prevent_accidental_suicide(user)) + return + return ..() + +/obj/item/clothing/neck/necklace/memento_mori/MouseDrop(atom/over_object) + if(prevent_accidental_suicide(over_object)) + return + return ..() + +/obj/item/clothing/neck/necklace/memento_mori/proc/prevent_accidental_suicide(mob/user) + if(user == active_owner && tgui_alert(user, "Taking this off will INSTANTLY KILL YOU! Are you really sure you want to take it off?", "Memento Mori", list("Yes", "No")) != "Yes") + return TRUE + return FALSE diff --git a/monkestation/code/modules/mob/dead/new_player/new_player.dm b/monkestation/code/modules/mob/dead/new_player/new_player.dm index 5f6d6cb8d5c0..ff657817d278 100644 --- a/monkestation/code/modules/mob/dead/new_player/new_player.dm +++ b/monkestation/code/modules/mob/dead/new_player/new_player.dm @@ -1,3 +1,8 @@ /mob/dead/new_player /// What is our temp assignment, used for round start antag calculation var/datum/job/temp_assignment + +/mob/dead/new_player/Destroy() + . = ..() + if(temp_assignment) + temp_assignment = null diff --git a/monkestation/code/modules/mob/dead/new_player/sprite_accessories/ipc_screens.dm b/monkestation/code/modules/mob/dead/new_player/sprite_accessories/ipc_screens.dm index 7b46fbbae052..a4e57f99fd88 100644 --- a/monkestation/code/modules/mob/dead/new_player/sprite_accessories/ipc_screens.dm +++ b/monkestation/code/modules/mob/dead/new_player/sprite_accessories/ipc_screens.dm @@ -1,6 +1,6 @@ /datum/sprite_accessory/ipc_screens icon = 'monkestation/icons/mob/species/ipc/ipc_screens.dmi' - color_src = EYECOLOR + color_src = EYE_COLOR is_emissive = TRUE /datum/sprite_accessory/ipc_screens/blue diff --git a/monkestation/code/modules/mob/living/basic/pets/parrot/parrot_ai/parroting_action.dm b/monkestation/code/modules/mob/living/basic/pets/parrot/parrot_ai/parroting_action.dm index 96c6ed44340c..b2b34ddb6624 100644 --- a/monkestation/code/modules/mob/living/basic/pets/parrot/parrot_ai/parroting_action.dm +++ b/monkestation/code/modules/mob/living/basic/pets/parrot/parrot_ai/parroting_action.dm @@ -1,5 +1,3 @@ -/datum/ai_behavior/perform_speech/parrot - action_cooldown = 45 SECONDS // SHUT UP - /datum/ai_behavior/perform_speech/parrot/perform(seconds_per_tick, datum/ai_controller/controller, ...) - controller.behavior_cooldowns[src] = world.time + rand(45 SECONDS, 3 MINUTES) + controller.behavior_cooldowns[src] = world.time + rand(45 SECONDS, 3 MINUTES) // Prevents Poly from being too yappy + . = ..() diff --git a/monkestation/code/modules/mob/living/basic/trooper/syndicate.dm b/monkestation/code/modules/mob/living/basic/trooper/syndicate.dm new file mode 100644 index 000000000000..c7e08e3e50e2 --- /dev/null +++ b/monkestation/code/modules/mob/living/basic/trooper/syndicate.dm @@ -0,0 +1,21 @@ +// Weaker variants of the syndie trooper NPCs for the Shocktroops event +/mob/living/basic/trooper/syndicate/melee/space/lesser + maxHealth = 45 + health = 45 + melee_damage_lower = 8 + melee_damage_upper = 15 + melee_attack_cooldown = 1.5 SECONDS + +/mob/living/basic/trooper/syndicate/melee/space/stormtrooper/lesser + maxHealth = 100 + health = 100 + melee_damage_lower = 10 + melee_damage_upper = 18 + melee_attack_cooldown = 1.5 SECONDS + +/mob/living/basic/trooper/syndicate/ranged/space/lesser + maxHealth = 45 + health = 45 + melee_damage_lower = 5 + melee_damage_upper = 10 + ranged_cooldown = 3 SECONDS diff --git a/monkestation/code/modules/mob/living/carbon/emote.dm b/monkestation/code/modules/mob/living/carbon/emote.dm index c5d020a39791..922607389cad 100644 --- a/monkestation/code/modules/mob/living/carbon/emote.dm +++ b/monkestation/code/modules/mob/living/carbon/emote.dm @@ -51,7 +51,7 @@ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' inhand_icon_state = "nothing" - item_flags = DROPDEL | HAND_ITEM + item_flags = DROPDEL | HAND_ITEM | ABSTRACT force = 0 throwforce = 0 load_sound_volume = 0 diff --git a/monkestation/code/modules/mob/living/carbon/human/emotes.dm b/monkestation/code/modules/mob/living/carbon/human/emotes.dm index 3b41962c83ca..4edc0f25db10 100644 --- a/monkestation/code/modules/mob/living/carbon/human/emotes.dm +++ b/monkestation/code/modules/mob/living/carbon/human/emotes.dm @@ -17,7 +17,7 @@ //BIBLEFART/ //This goes above all else because it's an instagib. - for(var/obj/item/storage/book/bible/Holy in Location) + for(var/obj/item/book/bible/Holy in Location) if(Holy) var/mob/living/carbon/human/Person = user //We know they are human already, it was in the emote check. var/turf/T = get_step(get_step(Person, NORTH), NORTH) diff --git a/monkestation/code/modules/mob/living/carbon/human/init_signals.dm b/monkestation/code/modules/mob/living/carbon/human/init_signals.dm new file mode 100644 index 000000000000..754a8c324a11 --- /dev/null +++ b/monkestation/code/modules/mob/living/carbon/human/init_signals.dm @@ -0,0 +1,7 @@ +/mob/living/carbon/human/register_init_signals() + . = ..() + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_NOBLOOD), PROC_REF(on_lose_noblood_trait)) + +/mob/living/carbon/human/proc/on_lose_noblood_trait(datum/source) + SIGNAL_HANDLER + blood_volume = clamp(blood_volume, BLOOD_VOLUME_NORMAL, BLOOD_VOLUME_MAXIMUM - 1) diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/arachnid.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/arachnid.dm index 2bdf8aceb1bb..0ceef81fbf51 100644 --- a/monkestation/code/modules/mob/living/carbon/human/species_type/arachnid.dm +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/arachnid.dm @@ -6,8 +6,6 @@ visual_gender = FALSE species_traits = list( MUTCOLORS, - EYECOLOR, - LIPS, ) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG external_organs = list( diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/ethereal.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/ethereal.dm index d9c24a68dc1d..d97fcac41e35 100644 --- a/monkestation/code/modules/mob/living/carbon/human/species_type/ethereal.dm +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/ethereal.dm @@ -22,9 +22,6 @@ species_traits = list( DYNCOLORS, NO_UNDERWEAR, - HAIR, - EYECOLOR, - FACEHAIR, ) changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT species_cookie = /obj/item/food/energybar @@ -37,6 +34,7 @@ bodytemp_cold_damage_limit = (T20C - 10) // about 10c hair_color = "fixedmutcolor" hair_alpha = 180 + facial_hair_alpha = 180 bodypart_overrides = list( BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/ethereal, diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/goblin.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/goblin.dm index 0fa326c6d101..a4dfb03b1d78 100644 --- a/monkestation/code/modules/mob/living/carbon/human/species_type/goblin.dm +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/goblin.dm @@ -6,9 +6,6 @@ sexes = TRUE species_traits = list( MUTCOLORS, - EYECOLOR, - HAIR, - FACEHAIR ) inherent_traits = list( TRAIT_DWARF, diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/simian.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/simian.dm index 6afdad1ae0c0..d3e17e50bb00 100644 --- a/monkestation/code/modules/mob/living/carbon/human/species_type/simian.dm +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/simian.dm @@ -6,10 +6,9 @@ bodytype = BODYTYPE_CUSTOM species_traits = list( - EYECOLOR, - LIPS, NO_UNDERWEAR, SPECIES_FUR, + SKINTONES, ) inherent_traits = list( TRAIT_VAULTING, diff --git a/monkestation/code/modules/mob/living/carbon/human/species_type/skeletons.dm b/monkestation/code/modules/mob/living/carbon/human/species_type/skeletons.dm index bd27a5997bc4..7aec8942833f 100644 --- a/monkestation/code/modules/mob/living/carbon/human/species_type/skeletons.dm +++ b/monkestation/code/modules/mob/living/carbon/human/species_type/skeletons.dm @@ -12,11 +12,9 @@ meat = /obj/item/food/meat/slab/human/mutant/skeleton species_traits = list( NOTRANSSTING, - NOEYESPRITES, NO_DNA_COPY, NO_UNDERWEAR, NOHUSK, - HAIR, ) inherent_traits = list( TRAIT_CAN_USE_FLIGHT_POTION, diff --git a/monkestation/code/modules/mob/living/living_movement.dm b/monkestation/code/modules/mob/living/living_movement.dm new file mode 100644 index 000000000000..a2efb7be0ec5 --- /dev/null +++ b/monkestation/code/modules/mob/living/living_movement.dm @@ -0,0 +1,4 @@ +/mob/living/CanAllowThrough(atom/movable/mover, border_dir) + if(SEND_SIGNAL(src, COMSIG_LIVING_CAN_ALLOW_THROUGH, mover, border_dir) & COMPONENT_LIVING_PASSABLE) + return TRUE + return ..() diff --git a/monkestation/code/modules/mob/mob_say.dm b/monkestation/code/modules/mob/mob_say.dm new file mode 100644 index 000000000000..6c157cd224e3 --- /dev/null +++ b/monkestation/code/modules/mob/mob_say.dm @@ -0,0 +1,6 @@ +/mob/say_dead() + if(!client?.holder && !GLOB.deadchat_allowed && !QDELETED(src)) + to_chat(src, span_danger("Deadchat is disabled.")) + return + + . = ..() diff --git a/monkestation/code/modules/modular_computers/computers/item/role_tablet_presets.dm b/monkestation/code/modules/modular_computers/computers/item/role_tablet_presets.dm new file mode 100644 index 000000000000..07e1dc55418d --- /dev/null +++ b/monkestation/code/modules/modular_computers/computers/item/role_tablet_presets.dm @@ -0,0 +1,11 @@ +/obj/item/modular_computer/pda/security/brig_physician + name = "brig physician PDA" + greyscale_config = /datum/greyscale_config/tablet/stripe_split + greyscale_colors = "#A52F29#0000CC#918F8C" + starting_programs = list( + /datum/computer_file/program/records/security, + /datum/computer_file/program/records/medical, + /datum/computer_file/program/crew_manifest, + /datum/computer_file/program/robocontrol, + /datum/computer_file/program/radar/lifeline // For finding security officers + ) diff --git a/monkestation/code/modules/ocean_content/mobs/group_planning.dm b/monkestation/code/modules/ocean_content/mobs/group_planning.dm index f07261ad13f6..d780a607f97f 100644 --- a/monkestation/code/modules/ocean_content/mobs/group_planning.dm +++ b/monkestation/code/modules/ocean_content/mobs/group_planning.dm @@ -18,7 +18,7 @@ ///our current_target var/atom/target -/datum/group_planning/Destroy(force, ...) +/datum/group_planning/Destroy(force) . = ..() finished_mobs = null in_progress_mobs = null diff --git a/monkestation/code/modules/outdoors/code/_onclick/hud/fullscreen.dm b/monkestation/code/modules/outdoors/code/_onclick/hud/fullscreen.dm index 78b9f0093092..73e4d4efa8ff 100644 --- a/monkestation/code/modules/outdoors/code/_onclick/hud/fullscreen.dm +++ b/monkestation/code/modules/outdoors/code/_onclick/hud/fullscreen.dm @@ -15,6 +15,8 @@ /atom/movable/screen/fullscreen/lighting_backdrop/sunlight/Initialize() . = ..() + if(!SSoutdoor_effects.enabled) + return SSoutdoor_effects.sunlighting_planes |= src color = SSoutdoor_effects.last_color @@ -23,11 +25,8 @@ if(SSmapping.level_trait(z, ZTRAIT_DAYCYCLE)) daylight = TRUE continue - if(!daylight) - SSoutdoor_effects.transition_sunlight_color(src, 1) - else - SSoutdoor_effects.transition_sunlight_color(src) + SSoutdoor_effects.transition_sunlight_color(src, !daylight) /atom/movable/screen/fullscreen/lighting_backdrop/sunlight/Destroy() - . = ..() SSoutdoor_effects.sunlighting_planes -= src + return ..() diff --git a/monkestation/code/modules/outdoors/code/_onclick/hud/rendering/plane_master.dm b/monkestation/code/modules/outdoors/code/_onclick/hud/rendering/plane_master.dm index 8ba92a976454..5acd4cab4451 100644 --- a/monkestation/code/modules/outdoors/code/_onclick/hud/rendering/plane_master.dm +++ b/monkestation/code/modules/outdoors/code/_onclick/hud/rendering/plane_master.dm @@ -31,7 +31,8 @@ /atom/movable/screen/plane_master/weather_effect/Initialize() . = ..() //filters += filter(type="alpha", render_source=WEATHER_RENDER_TARGET) - SSoutdoor_effects.weather_planes_need_vis |= src + if(SSoutdoor_effects.enabled) + SSoutdoor_effects.weather_planes_need_vis |= src /atom/movable/screen/plane_master/weather_effect/Destroy() . = ..() diff --git a/monkestation/code/modules/outdoors/code/admin_commands.dm b/monkestation/code/modules/outdoors/code/admin_commands.dm index d28f4c58ff40..70108388ddaa 100644 --- a/monkestation/code/modules/outdoors/code/admin_commands.dm +++ b/monkestation/code/modules/outdoors/code/admin_commands.dm @@ -6,6 +6,10 @@ if(!holder) return + if(!SSparticle_weather.enabled) + to_chat(src, span_warning("Particle weather is currently disabled!"), type = MESSAGE_TYPE_ADMINLOG) + return + var/weather_type = input("Choose a weather", "Weather") as null|anything in sort_list(subtypesof(/datum/particle_weather), /proc/cmp_typepaths_asc) if(!weather_type) return diff --git a/monkestation/code/modules/outdoors/code/controllers/subsystem/outdoors_effects.dm b/monkestation/code/modules/outdoors/code/controllers/subsystem/outdoors_effects.dm index 8916d5222ea4..27bfd058c20b 100644 --- a/monkestation/code/modules/outdoors/code/controllers/subsystem/outdoors_effects.dm +++ b/monkestation/code/modules/outdoors/code/controllers/subsystem/outdoors_effects.dm @@ -98,19 +98,24 @@ SUBSYSTEM_DEF(outdoor_effects) new /datum/time_of_day/midnight()) var/next_day = FALSE // Resets when station_time is less than the next start time. var/current_color + var/enabled = TRUE // Micro-optimization to avoid having to check config or bitflags /datum/controller/subsystem/outdoor_effects/stat_entry(msg) msg = "W:[GLOB.SUNLIGHT_QUEUE_WORK.len]|U:[GLOB.SUNLIGHT_QUEUE_UPDATE.len]|C:[GLOB.SUNLIGHT_QUEUE_CORNER.len]" return ..() /datum/controller/subsystem/outdoor_effects/proc/fullPlonk() - for (var/z in (SSmapping.levels_by_trait(ZTRAIT_DAYCYCLE) + SSmapping.levels_by_trait(ZTRAIT_STARLIGHT))) - for (var/turf/T in block(locate(1,1,z), locate(world.maxx,world.maxy,z))) - var/area/TArea = T.loc - if (TArea.static_lighting) - GLOB.SUNLIGHT_QUEUE_WORK += T + var/list/zs = SSmapping.levels_by_trait(ZTRAIT_DAYCYCLE) | SSmapping.levels_by_trait(ZTRAIT_STARLIGHT) + for(var/area/area as anything in GLOB.areas) + if(!area.static_lighting) + continue + for(var/z in zs) + GLOB.SUNLIGHT_QUEUE_WORK += area.get_turfs_by_zlevel(z) /datum/controller/subsystem/outdoor_effects/Initialize(timeofday) + if(CONFIG_GET(flag/disable_sunlight_visuals)) + disable() + return SS_INIT_NO_NEED if(SSmapping.config.map_name == "Oshan Station") for(var/datum/time_of_day/listed_time as anything in time_cycle_steps) qdel(listed_time) @@ -141,13 +146,22 @@ SUBSYSTEM_DEF(outdoor_effects) return SS_INIT_SUCCESS -/datum/controller/subsystem/outdoor_effects/proc/InitializeTurfs(list/targets) - for (var/z in (SSmapping.levels_by_trait(ZTRAIT_DAYCYCLE) + SSmapping.levels_by_trait(ZTRAIT_STARLIGHT))) - for (var/turf/T in block(locate(1,1,z), locate(world.maxx,world.maxy,z))) - var/area/TArea = T.loc - if (TArea.static_lighting || istype(TArea, /area/space)) - GLOB.SUNLIGHT_QUEUE_WORK += T - +/datum/controller/subsystem/outdoor_effects/proc/InitializeTurfs() + var/list/zs = SSmapping.levels_by_trait(ZTRAIT_DAYCYCLE) | SSmapping.levels_by_trait(ZTRAIT_STARLIGHT) + for(var/area/area as anything in GLOB.areas) + if(!area.static_lighting && !istype(area, /area/space)) + continue + for(var/z in zs) + GLOB.SUNLIGHT_QUEUE_WORK += area.get_turfs_by_zlevel(z) + +/// Disables the subsystem, cleaning up its vars and preventing it from firing. +/datum/controller/subsystem/outdoor_effects/proc/disable() + enabled = FALSE + flags |= SS_NO_FIRE + QDEL_LIST(time_cycle_steps) + QDEL_NULL(current_step_datum) + QDEL_NULL(next_step_datum) + weather_light_affecting_event = null /datum/controller/subsystem/outdoor_effects/proc/check_cycle() if(!next_step_datum) @@ -188,6 +202,8 @@ SUBSYSTEM_DEF(outdoor_effects) /* set sunlight color + add weather effect to clients */ /datum/controller/subsystem/outdoor_effects/fire(resumed, init_tick_checks) + if(!enabled) + return MC_SPLIT_TICK_INIT(3) if(!init_tick_checks) MC_SPLIT_TICK @@ -280,6 +296,8 @@ SUBSYSTEM_DEF(outdoor_effects) //Transition from our last color to our current color (i.e if it is going from daylight (white) to sunset (red), we transition to red in the first hour of sunset) /datum/controller/subsystem/outdoor_effects/proc/transition_sunlight_color(atom/movable/screen/fullscreen/lighting_backdrop/sunlight/SP, time_given) + if(!enabled) + return /* transistion in an hour or time diff from now to our next step, whichever is smaller */ if(!next_step_datum) get_time_of_day() diff --git a/monkestation/code/modules/outdoors/code/controllers/subsystem/particle_weather.dm b/monkestation/code/modules/outdoors/code/controllers/subsystem/particle_weather.dm index 9d0cd983e4fe..d4c9de962da2 100644 --- a/monkestation/code/modules/outdoors/code/controllers/subsystem/particle_weather.dm +++ b/monkestation/code/modules/outdoors/code/controllers/subsystem/particle_weather.dm @@ -22,22 +22,27 @@ SUBSYSTEM_DEF(particle_weather) var/datum/weather_effect/weather_special_effect_eclipse var/obj/weather_effect/weather_effect_eclipse + var/enabled = TRUE + /datum/controller/subsystem/particle_weather/stat_entry(msg) - if(running_weather?.running) - var/time_left = COOLDOWN_TIMELEFT(running_weather, time_left)/10 - var/time_left_eclipse = COOLDOWN_TIMELEFT(running_eclipse_weather, time_left)/10 - if(running_weather?.display_name) - msg = "P:Current event station: [running_weather.display_name] - [time_left] seconds left, Current event Eclipse: [running_eclipse_weather.display_name] - [time_left_eclipse] seconds left" - else if(running_weather) - msg = "P:Current event of unknown type ([running_weather]) - [time_left] seconds left" - else if(running_weather) - var/time_left = COOLDOWN_TIMELEFT(src, next_weather_start) - if(running_weather?.display_name) - msg = "P:Next event: [running_weather.display_name] hit in [time_left] seconds" + if(enabled) + if(running_weather?.running) + var/time_left = COOLDOWN_TIMELEFT(running_weather, time_left)/10 + var/time_left_eclipse = COOLDOWN_TIMELEFT(running_eclipse_weather, time_left)/10 + if(running_weather?.display_name) + msg = "P:Current event station: [running_weather.display_name] - [time_left] seconds left, Current event Eclipse: [running_eclipse_weather.display_name] - [time_left_eclipse] seconds left" + else if(running_weather) + msg = "P:Current event of unknown type ([running_weather]) - [time_left] seconds left" else if(running_weather) - msg = "P:Next event of unknown type ([running_weather]) hit in [time_left] seconds" + var/time_left = COOLDOWN_TIMELEFT(src, next_weather_start) + if(running_weather?.display_name) + msg = "P:Next event: [running_weather.display_name] hit in [time_left] seconds" + else if(running_weather) + msg = "P:Next event of unknown type ([running_weather]) hit in [time_left] seconds" + else + msg = "P:No event" else - msg = "P:No event" + msg = "Disabled" return ..() /datum/controller/subsystem/particle_weather/fire() @@ -77,6 +82,9 @@ SUBSYSTEM_DEF(particle_weather) //This has been mangled - currently only supports 1 weather effect serverwide so I can finish this /datum/controller/subsystem/particle_weather/Initialize(start_timeofday) + if(CONFIG_GET(flag/disable_particle_weather)) + disable() + return SS_INIT_NO_NEED for(var/i in subtypesof(/datum/particle_weather)) var/datum/particle_weather/particle_weather = new i if(particle_weather.target_trait in SSmapping.config.particle_weathers) @@ -87,7 +95,14 @@ SUBSYSTEM_DEF(particle_weather) return SS_INIT_SUCCESS +/datum/controller/subsystem/particle_weather/proc/disable() + flags |= SS_NO_FIRE + enabled = FALSE + stop_weather() + /datum/controller/subsystem/particle_weather/proc/run_weather(datum/particle_weather/weather_datum_type, force = FALSE, eclipse = FALSE) + if(!enabled) + return if(eclipse) if(running_eclipse_weather) if(force) diff --git a/monkestation/code/modules/outdoors/code/datum/particle_weathers/_particle_weather.dm b/monkestation/code/modules/outdoors/code/datum/particle_weathers/_particle_weather.dm index b19483266997..35cb0c5b366c 100644 --- a/monkestation/code/modules/outdoors/code/datum/particle_weathers/_particle_weather.dm +++ b/monkestation/code/modules/outdoors/code/datum/particle_weathers/_particle_weather.dm @@ -25,7 +25,7 @@ GLOBAL_LIST_EMPTY(siren_objects) initiator_ref = particle_weather start_process() -/datum/weather_event/Destroy(force, ...) +/datum/weather_event/Destroy(force) . = ..() if(initiator_ref) initiator_ref.weather_additional_ongoing_events -= src @@ -67,10 +67,11 @@ GLOBAL_LIST_EMPTY(siren_objects) else playsound_z(SSmapping.levels_by_trait(ZTRAIT_ECLIPSE), pick(sound_effects), 50, _mixer_channel = CHANNEL_WEATHER) if(GLE_STAGE_THIRD) - color_animating = SSoutdoor_effects.current_color + if(SSoutdoor_effects.enabled) + color_animating = SSoutdoor_effects.current_color animate_flags = CIRCULAR_EASING | EASE_IN - if(color_animating) + if(color_animating && SSoutdoor_effects.enabled) for(var/atom/movable/screen/fullscreen/lighting_backdrop/sunlight/plane in SSoutdoor_effects.sunlighting_planes) animate(plane, color = color_animating, easing = animate_flags, time = duration) @@ -82,9 +83,10 @@ GLOBAL_LIST_EMPTY(siren_objects) sleep(duration) else if(stage > max_stages) - SSoutdoor_effects.weather_light_affecting_event = null - for(var/atom/movable/screen/fullscreen/lighting_backdrop/sunlight/plane in SSoutdoor_effects.sunlighting_planes) - SSoutdoor_effects.transition_sunlight_color(plane) + if(SSoutdoor_effects.enabled) + SSoutdoor_effects.weather_light_affecting_event = null + for(var/atom/movable/screen/fullscreen/lighting_backdrop/sunlight/plane in SSoutdoor_effects.sunlighting_planes) + SSoutdoor_effects.transition_sunlight_color(plane) qdel(src) return @@ -430,9 +432,13 @@ GLOBAL_LIST_EMPTY(siren_objects) var/weather_message = weather_warnings["message"] message += weather_message for(var/mob/living/carbon/human/affected_human in GLOB.alive_mob_list) - if(!affected_human.stat && affected_human.client && (affected_human.z in affected_zlevels)) - affected_human.playsound_local('monkestation/code/modules/outdoors/sound/effects/radiostatic.ogg', affected_human.loc, 25, FALSE, mixer_channel = CHANNEL_MACHINERY) - affected_human.play_screen_text("Weather Alert:
    " + message["human"], /atom/movable/screen/text/screen_text/command_order, rgb(103, 214, 146)) + if(affected_human.stat || QDELETED(affected_human.client)) + continue + var/turf/affected_turf = get_turf(affected_human) + if(!(affected_turf?.z in affected_zlevels)) + continue + affected_human.playsound_local('monkestation/code/modules/outdoors/sound/effects/radiostatic.ogg', affected_human.loc, 25, FALSE, mixer_channel = CHANNEL_MACHINERY) + affected_human.play_screen_text("Weather Alert:
    " + message["human"], /atom/movable/screen/text/screen_text/command_order, rgb(103, 214, 146)) return FALSE /datum/looping_sound/dust_storm diff --git a/monkestation/code/modules/overwatch/subsystem.dm b/monkestation/code/modules/overwatch/subsystem.dm index cccf55d66fcc..84e12a75c876 100644 --- a/monkestation/code/modules/overwatch/subsystem.dm +++ b/monkestation/code/modules/overwatch/subsystem.dm @@ -19,13 +19,11 @@ SUBSYSTEM_DEF(overwatch) var/list/client/postponed_client_queue = list() /datum/controller/subsystem/overwatch/Initialize(timeofday) - if(!CONFIG_GET(flag/sql_enabled)) log_sql("Overwatch could not be loaded without SQL enabled") - return ..() - + return SS_INIT_NO_NEED Toggle() - return ..() + return SS_INIT_SUCCESS /datum/controller/subsystem/overwatch/stat_entry(msg) return "[is_active ? "ACTIVE" : "OFFLINE"]" diff --git a/monkestation/code/modules/pai/card.dm b/monkestation/code/modules/pai/card.dm new file mode 100644 index 000000000000..6196ca0bbd4b --- /dev/null +++ b/monkestation/code/modules/pai/card.dm @@ -0,0 +1,8 @@ +/obj/item/pai_card/examine(mob/user) + . = ..() + . += span_notice("There's a sticker on the back. You can look again to take a closer look...") + +/obj/item/pai_card/examine_more(mob/user) + . = ..() + . += span_notice("You examine [src] closer, and note the following...") + . += "\"Nanotrasen silicon units are incompatible with magic of any form, including but not limited to: Heretical runes, wizard spells, and blood summonings. Nanotrasen takes no responsibility for any damage that may occur to the device as a result of trying to combine Nanotrasen silicon and magic.\"" diff --git a/monkestation/code/modules/paperwork/filingcabinet.dm b/monkestation/code/modules/paperwork/filingcabinet.dm new file mode 100644 index 000000000000..672c9d347d5c --- /dev/null +++ b/monkestation/code/modules/paperwork/filingcabinet.dm @@ -0,0 +1,2 @@ +/obj/structure/filingcabinet + pass_flags_self = parent_type::pass_flags_self | LETPASSCLICKS diff --git a/monkestation/code/modules/patches_if_they_were_cool/_base_patch_changes.dm b/monkestation/code/modules/patches_if_they_were_cool/_base_patch_changes.dm index 2271f350f103..0d831130c7d9 100644 --- a/monkestation/code/modules/patches_if_they_were_cool/_base_patch_changes.dm +++ b/monkestation/code/modules/patches_if_they_were_cool/_base_patch_changes.dm @@ -17,8 +17,9 @@ if(!isliving(target)) return - if(!do_after(user, CHEM_INTERACT_DELAY(0.1 SECONDS, user), target)) - return + if(target != user) + if(!do_after(user, CHEM_INTERACT_DELAY(3 SECONDS, user), target)) + return var/list/parameters = params2list(params) if(!LAZYACCESS(parameters, ICON_X) || !LAZYACCESS(parameters, ICON_Y)) @@ -62,8 +63,9 @@ /obj/item/reagent_containers/pill/patch/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() - if(!. && prob(15) && isliving(hit_atom)) - stick(hit_atom,rand(-7,7),rand(-7,7)) + if(!. && prob(10) && isliving(hit_atom)) + stick(hit_atom, throwingdatum.thrower, rand(-7,7), rand(-7,7)) + to_chat(attached, span_bolddanger("[src] has stuck to you.")) attached.balloon_alert_to_viewers("[src] lands on its sticky side!") ///Signal handler for COMSIG_LIVING_IGNITED, deletes this patch, if it is flammable diff --git a/monkestation/code/modules/physics/physics_component.dm b/monkestation/code/modules/physics/physics_component.dm index fd7b02da5754..5c678839c235 100644 --- a/monkestation/code/modules/physics/physics_component.dm +++ b/monkestation/code/modules/physics/physics_component.dm @@ -64,6 +64,8 @@ var/datum/callback/bounce_callback /// If we have this callback, it gets invoked when stopping movement var/datum/callback/stop_callback + /// If we have this callback, it gets invoked when bumping on another atom + var/datum/callback/bump_callback /** * The cached animate_movement of the parent @@ -94,6 +96,7 @@ bounce_spin_clockwise = 0, bounce_sound, bounce_callback, + bump_callback, stop_callback, ) if(!ismovable(parent)) @@ -118,16 +121,19 @@ src.bounce_spin_clockwise = bounce_spin_clockwise src.bounce_sound = bounce_sound src.bounce_callback = bounce_callback + src.bump_callback = bump_callback src.stop_callback = stop_callback set_angle(angle) -/datum/component/movable_physics/Destroy(force, silent) +/datum/component/movable_physics/Destroy(force) + STOP_PROCESSING(SSmovable_physics, src) bounce_callback = null stop_callback = null cached_transform = null return ..() /datum/component/movable_physics/RegisterWithParent() + RegisterSignal(parent, COMSIG_MOVABLE_NEWTONIAN_MOVE, PROC_REF(on_newtonian_move)) RegisterSignal(parent, COMSIG_MOVABLE_BUMP, PROC_REF(on_bump)) if(isitem(parent)) RegisterSignal(parent, COMSIG_ITEM_PICKUP, PROC_REF(on_item_pickup)) @@ -145,7 +151,7 @@ // NOTE: This component will work very poorly at anything less than ticking 10 times per second /datum/component/movable_physics/process(seconds_per_tick) var/atom/movable/moving_atom = parent - if(!isturf(moving_atom.loc) || !has_movement()) + if(!isturf(moving_atom.loc) || QDELING(moving_atom.loc) || !has_movement()) stop_movement() return PROCESS_KILL @@ -158,22 +164,28 @@ //this code basically only makes sense if we only move at most a single tile per tick, it is absolutely fucked otherwise while(tick_amount > 0) tick_amount-- + //we need to know if we have gravity right now to apply friction and such, yeah + var/has_gravity = moving_atom.has_gravity() + moving_atom.pixel_x = round(moving_atom.pixel_x + (horizontal_velocity * sin(angle)), MOVABLE_PHYSICS_PRECISION) moving_atom.pixel_y = round(moving_atom.pixel_y + (horizontal_velocity * cos(angle)), MOVABLE_PHYSICS_PRECISION) - moving_atom.pixel_z = round(max(z_floor, moving_atom.pixel_z + vertical_velocity), MOVABLE_PHYSICS_PRECISION) + moving_atom.pixel_z = round(clamp(moving_atom.pixel_z + vertical_velocity, z_floor, world.icon_size), MOVABLE_PHYSICS_PRECISION) moving_atom.adjust_visual_angle(round(visual_angle_velocity, 1)) - horizontal_velocity = max(0, horizontal_velocity - horizontal_friction) - // we are not on the floor, apply friction - if(moving_atom.pixel_z > z_floor) - vertical_velocity -= vertical_friction - // we are on the floor, try to bounce if we have any vertical velocity - else if(moving_atom.pixel_z <= z_floor && vertical_velocity) - z_floor_bounce(moving_atom) - - visual_angle_velocity = max(0, visual_angle_velocity - visual_angle_friction) + if(has_gravity) + visual_angle_velocity = max(0, visual_angle_velocity - visual_angle_friction) + horizontal_velocity = max(0, horizontal_velocity - horizontal_friction) + // we are not on the floor, apply friction + if(moving_atom.pixel_z > z_floor) + vertical_velocity -= vertical_friction + // we are on the floor, try to bounce if we have any vertical velocity + else if(moving_atom.pixel_z <= z_floor && vertical_velocity) + z_floor_bounce(moving_atom) + // z_floor_bounce could have deleted us + if(QDELETED(src)) + return var/move_direction = NONE var/effective_pixel_x = moving_atom.pixel_x - moving_atom.base_pixel_x @@ -248,8 +260,7 @@ moving_atom.pixel_z = z_floor if(cached_transform) animate(moving_atom, transform = cached_transform, time = 0, loop = 0) - if(stop_callback) - stop_callback.Invoke() + stop_callback?.Invoke() if((physics_flags & MPHYSICS_QDEL_WHEN_NO_MOVEMENT) && !QDELING(src)) qdel(src) @@ -257,14 +268,19 @@ /datum/component/movable_physics/proc/set_angle(new_angle) angle = SIMPLIFY_DEGREES(new_angle) +/// We do not EVER want newtonian movement while handling movement ourselves, so block it! +/datum/component/movable_physics/proc/on_newtonian_move(atom/movable/source, direction, start_delay) + SIGNAL_HANDLER + + return COMPONENT_MOVABLE_NEWTONIAN_BLOCK + /// Proc for bouncing, aka object reached z_floor on pixel_z and needs a dose of Newton's third law /datum/component/movable_physics/proc/z_floor_bounce(atom/movable/moving_atom) moving_atom.pixel_z = round(z_floor, MOVABLE_PHYSICS_PRECISION) if(bounce_spin_speed && !visual_angle_velocity && !visual_angle_friction) moving_atom.SpinAnimation(speed = bounce_spin_speed, loops = max(0, bounce_spin_loops)) vertical_velocity = abs(vertical_velocity * vertical_conservation_of_momentum) - if(bounce_callback) - bounce_callback.Invoke() + bounce_callback?.Invoke() /// Basically handles bumping on a solid object and ricocheting away according to a dose of Newton's third law /datum/component/movable_physics/proc/on_bump(atom/movable/source, atom/bumped_atom) @@ -276,6 +292,7 @@ var/incidence = GET_ANGLE_OF_INCIDENCE(face_angle, angle + 180) var/new_angle = SIMPLIFY_DEGREES(face_angle + incidence) set_angle(new_angle) + bump_callback?.Invoke(bumped_atom) if(!visual_angle_velocity) return incidence = GET_ANGLE_OF_INCIDENCE(face_angle, source.visual_angle + 180) diff --git a/monkestation/code/modules/pissing/bladder.dm b/monkestation/code/modules/pissing/bladder.dm index fd86f84c2a35..f6bb6394bc2e 100644 --- a/monkestation/code/modules/pissing/bladder.dm +++ b/monkestation/code/modules/pissing/bladder.dm @@ -50,7 +50,7 @@ stored_piss = min(stored_piss + amount, max_piss_storage) if(COOLDOWN_FINISHED(src, piss_notification) && stored_piss == max_piss_storage) - to_chat(owner, span_warning("Your bladder if feeling full.")) + to_chat(owner, span_warning("Your bladder is feeling full.")) COOLDOWN_START(src, piss_notification, 5 MINUTES) diff --git a/monkestation/code/modules/pollution/pollution_emitter_element.dm b/monkestation/code/modules/pollution/pollution_emitter_element.dm index 69e5ea083da4..d886bd391709 100644 --- a/monkestation/code/modules/pollution/pollution_emitter_element.dm +++ b/monkestation/code/modules/pollution/pollution_emitter_element.dm @@ -35,4 +35,4 @@ PROCESSING_SUBSYSTEM_DEF(pollution_emitters) return PROCESS_KILL for(var/atom/affected_atom as anything in affected) var/turf/my_turf = get_turf(affected_atom) - my_turf.pollute_turf(pollutant_type, pollutant_amount) + my_turf?.pollute_turf(pollutant_type, pollutant_amount) diff --git a/monkestation/code/modules/power/power_transmission_laser/code/announcement.dm b/monkestation/code/modules/power/power_transmission_laser/code/announcement.dm index 87e7ad6ae468..970a113737cd 100644 --- a/monkestation/code/modules/power/power_transmission_laser/code/announcement.dm +++ b/monkestation/code/modules/power/power_transmission_laser/code/announcement.dm @@ -1,69 +1,58 @@ -/// To be used for announcements about a milestone being broken -#define ANNOUNCEMENT_MILESTONE (1<<0) -/// To be used for rare history lessons that the PTL history team can make -#define ANNOUNCEMENT_HISTORY (1<<1) - /obj/machinery/power/transmission_laser/proc/send_ptl_announcement() /// The message we send - var/major_title - var/minor_title var/message - var/announcement_reason var/flavor_text - var/roll_for_history = rand(1, 10) switch(announcement_treshold) if(1 MW) message = "PTL account successfully made" - flavor_text = "from now on you will receive regular updates on the power exported via the onboard PTL, goodluck [station_name()]" + flavor_text = "From now on, you will receive regular updates on the power exported via the onboard PTL. Good luck [station_name()]!" INVOKE_ASYNC(src, PROC_REF(send_regular_ptl_announcement)) // starts giving the station regular updates on the PTL since our station just got an account if(1 GW) message = "The onboard PTL has successfully exported 1 Gigawatt worth of power" - flavor_text = "using the exported power we managed to save a station whose supermatter engine has dellamianted, good work." - announcement_reason = ANNOUNCEMENT_MILESTONE + flavor_text = "Using the exported power we managed to save a station whose supermatter engine has delamianted, good work!" if(1 TW) message = "The onboard PTL has successfully exported 1 Terawatt worth of power" - flavor_text = "using the exported power a nearby plasma mining outpost has been established without an engine, we depend on you and keep doing good work" - announcement_reason = ANNOUNCEMENT_MILESTONE + flavor_text = "You outputted so much power it caused space station 15's powergrid to overload, good work!" if(1 PW) message = "The onboard PTL has successfully exported 1 Petawatt worth of power" - if(roll_for_history > 1) - flavor_text = "thanks to your exported power we quickly managed to discharge emergency power to our fleet in distress, securing victory against a nearby syndicate ship. Great work" - announcement_reason = ANNOUNCEMENT_MILESTONE - else - flavor_text = "1.4 Petawatts is the estimated heat flux transported by the Gulf Stream back on the human's mother planet \"earth\"" - announcement_reason = ANNOUNCEMENT_HISTORY + flavor_text = "Your onboard PTL is outperforming all Nanotrasen owned solar PTL platforms in your sector. Central Command congratulates you for your achievement." if(1 EW) message = "The onboard PTL has successfully exported 1 Exawatt worth of power" - if(roll_for_history > 1) - flavor_text = "We did not expect your station to export such a high amount of power, and due to that [rand(1, 3)] of our batteries over-charged and blew up [rand(1, 5)] stations... keep doing good work?" - announcement_reason = ANNOUNCEMENT_MILESTONE - else - flavor_text = "In a keynote presentation, NIF & Photon Science Chief Technology Officer Chris Barty described the \"Nexawatt\" Laser, an exawatt (1,000-petawatt) laser concept based on NIF technologies, on April 13 at the SPIE Optics + Optoelectronics 2015 Conference in Prague. Barty also gave an invited talk on \"Laser-Based Nuclear Photonics\" at the SPIE meeting." - announcement_reason = ANNOUNCEMENT_HISTORY - - else + flavor_text = "Using your exported power, a nearby plasma mining outpost has been established without an engine! Keep up the good work, we depend on you!" + + if(1 ZW) + message = "The onboard PTL has successfully exported 1 Zetawatt worth of power" + flavor_text = "Thanks to your exported power, we quickly managed to discharge emergency power to our fleet in distress, securing victory against a nearby syndicate ship. Great work!" + + if(1 YW) + message = "The onboard PTL has successfully exported 1 Yottawatt worth of power" + flavor_text = "We did not expect your station to export such a high amount of power, and due to that, [rand(1, 3)] of our batteries over-charged and blew up [rand(1, 5)] stations... keep up the good work?" + + if(1 RW) + message = "The onboard PTL has successfully exported 1 Ronnawatt worth of power" + flavor_text = "The sheer amount of power you've sent us has successfully BSA'd an entire planet. We will be charging you 50 million credits for that post-shift, as we know you can afford it." + + if(1 QW) + message = "The onboard PTL has successfully exported 1 Quettawatt worth of power" + flavor_text = "\ + We have aquired enormous amounts of power thanks to you, making several new mining outposts. \ + We will hold a special medal granting ceremony to your local Chief Engineer. As an added bonus, all engineers part of your crew will be getting a raise once you arrive to CentCom. \ + But please do stop sending power soon, as we cannot hold much more. Consequences will arise if power output continues to be unmoderated.\ + " + + else // should not be achievable because it would require 1+36e power, but for safety reasons lets leave it here message = "The onboard PTL has successfully exported extremelly high amounts of power" - flavor_text = "we are not sure anymore how much power your PTL has exported, but it sure is a lot. Keep doing great work" - announcement_reason = ANNOUNCEMENT_MILESTONE - - minor_title = "Power Transmission Laser report" - if(announcement_reason) - switch(announcement_reason) - if(ANNOUNCEMENT_MILESTONE) - major_title = "[command_name()] energy unit" - message = "New milestone reached!\n[message]" - if(ANNOUNCEMENT_HISTORY) - major_title = "[command_name()] energy unit" - minor_title = "Power Transmission Laser report, history sub-division" - message = "PTL history lesson\n[message]" + flavor_text = "We ran out of orders of magnitude that are currently categorized, good work!" + + message = "New milestone reached!\n[message]" priority_announce( - sender_override = major_title, - title = minor_title, + sender_override = "[command_name()] energy unit", + title = "Power Transmission Laser report", text = "[message]\n[flavor_text]", color_override = "orange", ) diff --git a/monkestation/code/modules/power/power_transmission_laser/code/machine.dm b/monkestation/code/modules/power/power_transmission_laser/code/machine.dm index fa9652fc8229..d60b213ed9cd 100644 --- a/monkestation/code/modules/power/power_transmission_laser/code/machine.dm +++ b/monkestation/code/modules/power/power_transmission_laser/code/machine.dm @@ -245,7 +245,6 @@ if("outputQW") power_format_multi_output = 1 QW - /obj/machinery/power/transmission_laser/process() max_grid_load = terminal.surplus() input_available = terminal.surplus() diff --git a/monkestation/code/modules/projectiles/projectile/spells.dm b/monkestation/code/modules/projectiles/projectile/spells.dm new file mode 100644 index 000000000000..cf25d6d2c289 --- /dev/null +++ b/monkestation/code/modules/projectiles/projectile/spells.dm @@ -0,0 +1,79 @@ +/obj/projectile/magic/fire_ball + name = "fire ball" + icon = 'monkestation/icons/obj/weapons/guns/projectiles.dmi' + icon_state = "fire_ball" + damage = 20 + damage_type = BURN + hitsound = null + projectile_piercing = PASSMOB + + ricochets_max = 4 + ricochet_chance = 100 + ricochet_decay_chance = 1 + ricochet_decay_damage = 1 + ricochet_incidence_leeway = 0 + ricochet_shoots_firer = FALSE + ///A weakref to our "true" firer because ricochet changes firer + var/datum/weakref/true_firer + +/obj/projectile/magic/fire_ball/fire(angle, atom/direct_target) + . = ..() + if(firer) + true_firer = WEAKREF(firer) + +/obj/projectile/magic/fire_ball/prehit_pierce(atom/target) + . = ..() + if(. != PROJECTILE_DELETE_WITHOUT_HITTING || !ismob(target)) + return + true_firer = WEAKREF(target) + handle_bounce(target) + visible_message(span_warning("[src] bounces off the aura around [target]!")) + return PROJECTILE_PIERCE_PHASE + +/obj/projectile/magic/fire_ball/Impact(atom/A) + . = ..() + if(.) + playsound(src, 'sound/items/dodgeball.ogg', 200, channel = CHANNEL_SOUND_EFFECTS) //this is a very quiet sound + +/obj/projectile/magic/fire_ball/on_hit(mob/living/target, blocked, pierce_hit) + if(target == true_firer?.resolve()) //we do this here instead of on_hit_target due to us having specific logic here with handle_bounce() + handle_bounce(target) + return BULLET_ACT_BLOCK + + . = ..() + if(. != BULLET_ACT_HIT || !istype(target) ) + return + + if(pierces >= ricochets_max) + projectile_piercing = NONE + target.adjust_fire_stacks(2) + target.ignite_mob() + target.Knockdown(3 SECONDS) + target.Paralyze(0.5 SECONDS) + handle_bounce(target) + +/obj/projectile/magic/fire_ball/check_ricochet_flag(atom/A) + return !ismob(A) //we handle mobs ourselves but besides that can ALWAYS ricochet + +/obj/projectile/magic/fire_ball/check_ricochet(atom/A) + return TRUE //this handles the prob checks which is always 100, so lets just skip the step to save resources + +///Find a tile within 1 range() of a valid mob in our view, if we cant find any then return FALSE +/obj/projectile/magic/fire_ball/proc/get_new_target() + var/list/possible_targets = list() + var/mob/resolved_true_firer = true_firer?.resolve() + for(var/mob/living/possible_target in view()) + if(possible_target == resolved_true_firer || impacted[possible_target]) + continue + possible_targets += possible_target + + if(!length(possible_targets)) + return FALSE + return pick(RANGE_TURFS(1, get_turf(pick(possible_targets)))) + +/obj/projectile/magic/fire_ball/proc/handle_bounce(atom/target) + var/new_target = get_new_target() + if(new_target) + set_angle_centered(get_angle(target, new_target)) + else + reflect(target) diff --git a/monkestation/code/modules/ranching/chicken_book.dm b/monkestation/code/modules/ranching/chicken_book.dm index c56f7d3e24fb..f4643491f8b3 100644 --- a/monkestation/code/modules/ranching/chicken_book.dm +++ b/monkestation/code/modules/ranching/chicken_book.dm @@ -5,15 +5,21 @@ icon_state = "chicken_book" /obj/item/chicken_book/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user,src,ui) + ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user,src,"RanchingEncyclopedia") + ui = new(user, src, "RanchingEncyclopedia") + ui.set_autoupdate(FALSE) ui.open() -/obj/item/chicken_book/ui_act(action,list/params) +/obj/item/chicken_book/ui_act(action, list/params) if(..()) return +/obj/item/chicken_book/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/chicken_book), + ) + /obj/item/chicken_book/ui_static_data(mob/user) var/list/data = list() var/list/chicken_list = list() @@ -79,12 +85,7 @@ details["nearby_items"] = obj_names.Join(",") details["comes_from"] = created_mutation.can_come_from_string - var/icon/chicken_icon = getFlatIcon(F) - var/md5 = md5(fcopy_rsc(chicken_icon)) - if(!SSassets.cache["photo_[md5]_[F.breed_name]_icon.png"]) - SSassets.transport.register_asset("photo_[md5]_[F.breed_name]_icon.png", chicken_icon) - SSassets.transport.send_assets(user, list("photo_[md5]_[F.breed_name]_icon.png" = chicken_icon)) - details["chicken_icon"] = SSassets.transport.get_asset_url("photo_[md5]_[F.breed_name]_icon.png") + details["chicken_icon"] = sanitize_css_class_name("[created_mutation.chicken_type]") chicken_list += list(details) qdel(F) qdel(created_mutation) diff --git a/monkestation/code/modules/ranching/chickens/_chicken.dm b/monkestation/code/modules/ranching/chickens/_chicken.dm index f2c6d13c9305..b4e93613c419 100644 --- a/monkestation/code/modules/ranching/chickens/_chicken.dm +++ b/monkestation/code/modules/ranching/chickens/_chicken.dm @@ -7,7 +7,7 @@ gender = FEMALE maxHealth = 15 - mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) + mob_biotypes = MOB_ORGANIC | MOB_BEAST icon = 'monkestation/icons/mob/ranching/chickens.dmi' icon_state = "chicken_white" @@ -68,14 +68,15 @@ assign_chicken_icon() if(gender == MALE && breed_name) if(breed_name_male) - name = " [breed_name_male]" + name = real_name = "[breed_name_male]" else - name = "[breed_name] Rooster" + name = real_name = "[breed_name] Rooster" else if(breed_name_female) - name = " [breed_name_female]" + name = real_name = "[breed_name_female]" else - name = "[breed_name] Hen" + name = real_name = "[breed_name] Hen" + update_name_tag() build_initial_planning_tree() diff --git a/monkestation/code/modules/ranching/chickens/ai/gary/gary_behaviours.dm b/monkestation/code/modules/ranching/chickens/ai/gary/gary_behaviours.dm index 55ef4f0af100..6148a75ac503 100644 --- a/monkestation/code/modules/ranching/chickens/ai/gary/gary_behaviours.dm +++ b/monkestation/code/modules/ranching/chickens/ai/gary/gary_behaviours.dm @@ -34,9 +34,11 @@ pawn.fading_leap_down() controller.blackboard[BB_GARY_HAS_SHINY] = FALSE - pawn.held_item.forceMove(get_turf(pawn)) - pawn.held_shinies += pawn.held_item.type - pawn.held_item.AddComponent(/datum/component/garys_item) + var/obj/item/shiny = pawn.held_item + shiny?.forceMove(get_turf(pawn)) + if(!QDELETED(shiny)) + pawn.held_shinies += shiny.type + shiny.AddComponent(/datum/component/garys_item, pawn) pawn.held_item = null /datum/ai_behavior/setup_hideout @@ -57,7 +59,7 @@ continue var/obj/item/spawned = new shiny_object(current_home) pawn.hideout.add_item(spawned) - spawned.AddComponent(/datum/component/garys_item) + spawned.AddComponent(/datum/component/garys_item, pawn) finish_action(controller, TRUE) /datum/ai_behavior/setup_hideout/perform(seconds_per_tick, datum/ai_controller/controller, ...) @@ -155,6 +157,7 @@ if(!has_left_pocket && !has_right_pocket && !has_valid_hand) held_item.forceMove(get_turf(target)) + SEND_SIGNAL(held_item, COMSIG_ITEM_GARY_LOOTED, pawn) finish_action(controller, FALSE) return FALSE @@ -165,6 +168,7 @@ target.equip_to_slot_if_possible(held_item, (!has_left_pocket ? ITEM_SLOT_RPOCKET : (prob(50) ? ITEM_SLOT_LPOCKET : ITEM_SLOT_RPOCKET))) else target.put_in_hands(held_item) + SEND_SIGNAL(held_item, COMSIG_ITEM_GARY_LOOTED, pawn) finish_action(controller, TRUE) /datum/ai_behavior/gary_give_item/finish_action(datum/ai_controller/controller, succeeded, ...) diff --git a/monkestation/code/modules/ranching/chickens/ai/gary/gary_controller.dm b/monkestation/code/modules/ranching/chickens/ai/gary/gary_controller.dm index 5fcb861dd562..e4fbbca56aa8 100644 --- a/monkestation/code/modules/ranching/chickens/ai/gary/gary_controller.dm +++ b/monkestation/code/modules/ranching/chickens/ai/gary/gary_controller.dm @@ -37,6 +37,13 @@ if(prob(5) && (world.time > controller.blackboard[BB_GARY_WANDER_COOLDOWN])) controller.queue_behavior(/datum/ai_behavior/travel_towards/gary_goto_target, BB_TRAVEL_DESTINATION) +/datum/ai_controller/chicken/gary/proc/set_home(turf/open/new_home) + if(QDELETED(new_home)) + return + blackboard[BB_GARY_HIDEOUT] = list(new_home.x, new_home.y, new_home.z) + blackboard[BB_GARY_HIDEOUT_SETTING_UP] = TRUE + blackboard[BB_GARY_COME_HOME] = TRUE + queue_behavior(/datum/ai_behavior/travel_towards/head_to_hideout, BB_TRAVEL_DESTINATION) /datum/ai_movement/jps/gary max_pathing_attempts = 25 diff --git a/monkestation/code/modules/ranching/chickens/ai/gary/gary_subtrees.dm b/monkestation/code/modules/ranching/chickens/ai/gary/gary_subtrees.dm index d701b8fa3f23..26eb22ca86fd 100644 --- a/monkestation/code/modules/ranching/chickens/ai/gary/gary_subtrees.dm +++ b/monkestation/code/modules/ranching/chickens/ai/gary/gary_subtrees.dm @@ -20,7 +20,6 @@ controller.blackboard[BB_GARY_HIDEOUT] = list(target_turf.x, target_turf.y, target_turf.z) controller.blackboard[BB_GARY_HIDEOUT_SETTING_UP] = TRUE controller.blackboard[BB_GARY_COME_HOME] = TRUE - controller.queue_behavior(/datum/ai_behavior/travel_towards/head_to_hideout, BB_TRAVEL_DESTINATION) return diff --git a/monkestation/code/modules/ranching/chickens/misc/gary.dm b/monkestation/code/modules/ranching/chickens/misc/gary.dm index ac31c80b2910..c6d4e21e4c06 100644 --- a/monkestation/code/modules/ranching/chickens/misc/gary.dm +++ b/monkestation/code/modules/ranching/chickens/misc/gary.dm @@ -1,12 +1,11 @@ ///gary is gonna have nothing to do with other crows because of how much unique code it has /mob/living/basic/chicken/gary - desc = "Gary the Crow. An inquisitive, yet cruel barterer." - breed_name_female = "Gary" breed_name_male = "Gary" - + breed_name_female = "Gary" + desc = "Gary the Crow. An inquisitive, yet cruel barterer." icon_suffix = "crow_gary" icon_state = "crow_gary" - + pass_flags = parent_type::pass_flags | PASSGRILLE | PASSFLAPS ai_controller = /datum/ai_controller/chicken/gary mutation_list = list() @@ -30,26 +29,44 @@ var/datum/hideout/hideout var/datum/callback/roundend_callback = null -/mob/living/basic/chicken/gary/Initialize(mapload) - . = ..() + var/max_w_class = WEIGHT_CLASS_SMALL +/mob/living/basic/chicken/gary/Initialize(mapload, turf/open/home) + . = ..() if(!memory_saved) roundend_callback = CALLBACK(src, PROC_REF(Write_Memory)) SSticker.OnRoundend(roundend_callback) - Read_Memory() - AddComponent(/datum/component/simple_access, REGION_ACCESS_ALL_STATION) //gary actually balls + AddComponent(/datum/component/simple_access, REGION_ACCESS_ALL_STATION) // gary actually balls + AddComponent(/datum/component/regenerator) + add_traits(list(TRAIT_SHOCKIMMUNE, TRAIT_GOES_THROUGH_WOODEN_BARRICADES, TRAIT_WATER_BREATHING), INNATE_TRAIT) // gary REALLY balls (also gary making a hideout in a pool is funny) + set_home(home) + // remove unused chicken components for gary + qdel(GetComponent(/datum/component/aging)) + qdel(GetComponent(/datum/component/hovering_information)) /mob/living/basic/chicken/gary/Destroy() + drop_held_item() LAZYREMOVE(SSticker.round_end_events, roundend_callback) roundend_callback = null //This ought to free the callback datum, and prevent us from harddeling QDEL_NULL(hideout) return ..() /mob/living/basic/chicken/gary/death(gibbed) + drop_held_item() . = ..() Write_Memory(TRUE) +/mob/living/basic/chicken/gary/proc/drop_held_item() + if(QDELETED(held_item)) + return + held_item.forceMove(drop_location()) + held_item = null + +/mob/living/basic/chicken/gary/proc/set_home(turf/open/new_home) + var/datum/ai_controller/chicken/gary/gary_controller = ai_controller + gary_controller.set_home(new_home) + /mob/living/basic/chicken/gary/proc/Read_Memory() if(fexists("data/npc_saves/Gary.sav")) //legacy compatability to convert old format to new var/savefile/S = new /savefile("data/npc_saves/Gary.sav") @@ -69,8 +86,10 @@ held_shinies = json["heldshines"] sanitize_shinies() -/mob/living/basic/chicken/gary/Write_Memory(dead) +/mob/living/basic/chicken/gary/Write_Memory(dead, gibbed) . = ..() + if(!.) + return memory_saved = TRUE var/json_file = file("data/npc_saves/Gary.json") var/list/file_data = list() @@ -94,10 +113,11 @@ WRITE_FILE(json_file, json_encode(file_data)) /mob/living/basic/chicken/gary/proc/sanitize_shinies() - var/list/uncleaned = held_shinies - held_shinies = list() + var/list/uncleaned = held_shinies.Copy() + held_shinies.Cut() for(var/dirty in uncleaned) held_shinies += text2path(dirty) + list_clear_nulls(held_shinies) /mob/living/basic/chicken/gary/proc/return_stored_items() if(!fully_setup) @@ -105,9 +125,12 @@ return held_shinies /mob/living/basic/chicken/gary/attackby(obj/item/attacking_item, mob/living/user) - if(attacking_item.w_class <= WEIGHT_CLASS_SMALL) + if(stat != CONSCIOUS || (user.istate & ISTATE_HARM) || !user.Adjacent(src)) + return ..() + if(attacking_item.w_class <= max_w_class) if(held_item) - return ..() + to_chat(user, span_warning("[src] is already holding [held_item]!")) + return FALSE if(istype(attacking_item, /obj/item/knife)) attack_sound = 'sound/weapons/bladeslice.ogg' melee_damage_upper = attacking_item.force //attack dmg inherits knife dmg @@ -130,4 +153,6 @@ ai_controller.blackboard[BB_GARY_HAS_SHINY] = TRUE SEND_SIGNAL(src, COMSIG_MOB_ADJUST_HUNGER, 200) //gary hungers for trinkets and baubles. return TRUE - . = ..() + else + to_chat(user, span_warning("[attacking_item] is too big for [src] to hold!")) + return TRUE diff --git a/monkestation/code/modules/ranching/chickens/misc/gary_component.dm b/monkestation/code/modules/ranching/chickens/misc/gary_component.dm index 8b84011c546a..d8d267bbfd14 100644 --- a/monkestation/code/modules/ranching/chickens/misc/gary_component.dm +++ b/monkestation/code/modules/ranching/chickens/misc/gary_component.dm @@ -1,23 +1,36 @@ /datum/component/garys_item ///the gary that created us - var/datum/weakref/attached_gary + var/mob/living/basic/chicken/gary/gary -/datum/component/garys_item/Initialize(mob/living/basic/chicken/gary/attached_gary) +/datum/component/garys_item/Initialize(mob/living/basic/chicken/gary/gary) . = ..() + if(!istype(gary) || QDELING(gary)) + return COMPONENT_INCOMPATIBLE + src.gary = gary + RegisterSignal(gary, COMSIG_QDELETING, PROC_REF(on_gary_del)) + SEND_SIGNAL(parent, COMSIG_ITEM_GARY_STASHED, gary) - src.attached_gary = WEAKREF(attached_gary) +/datum/component/garys_item/Destroy(force, silent) + UnregisterSignal(gary, COMSIG_QDELETING) + gary = null + return ..() +/datum/component/garys_item/RegisterWithParent() + . = ..() RegisterSignal(parent, COMSIG_ITEM_PICKUP, PROC_REF(looter)) - /datum/component/garys_item/UnregisterFromParent() . = ..() UnregisterSignal(parent, COMSIG_ITEM_PICKUP) /datum/component/garys_item/proc/looter(datum/source, mob/taker) var/obj/item/source_item = parent - var/mob/living/basic/chicken/gary/gary = attached_gary.resolve() gary.held_shinies -= source_item.type gary.hideout.remove_item(source_item) gary.adjust_happiness(-5, taker) + SEND_SIGNAL(parent, COMSIG_ITEM_GARY_LOOTED, gary) SEND_SIGNAL(gary, COMSIG_FRIENDSHIP_CHANGE, taker, -50)// womp womp + +/datum/component/garys_item/proc/on_gary_del(datum/source) + SIGNAL_HANDLER + qdel(src) diff --git a/monkestation/code/modules/ranching/chickens/misc/gary_spawner.dm b/monkestation/code/modules/ranching/chickens/misc/gary_spawner.dm new file mode 100644 index 000000000000..c3ee9f9943d1 --- /dev/null +++ b/monkestation/code/modules/ranching/chickens/misc/gary_spawner.dm @@ -0,0 +1,50 @@ +GLOBAL_LIST(possible_gary_hideouts) + +/obj/effect/landmark/start/gary + name = "Potential Gary Spawnpoint (Common)" + icon = 'monkestation/icons/mob/landmarks.dmi' + icon_state = "Gary (Common)" + var/weight = 15 + +/obj/effect/landmark/start/gary/Initialize(mapload) + ..() + REGISTER_REQUIRED_MAP_ITEM(1, INFINITY) + var/turf/open/our_turf = get_turf(loc) + if(isopenturf(our_turf) && !isgroundlessturf(our_turf)) + if(!LAZYLEN(GLOB.possible_gary_hideouts)) + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(spawn_gary))) + LAZYSET(GLOB.possible_gary_hideouts, our_turf, weight) + else + log_mapping("Gary spawnpoint placed at an invalid location ([AREACOORD(our_turf)])") + return INITIALIZE_HINT_QDEL + +/proc/spawn_gary() + if(!LAZYLEN(GLOB.possible_gary_hideouts)) + log_game("No valid Gary hideout spawners available, not spawning Gary.") + return + var/turf/open/base_spawn_loc = pick_weight(GLOB.possible_gary_hideouts) + var/mob/living/basic/chicken/gary/gary = new(base_spawn_loc) + // 5% chance they'll make a random hideout anyways + if(prob(95)) + var/area/base_spawn_area = get_area(base_spawn_loc) + // for variety's sake, we're gonna slightly randomize the spawn point to be within a screen or so of the landmark + var/list/possible_spawn_locs = list(base_spawn_loc) + for(var/turf/open/possible_loc in oview(7, base_spawn_loc)) + if(isgroundlessturf(possible_loc) || get_area(possible_loc) != base_spawn_area) + continue + if(!is_safe_turf(possible_loc)) + continue + possible_spawn_locs += possible_loc + gary.set_home(pick(possible_spawn_locs)) + log_game("Spawned Gary at [AREACOORD(base_spawn_loc)]") + LAZYNULL(GLOB.possible_gary_hideouts) + +/obj/effect/landmark/start/gary/uncommon + name = "Potential Gary Spawnpoint (Uncommon)" + icon_state = "Gary (Uncommon)" + weight = 5 + +/obj/effect/landmark/start/gary/rare + name = "Potential Gary Spawnpoint (Rare)" + icon_state = "Gary (Rare)" + weight = 1 diff --git a/monkestation/code/modules/ranching/chickens/misc/hideout_datum.dm b/monkestation/code/modules/ranching/chickens/misc/hideout_datum.dm index 43cd3c8fe3de..bcc6d9f0bd1a 100644 --- a/monkestation/code/modules/ranching/chickens/misc/hideout_datum.dm +++ b/monkestation/code/modules/ranching/chickens/misc/hideout_datum.dm @@ -1,7 +1,7 @@ /datum/hideout var/list/stored_items = list() -/datum/hideout/Destroy(force, ...) +/datum/hideout/Destroy(force) . = ..() for(var/obj/item/item as anything in stored_items) remove_item(item) diff --git a/monkestation/code/modules/ranching/circuits.dm b/monkestation/code/modules/ranching/circuits.dm index 9481951f4b8d..00b70cfa1958 100644 --- a/monkestation/code/modules/ranching/circuits.dm +++ b/monkestation/code/modules/ranching/circuits.dm @@ -21,6 +21,7 @@ name = "feed machine (Machine Board)" greyscale_colors = CIRCUIT_COLOR_SERVICE greyscale_colors = CIRCUIT_COLOR_SERVICE + build_path = /obj/machinery/feed_machine req_components = list( /datum/stock_part/matter_bin = 3, /datum/stock_part/manipulator = 1) diff --git a/monkestation/code/modules/ranching/components/aging.dm b/monkestation/code/modules/ranching/components/aging.dm index 1726af06c261..c4d6e51f6023 100644 --- a/monkestation/code/modules/ranching/components/aging.dm +++ b/monkestation/code/modules/ranching/components/aging.dm @@ -19,7 +19,7 @@ START_PROCESSING(SSobj, src) -/datum/component/aging/Destroy(force, silent) +/datum/component/aging/Destroy(force) death_callback = null return ..() diff --git a/monkestation/code/modules/ranching/components/happiness_container.dm b/monkestation/code/modules/ranching/components/happiness_container.dm index 03c307aac72f..228020c5824a 100644 --- a/monkestation/code/modules/ranching/components/happiness_container.dm +++ b/monkestation/code/modules/ranching/components/happiness_container.dm @@ -29,7 +29,7 @@ src.disliked_food_types = disliked_food_types src.unhappy_callbacks = unhappy_callbacks -/datum/component/happiness_container/Destroy(force, silent) +/datum/component/happiness_container/Destroy(force) unhappy_callbacks = null QDEL_NULL(applied_visual) return ..() diff --git a/monkestation/code/modules/ranching/components/hatching.dm b/monkestation/code/modules/ranching/components/hatching.dm index 7884eb41ab47..30ebde1b057f 100644 --- a/monkestation/code/modules/ranching/components/hatching.dm +++ b/monkestation/code/modules/ranching/components/hatching.dm @@ -45,7 +45,7 @@ START_PROCESSING(SSobj, src) -/datum/component/hatching/Destroy(force, silent) +/datum/component/hatching/Destroy(force) hatch_callback = null return ..() diff --git a/monkestation/code/modules/ranching/components/hovering_component.dm b/monkestation/code/modules/ranching/components/hovering_component.dm index 111a51372cf1..15deba6c78e1 100644 --- a/monkestation/code/modules/ranching/components/hovering_component.dm +++ b/monkestation/code/modules/ranching/components/hovering_component.dm @@ -18,7 +18,7 @@ . = ..() UnregisterSignal(parent, COMSIG_ATOM_MOUSE_ENTERED) -/datum/component/hovering_information/Destroy(force, silent) +/datum/component/hovering_information/Destroy(force) . = ..() QDEL_NULL(hover_information_data) @@ -38,7 +38,7 @@ /datum/hover_data var/list/images_per_client = list() -/datum/hover_data/Destroy(force, ...) +/datum/hover_data/Destroy(force) . = ..() if(length(images_per_client)) for(var/key in images_per_client) diff --git a/monkestation/code/modules/ranching/components/shearable.dm b/monkestation/code/modules/ranching/components/shearable.dm index 2cd0676ae3e7..8497cb4d3d7a 100644 --- a/monkestation/code/modules/ranching/components/shearable.dm +++ b/monkestation/code/modules/ranching/components/shearable.dm @@ -34,7 +34,7 @@ created_amount = amount src.created = created -/datum/component/shearable/Destroy(force, silent) +/datum/component/shearable/Destroy(force) regrow = null post_shear = null return ..() diff --git a/monkestation/code/modules/ranching/hover_data.dm b/monkestation/code/modules/ranching/hover_data.dm index a6b51ffbe756..eec71166b8ee 100644 --- a/monkestation/code/modules/ranching/hover_data.dm +++ b/monkestation/code/modules/ranching/hover_data.dm @@ -1,7 +1,7 @@ /datum/hover_data/chicken_info var/obj/effect/overlay/hover/chicken_egg -/datum/hover_data/chicken_info/Destroy(force, ...) +/datum/hover_data/chicken_info/Destroy(force) . = ..() qdel(chicken_egg) diff --git a/monkestation/code/modules/ranching/name_tags/name_tag.dm b/monkestation/code/modules/ranching/name_tags/name_tag.dm index ec613c35001b..bb8b81a938b1 100644 --- a/monkestation/code/modules/ranching/name_tags/name_tag.dm +++ b/monkestation/code/modules/ranching/name_tags/name_tag.dm @@ -1,3 +1,5 @@ +#define NAME_TAG_WIDTH (world.icon_size * 5) + /datum/keybinding/mob/show_names hotkey_keys = list("Ctrl") name = "show_names" @@ -20,7 +22,7 @@ name_tag.alpha = 0 /mob - var/obj/effect/name_tag/name_tag + var/obj/effect/abstract/name_tag/name_tag var/atom/movable/screen/name_shadow/shadow /mob/Initialize(mapload) @@ -40,22 +42,22 @@ hud_used.always_visible_inventory += shadow /mob/Logout() - . = ..() if(client && isliving(src) && (!iscyborg(src) && !isaicamera(src) && !isAI(src))) client.screen -= shadow shadow.UnregisterSignal(src, COMSIG_MOVABLE_Z_CHANGED) hud_used?.always_visible_inventory -= shadow QDEL_NULL(shadow) + return ..() /mob/Destroy() - . = ..() vis_contents -= name_tag QDEL_NULL(name_tag) - if(client || shadow) + if(shadow) client?.screen -= shadow shadow.UnregisterSignal(src, COMSIG_MOVABLE_Z_CHANGED) - hud_used?.always_visible_inventory -= shadow + hud_used.always_visible_inventory -= shadow QDEL_NULL(shadow) + return ..() /mob/proc/update_name_tag(passed_name) if(QDELETED(name_tag)) @@ -77,32 +79,49 @@ . = ..() update_name_tag() -/obj/effect/name_tag - plane = PLANE_NAME_TAGS - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - name = "" - maptext_x = -64 - maptext_y = -13 //directly below characters +/mob/living/vv_edit_var(var_name, var_value) + . = ..() + if(var_name == NAMEOF(src, name) || var_name == NAMEOF(src, real_name)) + update_name_tag() - maptext_width = 160 - maptext_height = 48 +/obj/effect/abstract/name_tag + name = "" icon = null // we want nothing - appearance_flags = PIXEL_SCALE alpha = 180 + plane = PLANE_NAME_TAGS + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + maptext_y = -13 //directly below characters + appearance_flags = PIXEL_SCALE | RESET_COLOR | RESET_TRANSFORM -/obj/effect/name_tag/New(mob/user) - RegisterSignal(user, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(update_z)) - -/obj/effect/name_tag/proc/hide() +/obj/effect/abstract/name_tag/Initialize(mapload) + . = ..() + if(!ismovable(loc) || QDELING(loc)) + return INITIALIZE_HINT_QDEL + var/atom/movable/movable_loc = loc + var/bound_width = movable_loc.bound_width || world.icon_size + maptext_width = NAME_TAG_WIDTH + maptext_height = world.icon_size * 1.5 + maptext_x = (NAME_TAG_WIDTH - bound_width) * -0.5 + RegisterSignal(loc, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(update_z)) + +/obj/effect/abstract/name_tag/Destroy(force) + UnregisterSignal(loc, COMSIG_MOVABLE_Z_CHANGED) + return ..() + +/obj/effect/abstract/name_tag/forceMove(atom/destination, no_tp = FALSE, harderforce = FALSE) + if(harderforce) + return ..() + +/obj/effect/abstract/name_tag/proc/hide() alpha = 0 -/obj/effect/name_tag/proc/show() +/obj/effect/abstract/name_tag/proc/show() alpha = 255 -/obj/effect/name_tag/proc/set_name(incoming_name) - maptext = "[incoming_name]" +/obj/effect/abstract/name_tag/proc/set_name(incoming_name) + maptext = MAPTEXT_GRAND9K("[incoming_name]") -/obj/effect/name_tag/proc/update_z(datum/source, turf/old_turf, turf/new_turf, same_z_layer) +/obj/effect/abstract/name_tag/proc/update_z(datum/source, turf/old_turf, turf/new_turf, same_z_layer) SET_PLANE(src, PLANE_TO_TRUE(src.plane), new_turf) /atom/movable/screen/plane_master/name_tags @@ -133,3 +152,5 @@ mouse_opacity = MOUSE_OPACITY_TRANSPARENT plane = PLANE_NAME_TAGS_BLOCKER screen_loc = "BOTTOM,LEFT" + +#undef NAME_TAG_WIDTH diff --git a/monkestation/code/modules/ranching/satyr/accessories/sprites/fluff.dm b/monkestation/code/modules/ranching/satyr/accessories/sprites/fluff.dm index a353d5711e3a..e090eff8781a 100644 --- a/monkestation/code/modules/ranching/satyr/accessories/sprites/fluff.dm +++ b/monkestation/code/modules/ranching/satyr/accessories/sprites/fluff.dm @@ -1,7 +1,7 @@ /datum/sprite_accessory/satyr_fluff icon = 'monkestation/code/modules/ranching/icons/satyr_fluff.dmi' - color_src = HAIR + color_src = HEAD_HAIR /datum/sprite_accessory/satyr_fluff/normal name = "Normal" diff --git a/monkestation/code/modules/ranching/satyr/accessories/sprites/tail.dm b/monkestation/code/modules/ranching/satyr/accessories/sprites/tail.dm index 978e9b73ca83..2c3e197a7f71 100644 --- a/monkestation/code/modules/ranching/satyr/accessories/sprites/tail.dm +++ b/monkestation/code/modules/ranching/satyr/accessories/sprites/tail.dm @@ -1,7 +1,7 @@ /datum/sprite_accessory/satyr_tail icon = 'monkestation/code/modules/ranching/icons/satyr_tail.dmi' - color_src = HAIR + color_src = HEAD_HAIR /datum/sprite_accessory/satyr_tail/short name = "Short" diff --git a/monkestation/code/modules/ranching/satyr/bodyparts.dm b/monkestation/code/modules/ranching/satyr/bodyparts.dm index ff24f3dc4515..7809f9185b58 100644 --- a/monkestation/code/modules/ranching/satyr/bodyparts.dm +++ b/monkestation/code/modules/ranching/satyr/bodyparts.dm @@ -2,6 +2,7 @@ icon_greyscale = 'monkestation/code/modules/ranching/icons/bodyparts.dmi' limb_id = SPECIES_SATYR is_dimorphic = TRUE + head_flags = HEAD_HAIR | HEAD_FACIAL_HAIR | HEAD_EYESPRITES | HEAD_EYECOLOR | HEAD_EYEHOLES | HEAD_DEBRAIN /obj/item/bodypart/chest/satyr icon_greyscale = 'monkestation/code/modules/ranching/icons/bodyparts.dmi' diff --git a/monkestation/code/modules/ranching/satyr/components/living_drunk.dm b/monkestation/code/modules/ranching/satyr/components/living_drunk.dm index efc00ce2a124..6aafb42859a6 100644 --- a/monkestation/code/modules/ranching/satyr/components/living_drunk.dm +++ b/monkestation/code/modules/ranching/satyr/components/living_drunk.dm @@ -17,7 +17,7 @@ ADD_TRAIT(parent, TRAIT_LIVING_DRUNK, INNATE_TRAIT) START_PROCESSING(SSobj, src) -/datum/component/living_drunk/Destroy(force, silent) +/datum/component/living_drunk/Destroy(force) REMOVE_TRAIT(parent, TRAIT_LIVING_DRUNK, INNATE_TRAIT) . = ..() diff --git a/monkestation/code/modules/ranching/satyr/species.dm b/monkestation/code/modules/ranching/satyr/species.dm index 2ab8c9f1377d..fee044fc78f7 100644 --- a/monkestation/code/modules/ranching/satyr/species.dm +++ b/monkestation/code/modules/ranching/satyr/species.dm @@ -6,9 +6,6 @@ no_equip_flags = ITEM_SLOT_FEET sexes = TRUE species_traits = list( - EYECOLOR, - HAIR, - FACEHAIR, NO_UNDERWEAR, ) inherent_traits = list( diff --git a/monkestation/code/modules/reagents/chemistry/reagents/other_reagents.dm b/monkestation/code/modules/reagents/chemistry/reagents/other_reagents.dm index 6fd26f35b908..2862da172fb7 100644 --- a/monkestation/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/monkestation/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -9,8 +9,8 @@ /datum/reagent/acetone_oxide/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)//Splashing people kills people! . = ..() if(methods & TOUCH | VAPOR | INGEST) - exposed_mob.adjustFireLoss(((reac_volume * 2) / 1.65)) - exposed_mob.adjust_fire_stacks((reac_volume / 5)) + exposed_mob.adjustFireLoss(min((reac_volume * 0.5) / 1.65, 25)) + exposed_mob.adjust_fire_stacks(round(reac_volume / 50)) /datum/reagent/acetone_oxide/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) // Old acetone oxide didn't have a metabolism effect! . = ..() @@ -58,7 +58,7 @@ /datum/reagent/hydrogen_peroxide/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)//Splashing people with h2o2 can burn them ! . = ..() if(methods & TOUCH) - exposed_mob.adjustFireLoss(((reac_volume * 2) / 3)) + exposed_mob.adjustFireLoss(min((reac_volume * 0.5) / 3, 25)) /datum/reagent/hydrogen_peroxide/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) // Old h2o2 didn't have a metabolizing effect either! . = ..() diff --git a/monkestation/code/modules/replays/subsystem/replay.dm b/monkestation/code/modules/replays/subsystem/replay.dm index 9f81e7d58d70..e87f8890e7c6 100644 --- a/monkestation/code/modules/replays/subsystem/replay.dm +++ b/monkestation/code/modules/replays/subsystem/replay.dm @@ -68,11 +68,10 @@ SUBSYSTEM_DEF(demo) /datum/controller/subsystem/demo/Initialize() if(!CONFIG_GET(flag/demos_enabled)) flags |= SS_NO_FIRE - can_fire = FALSE marked_dirty.Cut() marked_new.Cut() marked_turfs.Cut() - return SS_INIT_SUCCESS + return SS_INIT_NO_NEED var/rounder = file("[GLOB.demo_directory]/round_number.txt") fdel(rounder) @@ -164,14 +163,18 @@ SUBSYSTEM_DEF(demo) return SS_INIT_SUCCESS /datum/controller/subsystem/demo/fire() - if(!src.marked_new.len && !src.marked_dirty.len && !src.marked_turfs.len && !src.del_list.len) + var/marked_new_len = length(src.marked_new) + var/marked_dirty_len = length(src.marked_dirty) + var/marked_turfs_len = length(src.marked_turfs) + var/del_list_len = length(del_list) + if(!marked_new_len && !marked_dirty_len && !marked_turfs_len && !del_list_len) return // nothing to do - last_queued = src.marked_new.len + src.marked_dirty.len + src.marked_turfs.len + last_queued = marked_new_len + marked_dirty_len + marked_turfs_len last_completed = 0 write_time() - if(src.del_list.len) + if(del_list_len) var/s = "del [jointext(src.del_list, ",")]\n" // if I don't do it like this I get "incorrect number of macro arguments" because byond is stupid and sucks WRITE_LOG_NO_FORMAT(GLOB.demo_log, s) src.del_list.Cut() @@ -180,11 +183,11 @@ SUBSYSTEM_DEF(demo) var/list/marked_dirty = src.marked_dirty var/list/dirty_updates = list() - while(marked_dirty.len) + while(length(marked_dirty)) last_completed++ - var/atom/movable/M = marked_dirty[marked_dirty.len] + var/atom/movable/M = marked_dirty[length(marked_dirty)] marked_dirty.len-- - if(M.gc_destroyed || !M) + if(QDELETED(M)) continue if(M.loc == M.demo_last_loc) continue @@ -207,7 +210,7 @@ SUBSYSTEM_DEF(demo) if(MC_TICK_CHECK) canceled = TRUE break - if(dirty_updates.len) + if(length(dirty_updates)) var/s = "update [jointext(dirty_updates, ",")]\n" WRITE_LOG_NO_FORMAT(GLOB.demo_log, s) if(canceled) @@ -216,11 +219,11 @@ SUBSYSTEM_DEF(demo) var/list/marked_new = src.marked_new var/list/new_updates = list() - while(marked_new.len) + while(length(marked_new)) last_completed++ - var/atom/movable/M = marked_new[marked_new.len] + var/atom/movable/M = marked_new[length(marked_new)] marked_new.len-- - if(M.gc_destroyed || !M) + if(QDELETED(M)) continue var/loc_string = "null" if(isturf(M.loc)) @@ -232,7 +235,7 @@ SUBSYSTEM_DEF(demo) if(MC_TICK_CHECK) canceled = TRUE break - if(new_updates.len) + if(length(new_updates)) var/s = "new [jointext(new_updates, ",")]\n" WRITE_LOG_NO_FORMAT(GLOB.demo_log, s) if(canceled) @@ -241,9 +244,9 @@ SUBSYSTEM_DEF(demo) var/list/marked_turfs = src.marked_turfs var/list/turf_updates = list() - while(marked_turfs.len) + while(length(marked_turfs)) last_completed++ - var/turf/T = marked_turfs[marked_turfs.len] + var/turf/T = marked_turfs[length(marked_turfs)] marked_turfs.len-- if(T && T.appearance != T.demo_last_appearance) turf_updates += "([T.x],[T.y],[T.z])=[encode_appearance(T.appearance, T.demo_last_appearance)]" @@ -251,7 +254,7 @@ SUBSYSTEM_DEF(demo) if(MC_TICK_CHECK) canceled = TRUE break - if(turf_updates.len) + if(length(turf_updates)) var/s = "turf [jointext(turf_updates, ",")]\n" WRITE_LOG_NO_FORMAT(GLOB.demo_log, s) if(canceled) @@ -420,35 +423,68 @@ SUBSYSTEM_DEF(demo) msg += "}" return ..() -/datum/controller/subsystem/demo/proc/mark_turf(turf/T) +/datum/controller/subsystem/demo/proc/mark_turf(turf/turf) if(!can_fire) return - if(!isturf(T)) + if(isturf(turf)) return - marked_turfs[T] = TRUE + marked_turfs[turf] = TRUE + +/datum/controller/subsystem/demo/proc/mark_multiple_turfs(list/turf/turf_list) + if(!can_fire) + return + if(!islist(turf_list)) + return + for(var/turf in turf_list) + if(!isturf(turf)) + continue + marked_turfs[turf] = TRUE /datum/controller/subsystem/demo/proc/mark_new(atom/movable/M) if(!can_fire) return if(!isobj(M) && !ismob(M)) return - if(M.gc_destroyed) + if(QDELING(M)) return marked_new[M] = TRUE if(marked_dirty[M]) marked_dirty -= M +/datum/controller/subsystem/demo/proc/mark_multiple_new(list/atom/atom_list) + if(!can_fire) + return + for(var/atom/atom as anything in atom_list) + if(!isobj(atom) && !ismob(atom)) + continue + if(QDELING(atom)) + continue + marked_new[atom] = TRUE + if(marked_dirty[atom]) + marked_dirty -= atom + // I can't wait for when TG ports this and they make this a #define macro. /datum/controller/subsystem/demo/proc/mark_dirty(atom/movable/M) if(!can_fire) return if(!isobj(M) && !ismob(M)) return - if(M.gc_destroyed) + if(QDELING(M)) return if(!marked_new[M]) marked_dirty[M] = TRUE +/datum/controller/subsystem/demo/proc/mark_multiple_dirty(list/atom/movable/dirty_list) + if(!can_fire) + return + for(var/atom/movable/dirty as anything in dirty_list) + if(!isobj(dirty) && !ismob(dirty)) + continue + if(QDELING(dirty)) + continue + if(!marked_new[dirty]) + marked_dirty[dirty] = TRUE + /datum/controller/subsystem/demo/proc/mark_destroyed(atom/movable/M) if(!can_fire) return diff --git a/monkestation/code/modules/research/designs/machine_designs.dm b/monkestation/code/modules/research/designs/machine_designs.dm index 91f2b95fe4e5..9dd731010b29 100644 --- a/monkestation/code/modules/research/designs/machine_designs.dm +++ b/monkestation/code/modules/research/designs/machine_designs.dm @@ -80,3 +80,13 @@ RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design/board/composters + name = "Machine Design (NT-Brand Auto Composter Board)" + desc = "The circuit board for a NT-Brand Auto Composter." + id = "composters" + build_path = /obj/item/circuitboard/machine/composters + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BOTANY + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE diff --git a/monkestation/code/modules/research/designs/medical_designs.dm b/monkestation/code/modules/research/designs/medical_designs.dm index 7385fe08142b..2173c49b8781 100644 --- a/monkestation/code/modules/research/designs/medical_designs.dm +++ b/monkestation/code/modules/research/designs/medical_designs.dm @@ -34,3 +34,15 @@ name = "Filter Blood Upgrade" surgery = /datum/surgery/blood_filter/femto id = "surgery_filter_upgrade_femto" + +/datum/design/surgical_glove + name = "Surgical Latex Glove" + desc = "Advanced latex gloves that allow the user to operate 25% quicker" + id = "surgical_gloves" + build_path = /obj/item/clothing/gloves/latex/surgical + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = 10000, /datum/material/glass = 2500, /datum/material/silver = 20000, /datum/material/gold = 1500) + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_EQUIPMENT_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL diff --git a/monkestation/code/modules/research/nanites/nanite_cloud_controller.dm b/monkestation/code/modules/research/nanites/nanite_cloud_controller.dm index c2367e0f7fa4..4207dc3af850 100644 --- a/monkestation/code/modules/research/nanites/nanite_cloud_controller.dm +++ b/monkestation/code/modules/research/nanites/nanite_cloud_controller.dm @@ -29,7 +29,7 @@ else ..() - + /obj/machinery/computer/nanite_cloud_controller/AltClick(mob/user) if(disk && !issilicon(user)) to_chat(user, span_notice("You take out [disk] from [src].")) @@ -184,7 +184,7 @@ var/cloud_id = new_backup_id if(!isnull(cloud_id)) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE) - cloud_id = clamp(round(cloud_id, 1),1,100) + cloud_id = clamp(round(cloud_id, 1), 1, 100) generate_backup(cloud_id, usr) . = TRUE if("delete_backup") @@ -223,8 +223,8 @@ var/datum/component/nanites/nanites = backup.nanites var/datum/nanite_program/P = nanites.programs[text2num(params["program_id"])] var/datum/nanite_rule/rule = rule_template.make_rule(P) - - investigate_log("[key_name(usr)] added rule [rule.display()] to program [P.name] in cloud #[current_view]", INVESTIGATE_NANITES) + if(rule) + investigate_log("[key_name(usr)] added rule [rule.display()] to program [P.name] in cloud #[current_view]", INVESTIGATE_NANITES) . = TRUE if("remove_rule") var/datum/nanite_cloud_backup/backup = get_backup(current_view) @@ -233,9 +233,9 @@ var/datum/component/nanites/nanites = backup.nanites var/datum/nanite_program/P = nanites.programs[text2num(params["program_id"])] var/datum/nanite_rule/rule = P.rules[text2num(params["rule_id"])] - rule.remove() - - investigate_log("[key_name(usr)] removed rule [rule.display()] from program [P.name] in cloud #[current_view]", INVESTIGATE_NANITES) + if(rule) + investigate_log("[key_name(usr)] removed rule [rule.display()] from program [P.name] in cloud #[current_view]", INVESTIGATE_NANITES) + rule.remove() . = TRUE if("toggle_rule_logic") var/datum/nanite_cloud_backup/backup = get_backup(current_view) diff --git a/monkestation/code/modules/research/nanites/nanite_programs/healing.dm b/monkestation/code/modules/research/nanites/nanite_programs/healing.dm index bfb78f54d0a1..1b6940de0948 100644 --- a/monkestation/code/modules/research/nanites/nanite_programs/healing.dm +++ b/monkestation/code/modules/research/nanites/nanite_programs/healing.dm @@ -203,10 +203,13 @@ trigger_cost = 25 trigger_cooldown = 120 rogue_types = list(/datum/nanite_program/shocking) + COOLDOWN_DECLARE(ghost_notify_cooldown) /datum/nanite_program/defib/on_trigger(comm_message) - host_mob.notify_ghost_cloning("Your heart is being defibrillated by nanites. Re-enter your corpse if you want to be revived!") - addtimer(CALLBACK(src, PROC_REF(zap)), 50) + if(COOLDOWN_FINISHED(src, ghost_notify_cooldown) && check_revivable()) + host_mob.notify_ghost_cloning("Your heart is being defibrillated by nanites. Re-enter your corpse if you want to be revived!") + COOLDOWN_START(src, ghost_notify_cooldown, 1 MINUTES) + addtimer(CALLBACK(src, PROC_REF(zap)), 5 SECONDS) /datum/nanite_program/defib/proc/check_revivable() if(!iscarbon(host_mob)) //nonstandard biology @@ -219,7 +222,7 @@ /datum/nanite_program/defib/proc/zap() var/mob/living/carbon/C = host_mob playsound(C, 'sound/machines/defib_charge.ogg', 50, FALSE) - sleep(30) + sleep(3 SECONDS) playsound(C, 'sound/machines/defib_zap.ogg', 50, FALSE) if(check_revivable()) playsound(C, 'sound/machines/defib_success.ogg', 50, FALSE) diff --git a/monkestation/code/modules/research/nanites/nanite_programs/utility.dm b/monkestation/code/modules/research/nanites/nanite_programs/utility.dm index 901feecec89a..484f7046f508 100644 --- a/monkestation/code/modules/research/nanites/nanite_programs/utility.dm +++ b/monkestation/code/modules/research/nanites/nanite_programs/utility.dm @@ -455,3 +455,4 @@ /datum/action/innate/nanite_button/Activate() program.press() + playsound(owner, SFX_BUTTON_CLICK, vol = 20, vary = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, mixer_channel = CHANNEL_MACHINERY) diff --git a/monkestation/code/modules/security/code/weapons/lawbringer.dm b/monkestation/code/modules/security/code/weapons/lawbringer.dm index d731efdbfea0..68de9574ecb9 100644 --- a/monkestation/code/modules/security/code/weapons/lawbringer.dm +++ b/monkestation/code/modules/security/code/weapons/lawbringer.dm @@ -60,11 +60,10 @@ return FALSE if(!owner_dna)//weird edge cases where speaker with no DNA would be able to communicate with lawbringer return FALSE - if(iscarbon(speaker)) - var/mob/living/carbon/C = speaker - if(!C.dna && !C.dna.unique_enzymes) - return FALSE - if(C.dna.unique_enzymes != owner_dna) + if(isliving(speaker)) + var/mob/living/living_speaker = speaker + var/unique_enzymes = living_speaker.has_dna()?.unique_enzymes + if(!unique_enzymes || unique_enzymes != owner_dna) return FALSE else return FALSE @@ -160,11 +159,11 @@ if(!iscarbon(user)) balloon_alert(user, "invalid organism") return - var/mob/living/carbon/C = user var/voice = null - if(C.dna && C.dna.unique_enzymes) + var/unique_enzymes = user.has_dna()?.unique_enzymes + if(unique_enzymes) if(!owner_dna) - owner_dna = C.dna.unique_enzymes + owner_dna = unique_enzymes balloon_alert(user, "biometric lock engaged") new /obj/item/paper/guides/lawbringer(get_turf(src)) user.visible_message(span_notice("The [src] prints out a sheet of paper from its authenticator")) @@ -179,7 +178,7 @@ playsound(src, voice, 50, FALSE, -2) return - if(C.dna.unique_enzymes == owner_dna) + if(unique_enzymes == owner_dna) if(locked) balloon_alert(user, "firing mode lock disengaged") locked = FALSE @@ -312,15 +311,14 @@ /obj/item/firing_pin/lawbringer/proc/updatepin(mob/living/user) if(!iscarbon(user))//should probably never happen return - var/mob/living/carbon/C = user - owner_dna = C.dna.unique_enzymes + owner_dna = user.has_dna()?.unique_enzymes /obj/item/firing_pin/lawbringer/pin_auth(mob/living/carbon/user) if(!iscarbon(user)) return FALSE - if(user && user.dna && user.dna.unique_enzymes) - if(user.dna.unique_enzymes == owner_dna) - return TRUE + var/unique_enzymes = user.has_dna()?.unique_enzymes + if(unique_enzymes && user.dna.unique_enzymes == owner_dna) + return TRUE return FALSE /obj/item/firing_pin/lawbringer/auth_fail(mob/living/carbon/user) diff --git a/monkestation/code/modules/slimecore/components/emotion_buffer.dm b/monkestation/code/modules/slimecore/components/emotion_buffer.dm index ce715b741706..202b7224116b 100644 --- a/monkestation/code/modules/slimecore/components/emotion_buffer.dm +++ b/monkestation/code/modules/slimecore/components/emotion_buffer.dm @@ -57,7 +57,7 @@ RegisterSignal(parent, COMSIG_EMOTION_HEARD, PROC_REF(store_heard)) RegisterSignal(parent, COMSIG_MOVABLE_HEAR, PROC_REF(hear_speech)) -/datum/component/emotion_buffer/Destroy(force, silent) +/datum/component/emotion_buffer/Destroy(force) . = ..() host = null diff --git a/monkestation/code/modules/slimecore/components/friendship_tracker.dm b/monkestation/code/modules/slimecore/components/friendship_tracker.dm index aa6f8bb35ead..fe3f4f6be659 100644 --- a/monkestation/code/modules/slimecore/components/friendship_tracker.dm +++ b/monkestation/code/modules/slimecore/components/friendship_tracker.dm @@ -17,7 +17,7 @@ src.befriend_level = befriend_level -/datum/component/friendship_container/Destroy(force, silent) +/datum/component/friendship_container/Destroy(force) . = ..() befriended_refs = null weakrefed_friends = null diff --git a/monkestation/code/modules/slimecore/components/latch_feeding.dm b/monkestation/code/modules/slimecore/components/latch_feeding.dm index c08040a2f59c..8481661813c5 100644 --- a/monkestation/code/modules/slimecore/components/latch_feeding.dm +++ b/monkestation/code/modules/slimecore/components/latch_feeding.dm @@ -32,7 +32,7 @@ START_PROCESSING(SSobj, src) -/datum/component/latch_feeding/Destroy(force, silent) +/datum/component/latch_feeding/Destroy(force) REMOVE_TRAIT(parent, TRAIT_FEEDING, LATCH_TRAIT) target = null check_and_replace = null diff --git a/monkestation/code/modules/slimecore/components/liquid_secretion.dm b/monkestation/code/modules/slimecore/components/liquid_secretion.dm index ad3464ba04c5..9fa5a543e0b5 100644 --- a/monkestation/code/modules/slimecore/components/liquid_secretion.dm +++ b/monkestation/code/modules/slimecore/components/liquid_secretion.dm @@ -19,7 +19,7 @@ START_PROCESSING(SSobj, src) -/datum/component/liquid_secretion/Destroy(force, silent) +/datum/component/liquid_secretion/Destroy(force) STOP_PROCESSING(SSobj, src) pre_secrete_callback = null return ..() diff --git a/monkestation/code/modules/slimecore/components/mob_stacker.dm b/monkestation/code/modules/slimecore/components/mob_stacker.dm index 4bc78677349a..7b4da4644f48 100644 --- a/monkestation/code/modules/slimecore/components/mob_stacker.dm +++ b/monkestation/code/modules/slimecore/components/mob_stacker.dm @@ -28,7 +28,7 @@ RegisterSignal(parent, COMSIG_LIVING_SET_BUCKLED, PROC_REF(check_collapse)) RegisterSignal(parent, COMSIG_MOBSTACKER_DESTROY, PROC_REF(destroy_self)) -/datum/component/mob_stacker/Destroy(force, silent) +/datum/component/mob_stacker/Destroy(force) . = ..() UnregisterSignal(main_dude, COMSIG_ATOM_JOIN_STACK) UnregisterSignal(main_dude, COMSIG_LIVING_SET_BUCKLED) diff --git a/monkestation/code/modules/slimecore/components/vac_tagged.dm b/monkestation/code/modules/slimecore/components/vac_tagged.dm index 44db508e3ea0..87e1c5bc13a6 100644 --- a/monkestation/code/modules/slimecore/components/vac_tagged.dm +++ b/monkestation/code/modules/slimecore/components/vac_tagged.dm @@ -8,7 +8,7 @@ creator = WEAKREF(creator_mob) -/datum/component/vac_tagged/Destroy(force, silent) +/datum/component/vac_tagged/Destroy(force) UnregisterSignal(parent, list(COMSIG_MOB_FED_ON, COMSIG_QDELETING)) . = ..() diff --git a/monkestation/code/modules/slimecore/corral/corral_data.dm b/monkestation/code/modules/slimecore/corral/corral_data.dm index 0df5a6585b53..f32e10a0d289 100644 --- a/monkestation/code/modules/slimecore/corral/corral_data.dm +++ b/monkestation/code/modules/slimecore/corral/corral_data.dm @@ -37,7 +37,7 @@ for(var/obj/machinery/corral_corner/corner as anything in corral_corners) RegisterSignal(corner, COMSIG_QDELETING, PROC_REF(start_break)) -/datum/corral_data/Destroy(force, ...) +/datum/corral_data/Destroy(force) QDEL_LIST(corral_connectors) for(var/turf/turf as anything in corral_turfs) if(!QDELETED(turf)) diff --git a/monkestation/code/modules/slimecore/machines/extract_requestor.dm b/monkestation/code/modules/slimecore/machines/extract_requestor.dm index faed4fff0690..09f927c4d29c 100644 --- a/monkestation/code/modules/slimecore/machines/extract_requestor.dm +++ b/monkestation/code/modules/slimecore/machines/extract_requestor.dm @@ -140,7 +140,7 @@ /datum/extract_request_data/proc/on_creation() RegisterSignal(host_card, COMSIG_QDELETING, PROC_REF(end_request_qdeleted)) -/datum/extract_request_data/Destroy(force, ...) +/datum/extract_request_data/Destroy(force) UnregisterSignal(host_card, COMSIG_QDELETING) host_card = null linked_console = null diff --git a/monkestation/code/modules/slimecore/mobs/_base_slime.dm b/monkestation/code/modules/slimecore/mobs/_base_slime.dm index db24777e6b5a..b7794e979d73 100644 --- a/monkestation/code/modules/slimecore/mobs/_base_slime.dm +++ b/monkestation/code/modules/slimecore/mobs/_base_slime.dm @@ -142,12 +142,10 @@ recompile_ai_tree() /mob/living/basic/slime/death(gibbed) - . = ..() - if(buckled) - buckled?.unbuckle_all_mobs() + buckled?.unbuckle_mob(src, force = TRUE) + return ..() /mob/living/basic/slime/Destroy() - . = ..() for(var/datum/slime_trait/trait as anything in slime_traits) remove_trait(trait) UnregisterSignal(src, list( @@ -162,6 +160,7 @@ qdel(mutation) QDEL_NULL(current_color) + return ..() /mob/living/basic/slime/mob_try_pickup(mob/living/user, instant) if(!SEND_SIGNAL(src, COMSIG_FRIENDSHIP_CHECK_LEVEL, user, FRIENDSHIP_FRIEND)) @@ -188,7 +187,7 @@ /mob/living/basic/slime/resolve_right_click_attack(atom/target, list/modifiers) if(GetComponent(/datum/component/latch_feeding)) - unbuckle_all_mobs() + buckled?.unbuckle_mob(src, force = TRUE) return else if(CanReach(target) && !HAS_TRAIT(target, TRAIT_LATCH_FEEDERED)) AddComponent(/datum/component/latch_feeding, target, TOX, 2, 4, FALSE, CALLBACK(src, TYPE_PROC_REF(/mob/living/basic/slime, latch_callback), target)) @@ -469,15 +468,13 @@ /mob/living/basic/slime/Life(seconds_per_tick, times_fired) if(isopenturf(loc)) var/turf/open/my_our_turf = loc - if(my_our_turf.pollution) - my_our_turf.pollution.touch_act(src) + my_our_turf.pollution?.touch_act(src) . = ..() /mob/living/basic/slime/proc/apply_water() - adjustBruteLoss(rand(15,20)) - if(!client) - if(buckled) - unbuckle_mob(buckled, TRUE) + adjustBruteLoss(rand(15, 20)) + if(QDELETED(client)) + buckled?.unbuckle_mob(src, force = TRUE) return /mob/living/basic/slime/proc/latch_callback(mob/living/target) diff --git a/monkestation/code/modules/slimecore/slime_color_mutations/mutations/_base_mutation.dm b/monkestation/code/modules/slimecore/slime_color_mutations/mutations/_base_mutation.dm index 241cb9f7e2bc..13b787971be9 100644 --- a/monkestation/code/modules/slimecore/slime_color_mutations/mutations/_base_mutation.dm +++ b/monkestation/code/modules/slimecore/slime_color_mutations/mutations/_base_mutation.dm @@ -17,7 +17,7 @@ ///the mobs needed to be latch fed in order to mutate - stored in type = amount var/list/latch_needed = list() -/datum/slime_mutation_data/Destroy(force, ...) +/datum/slime_mutation_data/Destroy(force) . = ..() host = null diff --git a/monkestation/code/modules/smithing/anvil/anvil.dm b/monkestation/code/modules/smithing/anvil/anvil.dm index 3bea083c2059..bb3953ac24e9 100644 --- a/monkestation/code/modules/smithing/anvil/anvil.dm +++ b/monkestation/code/modules/smithing/anvil/anvil.dm @@ -37,47 +37,58 @@ /obj/structure/anvil/attack_hand(mob/living/user, list/modifiers) . = ..() - if(!chosen_recipe) - var/pick = show_radial_menu(user, src, recipes, custom_check = FALSE, require_near = TRUE, tooltips = TRUE) - if(!pick) - return - if(!(pick in name_to_type)) - return - chosen_recipe = name_to_type[pick] + if(anchored && !smithing) + if(!chosen_recipe) + var/pick = show_radial_menu(user, src, recipes, custom_check = FALSE, require_near = TRUE, tooltips = TRUE) + if(!pick) + return + if(!(pick in name_to_type)) + return + chosen_recipe = name_to_type[pick] - if(!smithing && working_material && chosen_recipe && working_material.material_stats) - var/density_hardness = 0 - density_hardness = working_material.material_stats.hardness + working_material.material_stats.density + if(working_material && chosen_recipe && working_material.material_stats) + var/density_hardness = 0 + density_hardness = working_material.material_stats.hardness + working_material.material_stats.density - var/difficulty_modifier = density_hardness / 30 + var/difficulty_modifier = density_hardness / 30 - new /datum/anvil_challenge(src, new chosen_recipe, user, difficulty_modifier) - smithing = TRUE + new /datum/anvil_challenge(src, new chosen_recipe, user, difficulty_modifier) + smithing = TRUE /obj/structure/anvil/attack_hand_secondary(mob/user, list/modifiers) - if(chosen_recipe) + if(chosen_recipe && !smithing) chosen_recipe = null return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN . = ..() /obj/structure/anvil/proc/generate_item(quality) - var/obj/item/smithed_part/new_part = chosen_recipe.output - new new_part (get_turf(src), working_material, quality) - QDEL_NULL(working_material) + var/obj/output = new chosen_recipe.output + if(istype(output,/obj/item/smithed_part)) + var/obj/item/smithed_part/new_part = chosen_recipe.output + new new_part (get_turf(src), working_material, quality) + QDEL_NULL(working_material) + else if(istype(output,/obj/item/clothing/smithed_clothes)) + var/obj/item/clothing/smithed_clothes/new_part = chosen_recipe.output + new new_part (get_turf(src), working_material, quality) + QDEL_NULL(working_material) + QDEL_NULL(output) //Thanks, bye /obj/structure/anvil/attackby(obj/item/attacking_item, mob/living/user, params) if((isstack(attacking_item) || istype(attacking_item, /obj/item/merged_material)) && !smithing) if(try_place_item(attacking_item, user)) return + if(attacking_item.tool_behaviour == TOOL_WRENCH && !smithing) + default_unfasten_wrench(user,attacking_item,40) + return return ..() /obj/structure/anvil/proc/try_place_item(obj/item/item, mob/living/user) - if(working_material) + if(working_material && !smithing) working_material.forceMove(get_turf(src)) working_material = null visible_message("[user] replaces the ingot on the anvil.") - if(isstack(item)) + if(isstack(item) && !smithing) var/obj/item/stack/stack = item if(!stack.material_type) working_material = null @@ -89,7 +100,7 @@ var/obj/item/stack/new_stack = stack.split_stack(user, 1) new_stack.forceMove(src) working_material = new_stack - else if(istype(item, /obj/item/merged_material)) + else if(istype(item, /obj/item/merged_material) && !smithing) item.forceMove(src) working_material = item return TRUE diff --git a/monkestation/code/modules/smithing/anvil/recipe/armor_parts.dm b/monkestation/code/modules/smithing/anvil/recipe/armor_parts.dm new file mode 100644 index 000000000000..7f17a09a7d43 --- /dev/null +++ b/monkestation/code/modules/smithing/anvil/recipe/armor_parts.dm @@ -0,0 +1,30 @@ +/datum/anvil_recipe/gloves + name = "Gloves" + difficulty = 5 + total_notes = 60 + output = /obj/item/clothing/smithed_clothes/gloves +/datum/anvil_recipe/suit + name = "Suit" + difficulty = 7 + total_notes = 75 + output = /obj/item/clothing/smithed_clothes/suit +/datum/anvil_recipe/helmet + name = "Helmet" + difficulty = 6 + total_notes = 68 + output = /obj/item/clothing/smithed_clothes/helmet +/datum/anvil_recipe/shoes + name = "Shoes" + difficulty = 4 + total_notes = 55 + output = /obj/item/clothing/smithed_clothes/shoes +/datum/anvil_recipe/pavise + name = "Pavise Shield" + difficulty = 4 + total_notes = 50 + output = /obj/item/smithed_part/weapon_part/shield/pavise +/datum/anvil_recipe/buckler + name = "Buckler Shield" + difficulty = 3 + total_notes = 50 + output = /obj/item/smithed_part/weapon_part/shield/buckler diff --git a/monkestation/code/modules/smithing/anvil/recipe/swords.dm b/monkestation/code/modules/smithing/anvil/recipe/weapon_heads.dm similarity index 71% rename from monkestation/code/modules/smithing/anvil/recipe/swords.dm rename to monkestation/code/modules/smithing/anvil/recipe/weapon_heads.dm index d87c00c60e98..436a84978248 100644 --- a/monkestation/code/modules/smithing/anvil/recipe/swords.dm +++ b/monkestation/code/modules/smithing/anvil/recipe/weapon_heads.dm @@ -27,3 +27,15 @@ difficulty = 2 total_notes = 40 output = /obj/item/smithed_part/weapon_part/pickaxe_head + +/datum/anvil_recipe/spear_blade + name = "Spear Blade" + difficulty = 1 + total_notes = 50 + output = /obj/item/smithed_part/weapon_part/spear_blade + +/datum/anvil_recipe/axe_blade + name = "Axe Blade" + difficulty = 3 + total_notes = 55 + output = /obj/item/smithed_part/weapon_part/axe_blade diff --git a/monkestation/code/modules/smithing/anvil/smithed_parts/_base_part.dm b/monkestation/code/modules/smithing/anvil/smithed_parts/_base_part.dm index a14a9e4e02aa..b99c2910ae79 100644 --- a/monkestation/code/modules/smithing/anvil/smithed_parts/_base_part.dm +++ b/monkestation/code/modules/smithing/anvil/smithed_parts/_base_part.dm @@ -10,16 +10,19 @@ var/base_name = "generic item" + var/made_of + var/smithed_quality = 100 /obj/item/smithed_part/Initialize(mapload, obj/item/created_from, quality) . = ..() - smithed_quality = max(quality, 25) + smithed_quality = max(quality, 5) if(!created_from) created_from = new /obj/item/stack/sheet/mineral/gold + made_of = created_from.type if(isstack(created_from) && !created_from.material_stats) var/obj/item/stack/stack = created_from @@ -31,16 +34,29 @@ var/damage_state switch(smithed_quality) - if(0 to 25) + if(0 to 24) damage_state = "damage-4" - if(25 to 50) + desc += " It looks of poor quality... Quality:[smithed_quality]" + if(25 to 49) damage_state = "damage-3" - if(50 to 60) + desc += " It looks slightly under average. Quality:[smithed_quality]" + if(50 to 59) damage_state = "damage-2" - if(60 to 90) + desc += " It looks pretty average quality. Quality:[smithed_quality]" + if(60 to 89) damage_state = "damage-1" - else + desc += " It looks well forged! Quality:[smithed_quality]" + if(90 to 99) damage_state = null + desc += " It looks about as perfect as can be! Quality:[smithed_quality]" + if(100 to 125) + damage_state = null + desc += " It's utterly flawless! Quality:[smithed_quality]" + + if(material_stats.thermal <= 50) + resistance_flags |= FIRE_PROOF + if(material_stats.thermal <= 20) + resistance_flags |= LAVA_PROOF if(damage_state) add_filter("damage_filter", 1, alpha_mask_filter(icon = icon('monkestation/code/modules/smithing/icons/forge_items.dmi', damage_state), flags = MASK_INVERSE)) @@ -48,7 +64,10 @@ /obj/item/smithed_part/update_name(updates) . = ..() - name = "[material_stats.material_name] [base_name]" + if(smithed_quality < 100) + name = "[material_stats.material_name] [base_name]" + else + name = "flawless [material_stats.material_name] [base_name]" /obj/item/smithed_part/weapon_part var/complete = FALSE @@ -62,7 +81,10 @@ /obj/item/smithed_part/weapon_part/update_name(updates) . = ..() if(complete) - name = "[material_stats.material_name] [weapon_name]" + if(smithed_quality < 100) + name = "[material_stats.material_name] [weapon_name]" + else + name = "flawless [material_stats.material_name] [weapon_name]" /obj/item/smithed_part/weapon_part/update_overlays() . = ..() @@ -75,3 +97,23 @@ lefthand_file = left_weapon_inhand righthand_file = right_weapon_inhand update_appearance() + if(material_stats) + for(var/datum/material_trait/trait as anything in material_stats.material_traits) + var/datum/material_trait/newtrait = new trait.type + //Why are we calling this here? Because we modify force and other stats that are normally in init + newtrait.post_parent_init(src) + +/datum/export/smithed_part + unit_name = "smithed good" + k_elasticity = 0 + export_types = list(/obj/item/smithed_part,/obj/item/clothing/smithed_clothes) + cost = 1 + +/datum/export/smithed_part/get_cost(obj/item/smithed_part/O, apply_elastic) + var/obj/item/dummy = new O.made_of + var/datum/export_report/export = export_item_and_contents(dummy,dry_run = TRUE) + var/price = 0 + for(var/x in export.total_amount) + price += export.total_value[x] + QDEL_NULL(dummy) + return round((((CARGO_CRATE_VALUE*0.25) + price) * 2) * (O.smithed_quality/100)) diff --git a/monkestation/code/modules/smithing/anvil/smithed_parts/axe_blade.dm b/monkestation/code/modules/smithing/anvil/smithed_parts/axe_blade.dm new file mode 100644 index 000000000000..6933b8aea722 --- /dev/null +++ b/monkestation/code/modules/smithing/anvil/smithed_parts/axe_blade.dm @@ -0,0 +1,22 @@ +/obj/item/smithed_part/weapon_part/axe_blade + icon_state = "axehead" + base_name = "axe blade" + weapon_name = "axe" + + weapon_inhand_icon_state = "axe" + hilt_icon = 'monkestation/code/modules/smithing/icons/forge_items.dmi' + hilt_icon_state = "axe-hilt" + +/obj/item/smithed_part/weapon_part/axe_blade/finish_weapon() + sharpness = SHARP_EDGED + embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) + armour_penetration = 30 * (smithed_quality / 100) + + stamina_cost = round(15 * (100 / smithed_quality)) + + tool_behaviour = TOOL_SAW + + force = round(((material_stats.density + material_stats.hardness) / 8.9) * (smithed_quality * 0.01)) + throwforce = force * 1.75 + w_class = WEIGHT_CLASS_SMALL + ..() diff --git a/monkestation/code/modules/smithing/anvil/smithed_parts/dagger_blade.dm b/monkestation/code/modules/smithing/anvil/smithed_parts/dagger_blade.dm index 3ee1de038d2f..3e9f025d6456 100644 --- a/monkestation/code/modules/smithing/anvil/smithed_parts/dagger_blade.dm +++ b/monkestation/code/modules/smithing/anvil/smithed_parts/dagger_blade.dm @@ -8,14 +8,15 @@ hilt_icon_state = "dagger-hilt" /obj/item/smithed_part/weapon_part/dagger_blade/finish_weapon() - . = ..() sharpness = SHARP_POINTY embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) - armour_penetration = 24 + armour_penetration = 35 * (smithed_quality / 100) + attack_speed = CLICK_CD_FAST_MELEE stamina_cost = round(5 * (100 / smithed_quality)) - throwforce = round(((material_stats.density + material_stats.hardness) / 7) * (smithed_quality * 0.01)) + throwforce = round(((material_stats.density + material_stats.hardness) / 9) * (smithed_quality * 0.01)) force = throwforce * 0.25 w_class = WEIGHT_CLASS_SMALL + ..() diff --git a/monkestation/code/modules/smithing/anvil/smithed_parts/pickaxe_head.dm b/monkestation/code/modules/smithing/anvil/smithed_parts/pickaxe_head.dm index 0d1fa0c9b985..71c3fc1a4a95 100644 --- a/monkestation/code/modules/smithing/anvil/smithed_parts/pickaxe_head.dm +++ b/monkestation/code/modules/smithing/anvil/smithed_parts/pickaxe_head.dm @@ -1,20 +1,25 @@ /obj/item/smithed_part/weapon_part/pickaxe_head icon_state = "pickaxehead" base_name = "pickaxe head" + worn_icon = 'monkestation/code/modules/smithing/icons/forge_weapon_worn.dmi' weapon_name = "pickaxe" weapon_inhand_icon_state = "pickaxe" lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi' - hilt_icon = 'monkestation/code/modules/smithing/icons/forge_items.dmi' hilt_icon_state = "pickaxe-hilt" /obj/item/smithed_part/weapon_part/pickaxe_head/finish_weapon() - . = ..() tool_behaviour = TOOL_MINING - toolspeed = 1 / round(((material_stats.density + material_stats.hardness) / 10) * (smithed_quality * 0.01)) - force = round(((material_stats.density + material_stats.hardness) / 15) * (smithed_quality * 0.01)) + usesound = list('sound/effects/picaxe1.ogg', 'sound/effects/picaxe2.ogg', 'sound/effects/picaxe3.ogg') + attack_verb_continuous = list("hits", "pierces", "slices", "attacks") + attack_verb_simple = list("hit", "pierce", "slice", "attack") + + toolspeed = 1 / max(round(((material_stats.density + material_stats.hardness) / 10) * (smithed_quality * 0.01)),1) + force = round(((material_stats.density + material_stats.hardness) / 20) * (smithed_quality * 0.01)) + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK throwforce = force * 1.5 w_class = WEIGHT_CLASS_NORMAL + ..() diff --git a/monkestation/code/modules/smithing/anvil/smithed_parts/rapier_blade.dm b/monkestation/code/modules/smithing/anvil/smithed_parts/rapier_blade.dm index 9e01cdd29ab4..190870ed8edb 100644 --- a/monkestation/code/modules/smithing/anvil/smithed_parts/rapier_blade.dm +++ b/monkestation/code/modules/smithing/anvil/smithed_parts/rapier_blade.dm @@ -7,16 +7,16 @@ hilt_icon_state = "rapier-hilt" /obj/item/smithed_part/weapon_part/rapier_blade/finish_weapon() - . = ..() sharpness = SHARP_POINTY wound_bonus = 10 bare_wound_bonus = 25 - armour_penetration = -5 + armour_penetration = 50 * (smithed_quality / 100) AddComponent(/datum/component/multi_hit, icon_state = "stab", height = 2) attack_speed = CLICK_CD_LIGHT_WEAPON stamina_cost = round(20 * (100 / smithed_quality)) - force = round(((material_stats.density + material_stats.hardness) / 11) * (smithed_quality * 0.01)) - throwforce = force * 1.5 + force = round(((material_stats.density + material_stats.hardness) / 9.75) * (smithed_quality * 0.01)) + throwforce = force * 0.9 w_class = WEIGHT_CLASS_NORMAL + ..() diff --git a/monkestation/code/modules/smithing/anvil/smithed_parts/shields.dm b/monkestation/code/modules/smithing/anvil/smithed_parts/shields.dm new file mode 100644 index 000000000000..30d2404c5a2d --- /dev/null +++ b/monkestation/code/modules/smithing/anvil/smithed_parts/shields.dm @@ -0,0 +1,109 @@ +/obj/item/smithed_part/weapon_part/shield/buckler + icon_state = "buckler" + base_name = "unfinished buckler" + weapon_name = "buckler" + block_sound = 'sound/weapons/block_shield.ogg' + desc = "A simple round shield." + + weapon_inhand_icon_state = "buckler" + hilt_icon = 'monkestation/code/modules/smithing/icons/forge_items.dmi' + hilt_icon_state = "buckler" + worn_icon = 'monkestation/code/modules/smithing/icons/forge_weapon_worn.dmi' + worn_icon_state = "buckler_back" + +/obj/item/smithed_part/weapon_part/shield/buckler/finish_weapon() + slot_flags = ITEM_SLOT_BACK + var quality = (smithed_quality/100) + force = round(10 * quality) + throwforce = round(force/1.5) + + max_integrity = round(((material_stats.hardness + material_stats.density)) * quality) + atom_integrity = max_integrity + block_chance = round(((material_stats.hardness + material_stats.density)/6) * quality) + + w_class = WEIGHT_CLASS_NORMAL + + var/datum/armor/temp = new() //Scuffed, but no idea how to better. + set_armor(temp.generate_new_with_modifiers(list( + ACID = min(round((material_stats.density / 1.75) * (smithed_quality/100)), 40), + BOMB = min(round(((material_stats.density + material_stats.hardness)/3.5) * (smithed_quality/100)), 40), + BULLET = min(round(((material_stats.density + material_stats.hardness)/3.5) * (smithed_quality/100)), 40), + ENERGY = min(round((material_stats.refractiveness / 1.75) * (smithed_quality/100)), 40), + FIRE = min(round(((100-material_stats.thermal)/1.75) * (smithed_quality/100)), 40), + LASER = min(round(((material_stats.refractiveness + material_stats.density)/3.5) * (smithed_quality/100)), 40), + MELEE = min(round(((material_stats.density + material_stats.hardness)/2) * (smithed_quality/100)), 40) + ))) + QDEL_NULL(temp) //Thanks now back to the void with you + ..() + +/obj/item/smithed_part/weapon_part/shield/pavise + icon_state = "pavise" + base_name = "unfinished pavise" + weapon_name = "pavise" + block_sound = 'sound/weapons/block_shield.ogg' + desc = "A tall, robust shield." + + weapon_inhand_icon_state = "pavise" + hilt_icon = 'monkestation/code/modules/smithing/icons/forge_items.dmi' + hilt_icon_state = "pavise" + worn_icon = 'monkestation/code/modules/smithing/icons/forge_weapon_worn.dmi' + worn_icon_state = "pavise_back" + +/obj/item/smithed_part/weapon_part/shield/pavise/finish_weapon() + slot_flags = ITEM_SLOT_BACK + var quality = (smithed_quality/100) + force = round(10 * quality) + throwforce = round(force/2) + block_chance = round(((material_stats.hardness + material_stats.density)/3) * quality) + + max_integrity = round(((material_stats.hardness + material_stats.density)*1.5) * quality) + atom_integrity = max_integrity + + w_class = WEIGHT_CLASS_BULKY + + var/datum/armor/temp = new() //Scuffed, but no idea how to better. + set_armor(temp.generate_new_with_modifiers(list( + ACID = min(round((material_stats.density / 1.5) * (smithed_quality/100)), 70), + BOMB = min(round(((material_stats.density + material_stats.hardness)/3) * (smithed_quality/100)), 70), + BULLET = min(round(((material_stats.density + material_stats.hardness)/3) * (smithed_quality/100)), 70), + ENERGY = min(round((material_stats.refractiveness / 1.5) * (smithed_quality/100)), 70), + FIRE = min(round(((100-material_stats.thermal)/1.5) * (smithed_quality/100)), 70), + LASER = min(round(((material_stats.refractiveness + material_stats.density)/3) * (smithed_quality/100)), 70), + MELEE = min(round(((material_stats.density + material_stats.hardness)/2) * (smithed_quality/100)), 70) + ))) + QDEL_NULL(temp) //Thanks now back to the void with you + ..() + + +//Common code +/obj/item/smithed_part/weapon_part/shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text, final_block_chance, damage, attack_type) + if(attack_type == THROWN_PROJECTILE_ATTACK) + final_block_chance += 30 + if(attack_type == LEAP_ATTACK) + final_block_chance = 100 + . = ..() + if(.) + on_shield_block(owner, hitby, attack_text, damage, attack_type) + +/obj/item/smithed_part/weapon_part/shield/proc/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) + if (atom_integrity <= damage) + var/turf/owner_turf = get_turf(owner) + owner_turf.visible_message(span_warning("[hitby] destroys [src]!")) + playsound(owner, shield_break_sound, 50) + qdel(src) + return FALSE + take_damage(damage) + return TRUE +/obj/item/smithed_part/weapon_part/shield + var/shield_break_sound = 'sound/effects/bang.ogg' + +/obj/item/smithed_part/weapon_part/shield/examine(mob/user) + . = ..() + var/healthpercent = round((atom_integrity/max_integrity) * 100, 1) + switch(healthpercent) + if(50 to 99) + . += span_info("It looks slightly damaged.") + if(25 to 50) + . += span_info("It appears heavily damaged.") + if(0 to 25) + . += span_warning("It's falling apart!") diff --git a/monkestation/code/modules/smithing/anvil/smithed_parts/spear_blade.dm b/monkestation/code/modules/smithing/anvil/smithed_parts/spear_blade.dm new file mode 100644 index 000000000000..ffc711e5b010 --- /dev/null +++ b/monkestation/code/modules/smithing/anvil/smithed_parts/spear_blade.dm @@ -0,0 +1,26 @@ +/obj/item/smithed_part/weapon_part/spear_blade + icon_state = "spearhead" + base_name = "spear blade" + weapon_name = "spear" + + weapon_inhand_icon_state = "spear" + hilt_icon = 'monkestation/code/modules/smithing/icons/forge_items.dmi' + hilt_icon_state = "spear-hilt" + worn_icon = 'monkestation/code/modules/smithing/icons/forge_weapon_worn.dmi' + worn_icon_state = "spear_back" + +/obj/item/smithed_part/weapon_part/spear_blade/finish_weapon() + sharpness = SHARP_EDGED + embedding = list("impact_pain_mult" = 2, "remove_pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) + armour_penetration = 30 * (smithed_quality / 100) + reach = 2 + AddComponent(/datum/component/multi_hit, icon_state = "stab", height = 2) + + slot_flags = ITEM_SLOT_SUITSTORE | ITEM_SLOT_BACK + + stamina_cost = round(25 * (100 / smithed_quality)) + + force = round(((material_stats.density + material_stats.hardness) / 9) * (smithed_quality * 0.01)) + throwforce = force * 1.25 + w_class = WEIGHT_CLASS_BULKY + ..() diff --git a/monkestation/code/modules/smithing/anvil/smithed_parts/staff_head.dm b/monkestation/code/modules/smithing/anvil/smithed_parts/staff_head.dm index 9c6e0585f7b9..4018616efbd6 100644 --- a/monkestation/code/modules/smithing/anvil/smithed_parts/staff_head.dm +++ b/monkestation/code/modules/smithing/anvil/smithed_parts/staff_head.dm @@ -5,16 +5,22 @@ hilt_icon = 'monkestation/code/modules/smithing/icons/forge_items.dmi' hilt_icon_state = "staff-hilt" + worn_icon = 'monkestation/code/modules/smithing/icons/forge_weapon_worn.dmi' + worn_icon_state = "staff_back" /obj/item/smithed_part/weapon_part/staff_head/finish_weapon() - . = ..() damtype = STAMINA reach = 2 AddComponent(/datum/component/multi_hit, icon_state = "swipe", width = 3, continues_travel = TRUE) + block_chance = round(((material_stats.hardness + material_stats.density)/15) * (smithed_quality/100)) + + slot_flags = ITEM_SLOT_SUITSTORE | ITEM_SLOT_BACK + attack_speed = CLICK_CD_LARGE_WEAPON stamina_cost = round(30 * (100 / smithed_quality)) - force = round(((material_stats.density + material_stats.hardness) / 3) * (smithed_quality * 0.01)) + force = round(((material_stats.density + material_stats.hardness) / 8) * (smithed_quality * 0.01)) throwforce = force * 0.1 // good luck whipping a staff at something w_class = WEIGHT_CLASS_HUGE + ..() diff --git a/monkestation/code/modules/smithing/anvil/smithed_parts/sword_blade.dm b/monkestation/code/modules/smithing/anvil/smithed_parts/sword_blade.dm index 4075b9571c21..2e6bb1eb5cb2 100644 --- a/monkestation/code/modules/smithing/anvil/smithed_parts/sword_blade.dm +++ b/monkestation/code/modules/smithing/anvil/smithed_parts/sword_blade.dm @@ -6,17 +6,21 @@ weapon_inhand_icon_state = "sword" hilt_icon = 'monkestation/code/modules/smithing/icons/forge_items.dmi' hilt_icon_state = "blade-hilt" + worn_icon = 'monkestation/code/modules/smithing/icons/forge_weapon_worn.dmi' + worn_icon_state = "sword_back" /obj/item/smithed_part/weapon_part/sword_blade/finish_weapon() - . = ..() sharpness = SHARP_EDGED wound_bonus = 15 bare_wound_bonus = 25 - armour_penetration = 12 + armour_penetration = 25 * (smithed_quality / 100) + + slot_flags = ITEM_SLOT_SUITSTORE | ITEM_SLOT_BACK attack_speed = CLICK_CD_BULKY_WEAPON stamina_cost = round(40 * (100 / smithed_quality)) - force = round(((material_stats.density + material_stats.hardness) / 10) * (smithed_quality * 0.01)) + force = round(((material_stats.density + material_stats.hardness) / 9.2) * (smithed_quality * 0.01)) throwforce = force * 0.75 w_class = WEIGHT_CLASS_BULKY + ..() diff --git a/monkestation/code/modules/smithing/assembly_bench/assembly_bench.dm b/monkestation/code/modules/smithing/assembly_bench/assembly_bench.dm index d491bbb18366..46bbe07a411d 100644 --- a/monkestation/code/modules/smithing/assembly_bench/assembly_bench.dm +++ b/monkestation/code/modules/smithing/assembly_bench/assembly_bench.dm @@ -1,6 +1,6 @@ /obj/structure/machine/assembly_bench name = "assembly bench" - desc = "Can be used to assemble smithed parts together." + desc = "Can be used to assemble smithed parts together. Put in a smithed part to start." density = TRUE anchored = TRUE @@ -17,6 +17,17 @@ . = ..() for(var/datum/assembly_recipe/subtype as anything in subtypesof(/datum/assembly_recipe) - /datum/assembly_recipe/smithed_weapon) recipes += new subtype + register_context() + +/obj/structure/machine/assembly_bench/add_context(atom/source, list/context, obj/item/held_item, mob/user) + if(!current_recipe && held_item) + context[SCREENTIP_CONTEXT_LMB] = "Add to select recipe" + else + context[SCREENTIP_CONTEXT_LMB] = "Add to progress recipe" + if(current_recipe) + context[SCREENTIP_CONTEXT_ALT_LMB] = "Clear Recipe." + return CONTEXTUAL_SCREENTIP_SET + /obj/structure/machine/assembly_bench/examine(mob/user) . = ..() @@ -24,7 +35,22 @@ for(var/obj/item/item as anything in current_recipe.needed_items) . += span_notice("[current_recipe.needed_items[item]] [initial(item.name)] needed.") +/obj/structure/machine/assembly_bench/AltClick(mob/user) + if(current_recipe) + for(var/obj/item/stored in stored_items) + stored.forceMove(user.loc) + stored_items -= stored + clear_recipe() + return TRUE + . = ..() + + /obj/structure/machine/assembly_bench/attackby(obj/item/attacking_item, mob/living/user, params) + if(attacking_item.tool_behaviour == TOOL_WRENCH && !current_recipe) + default_unfasten_wrench(user,attacking_item,40) + return + if(!anchored) + return ..() if(!current_recipe) for(var/datum/assembly_recipe/recipe as anything in recipes) if(recipe.item_to_start != attacking_item.type) @@ -67,6 +93,7 @@ return if(do_after(user, current_recipe.craft_time, src)) current_recipe.complete_recipe() + user.mind.adjust_experience(/datum/skill/smithing, 10) //You made a thing! Congrats! /obj/structure/machine/assembly_bench/attack_hand(mob/living/user, list/modifiers) try_complete_recipe(user) @@ -76,6 +103,5 @@ current_recipe.parent = null held_starting_item = null QDEL_NULL(current_recipe) - QDEL_LIST(stored_items) stored_items = list() diff --git a/monkestation/code/modules/smithing/assembly_bench/assembly_recipes/sword.dm b/monkestation/code/modules/smithing/assembly_bench/assembly_recipes/weapons.dm similarity index 55% rename from monkestation/code/modules/smithing/assembly_bench/assembly_recipes/sword.dm rename to monkestation/code/modules/smithing/assembly_bench/assembly_recipes/weapons.dm index b30cff056b0b..9940cd7c8c69 100644 --- a/monkestation/code/modules/smithing/assembly_bench/assembly_recipes/sword.dm +++ b/monkestation/code/modules/smithing/assembly_bench/assembly_recipes/weapons.dm @@ -22,3 +22,23 @@ item_to_start = /obj/item/smithed_part/weapon_part/pickaxe_head needed_items = list(/obj/item/stack/sheet/mineral/wood = 2) craft_time = 3 SECONDS + +/datum/assembly_recipe/smithed_weapon/spear + item_to_start = /obj/item/smithed_part/weapon_part/spear_blade + needed_items = list(/obj/item/stack/sheet/mineral/wood = 2) + craft_time = 3 SECONDS + +/datum/assembly_recipe/smithed_weapon/axe + item_to_start = /obj/item/smithed_part/weapon_part/axe_blade + needed_items = list(/obj/item/stack/sheet/mineral/wood = 1) + craft_time = 2 SECONDS + +/datum/assembly_recipe/smithed_weapon/buckler + item_to_start = /obj/item/smithed_part/weapon_part/shield/buckler + needed_items = list(/obj/item/stack/sheet/mineral/wood = 1) + craft_time = 5 SECONDS + +/datum/assembly_recipe/smithed_weapon/pavise + item_to_start = /obj/item/smithed_part/weapon_part/shield/pavise + needed_items = list(/obj/item/stack/sheet/mineral/wood = 2) + craft_time = 7.5 SECONDS diff --git a/monkestation/code/modules/smithing/icons/boots.dmi b/monkestation/code/modules/smithing/icons/boots.dmi new file mode 100644 index 000000000000..fa6de2ea50a6 Binary files /dev/null and b/monkestation/code/modules/smithing/icons/boots.dmi differ diff --git a/monkestation/code/modules/smithing/icons/cloaks.dmi b/monkestation/code/modules/smithing/icons/cloaks.dmi new file mode 100644 index 000000000000..7a2454fb90b5 Binary files /dev/null and b/monkestation/code/modules/smithing/icons/cloaks.dmi differ diff --git a/monkestation/code/modules/smithing/icons/forge_structures.dmi b/monkestation/code/modules/smithing/icons/forge_structures.dmi index 51d9247c9796..7bb887fcc230 100644 Binary files a/monkestation/code/modules/smithing/icons/forge_structures.dmi and b/monkestation/code/modules/smithing/icons/forge_structures.dmi differ diff --git a/monkestation/code/modules/smithing/icons/forge_weapon_worn.dmi b/monkestation/code/modules/smithing/icons/forge_weapon_worn.dmi index 532834d2336b..711d811624ee 100644 Binary files a/monkestation/code/modules/smithing/icons/forge_weapon_worn.dmi and b/monkestation/code/modules/smithing/icons/forge_weapon_worn.dmi differ diff --git a/monkestation/code/modules/smithing/ipcs/body/base_bodyparts.dm b/monkestation/code/modules/smithing/ipcs/body/base_bodyparts.dm index 1b5085b89a56..dfcf48856c9c 100644 --- a/monkestation/code/modules/smithing/ipcs/body/base_bodyparts.dm +++ b/monkestation/code/modules/smithing/ipcs/body/base_bodyparts.dm @@ -8,6 +8,7 @@ should_draw_greyscale = FALSE biological_state = BIO_ROBOTIC bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + head_flags = HEAD_HAIR | HEAD_LIPS | HEAD_EYECOLOR | HEAD_LIPS body_damage_coeff = 1.1 //IPC's Head can dismember //Monkestation Edit max_damage = 40 //Keep in mind that this value is used in the //Monkestation Edit diff --git a/monkestation/code/modules/smithing/ipcs/species.dm b/monkestation/code/modules/smithing/ipcs/species.dm index 44bc9ade80be..00af82672889 100644 --- a/monkestation/code/modules/smithing/ipcs/species.dm +++ b/monkestation/code/modules/smithing/ipcs/species.dm @@ -22,16 +22,11 @@ TRAIT_LIMBATTACHMENT, TRAIT_LITERATE, TRAIT_REVIVES_BY_HEALING, - TRAIT_NOCRITDAMAGE, // We do our own handling of crit damage. TRAIT_NO_DNA_COPY, ) species_traits = list( NO_DNA_COPY, - EYECOLOR, - LIPS, - HAIR, - NOEYESPRITES, NOTRANSSTING, NOHUSK ) @@ -75,6 +70,7 @@ BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/robot/ipc, ) + brutemod = 1.5 coldmod = 1.2 heatmod = 2 // TWO TIMES DAMAGE FROM BEING TOO HOT?! WHAT?! No wonder lava is literal instant death for us. siemens_coeff = 1.4 // Not more because some shocks will outright crit you, which is very unfun diff --git a/monkestation/code/modules/smithing/ipcs/surgeries/steps.dm b/monkestation/code/modules/smithing/ipcs/surgeries/steps.dm index 8389c9e1a799..ece38e46273d 100644 --- a/monkestation/code/modules/smithing/ipcs/surgeries/steps.dm +++ b/monkestation/code/modules/smithing/ipcs/surgeries/steps.dm @@ -1,6 +1,6 @@ //cut wires /datum/surgery_step/cut_wires - name = "cut wires" + name = "cut wires (wirecutter)" implements = list( TOOL_WIRECUTTER = 100, TOOL_SCALPEL = 75, @@ -25,7 +25,7 @@ //pry off plating /datum/surgery_step/pry_off_plating - name = "pry off plating" + name = "pry off plating (crowbar)" implements = list( TOOL_CROWBAR = 100, TOOL_HEMOSTAT = 10, @@ -47,7 +47,7 @@ //weld plating /datum/surgery_step/weld_plating - name = "weld plating" + name = "weld plating (welder)" implements = list( TOOL_WELDER = 100, ) @@ -69,7 +69,7 @@ //replace wires /datum/surgery_step/replace_wires - name = "replace wires" + name = "replace wires (coil)" implements = list(/obj/item/stack/cable_coil = 100) time = 2.4 SECONDS var/cableamount = 5 @@ -98,7 +98,7 @@ //add plating /datum/surgery_step/add_plating - name = "add plating" + name = "add plating (iron sheets)" implements = list(/obj/item/stack/sheet/iron = 100) time = 2.4 SECONDS var/ironamount = 5 diff --git a/monkestation/code/modules/smithing/items/clothing.dm b/monkestation/code/modules/smithing/items/clothing.dm new file mode 100644 index 000000000000..684b0bd34c65 --- /dev/null +++ b/monkestation/code/modules/smithing/items/clothing.dm @@ -0,0 +1,167 @@ +/obj/item/clothing/smithed_clothes + name = "generic smithed clothes" + desc = "generic smithed clothes" + var/smithed_quality = 100 + var/obj/made_of = null + var/base_name = "generic smithed clothes" + + armor_type = /datum/armor/smithed_dummy //This isnt actually used, its just a dummy + +/datum/armor/smithed_dummy + +/obj/item/clothing/smithed_clothes/Initialize(mapload,obj/item/created_from,quality) + . = ..() + smithed_quality = max(quality, 5) + + if(!created_from) + created_from = new /obj/item/stack/sheet/mineral/gold + made_of = new created_from.type + + if(isstack(created_from) && !created_from.material_stats) + var/obj/item/stack/stack = created_from + create_stats_from_material(stack.material_type) + else + create_stats_from_material_stats(created_from.material_stats) + + name = "[material_stats.material_name] [base_name]" + var/damage_state + switch(smithed_quality) + if(0 to 24) + damage_state = "damage-4" + desc += " It looks of poor quality... Quality:[smithed_quality]" + if(25 to 49) + damage_state = "damage-3" + desc += " It looks slightly under average. Quality:[smithed_quality]" + if(50 to 59) + damage_state = "damage-2" + desc += " It looks pretty average quality. Quality:[smithed_quality]" + if(60 to 89) + damage_state = "damage-1" + desc += " It looks well forged! Quality:[smithed_quality]" + if(90 to 99) + damage_state = null + desc += " It looks about as perfect as can be! Quality:[smithed_quality]" + if(100 to 125) + damage_state = null + desc += " It's utterly flawless! Quality:[smithed_quality]" + + if(damage_state) + add_filter("damage_filter", 1, alpha_mask_filter(icon = icon('monkestation/code/modules/smithing/icons/forge_items.dmi', damage_state), flags = MASK_INVERSE)) + + if(material_stats.thermal <= 50) + resistance_flags |= FIRE_PROOF + if(material_stats.thermal <= 20) + resistance_flags |= LAVA_PROOF + max_integrity = round(200 * (smithed_quality/100)) + repairable_by = made_of.type //This cant go wrong right + if(material_stats.conductivity <= 10) + siemens_coefficient = 0 + + var/datum/armor/temp = new() //Scuffed, but no idea how to better. + set_armor(temp.generate_new_with_modifiers(list( + ACID = min(round((material_stats.density / 1.75) * (smithed_quality/100)),60), + BOMB = min(round(((material_stats.density + material_stats.hardness)/3.5) * (smithed_quality/100)),60), + BULLET = min(round(((material_stats.density + material_stats.hardness)/3.5) * (smithed_quality/100)),60), + ENERGY = min(round((material_stats.refractiveness / 1.75) * (smithed_quality/100)),60), + FIRE = min(round(((100-material_stats.thermal)/1.75) * (smithed_quality/100)),60), + LASER = min(round(((material_stats.refractiveness + material_stats.density)/3.5) * (smithed_quality/100)),60), + MELEE = min(round(((material_stats.density + material_stats.hardness)/1.75) * (smithed_quality/100)),60) + ))) + QDEL_NULL(temp) //Thanks now back to the void with you + + +/obj/item/clothing/smithed_clothes/update_name(updates) + . = ..() + if(smithed_quality < 100) + name = "[material_stats.material_name] [base_name]" + else + name = "flawless [material_stats.material_name] [base_name]" + +/obj/item/clothing/smithed_clothes/gloves + name = "generic smithed gloves" + desc = "Some smithed gloves." + gender = PLURAL + w_class = WEIGHT_CLASS_SMALL + icon = 'icons/obj/clothing/gloves.dmi' + inhand_icon_state = "greyscale_gloves" + icon_state = "gray" + lefthand_file = 'icons/mob/inhands/clothing/gloves_lefthand.dmi' + righthand_file = 'icons/mob/inhands/clothing/gloves_righthand.dmi' + greyscale_colors = null + greyscale_config_inhand_left = /datum/greyscale_config/gloves_inhand_left + greyscale_config_inhand_right = /datum/greyscale_config/gloves_inhand_right + siemens_coefficient = 0.5 + body_parts_covered = HANDS + slot_flags = ITEM_SLOT_GLOVES + attack_verb_continuous = list("challenges") + attack_verb_simple = list("challenge") + strip_delay = 20 + equip_delay_other = 40 + + base_name = "gloves" + +/obj/item/clothing/smithed_clothes/suit + name = "generic smithed suit" + desc = "A smithed suit." + icon = 'icons/obj/clothing/suits/armor.dmi' + worn_icon = 'icons/mob/clothing/suits/armor.dmi' + icon_state = "cuirass" + allowed = null + body_parts_covered = CHEST + cold_protection = CHEST|GROIN + min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT + heat_protection = CHEST|GROIN + max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT + strip_delay = 60 + equip_delay_other = 40 + resistance_flags = NONE + slot_flags = ITEM_SLOT_OCLOTHING + + allowed = list( + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/plasmaman, + /obj/item/tank/jetpack/oxygen/captain, + /obj/item/storage/belt/holster + ) + + base_name = "suit" +/obj/item/clothing/smithed_clothes/helmet + name = "generic smithed helmet" + desc = "A smithed helmet." + icon = 'icons/obj/clothing/head/helmet.dmi' + worn_icon = 'icons/mob/clothing/head/helmet.dmi' + icon_state = "knight_green" + cold_protection = HEAD + min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT + heat_protection = HEAD + max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT + strip_delay = 60 + clothing_flags = SNUG_FIT | PLASMAMAN_HELMET_EXEMPT + flags_cover = HEADCOVERSEYES + flags_inv = HIDEHAIR + supports_variations_flags = CLOTHING_SNOUTED_VARIATION + slot_flags = ITEM_SLOT_HEAD + + base_name = "helmet" + +/obj/item/clothing/smithed_clothes/shoes + name = "generic smithed shoes" + desc = "Some smithed shoes." + icon = 'monkestation/code/modules/smithing/icons/boots.dmi' + worn_icon = 'monkestation/code/modules/smithing/icons/boots.dmi' + icon_state = "smithed_boots_inhand" + worn_icon_state = "smithed_boots" + inhand_icon_state = "jackboots" + cold_protection = FEET + min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT + heat_protection = FEET + max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT + lefthand_file = 'icons/mob/inhands/clothing/shoes_lefthand.dmi' + righthand_file = 'icons/mob/inhands/clothing/shoes_righthand.dmi' + gender = PLURAL //Carn: for grammarically correct text-parsing + + body_parts_covered = FEET + slot_flags = ITEM_SLOT_FEET + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION + + base_name = "shoes" diff --git a/monkestation/code/modules/smithing/machines/electroplater.dm b/monkestation/code/modules/smithing/machines/electroplater.dm index 07cb21f68c7c..09397ae606fb 100644 --- a/monkestation/code/modules/smithing/machines/electroplater.dm +++ b/monkestation/code/modules/smithing/machines/electroplater.dm @@ -1,6 +1,6 @@ /obj/machinery/electroplater name = "arc electroplater" - desc = "An industrial electroplater, using electricity it can coat basically anything in the given materials." + desc = "An industrial electroplater, using electricity it can coat basically anything in the given materials;adding it's traits to the item." icon_state = "plater0" icon = 'goon/icons/matsci.dmi' @@ -9,9 +9,9 @@ density = TRUE idle_power_usage = 10 - active_power_usage = 3000 - resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - circuit = null + active_power_usage = 2000 + resistance_flags = LAVA_PROOF | FIRE_PROOF + circuit = /obj/item/circuitboard/machine/electroplater light_outer_range = 2 light_power = 1.5 @@ -34,6 +34,11 @@ /obj/machinery/electroplater/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() + if(held_item) + if(held_item.tool_behaviour == TOOL_WRENCH && !plating) + context[SCREENTIP_CONTEXT_LMB] = "Toggle Anchored." + if(held_item.tool_behaviour == TOOL_CROWBAR && !plating && !anchored) + context[SCREENTIP_CONTEXT_LMB] = "Deconstruct." if((isstack(held_item) || istype(held_item, /obj/item/merged_material)) && !stored_material) context[SCREENTIP_CONTEXT_LMB] = "Add Material Plate." if(stored_material && held_item) @@ -79,6 +84,16 @@ return return ..() +/obj/machinery/electroplater/attackby_secondary(obj/item/weapon, mob/user, params) + if(weapon.tool_behaviour == TOOL_WRENCH && !plating) + default_unfasten_wrench(user,weapon,40) + return + if(weapon.tool_behaviour == TOOL_CROWBAR && !plating && !anchored) + default_deconstruction_crowbar(weapon,1,FALSE) + return + + return ..() + /obj/machinery/electroplater/proc/try_plate() if(!stored_material || !plating_item) return @@ -110,3 +125,12 @@ plating_item = null plating = FALSE icon_state = "plater0" + +/obj/item/circuitboard/machine/electroplater + name = "electroplater" + req_components = list( + /obj/item/stock_parts/matter_bin = 1, + /obj/item/stock_parts/manipulator = 2, + /obj/item/stock_parts/capacitor = 4 + ) + build_path = /obj/machinery/electroplater diff --git a/monkestation/code/modules/smithing/machines/material_alloyer.dm b/monkestation/code/modules/smithing/machines/material_alloyer.dm new file mode 100644 index 000000000000..11fac8a6f62b --- /dev/null +++ b/monkestation/code/modules/smithing/machines/material_alloyer.dm @@ -0,0 +1,110 @@ +/obj/machinery/material_alloyer + name = "metal alloyer" + desc = "A small machine that can create an alloy of basically any two materials;blending their stats." + icon = 'monkestation/code/modules/smithing/icons/forge_structures.dmi' + icon_state = "material_alloyer" + bound_width = 32 + bound_height = 32 + anchored = TRUE + max_integrity = 200 + density = TRUE + use_power = IDLE_POWER_USE + idle_power_usage = 10 + active_power_usage = 1500 + resistance_flags = LAVA_PROOF | FIRE_PROOF + circuit = /obj/item/circuitboard/machine/material_alloyer + light_outer_range = 3 + light_power = 1.5 + light_color = LIGHT_COLOR_FIRE + + ///the item in our first slot for merging + var/atom/movable/slot_one_item + ///the item in our second slot for merging + var/atom/movable/slot_two_item + + +/obj/machinery/material_alloyer/Initialize(mapload) + . = ..() + register_context() + +/obj/machinery/material_alloyer/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + if(held_item) + if(held_item.tool_behaviour == TOOL_SCREWDRIVER) + context[SCREENTIP_CONTEXT_RMB] = "Open Maint. Panel" + if(held_item.tool_behaviour == TOOL_CROWBAR && panel_open) + context[SCREENTIP_CONTEXT_RMB] = "Deconstruct." + if((!slot_one_item || !slot_two_item) && (isstack(held_item) || istype(held_item, /obj/item/merged_material))) + context[SCREENTIP_CONTEXT_LMB] = "Add material to alloy." + if(slot_one_item && slot_two_item) + context[SCREENTIP_CONTEXT_ALT_LMB] = "Alloy Materials." + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/material_alloyer/attackby(obj/item/attacking_item, mob/living/user, params) + if(isstack(attacking_item)) + var/obj/item/stack/stack = attacking_item + if(!stack.material_type) + return + if(stack.amount > 1) + attacking_item = stack.split_stack(user, 1) + + if(try_add_to_buffer(attacking_item)) + visible_message(span_notice("[user] adds [attacking_item] into the [src]")) + return + if(istype(attacking_item, /obj/item/merged_material)) + if(try_add_to_buffer(attacking_item)) + visible_message(span_notice("[user] adds [attacking_item] into the [src]")) + return + return ..() +/obj/machinery/material_alloyer/attackby_secondary(obj/item/weapon, mob/user, params) + if(weapon.tool_behaviour == TOOL_SCREWDRIVER) + default_deconstruction_screwdriver(user,"material_alloyer_open","material_alloyer",weapon) + return + if(weapon.tool_behaviour == TOOL_CROWBAR) + default_deconstruction_crowbar(weapon) + return + return ..() + +/obj/machinery/material_alloyer/proc/try_add_to_buffer(obj/item/adder) + if(!slot_one_item) + slot_one_item = adder + adder.forceMove(src) + return TRUE + if(!slot_two_item) + slot_two_item = adder + adder.forceMove(src) + return TRUE + return FALSE + +/obj/machinery/material_alloyer/AltClick(mob/user) + if(attempt_material_forge()) + return TRUE + . = ..() + +/obj/machinery/material_alloyer/proc/attempt_material_forge() + if(!slot_one_item || !slot_two_item) + return FALSE + + var/obj/item/merged_material/new_material = new(get_turf(src)) + if(isstack(slot_one_item)) + var/obj/item/stack/stack = slot_one_item + new_material.create_stats_from_material(stack.material_type) + else + new_material.create_stats_from_material_stats(slot_one_item.material_stats) + + new_material.combine_material_stats(slot_two_item) + + new_material.name = "[new_material.material_stats.material_name] Ingot" + + QDEL_NULL(slot_one_item) + QDEL_NULL(slot_two_item) + return TRUE + +/obj/item/circuitboard/machine/material_alloyer + name = "material alloyer" + req_components = list( + /obj/item/stock_parts/matter_bin = 2, + /obj/item/stock_parts/manipulator = 1, + /obj/item/stock_parts/capacitor = 4 + ) + build_path = /obj/machinery/material_alloyer diff --git a/monkestation/code/modules/smithing/machines/material_analyzer.dm b/monkestation/code/modules/smithing/machines/material_analyzer.dm index 9fd66946cb55..2b20fcb59d79 100644 --- a/monkestation/code/modules/smithing/machines/material_analyzer.dm +++ b/monkestation/code/modules/smithing/machines/material_analyzer.dm @@ -17,7 +17,7 @@ /obj/machinery/material_analyzer name = "material analyzer" - desc = "This machine allows you to analyzer materials." + desc = "This machine allows you to analyze materials to see their traits and properties for smithing." icon_state = "matscannerx" icon = 'goon/icons/matsci.dmi' @@ -26,7 +26,7 @@ density = TRUE idle_power_usage = 10 - active_power_usage = 1000 + active_power_usage = 750 circuit = /obj/item/circuitboard/machine/material_analyzer ///the time we need to analyze a material @@ -40,6 +40,11 @@ /obj/machinery/material_analyzer/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() + if(held_item) + if(held_item.tool_behaviour == TOOL_WRENCH && !analyzing) + context[SCREENTIP_CONTEXT_LMB] = "Toggle Anchored." + if(held_item.tool_behaviour == TOOL_CROWBAR && !analyzing && !anchored) + context[SCREENTIP_CONTEXT_LMB] = "Deconstruct." if(held_item && !analyzing) context[SCREENTIP_CONTEXT_LMB] = "Analyze the [held_item]." return CONTEXTUAL_SCREENTIP_SET @@ -59,6 +64,16 @@ analyzing = FALSE print_material_data(weapon) +/obj/machinery/material_analyzer/attackby_secondary(obj/item/weapon, mob/user, params) + if(weapon.tool_behaviour == TOOL_WRENCH && !analyzing) + default_unfasten_wrench(user,weapon,40) + return + if(weapon.tool_behaviour == TOOL_CROWBAR && !analyzing && !anchored) + default_deconstruction_crowbar(weapon,1,FALSE) + return + return ..() + + /obj/machinery/material_analyzer/proc/print_material_data(obj/item/checker) if(!checker.material_stats) say("ERROR: No Material stats found.") @@ -94,3 +109,12 @@ printed_paper.name = text("[checker] Material Stats") printed_paper.add_raw_text(final_paper_text) printed_paper.update_appearance() + +/obj/item/circuitboard/machine/material_analyzer + name = "material analyzer" + req_components = list( + /obj/item/stock_parts/matter_bin = 1, + /obj/item/stock_parts/capacitor = 1, + /obj/item/stock_parts/scanning_module = 2 + ) + build_path = /obj/machinery/material_analyzer diff --git a/monkestation/code/modules/smithing/material_changes/_base_mineral.dm b/monkestation/code/modules/smithing/material_changes/_base_mineral.dm index 9dd431c111d8..8a950149cf58 100644 --- a/monkestation/code/modules/smithing/material_changes/_base_mineral.dm +++ b/monkestation/code/modules/smithing/material_changes/_base_mineral.dm @@ -18,7 +18,7 @@ ///our refractiveness var/refractiveness = 0 ///list of material traits to work with - var/list/material_traits = list() + var/list/datum/material_trait/material_traits = list() /obj/item/stack/Initialize(mapload, new_amount, merge, list/mat_override, mat_amt) . = ..() diff --git a/monkestation/code/modules/smithing/material_changes/material_stats.dm b/monkestation/code/modules/smithing/material_changes/material_stats.dm index 01bdd412e4df..a8b1275f8770 100644 --- a/monkestation/code/modules/smithing/material_changes/material_stats.dm +++ b/monkestation/code/modules/smithing/material_changes/material_stats.dm @@ -94,7 +94,7 @@ var/refractiveness = 0 ///list of material traits to work with - var/list/material_traits = list() + var/list/datum/material_trait/material_traits = list() ///our coolass color var/merged_color @@ -113,9 +113,10 @@ src.parent = parent if(parent) RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(on_attack)) + RegisterSignal(parent, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE,PROC_REF(post_parent_init)) START_PROCESSING(SSobj, src) -/datum/material_stats/Destroy(force, ...) +/datum/material_stats/Destroy(force) . = ..() STOP_PROCESSING(SSobj, src) for(var/datum/material_trait/trait as anything in material_traits) @@ -125,6 +126,11 @@ UnregisterSignal(parent, COMSIG_ITEM_ATTACK) parent = null +/datum/material_stats/proc/post_parent_init() + for(var/datum/material_trait/trait as anything in material_traits) + trait.post_parent_init(parent) + UnregisterSignal(parent,COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE) + /datum/material_stats/proc/on_attack(datum/source, atom/target, mob/user) for(var/datum/material_trait/trait as anything in material_traits) trait.on_mob_attack(parent, src, target, user) @@ -172,7 +178,7 @@ for(var/datum/material_trait/trait as anything in material_traits) - material_traits[trait]-- + material_traits[trait] -= 1 if(material_traits[trait] <= 0) trait.on_remove(parent) material_traits -= trait diff --git a/monkestation/code/modules/smithing/material_changes/material_traits/_base_trait.dm b/monkestation/code/modules/smithing/material_changes/material_traits/_base_trait.dm index 4db1e0b78f40..0bc6218728e8 100644 --- a/monkestation/code/modules/smithing/material_changes/material_traits/_base_trait.dm +++ b/monkestation/code/modules/smithing/material_changes/material_traits/_base_trait.dm @@ -3,11 +3,19 @@ var/desc = "Does generic material things." var/trait_flags = NONE var/reforges = 4 - + var/value_bonus = 0 +///Called when added to an object /datum/material_trait/proc/on_trait_add(atom/movable/parent) - + return +///Called when removed from an object /datum/material_trait/proc/on_remove(atom/movable/parent) - + return +///Called on processing tick /datum/material_trait/proc/on_process(atom/movable/parent, datum/material_stats/host) - + return +///Called when used to attack a living mob /datum/material_trait/proc/on_mob_attack(atom/movable/parent, datum/material_stats/host, mob/living/target, mob/living/attacker) + return +///Called after the atom has been Initialized. Modfiy the finished products here. +/datum/material_trait/proc/post_parent_init(atom/movable/parent) + return diff --git a/monkestation/code/modules/smithing/material_changes/material_traits/magical.dm b/monkestation/code/modules/smithing/material_changes/material_traits/magical.dm index 10ef9931d7b8..af54ed8907f7 100644 --- a/monkestation/code/modules/smithing/material_changes/material_traits/magical.dm +++ b/monkestation/code/modules/smithing/material_changes/material_traits/magical.dm @@ -2,6 +2,7 @@ name = "Magical" desc = "Makes this item magical." trait_flags = MATERIAL_NO_STACK_ADD + value_bonus = 50 /datum/material_trait/magical/on_trait_add(atom/movable/parent) . = ..() diff --git a/monkestation/code/modules/smithing/material_changes/material_traits/rainbow.dm b/monkestation/code/modules/smithing/material_changes/material_traits/rainbow.dm index 8a7a50ddc98b..98764d6090cb 100644 --- a/monkestation/code/modules/smithing/material_changes/material_traits/rainbow.dm +++ b/monkestation/code/modules/smithing/material_changes/material_traits/rainbow.dm @@ -1,6 +1,7 @@ /datum/material_trait/rainbow name = "Rainbow" desc = "Makes the material have a cool RGB effect." + value_bonus = 100 //oh shiny /datum/material_trait/rainbow/on_trait_add(atom/movable/parent) parent.rainbow_effect() diff --git a/monkestation/code/modules/smithing/material_changes/material_traits/shiny.dm b/monkestation/code/modules/smithing/material_changes/material_traits/shiny.dm index cae49df8e891..1c8a9ea1aefc 100644 --- a/monkestation/code/modules/smithing/material_changes/material_traits/shiny.dm +++ b/monkestation/code/modules/smithing/material_changes/material_traits/shiny.dm @@ -1,6 +1,7 @@ /datum/material_trait/shiny name = "Shiny" desc = "Makes the material shine" + value_bonus = 25 /datum/material_trait/shiny/on_trait_add(atom/movable/parent) parent.AddComponent(/datum/component/particle_spewer/sparkle) diff --git a/monkestation/code/modules/smithing/material_changes/material_traits/slow_attacks.dm b/monkestation/code/modules/smithing/material_changes/material_traits/slow_attacks.dm index f8e18eb1058e..facc088bb15d 100644 --- a/monkestation/code/modules/smithing/material_changes/material_traits/slow_attacks.dm +++ b/monkestation/code/modules/smithing/material_changes/material_traits/slow_attacks.dm @@ -2,16 +2,10 @@ name = "Bulky" desc = "Multiplies the attack delay by 1.5." reforges = 6 + value_bonus = -25 -/datum/material_trait/slow_attacks/on_trait_add(atom/movable/parent) - . = ..() +/datum/material_trait/slow_attacks/post_parent_init(atom/movable/parent) if(isitem(parent)) var/obj/item/item = parent item.attack_speed *= 1.5 item.attack_speed = round(item.attack_speed) - -/datum/material_trait/slow_attacks/on_remove(atom/movable/parent) - if(isitem(parent)) - var/obj/item/item = parent - item.attack_speed /= 1.5 - item.attack_speed = round(item.attack_speed) diff --git a/monkestation/code/modules/smithing/material_changes/material_traits/stamina_draining.dm b/monkestation/code/modules/smithing/material_changes/material_traits/stamina_draining.dm index bcc24c5a7d96..ed979342666b 100644 --- a/monkestation/code/modules/smithing/material_changes/material_traits/stamina_draining.dm +++ b/monkestation/code/modules/smithing/material_changes/material_traits/stamina_draining.dm @@ -1,17 +1,15 @@ /datum/material_trait/stamina_draining name = "Cumbersome" - desc = "Multiplies the stamina cost by 1.5 times." + desc = "Multiplies the stamina drain by 1.5 times. Includes damage dealt if it deals Stamina Damage!" reforges = 6 + value_bonus = -10 -/datum/material_trait/stamina_draining/on_trait_add(atom/movable/parent) - . = ..() +/datum/material_trait/stamina_draining/post_parent_init(atom/movable/parent) if(isitem(parent)) var/obj/item/item = parent item.stamina_cost *= 1.5 item.stamina_cost = round(item.stamina_cost) + if(item.damtype == STAMINA) + item.force *= 1.5 + item.force = round(item.force) -/datum/material_trait/stamina_draining/on_remove(atom/movable/parent) - if(isitem(parent)) - var/obj/item/item = parent - item.stamina_cost /= 1.5 - item.stamina_cost = round(item.stamina_cost) diff --git a/monkestation/code/modules/smithing/material_changes/material_traits/stunning.dm b/monkestation/code/modules/smithing/material_changes/material_traits/stunning.dm new file mode 100644 index 000000000000..93262d926e3f --- /dev/null +++ b/monkestation/code/modules/smithing/material_changes/material_traits/stunning.dm @@ -0,0 +1,11 @@ +/datum/material_trait/stunning + name = "Stunning" + desc = "Changes the weapon damage type to stamina." + value_bonus = 50 + +/datum/material_trait/stunning/post_parent_init(atom/movable/parent) + if(isobj(parent)) + var/obj/obj = parent + obj.damtype = STAMINA + obj.force *= 1.75 //People have more stamina than health. + obj.force = round(obj.force) diff --git a/monkestation/code/modules/smithing/material_changes/material_traits/weak_weapon.dm b/monkestation/code/modules/smithing/material_changes/material_traits/weak_weapon.dm index 38ddef99a6c3..d22bfcacbe3c 100644 --- a/monkestation/code/modules/smithing/material_changes/material_traits/weak_weapon.dm +++ b/monkestation/code/modules/smithing/material_changes/material_traits/weak_weapon.dm @@ -1,9 +1,10 @@ /datum/material_trait/weak_weapon name = "Weak Weapon" desc = "Multiplies the weapons force by 0.5 times." + value_bonus = -25 -/datum/material_trait/weak_weapon/on_trait_add(atom/movable/parent) - . = ..() +/datum/material_trait/weak_weapon/post_parent_init(atom/movable/parent) if(isobj(parent)) var/obj/obj = parent obj.force *= 0.5 + obj.force = round(obj.force) diff --git a/monkestation/code/modules/smithing/material_changes/materials.dm b/monkestation/code/modules/smithing/material_changes/materials.dm index 58e8b589bcae..35d8337d563a 100644 --- a/monkestation/code/modules/smithing/material_changes/materials.dm +++ b/monkestation/code/modules/smithing/material_changes/materials.dm @@ -36,7 +36,7 @@ hardness = 70 thermal = 1 liquid_flow = 65 - material_traits = list(/datum/material_trait/honk_blessed) + material_traits = list(/datum/material_trait/honk_blessed, /datum/material_trait/stunning) /datum/material/mythril liquid_flow = 80 @@ -81,6 +81,7 @@ conductivity = 10 density = 50 hardness = 5 + material_traits = list(/datum/material_trait/stunning) /datum/material/biomass hardness = 1 @@ -91,11 +92,11 @@ flammability = 70 density = 30 hardness = 60 + material_traits = list(/datum/material_trait/stunning) /datum/material/adamantine hardness = 100 - density = 10 - material_traits = list(/datum/material_trait/weak_weapon) + density = 40 /datum/material/hot_ice thermal = 100 @@ -153,6 +154,7 @@ hardness = 10 thermal = 100 flammability = 85 + material_traits = list(/datum/material_trait/stunning) /datum/material/bone hardness = 75 @@ -163,6 +165,7 @@ hardness = 25 thermal = 100 flammability = 85 + material_traits = list(/datum/material_trait/stunning) /datum/material/zaukerite thermal = 5 diff --git a/monkestation/code/modules/smithing/minigame/anvil_minigame.dm b/monkestation/code/modules/smithing/minigame/anvil_minigame.dm index 22e4ca8a175c..a64026fda3c5 100644 --- a/monkestation/code/modules/smithing/minigame/anvil_minigame.dm +++ b/monkestation/code/modules/smithing/minigame/anvil_minigame.dm @@ -45,11 +45,11 @@ notes_left = end_product_recipe.total_notes total_notes = end_product_recipe.total_notes - difficulty = round(selected_recipe.difficulty + difficulty_modifier) + difficulty = max(1,round(selected_recipe.difficulty + difficulty_modifier - (user.mind.get_skill_level(/datum/skill/smithing) - 3))) //Better smiths have easier times generate_anvil_beats(TRUE) - if(!user.client || user.incapacitated()) + if(QDELETED(user.client) || user.incapacitated()) return FALSE . = TRUE anvil_hud = new @@ -58,6 +58,15 @@ START_PROCESSING(SSfishing, src) +/datum/anvil_challenge/Destroy(force) + if(anvil_hud) + user?.client?.screen -= anvil_hud + QDEL_NULL(anvil_hud) + user = null + selected_recipe = null + host_anvil = null + return ..() + /datum/anvil_challenge/proc/generate_anvil_beats(init = FALSE) var/list/new_notes = list() @@ -153,12 +162,22 @@ generate_anvil_beats() /datum/anvil_challenge/proc/end_minigame() - success = max(0, round(success - ((100 * (failed_notes / total_notes)) + 1 * (off_time * 2)))) + //Success == quality, takes highest of Smithing level * 5 || 100 minus a number based on how 'accurate' you were plus (smithlevel *5)-15. + //So missing nothing, a level 3 smith will make a qual 100 item. + var smithlevel = user.mind.get_skill_level(/datum/skill/smithing) + success = max(smithlevel * 5, round(success - ((100 * (failed_notes / total_notes)) + 1 * (off_time * 2)) +((smithlevel * 5) - 15))) UnregisterSignal(user.client, COMSIG_CLIENT_CLICK_DIRTY) STOP_PROCESSING(SSfishing, src) anvil_presses = null note_pixels_moved = null + var/obj/item/mat = host_anvil.working_material + if(mat.material_stats) + //gives bonus XP for harder mats, so no cheese with gold or wood. + user.mind.adjust_experience(/datum/skill/smithing,round((total_notes - failed_notes) * 2.5) + round(2 + (mat.material_stats.hardness + mat.material_stats.density)/2.5)) + else + user.mind.adjust_experience(/datum/skill/smithing, round(2.5 * (total_notes - failed_notes))) //Every good Hit = 2 XP anvil_hud.end_minigame() + user.client?.screen -= anvil_hud QDEL_NULL(anvil_hud) host_anvil.smithing = FALSE host_anvil.generate_item(success) diff --git a/monkestation/code/modules/smithing/mining_changes/mineral_datums.dm b/monkestation/code/modules/smithing/mining_changes/mineral_datums.dm index 21b836790296..298937e3b474 100644 --- a/monkestation/code/modules/smithing/mining_changes/mineral_datums.dm +++ b/monkestation/code/modules/smithing/mining_changes/mineral_datums.dm @@ -29,6 +29,16 @@ weight = 1 icon_state = "starstone" +/datum/mineral_sample_datum/stunnium + name = "stunnium" + base_traits = list( + /datum/material_trait/stamina_draining, + /datum/material_trait/shiny, + /datum/material_trait/stunning + ) + weight = 1 + icon_state = "molitz" + /datum/mineral_sample_datum/sploop name = "sploop" icon_state = "fibrilith" diff --git a/monkestation/code/modules/smithing/mining_changes/mineral_sample.dm b/monkestation/code/modules/smithing/mining_changes/mineral_sample.dm index 3cb866c38f67..f702e7dc89f1 100644 --- a/monkestation/code/modules/smithing/mining_changes/mineral_sample.dm +++ b/monkestation/code/modules/smithing/mining_changes/mineral_sample.dm @@ -13,7 +13,7 @@ /obj/item/merged_material/mineral_sample/Initialize(mapload) . = ..() - create_random_mineral_stats(200) + create_random_mineral_stats(125) if(!length(starting_datums)) for(var/datum/mineral_sample_datum/datum as anything in subtypesof(/datum/mineral_sample_datum)) @@ -21,7 +21,7 @@ starting_datums += new_datum starting_datums[new_datum] = new_datum.weight - var/datum/mineral_sample_datum/picked = pick(starting_datums) + var/datum/mineral_sample_datum/picked = pick_weight(starting_datums) if(length(picked.base_traits)) for(var/datum/material_trait/trait as anything in picked.base_traits) material_stats.add_trait(trait) @@ -45,3 +45,19 @@ name_1 = copytext(randomized_name, 1, round((length(randomized_name) * 0.5) + 0.5)) name_2 = copytext(material_type.name, round((length(material_type.name) * 0.5) + 0.5), 0) randomized_name = "[name_1][name_2]" + +/datum/export/mineral_sample + unit_name = "exotic minerals" + k_elasticity = 0 + export_types = list(/obj/item/merged_material) + cost = 1 + +/datum/export/mineral_sample/get_cost(obj/item/merged_material/material, apply_elastic) + var/total_val = 20 + if(material.material_stats) + for(var/datum/material_trait/trait in material.material_stats.material_traits) + total_val += trait.value_bonus + return round(total_val * ((material.material_stats.density + material.material_stats.hardness)/8)) //Nanotransen only cares about the dens/hardness for building new stations. + return total_val + + diff --git a/monkestation/code/modules/smithing/oozelings/body/organs.dm b/monkestation/code/modules/smithing/oozelings/body/organs.dm index b0cc7e1cd869..0f5b242334d5 100644 --- a/monkestation/code/modules/smithing/oozelings/body/organs.dm +++ b/monkestation/code/modules/smithing/oozelings/body/organs.dm @@ -168,13 +168,13 @@ if(target_ling) if(target_ling.oozeling_revives > 0) target_ling.oozeling_revives-- - addtimer(CALLBACK(src, PROC_REF(rebuild_body), null, FALSE), 30 SECONDS) + addtimer(CALLBACK(src, PROC_REF(rebuild_body), null, FALSE), 30 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_DELETE_ME) if(IS_BLOODSUCKER(brainmob)) var/datum/antagonist/bloodsucker/target_bloodsucker = brainmob.mind.has_antag_datum(/datum/antagonist/bloodsucker) - if(target_bloodsucker.bloodsucker_blood_volume >= target_bloodsucker.max_blood_volume * 0.4) - addtimer(CALLBACK(src, PROC_REF(rebuild_body), null, FALSE), 30 SECONDS) - target_bloodsucker.bloodsucker_blood_volume -= target_bloodsucker.max_blood_volume * 0.15 + if(target_bloodsucker.bloodsucker_blood_volume >= OOZELING_MIN_REVIVE_BLOOD_THRESHOLD) + addtimer(CALLBACK(src, PROC_REF(rebuild_body), null, FALSE), 30 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_DELETE_ME) + target_bloodsucker.bloodsucker_blood_volume -= (OOZELING_MIN_REVIVE_BLOOD_THRESHOLD * 0.5) rebuilt = FALSE victim.transfer_observers_to(src) @@ -226,9 +226,10 @@ item.forceMove(turf) stored_items.Cut() -/obj/item/organ/internal/brain/slime/proc/rebuild_body(mob/user, nugget = TRUE) +/obj/item/organ/internal/brain/slime/proc/rebuild_body(mob/user, nugget = TRUE) as /mob/living/carbon/human + RETURN_TYPE(/mob/living/carbon/human) if(rebuilt) - return + return owner set_organ_damage(-maxHealth) // heals the brain fully if(gps_active) // making sure the gps signal is removed if it's active on revival @@ -239,13 +240,13 @@ brainmob?.mind?.grab_ghost() if(isnull(brainmob)) user?.balloon_alert(user, "This brain is not a viable candidate for repair!") - return TRUE + return null if(isnull(brainmob.stored_dna)) user?.balloon_alert(user, "This brain does not contain any dna!") - return TRUE + return null if(isnull(brainmob.client)) user?.balloon_alert(user, "This brain does not contain a mind!") - return TRUE + return null var/mob/living/carbon/human/new_body = new /mob/living/carbon/human(drop_location()) rebuilt = TRUE @@ -287,3 +288,4 @@ transfer_observers_to(new_body) drop_items_to_ground(new_body.drop_location()) + return new_body diff --git a/monkestation/code/modules/smithing/oozelings/species.dm b/monkestation/code/modules/smithing/oozelings/species.dm index bac2a60dd640..a74e7644b05f 100644 --- a/monkestation/code/modules/smithing/oozelings/species.dm +++ b/monkestation/code/modules/smithing/oozelings/species.dm @@ -9,8 +9,6 @@ species_traits = list( MUTCOLORS, - EYECOLOR, - HAIR,FACEHAIR, ) hair_color = "mutcolor" @@ -107,6 +105,7 @@ if(core_signal) core_signal.Remove(C) ..() + C.blood_volume = BLOOD_VOLUME_SAFE /datum/species/oozeling/on_species_gain(mob/living/carbon/C, datum/species/old_species) ..() @@ -185,10 +184,12 @@ slime.blood_volume = 0 /datum/species/oozeling/proc/Cannibalize_Body(mob/living/carbon/human/slime) + if(HAS_TRAIT(slime, TRAIT_OOZELING_NO_CANNIBALIZE)) + return var/list/limbs_to_consume = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) - slime.get_missing_limbs() var/obj/item/bodypart/consumed_limb - if(!limbs_to_consume.len) + if(!length(limbs_to_consume)) slime.losebreath++ return if(slime.num_legs) //Legs go before arms diff --git a/monkestation/code/modules/spells/spell_types/pointed/fire_ball.dm b/monkestation/code/modules/spells/spell_types/pointed/fire_ball.dm new file mode 100644 index 000000000000..9f401c5aeff8 --- /dev/null +++ b/monkestation/code/modules/spells/spell_types/pointed/fire_ball.dm @@ -0,0 +1,24 @@ +/datum/action/cooldown/spell/pointed/projectile/fireball/bouncy + name = "Fire Ball" + desc = "This spell fires a ball of fire at a target. Watch out for collateral." + button_icon = 'monkestation/icons/obj/weapons/guns/projectiles.dmi' + button_icon_state = "fire_ball" + + active_msg = "You prepare to cast your fire ball spell!" + deactive_msg = "You extinguish your fire ball... for now." + cooldown_reduction_per_rank = -1 SECONDS //bit too strong otherwise + spell_max_level = 3 + projectile_type = /obj/projectile/magic/fire_ball + +/datum/action/cooldown/spell/pointed/projectile/fireball/bouncy/level_spell(bypass_cap) + . = ..() + projectile_amount++ //become the schoolyard bully + unset_after_click = FALSE + if(spell_level == spell_max_level) + projectiles_per_fire++ + +/datum/action/cooldown/spell/pointed/projectile/fireball/bouncy/ready_projectile(obj/projectile/to_fire, atom/target, mob/user, iteration) + . = ..() + to_fire.ricochets_max += spell_level - 1 + if(iteration > 1) + to_fire.set_angle(dir2angle(user.dir) + rand(-15, 15)) diff --git a/monkestation/code/modules/store/pre_round/_pre_round_store.dm b/monkestation/code/modules/store/pre_round/_pre_round_store.dm index 6508fcbfcb62..30b5b849104c 100644 --- a/monkestation/code/modules/store/pre_round/_pre_round_store.dm +++ b/monkestation/code/modules/store/pre_round/_pre_round_store.dm @@ -10,7 +10,7 @@ GLOBAL_LIST_EMPTY(cached_preround_items) . = ..() ui_interact(user) -/datum/pre_round_store/Destroy(force, ...) +/datum/pre_round_store/Destroy(force) . = ..() bought_item = null diff --git a/monkestation/code/modules/store/store_items/__store.dm b/monkestation/code/modules/store/store_items/__store.dm index 992be44e49fb..073ad2b206c5 100644 --- a/monkestation/code/modules/store/store_items/__store.dm +++ b/monkestation/code/modules/store/store_items/__store.dm @@ -28,7 +28,7 @@ GLOBAL_LIST_EMPTY(all_store_datums) /// Our preview sprite. var/icon/dummysprite -/datum/store_manager/Destroy(force, ...) +/datum/store_manager/Destroy(force) owner = null QDEL_NULL(menu) QDEL_NULL(custom_loadout) diff --git a/monkestation/code/modules/store/store_items/toys.dm b/monkestation/code/modules/store/store_items/toys.dm index 138d4ccc48a6..735ff3ef8a6e 100644 --- a/monkestation/code/modules/store/store_items/toys.dm +++ b/monkestation/code/modules/store/store_items/toys.dm @@ -217,3 +217,9 @@ GLOBAL_LIST_INIT(store_toys, generate_store_items(/datum/store_item/toys)) name = "Chef-o-Mancer Plush" item_path = /obj/item/toy/plush/chefomancer item_cost = 10000 + +/datum/store_item/toys/durrcell + name = "Durrcell Plush" + store_desc = "''Behold, Man''" + item_path = /obj/item/toy/plush/durrcell + item_cost = 6969 diff --git a/monkestation/code/modules/storytellers/converted_events/_base_event.dm b/monkestation/code/modules/storytellers/converted_events/_base_event.dm index 78be9159e94d..84ae021d7840 100644 --- a/monkestation/code/modules/storytellers/converted_events/_base_event.dm +++ b/monkestation/code/modules/storytellers/converted_events/_base_event.dm @@ -252,8 +252,10 @@ role = antag_flag, poll_time = 20 SECONDS, group = list(picked_mob), - pic_source = antag_datum, + alert_pic = antag_datum, role_name_text = lowertext(cast_control.name), + chat_text_border_icon = antag_datum, + show_candidate_amount = FALSE, ) else if(!length(weighted_candidates)) @@ -287,7 +289,15 @@ if(!event_type) return var/datum/round_event_control/triggered_event = locate(event_type) in SSgamemode.control - addtimer(CALLBACK(triggered_event, TYPE_PROC_REF(/datum/round_event_control, run_event), FALSE, null, FALSE, "storyteller"), 1 SECONDS) // wait a second to avoid any potential omnitraitor bs + //wait a second to avoid any potential omnitraitor bs + addtimer(CALLBACK(triggered_event, TYPE_PROC_REF(/datum/round_event_control, run_event), FALSE, null, FALSE, "storyteller"), 1 SECONDS) + +/datum/round_event/antagonist/solo/start() + for(var/datum/mind/antag_mind as anything in setup_minds) + add_datum_to_mind(antag_mind, antag_mind.current) + +/datum/round_event/antagonist/solo/proc/add_datum_to_mind(datum/mind/antag_mind) + antag_mind.add_antag_datum(antag_datum) /datum/round_event/antagonist/solo/proc/spawn_extra_events() if(!LAZYLEN(extra_spawned_events)) @@ -295,6 +305,24 @@ var/datum/round_event_control/event = pick_weight(extra_spawned_events) event?.run_event(random = FALSE, event_cause = "storyteller") +/datum/round_event/antagonist/solo/proc/create_human_mob_copy(turf/create_at, mob/living/carbon/human/old_mob, qdel_old_mob = TRUE) + if(!old_mob?.client) + return + + var/mob/living/carbon/human/new_character = new(create_at) + if(!create_at) + SSjob.SendToLateJoin(new_character) + + old_mob.client.prefs.safe_transfer_prefs_to(new_character) + new_character.dna.update_dna_identity() + old_mob.mind.transfer_to(new_character) + if(qdel_old_mob) + qdel(old_mob) + return new_character + +/datum/round_event/antagonist/solo/ghost/start() + for(var/datum/mind/antag_mind as anything in setup_minds) + add_datum_to_mind(antag_mind) /datum/round_event/antagonist/solo/ghost/setup() var/datum/round_event_control/antagonist/solo/cast_control = control @@ -319,8 +347,9 @@ role = antag_flag, poll_time = 20 SECONDS, group = candidates, - pic_source = antag_datum, + alert_pic = antag_datum, role_name_text = lowertext(cast_control.name), + chat_text_border_icon = antag_datum, ) var/list/weighted_candidates = return_antag_rep_weight(candidates) @@ -343,16 +372,3 @@ new_human.mind.restricted_roles = restricted_roles setup_minds += new_human.mind setup = TRUE - - -/datum/round_event/antagonist/solo/start() - for(var/datum/mind/antag_mind as anything in setup_minds) - add_datum_to_mind(antag_mind, antag_mind.current) - -/datum/round_event/antagonist/solo/proc/add_datum_to_mind(datum/mind/antag_mind) - antag_mind.add_antag_datum(antag_datum) - -/datum/round_event/antagonist/solo/ghost/start() - for(var/datum/mind/antag_mind as anything in setup_minds) - add_datum_to_mind(antag_mind) - diff --git a/monkestation/code/modules/storytellers/converted_events/event_overrides.dm b/monkestation/code/modules/storytellers/converted_events/event_overrides.dm index fdc4ed53d5e4..22b582cf127b 100644 --- a/monkestation/code/modules/storytellers/converted_events/event_overrides.dm +++ b/monkestation/code/modules/storytellers/converted_events/event_overrides.dm @@ -6,7 +6,7 @@ /datum/round_event_control/anomaly track = EVENT_TRACK_MODERATE tags = list(TAG_DESTRUCTIVE, TAG_MAGICAL) - shared_occurence_type = SHARED_ANOMALIES + event_group = /datum/event_group/anomalies /datum/round_event_control/alien_infestation track = EVENT_TRACK_ROLESET @@ -29,21 +29,21 @@ /datum/round_event_control/brand_intelligence track = EVENT_TRACK_MODERATE tags = list(TAG_DESTRUCTIVE, TAG_COMMUNAL) - shared_occurence_type = SHARED_BSOD + event_group = /datum/event_group/bsod /datum/round_event_control/bureaucratic_error track = EVENT_TRACK_MAJOR // if you've ever dealt with 10 mimes you understand why. tags = list(TAG_COMMUNAL) - shared_occurence_type = SHARED_BSOD + event_group = /datum/event_group/error /datum/round_event_control/camera_failure track = EVENT_TRACK_MUNDANE tags = list(TAG_COMMUNAL, TAG_SPOOKY) - shared_occurence_type = SHARED_BSOD /datum/round_event_control/carp_migration track = EVENT_TRACK_MODERATE tags = list(TAG_DESTRUCTIVE, TAG_COMBAT, TAG_SPACE, TAG_EXTERNAL, TAG_ALIEN) + event_group = /datum/event_group/guests //THIS IS THE METEOR EVENT, IT NEEDS TO BE A METEOR, DO NOT SPAWN THIS ON PLANETARY MAPS(the spawn works fine on planets, the actual issue is the ling passes out due to CO2) /datum/round_event_control/changeling @@ -55,7 +55,7 @@ max_occurrences = 2 track = EVENT_TRACK_MODERATE tags = list(TAG_COMMUNAL, TAG_SPOOKY) - shared_occurence_type = SHARED_BSOD + event_group = /datum/event_group/comms /datum/round_event_control/disease_outbreak track = EVENT_TRACK_MAJOR @@ -64,7 +64,7 @@ /datum/round_event_control/electrical_storm track = EVENT_TRACK_MUNDANE tags = list(TAG_SPOOKY) - shared_occurence_type = SHARED_BSOD + event_group = /datum/event_group/error /datum/round_event_control/fake_virus track = EVENT_TRACK_MUNDANE @@ -73,7 +73,7 @@ /datum/round_event_control/falsealarm track = EVENT_TRACK_MUNDANE tags = list(TAG_COMMUNAL) - shared_occurence_type = SHARED_BSOD + event_group = /datum/event_group/error /datum/round_event_control/fugitives track = EVENT_TRACK_MAJOR @@ -82,17 +82,17 @@ /datum/round_event_control/gravity_generator_blackout track = EVENT_TRACK_MODERATE tags = list(TAG_COMMUNAL, TAG_SPACE) - shared_occurence_type = SHARED_BSOD + event_group = /datum/event_group/bsod /datum/round_event_control/grey_tide track = EVENT_TRACK_MODERATE tags = list(TAG_DESTRUCTIVE, TAG_SPOOKY) - shared_occurence_type = SHARED_BSOD + event_group = /datum/event_group/error /datum/round_event_control/grid_check track = EVENT_TRACK_MODERATE tags = list(TAG_COMMUNAL, TAG_SPOOKY) - shared_occurence_type = SHARED_BSOD + event_group = /datum/event_group/bsod /datum/round_event_control/heart_attack track = EVENT_TRACK_MODERATE @@ -101,12 +101,12 @@ /datum/round_event_control/immovable_rod track = EVENT_TRACK_MODERATE tags = list(TAG_DESTRUCTIVE, TAG_EXTERNAL, TAG_MAGICAL) - shared_occurence_type = SHARED_METEORS + event_group = /datum/event_group/meteors /datum/round_event_control/ion_storm track = EVENT_TRACK_MODERATE tags = list(TAG_TARGETED, TAG_ALIEN) - shared_occurence_type = SHARED_BSOD + event_group = /datum/event_group/bsod /datum/round_event_control/mass_hallucination track = EVENT_TRACK_MUNDANE @@ -115,11 +115,12 @@ /datum/round_event_control/meteor_wave track = EVENT_TRACK_MAJOR tags = list(TAG_COMMUNAL, TAG_SPACE, TAG_DESTRUCTIVE, TAG_EXTERNAL) - shared_occurence_type = SHARED_METEORS + event_group = /datum/event_group/meteors /datum/round_event_control/mice_migration track = EVENT_TRACK_MUNDANE tags = list(TAG_DESTRUCTIVE, TAG_ALIEN) //not really alien but rat lords kind of are + event_group = /datum/event_group/guests /datum/round_event_control/morph track = EVENT_TRACK_MAJOR @@ -140,12 +141,13 @@ /datum/round_event_control/portal_storm_syndicate track = EVENT_TRACK_MAJOR tags = list(TAG_COMBAT, TAG_EXTERNAL) + event_group = /datum/event_group/guests /datum/round_event_control/processor_overload max_occurrences = 2 track = EVENT_TRACK_MODERATE tags = list(TAG_COMMUNAL) - shared_occurence_type = SHARED_BSOD + event_group = /datum/event_group/comms /datum/round_event_control/radiation_leak track = EVENT_TRACK_MODERATE @@ -163,10 +165,12 @@ /datum/round_event_control/sandstorm track = EVENT_TRACK_MODERATE tags = list(TAG_DESTRUCTIVE, TAG_EXTERNAL) + event_group = /datum/event_group/debris /datum/round_event_control/scrubber_clog track = EVENT_TRACK_MUNDANE tags = list(TAG_COMMUNAL, TAG_ALIEN, TAG_MAGICAL) + event_group = /datum/event_group/guests /datum/round_event_control/scrubber_clog/critical track = EVENT_TRACK_MAJOR @@ -175,6 +179,7 @@ /datum/round_event_control/scrubber_overflow track = EVENT_TRACK_MODERATE tags = list(TAG_COMMUNAL) + event_group = /datum/event_group/scrubber_overflow /datum/round_event_control/sentience track = EVENT_TRACK_MUNDANE @@ -201,7 +206,6 @@ /datum/round_event_control/space_dust track = EVENT_TRACK_MUNDANE tags = list(TAG_DESTRUCTIVE, TAG_SPACE, TAG_EXTERNAL) - shared_occurence_type = SHARED_METEORS /datum/round_event_control/space_dragon track = EVENT_TRACK_ROLESET @@ -217,6 +221,7 @@ track = EVENT_TRACK_MAJOR tags = list(TAG_COMBAT, TAG_DESTRUCTIVE, TAG_ALIEN) checks_antag_cap = TRUE + event_group = /datum/event_group/guests /datum/round_event_control/spider_infestation track = EVENT_TRACK_ROLESET @@ -230,23 +235,24 @@ /datum/round_event_control/stray_meteor track = EVENT_TRACK_MODERATE tags = list(TAG_DESTRUCTIVE, TAG_SPACE, TAG_EXTERNAL) - shared_occurence_type = SHARED_METEORS + event_group = /datum/event_group/debris /datum/round_event_control/supermatter_surge track = EVENT_TRACK_MODERATE tags = list(TAG_DESTRUCTIVE, TAG_COMMUNAL) - shared_occurence_type = SHARED_BSOD + event_group = /datum/event_group/error /datum/round_event_control/tram_malfunction track = EVENT_TRACK_MUNDANE tags = list(TAG_COMMUNAL) - shared_occurence_type = SHARED_BSOD + event_group = /datum/event_group/error /datum/round_event_control/wisdomcow track = EVENT_TRACK_MUNDANE tags = list(TAG_COMMUNAL, TAG_POSITIVE, TAG_MAGICAL) + event_group = /datum/event_group/guests /datum/round_event_control/wormholes track = EVENT_TRACK_MODERATE tags = list(TAG_COMMUNAL, TAG_MAGICAL) - shared_occurence_type = SHARED_ANOMALIES + event_group = /datum/event_group/anomalies diff --git a/monkestation/code/modules/storytellers/converted_events/solo/bloodcult.dm b/monkestation/code/modules/storytellers/converted_events/solo/bloodcult.dm index 700957dff6c6..cbf469a3fb3c 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/bloodcult.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/bloodcult.dm @@ -8,6 +8,7 @@ restricted_roles = list( JOB_AI, JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_CHAPLAIN, JOB_CYBORG, JOB_DETECTIVE, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/bloodsuckers.dm b/monkestation/code/modules/storytellers/converted_events/solo/bloodsuckers.dm index 1bdf4c177a0a..30ec0ef49fbf 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/bloodsuckers.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/bloodsuckers.dm @@ -4,6 +4,7 @@ antag_datum = /datum/antagonist/bloodsucker protected_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/brother.dm b/monkestation/code/modules/storytellers/converted_events/solo/brother.dm index a2413bc3e608..90a6f492aba0 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/brother.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/brother.dm @@ -5,6 +5,7 @@ tags = list(TAG_COMBAT, TAG_TEAM_ANTAG) protected_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/changeling.dm b/monkestation/code/modules/storytellers/converted_events/solo/changeling.dm index 39e9d605a7e4..f198a7b2e85b 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/changeling.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/changeling.dm @@ -4,6 +4,7 @@ antag_datum = /datum/antagonist/changeling protected_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/clockwork_cult.dm b/monkestation/code/modules/storytellers/converted_events/solo/clockwork_cult.dm index 3f7475364bc1..2843b335d454 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/clockwork_cult.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/clockwork_cult.dm @@ -8,6 +8,7 @@ restricted_roles = list( JOB_AI, JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_CHAPLAIN, JOB_CYBORG, JOB_DETECTIVE, @@ -30,12 +31,11 @@ required_enemies = 5 base_antags = 4 maximum_antags = 4 - // I give up, just there should be enough heads with 35 players... - min_players = 35 + min_players = 45 roundstart = TRUE earliest_start = 0 SECONDS weight = 4 - max_occurrences = 0 + max_occurrences = 1 /datum/round_event/antagonist/solo/clockcult end_when = 60000 diff --git a/monkestation/code/modules/storytellers/converted_events/solo/clown_operative.dm b/monkestation/code/modules/storytellers/converted_events/solo/clown_operative.dm index dc86d98cb9b9..b51cb8b8ae27 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/clown_operative.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/clown_operative.dm @@ -8,6 +8,7 @@ restricted_roles = list( JOB_AI, JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CYBORG, @@ -64,6 +65,7 @@ for(var/obj/item/item as anything in items) qdel(item) + create_human_mob_copy(get_turf(current_mob), current_mob) antag_mind.set_assigned_role(SSjob.GetJobType(/datum/job/clown_operative)) antag_mind.special_role = ROLE_CLOWN_OPERATIVE @@ -74,10 +76,11 @@ if(!set_leader) set_leader = TRUE var/datum/antagonist/nukeop/leader/leader_antag_datum = new() + var/mob/living/carbon/human/leader_mob = most_experienced.current + leader_mob = create_human_mob_copy(get_turf(leader_mob), leader_mob) nuke_team = leader_antag_datum.nuke_team most_experienced.add_antag_datum(leader_antag_datum) - var/mob/living/carbon/human/leader = most_experienced.current - leader.equip_species_outfit(/datum/outfit/syndicate/clownop/leader) + leader_mob.equip_species_outfit(/datum/outfit/syndicate/clownop/leader) if(antag_mind == most_experienced) return diff --git a/monkestation/code/modules/storytellers/converted_events/solo/ghosts/nuclear_operative_ghost.dm b/monkestation/code/modules/storytellers/converted_events/solo/ghosts/nuclear_operative_ghost.dm index e9271d387ba0..54ed3b23756c 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/ghosts/nuclear_operative_ghost.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/ghosts/nuclear_operative_ghost.dm @@ -34,7 +34,7 @@ // I give up, just there should be enough heads with 35 players... min_players = 35 earliest_start = 60 MINUTES - weight = 4 + weight = 3 max_occurrences = 1 prompted_picking = TRUE diff --git a/monkestation/code/modules/storytellers/converted_events/solo/ghosts/paradox_clone.dm b/monkestation/code/modules/storytellers/converted_events/solo/ghosts/paradox_clone.dm index dc13c8d8b8fc..8a1a3223575a 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/ghosts/paradox_clone.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/ghosts/paradox_clone.dm @@ -46,8 +46,9 @@ "Would you like to be a paradox clone?", check_jobban = ROLE_PARADOX_CLONE, poll_time = 20 SECONDS, - pic_source = /datum/antagonist/paradox_clone, + alert_pic = /datum/antagonist/paradox_clone, role_name_text = "paradox clone", + chat_text_border_icon = /datum/antagonist/paradox_clone, ) var/list/weighted_candidates = return_antag_rep_weight(candidates) diff --git a/monkestation/code/modules/storytellers/converted_events/solo/heretic.dm b/monkestation/code/modules/storytellers/converted_events/solo/heretic.dm index 726b1a809bbf..9050bbdf1941 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/heretic.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/heretic.dm @@ -4,6 +4,7 @@ antag_datum = /datum/antagonist/heretic protected_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/monsterhunter.dm b/monkestation/code/modules/storytellers/converted_events/solo/monsterhunter.dm index 52f7647ae515..01441f7a84b5 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/monsterhunter.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/monsterhunter.dm @@ -8,6 +8,7 @@ antag_datum = /datum/antagonist/monsterhunter protected_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/nuclear_operative.dm b/monkestation/code/modules/storytellers/converted_events/solo/nuclear_operative.dm index f2a5a12a3e14..f95ffd7c64ae 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/nuclear_operative.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/nuclear_operative.dm @@ -8,6 +8,7 @@ restricted_roles = list( JOB_AI, JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CYBORG, @@ -57,11 +58,9 @@ for(var/obj/item/item as anything in items) qdel(item) + create_human_mob_copy(get_turf(current_mob), current_mob) if(!most_experienced) - most_experienced = get_most_experienced(setup_minds, required_role) - - if(!most_experienced) - most_experienced = antag_mind + most_experienced = get_most_experienced(setup_minds, required_role) || antag_mind if(!set_leader) set_leader = TRUE @@ -72,6 +71,7 @@ leader_mob.unequip_everything() for(var/obj/item/item as anything in leader_items) qdel(item) + leader_mob = create_human_mob_copy(get_turf(leader_mob), leader_mob) most_experienced.set_assigned_role(SSjob.GetJobType(/datum/job/nuclear_operative)) most_experienced.special_role = ROLE_NUCLEAR_OPERATIVE var/datum/antagonist/nukeop/leader/leader_antag_datum = most_experienced.add_antag_datum(/datum/antagonist/nukeop/leader) diff --git a/monkestation/code/modules/storytellers/converted_events/solo/obsessed.dm b/monkestation/code/modules/storytellers/converted_events/solo/obsessed.dm index bfb3b8294c2e..deb7b8b1e792 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/obsessed.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/obsessed.dm @@ -5,6 +5,7 @@ typepath = /datum/round_event/antagonist/solo/obsessed restricted_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/revolutionary.dm b/monkestation/code/modules/storytellers/converted_events/solo/revolutionary.dm index eb8fce9f4aeb..9d9b08303e61 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/revolutionary.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/revolutionary.dm @@ -8,6 +8,7 @@ restricted_roles = list( JOB_AI, JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CYBORG, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/traitor.dm b/monkestation/code/modules/storytellers/converted_events/solo/traitor.dm index 58ed6dd76653..ede797b7be16 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/traitor.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/traitor.dm @@ -4,6 +4,7 @@ antag_datum = /datum/antagonist/traitor/infiltrator protected_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_PERSONNEL, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, diff --git a/monkestation/code/modules/storytellers/converted_events/solo/wizard.dm b/monkestation/code/modules/storytellers/converted_events/solo/wizard.dm index 70e042c70f47..b0426a0191c8 100644 --- a/monkestation/code/modules/storytellers/converted_events/solo/wizard.dm +++ b/monkestation/code/modules/storytellers/converted_events/solo/wizard.dm @@ -7,6 +7,7 @@ shared_occurence_type = SHARED_HIGH_THREAT restricted_roles = list( JOB_CAPTAIN, + JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, ) // Just to be sure that a wizard getting picked won't ever imply a Captain or HoS not getting drafted maximum_antags = 1 diff --git a/monkestation/code/modules/storytellers/event_groups/_event_group.dm b/monkestation/code/modules/storytellers/event_groups/_event_group.dm new file mode 100644 index 000000000000..7872629f4278 --- /dev/null +++ b/monkestation/code/modules/storytellers/event_groups/_event_group.dm @@ -0,0 +1,66 @@ +/// An associative list of singleton event groups, in the format of [type] = instance. +GLOBAL_LIST_INIT_TYPED(event_groups, /datum/event_group, initialize_event_groups()) + +/datum/event_group + /// The name of the event group. + var/name + /// If set, this will limit the amount of times events in this group can run. + var/max_occurrences + /// If set, whenever an event in this group runs, no other events in this group + /// will be able to run for the specified amount of time. + /// Can be either a number for a static cooldown, or a list containing 2 numbers, + /// for a random cooldown between the given numbers, which will bias towards the upper bound + /// the more the event group has occured. + var/cooldown_time + /// The amount of time events in this group have ran. + VAR_FINAL/occurrences = 0 + /// If [cooldown_time] is set, this will be set to the minimum world.time where the next event in this group can run. + COOLDOWN_DECLARE(event_cooldown) + +/datum/event_group/Destroy(force) + if(!force && GLOB.event_groups[type] == src) + stack_trace("Something is trying to destroy the event group ([type]), which is a singleton! This is super duper bad!") + return QDEL_HINT_LETMELIVE + return ..() + +/datum/event_group/proc/get_cooldown_time() as num + if(isnum(cooldown_time)) + return cooldown_time + var/min_cooldown = cooldown_time[1] + var/max_cooldown = cooldown_time[2] + + if (max_occurrences) + var/occurrence_ratio = min(1, occurrences / max_occurrences) + return min_cooldown + (max_cooldown - min_cooldown) * occurrence_ratio + else + // If max_occurrences is not set, use a simple exponential increase + return min_cooldown + (max_cooldown - min_cooldown) * (occurrences / (occurrences + 1)) + +/datum/event_group/proc/can_run() as num + . = TRUE + if(cooldown_time && !COOLDOWN_FINISHED(src, event_cooldown)) + return FALSE + if(max_occurrences && occurrences >= max_occurrences) + return FALSE + +/datum/event_group/proc/on_run(datum/round_event_control/running_event) + if(cooldown_time) + var/cooldown = get_cooldown_time() + COOLDOWN_START(src, event_cooldown, cooldown) + for(var/datum/scheduled_event/scheduled_event in SSgamemode.scheduled_events) + if(scheduled_event.event == running_event || scheduled_event.event?.event_group != type || !scheduled_event.start_time || (scheduled_event.start_time > src.event_cooldown) || (scheduled_event.start_time <= world.time)) + continue + var/old_start_time = scheduled_event.start_time + scheduled_event.start_time += cooldown + message_admins("Scheduled event [scheduled_event.event.name] start time pushed back by [DisplayTimeText(cooldown)] ([DisplayTimeText(COOLDOWN_TIMELEFT(scheduled_event, start_time))] from now) due to event group [name] running.") + log_storyteller("Scheduled event [scheduled_event.event.name] start time pushed back by [DisplayTimeText(cooldown)] ([old_start_time] -> [scheduled_event.start_time]) due to event group [name] running.", list("group" = "[name]", "cooldown" = cooldown)) + occurrences++ + SSblackbox.record_feedback("tally", "event_group_ran", 1, "[name]") + +/proc/initialize_event_groups() as /list + RETURN_TYPE(/list) + . = list() + for(var/datum/event_group/event_group as anything in subtypesof(/datum/event_group)) + if(!event_group::name) + continue + .[event_group] = new event_group diff --git a/monkestation/code/modules/storytellers/event_groups/groups.dm b/monkestation/code/modules/storytellers/event_groups/groups.dm new file mode 100644 index 000000000000..a6952f8e0e0e --- /dev/null +++ b/monkestation/code/modules/storytellers/event_groups/groups.dm @@ -0,0 +1,44 @@ +/datum/event_group/anomalies + name = "Anomalies" + cooldown_time = list(10 MINUTES, 25 MINUTES) + +/datum/event_group/comms + name = "Communications" + cooldown_time = list(15 MINUTES, 45 MINUTES) + max_occurrences = 3 + +/// Represents small-scale technical difficulties - might annoy some people, but not everyone will notice or be affected, +/// If the event directly affects the entire crew, use [/datum/event_group/bsod]. +/// If the main effect involves telecommunications, use [/datum/event_group/comms]. +/datum/event_group/error + name = "Technical Difficulties (small scale)" + cooldown_time = list(2.5 MINUTES, 7.5 MINUTES) + +/// Represents large-scale technical difficulties - stuff that affects the whole crew. +/// If the main effect involves telecommunications, use [/datum/event_group/comms]. +/datum/event_group/bsod + name = "Technical Difficulties (large scale)" + cooldown_time = list(15 MINUTES, 25 MINUTES) + max_occurrences = 5 + +/datum/event_group/debris + name = "Space Debris" + cooldown_time = list(2 MINUTES, 10 MINUTES) + +/datum/event_group/meteors + name = "Meteors" + cooldown_time = 20 MINUTES + max_occurrences = 3 + +// needs a better name - this is basically for events focused around spawning some sort of NPCs, +// i.e vines, wisdom cow, carp, etc. +/datum/event_group/guests + name = "Guests" + cooldown_time = list(7.5 MINUTES, 20 MINUTES) + +// These event groups are somewhat specific to a single event, +// but we're using event groups to share cooldowns/occurrences between SSevents and storytellers +/datum/event_group/scrubber_overflow + name = "Scrubber Overflows" + cooldown_time = list(25 MINUTES, 45 MINUTES) + max_occurrences = 2 diff --git a/monkestation/code/modules/storytellers/gamemode_subsystem.dm b/monkestation/code/modules/storytellers/gamemode_subsystem.dm index 2d1f8719509f..561149220487 100644 --- a/monkestation/code/modules/storytellers/gamemode_subsystem.dm +++ b/monkestation/code/modules/storytellers/gamemode_subsystem.dm @@ -189,6 +189,9 @@ SUBSYSTEM_DEF(gamemode) event_pools[event.track] += event //Add it to the categorized event pools load_roundstart_data() + if(CONFIG_GET(flag/disable_storyteller)) // we're just gonna disable firing but still initialize, so we don't have any weird runtimes + flags |= SS_NO_FIRE + return SS_INIT_NO_NEED return SS_INIT_SUCCESS @@ -262,8 +265,7 @@ SUBSYSTEM_DEF(gamemode) continue // I split these checks up to make the code more readable ~Lucy var/is_on_station = is_station_level(player.z) - var/is_late_arrival = HAS_TRAIT(SSstation, STATION_TRAIT_LATE_ARRIVALS) && istype(get_area(player), /area/shuttle/arrival) - if(!is_on_station && !is_late_arrival) + if(!is_on_station && !is_late_arrival(player)) continue candidate_candidates += player diff --git a/monkestation/code/modules/surgery/bodyparts/arachnid_bodyparts.dm b/monkestation/code/modules/surgery/bodyparts/arachnid_bodyparts.dm index 92f15fcadb91..6feabe23fc6d 100644 --- a/monkestation/code/modules/surgery/bodyparts/arachnid_bodyparts.dm +++ b/monkestation/code/modules/surgery/bodyparts/arachnid_bodyparts.dm @@ -2,6 +2,7 @@ icon_greyscale = 'monkestation/icons/mob/species/arachnid/bodyparts.dmi' limb_id = SPECIES_ARACHNIDS is_dimorphic = FALSE + head_flags = HEAD_EYESPRITES | HEAD_EYEHOLES | HEAD_DEBRAIN | HEAD_EYECOLOR /obj/item/bodypart/chest/arachnid icon_greyscale = 'monkestation/icons/mob/species/arachnid/bodyparts.dmi' diff --git a/monkestation/code/modules/surgery/bodyparts/clockwork_bodyparts.dm b/monkestation/code/modules/surgery/bodyparts/clockwork_bodyparts.dm index 3c48e54f763f..7c3e0061c5f8 100644 --- a/monkestation/code/modules/surgery/bodyparts/clockwork_bodyparts.dm +++ b/monkestation/code/modules/surgery/bodyparts/clockwork_bodyparts.dm @@ -88,7 +88,7 @@ burn_modifier = 0.95 damage_examines = list(BRUTE = ROBOTIC_BRUTE_EXAMINE_TEXT, BURN = ROBOTIC_BURN_EXAMINE_TEXT, CLONE = DEFAULT_CLONE_EXAMINE_TEXT) disabling_threshold_percentage = 1 - + head_flags = NONE /obj/item/bodypart/chest/robot/clockwork name = "clockwork torso" diff --git a/monkestation/code/modules/surgery/bodyparts/ethereal_bodyparts.dm b/monkestation/code/modules/surgery/bodyparts/ethereal_bodyparts.dm index 85db21d7e072..e815032fcbfa 100644 --- a/monkestation/code/modules/surgery/bodyparts/ethereal_bodyparts.dm +++ b/monkestation/code/modules/surgery/bodyparts/ethereal_bodyparts.dm @@ -1,6 +1,7 @@ /obj/item/bodypart/head/ethereal icon_greyscale ='monkestation/icons/mob/species/ethereal/bodyparts.dmi' is_dimorphic = TRUE + head_flags = HEAD_HAIR | HEAD_FACIAL_HAIR | HEAD_EYESPRITES | HEAD_EYEHOLES | HEAD_DEBRAIN | HEAD_EYECOLOR /obj/item/bodypart/chest/ethereal icon_greyscale = 'monkestation/icons/mob/species/ethereal/bodyparts.dmi' diff --git a/monkestation/code/modules/surgery/bodyparts/floran_bodyparts.dm b/monkestation/code/modules/surgery/bodyparts/floran_bodyparts.dm index e7751c56c7ca..353882d35acb 100644 --- a/monkestation/code/modules/surgery/bodyparts/floran_bodyparts.dm +++ b/monkestation/code/modules/surgery/bodyparts/floran_bodyparts.dm @@ -2,6 +2,7 @@ icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi' limb_id = SPECIES_FLORAN is_dimorphic = FALSE + head_flags = HEAD_EYESPRITES | HEAD_EYEHOLES | HEAD_DEBRAIN /obj/item/bodypart/chest/floran icon_greyscale = 'monkestation/icons/mob/species/floran/bodyparts.dmi' diff --git a/monkestation/code/modules/surgery/bodyparts/simian_bodyparts.dm b/monkestation/code/modules/surgery/bodyparts/simian_bodyparts.dm index 522324f44f22..a4f869adb794 100644 --- a/monkestation/code/modules/surgery/bodyparts/simian_bodyparts.dm +++ b/monkestation/code/modules/surgery/bodyparts/simian_bodyparts.dm @@ -5,7 +5,7 @@ limb_id = SPECIES_SIMIAN is_dimorphic = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM - + head_flags = HEAD_EYESPRITES | HEAD_EYEHOLES | HEAD_DEBRAIN | HEAD_EYECOLOR dmg_overlay_type = "monkey" /obj/item/bodypart/chest/simian diff --git a/monkestation/code/modules/surgery/nif_debonding.dm b/monkestation/code/modules/surgery/nif_debonding.dm new file mode 100644 index 000000000000..af50abbda4fb --- /dev/null +++ b/monkestation/code/modules/surgery/nif_debonding.dm @@ -0,0 +1,96 @@ +/datum/surgery/nif_debonding + name = "NIF debonding" + desc = "Permanently removes a bonded NIF from the patient. Requires the patient to mentally prepare for debonding." + possible_locs = list(BODY_ZONE_HEAD) + steps = list( + /datum/surgery_step/incise, + /datum/surgery_step/retract_skin, + /datum/surgery_step/saw, + /datum/surgery_step/clamp_bleeders, + /datum/surgery_step/incise, + /datum/surgery_step/debond_nif, + /datum/surgery_step/close, + ) + +/datum/surgery/nif_debonding/can_start(mob/user, mob/living/patient) + if(!..()) + return FALSE + + var/obj/item/organ/internal/cyberimp/brain/nif/nif = patient.get_organ_slot(ORGAN_SLOT_BRAIN_NIF) + + return nif?.is_calibrated && patient.stat != DEAD && patient.client && patient.get_organ_slot(ORGAN_SLOT_BRAIN) + +/datum/surgery_step/debond_nif + name = "debond NIF (scalpel)" + time = 5 SECONDS + preop_sound = 'sound/surgery/scalpel1.ogg' + success_sound = 'sound/surgery/scalpel2.ogg' + implements = list( + TOOL_SCALPEL = 100, + /obj/item/melee/energy/sword = 75, + /obj/item/knife = 65, + /obj/item/shard = 45, + /obj/item = 30, + ) + +/datum/surgery_step/debond_nif/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(tgui_alert(target, "Would you like to have your NIF debonded from you by [user]?", "NIF Debonding", list("Yes", "No"), timeout = 5 SECONDS) != "Yes") + if(user && target) + target.balloon_alert(user, "unwilling!") + return SURGERY_STEP_FAIL + + display_results( + user, + target, + span_notice("You begin to carefully cut the threads of the NIF in [target]..."), + span_notice("[user] begins to carefully cut the threads of the NIF in [target]."), + span_notice("[user] begins to carefully cut something in [target]'s head."), + ) + display_pain(target, "You feel painful zaps in your head!") + +/datum/surgery_step/debond_nif/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results) + if(target.stat == DEAD) + to_chat(user, span_warning("They need to be alive to perform this surgery!")) + return FALSE + + var/obj/item/organ/internal/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + if(!istype(brain)) + to_chat(user, span_warning("They need a brain, dingus!")) + return FALSE + + var/obj/item/organ/internal/cyberimp/brain/nif/nif = target.get_organ_slot(ORGAN_SLOT_BRAIN_NIF) + if(!nif) + to_chat(user, span_warning("They need an NIF, dingus!")) + return FALSE + + if(!brain.modular_persistence) + to_chat(user, span_cultlarge("The ethereal forces of reality forbid debonding the NIF! Okay seriously, tell an admin lmao.")) + CRASH("[user.ckey] attempted NIF debonding for [target.ckey], but no modular persistence datum was found. This shouldn't happen.") + + nif.Remove(target) + user.put_in_hands(nif) + + target.save_nif_data(brain.modular_persistence, remove_nif = TRUE) + target.save_individual_persistence() + + return ..() + +/datum/surgery_step/debond_nif/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob) + display_results( + user, + target, + span_notice("You mess up, damaging the NIF and brain!"), + span_notice("[user] messes up, damaging the NIF and brain!"), + span_notice("[user] messes up!"), + ) + display_pain(user, "You feel a horrible spike of pain in your head!") + + target.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(30, 50)) + + var/obj/item/organ/internal/cyberimp/brain/nif/nif = target.get_organ_slot(ORGAN_SLOT_BRAIN_NIF) + nif?.adjust_durability(-rand(10, 20)) + + return FALSE + +/datum/surgery_step/debond_nif/tool_check(mob/user, obj/item/tool) + return implement_type != /obj/item || tool.get_sharpness() > 0 diff --git a/monkestation/code/modules/surgery/organs/internal/butts.dm b/monkestation/code/modules/surgery/organs/internal/butts.dm index 97a2225e7622..e8fe995bc3cb 100644 --- a/monkestation/code/modules/surgery/organs/internal/butts.dm +++ b/monkestation/code/modules/surgery/organs/internal/butts.dm @@ -160,7 +160,7 @@ //BIBLEFART //This goes above all else because it's an instagib. - for(var/obj/item/storage/book/bible/Holy in Location) + for(var/obj/item/book/bible/Holy in Location) if(Holy) cooling_down = TRUE var/turf/T = get_step(get_step(Person, NORTH), NORTH) diff --git a/monkestation/code/modules/syndicate_ghostroles/listeningpost.dm b/monkestation/code/modules/syndicate_ghostroles/listeningpost.dm new file mode 100644 index 000000000000..c83e807ceaad --- /dev/null +++ b/monkestation/code/modules/syndicate_ghostroles/listeningpost.dm @@ -0,0 +1,50 @@ + +//role + +///asteroid comms agent + +//job datum + +/datum/job/lavaland_syndicate/space //prevent admin confusion (getting bwoinked while squatting on a space ruin) + title = ROLE_SPACE_SYNDICATE + +//spawner itself + +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/comms/space + you_are_text = "You are a syndicate agent, assigned to a small listening post station situated near your hated enemy's top secret research facility: Space Station 13." + flavour_text = "Monitor enemy activity as best you can, and try to keep a low profile. Monitor enemy activity as best you can, and try to keep a low profile. Use the communication equipment to provide support to any field agents, and sow disinformation to throw Nanotrasen off your trail. Do not let the base fall into enemy hands!" + important_text = "DO NOT leave the base. You are not a field agent, and are not permitted to do their job for them." + spawner_job_path = /datum/job/lavaland_syndicate/space + + + +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/comms/space/anderson //the last agent according to lore, spawns rarely, has some flavour text, should start blinded + name = "sleeper" + desc = "A standard medicinal sleeper used to treat small and major injuries alike. It appears to be locked up, and you can see a gas mask through the fogged-up windows..." + icon_state = "sleeper" + you_are_text = "You are a Syndicate reconnaisance agent who went blind in an accident..." + flavour_text = "Your painkillers are running low, your memories are getting foggy, and all you can remember is the codename 'Anderson'. You were about to hurl yourself out into space, but you heard the intercom announce that the backup was getting unfrozen... maybe you'll see again?" + important_text = "DO NOT leave the base, you're inevitably doomed without it!" + outfit = /datum/outfit/lavaland_syndicate/comms/anderson + +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/comms/space/anderson/Initialize(mapload) + . = ..() + if(prob(85)) //only has a 15% chance of existing, otherwise it'll just be a regular (self-control) sleeper + return INITIALIZE_HINT_QDEL //the destroy() code already handles sleeper spawning + +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/comms/space/anderson/Destroy() + var/obj/machinery/sleeper/self_control/anderson = new(drop_location()) //one guy cmon + anderson.setDir(dir) + return ..() + +/datum/outfit/lavaland_syndicate/comms/anderson + name = "'Anderson' Comms Agent" + r_hand = /obj/item/storage/pill_bottle //empty pillbottle + l_hand = /obj/item/knife/combat/survival //no esword, but still a knife + head = /obj/item/clothing/head/soft/black + +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/comms/space/anderson/special(mob/living/new_spawn) + . = ..() + new_spawn.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND) + new_spawn.adjustOrganLoss(ORGAN_SLOT_EYES, 100) //AAAARGH MY EYES + new_spawn.adjustOrganLoss(ORGAN_SLOT_LIVER, 35) //not completely out, but it's not having a good day diff --git a/monkestation/code/modules/trading/unusual_effects/_unusual_component.dm b/monkestation/code/modules/trading/unusual_effects/_unusual_component.dm index c086f9421291..665618d0bfb6 100644 --- a/monkestation/code/modules/trading/unusual_effects/_unusual_component.dm +++ b/monkestation/code/modules/trading/unusual_effects/_unusual_component.dm @@ -65,7 +65,7 @@ GLOBAL_LIST_INIT(total_unusuals_per_type, list()) RegisterSignal(source_object, COMSIG_ATOM_UPDATE_DESC, PROC_REF(append_unusual)) save_unusual_data() -/datum/component/unusual_handler/Destroy(force, silent) +/datum/component/unusual_handler/Destroy(force) . = ..() UnregisterSignal(source_object, COMSIG_ATOM_UPDATE_DESC) diff --git a/monkestation/code/modules/trading/unusual_effects/animation_housing/__spawning_component.dm b/monkestation/code/modules/trading/unusual_effects/animation_housing/__spawning_component.dm index cc409d1c35a4..a7d1df45c69a 100644 --- a/monkestation/code/modules/trading/unusual_effects/animation_housing/__spawning_component.dm +++ b/monkestation/code/modules/trading/unusual_effects/animation_housing/__spawning_component.dm @@ -6,6 +6,8 @@ mouse_opacity = MOUSE_OPACITY_TRANSPARENT icon = 'monkestation/code/modules/trading/icons/particles.dmi' icon_state = "none" + underlays = null + overlays = null /datum/component/particle_spewer var/atom/source_object @@ -87,7 +89,7 @@ if(lifetime) addtimer(CALLBACK(src, PROC_REF(kill_it_with_fire)), lifetime) -/datum/component/particle_spewer/Destroy(force, silent) +/datum/component/particle_spewer/Destroy(force) . = ..() UnregisterSignal(source_object, list( COMSIG_ITEM_EQUIPPED, @@ -117,7 +119,8 @@ for(var/i = 0 to burstees) //create and assign particle its stuff - var/obj/effect/abstract/particle/spawned = new(get_turf(source_object)) + var/obj/effect/abstract/particle/spawned + spawned = new(get_turf(source_object)) if(offsets) spawned.pixel_x = offset_x spawned.pixel_y = offset_y diff --git a/monkestation/code/modules/trading/unusual_effects/animation_housing/_footprint.dm b/monkestation/code/modules/trading/unusual_effects/animation_housing/_footprint.dm index dec84bd40657..0638dec0bd7f 100644 --- a/monkestation/code/modules/trading/unusual_effects/animation_housing/_footprint.dm +++ b/monkestation/code/modules/trading/unusual_effects/animation_housing/_footprint.dm @@ -3,7 +3,7 @@ processes = FALSE var/mob/attached_signal -/datum/component/particle_spewer/movement/Destroy(force, silent) +/datum/component/particle_spewer/movement/Destroy(force) UnregisterSignal(source_object, COMSIG_MOVABLE_PRE_MOVE) . = ..() UnregisterSignal(attached_signal, COMSIG_MOVABLE_PRE_MOVE) diff --git a/monkestation/code/modules/trading/unusual_effects/animation_housing/money.dm b/monkestation/code/modules/trading/unusual_effects/animation_housing/money.dm new file mode 100644 index 000000000000..baacfb56682b --- /dev/null +++ b/monkestation/code/modules/trading/unusual_effects/animation_housing/money.dm @@ -0,0 +1,38 @@ +/datum/component/particle_spewer/cash + unusual_description = "cashflow" + icon_file = 'icons/obj/economy.dmi' + particle_state = "spacecash1" + burst_amount = 1 + duration = 2 SECONDS + random_bursts = TRUE + spawn_interval = 6 SECONDS + +/datum/component/particle_spewer/cash/animate_particle(obj/effect/abstract/particle/spawned) + var/chance = rand(1, 10) + switch(chance) + if(1 to 2) + spawned.icon_state = "spacecash1" + if(3 to 4) + spawned.icon_state = "spacecash10" + if(5 to 6) + spawned.icon_state = "spacecash50" + else + spawned.icon_state = "spacecash20" + + if(prob(65)) + spawned.layer = LOW_ITEM_LAYER + spawned.pixel_x += rand(-12, 12) + spawned.pixel_y += rand(-5, 5) + . = ..() + +/datum/component/particle_spewer/cash/adjust_animate_steps() + animate_holder.add_animation_step(list(transform = matrix(0.5, 0.5, MATRIX_SCALE), alpha = 125, time = 0)) + + animate_holder.add_animation_step(list(transform = "RANDOM", time = 2 SECONDS, pixel_y = "RANDOM", pixel_x = "RANDOM", easing = LINEAR_EASING)) + + animate_holder.set_random_var(2, "transform", list(-90, 90)) + animate_holder.set_random_var(2, "pixel_x", list(-16, 16)) + animate_holder.set_random_var(2, "pixel_y", list(-16, 16)) + animate_holder.set_transform_type(2, MATRIX_ROTATE) + + animate_holder.add_animation_step(list(alpha = 25, time = 1.5 SECONDS)) diff --git a/monkestation/code/modules/uplink/uplink_items/job.dm b/monkestation/code/modules/uplink/uplink_items/job.dm index 8d80747eca3d..2395ddbf650a 100644 --- a/monkestation/code/modules/uplink/uplink_items/job.dm +++ b/monkestation/code/modules/uplink/uplink_items/job.dm @@ -3,7 +3,7 @@ desc = "We understand it can be difficult to carry out some of our missions. Here is some spiritual counsel in a small package." progression_minimum = 5 MINUTES cost = 1 - item = /obj/item/storage/book/bible/mini + item = /obj/item/book/bible/mini restricted_roles = list(JOB_CHAPLAIN, JOB_CLOWN) /datum/uplink_item/role_restricted/reverse_bear_trap diff --git a/monkestation/code/modules/uplink/uplink_items/nukeops.dm b/monkestation/code/modules/uplink/uplink_items/nukeops.dm index 8a918b7ad0b5..ccfeb79e10df 100644 --- a/monkestation/code/modules/uplink/uplink_items/nukeops.dm +++ b/monkestation/code/modules/uplink/uplink_items/nukeops.dm @@ -18,3 +18,12 @@ /datum/uplink_item/support/honker surplus = 60 + +/datum/uplink_item/suits/cybersun_juggernaut_suit + name = "Cybersun Juggernaut Suit" + desc = "Developed by Cybersun for use in clearing heavy space bear infestations in asteroid belt operations.\ + It now has a new purpose as the heavy operation suit of the Syndicate. By purchasing this you get a special Authorization Key to the only suit in storage at Firebase Balthazord." + item = /obj/item/keycard/syndicate_suit_storage + cost = 20 + purchasable_from = UPLINK_NUKE_OPS + limited_stock = 1 diff --git a/monkestation/code/modules/uplink/uplink_items/suits.dm b/monkestation/code/modules/uplink/uplink_items/suits.dm new file mode 100644 index 000000000000..32331ac90496 --- /dev/null +++ b/monkestation/code/modules/uplink/uplink_items/suits.dm @@ -0,0 +1 @@ +// Never again. diff --git a/monkestation/code/modules/uplink/uplink_items/weapons.dm b/monkestation/code/modules/uplink/uplink_items/weapons.dm index a224ec53eb48..80e36ad88fa0 100644 --- a/monkestation/code/modules/uplink/uplink_items/weapons.dm +++ b/monkestation/code/modules/uplink/uplink_items/weapons.dm @@ -22,7 +22,7 @@ Rumors of this 'siphoning power off your lifeforce' are greatly exaggerated, and Aetherofusion assures safety for up to 2 years of use." item = /obj/item/gun/energy/laser/musket/syndicate progression_minimum = 30 MINUTES - cost = 12 + cost = 10 surplus = 40 purchasable_from = ~UPLINK_CLOWN_OPS @@ -31,3 +31,56 @@ desc = "A knife that is made of two razor sharp blades, it has a secret compartment in the handle to store liquids which are injected when stabbing something. Can hold up to forty units of reagents but comes empty." item = /obj/item/knife/venom cost = 6 // all in all it's not super stealthy and you have to get some chemicals yourself + +/datum/uplink_item/dangerous/renoster + name = "Renoster Shotgun Case" + desc = "A twelve gauge shotgun with an eight shell capacity underneath. Comes with two boxes of buckshot." + item = /obj/item/storage/toolbox/guncase/nova/opfor/renoster + cost = 10 + +/datum/uplink_item/dangerous/infanteria + name = "Carwo-Cawil Battle Rifle Case" + desc = "A heavy battle rifle, this one seems to be painted tacticool black. Accepts any standard SolFed rifle magazine. Comes with two mags. This will NOT fit in a backpack... " + progression_minimum = 10 MINUTES + item = /obj/item/storage/toolbox/guncase/nova/opfor/infanteria + cost = 12 + +/datum/uplink_item/dangerous/miecz + name = "'Miecz' Submachinegun Case" + desc = "A short barrel, further compacted conversion of the 'Lanca' rifle to fire pistol caliber cartridges. Comes with two magazines." + progression_minimum = 10 MINUTES + item = /obj/item/storage/toolbox/guncase/nova/opfor/miecz + cost = 9 + +/datum/uplink_item/dangerous/kiboko + name = "Kiboko Grenade Launcher Case" + desc = "A unique grenade launcher firing .980 grenades. A laser sight system allows its user to specify a range for the grenades it fires to detonate at. Comes with two C980 Grenade Drums." + progression_minimum = 10 MINUTES + item = /obj/item/storage/toolbox/guncase/nova/opfor/kiboko + cost = 14 + +/datum/uplink_item/dangerous/sidano + name = "Sindano SMG" + desc = "A small submachinegun, this one is painted in tacticool black. Accepts any standard Sol pistol magazine." + progression_minimum = 10 MINUTES + item = /obj/item/storage/toolbox/guncase/nova/pistol/opfor/sindano + cost = 12 + +/datum/uplink_item/dangerous/wespe + name = "Wespe Pistol" + desc = "The standard issue service pistol of SolFed's various military branches. Comes with attached light." + progression_minimum = 5 MINUTES + item = /obj/item/storage/toolbox/guncase/nova/pistol/opfor/wespe + cost = 6 + +/datum/uplink_item/dangerous/shotgun_revolver + name = "\improper Bóbr 12 GA revolver" + desc = "An outdated sidearm rarely seen in use by some members of the CIN. A revolver type design with a four shell cylinder. That's right, shell, this one shoots twelve guage." + item = /obj/item/storage/box/syndie_kit/shotgun_revolver + cost = 8 + +/datum/uplink_item/dangerous/shit_smg + name = "Surplus Smg Bundle" + desc = "A single surplus Plastikov SMG and two extra magazines. A terrible weapon, perfect for henchmen." + item = /obj/item/storage/box/syndie_kit/shit_smg_bundle + cost = 4 diff --git a/monkestation/code/modules/veth_misc_items/canopics/canopics.dm b/monkestation/code/modules/veth_misc_items/canopics/canopics.dm new file mode 100644 index 000000000000..f164cb9f4e73 --- /dev/null +++ b/monkestation/code/modules/veth_misc_items/canopics/canopics.dm @@ -0,0 +1,254 @@ +//canopic box sprited by twiggy, coded by veth +/obj/item/storage/box/canopic_box + name = "Canopic Box" + desc = "An ornate stone box inscribed with ancient hieroglyphs." + icon = 'monkestation/code/modules/veth_misc_items/canopics/icons/canopic_box.dmi' + icon_state = "canopic_box" + inhand_icon_state = "syringe_kit" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + resistance_flags = FIRE_PROOF + drop_sound = 'monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_drop.ogg' + pickup_sound = 'monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_pickup.ogg' + foldable_result = FALSE + illustration = FALSE + +/datum/crafting_recipe/canopic_box + name = "Canopic box" + result = /obj/item/storage/box/canopic_box + time = 2 SECONDS + tool_paths = FALSE + reqs = list( + /obj/item/stack/sheet/sandblock = 5, + /obj/item/stack/sheet/mineral/wood = 10, + /obj/item/stack/sheet/leather = 2, + /obj/item/stack/sheet/mineral/gold = 1, + /obj/item/stack/sheet/mineral/silver = 1) + category = CAT_CONTAINERS + +//jackal canopic sprited by twiggy, coded by veth +/obj/item/storage/box/canopic_jackal/Initialize(mapload) + . = ..() + atom_storage.max_slots = 1 + atom_storage.set_holdable(list( + /obj/item/organ/internal/heart, + /obj/item/organ/internal/lungs, + /obj/item/organ/internal/liver, + /obj/item/organ/internal/appendix, + /obj/item/organ/internal/tongue, + /obj/item/organ/internal/eyes, + /obj/item/organ/internal/stomach, + /obj/item/organ/internal/ears, + )) + atom_storage.exception_hold = list( + /obj/item/organ/internal/heart, + /obj/item/organ/internal/lungs, + /obj/item/organ/internal/liver, + /obj/item/organ/internal/appendix, + /obj/item/organ/internal/tongue, + /obj/item/organ/internal/eyes, + /obj/item/organ/internal/stomach, + /obj/item/organ/internal/ears, + ) + atom_storage.can_hold = typecacheof(/obj/item/organ/internal) + atom_storage.can_hold_description = "This jar can hold organs!" + atom_storage.max_total_storage = WEIGHT_CLASS_TINY*10 + update_appearance() + +/obj/item/storage/box/canopic_jackal + name = "Jackal Canopic jar" + desc = "An ornate stone canopic, inscribed with ancient hieroglyphs. These used to be used to store organs." + w_class = WEIGHT_CLASS_TINY + icon = 'monkestation/code/modules/veth_misc_items/canopics/icons/canopic.dmi' + icon_state = "canopic_jackal" + inhand_icon_state = "syringe_kit" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + resistance_flags = FIRE_PROOF + drop_sound = 'monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_drop.ogg' + pickup_sound = 'monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_pickup.ogg' + foldable_result = FALSE + illustration = FALSE + +/datum/crafting_recipe/canopic_jackal + name = "Jackal Canopic jar" + result = /obj/item/storage/box/canopic_jackal + time = 2 SECONDS + tool_paths = FALSE + reqs = list( + /obj/item/stack/sheet/sandblock = 1, + /obj/item/stack/sheet/mineral/wood = 1, + /obj/item/stack/sheet/leather = 1, + /obj/item/stack/sheet/mineral/gold = 1, + /obj/item/stack/sheet/mineral/silver = 1) + category = CAT_CONTAINERS +//human canopic sprited by twiggy, coded by veth +/obj/item/storage/box/canopic_human + name = "Human Canopic jar" + desc = "An ornate stone canopic, inscribed with ancient hieroglyphs. These used to be used to store organs." + w_class = WEIGHT_CLASS_TINY + icon = 'monkestation/code/modules/veth_misc_items/canopics/icons/canopic.dmi' + icon_state = "canopic_human" + inhand_icon_state = "syringe_kit" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + resistance_flags = FIRE_PROOF + drop_sound = 'monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_drop.ogg' + pickup_sound = 'monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_pickup.ogg' + foldable_result = FALSE + illustration = FALSE +/obj/item/storage/box/canopic_human/Initialize(mapload) + . = ..() + + atom_storage.max_slots = 1 + atom_storage.set_holdable(list( + /obj/item/organ/internal/heart, + /obj/item/organ/internal/lungs, + /obj/item/organ/internal/liver, + /obj/item/organ/internal/appendix, + /obj/item/organ/internal/tongue, + /obj/item/organ/internal/eyes, + /obj/item/organ/internal/stomach, + /obj/item/organ/internal/ears, + )) + atom_storage.exception_hold = list( + /obj/item/organ/internal/heart, + /obj/item/organ/internal/lungs, + /obj/item/organ/internal/liver, + /obj/item/organ/internal/appendix, + /obj/item/organ/internal/tongue, + /obj/item/organ/internal/eyes, + /obj/item/organ/internal/stomach, + /obj/item/organ/internal/ears, + ) + atom_storage.can_hold = typecacheof(/obj/item/organ/internal) + atom_storage.can_hold_description = "This jar can hold organs!" + atom_storage.max_total_storage = WEIGHT_CLASS_TINY*10 + update_appearance() + +/datum/crafting_recipe/canopic_human + name = "Human Canopic jar" + result = /obj/item/storage/box/canopic_human + time = 2 SECONDS + tool_paths = FALSE + reqs = list( + /obj/item/stack/sheet/sandblock = 1, + /obj/item/stack/sheet/mineral/wood = 1, + /obj/item/stack/sheet/leather = 1, + /obj/item/stack/sheet/mineral/gold = 1, + /obj/item/stack/sheet/mineral/silver = 1) + category = CAT_CONTAINERS +//monke canopic sprited by twiggy, coded by veth +/obj/item/storage/box/canopic_monke/Initialize(mapload) + . = ..() + atom_storage.max_slots = 1 + atom_storage.set_holdable(list( + /obj/item/organ/internal/heart, + /obj/item/organ/internal/lungs, + /obj/item/organ/internal/liver, + /obj/item/organ/internal/appendix, + /obj/item/organ/internal/tongue, + /obj/item/organ/internal/eyes, + /obj/item/organ/internal/stomach, + /obj/item/organ/internal/ears, + )) + atom_storage.exception_hold = list( + /obj/item/organ/internal/heart, + /obj/item/organ/internal/lungs, + /obj/item/organ/internal/liver, + /obj/item/organ/internal/appendix, + /obj/item/organ/internal/tongue, + /obj/item/organ/internal/eyes, + /obj/item/organ/internal/stomach, + /obj/item/organ/internal/ears, + ) + atom_storage.can_hold = typecacheof(/obj/item/organ/internal) + atom_storage.can_hold_description = "This jar can hold organs!" + atom_storage.max_total_storage = WEIGHT_CLASS_TINY*10 + update_appearance() + +/obj/item/storage/box/canopic_monke //creates the object + name = "Monke canopic jar" + desc = "An ornate stone canopic, inscribed with ancient hieroglyphs. These used to be used to store organs." + w_class = WEIGHT_CLASS_TINY + icon = 'monkestation/code/modules/veth_misc_items/canopics/icons/canopic.dmi' + icon_state = "canopic_monke" + inhand_icon_state = "syringe_kit" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + resistance_flags = FIRE_PROOF + drop_sound = 'monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_drop.ogg' + pickup_sound = 'monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_pickup.ogg' + foldable_result = FALSE + illustration = FALSE + +/datum/crafting_recipe/canopic_monke //creates the crafting recipe + name = "Monke Canopic jar" + result = /obj/item/storage/box/canopic_monke + time = 2 SECONDS + tool_paths = FALSE + reqs = list( + /obj/item/stack/sheet/sandblock = 1, + /obj/item/stack/sheet/mineral/wood = 1, + /obj/item/stack/sheet/leather = 1, + /obj/item/stack/sheet/mineral/gold = 1, + /obj/item/stack/sheet/mineral/silver = 1) + category = CAT_CONTAINERS + + + +//hawk canopic sprited by twiggy, coded by veth +/obj/item/storage/box/canopic_hawk/Initialize(mapload) + . = ..() + atom_storage.max_slots = 1 + atom_storage.set_holdable(list( + /obj/item/organ/internal/heart, + /obj/item/organ/internal/lungs, + /obj/item/organ/internal/liver, + /obj/item/organ/internal/appendix, + /obj/item/organ/internal/tongue, + /obj/item/organ/internal/eyes, + /obj/item/organ/internal/stomach, + /obj/item/organ/internal/ears, + )) + atom_storage.exception_hold = list( + /obj/item/organ/internal/heart, + /obj/item/organ/internal/lungs, + /obj/item/organ/internal/liver, + /obj/item/organ/internal/appendix, + /obj/item/organ/internal/tongue, + /obj/item/organ/internal/eyes, + /obj/item/organ/internal/stomach, + /obj/item/organ/internal/ears, + ) + atom_storage.can_hold = typecacheof(/obj/item/organ/internal) + atom_storage.can_hold_description = "This jar can hold organs!" + atom_storage.max_total_storage = WEIGHT_CLASS_TINY*10 + update_appearance() + +/obj/item/storage/box/canopic_hawk //creates the object + name = "Hawk Canopic jar" + desc = "An ornate stone canopic, inscribed with ancient hieroglyphs. These used to be used to store organs." + w_class = WEIGHT_CLASS_TINY + icon = 'monkestation/code/modules/veth_misc_items/canopics/icons/canopic.dmi' + icon_state = "canopic_hawk" + inhand_icon_state = "syringe_kit" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + resistance_flags = FIRE_PROOF + drop_sound = 'monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_drop.ogg' + pickup_sound = 'monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_pickup.ogg' + foldable_result = FALSE + illustration = FALSE +/datum/crafting_recipe/canopic_hawk //creates the crafting recipe + name = "hawk canopic jar" + result = /obj/item/storage/box/canopic_hawk + time = 2 SECONDS + tool_paths = FALSE + reqs = list( + /obj/item/stack/sheet/sandblock = 1, + /obj/item/stack/sheet/mineral/wood = 1, + /obj/item/stack/sheet/leather = 1, + /obj/item/stack/sheet/mineral/gold = 1, + /obj/item/stack/sheet/mineral/silver = 1) + category = CAT_CONTAINERS diff --git a/monkestation/code/modules/veth_misc_items/canopics/icons/canopic.dmi b/monkestation/code/modules/veth_misc_items/canopics/icons/canopic.dmi new file mode 100644 index 000000000000..8e56c6be4ed4 Binary files /dev/null and b/monkestation/code/modules/veth_misc_items/canopics/icons/canopic.dmi differ diff --git a/monkestation/code/modules/veth_misc_items/canopics/icons/canopic_box.dmi b/monkestation/code/modules/veth_misc_items/canopics/icons/canopic_box.dmi new file mode 100644 index 000000000000..4f1944503bfa Binary files /dev/null and b/monkestation/code/modules/veth_misc_items/canopics/icons/canopic_box.dmi differ diff --git a/monkestation/code/modules/veth_misc_items/canopics/readme.md b/monkestation/code/modules/veth_misc_items/canopics/readme.md new file mode 100644 index 000000000000..124565d5da76 --- /dev/null +++ b/monkestation/code/modules/veth_misc_items/canopics/readme.md @@ -0,0 +1,25 @@ +## Title: + + +MODULE ID: CANOPICS + +### Description: +This PR adds canopics requested by Malphy to the game. +https://discord.com/channels/748354466335686736/1170798993308139571 + +### Master file additions + +- N/A + + +### Included files that are not contained in this module: + +- N/A + + +### Credits: + + + +Made by Veth +Sprited by Twiggy diff --git a/monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_drop.ogg b/monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_drop.ogg new file mode 100644 index 000000000000..70d2abcc774a Binary files /dev/null and b/monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_drop.ogg differ diff --git a/monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_pickup.ogg b/monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_pickup.ogg new file mode 100644 index 000000000000..a52eec4cf681 Binary files /dev/null and b/monkestation/code/modules/veth_misc_items/canopics/sounds/canopic_pickup.ogg differ diff --git a/monkestation/code/modules/virology/disease/plague_rat/event.dm b/monkestation/code/modules/virology/disease/plague_rat/event.dm index cd8558397817..9ed00b05632a 100644 --- a/monkestation/code/modules/virology/disease/plague_rat/event.dm +++ b/monkestation/code/modules/virology/disease/plague_rat/event.dm @@ -1,11 +1,11 @@ /datum/round_event_control/plague_rat name = "Spawn Plague Rats" typepath = /datum/round_event/ghost_role/plague_rat - weight = 7 + weight = 1 max_occurrences = 1 track = EVENT_TRACK_MAJOR min_players = 30 //monke edit: 20 to 30 - earliest_start = 30 MINUTES //monke edit: 20 to 60 + earliest_start = 55 MINUTES //monke edit: 20 to 60 //dynamic_should_hijack = TRUE category = EVENT_CATEGORY_ENTITIES description = "Spawns a horde of plague rats." @@ -17,18 +17,12 @@ role_name = "Plague Rat" /datum/round_event/ghost_role/plague_rat/spawn_role() - var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_PLAGUERAT, role = ROLE_PLAGUERAT, pic_source = /mob/living/basic/mouse/plague) + var/list/candidates = SSpolling.poll_ghost_candidates(check_jobban = ROLE_PLAGUERAT, role = ROLE_PLAGUERAT, alert_pic = /mob/living/basic/mouse/plague, amount_to_pick = 4) if(!length(candidates)) return NOT_ENOUGH_PLAYERS - for(var/i = 1 to 4) - - var/mob/dead/selected = pick_n_take(candidates) - if(!selected) - break - + for(var/mob/dead/selected in candidates) var/key = selected.key - var/mob/living/basic/mouse/plague/dragon = new dragon.key = key dragon.mind.special_role = ROLE_PLAGUERAT diff --git a/monkestation/code/modules/virology/disease/plague_rat/plague_rat.dm b/monkestation/code/modules/virology/disease/plague_rat/plague_rat.dm index 4375985d7f24..74f945c91f25 100644 --- a/monkestation/code/modules/virology/disease/plague_rat/plague_rat.dm +++ b/monkestation/code/modules/virology/disease/plague_rat/plague_rat.dm @@ -6,9 +6,17 @@ icon_living = "mouse_plague" icon_dead = "mouse_plague_dead" + maxHealth = 30 + health = 30 + melee_damage_lower = 4 melee_damage_upper = 7 chooses_bodycolor = FALSE + pass_flags = PASSTABLE|PASSGRILLE|PASSMOB|PASSDOORS + +/mob/living/basic/mouse/plague/Initialize(mapload, tame, new_body_color) + . = ..() + add_movespeed_modifier(/datum/movespeed_modifier/plague_rat) /mob/living/basic/mouse/plague/attack_hand(mob/living/carbon/human/user, list/modifiers) @@ -29,3 +37,6 @@ /mob/living/basic/mouse/attackby(obj/item/attacking_item, mob/living/user, params) . = ..() attacking_item.disease_contact(src, BODY_ZONE_CHEST) + +/datum/movespeed_modifier/plague_rat + multiplicative_slowdown = 0.5 diff --git a/monkestation/code/modules/virology/disease/symptom_cracker/cracker_puzzle.dm b/monkestation/code/modules/virology/disease/symptom_cracker/cracker_puzzle.dm index e3b529a21025..0c62231805fe 100644 --- a/monkestation/code/modules/virology/disease/symptom_cracker/cracker_puzzle.dm +++ b/monkestation/code/modules/virology/disease/symptom_cracker/cracker_puzzle.dm @@ -17,6 +17,8 @@ var/datum/parent + var/list/plotted_points = list() + /datum/cracker_puzzle/New(grid_size = 5, difficulty = 1, datum/parent) src.grid_size = grid_size src.difficulty = difficulty @@ -25,7 +27,7 @@ //generate_combination_strings() generate_sequence() -/datum/cracker_puzzle/Destroy(force, ...) +/datum/cracker_puzzle/Destroy(force) . = ..() parent = null @@ -47,37 +49,23 @@ var/sequence_length = 4 + difficulty - var/last_sequence_spot = null - var/last_vertical_sequence_spot = null + var/last_sequence_spot = rand(1, grid_size) + var/last_vertical_sequence_spot = rand(1, grid_size) var/vertical = FALSE for(var/i = 1 to sequence_length) if(vertical) - var/vertical_spot = rand(1, grid_size) - var/list/horizontal_cut = grid[vertical_spot] - sequence += horizontal_cut[last_vertical_sequence_spot] - var/horizontal_choice = rand(1, grid_size) - last_sequence_spot = horizontal_choice - - vertical = FALSE - + var/vertical_spot = rand(1, grid_size) // Random row (y-coordinate) + var/list/horizontal_cut_vert = grid[vertical_spot] // Get the row corresponding to vertical_spot + sequence += horizontal_cut_vert[last_sequence_spot] // Use the last x-coordinate to select the letter + last_vertical_sequence_spot = vertical_spot // Update the y-coordinate + plotted_points += "[last_sequence_spot], [last_vertical_sequence_spot]" // Log the coordinate pair + vertical = FALSE // Switch to horizontal for the next iteration else - if(!last_sequence_spot) - ///grabs the horizontal slice of the grid - var/horizontal_spot = rand(1, grid_size) - var/list/horizontal_cut = grid[horizontal_spot] - - last_sequence_spot = horizontal_spot //sets the last slice position - - var/vertical_spot = rand(1, grid_size)// we randomize the selection inside the slice - sequence += horizontal_cut[vertical_spot] - last_vertical_sequence_spot = vertical_spot //set the last vertical spot to this - else - var/list/choices = grid[last_sequence_spot] - var/grid_selection = rand(1, grid_size) - last_vertical_sequence_spot = grid_selection - sequence += choices[grid_selection] - - vertical = TRUE + var/horizontal_spot = rand(1, grid_size) // Random column (x-coordinate) + sequence += grid[last_vertical_sequence_spot][horizontal_spot] // Access the column in the current row + last_sequence_spot = horizontal_spot // Update the x-coordinate + plotted_points += "[last_sequence_spot], [last_vertical_sequence_spot]" // Log the coordinate pair + vertical = TRUE // Switch to vertical for the next iteration /datum/cracker_puzzle/proc/check_press(x, y) diff --git a/monkestation/code/modules/virology/disease/symptom_cracker/symptom_component.dm b/monkestation/code/modules/virology/disease/symptom_cracker/symptom_component.dm index 98d6078420f8..0bbefed43d19 100644 --- a/monkestation/code/modules/virology/disease/symptom_cracker/symptom_component.dm +++ b/monkestation/code/modules/virology/disease/symptom_cracker/symptom_component.dm @@ -36,7 +36,7 @@ . = ..() UnregisterSignal(parent, COMSIG_ATOM_EXTRAPOLATOR_ACT) -/datum/component/symptom_genes/Destroy(force, silent) +/datum/component/symptom_genes/Destroy(force) . = ..() current_user = null current_extrapolator = null diff --git a/monkestation/code/modules/virology/disease/symptom_varients/base.dm b/monkestation/code/modules/virology/disease/symptom_varients/base.dm index 88e3615cef15..216255679326 100644 --- a/monkestation/code/modules/virology/disease/symptom_varients/base.dm +++ b/monkestation/code/modules/virology/disease/symptom_varients/base.dm @@ -46,5 +46,4 @@ COOLDOWN_START(src, host_cooldown, cooldown_time) /datum/symptom_varient/proc/Copy(datum/symptom/new_symp) - var/datum/symptom_varient/new_varient = new (new_symp) - return new_varient + return new type(new_symp) diff --git a/monkestation/code/modules/virology/disease/symptom_varients/bluespace.dm b/monkestation/code/modules/virology/disease/symptom_varients/bluespace.dm index a1ff3a5f2c2a..0e53035e5166 100644 --- a/monkestation/code/modules/virology/disease/symptom_varients/bluespace.dm +++ b/monkestation/code/modules/virology/disease/symptom_varients/bluespace.dm @@ -16,7 +16,7 @@ GLOBAL_LIST_INIT(bluespace_varient_list, list()) last_bluespace_id++ bluespace_id = last_bluespace_id -/datum/symptom_varient/bluespace/Destroy(force, ...) +/datum/symptom_varient/bluespace/Destroy(force) . = ..() GLOB.bluespace_varient_list -= src diff --git a/monkestation/code/modules/virology/disease/symptom_varients/recursive.dm b/monkestation/code/modules/virology/disease/symptom_varients/recursive.dm index ae869a508212..0d50e3eea259 100644 --- a/monkestation/code/modules/virology/disease/symptom_varients/recursive.dm +++ b/monkestation/code/modules/virology/disease/symptom_varients/recursive.dm @@ -4,7 +4,7 @@ cooldown_time = 15 SECONDS -/datum/symptom_varient/recursive/Destroy(force, ...) +/datum/symptom_varient/recursive/Destroy(force) . = ..() UnregisterSignal(host_symptom, COMSIG_SYMPTOM_TRIGGER) diff --git a/monkestation/code/modules/virology/disease/symptom_varients/reflexive.dm b/monkestation/code/modules/virology/disease/symptom_varients/reflexive.dm index e9f7efc60e86..61bd02aa653c 100644 --- a/monkestation/code/modules/virology/disease/symptom_varients/reflexive.dm +++ b/monkestation/code/modules/virology/disease/symptom_varients/reflexive.dm @@ -6,7 +6,7 @@ var/mob/living/host_mob -/datum/symptom_varient/reflexive/Destroy(force, ...) +/datum/symptom_varient/reflexive/Destroy(force) . = ..() if(host_mob) UnregisterSignal(host_mob, COMSIG_CARBON_TAKE_BRUTE_DAMAGE) diff --git a/monkestation/code/modules/virology/disease/symptom_varients/routine.dm b/monkestation/code/modules/virology/disease/symptom_varients/routine.dm index f82033fca351..820dbb62b7e4 100644 --- a/monkestation/code/modules/virology/disease/symptom_varients/routine.dm +++ b/monkestation/code/modules/virology/disease/symptom_varients/routine.dm @@ -5,7 +5,7 @@ cooldown_time = 5 SECONDS COOLDOWN_DECLARE(next_process) -/datum/symptom_varient/routine/Destroy(force, ...) +/datum/symptom_varient/routine/Destroy(force) . = ..() STOP_PROCESSING(SSobj, src) diff --git a/monkestation/code/modules/virology/disease/symptom_varients/strengthen.dm b/monkestation/code/modules/virology/disease/symptom_varients/strengthen.dm index 3eaae2fc5c15..c66032a9d49d 100644 --- a/monkestation/code/modules/virology/disease/symptom_varients/strengthen.dm +++ b/monkestation/code/modules/virology/disease/symptom_varients/strengthen.dm @@ -4,7 +4,7 @@ cooldown_time = 15 SECONDS -/datum/symptom_varient/strength/Destroy(force, ...) +/datum/symptom_varient/strength/Destroy(force) . = ..() UnregisterSignal(host_symptom, COMSIG_SYMPTOM_TRIGGER) diff --git a/monkestation/code/modules/virology/disease/symtoms/restricted/stage1.dm b/monkestation/code/modules/virology/disease/symtoms/restricted/stage1.dm index a9a7c836de2f..ef13a61fc797 100644 --- a/monkestation/code/modules/virology/disease/symtoms/restricted/stage1.dm +++ b/monkestation/code/modules/virology/disease/symtoms/restricted/stage1.dm @@ -54,20 +54,20 @@ /datum/symptom/transformation/proc/replace_banned_player(mob/living/new_mob, mob/living/affected_mob) // This can run well after the mob has been transferred, so need a handle on the new mob to kill it if needed. set waitfor = FALSE - var/list/mob/dead/observer/candidates = SSpolling.poll_ghost_candidates_for_mob("Do you want to play as [affected_mob.real_name]?", check_jobban = bantype, role = bantype, poll_time = 5 SECONDS, target_mob = affected_mob, pic_source = affected_mob, role_name_text = "transformation victim") - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) - to_chat(affected_mob, span_userdanger("Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!")) - message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(affected_mob)]) to replace a jobbanned player.") - affected_mob.ghostize(FALSE) - affected_mob.key = C.key - else + var/mob/dead/observer/chosen_one = SSpolling.poll_ghosts_for_target("Do you want to play as [affected_mob.real_name]?", check_jobban = bantype, role = bantype, poll_time = 5 SECONDS, checked_target = affected_mob, alert_pic = affected_mob, role_name_text = "transformation victim") + if(isnull(chosen_one)) to_chat(new_mob, span_userdanger("Your mob has been claimed by death! Appeal your job ban if you want to avoid this in the future!")) new_mob.investigate_log("has been killed because there was no one to replace them as a job-banned player.", INVESTIGATE_DEATHS) new_mob.death() if (!QDELETED(new_mob)) new_mob.ghostize(can_reenter_corpse = FALSE) new_mob.key = null + return + to_chat(affected_mob, span_userdanger("Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!")) + message_admins("[key_name_admin(chosen_one)] has taken control of ([key_name_admin(affected_mob)]) to replace a jobbanned player.") + affected_mob.ghostize(FALSE) + affected_mob.key = chosen_one.key + /datum/symptom/transformation/robot name = "Robotic Transformation" diff --git a/monkestation/code/modules/virology/disease/symtoms/restricted/stage3.dm b/monkestation/code/modules/virology/disease/symtoms/restricted/stage3.dm index 1fd8e9e54005..ebdd77b0cc58 100644 --- a/monkestation/code/modules/virology/disease/symtoms/restricted/stage3.dm +++ b/monkestation/code/modules/virology/disease/symtoms/restricted/stage3.dm @@ -45,7 +45,7 @@ if(prob(1)) mob.emote("drool") if(prob(1.5)) - mob.adjustCloneLoss(1, FALSE) + mob.adjustToxLoss(1, FALSE) if(prob(1)) to_chat(mob, span_danger("Your skin feels strange.")) @@ -56,7 +56,7 @@ mob.emote("drool") if(prob(2.5)) mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1, 170) - mob.adjustCloneLoss(2, FALSE) + mob.adjustToxLoss(2, FALSE) if(prob(7.5)) mob.adjust_stutter(6 SECONDS) if(5) @@ -67,5 +67,5 @@ if(prob(2.5)) to_chat(mob, span_danger("Your skin starts degrading!")) if(prob(5)) - mob.adjustCloneLoss(5, FALSE) + mob.adjustToxLoss(5, FALSE) mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2, 170) diff --git a/monkestation/code/modules/virology/disease/symtoms/restricted/stage4.dm b/monkestation/code/modules/virology/disease/symtoms/restricted/stage4.dm index f4578364a10f..2136b068d855 100644 --- a/monkestation/code/modules/virology/disease/symtoms/restricted/stage4.dm +++ b/monkestation/code/modules/virology/disease/symtoms/restricted/stage4.dm @@ -3,7 +3,10 @@ desc = "If left untreated the subject will die!" restricted = TRUE max_multiplier = 5 + chance = 20 + max_chance = 20 var/sound = FALSE + badness = EFFECT_DANGER_DEADLY /datum/symptom/heart_failure/activate(mob/living/carbon/affected_mob) . = ..() @@ -17,25 +20,25 @@ switch(round(multiplier)) if(1 to 2) - if(prob(1)) + if(prob(5)) to_chat(affected_mob, span_warning("You feel [pick("discomfort", "pressure", "a burning sensation", "pain")] in your chest.")) - if(prob(1)) + if(prob(5)) to_chat(affected_mob, span_warning("You feel dizzy.")) affected_mob.adjust_confusion(6 SECONDS) - if(prob(1.5)) + if(prob(7.5)) to_chat(affected_mob, span_warning("You feel [pick("full", "nauseated", "sweaty", "weak", "tired", "short of breath", "uneasy")].")) if(3 to 4) if(!sound) affected_mob.playsound_local(affected_mob, 'sound/health/slowbeat.ogg', 40, FALSE, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE) sound = TRUE - if(prob(1.5)) + if(prob(7.5)) to_chat(affected_mob, span_danger("You feel a sharp pain in your chest!")) - if(prob(25)) + if(prob(30)) affected_mob.vomit(95) affected_mob.emote("cough") affected_mob.Paralyze(40) affected_mob.losebreath += 4 - if(prob(1.5)) + if(prob(7.5)) to_chat(affected_mob, span_danger("You feel very weak and dizzy...")) affected_mob.adjust_confusion(8 SECONDS) affected_mob.stamina.adjust(-40, FALSE) @@ -50,6 +53,7 @@ affected_mob.set_heartattack(TRUE) affected_mob.reagents.add_reagent(/datum/reagent/medicine/c2/penthrite, 3) // To give the victim a final chance to shock their heart before losing consciousness return FALSE + multiplier_tweak(0.1) /datum/symptom/catapult_sneeze name = "Sneezing?" diff --git a/monkestation/code/modules/virology/disease/symtoms/stage1.dm b/monkestation/code/modules/virology/disease/symtoms/stage1.dm index 9cf4026f9492..570c72e4c377 100644 --- a/monkestation/code/modules/virology/disease/symtoms/stage1.dm +++ b/monkestation/code/modules/virology/disease/symtoms/stage1.dm @@ -167,7 +167,7 @@ /datum/symptom/wendigo_warning/activate(mob/living/mob) to_chat(mob, span_warning("[pick(host_messages)]")) - mob.adjust_nutrition(-25) + mob.adjust_nutrition(-10) /datum/symptom/cult_hallucination @@ -418,12 +418,12 @@ /datum/symptom/plasma_heal/first_activate(mob/living/carbon/mob, datum/disease/advanced/disease) . = ..() - ADD_TRAIT(mob, TRAIT_PLASMA_LOVER_METABOLISM, DISEASE_TRAIT) + ADD_TRAIT(mob, TRAIT_PLASMA_LOVER_METABOLISM, type) to_chat(mob, span_notice("You suddenly love plasma.")) /datum/symptom/plasma_heal/side_effect(mob/living/mob) . = ..() - REMOVE_TRAIT(mob, TRAIT_PLASMA_LOVER_METABOLISM, DISEASE_TRAIT) + REMOVE_TRAIT(mob, TRAIT_PLASMA_LOVER_METABOLISM, type) /datum/symptom/plasma_heal/activate(mob/living/carbon/mob, datum/disease/advanced/disease) . = ..() diff --git a/monkestation/code/modules/virology/disease/symtoms/stage2.dm b/monkestation/code/modules/virology/disease/symtoms/stage2.dm index c64c9115bf84..e00750ca7466 100644 --- a/monkestation/code/modules/virology/disease/symtoms/stage2.dm +++ b/monkestation/code/modules/virology/disease/symtoms/stage2.dm @@ -74,17 +74,6 @@ strength -= 30 i++ -/datum/symptom/hungry - name = "Appetiser Effect" - desc = "Starves the infected." - stage = 2 - badness = EFFECT_DANGER_ANNOYING - multiplier = 10 - max_multiplier = 20 - -/datum/symptom/hungry/activate(mob/living/mob) - mob.nutrition = max(0, mob.nutrition - 20*multiplier) - /datum/symptom/fridge name = "Refridgerator Syndrome" desc = "Causes the infected to shiver at random." @@ -379,16 +368,16 @@ /datum/symptom/famine/activate(mob/living/mob) if(ishuman(mob)) var/mob/living/carbon/human/victim = mob - if(victim.dna) - if(ispodperson(victim)) //Plantmen take a LOT of damage - victim.adjustCloneLoss(5 * multiplier) + if(ispodperson(victim)) //Plantmen take a LOT of damage + victim.adjustToxLoss(5 * multiplier) - for(var/obj/item/food/grown/crop in range(2*multiplier,mob)) - crop.visible_message("\The [crop] rots at an alarming rate!") + for(var/obj/item/food/grown/crop in range(2 * multiplier,mob)) + crop.visible_message(span_warning("\The [crop] rots at an alarming rate!")) new /obj/item/food/badrecipe(get_turf(crop)) qdel(crop) - if(prob(30/multiplier)) + if(prob(30 / multiplier)) break + /datum/symptom/cyborg_vomit name = "Oleum Syndrome" desc = "Causes the infected to internally synthesize oil and other inorganic material." @@ -396,12 +385,8 @@ badness = EFFECT_DANGER_ANNOYING /datum/symptom/cyborg_vomit/activate(mob/living/mob) - if((HAS_TRAIT(mob, TRAIT_NOHUNGER))) - return - - if(!(mob.has_mouth())) + if(HAS_TRAIT(mob, TRAIT_NOHUNGER) || !mob.has_mouth()) return - if(prob(90)) //90% chance for just oil mob.visible_message(span_danger("[mob.name] vomits up some oil!")) mob.adjustToxLoss(-3) @@ -522,11 +507,11 @@ max_count = 1 /datum/symptom/disfiguration/activate(mob/living/carbon/mob) - ADD_TRAIT(mob, TRAIT_DISFIGURED, DISEASE_TRAIT) + ADD_TRAIT(mob, TRAIT_DISFIGURED, type) mob.visible_message(span_warning("[mob]'s face appears to cave in!"), span_notice("You feel your face crumple and cave in!")) /datum/symptom/disfiguration/deactivate(mob/living/carbon/mob) - REMOVE_TRAIT(mob, TRAIT_DISFIGURED, DISEASE_TRAIT) + REMOVE_TRAIT(mob, TRAIT_DISFIGURED, type) /datum/symptom/blindness name = "Hyphema" diff --git a/monkestation/code/modules/virology/disease/symtoms/stage3.dm b/monkestation/code/modules/virology/disease/symtoms/stage3.dm index 294428b1d34d..afe0808b87c6 100644 --- a/monkestation/code/modules/virology/disease/symtoms/stage3.dm +++ b/monkestation/code/modules/virology/disease/symtoms/stage3.dm @@ -65,7 +65,7 @@ GLOBAL_LIST_INIT(disease_hivemind_users, list()) var/mob/living/carbon/human/H = mob H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 50) else - mob.setCloneLoss(50) + mob.setToxLoss(50) /datum/symptom/hallucinations name = "Hallucinational Syndrome" @@ -106,11 +106,12 @@ GLOBAL_LIST_INIT(disease_hivemind_users, list()) stage = 3 badness = EFFECT_DANGER_HINDRANCE max_multiplier = 5 - max_chance = 15 + symptom_delay_min = 1 + symptom_delay_max = 5 /datum/symptom/confusion/activate(mob/living/carbon/mob) - to_chat(mob, span_notice("You have trouble telling right and left apart all of a sudden.")) - mob.adjust_confusion(1 SECONDS * multiplier) + to_chat(mob, span_warning("You have trouble telling right and left apart all of a sudden!")) + mob.adjust_confusion_up_to(1 SECONDS * multiplier, 20 SECONDS) /datum/symptom/groan name = "Groaning Syndrome" @@ -451,8 +452,12 @@ GLOBAL_LIST_INIT(disease_hivemind_users, list()) desc = "Causes the infected to oversynthesize stem cells engineered towards organ generation, causing damage to the host's organs in the process. Said generated organs are expelled from the body upon completion." stage = 3 badness = EFFECT_DANGER_HARMFUL + COOLDOWN_DECLARE(organ_cooldown) /datum/symptom/teratoma/activate(mob/living/carbon/mob) + if(!COOLDOWN_FINISHED(src, organ_cooldown)) + return + COOLDOWN_START(src, organ_cooldown, 2 MINUTES) var/fail_counter = 0 var/not_passed = TRUE var/obj/item/organ/spawned_organ @@ -720,34 +725,29 @@ GLOBAL_LIST_INIT(disease_hivemind_users, list()) Heal(mob, multiplier) else multiplier = min(multiplier + 0.1, max_multiplier) - return /datum/symptom/darkness/proc/CanHeal(mob/living/carbon/mob) var/light_amount = 0 if(isturf(mob.loc)) //else, there's considered to be no light - var/turf/T = mob.loc - light_amount = min(1,T.get_lumcount()) - 0.5 + var/turf/mob_turf = mob.loc + light_amount = min(1, mob_turf.get_lumcount()) - 0.5 if(light_amount < SHADOW_SPECIES_LIGHT_THRESHOLD) return power -/datum/symptom/darkness/proc/Heal(mob/living/carbon/M, actual_power) +/datum/symptom/darkness/proc/Heal(mob/living/carbon/victim, actual_power) var/heal_amt = 2 * actual_power - - var/list/parts = M.get_damaged_bodyparts(1,1,BODYTYPE_ORGANIC) - - if(!parts.len) + var/list/parts = victim.get_damaged_bodyparts(brute = TRUE, burn = TRUE, required_bodytype = BODYTYPE_ORGANIC) + if(!length(parts)) return - if(prob(5)) - to_chat(M, span_notice("The darkness soothes and mends your wounds.")) - - for(var/obj/item/bodypart/L in parts) - if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len * 0.5, BODYTYPE_ORGANIC)) //more effective on brute - M.update_damage_overlays() - return 1 - -/datum/symptom/darkness/proc/passive_message_condition(mob/living/M) - if(M.getBruteLoss() || M.getFireLoss()) + to_chat(victim, span_notice("The darkness soothes and mends your wounds.")) + var/brute_heal = heal_amt / length(parts) + var/burn_heal = brute_heal * 0.5 + victim.heal_overall_damage(brute = brute_heal, burn = burn_heal, required_bodytype = BODYTYPE_ORGANIC) + return TRUE + +/datum/symptom/darkness/proc/passive_message_condition(mob/living/victim) + if(victim.getBruteLoss() || victim.getFireLoss()) return TRUE return FALSE @@ -766,7 +766,7 @@ GLOBAL_LIST_INIT(disease_hivemind_users, list()) . = ..() if(!added_to_mob && max_multiplier >= 12) added_to_mob = TRUE - ADD_TRAIT(mob, TRAIT_NOCRITDAMAGE, DISEASE_TRAIT) + ADD_TRAIT(mob, TRAIT_NOCRITDAMAGE, type) var/effectiveness = CanHeal(mob) if(!effectiveness) @@ -781,54 +781,47 @@ GLOBAL_LIST_INIT(disease_hivemind_users, list()) uncoma() if(!added_to_mob) return - REMOVE_TRAIT(mob, TRAIT_NOCRITDAMAGE, DISEASE_TRAIT) + REMOVE_TRAIT(mob, TRAIT_NOCRITDAMAGE, type) -/datum/symptom/coma/proc/CanHeal(mob/living/M) - if(HAS_TRAIT(M, TRAIT_DEATHCOMA)) +/datum/symptom/coma/proc/CanHeal(mob/living/victim) + if(HAS_TRAIT(victim, TRAIT_DEATHCOMA)) return multiplier - if(M.IsSleeping()) + if(victim.IsSleeping()) return multiplier * 0.25 //Voluntary unconsciousness yields lower healing. - switch(M.stat) + switch(victim.stat) if(UNCONSCIOUS, HARD_CRIT) return multiplier * 0.9 if(SOFT_CRIT) return multiplier * 0.5 - if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma) - to_chat(M, span_warning("You feel yourself slip into a regenerative coma...")) + if((victim.getBruteLoss() + victim.getFireLoss()) >= 70 && !active_coma) + to_chat(victim, span_warning("You feel yourself slip into a regenerative coma...")) active_coma = TRUE - addtimer(CALLBACK(src, PROC_REF(coma), M), 60) + addtimer(CALLBACK(src, PROC_REF(coma), victim), 6 SECONDS) return FALSE -/datum/symptom/coma/proc/coma(mob/living/M) - if(QDELETED(M) || M.stat == DEAD) +/datum/symptom/coma/proc/coma(mob/living/victim) + if(QDELETED(victim) || victim.stat == DEAD) return - M.fakedeath("regenerative_coma", TRUE) - addtimer(CALLBACK(src, PROC_REF(uncoma), M), 300) + victim.fakedeath("regenerative_coma", TRUE) + addtimer(CALLBACK(src, PROC_REF(uncoma), victim), 30 SECONDS) -/datum/symptom/coma/proc/uncoma(mob/living/M) - if(QDELETED(M) || !active_coma) +/datum/symptom/coma/proc/uncoma(mob/living/victim) + if(QDELETED(victim) || !active_coma) return active_coma = FALSE - M.cure_fakedeath("regenerative_coma") + victim.cure_fakedeath("regenerative_coma") -/datum/symptom/coma/proc/Heal(mob/living/carbon/M, actual_power) - var/heal_amt = 4 * actual_power - - var/list/parts = M.get_damaged_bodyparts(1,1) - - if(!parts.len) +/datum/symptom/coma/proc/Heal(mob/living/carbon/victim, actual_power) + var/list/parts = victim.get_damaged_bodyparts(brute = TRUE, burn = TRUE) + if(!length(parts)) return - - for(var/obj/item/bodypart/L in parts) - if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len, BODYTYPE_ORGANIC)) - M.update_damage_overlays() - - if(active_coma && M.getBruteLoss() + M.getFireLoss() == 0) - uncoma(M) - - return 1 - -/datum/symptom/coma/proc/passive_message_condition(mob/living/M) - if((M.getBruteLoss() + M.getFireLoss()) > 30) + var/heal_amt = (4 * actual_power) / length(parts) + victim.heal_overall_damage(brute = heal_amt, burn = heal_amt) + if(active_coma && (victim.getBruteLoss() + victim.getFireLoss()) == 0) + uncoma(victim) + return TRUE + +/datum/symptom/coma/proc/passive_message_condition(mob/living/victim) + if((victim.getBruteLoss() + victim.getFireLoss()) > 30) return TRUE return FALSE diff --git a/monkestation/code/modules/virology/disease/symtoms/stage4.dm b/monkestation/code/modules/virology/disease/symtoms/stage4.dm index 1679cf6c530d..94354c3a3425 100644 --- a/monkestation/code/modules/virology/disease/symtoms/stage4.dm +++ b/monkestation/code/modules/virology/disease/symtoms/stage4.dm @@ -7,13 +7,11 @@ chance = 10 max_chance = 25 -/datum/symptom/spaceadapt/activate(mob/living/carbon/mob) - mob.dna.add_mutation(/datum/mutation/human/pressure_adaptation) - mob.dna.add_mutation(/datum/mutation/human/temperature_adaptation) +/datum/symptom/spaceadapt/activate(mob/living/mob) + mob.add_traits(list(TRAIT_RESISTCOLD, TRAIT_RESISTLOWPRESSURE), type) /datum/symptom/spaceadapt/deactivate(mob/living/carbon/mob) - mob.dna.remove_mutation(/datum/mutation/human/pressure_adaptation) - mob.dna.remove_mutation(/datum/mutation/human/temperature_adaptation) + mob.remove_traits(list(TRAIT_RESISTCOLD, TRAIT_RESISTLOWPRESSURE), type) /datum/symptom/minttoxin name = "Creosote Syndrome" @@ -22,7 +20,7 @@ badness = EFFECT_DANGER_HARMFUL /datum/symptom/minttoxin/activate(mob/living/carbon/mob) - if(istype(mob) && mob.reagents.get_reagent_amount(/datum/reagent/consumable/mintextract) < 5) + if(istype(mob) && mob.reagents?.get_reagent_amount(/datum/reagent/consumable/mintextract) < 5) to_chat(mob, span_notice("You feel a minty freshness")) mob.reagents.add_reagent(/datum/reagent/consumable/mintextract, 5) @@ -46,11 +44,10 @@ // Just absolutely murder me man ears.apply_organ_damage(ears.maxHealth) mob.emote("scream") - ADD_TRAIT(mob, TRAIT_DEAF, DISEASE_TRAIT) + ADD_TRAIT(mob, TRAIT_DEAF, type) /datum/symptom/deaf/deactivate(mob/living/carbon/mob) - REMOVE_TRAIT(mob, TRAIT_DEAF, DISEASE_TRAIT) - + REMOVE_TRAIT(mob, TRAIT_DEAF, type) /datum/symptom/killertoxins name = "Toxification Syndrome" @@ -61,8 +58,7 @@ max_multiplier = 5 /datum/symptom/killertoxins/activate(mob/living/carbon/mob) - mob.adjustToxLoss(5*multiplier) - + mob.adjustToxLoss(5 * multiplier) /datum/symptom/dna name = "Reverse Pattern Syndrome" @@ -73,9 +69,8 @@ /datum/symptom/dna/activate(mob/living/carbon/mob) mob.bodytemperature = max(mob.bodytemperature, 350) scramble_dna(mob, TRUE, TRUE, TRUE, rand(15,45)) - if(mob.cloneloss <= 50) - mob.adjustCloneLoss(10) - + if(mob.toxloss <= 50) + mob.adjustToxLoss(10) /datum/symptom/immortal name = "Longevity Syndrome" @@ -85,29 +80,28 @@ var/total_healed = 0 /datum/symptom/immortal/activate(mob/living/carbon/mob) - if(istype(mob, /mob/living/carbon/human)) + if(ishuman(mob)) for(var/datum/wound/wound as anything in mob.all_wounds) to_chat(mob, span_notice("You feel the [wound] heal itself.")) wound.remove_wound() break - var/heal_amt = 5*multiplier + var/heal_amt = 5 * multiplier var/current_health = mob.getBruteLoss() if(current_health >= heal_amt) total_healed += heal_amt * 0.2 else total_healed += (heal_amt - current_health) * 0.2 - mob.adjustBruteLoss(-heal_amt) - mob.adjustFireLoss(-heal_amt) - mob.adjustCloneLoss(-heal_amt) + mob.heal_overall_damage(brute = heal_amt, burn = heal_amt) + mob.adjustToxLoss(-heal_amt) /datum/symptom/immortal/deactivate(mob/living/carbon/mob) - if(istype(mob, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = mob - to_chat(H, span_warning("You suddenly feel hurt and old...")) - H.age += 4 * multiplier * total_healed - mob.adjustBruteLoss(total_healed) - mob.adjustFireLoss(total_healed) + if(ishuman(mob)) + var/mob/living/carbon/human/person = mob + to_chat(person, span_warning("You suddenly feel hurt and old...")) + person.age += 4 * multiplier * total_healed + if(total_healed > 0) + mob.take_overall_damage(brute = (total_healed / 2), burn = (total_healed / 2)) /datum/symptom/bones name = "Fragile Person Syndrome" @@ -115,17 +109,17 @@ stage = 4 badness = EFFECT_DANGER_HINDRANCE -/datum/symptom/bones/activate(mob/living/carbon/mob) - if(istype(mob, /mob/living/carbon/human)) - var/mob/living/carbon/human/victim = mob - for (var/obj/item/bodypart/part in victim.bodyparts) - part.wound_resistance -= 10 +/datum/symptom/bones/activate(mob/living/carbon/human/victim) + if(!ishuman(victim)) + return + for(var/obj/item/bodypart/part in victim.bodyparts) + part.wound_resistance -= 10 -/datum/symptom/bones/deactivate(mob/living/carbon/mob) - if(istype(mob, /mob/living/carbon/human)) - var/mob/living/carbon/human/victim = mob - for (var/obj/item/bodypart/part in victim.bodyparts) - part.wound_resistance += 10 +/datum/symptom/bones/deactivate(mob/living/carbon/human/victim) + if(!ishuman(victim)) + return + for(var/obj/item/bodypart/part in victim.bodyparts) + part.wound_resistance += 10 /datum/symptom/fizzle name = "Fizzle Effect" @@ -134,7 +128,7 @@ badness = EFFECT_DANGER_FLAVOR /datum/symptom/fizzle/activate(mob/living/carbon/mob) - mob.emote("me",1,pick("sniffles...", "clears their throat...")) + mob.emote("me", 1, pick("sniffles...", "clears their throat...")) /datum/symptom/delightful name = "Delightful Effect" @@ -144,7 +138,7 @@ /datum/symptom/delightful/activate(mob/living/carbon/mob) to_chat(mob, "You feel delightful!") - if (mob.reagents.get_reagent_amount(/datum/reagent/drug/happiness) < 5) + if (mob.reagents?.get_reagent_amount(/datum/reagent/drug/happiness) < 5) mob.reagents.add_reagent(/datum/reagent/drug/happiness, 10) /datum/symptom/spawn @@ -153,16 +147,28 @@ stage = 4 max_multiplier = 7 badness = EFFECT_DANGER_HARMFUL - var/spawn_type= /mob/living/basic/spider/growing/spiderling/guard - var/spawn_name="spiderling" + var/list/spawn_types= list(/mob/living/basic/spider/growing/spiderling/guard = 10) + ///what gets added based on multiplier NOT INCLUSIVE OF PREVIOUS TIERS + var/list/multipler_unlocks = list() /datum/symptom/spawn/activate(mob/living/carbon/mob) + check_unlocks() playsound(mob.loc, 'sound/effects/splat.ogg', 50, 1) + var/atom/spawn_type = pick_weight(spawn_types) + var/spawn_name = initial(spawn_type.name) var/mob/living/spawned_mob = new spawn_type(get_turf(mob)) - mob.emote("me",1,"vomits up a live [spawn_name]!") + mob.emote("me", 1, "vomits up a live [spawn_name]!") if(multiplier < 4) addtimer(CALLBACK(src, PROC_REF(kill_mob), spawned_mob), 1 MINUTES) +/datum/symptom/spawn/proc/check_unlocks() + spawn_types = initial(spawn_types) + var/text_multi = num2text(round(multiplier)) + + if(!(text_multi in multipler_unlocks)) + return + spawn_types += multipler_unlocks[text_multi] + /datum/symptom/spawn/proc/kill_mob(mob/living/basic/mob) mob.visible_message(span_warning("The [mob] falls apart!"), span_warning("You fall apart")) mob.death() @@ -172,8 +178,13 @@ desc = "Converts the infected's stomach to begin producing creatures of the blattid variety." stage = 4 badness = EFFECT_DANGER_HINDRANCE - spawn_type=/mob/living/basic/cockroach - spawn_name="cockroach" + spawn_types = list(/mob/living/basic/cockroach = 10) + multipler_unlocks = list( + "4" = list(/mob/living/basic/cockroach/glockroach = 3), + "5" = list(/mob/living/basic/cockroach/glockroach = 4), + "6" = list(/mob/living/basic/cockroach/glockroach = 5, /mob/living/basic/cockroach/glockroach/mobroach = 3), + "7" = list(/mob/living/basic/cockroach/glockroach = 5, /mob/living/basic/cockroach/glockroach/mobroach = 3, /mob/living/basic/cockroach/hauberoach = 3), + ) /datum/symptom/gregarious name = "Gregarious Impetus" @@ -218,17 +229,18 @@ var/intensity = 1 + (count > 10) + (count > 20) if (prob(20)) to_chat(mob, span_warning("You feel a [intensity < 3 ? "slight" : "powerful"] shock course through your body.")) - for(var/obj/M in orange(3 * intensity,mob)) - if(!M.anchored) - var/iter = rand(1,intensity) - for(var/i=0,i MOVE_FORCE_STRONG) + continue + var/iter = rand(1, intensity) + for(var/i in 0 to iter) + step_towards(thingy, mob) + for(var/mob/living/silicon/robutt in orange(3 * intensity,mob)) + if(isAI(robutt)) continue - var/iter = rand(1,intensity) - for(var/i=0,i 1) + antibodies[antibody] = min(antibodies[antibody], boost) /datum/immune_system/proc/transfer_to(mob/living/carbon/source) - if (!source.immune_system) + if(QDELETED(source)) + CRASH("Attempted to transfer immune system to non-existant mob") + if(QDELETED(source.immune_system)) source.immune_system = new(source) source.immune_system.strength = strength + source.immune_system.boost = boost source.immune_system.overloaded = overloaded source.immune_system.antibodies = antibodies.Copy() +/datum/immune_system/proc/change_boost(new_boost = 1) + var/old_boost = boost + if(new_boost == old_boost) + return + for(var/antibody in antibodies) + antibodies[antibody] /= old_boost + antibodies[antibody] *= new_boost + boost = new_boost + /datum/immune_system/proc/GetImmunity() return list(strength, antibodies.Copy()) @@ -90,11 +110,11 @@ return TRUE /datum/immune_system/proc/ApplyAntipathogenics(threshold) - if (overloaded) + if(overloaded) return - for (var/datum/disease/advanced/disease as anything in host.diseases) - for (var/A in disease.antigen) + for(var/datum/disease/advanced/disease as anything in host.diseases) + for(var/A in disease.antigen) var/tally = 0.5 if (isturf(host.loc) && (host.body_position == LYING_DOWN)) tally += 0.5 @@ -109,6 +129,8 @@ else if(istype(host.loc, /obj/machinery/atmospherics/components/unary/cryo_cell)) tally += 2.5 + tally *= boost + if (antibodies[A] < threshold) antibodies[A] = min(antibodies[A] + tally, threshold)//no overshooting here else @@ -145,6 +167,8 @@ else EMPTY_BLOCK_GUARD + tally *= boost + if (antibodies[A] < 69) antibodies[A] = min(antibodies[A] + tally * strength, 70) else diff --git a/monkestation/code/modules/virology/immune_systems/job_boosting.dm b/monkestation/code/modules/virology/immune_systems/job_boosting.dm new file mode 100644 index 000000000000..45fff3c485f9 --- /dev/null +++ b/monkestation/code/modules/virology/immune_systems/job_boosting.dm @@ -0,0 +1,26 @@ +/datum/job + /// If set, players spawning with this job will start with a boosted immune system. + var/boost_immune_system + +/datum/job/after_spawn(mob/living/spawned, client/player_client) + . = ..() + if(!isnull(boost_immune_system)) + if(QDELETED(spawned.immune_system)) + spawned.immune_system = new(spawned, boost_immune_system) + else + spawned.immune_system.change_boost(boost_immune_system) + +/datum/job/chief_medical_officer + boost_immune_system = 1.7 + +/datum/job/doctor + boost_immune_system = 1.4 + +/datum/job/paramedic + boost_immune_system = 1.4 + +/datum/job/virologist + boost_immune_system = 1.8 + +/datum/job/janitor + boost_immune_system = 2 diff --git a/monkestation/code/modules/virology/items/_base_item_additions.dm b/monkestation/code/modules/virology/items/_base_item_additions.dm index cfe80ba21362..6722945f79bc 100644 --- a/monkestation/code/modules/virology/items/_base_item_additions.dm +++ b/monkestation/code/modules/virology/items/_base_item_additions.dm @@ -5,7 +5,7 @@ GLOBAL_LIST_INIT(infected_items, list()) //how sterile an item is, not used for much atm var/sterility = 0 /obj/item - var/list/viruses = list() + var/list/viruses /obj/item/attack_hand(mob/user, list/modifiers) . = ..() diff --git a/monkestation/code/modules/virology/items/antibodyscanner.dm b/monkestation/code/modules/virology/items/antibodyscanner.dm index ec67fb48c823..8222f5bf49ee 100644 --- a/monkestation/code/modules/virology/items/antibodyscanner.dm +++ b/monkestation/code/modules/virology/items/antibodyscanner.dm @@ -154,4 +154,9 @@ var/obj/effect/abstract/blank/scan/scanline = new vis_contents += scanline - addtimer(CALLBACK(src, GLOBAL_PROC_REF(qdel), scanline), 2 SECONDS) + addtimer(CALLBACK(src, PROC_REF(remove), scanline), 2 SECONDS) + +/atom/movable/proc/remove(atom/scanline) + vis_contents -= scanline + qdel(scanline) + diff --git a/monkestation/code/modules/virology/items/extrapolator.dm b/monkestation/code/modules/virology/items/extrapolator.dm index a210c43137e4..84d7513bbbc5 100644 --- a/monkestation/code/modules/virology/items/extrapolator.dm +++ b/monkestation/code/modules/virology/items/extrapolator.dm @@ -74,18 +74,19 @@ . = ..() if(!proximity_flag && !scan) return - if(isliving(target)) + if(isliving(target) && target != usr) user_data = WEAKREF(target) if(scanner) if(!scan) if(length(stored_varient_types)) try_disease_modification(user, target) - switch(target.extrapolator_act(user, src, scan)) - if(FALSE) - if(scan) - to_chat(user, "the extrapolator fails to return any data") - if(TRUE) - to_chat(user, span_notice("You store [target]'s blood sample in [src].")) + else + switch(target.extrapolator_act(user, src, scan)) + if(FALSE) + if(scan) + to_chat(user, "the extrapolator fails to return any data") + if(TRUE) + to_chat(user, span_notice("You store [target]'s blood sample in [src].")) else to_chat(user, "the extrapolator has no scanner installed") diff --git a/monkestation/code/modules/virology/living/mouse.dm b/monkestation/code/modules/virology/living/mouse.dm index 71ba38f520bc..e1bea9307313 100644 --- a/monkestation/code/modules/virology/living/mouse.dm +++ b/monkestation/code/modules/virology/living/mouse.dm @@ -1,11 +1,15 @@ /mob/living/basic/mouse - var/disease_chance = 50 + var/disease_chance = 25 + var/diseased = TRUE + +/mob/living/basic/mouse/ratking + diseased = FALSE /mob/living/basic/mouse/Initialize(mapload, tame, new_body_color) . = ..() immune_system = new(src) - if(prob(disease_chance)) + if(prob(disease_chance) && diseased) var/virus_choice = pick(subtypesof(/datum/disease/advanced)- typesof(/datum/disease/advanced/premade)) var/list/anti = list( ANTIGEN_BLOOD = 2, @@ -23,6 +27,7 @@ ) var/datum/disease/advanced/disease = new virus_choice disease.makerandom(list(50,90),list(10,100),anti,bad,src) + disease.spread_flags &= ~DISEASE_SPREAD_AIRBORNE diseases = list() diseases += disease disease.after_add() diff --git a/monkestation/code/modules/virology/reagents/_stage_mutations.dm b/monkestation/code/modules/virology/reagents/_stage_mutations.dm index f09d300f7d55..685b44a1ff5f 100644 --- a/monkestation/code/modules/virology/reagents/_stage_mutations.dm +++ b/monkestation/code/modules/virology/reagents/_stage_mutations.dm @@ -24,12 +24,12 @@ dish.info = "OUTDATED : [dish.info]" dish.update_appearance() -/datum/reagent/toxin/plasma/plasmavirusfood/stage_disease_incubate(datum/disease/disease, list/symptoms, obj/machinery/disease2/incubator/machine) +/datum/reagent/toxin/plasma/plasmavirusfood/stage_disease_incubate(atom/movable/parent, datum/disease/disease, list/symptoms, obj/machinery/disease2/incubator/machine) disease.log += "
    [ROUND_TIME()] Symptom Multiplier Increase (Virus Rations)" for(var/datum/symptom/symptom as anything in symptoms) symptom.multiplier_tweak(0.1) -/datum/reagent/medicine/antipathogenic/spaceacillin/stage_disease_incubate(datum/disease/disease, list/symptoms, obj/machinery/disease2/incubator/machine) +/datum/reagent/medicine/antipathogenic/spaceacillin/stage_disease_incubate(atom/movable/parent, datum/disease/disease, list/symptoms, obj/machinery/disease2/incubator/machine) disease.log += "
    [ROUND_TIME()] Symptom Multiplier Decrease (Spaceacillin)" for(var/datum/symptom/symptom as anything in symptoms) symptom.multiplier_tweak(-0.1) diff --git a/monkestation/code/modules/virology/reagents/incubation.dm b/monkestation/code/modules/virology/reagents/incubation.dm index 362afc864361..da7ffb86fbde 100644 --- a/monkestation/code/modules/virology/reagents/incubation.dm +++ b/monkestation/code/modules/virology/reagents/incubation.dm @@ -1,7 +1,7 @@ /datum/reagent/proc/disease_incubate(atom/movable/parent, datum/disease/disease, obj/machinery/disease2/incubator/machine) return -/datum/reagent/proc/stage_disease_incubate(datum/disease/disease, list/symptoms, obj/machinery/disease2/incubator/machine) +/datum/reagent/proc/stage_disease_incubate(atom/movable/parent, datum/disease/disease, list/symptoms, obj/machinery/disease2/incubator/machine) return diff --git a/monkestation/code/random_rooms/engines/boxstation.dm b/monkestation/code/random_rooms/engines/boxstation.dm index cb1e0e3efe9a..a62661e1c878 100644 --- a/monkestation/code/random_rooms/engines/boxstation.dm +++ b/monkestation/code/random_rooms/engines/boxstation.dm @@ -26,5 +26,15 @@ centerspawner = FALSE template_height = 26 template_width = 29 - weight = 4 // Should probably be rarer than the other two engines. + weight = 8 + station_name = "Box Station" + +/datum/map_template/random_room/random_engines/box_sm_teg + name = "Box SM TEG Engine" + room_id = "box_sm_teg" + mappath = "_maps/~monkestation/RandomEngines/BoxStation/sm_teg.dmm" + centerspawner = FALSE + template_height = 26 + template_width = 29 + weight = 6 station_name = "Box Station" diff --git a/monkestation/gunning_ing/recoil.dm b/monkestation/gunning_ing/recoil.dm new file mode 100644 index 000000000000..907a7a677f18 --- /dev/null +++ b/monkestation/gunning_ing/recoil.dm @@ -0,0 +1,22 @@ +/obj/item/gun + ///a multiplier of the duration the recoil takes to go back to normal view, this is (recoil*recoil_backtime_multiplier)+1 + var/recoil_backtime_multiplier = 2 + ///this is how much deviation the gun recoil can have, recoil pushes the screen towards the reverse angle you shot + some deviation which this is the max. + var/recoil_deviation = 22.5 + +/obj/item/gun/ballistic + recoil = 1 +///Makes a recoil-like animation on the mob camera. +/proc/recoil_camera(mob/M, duration, backtime_duration, strength, angle) + if(!M || !M.client) + return + var/client/sufferer = M.client + strength *= world.icon_size + var/oldx = sufferer.pixel_x + var/oldy = sufferer.pixel_y + + //get pixels to move the camera in an angle + var/mpx = sin(angle) * strength + var/mpy = cos(angle) * strength + animate(sufferer, pixel_x = oldx+mpx, pixel_y = oldy+mpy, time = duration, flags = ANIMATION_RELATIVE) + animate(pixel_x = oldx, pixel_y = oldy, time = backtime_duration, easing = BACK_EASING) diff --git a/monkestation/icons/bloodsuckers/actions_bloodsucker.dmi b/monkestation/icons/bloodsuckers/actions_bloodsucker.dmi index 901589214ea2..6d9b2d5dd6ef 100644 Binary files a/monkestation/icons/bloodsuckers/actions_bloodsucker.dmi and b/monkestation/icons/bloodsuckers/actions_bloodsucker.dmi differ diff --git a/monkestation/icons/mob/clothing/back.dmi b/monkestation/icons/mob/clothing/back.dmi index 169859c9430b..45c1a44aa2a1 100644 Binary files a/monkestation/icons/mob/clothing/back.dmi and b/monkestation/icons/mob/clothing/back.dmi differ diff --git a/monkestation/icons/mob/clothing/feet.dmi b/monkestation/icons/mob/clothing/feet.dmi index c08c98c308e6..9b631b7efa4b 100644 Binary files a/monkestation/icons/mob/clothing/feet.dmi and b/monkestation/icons/mob/clothing/feet.dmi differ diff --git a/monkestation/icons/mob/clothing/gloves.dmi b/monkestation/icons/mob/clothing/gloves.dmi index 28b988f4927d..93cd30ded95c 100644 Binary files a/monkestation/icons/mob/clothing/gloves.dmi and b/monkestation/icons/mob/clothing/gloves.dmi differ diff --git a/monkestation/icons/mob/clothing/hardsuit/hardsuit_body.dmi b/monkestation/icons/mob/clothing/hardsuit/hardsuit_body.dmi index 23851baead1d..14d91e6e4760 100644 Binary files a/monkestation/icons/mob/clothing/hardsuit/hardsuit_body.dmi and b/monkestation/icons/mob/clothing/hardsuit/hardsuit_body.dmi differ diff --git a/monkestation/icons/mob/clothing/hardsuit/hardsuit_helm.dmi b/monkestation/icons/mob/clothing/hardsuit/hardsuit_helm.dmi index 06b8ee2be81e..5767d0d79eac 100644 Binary files a/monkestation/icons/mob/clothing/hardsuit/hardsuit_helm.dmi and b/monkestation/icons/mob/clothing/hardsuit/hardsuit_helm.dmi differ diff --git a/monkestation/icons/mob/clothing/head.dmi b/monkestation/icons/mob/clothing/head.dmi index 7143b2dae137..11e0cab2653f 100644 Binary files a/monkestation/icons/mob/clothing/head.dmi and b/monkestation/icons/mob/clothing/head.dmi differ diff --git a/monkestation/icons/mob/clothing/head/bio.dmi b/monkestation/icons/mob/clothing/head/bio.dmi new file mode 100644 index 000000000000..0d96ef13e192 Binary files /dev/null and b/monkestation/icons/mob/clothing/head/bio.dmi differ diff --git a/monkestation/icons/mob/clothing/species/suit_digi.dmi b/monkestation/icons/mob/clothing/species/suit_digi.dmi index 392e8319d99c..de208936bc37 100644 Binary files a/monkestation/icons/mob/clothing/species/suit_digi.dmi and b/monkestation/icons/mob/clothing/species/suit_digi.dmi differ diff --git a/monkestation/icons/mob/clothing/suit.dmi b/monkestation/icons/mob/clothing/suit.dmi index 4536c506ca6d..2cde5c4b4c8e 100644 Binary files a/monkestation/icons/mob/clothing/suit.dmi and b/monkestation/icons/mob/clothing/suit.dmi differ diff --git a/monkestation/icons/mob/clothing/suits/bio.dmi b/monkestation/icons/mob/clothing/suits/bio.dmi new file mode 100644 index 000000000000..21ea4945074b Binary files /dev/null and b/monkestation/icons/mob/clothing/suits/bio.dmi differ diff --git a/monkestation/icons/mob/clothing/uniform.dmi b/monkestation/icons/mob/clothing/uniform.dmi index a4fed470b119..09dec7b67866 100644 Binary files a/monkestation/icons/mob/clothing/uniform.dmi and b/monkestation/icons/mob/clothing/uniform.dmi differ diff --git a/monkestation/icons/mob/inhands/equipment/shields_lefthand.dmi b/monkestation/icons/mob/inhands/equipment/shields_lefthand.dmi new file mode 100644 index 000000000000..9d68d9bc028d Binary files /dev/null and b/monkestation/icons/mob/inhands/equipment/shields_lefthand.dmi differ diff --git a/monkestation/icons/mob/inhands/equipment/shields_righthand.dmi b/monkestation/icons/mob/inhands/equipment/shields_righthand.dmi new file mode 100644 index 000000000000..e3712b9bd95d Binary files /dev/null and b/monkestation/icons/mob/inhands/equipment/shields_righthand.dmi differ diff --git a/monkestation/icons/mob/landmarks.dmi b/monkestation/icons/mob/landmarks.dmi index 534d291e79b3..b6ed3d6442b4 100644 Binary files a/monkestation/icons/mob/landmarks.dmi and b/monkestation/icons/mob/landmarks.dmi differ diff --git a/monkestation/icons/mob/ranching/chickens.dmi b/monkestation/icons/mob/ranching/chickens.dmi index cd3df5dbb9d7..e9eb66bc4104 100644 Binary files a/monkestation/icons/mob/ranching/chickens.dmi and b/monkestation/icons/mob/ranching/chickens.dmi differ diff --git a/monkestation/icons/obj/clothing/bomb_vest.dmi b/monkestation/icons/obj/clothing/bomb_vest.dmi new file mode 100644 index 000000000000..4a3b0cd1c8a4 Binary files /dev/null and b/monkestation/icons/obj/clothing/bomb_vest.dmi differ diff --git a/monkestation/icons/obj/clothing/eyes.dmi b/monkestation/icons/obj/clothing/eyes.dmi new file mode 100644 index 000000000000..dd404ec95c06 Binary files /dev/null and b/monkestation/icons/obj/clothing/eyes.dmi differ diff --git a/monkestation/icons/obj/clothing/glasses.dmi b/monkestation/icons/obj/clothing/glasses.dmi index 9bc84d0e2f75..0bec1b4941e0 100644 Binary files a/monkestation/icons/obj/clothing/glasses.dmi and b/monkestation/icons/obj/clothing/glasses.dmi differ diff --git a/monkestation/icons/obj/clothing/gloves.dmi b/monkestation/icons/obj/clothing/gloves.dmi index 30d92013e3d2..3fa4376f4f96 100644 Binary files a/monkestation/icons/obj/clothing/gloves.dmi and b/monkestation/icons/obj/clothing/gloves.dmi differ diff --git a/monkestation/icons/obj/clothing/hardsuits/helmet.dmi b/monkestation/icons/obj/clothing/hardsuits/helmet.dmi index 5132e21fb006..8a9ae453d94d 100644 Binary files a/monkestation/icons/obj/clothing/hardsuits/helmet.dmi and b/monkestation/icons/obj/clothing/hardsuits/helmet.dmi differ diff --git a/monkestation/icons/obj/clothing/hardsuits/suit.dmi b/monkestation/icons/obj/clothing/hardsuits/suit.dmi index c86f9072c170..d94809069857 100644 Binary files a/monkestation/icons/obj/clothing/hardsuits/suit.dmi and b/monkestation/icons/obj/clothing/hardsuits/suit.dmi differ diff --git a/monkestation/icons/obj/clothing/hats.dmi b/monkestation/icons/obj/clothing/hats.dmi index 8d039b341602..cd931ae1a7ec 100644 Binary files a/monkestation/icons/obj/clothing/hats.dmi and b/monkestation/icons/obj/clothing/hats.dmi differ diff --git a/monkestation/icons/obj/clothing/head/bio.dmi b/monkestation/icons/obj/clothing/head/bio.dmi new file mode 100644 index 000000000000..1cfd3c66d180 Binary files /dev/null and b/monkestation/icons/obj/clothing/head/bio.dmi differ diff --git a/monkestation/icons/obj/clothing/shoes.dmi b/monkestation/icons/obj/clothing/shoes.dmi index e0924e8e0ade..4a24deda042d 100644 Binary files a/monkestation/icons/obj/clothing/shoes.dmi and b/monkestation/icons/obj/clothing/shoes.dmi differ diff --git a/monkestation/icons/obj/clothing/suits.dmi b/monkestation/icons/obj/clothing/suits.dmi index 2ec9a3624132..38449150fcb3 100644 Binary files a/monkestation/icons/obj/clothing/suits.dmi and b/monkestation/icons/obj/clothing/suits.dmi differ diff --git a/monkestation/icons/obj/clothing/suits/bio.dmi b/monkestation/icons/obj/clothing/suits/bio.dmi new file mode 100644 index 000000000000..a14fd71a3cf4 Binary files /dev/null and b/monkestation/icons/obj/clothing/suits/bio.dmi differ diff --git a/monkestation/icons/obj/clothing/uniforms.dmi b/monkestation/icons/obj/clothing/uniforms.dmi index b08cdc09b81f..ed47123806de 100644 Binary files a/monkestation/icons/obj/clothing/uniforms.dmi and b/monkestation/icons/obj/clothing/uniforms.dmi differ diff --git a/monkestation/icons/obj/flora/glowshroom.dmi b/monkestation/icons/obj/flora/glowshroom.dmi new file mode 100644 index 000000000000..620c30bf17a9 Binary files /dev/null and b/monkestation/icons/obj/flora/glowshroom.dmi differ diff --git a/monkestation/icons/obj/machines/composter.dmi b/monkestation/icons/obj/machines/composter.dmi index ba6ad5164342..1cf3be3edd20 100644 Binary files a/monkestation/icons/obj/machines/composter.dmi and b/monkestation/icons/obj/machines/composter.dmi differ diff --git a/monkestation/icons/obj/misc.dmi b/monkestation/icons/obj/misc.dmi index 533da229a7f6..de6db8e4f600 100644 Binary files a/monkestation/icons/obj/misc.dmi and b/monkestation/icons/obj/misc.dmi differ diff --git a/monkestation/icons/obj/plushes.dmi b/monkestation/icons/obj/plushes.dmi index 4cb4460acd35..403c3975726d 100644 Binary files a/monkestation/icons/obj/plushes.dmi and b/monkestation/icons/obj/plushes.dmi differ diff --git a/monkestation/icons/obj/weapons/guns/projectiles.dmi b/monkestation/icons/obj/weapons/guns/projectiles.dmi new file mode 100644 index 000000000000..69dbc9a4ffa2 Binary files /dev/null and b/monkestation/icons/obj/weapons/guns/projectiles.dmi differ diff --git a/monkestation/icons/obj/weapons/shields.dmi b/monkestation/icons/obj/weapons/shields.dmi new file mode 100644 index 000000000000..c7aa290346f6 Binary files /dev/null and b/monkestation/icons/obj/weapons/shields.dmi differ diff --git a/monkestation/sound/effects/hl2/button-click.ogg b/monkestation/sound/effects/hl2/button-click.ogg new file mode 100644 index 000000000000..c91ba47e3454 Binary files /dev/null and b/monkestation/sound/effects/hl2/button-click.ogg differ diff --git a/monkestation/sound/effects/hl2/button-fail.ogg b/monkestation/sound/effects/hl2/button-fail.ogg new file mode 100644 index 000000000000..b19436b4ac76 Binary files /dev/null and b/monkestation/sound/effects/hl2/button-fail.ogg differ diff --git a/monkestation/sound/effects/hl2/lightswitch.ogg b/monkestation/sound/effects/hl2/lightswitch.ogg new file mode 100644 index 000000000000..355946f4f3f9 Binary files /dev/null and b/monkestation/sound/effects/hl2/lightswitch.ogg differ diff --git a/monkestation/sound/voice/durrcell-squeak.ogg b/monkestation/sound/voice/durrcell-squeak.ogg new file mode 100644 index 000000000000..74d0750210f3 Binary files /dev/null and b/monkestation/sound/voice/durrcell-squeak.ogg differ diff --git a/monkestation/sound/voice/feline/funnymeow.ogg b/monkestation/sound/voice/feline/funnymeow.ogg new file mode 100644 index 000000000000..5a3ce12cf7fb Binary files /dev/null and b/monkestation/sound/voice/feline/funnymeow.ogg differ diff --git a/monkestation/sound/voice/feline/mggaow.ogg b/monkestation/sound/voice/feline/mggaow.ogg new file mode 100644 index 000000000000..7ffddbdf60ee Binary files /dev/null and b/monkestation/sound/voice/feline/mggaow.ogg differ diff --git a/monkestation/sound/voice/feline/purr.ogg b/monkestation/sound/voice/feline/purr.ogg new file mode 100644 index 000000000000..c04d58ce2388 Binary files /dev/null and b/monkestation/sound/voice/feline/purr.ogg differ diff --git a/monkestation/sound/voice/speen.ogg b/monkestation/sound/voice/speen.ogg new file mode 100644 index 000000000000..2c7eecaae3e3 Binary files /dev/null and b/monkestation/sound/voice/speen.ogg differ diff --git a/sound/attributions.txt b/sound/attributions.txt index 4bdcd008aa17..aaafecc9316b 100644 --- a/sound/attributions.txt +++ b/sound/attributions.txt @@ -122,3 +122,19 @@ https://freesound.org/people/vmgraw/sounds/235610/ vmgraw's "Distant Whistle" (CC 0) https://freesound.org/people/giddster/sounds/414480/ + +rock_break.ogg is taken from Bertsz's Rock Destroy from Freesound.org, CC0: +https://freesound.org/people/Bertsz/sounds/524312/ + +sonar-ping.ogg and radar-ping is taken and modified from SamsterBirdies' Sonar Ping from Freesound.org, CC0: +https://freesound.org/people/SamsterBirdies/sounds/539957/ + +manual_teleport.ogg is taken from Quetzakol's teleport from Freesound.org, CC0: +https://freesound.org/people/Quetzakol/sounds/520743/ + +auto_teleport.ogg is taken from Steaq's A teleportation from Freesound.org, CC0: +https://freesound.org/people/steaq/sounds/560124/ + +refinery.ogg, smelter.ogg, and wooping_teleport.ogg are all original works by ArcaneMusic, +with smelter.ogg using samples from rock_break alongside original sound effects from a warrior electric drill, +where refinery and wooping_teleport are modifications of that same electric drill recording. diff --git a/sound/effects/rock_break.ogg b/sound/effects/rock_break.ogg new file mode 100644 index 000000000000..09f6b1d5d33c Binary files /dev/null and b/sound/effects/rock_break.ogg differ diff --git a/sound/machines/mining/auto_teleport.ogg b/sound/machines/mining/auto_teleport.ogg new file mode 100644 index 000000000000..a8fe669e8657 Binary files /dev/null and b/sound/machines/mining/auto_teleport.ogg differ diff --git a/sound/machines/mining/manual_teleport.ogg b/sound/machines/mining/manual_teleport.ogg new file mode 100644 index 000000000000..b011ef91e65a Binary files /dev/null and b/sound/machines/mining/manual_teleport.ogg differ diff --git a/sound/machines/mining/refinery.ogg b/sound/machines/mining/refinery.ogg new file mode 100644 index 000000000000..fdae21f9a301 Binary files /dev/null and b/sound/machines/mining/refinery.ogg differ diff --git a/sound/machines/mining/smelter.ogg b/sound/machines/mining/smelter.ogg new file mode 100644 index 000000000000..b1d65f3bd203 Binary files /dev/null and b/sound/machines/mining/smelter.ogg differ diff --git a/sound/machines/mining/wooping_teleport.ogg b/sound/machines/mining/wooping_teleport.ogg new file mode 100644 index 000000000000..edf5eb57b432 Binary files /dev/null and b/sound/machines/mining/wooping_teleport.ogg differ diff --git a/sound/machines/radar-ping.ogg b/sound/machines/radar-ping.ogg new file mode 100644 index 000000000000..d6fd0000d1a5 Binary files /dev/null and b/sound/machines/radar-ping.ogg differ diff --git a/sound/machines/sonar-ping.ogg b/sound/machines/sonar-ping.ogg new file mode 100644 index 000000000000..c69d43520958 Binary files /dev/null and b/sound/machines/sonar-ping.ogg differ diff --git a/sound/magic/staff_shrink.ogg b/sound/magic/staff_shrink.ogg new file mode 100644 index 000000000000..f2268130fd81 Binary files /dev/null and b/sound/magic/staff_shrink.ogg differ diff --git a/tgstation.dme b/tgstation.dme index 746301676fe2..03945169b298 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -115,6 +115,7 @@ #include "code\__DEFINES\ghost.dm" #include "code\__DEFINES\gravity.dm" #include "code\__DEFINES\guardian_defines.dm" +#include "code\__DEFINES\holiday.dm" #include "code\__DEFINES\holopads.dm" #include "code\__DEFINES\hud.dm" #include "code\__DEFINES\icon_smoothing.dm" @@ -158,6 +159,7 @@ #include "code\__DEFINES\melee.dm" #include "code\__DEFINES\memory_defines.dm" #include "code\__DEFINES\mergers.dm" +#include "code\__DEFINES\mining.dm" #include "code\__DEFINES\mob_spawn.dm" #include "code\__DEFINES\mobfactions.dm" #include "code\__DEFINES\mobs.dm" @@ -226,6 +228,7 @@ #include "code\__DEFINES\species_clothing_paths.dm" #include "code\__DEFINES\speech_channels.dm" #include "code\__DEFINES\speech_controller.dm" +#include "code\__DEFINES\sprite_accessories.dm" #include "code\__DEFINES\stack_trace.dm" #include "code\__DEFINES\stamina.dm" #include "code\__DEFINES\stat.dm" @@ -249,7 +252,6 @@ #include "code\__DEFINES\tools.dm" #include "code\__DEFINES\toys.dm" #include "code\__DEFINES\trader.dm" -#include "code\__DEFINES\traits.dm" #include "code\__DEFINES\tram.dm" #include "code\__DEFINES\turbine_defines.dm" #include "code\__DEFINES\turfs.dm" @@ -383,6 +385,12 @@ #include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_spawner.dm" #include "code\__DEFINES\research\anomalies.dm" #include "code\__DEFINES\research\research_categories.dm" +#include "code\__DEFINES\traits\_traits.dm" +#include "code\__DEFINES\traits\declarations.dm" +#include "code\__DEFINES\traits\macros.dm" +#include "code\__DEFINES\traits\sources.dm" +#include "code\__DEFINES\traits\monkestation\declarations.dm" +#include "code\__DEFINES\traits\monkestation\sources.dm" #include "code\__DEFINES\~monkestation\_patreon.dm" #include "code\__DEFINES\~monkestation\abberant_organs.dm" #include "code\__DEFINES\~monkestation\access.dm" @@ -400,7 +408,9 @@ #include "code\__DEFINES\~monkestation\blackboard.dm" #include "code\__DEFINES\~monkestation\blueshift.dm" #include "code\__DEFINES\~monkestation\botany.dm" +#include "code\__DEFINES\~monkestation\cargo.dm" #include "code\__DEFINES\~monkestation\chat.dm" +#include "code\__DEFINES\~monkestation\chewin.dm" #include "code\__DEFINES\~monkestation\clock_cult.dm" #include "code\__DEFINES\~monkestation\colors.dm" #include "code\__DEFINES\~monkestation\combat.dm" @@ -410,15 +420,18 @@ #include "code\__DEFINES\~monkestation\cooldowns.dm" #include "code\__DEFINES\~monkestation\cybernetics.dm" #include "code\__DEFINES\~monkestation\DNA.dm" +#include "code\__DEFINES\~monkestation\elevation.dm" #include "code\__DEFINES\~monkestation\factions.dm" #include "code\__DEFINES\~monkestation\guns.dm" #include "code\__DEFINES\~monkestation\hacking.dm" #include "code\__DEFINES\~monkestation\holomaps.dm" #include "code\__DEFINES\~monkestation\interaction_particles.dm" #include "code\__DEFINES\~monkestation\ipcs.dm" +#include "code\__DEFINES\~monkestation\is_helpers.dm" #include "code\__DEFINES\~monkestation\jobs.dm" #include "code\__DEFINES\~monkestation\keybinding.dm" #include "code\__DEFINES\~monkestation\level_traits.dm" +#include "code\__DEFINES\~monkestation\living.dm" #include "code\__DEFINES\~monkestation\logging.dm" #include "code\__DEFINES\~monkestation\maps.dm" #include "code\__DEFINES\~monkestation\market.dm" @@ -431,6 +444,7 @@ #include "code\__DEFINES\~monkestation\oozeling.dm" #include "code\__DEFINES\~monkestation\optfor.dm" #include "code\__DEFINES\~monkestation\overwatch.dm" +#include "code\__DEFINES\~monkestation\pain.dm" #include "code\__DEFINES\~monkestation\particles.dm" #include "code\__DEFINES\~monkestation\physics.dm" #include "code\__DEFINES\~monkestation\power.dm" @@ -439,11 +453,11 @@ #include "code\__DEFINES\~monkestation\skills.dm" #include "code\__DEFINES\~monkestation\slimes.dm" #include "code\__DEFINES\~monkestation\smoothing.dm" +#include "code\__DEFINES\~monkestation\sounds.dm" #include "code\__DEFINES\~monkestation\span.dm" #include "code\__DEFINES\~monkestation\status_effects.dm" #include "code\__DEFINES\~monkestation\storytellers.dm" #include "code\__DEFINES\~monkestation\time.dm" -#include "code\__DEFINES\~monkestation\traits.dm" #include "code\__DEFINES\~monkestation\twitch.dm" #include "code\__DEFINES\~monkestation\uplink.dm" #include "code\__DEFINES\~monkestation\virology.dm" @@ -451,8 +465,10 @@ #include "code\__DEFINES\~monkestation\dcs\signals\signals_blueshift.dm" #include "code\__DEFINES\~monkestation\dcs\signals\signals_carbon.dm" #include "code\__DEFINES\~monkestation\dcs\signals\signals_element.dm" +#include "code\__DEFINES\~monkestation\dcs\signals\signals_food.dm" #include "code\__DEFINES\~monkestation\dcs\signals\signals_guns.dm" #include "code\__DEFINES\~monkestation\dcs\signals\signals_item.dm" +#include "code\__DEFINES\~monkestation\dcs\signals\signals_object.dm" #include "code\__DEFINES\~monkestation\dcs\signals\signals_traitor.dm" #include "code\__DEFINES\~monkestation\dcs\signals\signals_mob\signals_mob_main.dm" #include "code\__HELPERS\_auxtools_api.dm" @@ -575,7 +591,9 @@ #include "code\__HELPERS\~monkestation-helpers\clients.dm" #include "code\__HELPERS\~monkestation-helpers\cmp.dm" #include "code\__HELPERS\~monkestation-helpers\icon_smoothing.dm" +#include "code\__HELPERS\~monkestation-helpers\icons.dm" #include "code\__HELPERS\~monkestation-helpers\mapping.dm" +#include "code\__HELPERS\~monkestation-helpers\mobs.dm" #include "code\__HELPERS\~monkestation-helpers\roundend.dm" #include "code\__HELPERS\~monkestation-helpers\time.dm" #include "code\__HELPERS\~monkestation-helpers\virology.dm" @@ -593,7 +611,6 @@ #include "code\_globalvars\religion.dm" #include "code\_globalvars\tgui.dm" #include "code\_globalvars\time_vars.dm" -#include "code\_globalvars\traits.dm" #include "code\_globalvars\lists\achievements.dm" #include "code\_globalvars\lists\ambience.dm" #include "code\_globalvars\lists\client.dm" @@ -605,12 +622,14 @@ #include "code\_globalvars\lists\mobs.dm" #include "code\_globalvars\lists\names.dm" #include "code\_globalvars\lists\objects.dm" +#include "code\_globalvars\lists\ores_spawned.dm" #include "code\_globalvars\lists\poll_ignore.dm" #include "code\_globalvars\lists\quirks.dm" #include "code\_globalvars\lists\rtd.dm" #include "code\_globalvars\lists\typecache.dm" #include "code\_globalvars\lists\wiremod.dm" #include "code\_globalvars\lists\xenobiology.dm" +#include "code\_globalvars\traits\_traits.dm" #include "code\_globalvars\~monkestation\lists\colors.dm" #include "code\_globalvars\~monkestation\lists\flavor_misc.dm" #include "code\_globalvars\~monkestation\lists\holomap.dm" @@ -898,6 +917,7 @@ #include "code\datums\actions\mobs\meteors.dm" #include "code\datums\actions\mobs\mobcooldown.dm" #include "code\datums\actions\mobs\open_mob_commands.dm" +#include "code\datums\actions\mobs\personality_commune.dm" #include "code\datums\actions\mobs\projectileattack.dm" #include "code\datums\actions\mobs\sign_language.dm" #include "code\datums\actions\mobs\sneak.dm" @@ -1064,6 +1084,7 @@ #include "code\datums\components\beetlejuice.dm" #include "code\datums\components\blob_minion.dm" #include "code\datums\components\blood_walk.dm" +#include "code\datums\components\bloody_spreader.dm" #include "code\datums\components\bloodysoles.dm" #include "code\datums\components\boomerang.dm" #include "code\datums\components\breeding.dm" @@ -1350,6 +1371,7 @@ #include "code\datums\elements\blocks_explosives.dm" #include "code\datums\elements\bonus_damage.dm" #include "code\datums\elements\bsa_blocker.dm" +#include "code\datums\elements\bugkiller_reagent.dm" #include "code\datums\elements\bump_click.dm" #include "code\datums\elements\can_barricade.dm" #include "code\datums\elements\chemical_transfer.dm" @@ -1905,6 +1927,7 @@ #include "code\game\machinery\dna_infuser\organ_sets\goliath_organs.dm" #include "code\game\machinery\dna_infuser\organ_sets\gondola_organs.dm" #include "code\game\machinery\dna_infuser\organ_sets\rat_organs.dm" +#include "code\game\machinery\dna_infuser\organ_sets\roach_organs.dm" #include "code\game\machinery\doors\airlock.dm" #include "code\game\machinery\doors\airlock_electronics.dm" #include "code\game\machinery\doors\airlock_types.dm" @@ -2338,7 +2361,6 @@ #include "code\game\objects\items\storage\bags.dm" #include "code\game\objects\items\storage\basket.dm" #include "code\game\objects\items\storage\belt.dm" -#include "code\game\objects\items\storage\book.dm" #include "code\game\objects\items\storage\briefcase.dm" #include "code\game\objects\items\storage\fancy.dm" #include "code\game\objects\items\storage\garment.dm" @@ -2568,7 +2590,6 @@ #include "code\modules\admin\force_event.dm" #include "code\modules\admin\fun_balloon.dm" #include "code\modules\admin\greyscale_modify_menu.dm" -#include "code\modules\admin\hardelete_toggle.dm" #include "code\modules\admin\holder2.dm" #include "code\modules\admin\ipintel.dm" #include "code\modules\admin\IsBanned.dm" @@ -3607,7 +3628,6 @@ #include "code\modules\escape_menu\title.dm" #include "code\modules\events\_event.dm" #include "code\modules\events\_event_admin_setup.dm" -#include "code\modules\events\artifact_spawn.dm" #include "code\modules\events\aurora_caelus.dm" #include "code\modules\events\brain_trauma.dm" #include "code\modules\events\brand_intelligence.dm" @@ -4064,7 +4084,9 @@ #include "code\modules\language\xenocommon.dm" #include "code\modules\library\admin_only.dm" #include "code\modules\library\barcode_scanner.dm" +#include "code\modules\library\bibles.dm" #include "code\modules\library\book.dm" +#include "code\modules\library\book_info.dm" #include "code\modules\library\bookcase.dm" #include "code\modules\library\lib_codex_gigas.dm" #include "code\modules\library\lib_machines.dm" @@ -5355,6 +5377,7 @@ #include "code\modules\spells\spell_types\pointed\spell_cards.dm" #include "code\modules\spells\spell_types\pointed\swap.dm" #include "code\modules\spells\spell_types\pointed\terrorize.dm" +#include "code\modules\spells\spell_types\pointed\tie_shoes.dm" #include "code\modules\spells\spell_types\projectile\_basic_projectile.dm" #include "code\modules\spells\spell_types\projectile\juggernaut.dm" #include "code\modules\spells\spell_types\self\basic_heal.dm" @@ -5364,7 +5387,6 @@ #include "code\modules\spells\spell_types\self\lichdom.dm" #include "code\modules\spells\spell_types\self\mime_vow.dm" #include "code\modules\spells\spell_types\self\mutate.dm" -#include "code\modules\spells\spell_types\self\personality_commune.dm" #include "code\modules\spells\spell_types\self\rod_form.dm" #include "code\modules\spells\spell_types\self\sanguine_strike.dm" #include "code\modules\spells\spell_types\self\smoke.dm" @@ -5441,8 +5463,8 @@ #include "code\modules\surgery\bodyparts\_bodyparts.dm" #include "code\modules\surgery\bodyparts\digitigrade.dm" #include "code\modules\surgery\bodyparts\dismemberment.dm" -#include "code\modules\surgery\bodyparts\hair.dm" #include "code\modules\surgery\bodyparts\head.dm" +#include "code\modules\surgery\bodyparts\head_hair_and_lips.dm" #include "code\modules\surgery\bodyparts\helpers.dm" #include "code\modules\surgery\bodyparts\parts.dm" #include "code\modules\surgery\bodyparts\robot_bodyparts.dm" @@ -5613,6 +5635,7 @@ #include "code\modules\vending\modularpc.dm" #include "code\modules\vending\nutrimax.dm" #include "code\modules\vending\plasmaresearch.dm" +#include "code\modules\vending\plushvendor.dm" #include "code\modules\vending\robotics.dm" #include "code\modules\vending\security.dm" #include "code\modules\vending\snack.dm" @@ -5779,8 +5802,10 @@ #include "monkestation\code\__HELPERS\turfs.dm" #include "monkestation\code\_onclick\hud\alert.dm" #include "monkestation\code\area\areas\direction_names.dm" +#include "monkestation\code\area\areas\ruins.dm" #include "monkestation\code\area\areas\station.dm" #include "monkestation\code\controllers\subsystem\economy.dm" +#include "monkestation\code\controllers\subsystem\glowshroom.dm" #include "monkestation\code\controllers\subsystem\job.dm" #include "monkestation\code\datums\action.dm" #include "monkestation\code\datums\dna.dm" @@ -5799,13 +5824,17 @@ #include "monkestation\code\datums\ai_laws\laws_monke.dm" #include "monkestation\code\datums\announcers\dagoth.dm" #include "monkestation\code\datums\announcers\duke.dm" +#include "monkestation\code\datums\armor\_armor.dm" #include "monkestation\code\datums\brain_damage\magic.dm" #include "monkestation\code\datums\brain_damage\phobia.dm" #include "monkestation\code\datums\changelog\changelog.dm" #include "monkestation\code\datums\components\carbon_sprint.dm" +#include "monkestation\code\datums\components\charge_adjuster.dm" #include "monkestation\code\datums\components\crafting.dm" #include "monkestation\code\datums\components\irradiated.dm" +#include "monkestation\code\datums\components\lock_on_cursor.dm" #include "monkestation\code\datums\components\multi_hit.dm" +#include "monkestation\code\datums\components\pixel_shift.dm" #include "monkestation\code\datums\components\throw_bounce.dm" #include "monkestation\code\datums\components\turf_checker_complex.dm" #include "monkestation\code\datums\components\turf_healing.dm" @@ -5843,6 +5872,7 @@ #include "monkestation\code\game\machinery\_machinery.dm" #include "monkestation\code\game\machinery\announcement_system.dm" #include "monkestation\code\game\machinery\cloning.dm" +#include "monkestation\code\game\machinery\deployable.dm" #include "monkestation\code\game\machinery\exp_cloner.dm" #include "monkestation\code\game\machinery\launch_pad.dm" #include "monkestation\code\game\machinery\player_hologram.dm" @@ -5855,6 +5885,8 @@ #include "monkestation\code\game\machinery\trains\train_network.dm" #include "monkestation\code\game\objects\items.dm" #include "monkestation\code\game\objects\effects\countdown.dm" +#include "monkestation\code\game\objects\effects\forcefields.dm" +#include "monkestation\code\game\objects\effects\glowshroom.dm" #include "monkestation\code\game\objects\effects\landmark.dm" #include "monkestation\code\game\objects\effects\sprint_dust.dm" #include "monkestation\code\game\objects\effects\anomalies\_anomalies.dm" @@ -5868,6 +5900,7 @@ #include "monkestation\code\game\objects\items\choice_beacon.dm" #include "monkestation\code\game\objects\items\cigs_lighters.dm" #include "monkestation\code\game\objects\items\cirno_plush.dm" +#include "monkestation\code\game\objects\items\emags.dm" #include "monkestation\code\game\objects\items\gravity_gun.dm" #include "monkestation\code\game\objects\items\jukebox_beacon.dm" #include "monkestation\code\game\objects\items\miningweapons.dm" @@ -5921,6 +5954,7 @@ #include "monkestation\code\game\objects\items\storage\garment.dm" #include "monkestation\code\game\objects\items\storage\uplink_kits.dm" #include "monkestation\code\game\objects\items\storage\boxes\security_boxes.dm" +#include "monkestation\code\game\objects\structures\elevation.dm" #include "monkestation\code\game\objects\structures\tables_racks.dm" #include "monkestation\code\game\objects\structures\window.dm" #include "monkestation\code\game\objects\structures\beds_chairs\chair.dm" @@ -5932,6 +5966,12 @@ #include "monkestation\code\game\turfs\open\water.dm" #include "monkestation\code\game\turfs\open\floor\misc_floor.dm" #include "monkestation\code\modules\_paperwork\paper_premade.dm" +#include "monkestation\code\modules\a_ship_in_need_of_breaking\area.dm" +#include "monkestation\code\modules\a_ship_in_need_of_breaking\scrap.dm" +#include "monkestation\code\modules\a_ship_in_need_of_breaking\machines\console.dm" +#include "monkestation\code\modules\a_ship_in_need_of_breaking\machines\recycler.dm" +#include "monkestation\code\modules\a_ship_in_need_of_breaking\ships\_base_ship.dm" +#include "monkestation\code\modules\a_ship_in_need_of_breaking\ships\robotics.dm" #include "monkestation\code\modules\abberant_organs\organ_process.dm" #include "monkestation\code\modules\abberant_organs\components\abberant_organ.dm" #include "monkestation\code\modules\abberant_organs\custom_organs\drunkards_liver.dm" @@ -5945,6 +5985,7 @@ #include "monkestation\code\modules\admin\antag_tokens.dm" #include "monkestation\code\modules\admin\camera_view.dm" #include "monkestation\code\modules\admin\event_tokens.dm" +#include "monkestation\code\modules\admin\smites\choke_on_this.dm" #include "monkestation\code\modules\admin\smites\dagothkillsmite.dm" #include "monkestation\code\modules\admin\smites\dagothstripsmite.dm" #include "monkestation\code\modules\admin\smites\phobia_christian_minecraft.dm" @@ -5954,6 +5995,7 @@ #include "monkestation\code\modules\admin\verbs\kick_player_by_ckey.dm" #include "monkestation\code\modules\admin\verbs\selectequipment.dm" #include "monkestation\code\modules\admin\verbs\spawn_mixtape.dm" +#include "monkestation\code\modules\admin\verbs\traits.dm" #include "monkestation\code\modules\aesthetics\airlock\airlock.dm" #include "monkestation\code\modules\aesthetics\items\clothing.dm" #include "monkestation\code\modules\aesthetics\mapping\tilecoloring.dm" @@ -5967,6 +6009,7 @@ #include "monkestation\code\modules\antagonists\_common\antag_datum.dm" #include "monkestation\code\modules\antagonists\_common\antag_hud.dm" #include "monkestation\code\modules\antagonists\abductor\abductor.dm" +#include "monkestation\code\modules\antagonists\abductor\equipment\gear\abductor_items.dm" #include "monkestation\code\modules\antagonists\abductor\equipment\glands\blood.dm" #include "monkestation\code\modules\antagonists\abductor\equipment\glands\plasma.dm" #include "monkestation\code\modules\antagonists\abductor\equipment\glands\slime.dm" @@ -6017,6 +6060,7 @@ #include "monkestation\code\modules\antagonists\brother\actions\communicate.dm" #include "monkestation\code\modules\antagonists\brother\actions\gear.dm" #include "monkestation\code\modules\antagonists\brother\gear\_gear.dm" +#include "monkestation\code\modules\antagonists\brother\gear\misc.dm" #include "monkestation\code\modules\antagonists\brother\gear\recipes.dm" #include "monkestation\code\modules\antagonists\changeling\powers\tiny_prick.dm" #include "monkestation\code\modules\antagonists\clock_cult\area.dm" @@ -6144,29 +6188,17 @@ #include "monkestation\code\modules\antagonists\florida_man\florida_events.dm" #include "monkestation\code\modules\antagonists\florida_man\florida_spells.dm" #include "monkestation\code\modules\antagonists\florida_man\supplypods.dm" +#include "monkestation\code\modules\antagonists\heretic\heretic_antag.dm" +#include "monkestation\code\modules\antagonists\heretic\heretic_living_heart.dm" +#include "monkestation\code\modules\antagonists\heretic\heretic_monsters.dm" #include "monkestation\code\modules\antagonists\heretic\items\forbidden_book.dm" #include "monkestation\code\modules\antagonists\heretic\items\heretic_armor.dm" #include "monkestation\code\modules\antagonists\heretic\knowledge\ash_lore.dm" #include "monkestation\code\modules\antagonists\heretic\knowledge\rust_lore.dm" #include "monkestation\code\modules\antagonists\heretic\knowledge\sacrifice_knowledge\sacrifice_buff.dm" +#include "monkestation\code\modules\antagonists\heretic\knowledge\sacrifice_knowledge\sacrifice_knowledge.dm" #include "monkestation\code\modules\antagonists\nukeop\nukeop.dm" #include "monkestation\code\modules\antagonists\nukeop\equipment\nuclear_bomb\bee_nuke.dm" -#include "monkestation\code\modules\antagonists\slasher\__base_slasher_additions.dm" -#include "monkestation\code\modules\antagonists\slasher\ghost_role.dm" -#include "monkestation\code\modules\antagonists\slasher\slasher_datum.dm" -#include "monkestation\code\modules\antagonists\slasher\slasher_punishment.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\_slasher_base.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\blood_walk.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\incorporealize.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\recall_machette.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\slasher_regenerate.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\soul_steal.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\stalk_target.dm" -#include "monkestation\code\modules\antagonists\slasher\abilities\terror_screech.dm" -#include "monkestation\code\modules\antagonists\slasher\components\team_monitor.dm" -#include "monkestation\code\modules\antagonists\slasher\slasher_outfit\slasher_footwear.dm" -#include "monkestation\code\modules\antagonists\slasher\slasher_outfit\slasher_headgear.dm" -#include "monkestation\code\modules\antagonists\slasher\slasher_outfit\slasher_middlewear.dm" #include "monkestation\code\modules\antagonists\space_ninja\space_ninja.dm" #include "monkestation\code\modules\antagonists\traitor\traitor_objective.dm" #include "monkestation\code\modules\antagonists\traitor\uplink_handler.dm" @@ -6176,6 +6208,8 @@ #include "monkestation\code\modules\antagonists\traitor\objectives\final_objective\final_objective.dm" #include "monkestation\code\modules\antagonists\wizard\wizard.dm" #include "monkestation\code\modules\antagonists\wizard\equipment\artefact.dm" +#include "monkestation\code\modules\antagonists\wizard\equipment\mirror_shield.dm" +#include "monkestation\code\modules\antagonists\wizard\equipment\wizard_spellbook.dm" #include "monkestation\code\modules\antagonists\wizard\equipment\spellbook_entries\defensive.dm" #include "monkestation\code\modules\antagonists\wizard\equipment\spellbook_entries\mobility.dm" #include "monkestation\code\modules\antagonists\wizard\equipment\spellbook_entries\offensive.dm" @@ -6185,6 +6219,7 @@ #include "monkestation\code\modules\antimatter\code\control.dm" #include "monkestation\code\modules\antimatter\code\shielding.dm" #include "monkestation\code\modules\art_sci_overrides\artifact_origins.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_proto_datums.dm" #include "monkestation\code\modules\art_sci_overrides\generic_artifact_objects.dm" #include "monkestation\code\modules\art_sci_overrides\globals.dm" #include "monkestation\code\modules\art_sci_overrides\item_stimuli.dm" @@ -6195,23 +6230,36 @@ #include "monkestation\code\modules\art_sci_overrides\artifact_components\_base_component.dm" #include "monkestation\code\modules\art_sci_overrides\artifact_components\_base_component_signal_procs.dm" #include "monkestation\code\modules\art_sci_overrides\artifact_components\_base_subtype_helpers.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\bomb.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\bonk.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\borger.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\cell.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\emoter.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\forcegen.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\gun.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\heal.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\injector.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\lamp.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\melee.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\repulsor.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\smoke_artifacts.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\surgery.dm" -#include "monkestation\code\modules\art_sci_overrides\artifact_components\vomit.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_components\ghost_object.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\_artifact_effect.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\bomb.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\bonk.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\borger.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\bread.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\cell.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\cleaning.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\emoter.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\false_rod.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\forcegen.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\gun.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\heal.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\injector.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\itsasecret.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\lamp.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\meat.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\melee.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\money.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\narsieoffering.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\plushie_vendor.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\repulsor.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\smoke_artifacts.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\surgery.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_effects\vomit.dm" #include "monkestation\code\modules\art_sci_overrides\artifact_items\artifact_cell.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_items\artifact_effect_disk.dm" #include "monkestation\code\modules\art_sci_overrides\artifact_items\artifact_gun.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_items\artifact_item.dm" +#include "monkestation\code\modules\art_sci_overrides\artifact_items\artifact_manipulators.dm" #include "monkestation\code\modules\art_sci_overrides\artifact_items\artifact_melee.dm" #include "monkestation\code\modules\art_sci_overrides\artifact_objects\artifact_powergen.dm" #include "monkestation\code\modules\art_sci_overrides\artifact_testers\analysis_form.dm" @@ -6221,13 +6269,16 @@ #include "monkestation\code\modules\art_sci_overrides\asteroids\areas.dm" #include "monkestation\code\modules\art_sci_overrides\asteroids\asteroid_generation.dm" #include "monkestation\code\modules\art_sci_overrides\asteroids\asteroid_magnet.dm" -#include "monkestation\code\modules\art_sci_overrides\asteroids\asteroid_template.dm" +#include "monkestation\code\modules\art_sci_overrides\asteroids\asteroid_templates.dm" #include "monkestation\code\modules\art_sci_overrides\asteroids\cartesian_plane.dm" -#include "monkestation\code\modules\art_sci_overrides\asteroids\simple_asteroid.dm" #include "monkestation\code\modules\art_sci_overrides\faults\_fault.dm" +#include "monkestation\code\modules\art_sci_overrides\faults\bioscrambler.dm" +#include "monkestation\code\modules\art_sci_overrides\faults\clowning.dm" #include "monkestation\code\modules\art_sci_overrides\faults\explosion.dm" +#include "monkestation\code\modules\art_sci_overrides\faults\greg.dm" #include "monkestation\code\modules\art_sci_overrides\faults\ignite.dm" #include "monkestation\code\modules\art_sci_overrides\faults\just_death.dm" +#include "monkestation\code\modules\art_sci_overrides\faults\monkey_mode.dm" #include "monkestation\code\modules\art_sci_overrides\faults\reagents.dm" #include "monkestation\code\modules\art_sci_overrides\faults\say.dm" #include "monkestation\code\modules\art_sci_overrides\faults\size_change.dm" @@ -6259,12 +6310,30 @@ #include "monkestation\code\modules\assault_ops\code\armaments\mod_modules.dm" #include "monkestation\code\modules\assault_ops\code\armaments\utility.dm" #include "monkestation\code\modules\assembly\flash.dm" +#include "monkestation\code\modules\asset_cache\assets\botanical_lexicon.dm" +#include "monkestation\code\modules\asset_cache\assets\chicken_book.dm" #include "monkestation\code\modules\atmospherics\machinery\air_alarm\air_alarm_ac.dm" #include "monkestation\code\modules\balloon_alert\balloon_alert.dm" #include "monkestation\code\modules\ballpit\ballbit_sink.dm" #include "monkestation\code\modules\ballpit\ballpit.dm" #include "monkestation\code\modules\bitrunners\code\ability_disks.dm" #include "monkestation\code\modules\bitrunners\code\combat_gear_disks.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\fly_away.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\particle.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\__base_slasher_additions.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\ghost_role.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\slasher_datum.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\_slasher_base.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\blood_walk.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\envelope_darkness.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\recall_machette.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\slasher_regenerate.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\soul_steal.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\stalk_target.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\abilities\terror_screech.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\components\see_as_something.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\components\team_monitor.dm" +#include "monkestation\code\modules\blood_for_the_blood_gods\slasher\slasher_outfit\slasher_clothing.dm" #include "monkestation\code\modules\bloodsuckers\bloodsucker_assets.dm" #include "monkestation\code\modules\bloodsuckers\bloodsucker\bloodsucker_conversion.dm" #include "monkestation\code\modules\bloodsuckers\bloodsucker\bloodsucker_datum.dm" @@ -6347,6 +6416,18 @@ #include "monkestation\code\modules\bloodsuckers\vassals\vassal_pinpointer.dm" #include "monkestation\code\modules\bloodsuckers\vassals\types\favorite.dm" #include "monkestation\code\modules\bloodsuckers\vassals\types\revenge.dm" +#include "monkestation\code\modules\blueshield\areas.dm" +#include "monkestation\code\modules\blueshield\closet.dm" +#include "monkestation\code\modules\blueshield\clothing.dm" +#include "monkestation\code\modules\blueshield\gun.dm" +#include "monkestation\code\modules\blueshield\job.dm" +#include "monkestation\code\modules\blueshield\landmarks.dm" +#include "monkestation\code\modules\blueshield\radio.dm" +#include "monkestation\code\modules\blueshield\trim.dm" +#include "monkestation\code\modules\blueshield\devices\crew_monitor.dm" +#include "monkestation\code\modules\blueshield\devices\sensor.dm" +#include "monkestation\code\modules\blueshield\modsuit\suit.dm" +#include "monkestation\code\modules\blueshield\modsuit\theme.dm" #include "monkestation\code\modules\blueshift\shuttles.dm" #include "monkestation\code\modules\blueshift\appliances\colony.dm" #include "monkestation\code\modules\blueshift\appliances\multi_charger.dm" @@ -6382,7 +6463,6 @@ #include "monkestation\code\modules\blueshift\cargo\deforest.dm" #include "monkestation\code\modules\blueshift\cargo\flatpacks.dm" #include "monkestation\code\modules\blueshift\cargo\specialist_armor.dm" -#include "monkestation\code\modules\blueshift\clothing\blueshield.dm" #include "monkestation\code\modules\blueshift\clothing\dogginos.dm" #include "monkestation\code\modules\blueshift\clothing\kahraman.dm" #include "monkestation\code\modules\blueshift\clothing\nova_armorsuit.dm" @@ -6470,6 +6550,7 @@ #include "monkestation\code\modules\blueshift\items\pepperbell.dm" #include "monkestation\code\modules\blueshift\items\pizza.dm" #include "monkestation\code\modules\blueshift\items\plushies.dm" +#include "monkestation\code\modules\blueshift\items\plushieslobcorp.dm" #include "monkestation\code\modules\blueshift\items\retractable_armor.dm" #include "monkestation\code\modules\blueshift\items\skillchip.dm" #include "monkestation\code\modules\blueshift\items\soul_catcher.dm" @@ -6614,11 +6695,89 @@ #include "monkestation\code\modules\botany\species\apid\hive\area.dm" #include "monkestation\code\modules\botany\species\apid\hive\hive_object.dm" #include "monkestation\code\modules\botany\species\apid\hive\hive_turfs.dm" +#include "monkestation\code\modules\brewin_and_chewin\cargo_exports.dm" +#include "monkestation\code\modules\brewin_and_chewin\uniqueness.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\bottler.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\bottles.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\designs.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\fermintation_keg.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\reagents.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipe_card.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\_base.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\beers.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\custom.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\liquors.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\meads.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\misc.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\rums.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\vinegars.dm" +#include "monkestation\code\modules\brewin_and_chewin\brewing\recipes\wines.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\cooking_containers.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\food_additons.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\fryer_overhaul.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\global_creation.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\items.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\oven_overrides.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\tracker.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\food_effects\food_posioning.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\_base.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\add_item.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\add_produce.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\add_produce_choice.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\add_reagent.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\add_reagent_choice.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\recipe_start.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\use_fryer.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\use_grill.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\use_item.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\use_oven.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\use_stove.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipe_steps\use_tool.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\black_eggs.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\example_recipe.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\french_fries.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\fried_blood_sausage.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\fried_rice.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\katsu_curry.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\kimchi.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\lizard_dumplings.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\oven_bread.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\recipe_crafting_helper_generator.dm" +#include "monkestation\code\modules\brewin_and_chewin\chewing\recipes\sandwhich_test.dm" #include "monkestation\code\modules\buckshotroulette\projectiles\ammunition\ballistic\shotgun.dm" #include "monkestation\code\modules\buckshotroulette\projectiles\boxes_magazines\internal\shotgun.dm" #include "monkestation\code\modules\buckshotroulette\projectiles\guns\ballistic\shotgun.dm" #include "monkestation\code\modules\bunny_wizard\outfits.dm" #include "monkestation\code\modules\bunny_wizard\wizard_items.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\subsystem.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\components\make_item_slow.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\elements\temperature_pack.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\_base.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\bodyparts.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\effects.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\helpers.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\item_helpers.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\modifiers.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\pain_assistance_tools.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\pain_goodies.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\preferences.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\shock.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\species.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\traits.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\causes\generic.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\causes\opiods.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\causes\surgery.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\reagents\modified_reagents.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\reagents\painkiller_related.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\reagents\painkillers.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\anesthetics.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\fire_pain.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\low_blood_pressure.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\min_pain.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\pain_limp.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\sharp_pain.dm" +#include "monkestation\code\modules\can_spessmen_feel_pain\pain\status_effects\temp_pack.dm" #include "monkestation\code\modules\cargo\bounties\pathology.dm" #include "monkestation\code\modules\cargo\crates\costumes_toys.dm" #include "monkestation\code\modules\cargo\crates\emergency.dm" @@ -6634,6 +6793,7 @@ #include "monkestation\code\modules\cargo\crates\science.dm" #include "monkestation\code\modules\cargo\crates\security.dm" #include "monkestation\code\modules\cargo\crates\service.dm" +#include "monkestation\code\modules\cargo\mail\mail_token.dm" #include "monkestation\code\modules\cargo\markets\market_items.dm" #include "monkestation\code\modules\cargo\packs\engineering.dm" #include "monkestation\code\modules\cargo\packs\medical.dm" @@ -6686,10 +6846,13 @@ #include "monkestation\code\modules\client\preferences\species_features\lizard.dm" #include "monkestation\code\modules\client\preferences\species_features\secondary_mut_color.dm" #include "monkestation\code\modules\client\preferences\species_features\simians.dm" +#include "monkestation\code\modules\client\verbs\deadchat.dm" #include "monkestation\code\modules\client\verbs\looc.dm" +#include "monkestation\code\modules\clothing\durathread_weave.dm" #include "monkestation\code\modules\clothing\accessories\accessories.dm" #include "monkestation\code\modules\clothing\costumes\gnome.dm" #include "monkestation\code\modules\clothing\costumes\henchmen.dm" +#include "monkestation\code\modules\clothing\glasses\glasses.dm" #include "monkestation\code\modules\clothing\gloves\gloves.dm" #include "monkestation\code\modules\clothing\head\costume.dm" #include "monkestation\code\modules\clothing\head\hat.dm" @@ -6708,6 +6871,7 @@ #include "monkestation\code\modules\clothing\spacesuits\hardsuits\_hardsuit.dm" #include "monkestation\code\modules\clothing\spacesuits\hardsuits\_helmet.dm" #include "monkestation\code\modules\clothing\spacesuits\hardsuits\engineering.dm" +#include "monkestation\code\modules\clothing\spacesuits\hardsuits\heavy.dm" #include "monkestation\code\modules\clothing\spacesuits\hardsuits\medical.dm" #include "monkestation\code\modules\clothing\spacesuits\hardsuits\misc.dm" #include "monkestation\code\modules\clothing\spacesuits\hardsuits\science.dm" @@ -6717,6 +6881,7 @@ #include "monkestation\code\modules\clothing\suits\costume.dm" #include "monkestation\code\modules\clothing\suits\toggles.dm" #include "monkestation\code\modules\clothing\under\_under.dm" +#include "monkestation\code\modules\clothing\under\bomb_vest.dm" #include "monkestation\code\modules\clothing\under\costume.dm" #include "monkestation\code\modules\clothing\under\undersuit.dm" #include "monkestation\code\modules\clothing\under\accessories\medals.dm" @@ -6797,23 +6962,62 @@ #include "monkestation\code\modules\donator\code\item\choice_beacon.dm" #include "monkestation\code\modules\donator\code\item\clothing.dm" #include "monkestation\code\modules\donator\code\item\effects.dm" +#include "monkestation\code\modules\donator\code\item\misc.dm" #include "monkestation\code\modules\donator\code\item\plush.dm" #include "monkestation\code\modules\donator\code\mob\pets.dm" #include "monkestation\code\modules\emotes\code\emote.dm" #include "monkestation\code\modules\events\_event_admin_setup.dm" +#include "monkestation\code\modules\events\artifact_spawn.dm" #include "monkestation\code\modules\events\brand_intelligence.dm" #include "monkestation\code\modules\events\gravity_generator_blackout.dm" +#include "monkestation\code\modules\events\portal_storm.dm" #include "monkestation\code\modules\events\radiation_storm.dm" #include "monkestation\code\modules\events\scrubber_clog.dm" #include "monkestation\code\modules\events\scrubber_overflow.dm" #include "monkestation\code\modules\events\summon_wizard_event.dm" #include "monkestation\code\modules\events\ghost_role\drifting_contractor.dm" #include "monkestation\code\modules\events\wizard\summon_gifts.dm" +#include "monkestation\code\modules\factory_type_beat\boulder.dm" +#include "monkestation\code\modules\factory_type_beat\circuits.dm" +#include "monkestation\code\modules\factory_type_beat\debug.dm" +#include "monkestation\code\modules\factory_type_beat\designs.dm" +#include "monkestation\code\modules\factory_type_beat\effects.dm" +#include "monkestation\code\modules\factory_type_beat\flatpacks.dm" +#include "monkestation\code\modules\factory_type_beat\map_templates.dm" +#include "monkestation\code\modules\factory_type_beat\ore_vent.dm" +#include "monkestation\code\modules\factory_type_beat\ss_ore_gen.dm" +#include "monkestation\code\modules\factory_type_beat\technodes.dm" +#include "monkestation\code\modules\factory_type_beat\yummy.dm" +#include "monkestation\code\modules\factory_type_beat\ai_behaviours\latch_onto.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\assembler.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\brine_chamber.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\grabber.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\splitter.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\test_boulder_spawner.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\atmos_chem\chemical_infuser.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\atmos_chem\pressurized_reaction_chamber.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\atmos_chem\chemical_infuser_recipes\_base.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\atmos_chem\chemical_infuser_recipes\sulfur.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\atmos_chem\pressurised_reactions\_base.dm" +#include "monkestation\code\modules\factory_type_beat\machinery\atmos_chem\pressurised_reactions\sulfur.dm" +#include "monkestation\code\modules\factory_type_beat\mobs\node_drone.dm" +#include "monkestation\code\modules\factory_type_beat\processing\bouldertech.dm" +#include "monkestation\code\modules\factory_type_beat\processing\brm.dm" +#include "monkestation\code\modules\factory_type_beat\processing\checmial_washer.dm" +#include "monkestation\code\modules\factory_type_beat\processing\chemical_injector.dm" +#include "monkestation\code\modules\factory_type_beat\processing\crusher.dm" +#include "monkestation\code\modules\factory_type_beat\processing\crystalizer.dm" +#include "monkestation\code\modules\factory_type_beat\processing\dissolution_chamber.dm" +#include "monkestation\code\modules\factory_type_beat\processing\enricher.dm" +#include "monkestation\code\modules\factory_type_beat\processing\holding_types.dm" +#include "monkestation\code\modules\factory_type_beat\processing\purification_chamber.dm" +#include "monkestation\code\modules\factory_type_beat\processing\refinery.dm" #include "monkestation\code\modules\flavor_text\flavor_examine.dm" #include "monkestation\code\modules\flavor_text\flavor_helpers.dm" #include "monkestation\code\modules\flavor_text\flavor_hrefs.dm" #include "monkestation\code\modules\flavor_text\flavor_text.dm" #include "monkestation\code\modules\flavor_text\pose_component.dm" +#include "monkestation\code\modules\food_and_drinks\machinery\microwave.dm" #include "monkestation\code\modules\food_and_drinks\machinery\smartfridge.dm" #include "monkestation\code\modules\food_and_drinks\recipes\boiling.dm" #include "monkestation\code\modules\food_and_drinks\recipes\recipes_meat.dm" @@ -6872,7 +7076,6 @@ #include "monkestation\code\modules\job_xp\milestones\botany_milestones.dm" #include "monkestation\code\modules\job_xp\preferences\base_preferences.dm" #include "monkestation\code\modules\job_xp\preferences\xp_handlers.dm" -#include "monkestation\code\modules\jobs\job_types\blueshield.dm" #include "monkestation\code\modules\jobs\job_types\brig_physician.dm" #include "monkestation\code\modules\jobs\job_types\candysalesman.dm" #include "monkestation\code\modules\jobs\job_types\chaplain.dm" @@ -7042,9 +7245,11 @@ #include "monkestation\code\modules\mining\accelerators\repeater.dm" #include "monkestation\code\modules\mining\accelerators\shockwave.dm" #include "monkestation\code\modules\mining\accelerators\shotgun.dm" +#include "monkestation\code\modules\mining\lavaland\tendril_loot.dm" #include "monkestation\code\modules\mob\login.dm" #include "monkestation\code\modules\mob\mob.dm" #include "monkestation\code\modules\mob\mob_defines.dm" +#include "monkestation\code\modules\mob\mob_say.dm" #include "monkestation\code\modules\mob\transform_procs.dm" #include "monkestation\code\modules\mob\dead\new_player\new_player.dm" #include "monkestation\code\modules\mob\dead\new_player\sprite_accessories\_base.dm" @@ -7065,12 +7270,14 @@ #include "monkestation\code\modules\mob\dead\new_player\sprite_accessories\tails.dm" #include "monkestation\code\modules\mob\dead\new_player\sprite_accessories\underwear.dm" #include "monkestation\code\modules\mob\living\living_defines.dm" +#include "monkestation\code\modules\mob\living\living_movement.dm" #include "monkestation\code\modules\mob\living\status_procs.dm" #include "monkestation\code\modules\mob\living\basic\animatronic.dm" #include "monkestation\code\modules\mob\living\basic\bots\medbot\medbot.dm" #include "monkestation\code\modules\mob\living\basic\ggg\glerm.dm" #include "monkestation\code\modules\mob\living\basic\ggg\susflash.dm" #include "monkestation\code\modules\mob\living\basic\pets\parrot\parrot_ai\parroting_action.dm" +#include "monkestation\code\modules\mob\living\basic\trooper\syndicate.dm" #include "monkestation\code\modules\mob\living\basic\vermin\frog.dm" #include "monkestation\code\modules\mob\living\basic\vermin\mouse.dm" #include "monkestation\code\modules\mob\living\carbon\carbon.dm" @@ -7087,6 +7294,7 @@ #include "monkestation\code\modules\mob\living\carbon\human\emotes.dm" #include "monkestation\code\modules\mob\living\carbon\human\human.dm" #include "monkestation\code\modules\mob\living\carbon\human\human_defines.dm" +#include "monkestation\code\modules\mob\living\carbon\human\init_signals.dm" #include "monkestation\code\modules\mob\living\carbon\human\lizard_gags.dm" #include "monkestation\code\modules\mob\living\carbon\human\simian_gags.dm" #include "monkestation\code\modules\mob\living\carbon\human\worn_overlays.dm" @@ -7123,6 +7331,7 @@ #include "monkestation\code\modules\modular_bartending\garnishes\grown_cuts.dm" #include "monkestation\code\modules\modular_bartending\item_modifications\attack_additions.dm" #include "monkestation\code\modules\modular_bartending\item_modifications\reagent_modification.dm" +#include "monkestation\code\modules\modular_computers\computers\item\role_tablet_presets.dm" #include "monkestation\code\modules\modular_computers\file_system\programs\crewmanifest.dm" #include "monkestation\code\modules\modular_guns\__base_attachment.dm" #include "monkestation\code\modules\modular_guns\__base_modular_gun.dm" @@ -7233,7 +7442,9 @@ #include "monkestation\code\modules\overwatch\subsystem.dm" #include "monkestation\code\modules\overwatch\panels\asn_panel.dm" #include "monkestation\code\modules\overwatch\panels\whitelist_panel.dm" +#include "monkestation\code\modules\pai\card.dm" #include "monkestation\code\modules\paperwork\fax.dm" +#include "monkestation\code\modules\paperwork\filingcabinet.dm" #include "monkestation\code\modules\patches_if_they_were_cool\_base_patch_changes.dm" #include "monkestation\code\modules\physics\atom_movables.dm" #include "monkestation\code\modules\physics\physics_component.dm" @@ -7282,6 +7493,7 @@ #include "monkestation\code\modules\projectiles\guns\ballistic\revolver.dm" #include "monkestation\code\modules\projectiles\guns\ballistic\ryanecorp_whispering_jester.dm" #include "monkestation\code\modules\projectiles\guns\special\meat_hook.dm" +#include "monkestation\code\modules\projectiles\projectile\spells.dm" #include "monkestation\code\modules\projectiles\projectile\bullets\c45_caseless.dm" #include "monkestation\code\modules\ranching\_animations.dm" #include "monkestation\code\modules\ranching\chicken_book.dm" @@ -7303,6 +7515,7 @@ #include "monkestation\code\modules\ranching\chickens\ai\gary\gary_subtrees.dm" #include "monkestation\code\modules\ranching\chickens\misc\gary.dm" #include "monkestation\code\modules\ranching\chickens\misc\gary_component.dm" +#include "monkestation\code\modules\ranching\chickens\misc\gary_spawner.dm" #include "monkestation\code\modules\ranching\chickens\misc\hideout_datum.dm" #include "monkestation\code\modules\ranching\chickens\tier1\brown_chicken.dm" #include "monkestation\code\modules\ranching\chickens\tier1\chicken.dm" @@ -7521,18 +7734,22 @@ #include "monkestation\code\modules\smithing\area.dm" #include "monkestation\code\modules\smithing\anvil\anvil.dm" #include "monkestation\code\modules\smithing\anvil\recipe\_base_recipe.dm" -#include "monkestation\code\modules\smithing\anvil\recipe\swords.dm" +#include "monkestation\code\modules\smithing\anvil\recipe\armor_parts.dm" #include "monkestation\code\modules\smithing\anvil\recipe\thermal_conductor.dm" +#include "monkestation\code\modules\smithing\anvil\recipe\weapon_heads.dm" #include "monkestation\code\modules\smithing\anvil\smithed_parts\_base_part.dm" +#include "monkestation\code\modules\smithing\anvil\smithed_parts\axe_blade.dm" #include "monkestation\code\modules\smithing\anvil\smithed_parts\dagger_blade.dm" #include "monkestation\code\modules\smithing\anvil\smithed_parts\pickaxe_head.dm" #include "monkestation\code\modules\smithing\anvil\smithed_parts\rapier_blade.dm" +#include "monkestation\code\modules\smithing\anvil\smithed_parts\shields.dm" +#include "monkestation\code\modules\smithing\anvil\smithed_parts\spear_blade.dm" #include "monkestation\code\modules\smithing\anvil\smithed_parts\staff_head.dm" #include "monkestation\code\modules\smithing\anvil\smithed_parts\sword_blade.dm" #include "monkestation\code\modules\smithing\anvil\smithed_parts\thermal_conductor.dm" #include "monkestation\code\modules\smithing\assembly_bench\assembly_bench.dm" #include "monkestation\code\modules\smithing\assembly_bench\assembly_recipes\_base_recipe.dm" -#include "monkestation\code\modules\smithing\assembly_bench\assembly_recipes\sword.dm" +#include "monkestation\code\modules\smithing\assembly_bench\assembly_recipes\weapons.dm" #include "monkestation\code\modules\smithing\ipcs\species.dm" #include "monkestation\code\modules\smithing\ipcs\body\base_bodyparts.dm" #include "monkestation\code\modules\smithing\ipcs\body\internal_organs.dm" @@ -7542,9 +7759,11 @@ #include "monkestation\code\modules\smithing\ipcs\surgeries\robot_chest_repair.dm" #include "monkestation\code\modules\smithing\ipcs\surgeries\robot_healing.dm" #include "monkestation\code\modules\smithing\ipcs\surgeries\steps.dm" +#include "monkestation\code\modules\smithing\items\clothing.dm" #include "monkestation\code\modules\smithing\items\merged_material.dm" #include "monkestation\code\modules\smithing\machines\arc_forge.dm" #include "monkestation\code\modules\smithing\machines\electroplater.dm" +#include "monkestation\code\modules\smithing\machines\material_alloyer.dm" #include "monkestation\code\modules\smithing\machines\material_analyzer.dm" #include "monkestation\code\modules\smithing\material_changes\_base_mineral.dm" #include "monkestation\code\modules\smithing\material_changes\alloy_stats.dm" @@ -7561,6 +7780,7 @@ #include "monkestation\code\modules\smithing\material_changes\material_traits\slippery.dm" #include "monkestation\code\modules\smithing\material_changes\material_traits\slow_attacks.dm" #include "monkestation\code\modules\smithing\material_changes\material_traits\stamina_draining.dm" +#include "monkestation\code\modules\smithing\material_changes\material_traits\stunning.dm" #include "monkestation\code\modules\smithing\material_changes\material_traits\warping.dm" #include "monkestation\code\modules\smithing\material_changes\material_traits\weak_weapon.dm" #include "monkestation\code\modules\smithing\minigame\anvil_minigame.dm" @@ -7579,6 +7799,7 @@ #include "monkestation\code\modules\smithing\TEG\teg_states\worked_materials.dm" #include "monkestation\code\modules\spells\spell_types\aoe_spell\mind_swap.dm" #include "monkestation\code\modules\spells\spell_types\conjure_item\summon_mjollnir.dm" +#include "monkestation\code\modules\spells\spell_types\pointed\fire_ball.dm" #include "monkestation\code\modules\spells\spell_types\pointed\smite.dm" #include "monkestation\code\modules\store\admin\admin_coin_modification.dm" #include "monkestation\code\modules\store\atm\_atm.dm" @@ -7625,6 +7846,8 @@ #include "monkestation\code\modules\storytellers\converted_events\solo\ghosts\nuclear_operative_ghost.dm" #include "monkestation\code\modules\storytellers\converted_events\solo\ghosts\paradox_clone.dm" #include "monkestation\code\modules\storytellers\converted_events\solo\ghosts\wizard.dm" +#include "monkestation\code\modules\storytellers\event_groups\_event_group.dm" +#include "monkestation\code\modules\storytellers\event_groups\groups.dm" #include "monkestation\code\modules\storytellers\storytellers\_storyteller.dm" #include "monkestation\code\modules\storytellers\storytellers\clown.dm" #include "monkestation\code\modules\storytellers\storytellers\ghost.dm" @@ -7637,6 +7860,7 @@ #include "monkestation\code\modules\storytellers\storytellers\vote.dm" #include "monkestation\code\modules\storytellers\storytellers\warrior.dm" #include "monkestation\code\modules\surgery\blood_filter.dm" +#include "monkestation\code\modules\surgery\nif_debonding.dm" #include "monkestation\code\modules\surgery\advanced\brainwashing.dm" #include "monkestation\code\modules\surgery\bodyparts\arachnid_bodyparts.dm" #include "monkestation\code\modules\surgery\bodyparts\clockwork_bodyparts.dm" @@ -7664,6 +7888,7 @@ #include "monkestation\code\modules\surgery\organs\internal\lungs.dm" #include "monkestation\code\modules\surgery\organs\internal\stomach.dm" #include "monkestation\code\modules\surgery\organs\internal\tongue.dm" +#include "monkestation\code\modules\syndicate_ghostroles\listeningpost.dm" #include "monkestation\code\modules\trading\box_rolling.dm" #include "monkestation\code\modules\trading\lootbox_buying.dm" #include "monkestation\code\modules\trading\lootbox_clothing.dm" @@ -7676,6 +7901,7 @@ #include "monkestation\code\modules\trading\unusual_effects\animation_housing\fire.dm" #include "monkestation\code\modules\trading\unusual_effects\animation_housing\galaxies.dm" #include "monkestation\code\modules\trading\unusual_effects\animation_housing\holy_steps.dm" +#include "monkestation\code\modules\trading\unusual_effects\animation_housing\money.dm" #include "monkestation\code\modules\trading\unusual_effects\animation_housing\music.dm" #include "monkestation\code\modules\trading\unusual_effects\animation_housing\rain.dm" #include "monkestation\code\modules\trading\unusual_effects\animation_housing\shooting_stars.dm" @@ -7705,12 +7931,14 @@ #include "monkestation\code\modules\uplink\uplink_items\misc.dm" #include "monkestation\code\modules\uplink\uplink_items\nukeops.dm" #include "monkestation\code\modules\uplink\uplink_items\species.dm" +#include "monkestation\code\modules\uplink\uplink_items\suits.dm" #include "monkestation\code\modules\uplink\uplink_items\weapons.dm" #include "monkestation\code\modules\vehicles\monkey_ball.dm" #include "monkestation\code\modules\vehicles\wheelchair.dm" #include "monkestation\code\modules\vehicles\mecha\mecha_actions.dm" #include "monkestation\code\modules\vehicles\mecha\equipment\tools\other_tools.dm" #include "monkestation\code\modules\vending\megaseed.dm" +#include "monkestation\code\modules\veth_misc_items\canopics\canopics.dm" #include "monkestation\code\modules\viking\viking_armour.dm" #include "monkestation\code\modules\viking\viking_axes.dm" #include "monkestation\code\modules\virology\__base_procs.dm" @@ -7759,6 +7987,7 @@ #include "monkestation\code\modules\virology\effects\cleanables.dm" #include "monkestation\code\modules\virology\effects\pathogen_cloud.dm" #include "monkestation\code\modules\virology\immune_systems\_immune_system.dm" +#include "monkestation\code\modules\virology\immune_systems\job_boosting.dm" #include "monkestation\code\modules\virology\items\_base_item_additions.dm" #include "monkestation\code\modules\virology\items\antibodyscanner.dm" #include "monkestation\code\modules\virology\items\bio_hazard_deployable.dm" @@ -7832,4 +8061,5 @@ #include "monkestation\code\random_rooms\engines\kilostation.dm" #include "monkestation\code\random_rooms\engines\metastation.dm" #include "monkestation\code\random_rooms\engines\tramstation.dm" +#include "monkestation\gunning_ing\recoil.dm" // END_INCLUDE diff --git a/tgui/packages/tgui/components/Collapsible.jsx b/tgui/packages/tgui/components/Collapsible.jsx index 7d59a11417cc..944b517b57f8 100644 --- a/tgui/packages/tgui/components/Collapsible.jsx +++ b/tgui/packages/tgui/components/Collapsible.jsx @@ -20,7 +20,14 @@ export class Collapsible extends Component { render() { const { props } = this; const { open } = this.state; - const { children, color = 'default', title, buttons, ...rest } = props; + const { + children, + color = 'default', + title, + buttons, + contentStyle, + ...rest + } = props; return (
    @@ -39,7 +46,11 @@ export class Collapsible extends Component {
    {buttons}
    )}
    - {open && {children}} + {open && ( + + {children} + + )}
    ); } diff --git a/tgui/packages/tgui/components/ImageButton.js b/tgui/packages/tgui/components/ImageButton.js new file mode 100644 index 000000000000..2b7258497fa6 --- /dev/null +++ b/tgui/packages/tgui/components/ImageButton.js @@ -0,0 +1,234 @@ +/** + * @file + * @copyright 2024 Aylong (https://github.com/AyIong) + * @license MIT + */ + +import { resolveAsset } from '../assets'; +import { classes, pureComponentHooks } from 'common/react'; +import { computeBoxClassName, computeBoxProps } from './Box'; +import { Icon } from './Icon'; +import { Tooltip } from './Tooltip'; + +export const ImageButton = (props) => { + const { + className, + asset, + color, + title, + vertical, + content, + selected, + disabled, + disabledContent, + image, + imageUrl, + imageAsset, + imageSize, + tooltip, + tooltipPosition, + ellipsis, + children, + onClick, + ...rest + } = props; + rest.onClick = (e) => { + if (!disabled && onClick) { + onClick(e); + } + }; + let buttonContent = ( +
    +
    + {asset ? ( +
    + ) : ( + + )} +
    + {content && + (vertical ? ( +
    + {disabled && disabledContent ? disabledContent : content} +
    + ) : ( +
    + {title && ( +
    + {title} +
    +
    + )} +
    + {content} +
    +
    + ))} +
    + ); + + if (tooltip) { + buttonContent = ( + + {buttonContent} + + ); + } + + return ( +
    + {buttonContent} + {children} +
    + ); +}; + +ImageButton.defaultHooks = pureComponentHooks; + +/** + * That's VERY fucking expensive thing! + * Use it only in places, where it really needed. + * Otherwise, the window opening time may increase by a third! + * Most of the blame is on Icon. + * Maybe it's also because I'm a bit crooked. + * (с) Aylong + */ +export const ImageButtonItem = (props) => { + const { + className, + color, + content, + horizontal, + selected, + disabled, + disabledContent, + tooltip, + tooltipPosition, + icon, + iconColor, + iconPosition, + iconRotation, + iconSize, + onClick, + children, + ...rest + } = props; + rest.onClick = (e) => { + if (!disabled && onClick) { + onClick(e); + } + }; + let itemContent = ( +
    +
    +
    + {icon && (iconPosition === 'top' || iconPosition === 'left') && ( + + )} +
    + {disabled && disabledContent ? disabledContent : content} + {children} +
    + {icon && !(iconPosition === 'top' || iconPosition === 'left') && ( + + )} +
    +
    +
    + ); + if (tooltip) { + itemContent = ( + + {itemContent} + + ); + } + + return itemContent; +}; + +ImageButton.Item = ImageButtonItem; diff --git a/tgui/packages/tgui/components/index.jsx b/tgui/packages/tgui/components/index.jsx index fefd280a590c..95780c83b46e 100644 --- a/tgui/packages/tgui/components/index.jsx +++ b/tgui/packages/tgui/components/index.jsx @@ -22,6 +22,7 @@ export { Flex } from './Flex'; export { FitText } from './FitText'; export { Grid } from './Grid'; export { Icon } from './Icon'; +export { ImageButton } from './ImageButton'; export { InfinitePlane } from './InfinitePlane'; export { Interactive } from './Interactive'; export { Input } from './Input'; diff --git a/tgui/packages/tgui/constants.ts b/tgui/packages/tgui/constants.ts index baef570566d8..6944450ed237 100644 --- a/tgui/packages/tgui/constants.ts +++ b/tgui/packages/tgui/constants.ts @@ -28,6 +28,7 @@ export const COLORS = { science: '#9b59b6', engineering: '#f1c40f', cargo: '#f39c12', + service: '#7cc46a', centcom: '#00c100', other: '#c38312', }, diff --git a/tgui/packages/tgui/interfaces/AntagInfoBorer.tsx b/tgui/packages/tgui/interfaces/AntagInfoBorer.tsx index 66ee012c7ece..6687d2a1cb52 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoBorer.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoBorer.tsx @@ -110,8 +110,8 @@ const MainPage = () => {
    - You are a Cortical Borer, a creature that crawls into peoples - ear's to then settle on the brain + You are a Cortical Borer, a creature that crawls into peoples ears + to then settle in the brain. diff --git a/tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx b/tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx index e41c923b8dbe..1b4d2d6f8bbc 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx @@ -131,11 +131,7 @@ const IntroductionSection = (props) => { const { act, data } = useBackend(); const { true_name, hive_name, objectives, can_change_objective } = data; return ( -
    4} - > +
    You are {true_name} from the diff --git a/tgui/packages/tgui/interfaces/ArtifactForm.jsx b/tgui/packages/tgui/interfaces/ArtifactForm.jsx index 6da89c9386e4..1ce1a8e36154 100644 --- a/tgui/packages/tgui/interfaces/ArtifactForm.jsx +++ b/tgui/packages/tgui/interfaces/ArtifactForm.jsx @@ -8,13 +8,15 @@ export const ArtifactForm = (props) => { const { allorigins, chosenorigin, + allfaults, + chosenfault, alltypes, chosentype, alltriggers, chosentriggers, } = data; return ( - +
    {allorigins.map((key) => ( @@ -31,13 +33,28 @@ export const ArtifactForm = (props) => { /> ))}
    +
    + {allfaults.map((thing) => ( +
    {alltypes.map((x) => (
    +
    +
    + ); +}; diff --git a/tgui/packages/tgui/interfaces/BotanicalLexicon.jsx b/tgui/packages/tgui/interfaces/BotanicalLexicon.jsx index e950e2196e96..17a1c1a184b0 100644 --- a/tgui/packages/tgui/interfaces/BotanicalLexicon.jsx +++ b/tgui/packages/tgui/interfaces/BotanicalLexicon.jsx @@ -1,5 +1,5 @@ import { toTitleCase } from 'common/string'; -import { resolveAsset } from '../assets'; +import { classes } from 'common/react'; import { useBackend, useLocalState } from '../backend'; import { Flex, Box, Tabs, Stack } from '../components'; import { Window } from '../layouts'; @@ -49,14 +49,11 @@ const PlantInfo = (props) => { diff --git a/tgui/packages/tgui/interfaces/ChameleonCard.jsx b/tgui/packages/tgui/interfaces/ChameleonCard.jsx index 5969d926601a..5d3619735f53 100644 --- a/tgui/packages/tgui/interfaces/ChameleonCard.jsx +++ b/tgui/packages/tgui/interfaces/ChameleonCard.jsx @@ -58,10 +58,16 @@ export const ChameleonCard = (props) => { showBasic={!!showBasic} accessMod={(ref, wildcard) => act('mod_access', { - access_target: ref, - access_wildcard: wildcard, + actions: [{ access_target: ref, access_wildcard: wildcard }], }) } + multiAccessMod={(actions) => { + act('mod_access', { + actions: actions.map(([ref, wildcard]) => { + return { access_target: ref, access_wildcard: wildcard }; + }), + }); + }} />
    diff --git a/tgui/packages/tgui/interfaces/CrewConsole.tsx b/tgui/packages/tgui/interfaces/CrewConsole.tsx new file mode 100644 index 000000000000..370e94689dae --- /dev/null +++ b/tgui/packages/tgui/interfaces/CrewConsole.tsx @@ -0,0 +1,307 @@ +import { Box, Button, Icon, Input, Section, Table } from '../components'; +import { BooleanLike } from 'common/react'; +import { createSearch } from 'common/string'; +import { useBackend, useLocalState } from '../backend'; +import { COLORS } from '../constants'; +import { Window } from '../layouts'; + +const HEALTH_COLOR_BY_LEVEL = [ + '#17d568', + '#c4cf2d', + '#e67e22', + '#ed5100', + '#e74c3c', + '#801308', +]; + +const SORT_NAMES = { + ijob: 'Job', + name: 'Name', + area: 'Position', + health: 'Vitals', +}; + +const STAT_LIVING = 0; +const STAT_DEAD = 4; + +const SORT_OPTIONS = ['health', 'ijob', 'name', 'area']; + +const jobIsHead = (jobId: number) => jobId % 10 === 0; + +const jobToColor = (jobId: number) => { + if (jobId === 0) { + return COLORS.department.captain; + } + if (jobId >= 10 && jobId < 20) { + return COLORS.department.security; + } + if (jobId >= 20 && jobId < 30) { + return COLORS.department.medbay; + } + if (jobId >= 30 && jobId < 40) { + return COLORS.department.science; + } + if (jobId >= 40 && jobId < 50) { + return COLORS.department.engineering; + } + if (jobId >= 50 && jobId < 60) { + return COLORS.department.cargo; + } + if (jobId >= 60 && jobId < 200) { + return COLORS.department.service; + } + if (jobId >= 200 && jobId < 230) { + return COLORS.department.centcom; + } + return COLORS.department.other; +}; + +const statToIcon = (life_status: number) => { + switch (life_status) { + case STAT_LIVING: + return 'heart'; + case STAT_DEAD: + return 'skull'; + } + return 'heartbeat'; +}; + +const healthSort = (a: CrewSensor, b: CrewSensor) => { + if (a.life_status > b.life_status) return -1; + if (a.life_status < b.life_status) return 1; + if (a.health < b.health) return -1; + if (a.health > b.health) return 1; + return 0; +}; + +const areaSort = (a: CrewSensor, b: CrewSensor) => { + a.area ??= '~'; + b.area ??= '~'; + if (a.area < b.area) return -1; + if (a.area > b.area) return 1; + return 0; +}; + +const healthToAttribute = ( + oxy: number, + tox: number, + burn: number, + brute: number, + attributeList: string[], +) => { + const healthSum = oxy + tox + burn + brute; + const level = Math.min(Math.max(Math.ceil(healthSum / 25), 0), 5); + return attributeList[level]; +}; + +type HealthStatProps = { + type: string; + value: number; +}; + +const HealthStat = (props: HealthStatProps) => { + const { type, value } = props; + return ( + + {value} + + ); +}; + +export const CrewConsole = () => { + return ( + + +
    + +
    +
    +
    + ); +}; + +type CrewSensor = { + name: string; + assignment: string | undefined; + ijob: number; + life_status: number; + oxydam: number; + toxdam: number; + burndam: number; + brutedam: number; + area: string | undefined; + health: number; + can_track: BooleanLike; + ref: string; +}; + +type CrewConsoleData = { + sensors: CrewSensor[]; + link_allowed: BooleanLike; +}; + +const CrewTable = () => { + const { data } = useBackend(); + const { sensors } = data; + + const [sortAsc, setSortAsc] = useLocalState('sortAsc', true); + const [searchQuery, setSearchQuery] = useLocalState( + 'searchQuery', + '', + ); + const [sortBy, setSortBy] = useLocalState('sortBy', SORT_OPTIONS[0]); + + const cycleSortBy = () => { + let idx = SORT_OPTIONS.indexOf(sortBy) + 1; + if (idx === SORT_OPTIONS.length) idx = 0; + setSortBy(SORT_OPTIONS[idx]); + }; + + const nameSearch = createSearch(searchQuery, (crew: CrewSensor) => crew.name); + + const sorted = sensors.filter(nameSearch).sort((a, b) => { + switch (sortBy) { + case 'name': + return sortAsc ? +(a.name > b.name) : +(b.name > a.name); + case 'ijob': + return sortAsc ? a.ijob - b.ijob : b.ijob - a.ijob; + case 'health': + return sortAsc ? healthSort(a, b) : healthSort(b, a); + case 'area': + return sortAsc ? areaSort(a, b) : areaSort(b, a); + default: + return 0; + } + }); + + return ( +
    + + + + setSearchQuery((e.target as HTMLTextAreaElement).value) + } + /> + + } + > + + + Name + + + Vitals + + + Position + + {!!data.link_allowed && ( + + Tracking + + )} + + {sorted.map((sensor) => ( + + ))} +
    +
    + ); +}; + +type CrewTableEntryProps = { + sensor_data: CrewSensor; +}; + +const CrewTableEntry = (props: CrewTableEntryProps) => { + const { act, data } = useBackend(); + const { link_allowed } = data; + const { sensor_data } = props; + const { + name, + assignment, + ijob, + life_status, + oxydam, + toxdam, + burndam, + brutedam, + area, + can_track, + } = sensor_data; + + return ( + + + {name} + {assignment !== undefined ? ` (${assignment})` : ''} + + + {oxydam !== undefined ? ( + + ) : life_status !== STAT_DEAD ? ( + + ) : ( + + )} + + + {oxydam !== undefined ? ( + + + {'/'} + + {'/'} + + {'/'} + + + ) : life_status !== STAT_DEAD ? ( + 'Alive' + ) : ( + 'Dead' + )} + + + {area !== '~' && area !== undefined ? ( + area + ) : ( + + )} + + {!!link_allowed && ( + + + + )} + + ); +}; diff --git a/tgui/packages/tgui/interfaces/CrewConsole.jsx b/tgui/packages/tgui/interfaces/CrewConsoleNovaBlueshield.jsx similarity index 74% rename from tgui/packages/tgui/interfaces/CrewConsole.jsx rename to tgui/packages/tgui/interfaces/CrewConsoleNovaBlueshield.jsx index 5462a5ab90ff..a939e3a4d076 100644 --- a/tgui/packages/tgui/interfaces/CrewConsole.jsx +++ b/tgui/packages/tgui/interfaces/CrewConsoleNovaBlueshield.jsx @@ -1,6 +1,8 @@ +// THIS IS A NOVA SECTOR UI FILE import { sortBy } from 'common/collections'; + import { useBackend } from '../backend'; -import { Box, Button, Section, Table, Icon } from '../components'; +import { Box, Button, Icon, Section, Table } from '../components'; import { COLORS } from '../constants'; import { Window } from '../layouts'; @@ -12,10 +14,14 @@ const HEALTH_COLOR_BY_LEVEL = [ '#e74c3c', '#801308', ]; - -const STAT_LIVING = 0; -const STAT_DEAD = 4; - +const HEALTH_ICON_BY_LEVEL = [ + 'heart', + 'heart', + 'heart', + 'heart', + 'heartbeat', + 'skull', +]; const jobIsHead = (jobId) => jobId % 10 === 0; const jobToColor = (jobId) => { @@ -37,25 +43,19 @@ const jobToColor = (jobId) => { if (jobId >= 50 && jobId < 60) { return COLORS.department.cargo; } - if (jobId >= 200 && jobId < 230) { + if (jobId >= 60 && jobId < 80) { + return COLORS.department.service; + } + if (jobId >= 200 && jobId < 240) { return COLORS.department.centcom; } return COLORS.department.other; }; -const statToIcon = (life_status) => { - switch (life_status) { - case STAT_LIVING: - return 'heart'; - case STAT_DEAD: - return 'skull'; - } - return 'heartbeat'; -}; - const healthToAttribute = (oxy, tox, burn, brute, attributeList) => { const healthSum = oxy + tox + burn + brute; - const level = Math.min(Math.max(Math.ceil(healthSum / 25), 0), 5); + const level = Math.min(Math.max(Math.ceil(healthSum / 50), 0), 5); + // 200 Default Health, Sum Divided by 50, 6 Health States return attributeList[level]; }; @@ -68,9 +68,10 @@ const HealthStat = (props) => { ); }; -export const CrewConsole = () => { +// all of this just to change the name +export const CrewConsoleNovaBlueshield = () => { return ( - +
    @@ -84,21 +85,20 @@ const CrewTable = (props) => { const { act, data } = useBackend(); const sensors = sortBy((s) => s.ijob)(data.sensors ?? []); return ( - +
    - Name - + + Name + + + Status + Vitals - + Position - {!!data.link_allowed && ( - - Tracking - - )} {sensors.map((sensor) => ( @@ -115,6 +115,7 @@ const CrewTableEntry = (props) => { name, assignment, ijob, + is_robot, life_status, oxydam, toxdam, @@ -131,9 +132,18 @@ const CrewTableEntry = (props) => { {assignment !== undefined ? ` (${assignment})` : ''} - {oxydam !== undefined ? ( + {is_robot ? : ''} + + + {oxydam !== undefined && life_status ? ( { )} size={1} /> - ) : life_status !== STAT_DEAD ? ( + ) : life_status ? ( ) : ( @@ -160,7 +170,7 @@ const CrewTableEntry = (props) => { {'/'} - ) : life_status !== STAT_DEAD ? ( + ) : life_status ? ( 'Alive' ) : ( 'Dead' diff --git a/tgui/packages/tgui/interfaces/InfuserBook.tsx b/tgui/packages/tgui/interfaces/InfuserBook.tsx index e81d1204ad3d..4e4f796068fa 100644 --- a/tgui/packages/tgui/interfaces/InfuserBook.tsx +++ b/tgui/packages/tgui/interfaces/InfuserBook.tsx @@ -28,7 +28,7 @@ type TierData = { name: string; }; -const PAGE_HEIGHT = '235px'; +const PAGE_HEIGHT = 30; const TIER2TIERDATA: TierData[] = [ { @@ -68,8 +68,8 @@ const TIER2TIERDATA: TierData[] = [ }, ]; -export const InfuserBook = (props) => { - const { data } = useBackend(); +export const InfuserBook = (props, context) => { + const { data, act } = useBackend(); const { entries } = data; const [bookPosition, setBookPosition] = useLocalState( @@ -86,7 +86,11 @@ export const InfuserBook = (props) => { let currentEntry = paginatedEntries[chapter][pageInChapter]; const switchChapter = (newChapter) => { + if (chapter === newChapter) { + return; + } setBookPosition({ chapter: newChapter, pageInChapter: 0 }); + act('play_flip_sound'); // just so we can play a sound fx on page turn }; const setPage = (newPage) => { @@ -111,6 +115,7 @@ export const InfuserBook = (props) => { newBookPosition.pageInChapter = newPage; } setBookPosition(newBookPosition); + act('play_flip_sound'); // just so we can play a sound fx on page turn }; const tabs = [ @@ -126,7 +131,7 @@ export const InfuserBook = (props) => { const restrictedNext = chapter === 3 && pageInChapter === 0; return ( - + @@ -216,7 +221,7 @@ export const InfuserInstructions = (props) => {
    3. Have someone activate the machine externally.
    - + And you're done! Note that the infusion source will be obliterated in the process. diff --git a/tgui/packages/tgui/interfaces/NtosCard.jsx b/tgui/packages/tgui/interfaces/NtosCard.jsx index a81f74722e65..354042d8d578 100644 --- a/tgui/packages/tgui/interfaces/NtosCard.jsx +++ b/tgui/packages/tgui/interfaces/NtosCard.jsx @@ -85,10 +85,18 @@ export const NtosCardContent = (props) => { } accessMod={(ref, wildcard) => act('PRG_access', { - access_target: ref, - access_wildcard: wildcard, + actions: [ + { access_target: ref, access_wildcard: wildcard }, + ], }) } + multiAccessMod={(actions) => { + act('PRG_access', { + actions: actions.map(([ref, wildcard]) => { + return { access_target: ref, access_wildcard: wildcard }; + }), + }); + }} /> )} diff --git a/tgui/packages/tgui/interfaces/OpposingForcePanel.jsx b/tgui/packages/tgui/interfaces/OpposingForcePanel.jsx index 34621a8a4577..c38c1bdd694c 100644 --- a/tgui/packages/tgui/interfaces/OpposingForcePanel.jsx +++ b/tgui/packages/tgui/interfaces/OpposingForcePanel.jsx @@ -248,6 +248,7 @@ export const OpposingForceTab = (props) => { height="100px" value={backstory} placeholder="Provide a description of why you want to do bad things. Include specifics such as what lead upto the events that made you want to do bad things, think of it as though you were your character, react appropriately. If you don't have any ideas, check the #player-shared-opfors channel for some. (2000 char limit)" + maxLength={2000} onChange={(_e, value) => act('set_backstory', { backstory: value, @@ -351,6 +352,7 @@ export const OpposingForceObjectives = (props) => { width="100%" placeholder="blank objective" value={selectedObjective.title} + maxLength={64} onChange={(e, value) => act('set_objective_title', { objective_ref: selectedObjective.ref, @@ -466,6 +468,7 @@ export const OpposingForceObjectives = (props) => { fluid disabled={!can_edit} height="85px" + maxLength={1000} value={selectedObjective.description} onChange={(e, value) => act('set_objective_description', { @@ -492,6 +495,7 @@ export const OpposingForceObjectives = (props) => { disabled={!can_edit} height="85px" value={selectedObjective.justification} + maxLength={1000} onChange={(e, value) => act('set_objective_justification', { objective_ref: selectedObjective.ref, @@ -581,6 +585,7 @@ export const EquipmentTab = (props) => { width="100%" placeholder="Reason for item" value={equipment.reason} + maxLength={1000} onChange={(e, value) => act('set_equipment_reason', { selected_equipment_ref: equipment.ref, @@ -656,6 +661,7 @@ export const AdminChatTab = (props) => { selfClear placeholder="Send a message or command using '/'" mt={1} + maxLength={1024} onEnter={(e, value) => act('send_message', { message: value, diff --git a/tgui/packages/tgui/interfaces/Orbit/constants.ts b/tgui/packages/tgui/interfaces/Orbit/constants.ts index 5c73e17ed723..28501ad361eb 100644 --- a/tgui/packages/tgui/interfaces/Orbit/constants.ts +++ b/tgui/packages/tgui/interfaces/Orbit/constants.ts @@ -8,6 +8,8 @@ export const ANTAG2COLOR = { 'Emergency Response Team': 'teal', 'Escaped Fugitives': 'orange', 'Xenomorph Infestation': 'violet', + 'Spacetime Aberrations': 'white', + 'Deviant Crew': 'white', } as const; export const THREAT = { diff --git a/tgui/packages/tgui/interfaces/PersonalCrafting.tsx b/tgui/packages/tgui/interfaces/PersonalCrafting.tsx index 5c6e5817632d..bfea132ec0ef 100644 --- a/tgui/packages/tgui/interfaces/PersonalCrafting.tsx +++ b/tgui/packages/tgui/interfaces/PersonalCrafting.tsx @@ -154,6 +154,31 @@ type Data = { nutriments: number; }; +interface Item { + name: string; + desc?: string; + reqs?: Record; + chem_catalysts?: Record; + tool_paths?: string[]; + tool_behaviors?: string[]; + machinery?: string[]; + structures?: string[]; + steps?: string[]; + result: string; + non_craftable?: boolean; + nutriments?: number; + foodtypes?: string[]; + ref: string; +} + +interface RecipeContentProps { + item: Item; + craftable: boolean; + busy: boolean; + mode: any; + diet: any; +} + export const PersonalCrafting = (props) => { const { act, data } = useBackend(); const { @@ -203,8 +228,11 @@ export const PersonalCrafting = (props) => { recipe.foodtypes?.includes(activeType))) || // Is material mode and the active material or catalysts match (tabMode === TABS.material && + recipe.reqs && Object.keys(recipe.reqs).includes(activeMaterial)) || - // Is category mode and the active categroy matches + // Or with Optional Chaining + // (tabMode === TABS.material && Object.keys(recipe.reqs ?? {}).includes(activeMaterial)) || + // Is category mode and the active category matches (tabMode === TABS.category && ((activeCategory === 'Can Make' && Boolean(craftability[recipe.ref])) || @@ -738,6 +766,127 @@ const RecipeContentCompact = ({ item, craftable, busy, mode }) => { const RecipeContent = ({ item, craftable, busy, mode, diet }) => { const { act } = useBackend(); + + const specialSteps = [ + 'Optional Steps', + 'End Optional Steps', + 'Exclusive Optional Steps', + 'End Exclusive Optional Steps', + 'Optional Step', + 'End Optional Step', + ]; + + interface StepGroup { + label: string; + steps: string[]; + } + + type GroupedStep = string | StepGroup; + + const isValidGroup = (group: StepGroup | null): group is StepGroup => { + return group !== null; + }; + + const groupedSteps: string[] = []; + const groupStack: StepGroup[] = []; + let currentGroup: StepGroup | null = null; + let groupKey = 0; + + // Function to push step to groupedSteps or currentGroup + const pushStep = (step: string, count: number) => { + const stepText = count > 1 ? `${step} x${count}` : step; + if (currentGroup) { + currentGroup.steps.push(stepText); + } else { + groupedSteps.push(
  • {stepText}
  • ); + } + }; + + let previousStep = ''; + let duplicateCount = 0; + + item.steps?.forEach((step, index) => { + const trimmedStep = step.trim(); + + if (specialSteps.includes(trimmedStep)) { + // Push previous duplicate steps if any + if (duplicateCount > 0) { + pushStep(previousStep, duplicateCount); + duplicateCount = 0; + } + + if (trimmedStep.includes('End')) { + // Close the current group if it exists and has steps + if (currentGroup) { + if (currentGroup.steps.length > 0) { + groupedSteps.push( + + {currentGroup.label} +
      + {currentGroup.steps.map((groupStep, groupIndex) => ( +
    • {groupStep}
    • + ))} +
    +
    , + ); + } + currentGroup = null; // Reset the group + } + + // Pop the previous group from the stack + if (groupStack.length > 0) { + currentGroup = groupStack.pop() || null; + } + } else { + // Handle starting a new group + if (currentGroup && currentGroup.steps.length > 0) { + // If there's an ongoing group, push it to the stack + groupStack.push(currentGroup); + } + // Start a new group + currentGroup = { label: trimmedStep, steps: [] }; + } + } else if (trimmedStep === previousStep) { + duplicateCount++; + } else { + // Push previous duplicate steps if any + if (duplicateCount > 0) { + pushStep(previousStep, duplicateCount); + } + previousStep = trimmedStep; + duplicateCount = 1; + } + }); + + // Push the last duplicate steps if any + if (duplicateCount > 0) { + pushStep(previousStep, duplicateCount); + } + + // Handle any leftover group that didn't get closed + if (currentGroup && (currentGroup as any).steps.length > 0) { + groupedSteps.push( + + {(currentGroup as any).label} +
      + {(currentGroup as any).steps.map((groupStep, groupIndex) => ( +
    • {groupStep}
    • + ))} +
    +
    , + ); + } + return (
    @@ -826,11 +975,7 @@ const RecipeContent = ({ item, craftable, busy, mode, diet }) => { {!!item.steps?.length && ( -
      - {item.steps.map((step) => ( -
    • {step}
    • - ))} -
    +
      {groupedSteps}
    )} diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/JobsPage.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/JobsPage.tsx index b89abe03d9b2..3f8e2f2e20af 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/JobsPage.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/JobsPage.tsx @@ -422,7 +422,11 @@ export const JobsPage = () => { - + + + + +
    diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/corticalborer.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/corticalborer.ts index 4b87325a3990..cb16af0760ad 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/corticalborer.ts +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/corticalborer.ts @@ -8,7 +8,7 @@ const CorticalBorer: Antagonist = { multiline` You are a slug that crawls into peoples ears and then manipulates them in various ways - to make sure your species survives and thrives + to make sure your species survives and thrives. `, ], category: Category.Midround, diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/monkestation/pain.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/monkestation/pain.tsx new file mode 100644 index 000000000000..82bf7f0e8adf --- /dev/null +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/monkestation/pain.tsx @@ -0,0 +1,13 @@ +import { CheckboxInput, FeatureToggle } from '../../base'; + +export const pain_flashes: FeatureToggle = { + name: 'Disable Pain Flashes', + category: 'GAMEPLAY', + component: CheckboxInput, +}; + +export const pain_messages: FeatureToggle = { + name: 'Disable Pain Messages', + category: 'GAMEPLAY', + component: CheckboxInput, +}; diff --git a/tgui/packages/tgui/interfaces/RanchingEncyclopedia.jsx b/tgui/packages/tgui/interfaces/RanchingEncyclopedia.jsx index 846c91b5d6ab..7c50ce8007a7 100644 --- a/tgui/packages/tgui/interfaces/RanchingEncyclopedia.jsx +++ b/tgui/packages/tgui/interfaces/RanchingEncyclopedia.jsx @@ -1,5 +1,5 @@ import { toTitleCase } from 'common/string'; -import { resolveAsset } from '../assets'; +import { classes } from 'common/react'; import { useBackend, useLocalState } from '../backend'; import { Flex, Box, Tabs, Stack } from '../components'; import { Window } from '../layouts'; @@ -49,14 +49,11 @@ const ChickenInfo = (props) => { diff --git a/tgui/packages/tgui/interfaces/Secrets.jsx b/tgui/packages/tgui/interfaces/Secrets.jsx index 9af68a897aef..146a40b427f6 100644 --- a/tgui/packages/tgui/interfaces/Secrets.jsx +++ b/tgui/packages/tgui/interfaces/Secrets.jsx @@ -480,8 +480,8 @@ const FunForYouTab = (props) => { color="red" icon="user-secret" fluid - content="Everyone is the traitor" - onClick={() => act('traitor_all')} + content="Everyone is the antag" + onClick={() => act('antag_all')} /> diff --git a/tgui/packages/tgui/interfaces/ShipbreakerConsole.tsx b/tgui/packages/tgui/interfaces/ShipbreakerConsole.tsx new file mode 100644 index 000000000000..4892bb803adc --- /dev/null +++ b/tgui/packages/tgui/interfaces/ShipbreakerConsole.tsx @@ -0,0 +1,41 @@ +import { BooleanLike } from 'common/react'; +import { useBackend } from '../backend'; +import { Button, ProgressBar, Section } from '../components'; +import { Window } from '../layouts'; + +type Data = { + health: BooleanLike; +}; + +export const ShipbreakerConsole = (props) => { + const { act, data } = useBackend(); + // Extract `health` and `color` variables from the `data` object. + const { health } = data; + return ( + + +
    + +
    +
    +
    +
    +
    +
    +
    + ); +}; diff --git a/tgui/packages/tgui/interfaces/StackCraft.js b/tgui/packages/tgui/interfaces/StackCraft.js new file mode 100644 index 000000000000..0cd9ea90336c --- /dev/null +++ b/tgui/packages/tgui/interfaces/StackCraft.js @@ -0,0 +1,242 @@ +import { useBackend, useLocalState } from '../backend'; +import { filter, sortBy, map, reduce } from 'common/collections'; +import { flow } from 'common/fp'; +import { createSearch } from 'common/string'; +import { Window } from '../layouts'; +import { + Box, + Section, + NoticeBox, + Collapsible, + Input, + ImageButton, + Button, +} from '../components'; + +export const StackCraft = () => { + return ( + + + + + + ); +}; + +const Recipes = (props, context) => { + const { data } = useBackend(); + const { amount, recipes } = data; + const [searchText, setSearchText] = useLocalState('searchText', ''); + + const filteredRecipes = filterRecipeList(recipes, createSearch(searchText)); + const [searchActive, setSearchActive] = useLocalState('', true); + + return ( +
    + {searchActive && ( + setSearchText(value)} + /> + )} +
    + ); +}; + +/** + * Filter recipe list by keys, resursing into subcategories. + * Returns the filtered list, or undefined, if there is no list left. + * @param recipeList the recipe list to filter + * @param titleFilter the filter function for recipe title + */ +const filterRecipeList = (recipeList, titleFilter) => { + const filteredList = flow([ + map((entry) => { + const [title, recipe] = entry; + + if (isRecipeList(recipe)) { + // If category name matches, return the whole thing. + if (titleFilter(title)) { + return entry; + } + + // otherwise, filter sub-entries. + return [title, filterRecipeList(recipe, titleFilter)]; + } + + return titleFilter(title) ? entry : [title, undefined]; + }), + filter(([title, recipe]) => recipe !== undefined), + sortBy(([title, recipe]) => title), + sortBy(([title, recipe]) => !isRecipeList(recipe)), + reduce((obj, [title, recipe]) => { + obj[title] = recipe; + return obj; + }, {}), + ])(Object.entries(recipeList)); + + return Object.keys(filteredList).length ? filteredList : undefined; +}; + +/** + * Check whether recipe is recipe list or plain recipe. + * Returns true if the recipe is recipe list, false othewise + * @param recipe recipe to check + */ +const isRecipeList = (recipe) => { + return recipe['ref'] === undefined; +}; + +/** + * Calculates maximum possible multiplier for recipe to be made. + * Returns number of times, recipe can be made. + * @param recipe recipe to calculate multiplier for + * @param amount available amount of resource used in passed recipe + */ +const calculateMultiplier = (recipe, amount) => { + if (recipe.required_amount > amount) { + return 0; + } + + return Math.floor(amount / recipe.required_amount); +}; + +const Multipliers = (props, context) => { + const { act } = useBackend(context); + + const { recipe, max_possible_multiplier } = props; + + const max_available_multiplier = Math.min( + max_possible_multiplier, + Math.floor(recipe.max_result_amount / recipe.result_amount), + ); + + const multipliers = [5, 10, 25]; + + const finalResult = []; + + for (const multiplier of multipliers) { + if (max_available_multiplier >= multiplier) { + finalResult.push( + + act('make', { + ref: recipe.ref, + multiplier: multiplier, + }) + } + />, + ); + } + } + + if (multipliers.indexOf(max_available_multiplier) === -1) { + finalResult.push( + + act('make', { + ref: recipe.ref, + multiplier: max_available_multiplier, + }) + } + />, + ); + } + + return <>{finalResult.map((x) => x)}; +}; + +const RecipeListBox = (props, context) => { + const { recipes } = props; + + return Object.entries(recipes).map((entry) => { + const [title, recipe] = entry; + if (isRecipeList(recipe)) { + return ( + + + + + + ); + } else { + return ; + } + }); +}; + +const RecipeBox = (props, context) => { + const { act, data } = useBackend(context); + const { amount } = data; + const { title, recipe } = props; + const { result_amount, required_amount, max_result_amount, ref, image } = + recipe; + + const resAmountLabel = result_amount > 1 ? `${result_amount}x ` : ''; + const sheetSuffix = required_amount > 1 ? 's' : ''; + const buttonName = `${resAmountLabel}${title}`; + const tooltipContent = `${required_amount} sheet${sheetSuffix}`; + + const max_possible_multiplier = calculateMultiplier(recipe, amount); + + return ( + + act('make', { + ref: ref, + multiplier: 1, + }) + } + > + {max_result_amount > 1 && max_possible_multiplier > 1 && ( + + )} + + ); +}; diff --git a/tgui/packages/tgui/interfaces/Vending.tsx b/tgui/packages/tgui/interfaces/Vending.tsx index b701bb6cdff6..fc4385545cac 100644 --- a/tgui/packages/tgui/interfaces/Vending.tsx +++ b/tgui/packages/tgui/interfaces/Vending.tsx @@ -58,11 +58,13 @@ type UserData = { type StockItem = { name: string; + path: string; amount: number; colorable: boolean; }; type CustomInput = { + path: string; name: string; price: number; img: string; @@ -209,10 +211,10 @@ const ProductDisplay = (props: { }) .map((product) => ( ))}
    @@ -330,7 +332,7 @@ const ProductButton = (props) => { disabled={disabled} onClick={() => act('dispense', { - item: product.name, + item: product.path, }) } > diff --git a/tgui/packages/tgui/interfaces/common/AccessList.jsx b/tgui/packages/tgui/interfaces/common/AccessList.jsx index 8f651618b6c4..b1479ee31369 100644 --- a/tgui/packages/tgui/interfaces/common/AccessList.jsx +++ b/tgui/packages/tgui/interfaces/common/AccessList.jsx @@ -1,6 +1,6 @@ import { sortBy } from 'common/collections'; import { useSharedState } from '../../backend'; -import { Button, Flex, Section, Tabs } from '../../components'; +import { Button, Flex, Section, Tabs, Box } from '../../components'; export const AccessList = (props) => { const { @@ -8,6 +8,7 @@ export const AccessList = (props) => { wildcardSlots = {}, selectedList = [], accessMod, + multiAccessMod, trimAccess = [], accessFlags = {}, accessFlagNames = {}, @@ -97,6 +98,57 @@ export const AccessList = (props) => { } }); + const [selectedAccessName] = useSharedState( + 'accessName', + parsedRegions[0]?.name, + ); + + const handleGrantAll = () => { + // Find the selected region by name + const selectedRegion = parsedRegions.find( + (region) => region.name === selectedAccessName, + ); + + if (!selectedRegion) return; // If no region is selected, do nothing + + const actions = []; + + // Calculate the current wildcard limit and usage + const wildcard = wildcardSlots[selectedWildcard]; + const wcLimit = wildcard ? wildcard.limit : -1; // -1 means no limit + const wcUsage = wildcard ? wildcard.usage.length : 0; + const wcAvail = wcLimit === -1 ? Infinity : wcLimit - wcUsage; + + // Grant access for all items in the selected region, respecting the limit + selectedRegion.accesses.forEach((access) => { + if (actions.length < wcAvail && !selectedList.includes(access.ref)) { + actions.push([ + access.ref, + selectedWildcard === 'None' ? null : selectedWildcard, + ]); + } + }); + + multiAccessMod(actions); + }; + + const handleRemoveAll = () => { + // Find the selected region by name + const selectedRegion = parsedRegions.find( + (region) => region.name === selectedAccessName, + ); + + if (!selectedRegion) return; // If no region is selected, do nothing + + const actions = []; + selectedRegion.accesses.forEach((access) => { + if (selectedList.includes(access.ref)) { + actions.push([access.ref, null]); + } + }); + multiAccessMod(actions); + }; + return (
    @@ -113,6 +165,16 @@ export const AccessList = (props) => { + {!!multiAccessMod && ( + + + + + )} , +}; + +const COLORS_SPECTRUM = [ + 'red', + 'orange', + 'yellow', + 'olive', + 'green', + 'teal', + 'blue', + 'violet', + 'purple', + 'pink', + 'brown', + 'grey', + 'gold', +]; + +const COLORS_STATES = ['good', 'average', 'bad', 'black', 'white']; + +const Story = (props, context) => { + const [disabled, setDisabled] = useLocalState('disabled', false); + const [onClick, setOnClick] = useLocalState('onClick', true); + const [vertical1, setVertical1] = useLocalState('vertical1', true); + const [vertical2, setVertical2] = useLocalState('vertical2', true); + const [vertical3, setVertical3] = useLocalState('vertical3', false); + const [title, setTitle] = useLocalState('title', 'Image Button'); + const [content, setContent] = useLocalState('content', 'Image is a LIE!'); + const [itemContent, setItemContent] = useLocalState( + 'itemContent', + 'Second Button', + ); + const [itemIcon, setItemIcon] = useLocalState('itemIcon', 'face-smile'); + + const [itemIconPos, setItemIconPos] = useLocalState('itemIconPos', 'default'); + + const [itemIconSize, setItemIconSize] = useLocalState('itemIconSize', 2); + + const [imageSize, setImageSize] = useLocalState(context, 'imageSize', 64); + + const toggleVertical1 = () => { + setVertical1(!vertical1); + }; + + const toggleVertical2 = () => { + setVertical2(!vertical2); + }; + + const toggleVertical3 = () => { + setVertical3(!vertical3); + }; + + const toggleDisabled = () => { + setDisabled(!disabled); + }; + + const toggleOnClick = () => { + setOnClick(!onClick); + }; + + return ( + <> +
    + + + + + setTitle(value)} /> + + + setContent(value)} + /> + + + setImageSize(value)} + /> + + + + + + + + + + + + + + + setItemContent(value)} + /> + + + setItemIcon(value)} + /> + + + setItemIconPos(value)} + /> + + + setItemIconSize(value)} + /> + + + + + + 'false' : ''} + > + {!vertical3 && ( + + )} + + +
    +
    + } + > + {COLORS_STATES.map((color) => ( + 'false' : ''} + /> + ))} +
    +
    + } + > + {COLORS_SPECTRUM.map((color) => ( + 'false' : ''} + /> + ))} +
    + + ); +}; diff --git a/tgui/packages/tgui/styles/components/ImageButton.scss b/tgui/packages/tgui/styles/components/ImageButton.scss new file mode 100644 index 000000000000..55bb8ca4f680 --- /dev/null +++ b/tgui/packages/tgui/styles/components/ImageButton.scss @@ -0,0 +1,223 @@ +/** + * Copyright (c) 2024 Aylong (https://github.com/AyIong) + * SPDX-License-Identifier: MIT + */ + +@use '../base.scss'; +@use '../colors.scss'; +@use './Divider.scss'; +@use '../functions.scss' as *; + +$color-default: colors.bg(base.$color-bg-section) !default; +$color-disabled: #4d1717 !default; +$color-selected: colors.bg(colors.$green) !default; +$bg-map: colors.$bg-map !default; + +@mixin button-style($color, $clickable: false) { + $luminance: luminance($color); + + background-color: rgba($color, 0.15); + border: base.em(1px) solid rgba(lighten($color, 50%), 0.2); + + @if $clickable { + transition: + color 100ms, + background-color 100ms; + + &:focus { + transition: + color 250ms, + background-color 250ms; + } + + &:hover { + background-color: rgba(lighten($color, 25%), 0.25); + } + } +} + +.ImageButton__image { + line-height: 0; + align-self: center; +} + +.ImageButton__vertical, +.ImageButton--vertical { + display: inline-block; +} + +.ImageButton__horizontal { + display: flex; + user-select: none; + -ms-user-select: none; + width: 100%; + align-items: center; +} + +.ImageButton--horizontal { + display: flex; + margin-bottom: 0.5em; + user-select: none; + -ms-user-select: none; + + &:last-child { + margin-bottom: 0; + } +} + +@each $color-name, $color-value in $bg-map { + .ImageButton--color--#{$color-name} { + @include button-style($color-value); + } + + .ImageButton--color--clickable--#{$color-name} { + @include button-style($color-value, true); + } +} + +.ImageButton--color--default { + @include button-style(rgba(lighten($color-default, 100%), 0.2)); +} + +.ImageButton--color--default--clickable { + @include button-style(rgba(lighten($color-default, 100%), 0.2), true); +} + +.ImageButton--disabled { + background-color: rgba($color-disabled, 0.25) !important; + border: base.em(1px) solid rgba(lighten($color-disabled, 100%), 0.15); +} + +.ImageButton--selected { + @include button-style($color-selected, true); +} + +.ImageButton__content__vertical { + height: 1.6em; + padding-top: 2px; + border: 0; + text-align: center; + font-size: 11px; + font-weight: bold; +} + +.ImageButton__content__horizontal { + display: block; + text-align: center; + font-size: 12px; + flex-grow: 1; +} + +.ImageButton__content__horizontal--title { + font-weight: bold; + padding: base.em(6px); + padding-bottom: 0; +} + +.ImageButton__content__horizontal--content { + padding: base.em(6px); +} + +.ImageButton__content__horizontal--divider { + margin: base.em(6px); + margin-bottom: 0; + border-top: Divider.$thickness solid Divider.$color; +} + +.ImageButton__content--ellipsis { + overflow: hidden; + text-overflow: ellipsis; +} + +@mixin content-style($color) { + $luminance: luminance($color); + $text-color: if($luminance > 0.3, rgba(0, 0, 0, 0.9), rgba(255, 255, 255, 1)); + + color: $text-color; + background-color: darken($color, 2.5%); + border-top: base.em(1px) solid (rgba(lighten($color, 33%), 1)); +} + +@each $color-name, $color-value in $bg-map { + .ImageButton__content--color--#{$color-name} { + @include content-style(rgba($color-value, 1)); + } +} + +.ImageButton__content--color--default { + @include content-style(rgba(lighten($color-default, 80%), 1)); +} + +.ImageButton__content--disabled { + background-color: $color-disabled !important; + color: rgba(200, 200, 200, 0.75); + border-top: base.em(1px) solid rgba(lighten($color-disabled, 100%), 0.5); +} + +.ImageButton__content--selected { + background-color: $color-selected !important; + border-top: base.em(1px) solid rgba(lighten($color-selected, 100%), 0.5); +} + +.ImageButton__item { + display: flex; + justify-content: center; + align-items: center; + text-align: center; + width: 100%; + height: 100%; +} + +.ImageButton__item--icon--horizontal { + display: flex; + align-items: center; + + .fa, + .fas, + .far { + margin-left: 0.2em; + margin-right: 0.2em; + } +} + +@mixin item-style($color) { + $luminance: luminance($color); + + transition: + color 100ms, + background-color 100ms; + background-color: rgba($color, 0.4); + border: base.em(1px) solid rgba(lighten($color, 50%), 0.2); + border-left: 0; + + &:focus { + transition: + color 250ms, + background-color 250ms; + } + + &:hover { + background-color: rgba(lighten($color, 25%), 0.5); + } +} + +@each $color-name, $color-value in $bg-map { + .ImageButton__item--color--#{$color-name} { + @include item-style(rgba($color-value, 1)); + } +} + +.ImageButton__item--color--default { + @include item-style(rgba(lighten($color-default, 100%), 1)); +} + +.ImageButton__item--disabled { + background-color: rgba($color-disabled, 0.5) !important; + border: base.em(1px) solid rgba(lighten($color-disabled, 100%), 0.15); + border-left: 0; +} + +.ImageButton__item--selected { + border-left: 0; + @include item-style($color-selected); +} diff --git a/tgui/packages/tgui/styles/main.scss b/tgui/packages/tgui/styles/main.scss index 97f6ed32594c..abe34c69e5d9 100644 --- a/tgui/packages/tgui/styles/main.scss +++ b/tgui/packages/tgui/styles/main.scss @@ -30,6 +30,7 @@ @include meta.load-css('./components/Dropdown.scss'); @include meta.load-css('./components/Flex.scss'); @include meta.load-css('./components/Icon.scss'); +@include meta.load-css('./components/ImageButton.scss'); @include meta.load-css('./components/Input.scss'); @include meta.load-css('./components/Knob.scss'); @include meta.load-css('./components/LabeledList.scss'); diff --git a/tgui/packages/tgui/styles/themes/abductor.scss b/tgui/packages/tgui/styles/themes/abductor.scss index 39dac5773c06..b8e88fcd17d0 100644 --- a/tgui/packages/tgui/styles/themes/abductor.scss +++ b/tgui/packages/tgui/styles/themes/abductor.scss @@ -32,6 +32,14 @@ 'color-danger': #9a9d00 ) ); + @include meta.load-css( + '../components/ImageButton.scss', + $with: ( + 'color-default': darken(colors.$primary, 20%), + 'color-disabled': #363636, + 'color-selected': #465899 + ) + ); @include meta.load-css( '../components/Input.scss', $with: ('border-color': #404b6e) diff --git a/tgui/packages/tgui/styles/themes/cardtable.scss b/tgui/packages/tgui/styles/themes/cardtable.scss index e5047e2e2f0c..5be43a12dc83 100644 --- a/tgui/packages/tgui/styles/themes/cardtable.scss +++ b/tgui/packages/tgui/styles/themes/cardtable.scss @@ -33,6 +33,14 @@ 'color-danger': #9a9d00 ) ); + @include meta.load-css( + '../components/ImageButton.scss', + $with: ( + 'color-default': #117039, + 'color-disabled': #363636, + 'color-selected': #9d0808 + ) + ); @include meta.load-css( '../components/NumberInput.scss', $with: ('border-color': #fff) diff --git a/tgui/packages/tgui/styles/themes/generic-yellow.scss b/tgui/packages/tgui/styles/themes/generic-yellow.scss index a49eaa05e35e..408b08bccb0e 100644 --- a/tgui/packages/tgui/styles/themes/generic-yellow.scss +++ b/tgui/packages/tgui/styles/themes/generic-yellow.scss @@ -36,7 +36,14 @@ $accent-2: #ffbf00; ) ); @include meta.load-css('../components/Section.scss'); - + @include meta.load-css( + '../components/ImageButton.scss', + $with: ( + 'color-default': darken(colors.$primary, 20%), + 'color-disabled': #363636, + 'color-selected': #465899 + ) + ); @include meta.load-css( '../components/Input.scss', $with: ('border-color': #7b86ff) diff --git a/tgui/packages/tgui/styles/themes/hackerman.scss b/tgui/packages/tgui/styles/themes/hackerman.scss index 51befcf1b366..d6d7ba094a54 100644 --- a/tgui/packages/tgui/styles/themes/hackerman.scss +++ b/tgui/packages/tgui/styles/themes/hackerman.scss @@ -37,6 +37,14 @@ 'text-color': #e7e7e7 ) ); + @include meta.load-css( + '../components/ImageButton.scss', + $with: ( + 'color-default': darken(colors.$primary, 25%), + 'color-disabled': #363636, + 'color-selected': lighten(colors.$primary, 25%) + ) + ); @include meta.load-css( '../components/Input.scss', $with: ('border-color': colors.$primary) diff --git a/tgui/packages/tgui/styles/themes/malfunction.scss b/tgui/packages/tgui/styles/themes/malfunction.scss index d32113ba5e66..6b77f5f372fd 100644 --- a/tgui/packages/tgui/styles/themes/malfunction.scss +++ b/tgui/packages/tgui/styles/themes/malfunction.scss @@ -31,6 +31,14 @@ 'color-danger': #9a9d00 ) ); + @include meta.load-css( + '../components/ImageButton.scss', + $with: ( + 'color-default': darken(colors.$primary, 20%), + 'color-disabled': #363636, + 'color-selected': #1e5881 + ) + ); @include meta.load-css( '../components/Input.scss', $with: ('border-color': #910101) diff --git a/tgui/packages/tgui/styles/themes/ntos.scss b/tgui/packages/tgui/styles/themes/ntos.scss index eb885fa51a59..63f496c9ca9f 100644 --- a/tgui/packages/tgui/styles/themes/ntos.scss +++ b/tgui/packages/tgui/styles/themes/ntos.scss @@ -42,4 +42,8 @@ $nanotrasen: #384e68; $with: ('background-color': color.scale($nanotrasen, $lightness: -25%)) ); @include meta.load-css('../layouts/PopupWindow.scss'); + @include meta.load-css( + '../components/ImageButton.scss', + $with: ('color-default': darken($nanotrasen, 15%)) + ); } diff --git a/tgui/packages/tgui/styles/themes/paper.scss b/tgui/packages/tgui/styles/themes/paper.scss index 2f9fa6e16f2b..6725947b90ce 100644 --- a/tgui/packages/tgui/styles/themes/paper.scss +++ b/tgui/packages/tgui/styles/themes/paper.scss @@ -48,6 +48,14 @@ $font-size: 24px; ); // Layouts + @include meta.load-css( + '../components/ImageButton.scss', + $with: ( + 'color-default': darken(#e8e4c9, 40%), + 'color-disabled': #363636, + 'color-selected': #9d0808 + ) + ); @include meta.load-css( '../layouts/Layout.scss', $with: ('scrollbar-color-multiplier': -1) diff --git a/tgui/packages/tgui/styles/themes/retro.scss b/tgui/packages/tgui/styles/themes/retro.scss index 9e08c8b9caef..80f1922ecb80 100644 --- a/tgui/packages/tgui/styles/themes/retro.scss +++ b/tgui/packages/tgui/styles/themes/retro.scss @@ -41,6 +41,14 @@ @include meta.load-css('../components/Section.scss'); // Layouts + @include meta.load-css( + '../components/ImageButton.scss', + $with: ( + 'color-default': darken(#e8e4c9, 40%), + 'color-disabled': #363636, + 'color-selected': #9d0808 + ) + ); @include meta.load-css('../layouts/Layout.scss'); @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( diff --git a/tgui/packages/tgui/styles/themes/syndicate.scss b/tgui/packages/tgui/styles/themes/syndicate.scss index 4a547edef9b6..af6d10a66896 100644 --- a/tgui/packages/tgui/styles/themes/syndicate.scss +++ b/tgui/packages/tgui/styles/themes/syndicate.scss @@ -19,7 +19,14 @@ .theme-syndicate { // Atomic classes @include meta.load-css('../atomic/color.scss'); - + @include meta.load-css( + '../components/ImageButton.scss', + $with: ( + 'color-default': darken(colors.$primary, 20%), + 'color-disabled': #363636, + 'color-selected': #9d0808 + ) + ); // Components @include meta.load-css( '../components/Button.scss', diff --git a/tools/UpdatePaths/75350_book_storage_repath.txt b/tools/UpdatePaths/75350_book_storage_repath.txt new file mode 100644 index 000000000000..2e614084ef18 --- /dev/null +++ b/tools/UpdatePaths/75350_book_storage_repath.txt @@ -0,0 +1 @@ +/obj/item/storage/book/@SUBTYPES : /obj/item/book/@SUBTYPES{@OLD} diff --git a/tools/UpdatePaths/Scripts/75350_book_storage_repath.txt b/tools/UpdatePaths/Scripts/75350_book_storage_repath.txt new file mode 100644 index 000000000000..2e614084ef18 --- /dev/null +++ b/tools/UpdatePaths/Scripts/75350_book_storage_repath.txt @@ -0,0 +1 @@ +/obj/item/storage/book/@SUBTYPES : /obj/item/book/@SUBTYPES{@OLD} diff --git a/tools/trait_validity/check.py b/tools/trait_validity/check.py new file mode 100644 index 000000000000..1758c014b565 --- /dev/null +++ b/tools/trait_validity/check.py @@ -0,0 +1,89 @@ +import os +import re +import sys + +define_regex = re.compile(r"(\s+)?#define\s?([A-Z0-9_]+)\(?(.+)\)?") + +def green(text): + return "\033[32m" + str(text) + "\033[0m" + +def red(text): + return "\033[31m" + str(text) + "\033[0m" + +# simple way to check if we're running on github actions, or on a local machine +on_github = os.getenv("GITHUB_ACTIONS") == "true" + +def get_defines(defines_file: str) -> list[str]: + defines_to_search_for = [] + scannable_lines = [] + with open(defines_file, 'r') as file: + reading = False + + for line in file: + line = line.strip() + + if line == "// BEGIN TRAIT DEFINES": + reading = True + continue + elif line == "// END TRAIT DEFINES": + break + elif not reading: + continue + + scannable_lines.append(line) + for potential_define in scannable_lines: + match = define_regex.match(potential_define) + if not match: + continue + defines_to_search_for.append(match.group(2)) + return defines_to_search_for + +globalvars_file = "code/_globalvars/traits/_traits.dm" + +def post_error(file, name): + if on_github: + print(f"::error file={file},title=Define Sanity::{name} is defined in {file} but not added to {globalvars_file}!") + else: + print(red(f"- Failure: {name} is defined in {file} but not added to {globalvars_file}!")) + +if not os.path.isfile(globalvars_file): + print(red(f"Could not find the globalvars file '{globalvars_file}'!")) + sys.exit(1) + +def run_check_with_file(defines_file: str, min_defines: int = 450): + how_to_fix_message = f"Please ensure that all traits in the {defines_file} file are added in the {globalvars_file} file." + if not os.path.isfile(defines_file): + print(red(f"Could not find the defines file '{defines_file}'!")) + sys.exit(1) + + defines_to_search_for = get_defines(defines_file) + missing_defines = [] + number_of_defines = len(defines_to_search_for) + + if number_of_defines == 0: + print(red("No defines found! This is likely an error.")) + sys.exit(1) + + if number_of_defines <= min_defines: + print(red(f"Only found {number_of_defines} defines! Something has likely gone wrong as the number of global traits should not be this low.")) + sys.exit(1) + + with open(globalvars_file, "r") as file: + globalvars_file_contents = file.read() + for define_name in defines_to_search_for: + searchable_string = "\"" + define_name + "\" = " + define_name + if not re.search(searchable_string, globalvars_file_contents): + missing_defines.append(define_name) + + if len(missing_defines): + for missing_define in missing_defines: + post_error(defines_file, missing_define) + + print(red(how_to_fix_message)) + sys.exit(1) + + else: + print(green(f"All traits were found in both files! (found {number_of_defines} defines)")) + +run_check_with_file("code/__DEFINES/traits/declarations.dm") +run_check_with_file("code/__DEFINES/traits/monkestation/declarations.dm", min_defines=25) diff --git a/tools/trait_validity/unused.ps1 b/tools/trait_validity/unused.ps1 new file mode 100644 index 000000000000..99084b1801d1 --- /dev/null +++ b/tools/trait_validity/unused.ps1 @@ -0,0 +1,31 @@ +# this is a stupid script to try to find traits that are unused in actual code + +# Define the JSON string list +$jsonString = '["TRAIT_KNOCKEDOUT", "TRAIT_IMMOBILIZED", "TRAIT_FLOORED", "TRAIT_FORCED_STANDING", "TRAIT_HANDS_BLOCKED", "TRAIT_UI_BLOCKED", "TRAIT_PULL_BLOCKED", "TRAIT_RESTRAINED", "TRAIT_UNDENSE", "TRAIT_EXPANDED_FOV", "TRAIT_PERFECT_ATTACKER", "TRAIT_GREENTEXT_CURSED", "TRAIT_INCAPACITATED", "TRAIT_CRITICAL_CONDITION", "TRAIT_LITERATE", "TRAIT_ILLITERATE", "TRAIT_MUTE", "TRAIT_SOFTSPOKEN", "TRAIT_CURSED", "TRAIT_EMOTEMUTE", "TRAIT_DEAF", "TRAIT_FAT", "TRAIT_HUSK", "TRAIT_DEFIB_BLACKLISTED", "TRAIT_BADDNA", "TRAIT_CLUMSY", "TRAIT_CAN_HOLD_ITEMS", "TRAIT_FENCE_CLIMBER", "TRAIT_CHUNKYFINGERS", "TRAIT_CHUNKYFINGERS_IGNORE_BATON", "TRAIT_FIST_MINING", "TRAIT_DUMB", "TRAIT_ADVANCEDTOOLUSER", "TRAIT_DISCOORDINATED_TOOL_USER", "TRAIT_PACIFISM", "TRAIT_HIPPOCRATIC_OATH", "TRAIT_IGNORESLOWDOWN", "TRAIT_IGNOREDAMAGESLOWDOWN", "TRAIT_GUN_NATURAL", "TRAIT_DEATHCOMA", "TRAIT_STASIS", "TRAIT_FAKEDEATH", "TRAIT_DISFIGURED", "TRAIT_NO_TRANSFORM", "TRAIT_XENO_HOST", "TRAIT_PARROT_PERCHED", "TRAIT_STUNIMMUNE", "TRAIT_BATON_RESISTANCE", "TRAIT_IWASBATONED", "TRAIT_SLEEPIMMUNE", "TRAIT_PUSHIMMUNE", "TRAIT_NO_SIDE_KICK", "TRAIT_SHOCKIMMUNE", "TRAIT_TESLA_SHOCKIMMUNE", "TRAIT_AIRLOCK_SHOCKIMMUNE", "TRAIT_BEING_SHOCKED", "TRAIT_STABLEHEART", "TRAIT_CORPSELOCKED", "TRAIT_STABLELIVER", "TRAIT_VATGROWN", "TRAIT_RESISTHEAT", "TRAIT_USED_DNA_VAULT", "TRAIT_RESISTHEATHANDS", "TRAIT_RESISTCOLD", "TRAIT_RESISTHIGHPRESSURE", "TRAIT_RESISTLOWPRESSURE", "TRAIT_BOMBIMMUNE", "TRAIT_NUKEIMMUNE", "TRAIT_VIRUSIMMUNE", "TRAIT_UNHUSKABLE", "TRAIT_VIRUS_RESISTANCE", "TRAIT_GENELESS", "TRAIT_PIERCEIMMUNE", "TRAIT_NODISMEMBER", "TRAIT_NOFIRE", "TRAIT_NOFIRE_SPREAD", "TRAIT_NOSELFIGNITION_HEAD_ONLY", "TRAIT_NOGUNS", "TRAIT_TOSS_GUN_HARD", "TRAIT_AGENDER", "TRAIT_BLOOD_CLANS", "TRAIT_USES_SKINTONES", "TRAIT_MUTANT_COLORS", "TRAIT_FIXED_MUTANT_COLORS", "TRAIT_NO_BLOOD_OVERLAY", "TRAIT_NO_UNDERWEAR", "TRAIT_NO_DEBRAIN_OVERLAY", "TRAIT_NO_AUGMENTS", "TRAIT_NOHUNGER", "TRAIT_NOMETABOLISM", "TRAIT_NOBLOOD", "TRAIT_LIVERLESS_METABOLISM", "TRAIT_OVERDOSEIMMUNE", "TRAIT_NO_ZOMBIFY", "TRAIT_NO_DNA_COPY", "TRAIT_NO_DNA_SCRAMBLE", "TRAIT_DRINKS_BLOOD", "TRAIT_NOCLONELOSS", "TRAIT_TOXIMMUNE", "TRAIT_NOBREATH", "TRAIT_DISGUISED", "TRAIT_PLASMA_LOVER_METABOLISM", "TRAIT_EASYDISMEMBER", "TRAIT_LIMBATTACHMENT", "TRAIT_NOLIMBDISABLE", "TRAIT_EASILY_WOUNDED", "TRAIT_HARDLY_WOUNDED", "TRAIT_NEVER_WOUNDED", "TRAIT_EASYBLEED", "TRAIT_TOXINLOVER", "TRAIT_NOCRITOVERLAY", "TRAIT_FASTMED", "TRAIT_HOLY", "TRAIT_ANTIMAGIC", "TRAIT_ANTIMAGIC_NO_SELFBLOCK", "TRAIT_RECENTLY_BLOCKED_MAGIC", "TRAIT_MAGICALLY_GIFTED", "TRAIT_INNATELY_FANTASTICAL_ITEM", "TRAIT_DEPRESSION", "TRAIT_BLOOD_DEFICIENCY", "TRAIT_JOLLY", "TRAIT_NOCRITDAMAGE", "TRAIT_BRAWLING_KNOCKDOWN_BLOCKED", "TRAIT_OFF_BALANCE_TACKLER", "TRAIT_HEAD_INJURY_BLOCKED", "TRAIT_NO_STAGGER", "TRAIT_NO_THROW_HITPUSH", "TRAIT_REVEAL_FISH", "TRAIT_EXAMINE_FISHING_SPOT", "TRAIT_SCARY_FISHERMAN", "TRAIT_FISHING_SPOT", "TRAIT_PROFOUND_FISHER", "TRAIT_EXAMINE_FITNESS", "TRAIT_WOUND_LICKER", "TRAIT_SILICON_EMOTES_ALLOWED", "TRAIT_BORN_MONKEY", "TRAIT_REMOTE_TASTING", "TRAIT_NO_SLIP_WATER", "TRAIT_NO_SLIP_ICE", "TRAIT_NO_SLIP_SLIDE", "TRAIT_NO_SLIP_ALL", "TRAIT_NO_GLIDE", "TRAIT_WOUND_SCANNED", "TRAIT_NODEATH", "TRAIT_NOHARDCRIT", "TRAIT_NOSOFTCRIT", "TRAIT_MINDSHIELD", "TRAIT_UNCONVERTABLE", "TRAIT_DISSECTED", "TRAIT_SURGICALLY_ANALYZED", "TRAIT_SUCCUMB_OVERRIDE", "TRAIT_SIXTHSENSE", "TRAIT_FEARLESS", "TRAIT_HEAR_THROUGH_DARKNESS", "TRAIT_PARALYSIS_L_ARM", "TRAIT_PARALYSIS_R_ARM", "TRAIT_PARALYSIS_L_LEG", "TRAIT_PARALYSIS_R_LEG", "TRAIT_CANNOT_OPEN_PRESENTS", "TRAIT_PRESENT_VISION", "TRAIT_DISK_VERIFIER", "TRAIT_NOMOBSWAP", "TRAIT_ID_APPRAISER", "TRAIT_XRAY_VISION", "TRAIT_THERMAL_VISION", "TRAIT_MESON_VISION", "TRAIT_TRUE_NIGHT_VISION", "TRAIT_NEGATES_GRAVITY", "TRAIT_IGNORING_GRAVITY", "TRAIT_FORCED_GRAVITY", "TRAIT_GOOD_HEARING", "TRAIT_XRAY_HEARING", "TRAIT_BLOCK_SHUTTLE_MOVEMENT", "TRAIT_REAGENT_SCANNER", "TRAIT_RESEARCH_SCANNER", "TRAIT_WEB_WEAVER", "TRAIT_WEB_SURFER", "TRAIT_SPINNING_WEB_TURF", "TRAIT_ABDUCTOR_TRAINING", "TRAIT_ABDUCTOR_SCIENTIST_TRAINING", "TRAIT_SURGEON", "TRAIT_STRONG_GRABBER", "TRAIT_SOOTHED_THROAT", "TRAIT_BOOZE_SLIDER", "TRAIT_QUICK_CARRY", "TRAIT_QUICKER_CARRY", "TRAIT_QUICK_BUILD", "TRAIT_PLANT_SAFE", "TRAIT_NEARSIGHTED_CORRECTED", "TRAIT_UNINTELLIGIBLE_SPEECH", "TRAIT_UNSTABLE", "TRAIT_OIL_FRIED", "TRAIT_MEDICAL_HUD", "TRAIT_SECURITY_HUD", "TRAIT_DIAGNOSTIC_HUD", "TRAIT_BOT_PATH_HUD", "TRAIT_MEDIBOTCOMINGTHROUGH", "TRAIT_PASSTABLE", "TRAIT_PASSWINDOW", "TRAIT_NOFLASH", "TRAIT_XENO_IMMUNE", "TRAIT_NO_JUMPSUIT", "TRAIT_NAIVE", "TRAIT_DETECT_STORM", "TRAIT_PRIMITIVE", "TRAIT_GUNFLIP", "TRAIT_SPECIAL_TRAUMA_BOOST", "TRAIT_SLOW_FLIP", "TRAIT_SPACEWALK", "TRAIT_HYPERSPACED", "TRAIT_FREE_HYPERSPACE_MOVEMENT", "TRAIT_FREE_HYPERSPACE_SOFTCORDON_MOVEMENT", "TRAIT_DEL_ON_SPACE_DUMP", "TRAIT_CLIFF_WALKER", "TRAIT_TACTICALLY_CAMOUFLAGED", "TRAIT_GAMERGOD", "TRAIT_GIANT", "TRAIT_DWARF", "TRAIT_TOO_TALL", "TRAIT_SILENT_FOOTSTEPS", "TRAIT_NICE_SHOT", "TRAIT_TUMOR_SUPPRESSED", "TRAIT_RDS_SUPPRESSED", "TRAIT_NO_EXTINGUISH", "TRAIT_SIGN_LANG", "TRAIT_PAPER_MASTER", "TRAIT_CAN_SIGN_ON_COMMS", "TRAIT_MARTIAL_ARTS_IMMUNE", "TRAIT_TIME_STOP_IMMUNE", "TRAIT_WEAK_SOUL", "TRAIT_NO_SOUL", "TRAIT_CANT_RIDE", "TRAIT_CANNOT_BE_UNBUCKLED", "TRAIT_BLOODY_MESS", "TRAIT_COAGULATING", "TRAIT_ANTICONVULSANT", "TRAIT_STIMULATED", "TRAIT_ANTENNAE", "TRAIT_KISS_OF_DEATH", "TRAIT_SYNDIE_KISS", "TRAIT_GARLIC_BREATH", "TRAIT_HOPELESSLY_ADDICTED", "TRAIT_CULT_HALO", "TRAIT_UNNATURAL_RED_GLOWY_EYES", "TRAIT_BLOODSHOT_EYES", "TRAIT_PRESERVE_UI_WITHOUT_CLIENT", "TRAIT_CAN_USE_FLIGHT_POTION", "TRAIT_BYPASS_MEASURES", "TRAIT_ALLOWED_HONORBOUND_ATTACK", "TRAIT_SPARRING", "TRAIT_ELITE_CHALLENGER", "TRAIT_DONT_WRITE_MEMORY", "TRAIT_SPRAY_PAINTABLE", "TRAIT_AI_BAGATTACK", "TRAIT_INVISIBLE_MAN", "TRAIT_HIDE_EXTERNAL_ORGANS", "TRAIT_FREE_FLOAT_MOVEMENT", "TRAIT_MADNESS_IMMUNE", "TRAIT_SUPERMATTER_SOOTHER", "TRAIT_FOV_APPLIED", "TRAIT_USER_SCOPED", "TRAIT_ANALGESIA", "TRAIT_REVENANT_REVEALED", "TRAIT_REVENANT_INHIBITED", "TRAIT_NOFAT", "TRAIT_ROCK_EATER", "TRAIT_ROCK_METAMORPHIC", "TRAIT_NO_TELEPORT", "TRAIT_SECLUDED_LOCATION", "TRAIT_FUGU_GLANDED", "TRAIT_WAS_RENAMED", "TRAIT_DOUBLE_TAP", "TRAIT_HOT_SPRING_CURSED", "TRAIT_NOT_ENGRAVABLE", "TRAIT_ORBITING_FORBIDDEN", "TRAIT_SPIDER_CONSUMED", "TRAIT_SNEAK", "TRAIT_BLIND_TOOL", "TRAIT_UNKNOWN", "TRAIT_PREVENT_IMPLANT_AUTO_EXPLOSION", "TRAIT_HATED_BY_DOGS", "TRAIT_NOFEAR_HOLDUPS", "TRAIT_ADAMANTINE_EXTRACT_ARMOR", "TRAIT_NO_GUN_AKIMBO", "TRAIT_UNHITTABLE_BY_PROJECTILES", "TRAIT_ALWAYS_HIT_ZONE", "TRAIT_MORBID", "TRAIT_IN_CALL", "TRAIT_ON_ELEVATED_SURFACE", "TRAIT_IGNORE_ELEVATION", "TRAIT_NO_TWOHANDING", "TRAIT_STRENGTH", "TRAIT_STIMMED", "TRAIT_BOXING_READY", "TRAIT_FAST_TYING", "TRAIT_HIGH_VALUE_RANSOM", "TRAIT_FAST_CUFFING", "TRAIT_MAFIAINITIATE", "TRAIT_MIND_READER", "TRAIT_DISPLAY_JOB_IN_BINARY", "TRAIT_STUN_ON_NEXT_SHOVE", "TRAIT_DRUNKEN_BRAWLER", "TRAIT_LAW_ENFORCEMENT_METABOLISM", "TRAIT_CULINARY_METABOLISM", "TRAIT_COMEDY_METABOLISM", "TRAIT_MEDICAL_METABOLISM", "TRAIT_ENGINEER_METABOLISM", "TRAIT_ROYAL_METABOLISM", "TRAIT_PRETENDER_ROYAL_METABOLISM", "TRAIT_BALLMER_SCIENTIST", "TRAIT_MAINTENANCE_METABOLISM", "TRAIT_CORONER_METABOLISM", "TRAIT_HUMAN_AI_METABOLISM", "TRAIT_SPACEBREATHING", "TRAIT_CAN_STRIP", "TRAIT_CAN_USE_NUKE", "TRAIT_ROD_SUPLEX", "TRAIT_MIMING", "TRAIT_MAGICALLY_PHASED", "TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE", "TRAIT_WINE_TASTER", "TRAIT_BONSAI", "TRAIT_LIGHTBULB_REMOVER", "TRAIT_KNOW_ROBO_WIRES", "TRAIT_KNOW_ENGI_WIRES", "TRAIT_ENTRAILS_READER", "TRAIT_SABRAGE_PRO", "TRAIT_BRAINWASHING", "TRAIT_CHEF_KISS", "TRAIT_BALLOON_SUTRA", "TRAIT_DETECTIVES_TASTE", "TRAIT_MOVE_GROUND", "TRAIT_MOVE_FLYING", "TRAIT_MOVE_VENTCRAWLING", "TRAIT_MOVE_FLOATING", "TRAIT_MOVE_PHASING", "TRAIT_NO_FLOATING_ANIM", "TRAIT_NO_PLASMA_TRANSFORM", "TRAIT_LAVA_IMMUNE", "TRAIT_ASHSTORM_IMMUNE", "TRAIT_SNOWSTORM_IMMUNE", "TRAIT_RADSTORM_IMMUNE", "TRAIT_VOIDSTORM_IMMUNE", "TRAIT_WEATHER_IMMUNE", "TRAIT_TENTACLE_IMMUNE", "TRAIT_OVERWATCHED", "TRAIT_OVERWATCH_IMMUNE", "TRAIT_PARALYSIS", "TRAIT_DISABLED_BY_WOUND", "TRAIT_BLOCKING_EXPLOSIVES", "TRAIT_CONTAINS_SPLITVIS", "TRAIT_LAVA_STOPPED", "TRAIT_CHASM_STOPPED", "TRAIT_CHASM_STOPPER", "TRAIT_IMMERSE_STOPPED", "TRAIT_HYPERSPACE_STOPPED", "TRAIT_TURF_IGNORE_SLOWDOWN", "TRAIT_TURF_IGNORE_SLIPPERY", "TRAIT_FORBID_MINING_SHUTTLE_CONSOLE_OUTSIDE_STATION", "TRAIT_AREA_SENSITIVE", "TRAIT_HEARING_SENSITIVE", "TRAIT_ACTIVE_STORAGE", "TRAIT_CLIMBABLE", "TRAIT_HONKSPAMMING", "TRAIT_WADDLING", "TRAIT_ON_HIT_EFFECT", "TRAIT_KEEP_TOGETHER", "TRAIT_MAT_TRANSMUTED", "TRAIT_BANNED_FROM_CARGO_SHUTTLE", "TRAIT_NO_MISSING_ITEM_ERROR", "TRAIT_NO_MANIFEST_CONTENTS_ERROR", "TRAIT_MARKET_CRASHING", "TRAIT_NODROP", "TRAIT_NO_STORAGE_INSERT", "TRAIT_T_RAY_VISIBLE", "TRAIT_FOOD_GRILLED", "TRAIT_FOOD_FRIED", "TRAIT_FOOD_SILVER", "TRAIT_FOOD_CHEF_MADE", "TRAIT_NEEDS_TWO_HANDS", "TRAIT_UNCATCHABLE", "TRAIT_FISH_SAFE_STORAGE", "TRAIT_FISH_CASE_COMPATIBILE", "TRAIT_FISHING_BAIT", "TRAIT_BASIC_QUALITY_BAIT", "TRAIT_GOOD_QUALITY_BAIT", "TRAIT_GREAT_QUALITY_BAIT", "TRAIT_OMNI_BAIT", "TRAIT_BAIT_UNCONSUMABLE", "TRAIT_PLANT_WILDMUTATE", "TRAIT_APC_SHOCKING", "TRAIT_WIELDED", "TRAIT_TRANSFORM_ACTIVE", "TRAIT_NO_IMMOBILIZE", "TRAIT_NO_STRIP", "TRAIT_NO_BARCODES", "TRAIT_ALLOW_HERETIC_CASTING", "TRAIT_LIVING_HEART", "TRAIT_HAS_BEEN_KIDNAPPED", "TRAIT_CUSTOM_TAP_SOUND", "TRAIT_DANGEROUS_OBJECT", "TRAIT_HAUNTED", "TRAIT_CONTRABAND_BLOCKER", "TRAIT_ALCOHOL_TOLERANCE", "TRAIT_ANOSMIA", "TRAIT_HEAVY_DRINKER", "TRAIT_AGEUSIA", "TRAIT_HEAVY_SLEEPER", "TRAIT_NIGHT_VISION", "TRAIT_LIGHT_STEP", "TRAIT_SPIRITUAL", "TRAIT_CLOWN_ENJOYER", "TRAIT_MIME_FAN", "TRAIT_VORACIOUS", "TRAIT_SELF_AWARE", "TRAIT_FREERUNNING", "TRAIT_SKITTISH", "TRAIT_POOR_AIM", "TRAIT_PROSOPAGNOSIA", "TRAIT_TAGGER", "TRAIT_PHOTOGRAPHER", "TRAIT_MUSICIAN", "TRAIT_LIGHT_DRINKER", "TRAIT_EMPATH", "TRAIT_FRIENDLY", "TRAIT_GRABWEAKNESS", "TRAIT_SNOB", "TRAIT_BALD", "TRAIT_SHAVED", "TRAIT_BADTOUCH", "TRAIT_EXTROVERT", "TRAIT_INTROVERT", "TRAIT_ANXIOUS", "TRAIT_SMOKER", "TRAIT_POSTERBOY", "TRAIT_THROWINGARM", "TRAIT_SETTLER", "TRAIT_STRONG_STOMACH", "TRAIT_CATLIKE_GRACE", "TRAIT_STICKERED", "TRAIT_LIGHTING_DEBUGGED", "TRAIT_SHIFTY_EYES", "TRAIT_GAMER", "TRAIT_DRYABLE", "TRAIT_DRIED", "TRAIT_CUSTOMIZABLE_REAGENT_HOLDER", "TRAIT_ODD_CUSTOMIZABLE_FOOD_INGREDIENT", "TRAIT_BEING_BLADE_SHIELDED", "TRAIT_UNOBSERVANT", "TRAIT_VENTCRAWLER_ALWAYS", "TRAIT_VENTCRAWLER_NUDE", "TRAIT_MAY_CONTAIN_BLENDED_DUST", "TRAIT_CANNOT_CRYSTALIZE", "TRAIT_FIREDOOR_STOP", "TRAIT_CONTAINMENT_FIELD", "TRAIT_COMPONENT_MMI", "TRAIT_INNER_DARKNESS", "TRAIT_CIRCUIT_UNDUPABLE", "TRAIT_CIRCUIT_UI_OPEN", "TRAIT_PDA_MESSAGE_MENU_RIGGED", "TRAIT_PDA_CAN_EXPLODE", "TRAIT_MODPC_HALVED_DOWNLOAD_SPEED", "TRAIT_MODPC_INTERACTING_WITH_FRAME", "TRAIT_DISEASELIKE_SEVERITY_MEDIUM", "TRAIT_TENACIOUS", "TRAIT_UNBREAKABLE", "TRAIT_AI_PAUSED", "TRAIT_TOWER_OF_BABEL", "TRAIT_RECENTLY_COINED", "TRAIT_ECHOLOCATION_RECEIVER", "TRAIT_ECHOLOCATION_EXTRA_RANGE", "TRAIT_SUICIDED", "TRAIT_PERMANENTLY_MORTAL", "TRAIT_MIND_TEMPORARILY_GONE", "TRAIT_TEMPORARY_BODY", "TRAIT_WALLMOUNTED", "TRAIT_OREBOX_FUNCTIONAL", "TRAIT_MECHA_CREATED_NORMALLY", "TRAIT_RESIST_EMULSIFY", "TRAIT_FISH_SELF_REPRODUCE", "TRAIT_FISH_NO_MATING", "TRAIT_YUCKY_FISH", "TRAIT_FISH_TOXIN_IMMUNE", "TRAIT_FISH_CROSSBREEDER", "TRAIT_FISH_AMPHIBIOUS", "TRAIT_FISH_FED_LUBE", "TRAIT_FISH_NO_HUNGER", "TRAIT_FISH_FROM_CASE", "TRAIT_FISH_ELECTROGENESIS", "TRAIT_ANGELIC", "TRAIT_DREAMING", "TRAIT_COMMISSIONED", "TRAIT_RUSTY", "TRAIT_DO_NOT_SPLASH", "TRAIT_CURRENTLY_CLEANING", "TRAIT_CHASM_DESTROYED", "TRAIT_UNDERFLOOR", "TRAIT_NO_MIRROR_REFLECTION", "TRAIT_IMMERSED", "TRAIT_ELEVATED_TURF", "TRAIT_UNIQUE_IMMERSE", "TRAIT_SHADOWLESS", "TRAIT_TELEKINESIS_CONTROLLED", "TRAIT_CHANGELING_HIVEMIND_MUTE", "TRAIT_HULK", "TRAIT_BLOB_ALLY", "TRAIT_CHUUNIBYOU", "TRAIT_SPLATTERCASTER", "STATION_TRAIT_ASSISTANT_GIMMICKS", "STATION_TRAIT_BANANIUM_SHIPMENTS", "STATION_TRAIT_BIGGER_PODS", "STATION_TRAIT_BIRTHDAY", "STATION_TRAIT_BOTS_GLITCHED", "STATION_TRAIT_MACHINES_GLITCHED", "STATION_TRAIT_BRIGHT_DAY", "STATION_TRAIT_CARP_INFESTATION", "STATION_TRAIT_CYBERNETIC_REVOLUTION", "STATION_TRAIT_EMPTY_MAINT", "STATION_TRAIT_FILLED_MAINT", "STATION_TRAIT_FORESTED", "STATION_TRAIT_HANGOVER", "STATION_TRAIT_HUMAN_AI", "STATION_TRAIT_LATE_ARRIVALS", "STATION_TRAIT_LOANER_SHUTTLE", "STATION_TRAIT_MEDBOT_MANIA", "STATION_TRAIT_PDA_GLITCHED", "STATION_TRAIT_PREMIUM_INTERNALS", "STATION_TRAIT_RADIOACTIVE_NEBULA", "STATION_TRAIT_RANDOM_ARRIVALS", "STATION_TRAIT_REVOLUTIONARY_TRASHING", "STATION_TRAIT_SHUTTLE_SALE", "STATION_TRAIT_SMALLER_PODS", "STATION_TRAIT_SPIDER_INFESTATION", "STATION_TRAIT_UNIQUE_AI", "STATION_TRAIT_UNNATURAL_ATMOSPHERE", "STATION_TRAIT_VENDING_SHORTAGE", "TRAIT_DEATHMATCH_EXPLOSIVE_IMPLANTS", "TRAIT_SPINNING", "TRAIT_IMMUNE_TO_CRANIAL_FISSURE", "TRAIT_HAS_CRANIAL_FISSURE", "TRAIT_JOB_FIRST_ID_CARD", "TRAIT_MAGNETIC_ID_CARD", "TRAIT_TASTEFULLY_THICK_ID_CARD", "TRAIT_ALWAYS_NO_ACCESS", "TRAIT_SEE_GLASS_COLORS", "TRAIT_SEE_WORN_COLOURS", "TRAIT_IRRADIATED", "TRAIT_RADIMMUNE", "TRAIT_HALT_RADIATION_EFFECTS", "TRAIT_RADIATION_PROTECTED_CLOTHING", "TRAIT_BYPASS_EARLY_IRRADIATED_CHECK", "TRAIT_WAS_EVOLVED", "TRAIT_HEALS_FROM_CARP_RIFTS", "TRAIT_HEALS_FROM_CULT_PYLONS", "TRAIT_MULTIZ_SUIT_SENSORS", "TRAIT_FINGERPRINT_PASSTHROUGH", "TRAIT_FROZEN", "TRAIT_GONE_FISHING", "TRAIT_TACKLING_WINGED_ATTACKER", "TRAIT_TACKLING_FRAIL_ATTACKER", "TRAIT_TACKLING_TAILED_DEFENDER", "TRAIT_RUNECHAT_HIDDEN", "TRAIT_HAS_LABEL", "TRAIT_THINKING_IN_CHARACTER", "TRAIT_SPEAKS_CLEARLY", "TRAIT_GERM_SENSITIVE", "TRAIT_CASTABLE_LOC", "TRAIT_SPELLS_TRANSFER_TO_LOC", "TRAIT_RELAYING_ATTACKER", "TRAIT_IGNORED_BY_LIVING_FLESH", "TRAIT_USED_ORGAN", "TRAIT_WING_BUFFET", "TRAIT_WING_BUFFET_TIRED", "TRAIT_RIFT_FAILURE", "TRAIT_MOB_HIDE_HAPPINESS", "TRAIT_MOB_BREEDER", "TRAIT_MOB_HATCHED", "TRAIT_NO_MINDSWAP", "TRAIT_BAKEABLE", "TRAIT_DART_HAS_INSERT", "TRAIT_ELDRITCH_PAINTING_EXAMINE", "TRAIT_FLESH_DESIRE", "TRAIT_CLEANBOT_WHISPERER", "TRAIT_ROCK_STONER", "TRAIT_REGEN_SHIELD", "TRAIT_INVISIMIN", "TRAIT_MOB_TIPPED", "TRAIT_ALWAYS_WANTED", "TRAIT_MOB_EATER", "TRAIT_DISCO_DANCER", "TRAIT_INSTANTLY_PROCESSES_BOULDERS", "TRAIT_BOULDER_BREAKER", "TRAIT_MANSUS_TOUCHED", "TRAIT_SPELLS_LOTTERY", "TRAIT_PERCEIVED_AS_CLOWN", "TRAIT_BYPASS_RANGED_ARMOR", "TRAIT_CONTRABAND", "TRAIT_EXPERT_FISHER", "TRAIT_ROUGHRIDER", "TRAIT_STUBBY_BODY", "TRAIT_BEAST_EMPATHY", "TRAIT_STURDY_FRAME", "TRAIT_ITEM_OBJECTIVE_BLOCKED", "TRAIT_EASY_ATTACH", "TRAIT_ON_CLIMBABLE", "TRAIT_BIRTHDAY_BOY", "TRAIT_NO_TERRAFORM", "TRAIT_SPEECH_BOOSTER", "TRAIT_NO_THROWING", "TRAIT_MINING_PARRYING"]' +$traits = $jsonString | ConvertFrom-Json + + +# Initialize an array to hold unused traits +$unusedTraits = @() + +foreach ($trait in $traits) { + # Construct the ripgrep command + + $rgCommand = "rg --fixed-strings --quiet -g '*.dm' -g '!_traits.dm' -g '!declarations.dm' $trait code monkestation/code" + + # Run the ripgrep command + Invoke-Expression $rgCommand + + # Check the exit code to determine if the trait was found + if ($LASTEXITCODE -ne 0) { + $unusedTraits += $trait + } +} + +# Print out the unused traits +if ($unusedTraits.Count -eq 0) { + Write-Output "All traits are in use." +} else { + Write-Output "The following traits are not in use:" + $unusedTraits | ForEach-Object { Write-Output $_ } +}